mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Merge last PGO-green changeset of mozilla-inbound to mozilla-central
This commit is contained in:
commit
7880fbd256
@ -61,7 +61,6 @@ XPIDLSRCS = \
|
||||
nsIAccessibleDocument.idl \
|
||||
nsIAccessibleProvider.idl \
|
||||
nsIAccessibleSelectable.idl \
|
||||
nsIAccessNode.idl \
|
||||
nsIAccessibleCursorable.idl \
|
||||
nsIAccessibleEvent.idl \
|
||||
nsIAccessibleEditableText.idl \
|
||||
|
@ -117,7 +117,7 @@ cpp_quote("//")
|
||||
cpp_quote("//")
|
||||
cpp_quote("// get_localInterface(/* [out] */ void **localInterface);")
|
||||
cpp_quote("// ---------------------------------------------------------------------------------------------------=")
|
||||
cpp_quote("// Only available in Gecko's process - casts to an XPCOM nsIAccessNode interface pointer")
|
||||
cpp_quote("// Only available in Gecko's process - casts to an XPCOM nsAccessNode object pointer")
|
||||
cpp_quote("//")
|
||||
cpp_quote("//")
|
||||
cpp_quote("// get_language(/* [out] */ BSTR *htmlText);")
|
||||
|
@ -1,126 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2003
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Original Author: Aaron Leventhal (aaronl@netscape.com)
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsISupports.idl"
|
||||
|
||||
interface nsIDOMNode;
|
||||
interface nsIAccessibleDocument;
|
||||
interface nsIDOMCSSPrimitiveValue;
|
||||
|
||||
/**
|
||||
* An interface used by in-process accessibility clients
|
||||
* to get style, window, markup and other information about
|
||||
* a DOM node. When accessibility is active in Gecko,
|
||||
* every DOM node can have one nsIAccessNode for each
|
||||
* pres shell the DOM node is rendered in.
|
||||
* The nsIAccessNode implementations are instantiated lazily.
|
||||
* The nsIAccessNode tree for a given dom window
|
||||
* has a one to one relationship to the DOM tree.
|
||||
* If the DOM node for this access node is "accessible",
|
||||
* then a QueryInterface to nsIAccessible will succeed.
|
||||
*/
|
||||
[scriptable, uuid(08bb2c50-1b30-11e1-bddb-0800200c9a66)]
|
||||
interface nsIAccessNode : nsISupports
|
||||
{
|
||||
/**
|
||||
* The DOM node this nsIAccessNode is associated with.
|
||||
*/
|
||||
readonly attribute nsIDOMNode DOMNode;
|
||||
|
||||
/**
|
||||
* The document accessible that this access node resides in.
|
||||
*/
|
||||
readonly attribute nsIAccessibleDocument document;
|
||||
|
||||
/**
|
||||
* The root document accessible that this access node resides in.
|
||||
*/
|
||||
readonly attribute nsIAccessibleDocument rootDocument;
|
||||
|
||||
/**
|
||||
* The innerHTML for the DOM node
|
||||
* This is a text string of all the markup inside the DOM
|
||||
* node, not including the start and end tag for the node.
|
||||
*/
|
||||
readonly attribute DOMString innerHTML;
|
||||
|
||||
/**
|
||||
* Makes an object visible on screen.
|
||||
*
|
||||
* @param scrollType - defines where the object should be placed on
|
||||
* the screen (see nsIAccessibleScrollType for
|
||||
* available constants).
|
||||
*/
|
||||
void scrollTo(in unsigned long aScrollType);
|
||||
|
||||
/**
|
||||
* Moves the top left of an object to a specified location.
|
||||
*
|
||||
* @param coordinateType - specifies whether the coordinates are relative to
|
||||
* the screen or the parent object (for available
|
||||
* constants refer to nsIAccessibleCoordinateType)
|
||||
* @param aX - defines the x coordinate
|
||||
* @param aY - defines the y coordinate
|
||||
*/
|
||||
void scrollToPoint(in unsigned long aCoordinateType, in long aX, in long aY);
|
||||
|
||||
/**
|
||||
* Retrieve the computed style value for this DOM node, if it is a DOM element.
|
||||
* Note: the meanings of width, height and other size measurements depend
|
||||
* on the version of CSS being used. Therefore, for bounds information,
|
||||
* it is better to use nsIAccessible::accGetBounds.
|
||||
* @param pseudoElt The pseudo element to retrieve style for, or NULL
|
||||
* for general computed style information for this node.
|
||||
* @param propertyName Retrieve the computed style value for this property name,
|
||||
* for example "border-bottom".
|
||||
*/
|
||||
DOMString getComputedStyleValue(in DOMString pseudoElt, in DOMString propertyName);
|
||||
|
||||
/**
|
||||
* The method is similar to getComputedStyleValue() excepting that this one
|
||||
* returns nsIDOMCSSPrimitiveValue.
|
||||
*/
|
||||
nsIDOMCSSPrimitiveValue getComputedStyleCSSValue(in DOMString pseudoElt,
|
||||
in DOMString propertyName);
|
||||
|
||||
/**
|
||||
* The language for the current DOM node, e.g. en, de, etc.
|
||||
*/
|
||||
readonly attribute DOMString language;
|
||||
};
|
||||
|
@ -43,7 +43,10 @@
|
||||
#include "nsIArray.idl"
|
||||
|
||||
interface nsIPersistentProperties;
|
||||
interface nsIDOMCSSPrimitiveValue;
|
||||
interface nsIDOMDOMStringList;
|
||||
interface nsIDOMNode;
|
||||
interface nsIAccessibleDocument;
|
||||
interface nsIAccessibleRelation;
|
||||
|
||||
/**
|
||||
@ -100,6 +103,53 @@ interface nsIAccessible : nsISupports
|
||||
*/
|
||||
readonly attribute long indexInParent;
|
||||
|
||||
/**
|
||||
* The innerHTML for the HTML element associated with this accessible if applicable.
|
||||
* This is a text string of all the markup inside the DOM
|
||||
* node, not including the start and end tag for the node.
|
||||
*/
|
||||
readonly attribute DOMString innerHTML;
|
||||
|
||||
/**
|
||||
* Retrieve the computed style value for this DOM node, if it is a DOM element.
|
||||
* Note: the meanings of width, height and other size measurements depend
|
||||
* on the version of CSS being used. Therefore, for bounds information,
|
||||
* it is better to use nsIAccessible::accGetBounds.
|
||||
*
|
||||
* @param pseudoElt [in] The pseudo element to retrieve style for, or NULL
|
||||
* for general computed style information for this node.
|
||||
* @param propertyName [in] Retrieve the computed style value for this property name,
|
||||
* for example "border-bottom".
|
||||
*/
|
||||
DOMString getComputedStyleValue(in DOMString pseudoElt, in DOMString propertyName);
|
||||
|
||||
/**
|
||||
* The method is similar to getComputedStyleValue() excepting that this one
|
||||
* returns nsIDOMCSSPrimitiveValue.
|
||||
*/
|
||||
nsIDOMCSSPrimitiveValue getComputedStyleCSSValue(in DOMString pseudoElt,
|
||||
in DOMString propertyName);
|
||||
|
||||
/**
|
||||
* The DOM node this nsIAccessible is associated with.
|
||||
*/
|
||||
readonly attribute nsIDOMNode DOMNode;
|
||||
|
||||
/**
|
||||
* The document accessible that this access node resides in.
|
||||
*/
|
||||
readonly attribute nsIAccessibleDocument document;
|
||||
|
||||
/**
|
||||
* The root document accessible that this access node resides in.
|
||||
*/
|
||||
readonly attribute nsIAccessibleDocument rootDocument;
|
||||
|
||||
/**
|
||||
* The language for the current DOM node, e.g. en, de, etc.
|
||||
*/
|
||||
readonly attribute DOMString language;
|
||||
|
||||
/**
|
||||
* Accessible name -- the main text equivalent for this node. The name is
|
||||
* specified by ARIA or by native markup. Example of ARIA markup is
|
||||
@ -285,6 +335,26 @@ interface nsIAccessible : nsISupports
|
||||
*/
|
||||
void doAction(in PRUint8 index);
|
||||
|
||||
/**
|
||||
* Makes an object visible on screen.
|
||||
*
|
||||
* @param scrollType - defines where the object should be placed on
|
||||
* the screen (see nsIAccessibleScrollType for
|
||||
* available constants).
|
||||
*/
|
||||
void scrollTo(in unsigned long aScrollType);
|
||||
|
||||
/**
|
||||
* Moves the top left of an object to a specified location.
|
||||
*
|
||||
* @param coordinateType [in] - specifies whether the coordinates are relative to
|
||||
* the screen or the parent object (for available
|
||||
* constants refer to nsIAccessibleCoordinateType)
|
||||
* @param x [in] - defines the x coordinate
|
||||
* @param y [in] - defines the y coordinate
|
||||
*/
|
||||
void scrollToPoint(in unsigned long coordinateType, in long x, in long y);
|
||||
|
||||
/**
|
||||
* Get a pointer to accessibility interface for this node, which is specific
|
||||
* to the OS/accessibility toolkit we're running on.
|
||||
|
@ -39,7 +39,6 @@
|
||||
#include "nsISupports.idl"
|
||||
|
||||
interface nsIAccessible;
|
||||
interface nsIAccessNode;
|
||||
interface nsIDOMDocument;
|
||||
interface nsIDOMNode;
|
||||
interface nsIDOMWindow;
|
||||
@ -50,10 +49,9 @@ interface nsIDOMWindow;
|
||||
* When accessibility is turned on in Gecko,
|
||||
* there is an nsIAccessibleDocument for each document
|
||||
* whether it is XUL, HTML or whatever.
|
||||
* You can QueryInterface to nsIAccessibleDocument from
|
||||
* the nsIAccessible or nsIAccessNode for the root node
|
||||
* of a document. You can also get one from
|
||||
* nsIAccessNode::GetAccessibleDocument() or
|
||||
* You can QueryInterface to nsIAccessibleDocument from the nsIAccessible for
|
||||
* the root node of a document. You can also get one from
|
||||
* nsIAccessible::GetAccessibleDocument() or
|
||||
* nsIAccessibleEvent::GetAccessibleDocument()
|
||||
*/
|
||||
[scriptable, uuid(451242bd-8a0c-4198-ae88-c053609a4e5d)]
|
||||
|
@ -43,15 +43,12 @@ interface nsIAccessible;
|
||||
interface nsIWeakReference;
|
||||
interface nsIPresShell;
|
||||
interface nsIDOMWindow;
|
||||
interface nsIAccessNode;
|
||||
interface nsIDOMDOMStringList;
|
||||
interface nsIAccessiblePivot;
|
||||
|
||||
/**
|
||||
* An interface for in-process accessibility clients
|
||||
* wishing to get an nsIAccessible or nsIAccessNode for
|
||||
* a given DOM node.
|
||||
* More documentation at:
|
||||
* An interface for in-process accessibility clients wishing to get an
|
||||
* nsIAccessible for a given DOM node. More documentation at:
|
||||
* http://www.mozilla.org/projects/ui/accessibility
|
||||
*/
|
||||
[scriptable, uuid(310ce77d-c92b-4761-82e8-77e1a728e8d4)]
|
||||
|
@ -79,7 +79,7 @@ getDocumentLocaleCB(AtkDocument *aDocument)
|
||||
return nsnull;
|
||||
|
||||
nsAutoString locale;
|
||||
accWrap->GetLanguage(locale);
|
||||
accWrap->Language(locale);
|
||||
return locale.IsEmpty() ? nsnull : nsAccessibleWrap::ReturnString(locale);
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,6 @@
|
||||
#define nsAccUtils_h_
|
||||
|
||||
#include "nsIAccessible.h"
|
||||
#include "nsIAccessNode.h"
|
||||
#include "nsIAccessibleRole.h"
|
||||
#include "nsIAccessibleText.h"
|
||||
#include "nsIAccessibleTable.h"
|
||||
|
@ -36,37 +36,27 @@
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsDocAccessible.h"
|
||||
#include "nsAccessNode.h"
|
||||
|
||||
#include "nsIAccessible.h"
|
||||
|
||||
#include "nsAccCache.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "nsCoreUtils.h"
|
||||
|
||||
#include "nsHashtable.h"
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "nsApplicationAccessibleWrap.h"
|
||||
#include "nsCoreUtils.h"
|
||||
#include "nsRootAccessible.h"
|
||||
|
||||
#include "nsIDocShell.h"
|
||||
#include "nsIDocShellTreeItem.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIDOMCSSPrimitiveValue.h"
|
||||
#include "nsIDOMDocument.h"
|
||||
#include "nsIDOMElement.h"
|
||||
#include "nsIDOMHTMLElement.h"
|
||||
#include "nsIDOMWindow.h"
|
||||
#include "nsPIDOMWindow.h"
|
||||
#include "nsIInterfaceRequestorUtils.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsIPrefService.h"
|
||||
#include "nsIInterfaceRequestorUtils.h"
|
||||
#include "nsIObserverService.h"
|
||||
#include "nsIPrefBranch.h"
|
||||
#include "nsPresContext.h"
|
||||
#include "nsIPrefService.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIStringBundle.h"
|
||||
#include "nsRootAccessible.h"
|
||||
#include "nsFocusManager.h"
|
||||
#include "nsIObserverService.h"
|
||||
#include "nsPresContext.h"
|
||||
#include "mozilla/Services.h"
|
||||
|
||||
/* For documentation of the accessibility architecture,
|
||||
@ -89,9 +79,7 @@ nsApplicationAccessible *nsAccessNode::gApplicationAccessible = nsnull;
|
||||
NS_IMPL_CYCLE_COLLECTION_1(nsAccessNode, mContent)
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsAccessNode)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIAccessNode)
|
||||
NS_INTERFACE_MAP_ENTRY(nsAccessNode)
|
||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIAccessNode)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsAccessNode)
|
||||
@ -287,126 +275,28 @@ nsAccessNode::IsPrimaryForNode() const
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// nsIAccessNode
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessNode::GetDOMNode(nsIDOMNode **aDOMNode)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aDOMNode);
|
||||
*aDOMNode = nsnull;
|
||||
|
||||
nsINode *node = GetNode();
|
||||
if (node)
|
||||
CallQueryInterface(node, aDOMNode);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessNode::GetDocument(nsIAccessibleDocument **aDocument)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aDocument);
|
||||
|
||||
NS_IF_ADDREF(*aDocument = GetDocAccessible());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessNode::GetRootDocument(nsIAccessibleDocument **aRootDocument)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aRootDocument);
|
||||
|
||||
nsRootAccessible* rootDocument = RootAccessible();
|
||||
NS_IF_ADDREF(*aRootDocument = rootDocument);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessNode::GetInnerHTML(nsAString& aInnerHTML)
|
||||
{
|
||||
aInnerHTML.Truncate();
|
||||
|
||||
nsCOMPtr<nsIDOMHTMLElement> htmlElement = do_QueryInterface(mContent);
|
||||
NS_ENSURE_TRUE(htmlElement, NS_ERROR_NULL_POINTER);
|
||||
|
||||
return htmlElement->GetInnerHTML(aInnerHTML);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
void
|
||||
nsAccessNode::ScrollTo(PRUint32 aScrollType)
|
||||
{
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
return;
|
||||
|
||||
nsCOMPtr<nsIPresShell> shell(GetPresShell());
|
||||
NS_ENSURE_TRUE(shell, NS_ERROR_FAILURE);
|
||||
if (!shell)
|
||||
return;
|
||||
|
||||
nsIFrame *frame = GetFrame();
|
||||
NS_ENSURE_TRUE(frame, NS_ERROR_FAILURE);
|
||||
if (!frame)
|
||||
return;
|
||||
|
||||
nsCOMPtr<nsIContent> content = frame->GetContent();
|
||||
NS_ENSURE_TRUE(content, NS_ERROR_FAILURE);
|
||||
nsIContent* content = frame->GetContent();
|
||||
if (!content)
|
||||
return;
|
||||
|
||||
PRInt16 vPercent, hPercent;
|
||||
nsCoreUtils::ConvertScrollTypeToPercents(aScrollType, &vPercent, &hPercent);
|
||||
return shell->ScrollContentIntoView(content, vPercent, hPercent,
|
||||
nsIPresShell::SCROLL_OVERFLOW_HIDDEN);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessNode::ScrollToPoint(PRUint32 aCoordinateType, PRInt32 aX, PRInt32 aY)
|
||||
{
|
||||
nsIFrame *frame = GetFrame();
|
||||
if (!frame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsIntPoint coords;
|
||||
nsresult rv = nsAccUtils::ConvertToScreenCoords(aX, aY, aCoordinateType,
|
||||
this, &coords);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsIFrame *parentFrame = frame;
|
||||
while ((parentFrame = parentFrame->GetParent()))
|
||||
nsCoreUtils::ScrollFrameToPoint(parentFrame, frame, coords);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessNode::GetComputedStyleValue(const nsAString& aPseudoElt,
|
||||
const nsAString& aPropertyName,
|
||||
nsAString& aValue)
|
||||
{
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIDOMCSSStyleDeclaration> styleDecl =
|
||||
nsCoreUtils::GetComputedStyleDeclaration(aPseudoElt, mContent);
|
||||
NS_ENSURE_TRUE(styleDecl, NS_ERROR_FAILURE);
|
||||
|
||||
return styleDecl->GetPropertyValue(aPropertyName, aValue);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessNode::GetComputedStyleCSSValue(const nsAString& aPseudoElt,
|
||||
const nsAString& aPropertyName,
|
||||
nsIDOMCSSPrimitiveValue **aCSSValue)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aCSSValue);
|
||||
*aCSSValue = nsnull;
|
||||
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIDOMCSSStyleDeclaration> styleDecl =
|
||||
nsCoreUtils::GetComputedStyleDeclaration(aPseudoElt, mContent);
|
||||
NS_ENSURE_STATE(styleDecl);
|
||||
|
||||
nsCOMPtr<nsIDOMCSSValue> cssValue;
|
||||
styleDecl->GetPropertyCSSValue(aPropertyName, getter_AddRefs(cssValue));
|
||||
NS_ENSURE_TRUE(cssValue, NS_ERROR_FAILURE);
|
||||
|
||||
return CallQueryInterface(cssValue, aCSSValue);
|
||||
shell->ScrollContentIntoView(content, vPercent, hPercent,
|
||||
nsIPresShell::SCROLL_OVERFLOW_HIDDEN);
|
||||
}
|
||||
|
||||
// nsAccessNode public
|
||||
@ -443,20 +333,18 @@ nsAccessNode::GetCurrentFocus()
|
||||
return focusedNode;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessNode::GetLanguage(nsAString& aLanguage)
|
||||
void
|
||||
nsAccessNode::Language(nsAString& aLanguage)
|
||||
{
|
||||
aLanguage.Truncate();
|
||||
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
return;
|
||||
|
||||
nsCoreUtils::GetLanguageFor(mContent, nsnull, aLanguage);
|
||||
|
||||
if (aLanguage.IsEmpty()) { // Nothing found, so use document's language
|
||||
mContent->OwnerDoc()->GetHeaderData(nsGkAtoms::headerContentLanguage,
|
||||
aLanguage);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,6 @@
|
||||
#ifndef _nsAccessNode_H_
|
||||
#define _nsAccessNode_H_
|
||||
|
||||
#include "nsIAccessNode.h"
|
||||
#include "nsIAccessibleTypes.h"
|
||||
|
||||
#include "a11yGeneric.h"
|
||||
@ -68,15 +67,7 @@ class nsIDocShellTreeItem;
|
||||
#define ACCESSIBLE_BUNDLE_URL "chrome://global-platform/locale/accessible.properties"
|
||||
#define PLATFORM_KEYS_BUNDLE_URL "chrome://global-platform/locale/platformKeys.properties"
|
||||
|
||||
#define NS_ACCESSNODE_IMPL_CID \
|
||||
{ /* 2b07e3d7-00b3-4379-aa0b-ea22e2c8ffda */ \
|
||||
0x2b07e3d7, \
|
||||
0x00b3, \
|
||||
0x4379, \
|
||||
{ 0xaa, 0x0b, 0xea, 0x22, 0xe2, 0xc8, 0xff, 0xda } \
|
||||
}
|
||||
|
||||
class nsAccessNode: public nsIAccessNode
|
||||
class nsAccessNode: public nsISupports
|
||||
{
|
||||
public:
|
||||
|
||||
@ -84,10 +75,7 @@ public:
|
||||
virtual ~nsAccessNode();
|
||||
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsAccessNode, nsIAccessNode)
|
||||
|
||||
NS_DECL_NSIACCESSNODE
|
||||
NS_DECLARE_STATIC_IID_ACCESSOR(NS_ACCESSNODE_IMPL_CID)
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS(nsAccessNode)
|
||||
|
||||
static void InitXPAccessibility();
|
||||
static void ShutdownXPAccessibility();
|
||||
@ -134,18 +122,6 @@ public:
|
||||
* Return frame for the given access node object.
|
||||
*/
|
||||
virtual nsIFrame* GetFrame() const;
|
||||
|
||||
/**
|
||||
* Return DOM node associated with this accessible.
|
||||
*/
|
||||
already_AddRefed<nsIDOMNode> GetDOMNode() const
|
||||
{
|
||||
nsIDOMNode *DOMNode = nsnull;
|
||||
if (GetNode())
|
||||
CallQueryInterface(GetNode(), &DOMNode);
|
||||
return DOMNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return DOM node associated with the accessible.
|
||||
*/
|
||||
@ -195,6 +171,18 @@ public:
|
||||
*/
|
||||
virtual bool IsPrimaryForNode() const;
|
||||
|
||||
/**
|
||||
* Return the string bundle
|
||||
*/
|
||||
static nsIStringBundle* GetStringBundle()
|
||||
{ return gStringBundle; }
|
||||
|
||||
/**
|
||||
* Interface methods on nsIAccessible shared with ISimpleDOM.
|
||||
*/
|
||||
void Language(nsAString& aLocale);
|
||||
void ScrollTo(PRUint32 aType);
|
||||
|
||||
protected:
|
||||
nsPresContext* GetPresContext();
|
||||
|
||||
@ -221,8 +209,5 @@ private:
|
||||
static nsApplicationAccessible *gApplicationAccessible;
|
||||
};
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(nsAccessNode,
|
||||
NS_ACCESSNODE_IMPL_CID)
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -52,11 +52,14 @@
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsAccTreeWalker.h"
|
||||
#include "nsIAccessibleRelation.h"
|
||||
#include "nsRootAccessible.h"
|
||||
#include "nsTextEquivUtils.h"
|
||||
#include "Relation.h"
|
||||
#include "Role.h"
|
||||
#include "States.h"
|
||||
|
||||
#include "nsIDOMCSSValue.h"
|
||||
#include "nsIDOMCSSPrimitiveValue.h"
|
||||
#include "nsIDOMElement.h"
|
||||
#include "nsIDOMDocument.h"
|
||||
#include "nsIDOMDocumentXBL.h"
|
||||
@ -229,6 +232,92 @@ nsAccessible::SetRoleMapEntry(nsRoleMapEntry* aRoleMapEntry)
|
||||
mRoleMapEntry = aRoleMapEntry;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessible::GetComputedStyleValue(const nsAString& aPseudoElt,
|
||||
const nsAString& aPropertyName,
|
||||
nsAString& aValue)
|
||||
{
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIDOMCSSStyleDeclaration> styleDecl =
|
||||
nsCoreUtils::GetComputedStyleDeclaration(aPseudoElt, mContent);
|
||||
NS_ENSURE_TRUE(styleDecl, NS_ERROR_FAILURE);
|
||||
|
||||
return styleDecl->GetPropertyValue(aPropertyName, aValue);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessible::GetComputedStyleCSSValue(const nsAString& aPseudoElt,
|
||||
const nsAString& aPropertyName,
|
||||
nsIDOMCSSPrimitiveValue **aCSSValue) {
|
||||
NS_ENSURE_ARG_POINTER(aCSSValue);
|
||||
*aCSSValue = nsnull;
|
||||
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIDOMCSSStyleDeclaration> styleDecl =
|
||||
nsCoreUtils::GetComputedStyleDeclaration(aPseudoElt, mContent);
|
||||
NS_ENSURE_STATE(styleDecl);
|
||||
|
||||
nsCOMPtr<nsIDOMCSSValue> cssValue;
|
||||
styleDecl->GetPropertyCSSValue(aPropertyName, getter_AddRefs(cssValue));
|
||||
NS_ENSURE_TRUE(cssValue, NS_ERROR_FAILURE);
|
||||
|
||||
return CallQueryInterface(cssValue, aCSSValue);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessible::GetDocument(nsIAccessibleDocument **aDocument)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aDocument);
|
||||
|
||||
NS_IF_ADDREF(*aDocument = GetDocAccessible());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessible::GetDOMNode(nsIDOMNode **aDOMNode)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aDOMNode);
|
||||
*aDOMNode = nsnull;
|
||||
|
||||
nsINode *node = GetNode();
|
||||
if (node)
|
||||
CallQueryInterface(node, aDOMNode);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessible::GetRootDocument(nsIAccessibleDocument **aRootDocument)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aRootDocument);
|
||||
|
||||
nsRootAccessible* rootDocument = RootAccessible();
|
||||
NS_IF_ADDREF(*aRootDocument = rootDocument);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessible::GetInnerHTML(nsAString& aInnerHTML)
|
||||
{
|
||||
aInnerHTML.Truncate();
|
||||
|
||||
nsCOMPtr<nsIDOMHTMLElement> htmlElement = do_QueryInterface(mContent);
|
||||
NS_ENSURE_TRUE(htmlElement, NS_ERROR_NULL_POINTER);
|
||||
|
||||
return htmlElement->GetInnerHTML(aInnerHTML);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessible::GetLanguage(nsAString& aLanguage)
|
||||
{
|
||||
Language(aLanguage);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessible::GetName(nsAString& aName)
|
||||
{
|
||||
@ -2200,6 +2289,32 @@ nsAccessible::DispatchClickEvent(nsIContent *aContent, PRUint32 aActionIndex)
|
||||
nsCoreUtils::DispatchMouseEvent(NS_MOUSE_BUTTON_UP, presShell, aContent);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessible::ScrollTo(PRUint32 aHow)
|
||||
{
|
||||
nsAccessNode::ScrollTo(aHow);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessible::ScrollToPoint(PRUint32 aCoordinateType, PRInt32 aX, PRInt32 aY)
|
||||
{
|
||||
nsIFrame *frame = GetFrame();
|
||||
if (!frame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsIntPoint coords;
|
||||
nsresult rv = nsAccUtils::ConvertToScreenCoords(aX, aY, aCoordinateType,
|
||||
this, &coords);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsIFrame *parentFrame = frame;
|
||||
while ((parentFrame = parentFrame->GetParent()))
|
||||
nsCoreUtils::ScrollFrameToPoint(parentFrame, frame, coords);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// nsIAccessibleSelectable
|
||||
NS_IMETHODIMP nsAccessible::GetSelectedChildren(nsIArray **aSelectedAccessibles)
|
||||
{
|
||||
|
@ -129,6 +129,17 @@ public:
|
||||
*/
|
||||
virtual void Description(nsString& aDescription);
|
||||
|
||||
/**
|
||||
* Return DOM node associated with this accessible.
|
||||
*/
|
||||
inline already_AddRefed<nsIDOMNode> DOMNode() const
|
||||
{
|
||||
nsIDOMNode *DOMNode = nsnull;
|
||||
if (GetNode())
|
||||
CallQueryInterface(GetNode(), &DOMNode);
|
||||
return DOMNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the accessible name specified by ARIA.
|
||||
*/
|
||||
|
@ -421,7 +421,7 @@ nsApplicationAccessible::GetSiblingAtOffset(PRInt32 aOffset,
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// nsIAccessNode and nsAccessNode
|
||||
// nsIAccessible
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetDOMNode(nsIDOMNode **aDOMNode)
|
||||
|
@ -69,7 +69,7 @@ public:
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
// nsIAccessNode
|
||||
// nsIAccessible
|
||||
NS_SCRIPTABLE NS_IMETHOD GetDOMNode(nsIDOMNode** aDOMNode);
|
||||
NS_SCRIPTABLE NS_IMETHOD GetDocument(nsIAccessibleDocument** aDocument);
|
||||
NS_SCRIPTABLE NS_IMETHOD GetRootDocument(nsIAccessibleDocument** aRootDocument);
|
||||
@ -83,8 +83,6 @@ public:
|
||||
const nsAString& aPropertyName,
|
||||
nsIDOMCSSPrimitiveValue** aValue NS_OUTPARAM);
|
||||
NS_SCRIPTABLE NS_IMETHOD GetLanguage(nsAString& aLanguage);
|
||||
|
||||
// nsIAccessible
|
||||
NS_IMETHOD GetParent(nsIAccessible **aParent);
|
||||
NS_IMETHOD GetNextSibling(nsIAccessible **aNextSibling);
|
||||
NS_IMETHOD GetPreviousSibling(nsIAccessible **aPreviousSibling);
|
||||
|
@ -191,7 +191,7 @@ public:
|
||||
|
||||
/**
|
||||
* Scrolls the given frame to the point, used for implememntation of
|
||||
* nsIAccessNode::scrollToPoint and nsIAccessibleText::scrollSubstringToPoint.
|
||||
* nsIAccessible::scrollToPoint and nsIAccessibleText::scrollSubstringToPoint.
|
||||
*
|
||||
* @param aScrollableFrame the scrollable frame
|
||||
* @param aFrame the frame to scroll
|
||||
|
@ -283,8 +283,8 @@ nsLangTextAttr::nsLangTextAttr(nsHyperTextAccessible *aRootAcc,
|
||||
nsIContent *aRootContent, nsIContent *aContent) :
|
||||
nsTextAttr<nsAutoString>(aContent == nsnull), mRootContent(aRootContent)
|
||||
{
|
||||
nsresult rv = aRootAcc->GetLanguage(mRootNativeValue);
|
||||
mIsRootDefined = NS_SUCCEEDED(rv) && !mRootNativeValue.IsEmpty();
|
||||
aRootAcc->Language(mRootNativeValue);
|
||||
mIsRootDefined = !mRootNativeValue.IsEmpty();
|
||||
|
||||
if (aContent)
|
||||
mIsDefined = GetLang(aContent, mNativeValue);
|
||||
|
@ -1148,7 +1148,7 @@ nsHyperTextAccessible::GetTextAttributes(bool aIncludeDefAttrs,
|
||||
// Compute spelling attributes on text accessible only.
|
||||
nsIFrame *offsetFrame = accAtOffset->GetFrame();
|
||||
if (offsetFrame && offsetFrame->GetType() == nsGkAtoms::textFrame) {
|
||||
nsCOMPtr<nsIDOMNode> node = accAtOffset->GetDOMNode();
|
||||
nsCOMPtr<nsIDOMNode> node = accAtOffset->DOMNode();
|
||||
|
||||
PRInt32 nodeOffset = 0;
|
||||
nsresult rv = RenderedToContentOffset(offsetFrame, offsetInAcc,
|
||||
@ -2255,10 +2255,8 @@ nsHyperTextAccessible::GetDOMPointByFrameOffset(nsIFrame *aFrame,
|
||||
if (!aFrame) {
|
||||
// If the given frame is null then set offset after the DOM node of the
|
||||
// given accessible.
|
||||
nsCOMPtr<nsIAccessNode> accessNode(do_QueryInterface(aAccessible));
|
||||
|
||||
nsCOMPtr<nsIDOMNode> DOMNode;
|
||||
accessNode->GetDOMNode(getter_AddRefs(DOMNode));
|
||||
aAccessible->GetDOMNode(getter_AddRefs(DOMNode));
|
||||
nsCOMPtr<nsIContent> content(do_QueryInterface(DOMNode));
|
||||
NS_ENSURE_STATE(content);
|
||||
|
||||
|
@ -155,7 +155,7 @@ CAccessibleComponent::GetARGBValueFromCSSProperty(const nsAString& aPropName,
|
||||
__try {
|
||||
*aColorValue = 0;
|
||||
|
||||
nsCOMPtr<nsIAccessNode> acc(do_QueryObject(this));
|
||||
nsRefPtr<nsAccessible> acc(do_QueryObject(this));
|
||||
if (!acc)
|
||||
return E_FAIL;
|
||||
|
||||
|
@ -396,9 +396,8 @@ __try {
|
||||
aScrollTopLeft ? nsIAccessibleScrollType::SCROLL_TYPE_TOP_LEFT :
|
||||
nsIAccessibleScrollType::SCROLL_TYPE_BOTTOM_RIGHT;
|
||||
|
||||
nsresult rv = ScrollTo(scrollType);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
return S_OK;
|
||||
ScrollTo(scrollType);
|
||||
return S_OK;
|
||||
} __except(FilterA11yExceptions(::GetExceptionCode(), GetExceptionInformation())) { }
|
||||
|
||||
return E_FAIL;
|
||||
@ -554,10 +553,7 @@ __try {
|
||||
*aLanguage = NULL;
|
||||
|
||||
nsAutoString language;
|
||||
if (NS_FAILED(GetLanguage(language))) {
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
Language(language);
|
||||
if (language.IsEmpty())
|
||||
return S_FALSE;
|
||||
|
||||
@ -575,7 +571,7 @@ nsAccessNodeWrap::get_localInterface(
|
||||
/* [out] */ void __RPC_FAR *__RPC_FAR *localInterface)
|
||||
{
|
||||
__try {
|
||||
*localInterface = static_cast<nsIAccessNode*>(this);
|
||||
*localInterface = static_cast<nsAccessNode*>(this);
|
||||
NS_ADDREF_THIS();
|
||||
} __except(FilterA11yExceptions(::GetExceptionCode(), GetExceptionInformation())) { }
|
||||
return S_OK;
|
||||
|
@ -1145,8 +1145,8 @@ STDMETHODIMP
|
||||
nsAccessibleWrap::scrollTo(enum IA2ScrollType aScrollType)
|
||||
{
|
||||
__try {
|
||||
nsresult rv = ScrollTo(aScrollType);
|
||||
return GetHRESULT(rv);
|
||||
nsAccessNode::ScrollTo(aScrollType);
|
||||
return S_OK;
|
||||
|
||||
} __except(nsAccessNodeWrap::FilterA11yExceptions(::GetExceptionCode(), GetExceptionInformation())) { }
|
||||
return E_FAIL;
|
||||
@ -1366,9 +1366,7 @@ __try {
|
||||
// Any two-letter subcode is understood to be a [ISO3166] country code.
|
||||
|
||||
nsAutoString lang;
|
||||
nsresult rv = GetLanguage(lang);
|
||||
if (NS_FAILED(rv))
|
||||
return GetHRESULT(rv);
|
||||
Language(lang);
|
||||
|
||||
// If primary code consists from two letters then expose it as language.
|
||||
PRInt32 offset = lang.FindChar('-', 0);
|
||||
|
@ -662,17 +662,10 @@ nsXULToolbarButtonAccessible::GetPositionAndSizeInternal(PRInt32 *aPosInSet,
|
||||
bool
|
||||
nsXULToolbarButtonAccessible::IsSeparator(nsAccessible *aAccessible)
|
||||
{
|
||||
nsCOMPtr<nsIDOMNode> domNode;
|
||||
aAccessible->GetDOMNode(getter_AddRefs(domNode));
|
||||
nsCOMPtr<nsIContent> contentDomNode(do_QueryInterface(domNode));
|
||||
|
||||
if (!contentDomNode)
|
||||
return false;
|
||||
|
||||
return (contentDomNode->Tag() == nsGkAtoms::toolbarseparator) ||
|
||||
(contentDomNode->Tag() == nsGkAtoms::toolbarspacer) ||
|
||||
(contentDomNode->Tag() == nsGkAtoms::toolbarspring);
|
||||
}
|
||||
nsIContent* content = aAccessible->GetContent();
|
||||
return content && ((content->Tag() == nsGkAtoms::toolbarseparator) ||
|
||||
(content->Tag() == nsGkAtoms::toolbarspacer) ||
|
||||
(content->Tag() == nsGkAtoms::toolbarspring)); }
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -153,9 +153,9 @@ nsXULTabAccessible::RelationByType(PRUint32 aType)
|
||||
if (!tabsElm)
|
||||
return rel;
|
||||
|
||||
nsCOMPtr<nsIDOMNode> DOMNode(GetDOMNode());
|
||||
nsCOMPtr<nsIDOMNode> domNode(DOMNode());
|
||||
nsCOMPtr<nsIDOMNode> tabpanelNode;
|
||||
tabsElm->GetRelatedElement(DOMNode, getter_AddRefs(tabpanelNode));
|
||||
tabsElm->GetRelatedElement(domNode, getter_AddRefs(tabpanelNode));
|
||||
if (!tabpanelNode)
|
||||
return rel;
|
||||
|
||||
@ -255,9 +255,9 @@ nsXULTabpanelAccessible::RelationByType(PRUint32 aType)
|
||||
if (!tabpanelsElm)
|
||||
return rel;
|
||||
|
||||
nsCOMPtr<nsIDOMNode> DOMNode(GetDOMNode());
|
||||
nsCOMPtr<nsIDOMNode> domNode(DOMNode());
|
||||
nsCOMPtr<nsIDOMNode> tabNode;
|
||||
tabpanelsElm->GetRelatedElement(DOMNode, getter_AddRefs(tabNode));
|
||||
tabpanelsElm->GetRelatedElement(domNode, getter_AddRefs(tabNode));
|
||||
if (!tabNode)
|
||||
return rel;
|
||||
|
||||
|
@ -18,7 +18,6 @@ const nsIAccessibleCoordinateType = Components.interfaces.nsIAccessibleCoordinat
|
||||
|
||||
const nsIAccessibleRelation = Components.interfaces.nsIAccessibleRelation;
|
||||
|
||||
const nsIAccessNode = Components.interfaces.nsIAccessNode;
|
||||
const nsIAccessible = Components.interfaces.nsIAccessible;
|
||||
|
||||
const nsIAccessibleDocument = Components.interfaces.nsIAccessibleDocument;
|
||||
@ -121,10 +120,8 @@ function getNode(aAccOrNodeOrID)
|
||||
if (aAccOrNodeOrID instanceof nsIDOMNode)
|
||||
return aAccOrNodeOrID;
|
||||
|
||||
if (aAccOrNodeOrID instanceof nsIAccessible) {
|
||||
aAccOrNodeOrID.QueryInterface(nsIAccessNode);
|
||||
if (aAccOrNodeOrID instanceof nsIAccessible)
|
||||
return aAccOrNodeOrID.DOMNode;
|
||||
}
|
||||
|
||||
node = document.getElementById(aAccOrNodeOrID);
|
||||
if (!node) {
|
||||
@ -167,7 +164,6 @@ function getAccessible(aAccOrElmOrID, aInterfaces, aElmObj, aDoNotFailIf)
|
||||
var elm = null;
|
||||
|
||||
if (aAccOrElmOrID instanceof nsIAccessible) {
|
||||
aAccOrElmOrID.QueryInterface(nsIAccessNode);
|
||||
elm = aAccOrElmOrID.DOMNode;
|
||||
|
||||
} else if (aAccOrElmOrID instanceof nsIDOMNode) {
|
||||
@ -199,8 +195,6 @@ function getAccessible(aAccOrElmOrID, aInterfaces, aElmObj, aDoNotFailIf)
|
||||
}
|
||||
}
|
||||
|
||||
acc.QueryInterface(nsIAccessNode);
|
||||
|
||||
if (!aInterfaces)
|
||||
return acc;
|
||||
|
||||
@ -257,8 +251,7 @@ function getContainerAccessible(aAccOrElmOrID)
|
||||
*/
|
||||
function getRootAccessible(aAccOrElmOrID)
|
||||
{
|
||||
var acc = getAccessible(aAccOrElmOrID ? aAccOrElmOrID : document,
|
||||
[nsIAccessNode]);
|
||||
var acc = getAccessible(aAccOrElmOrID ? aAccOrElmOrID : document);
|
||||
return acc ? acc.rootDocument.QueryInterface(nsIAccessible) : null;
|
||||
}
|
||||
|
||||
@ -267,11 +260,10 @@ function getRootAccessible(aAccOrElmOrID)
|
||||
*/
|
||||
function getTabDocAccessible(aAccOrElmOrID)
|
||||
{
|
||||
var acc = getAccessible(aAccOrElmOrID ? aAccOrElmOrID : document,
|
||||
[nsIAccessNode]);
|
||||
var acc = getAccessible(aAccOrElmOrID ? aAccOrElmOrID : document);
|
||||
|
||||
var docAcc = acc.document.QueryInterface(nsIAccessible);
|
||||
var containerDocAcc = docAcc.parent.QueryInterface(nsIAccessNode).document;
|
||||
var containerDocAcc = docAcc.parent.document;
|
||||
|
||||
// Test is running is stand-alone mode.
|
||||
if (acc.rootDocument == containerDocAcc)
|
||||
@ -584,7 +576,7 @@ function getTextFromClipboard()
|
||||
function prettyName(aIdentifier)
|
||||
{
|
||||
if (aIdentifier instanceof nsIAccessible) {
|
||||
var acc = getAccessible(aIdentifier, [nsIAccessNode]);
|
||||
var acc = getAccessible(aIdentifier);
|
||||
var msg = "[" + getNodePrettyName(acc.DOMNode);
|
||||
try {
|
||||
msg += ", role: " + roleToString(acc.role);
|
||||
|
@ -91,7 +91,7 @@
|
||||
var item = menu.getChildAt(idx);
|
||||
|
||||
if (hasState(item, STATE_FOCUSED))
|
||||
return getAccessible(item, [nsIAccessNode]);
|
||||
return getAccessible(item);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -60,7 +60,7 @@
|
||||
{
|
||||
this.containerNode = getNode(aContainerID);
|
||||
this.container = getAccessible(this.containerNode, nsIAccessibleHyperText);
|
||||
this.text = this.container.firstChild.QueryInterface(nsIAccessNode);
|
||||
this.text = this.container.firstChild;
|
||||
this.textNode = this.text.DOMNode;
|
||||
this.textLen = this.textNode.data.length;
|
||||
|
||||
|
@ -75,7 +75,6 @@ function virtualCursorChangedChecker(aDocAcc, aIdOrNameOrAcc, aTextOffsets)
|
||||
this.check = function virtualCursorChangedChecker_check(aEvent)
|
||||
{
|
||||
var position = aDocAcc.virtualCursor.position;
|
||||
position.QueryInterface(nsIAccessNode);
|
||||
|
||||
var idMatches = position.DOMNode.id == aIdOrNameOrAcc;
|
||||
var nameMatches = position.name == aIdOrNameOrAcc;
|
||||
@ -214,4 +213,4 @@ function dumpTraversalSequence(aPivot, aRule)
|
||||
} while (aPivot.moveNext(aRule))
|
||||
}
|
||||
SimpleTest.info("\n[" + sequence.join(", ") + "]\n");
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,7 @@
|
||||
function doTest()
|
||||
{
|
||||
var elmObj = {};
|
||||
var acc = getAccessible("span", [nsIAccessNode], elmObj);
|
||||
var acc = getAccessible("span", null, elmObj);
|
||||
computedStyle = document.defaultView.getComputedStyle(elmObj.value, "");
|
||||
|
||||
// html:span element
|
||||
@ -23,7 +23,7 @@
|
||||
"Wrong color for element with ID 'span'");
|
||||
|
||||
// text child of html:span element
|
||||
acc = getAccessible(acc.firstChild, [nsIAccessNode]);
|
||||
acc = getAccessible(acc.firstChild);
|
||||
is(acc.getComputedStyleValue("", "color"), computedStyle.color,
|
||||
"Wrong color for text child of element with ID 'span'");
|
||||
|
||||
|
@ -64,8 +64,8 @@
|
||||
this.preinvoke = function rootContentRemoved_preinvoke()
|
||||
{
|
||||
// Set up target for hide event before we invoke.
|
||||
var text = getAccessible(getAccessible(getDocNode(aID)).firstChild,
|
||||
[nsIAccessNode]).DOMNode;
|
||||
var text =
|
||||
getAccessible(getAccessible(getDocNode(aID)).firstChild).DOMNode;
|
||||
this.eventSeq[0].target = text;
|
||||
}
|
||||
|
||||
|
@ -413,6 +413,10 @@ pref("dom.sms.whitelist", "file://,http://localhost:6666");
|
||||
// Ignore X-Frame-Options headers.
|
||||
pref("b2g.ignoreXFrameOptions", true);
|
||||
|
||||
// controls if we want camera support
|
||||
pref("device.camera.enabled", true);
|
||||
pref("media.realtime_decoder.enabled", true);
|
||||
|
||||
// "Preview" landing of bug 710563, which is bogged down in analysis
|
||||
// of talos regression. This is a needed change for higher-framerate
|
||||
// CSS animations, and incidentally works around an apparent bug in
|
||||
|
@ -79,9 +79,10 @@ function startupHttpd(baseDir, port) {
|
||||
// FIXME Bug 707625
|
||||
// until we have a proper security model, add some rights to
|
||||
// the pre-installed web applications
|
||||
// XXX never grant 'content-camera' to non-gaia apps
|
||||
function addPermissions(urls) {
|
||||
let permissions = [
|
||||
'indexedDB', 'indexedDB-unlimited', 'webapps-manage', 'offline-app'
|
||||
'indexedDB', 'indexedDB-unlimited', 'webapps-manage', 'offline-app', 'content-camera'
|
||||
];
|
||||
urls.forEach(function(url) {
|
||||
let uri = Services.io.newURI(url, null, null);
|
||||
|
@ -1,2 +1,7 @@
|
||||
# Scrollbars
|
||||
category agent-style-sheets browser-content-stylesheet chrome://browser/content/content.css
|
||||
|
||||
# CameraContent.js
|
||||
component {eff4231b-abce-4f7f-a40a-d646e8fde3ce} CameraContent.js
|
||||
contract @mozilla.org/b2g-camera-content;1 {eff4231b-abce-4f7f-a40a-d646e8fde3ce}
|
||||
category JavaScript-navigator-property mozCamera @mozilla.org/b2g-camera-content;1
|
||||
|
83
b2g/components/CameraContent.js
Normal file
83
b2g/components/CameraContent.js
Normal file
@ -0,0 +1,83 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
const Cu = Components.utils;
|
||||
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
const kProtocolName = "b2g-camera:";
|
||||
|
||||
let CameraContent = function() {
|
||||
this.hasPrivileges = false;
|
||||
this.mapping = [];
|
||||
}
|
||||
|
||||
CameraContent.prototype = {
|
||||
getCameraURI: function(aOptions) {
|
||||
if (!this.hasPrivileges)
|
||||
return null;
|
||||
|
||||
let options = aOptions || { };
|
||||
if (!options.camera)
|
||||
options.camera = 0;
|
||||
if (!options.width)
|
||||
options.width = 320;
|
||||
if (!options.height)
|
||||
options.height = 240;
|
||||
|
||||
let uuid = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator).generateUUID().toString();
|
||||
uuid = uuid.substring(1, uuid.length - 2); // remove the brackets
|
||||
this.mapping.push(uuid);
|
||||
let uri = kProtocolName + "?camera=" + options.camera +
|
||||
"&width=" + options.width +
|
||||
"&height=" + options.height +
|
||||
"&type=video/x-raw-yuv";
|
||||
// XXX that's no e10s ready, but the camera inputstream itself is not...
|
||||
Services.prefs.setCharPref("b2g.camera." + kProtocolName + "?" + uuid, uri);
|
||||
return kProtocolName + "?" + uuid;
|
||||
},
|
||||
|
||||
observe: function(aSubject, aTopic, aData) {
|
||||
if (aTopic == "inner-window-destroyed") {
|
||||
let wId = aSubject.QueryInterface(Ci.nsISupportsPRUint64).data;
|
||||
if (wId == this.innerWindowID) {
|
||||
Services.obs.removeObserver(this, "inner-window-destroyed");
|
||||
for (let aId in this.mapping)
|
||||
Services.prefs.clearUserPref("b2g.camera." + kProtocolName + "?" + aId);
|
||||
this.mapping = null;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
init: function(aWindow) {
|
||||
let principal = aWindow.document.nodePrincipal;
|
||||
let secMan = Cc["@mozilla.org/scriptsecuritymanager;1"].getService(Ci.nsIScriptSecurityManager);
|
||||
|
||||
let perm = principal == secMan.getSystemPrincipal() ? Ci.nsIPermissionManager.ALLOW_ACTION : Services.perms.testExactPermission(principal.URI, "content-camera");
|
||||
|
||||
//only pages with perm set and chrome pages can use the camera in content
|
||||
this.hasPrivileges = perm == Ci.nsIPermissionManager.ALLOW_ACTION || from.schemeIs("chrome");
|
||||
|
||||
Services.obs.addObserver(this, "inner-window-destroyed", false);
|
||||
let util = aWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
|
||||
this.innerWindowID = util.currentInnerWindowID;
|
||||
},
|
||||
|
||||
classID: Components.ID("{eff4231b-abce-4f7f-a40a-d646e8fde3ce}"),
|
||||
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIB2GCameraContent, Ci.nsIDOMGlobalPropertyInitializer, Ci.nsIObserver]),
|
||||
|
||||
classInfo: XPCOMUtils.generateCI({classID: Components.ID("{eff4231b-abce-4f7f-a40a-d646e8fde3ce}"),
|
||||
contractID: "@mozilla.org/b2g-camera-content;1",
|
||||
interfaces: [Ci.nsIB2GCameraContent],
|
||||
flags: Ci.nsIClassInfo.DOM_OBJECT,
|
||||
classDescription: "B2G Camera Content Helper"})
|
||||
}
|
||||
|
||||
const NSGetFactory = XPCOMUtils.generateNSGetFactory([CameraContent]);
|
@ -44,8 +44,13 @@ include $(DEPTH)/config/autoconf.mk
|
||||
MODULE = B2GComponents
|
||||
XPIDL_MODULE = B2GComponents
|
||||
|
||||
XPIDLSRCS = \
|
||||
b2g.idl \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_PP_COMPONENTS = \
|
||||
B2GComponents.manifest \
|
||||
CameraContent.js \
|
||||
$(NULL)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
12
b2g/components/b2g.idl
Normal file
12
b2g/components/b2g.idl
Normal file
@ -0,0 +1,12 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "domstubs.idl"
|
||||
|
||||
[scriptable, uuid(3615a616-571d-4194-bf54-ccf546067b14)]
|
||||
interface nsIB2GCameraContent : nsISupports
|
||||
{
|
||||
/* temporary solution, waiting for getUserMedia */
|
||||
DOMString getCameraURI([optional] in jsval options);
|
||||
};
|
@ -603,3 +603,4 @@ bin/components/@DLL_PREFIX@nkgnomevfs@DLL_SUFFIX@
|
||||
@BINPATH@/chrome/chrome.manifest
|
||||
@BINPATH@/components/B2GComponents.manifest
|
||||
@BINPATH@/components/B2GComponents.xpt
|
||||
@BINPATH@/components/CameraContent.js
|
||||
|
Before Width: | Height: | Size: 184 B After Width: | Height: | Size: 184 B |
@ -64,7 +64,7 @@
|
||||
}
|
||||
|
||||
.gcliterm-stack-node {
|
||||
background: url("chrome://global/skin/icons/commandline.png") 4px center no-repeat;
|
||||
background: url("chrome://browser/skin/devtools/commandline.png") 4px center no-repeat;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
@ -293,7 +293,7 @@
|
||||
|
||||
.jsterm-input-node {
|
||||
width: 98%;
|
||||
background: url("chrome://global/skin/icons/commandline.png") 4px 3px no-repeat;
|
||||
background: url("chrome://browser/skin/devtools/commandline.png") 4px 3px no-repeat;
|
||||
}
|
||||
|
||||
:-moz-any(.jsterm-input-node,
|
||||
|
@ -87,6 +87,7 @@ browser.jar:
|
||||
skin/classic/browser/tabview/tabview.css (tabview/tabview.css)
|
||||
skin/classic/browser/devtools/common.css (devtools/common.css)
|
||||
skin/classic/browser/devtools/arrows.png (devtools/arrows.png)
|
||||
skin/classic/browser/devtools/commandline.png (devtools/commandline.png)
|
||||
skin/classic/browser/devtools/goto-mdn.png (devtools/goto-mdn.png)
|
||||
skin/classic/browser/devtools/csshtmltree.css (devtools/csshtmltree.css)
|
||||
skin/classic/browser/devtools/webconsole.css (devtools/webconsole.css)
|
||||
|
Before Width: | Height: | Size: 184 B After Width: | Height: | Size: 184 B |
@ -64,7 +64,7 @@
|
||||
}
|
||||
|
||||
.gcliterm-stack-node {
|
||||
background: url("chrome://global/skin/icons/commandline.png") 4px center no-repeat;
|
||||
background: url("chrome://browser/skin/devtools/commandline.png") 4px center no-repeat;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
@ -361,7 +361,7 @@
|
||||
}
|
||||
|
||||
.jsterm-input-node {
|
||||
background: url("chrome://global/skin/icons/commandline.png") 4px 2px no-repeat;
|
||||
background: url("chrome://browser/skin/devtools/commandline.png") 4px 2px no-repeat;
|
||||
}
|
||||
|
||||
:-moz-any(.jsterm-input-node,
|
||||
|
@ -126,6 +126,7 @@ browser.jar:
|
||||
skin/classic/browser/tabview/tabview.css (tabview/tabview.css)
|
||||
* skin/classic/browser/devtools/common.css (devtools/common.css)
|
||||
skin/classic/browser/devtools/arrows.png (devtools/arrows.png)
|
||||
skin/classic/browser/devtools/commandline.png (devtools/commandline.png)
|
||||
skin/classic/browser/devtools/goto-mdn.png (devtools/goto-mdn.png)
|
||||
skin/classic/browser/devtools/csshtmltree.css (devtools/csshtmltree.css)
|
||||
skin/classic/browser/devtools/gcli.css (devtools/gcli.css)
|
||||
|
BIN
browser/themes/winstripe/devtools/commandline.png
Normal file
BIN
browser/themes/winstripe/devtools/commandline.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 184 B |
@ -64,7 +64,7 @@
|
||||
}
|
||||
|
||||
.gcliterm-stack-node {
|
||||
background: url("chrome://global/skin/icons/commandline.png") 4px center no-repeat;
|
||||
background: url("chrome://browser/skin/devtools/commandline.png") 4px center no-repeat;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
@ -309,7 +309,7 @@
|
||||
}
|
||||
|
||||
.jsterm-input-node {
|
||||
background: url("chrome://global/skin/icons/commandline.png") 4px 3px no-repeat;
|
||||
background: url("chrome://browser/skin/devtools/commandline.png") 4px 3px no-repeat;
|
||||
}
|
||||
|
||||
:-moz-any(.jsterm-input-node,
|
||||
|
@ -110,6 +110,7 @@ browser.jar:
|
||||
skin/classic/browser/tabview/tabview.css (tabview/tabview.css)
|
||||
skin/classic/browser/devtools/common.css (devtools/common.css)
|
||||
skin/classic/browser/devtools/arrows.png (devtools/arrows.png)
|
||||
skin/classic/browser/devtools/commandline.png (devtools/commandline.png)
|
||||
skin/classic/browser/devtools/goto-mdn.png (devtools/goto-mdn.png)
|
||||
skin/classic/browser/devtools/csshtmltree.css (devtools/csshtmltree.css)
|
||||
skin/classic/browser/devtools/gcli.css (devtools/gcli.css)
|
||||
@ -274,6 +275,7 @@ browser.jar:
|
||||
skin/classic/aero/browser/tabview/tabview.css (tabview/tabview.css)
|
||||
skin/classic/aero/browser/devtools/common.css (devtools/common.css)
|
||||
skin/classic/aero/browser/devtools/arrows.png (devtools/arrows.png)
|
||||
skin/classic/aero/browser/devtools/commandline.png (devtools/commandline.png)
|
||||
skin/classic/aero/browser/devtools/goto-mdn.png (devtools/goto-mdn.png)
|
||||
skin/classic/aero/browser/devtools/csshtmltree.css (devtools/csshtmltree.css)
|
||||
skin/classic/aero/browser/devtools/gcli.css (devtools/gcli.css)
|
||||
|
@ -163,24 +163,37 @@ PYTHON_PATH = %pythonpath main
|
||||
endif
|
||||
|
||||
# determine debug-related options
|
||||
_DEBUG_ASFLAGS :=
|
||||
_DEBUG_CFLAGS :=
|
||||
_DEBUG_LDFLAGS :=
|
||||
|
||||
ifdef MOZ_DEBUG
|
||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_ENABLE_DEFS) $(MOZ_DEBUG_FLAGS)
|
||||
_DEBUG_LDFLAGS += $(MOZ_DEBUG_LDFLAGS)
|
||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_ENABLE_DEFS)
|
||||
XULPPFLAGS += $(MOZ_DEBUG_ENABLE_DEFS)
|
||||
else
|
||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_DISABLE_DEFS)
|
||||
XULPPFLAGS += $(MOZ_DEBUG_DISABLE_DEFS)
|
||||
ifdef MOZ_DEBUG_SYMBOLS
|
||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_FLAGS)
|
||||
_DEBUG_LDFLAGS += $(MOZ_DEBUG_LDFLAGS)
|
||||
endif
|
||||
|
||||
ifneq (,$(MOZ_DEBUG)$(MOZ_DEBUG_SYMBOLS))
|
||||
ifeq ($(AS),yasm)
|
||||
ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_)
|
||||
_DEBUG_ASFLAGS += -g cv8
|
||||
else
|
||||
ifneq ($(OS_ARCH),Darwin)
|
||||
_DEBUG_ASFLAGS += -g dwarf2
|
||||
endif
|
||||
endif
|
||||
else
|
||||
_DEBUG_ASFLAGS += $(MOZ_DEBUG_FLAGS)
|
||||
endif
|
||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_FLAGS)
|
||||
_DEBUG_LDFLAGS += $(MOZ_DEBUG_LDFLAGS)
|
||||
endif
|
||||
|
||||
MOZALLOC_LIB = $(call EXPAND_LIBNAME_PATH,mozalloc,$(DIST)/lib)
|
||||
|
||||
ASFLAGS += $(_DEBUG_ASFLAGS)
|
||||
OS_CFLAGS += $(_DEBUG_CFLAGS)
|
||||
OS_CXXFLAGS += $(_DEBUG_CFLAGS)
|
||||
OS_LDFLAGS += $(_DEBUG_LDFLAGS)
|
||||
@ -198,13 +211,8 @@ else # ! MOZ_DEBUG
|
||||
# Used for generating an optimized build with debugging symbols.
|
||||
# Used in the Windows nightlies to generate symbols for crash reporting.
|
||||
ifdef MOZ_DEBUG_SYMBOLS
|
||||
ifeq ($(AS),yasm)
|
||||
ASFLAGS += -g cv8
|
||||
else
|
||||
ASFLAGS += -Zi
|
||||
endif
|
||||
OS_CXXFLAGS += -Zi -UDEBUG -DNDEBUG
|
||||
OS_CFLAGS += -Zi -UDEBUG -DNDEBUG
|
||||
OS_CXXFLAGS += -UDEBUG -DNDEBUG
|
||||
OS_CFLAGS += -UDEBUG -DNDEBUG
|
||||
ifdef HAVE_64BIT_OS
|
||||
OS_LDFLAGS += -DEBUG -OPT:REF,ICF
|
||||
else
|
||||
|
@ -3026,6 +3026,11 @@ struct NS_STACK_CLASS nsCanvasBidiProcessorAzure : public nsBidiPresUtils::BidiP
|
||||
RefPtr<ScaledFont> scaledFont =
|
||||
gfxPlatform::GetPlatform()->GetScaledFontForFont(font);
|
||||
|
||||
if (!scaledFont) {
|
||||
// This can occur when something switched DirectWrite off.
|
||||
return;
|
||||
}
|
||||
|
||||
GlyphBuffer buffer;
|
||||
|
||||
std::vector<Glyph> glyphBuf;
|
||||
|
@ -38,6 +38,7 @@
|
||||
#include "nsIHTMLDocument.h"
|
||||
#include "nsIDOMEventTarget.h"
|
||||
#include "nsEventStateManager.h"
|
||||
#include "nsEventStates.h"
|
||||
#include "nsGkAtoms.h"
|
||||
#include "nsStyleConsts.h"
|
||||
#include "nsPresContext.h"
|
||||
@ -1810,6 +1811,8 @@ nsHTMLFormElement::UpdateValidity(bool aElementValidity)
|
||||
mControls->mNotInElements[i]->UpdateState(true);
|
||||
}
|
||||
}
|
||||
|
||||
UpdateState(true);
|
||||
}
|
||||
|
||||
// nsIWebProgressListener
|
||||
@ -2133,6 +2136,19 @@ nsHTMLFormElement::SetValueMissingState(const nsAString& aName, bool aValue)
|
||||
mValueMissingRadioGroups.Put(aName, aValue);
|
||||
}
|
||||
|
||||
nsEventStates
|
||||
nsHTMLFormElement::IntrinsicState() const
|
||||
{
|
||||
nsEventStates state = nsGenericHTMLElement::IntrinsicState();
|
||||
|
||||
if (mInvalidElementsCount) {
|
||||
state |= NS_EVENT_STATE_INVALID;
|
||||
} else {
|
||||
state |= NS_EVENT_STATE_VALID;
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// nsFormControlList implementation, this could go away if there were
|
||||
|
@ -151,6 +151,8 @@ public:
|
||||
virtual bool GetValueMissingState(const nsAString& aName) const;
|
||||
virtual void SetValueMissingState(const nsAString& aName, bool aValue);
|
||||
|
||||
virtual nsEventStates IntrinsicState() const;
|
||||
|
||||
// nsIContent
|
||||
virtual bool ParseAttribute(PRInt32 aNamespaceID,
|
||||
nsIAtom* aAttribute,
|
||||
|
@ -328,8 +328,8 @@ nsHTMLObjectElement::IsFocusableForTabIndex()
|
||||
return false;
|
||||
}
|
||||
|
||||
return Type() == eType_Plugin || IsEditableRoot() ||
|
||||
(Type() == eType_Document && nsContentUtils::IsSubDocumentTabbable(this));
|
||||
return IsEditableRoot() || (Type() == eType_Document &&
|
||||
nsContentUtils::IsSubDocumentTabbable(this));
|
||||
}
|
||||
|
||||
bool
|
||||
@ -341,7 +341,7 @@ nsHTMLObjectElement::IsHTMLFocusable(bool aWithMouse,
|
||||
nsIDocument *doc = GetCurrentDoc();
|
||||
if (!doc || doc->HasFlag(NODE_IS_EDITABLE)) {
|
||||
if (aTabIndex) {
|
||||
GetIntAttr(nsGkAtoms::tabindex, -1, aTabIndex);
|
||||
GetTabIndex(aTabIndex);
|
||||
}
|
||||
|
||||
*aIsFocusable = false;
|
||||
@ -356,7 +356,7 @@ nsHTMLObjectElement::IsHTMLFocusable(bool aWithMouse,
|
||||
// Has plugin content: let the plugin decide what to do in terms of
|
||||
// internal focus from mouse clicks
|
||||
if (aTabIndex) {
|
||||
GetIntAttr(nsGkAtoms::tabindex, 0, aTabIndex);
|
||||
GetTabIndex(aTabIndex);
|
||||
}
|
||||
|
||||
*aIsFocusable = true;
|
||||
|
@ -296,6 +296,7 @@ _TEST_FILES = \
|
||||
test_ol_attributes_reflection.html \
|
||||
test_bug651956.html \
|
||||
test_bug694503.html \
|
||||
test_object_plugin_nav.html \
|
||||
$(NULL)
|
||||
|
||||
_BROWSER_TEST_FILES = \
|
||||
|
90
content/html/content/test/test_object_plugin_nav.html
Normal file
90
content/html/content/test/test_object_plugin_nav.html
Normal file
@ -0,0 +1,90 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=720130
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for Bug 720130</title>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=720130">Mozilla Bug 720130</a>
|
||||
<p id="display"></p>
|
||||
<div id="content">
|
||||
<input>
|
||||
<object type="application/x-test"></object>
|
||||
<button>foo</button>
|
||||
<object tabindex='0' type="application/x-test"></object>
|
||||
</div>
|
||||
<pre id="test">
|
||||
<script type="application/javascript">
|
||||
|
||||
/** Test for Bug 720130 **/
|
||||
|
||||
var gFocusCount = 0;
|
||||
var gFocusNb = 4;
|
||||
|
||||
/**
|
||||
* Check the focus navigation.
|
||||
*/
|
||||
function checkFocus() {
|
||||
switch (gFocusCount) {
|
||||
case 0:
|
||||
is(document.activeElement, document.getElementsByTagName('a')[0],
|
||||
"first focused element should be the link");
|
||||
break;
|
||||
case 1:
|
||||
is(document.activeElement, document.getElementsByTagName('input')[0],
|
||||
"second focused element should be the text field");
|
||||
break;
|
||||
case 2:
|
||||
is(document.activeElement, document.getElementsByTagName('button')[0],
|
||||
"third focused element should be the button");
|
||||
break;
|
||||
case 3:
|
||||
is(document.activeElement, document.getElementsByTagName('object')[1],
|
||||
"fourth focused element should be the object");
|
||||
break;
|
||||
}
|
||||
|
||||
gFocusCount++;
|
||||
}
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
SimpleTest.waitForFocus(function() {
|
||||
is(document.activeElement, document.body);
|
||||
|
||||
// Preliminary check: tabindex should be -1 on the object.
|
||||
is(document.getElementsByTagName('object')[0].tabIndex, -1,
|
||||
"the plugin shouldn't get focus while navigating in the document");
|
||||
|
||||
document.addEventListener("focus", function() {
|
||||
checkFocus();
|
||||
|
||||
if (gFocusCount != gFocusNb) {
|
||||
synthesizeKey("VK_TAB", {});
|
||||
return;
|
||||
}
|
||||
|
||||
document.removeEventListener("focus", arguments.callee, true);
|
||||
|
||||
// Just make sure that .focus() still works.
|
||||
var o = document.getElementsByTagName('object')[0];
|
||||
o.onfocus = function() {
|
||||
SimpleTest.finish();
|
||||
o.onfocus = null;
|
||||
};
|
||||
o.focus();
|
||||
}, true);
|
||||
|
||||
synthesizeKey("VK_TAB", {});
|
||||
});
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
@ -1202,6 +1202,11 @@ BasicCanvasLayer::PaintWithOpacity(gfxContext* aContext,
|
||||
NS_ASSERTION(BasicManager()->InDrawing(),
|
||||
"Can only draw in drawing phase");
|
||||
|
||||
if (!mSurface) {
|
||||
NS_WARNING("No valid surface to draw!");
|
||||
return;
|
||||
}
|
||||
|
||||
nsRefPtr<gfxPattern> pat = new gfxPattern(mSurface);
|
||||
|
||||
pat->SetFilter(mFilter);
|
||||
|
@ -518,6 +518,11 @@ gfxWindowsPlatform::GetThebesSurfaceForDrawTarget(DrawTarget *aTarget)
|
||||
nsRefPtr<gfxASurface> surf = static_cast<gfxASurface*>(surface);
|
||||
return surf.forget();
|
||||
} else {
|
||||
if (!GetD2DDevice()) {
|
||||
// We no longer have a D2D device, can't do this.
|
||||
return NULL;
|
||||
}
|
||||
|
||||
RefPtr<ID3D10Texture2D> texture =
|
||||
static_cast<ID3D10Texture2D*>(aTarget->GetNativeSurface(NATIVE_SURFACE_D3D10_TEXTURE));
|
||||
|
||||
|
@ -163,24 +163,37 @@ PYTHON_PATH = %pythonpath main
|
||||
endif
|
||||
|
||||
# determine debug-related options
|
||||
_DEBUG_ASFLAGS :=
|
||||
_DEBUG_CFLAGS :=
|
||||
_DEBUG_LDFLAGS :=
|
||||
|
||||
ifdef MOZ_DEBUG
|
||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_ENABLE_DEFS) $(MOZ_DEBUG_FLAGS)
|
||||
_DEBUG_LDFLAGS += $(MOZ_DEBUG_LDFLAGS)
|
||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_ENABLE_DEFS)
|
||||
XULPPFLAGS += $(MOZ_DEBUG_ENABLE_DEFS)
|
||||
else
|
||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_DISABLE_DEFS)
|
||||
XULPPFLAGS += $(MOZ_DEBUG_DISABLE_DEFS)
|
||||
ifdef MOZ_DEBUG_SYMBOLS
|
||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_FLAGS)
|
||||
_DEBUG_LDFLAGS += $(MOZ_DEBUG_LDFLAGS)
|
||||
endif
|
||||
|
||||
ifneq (,$(MOZ_DEBUG)$(MOZ_DEBUG_SYMBOLS))
|
||||
ifeq ($(AS),yasm)
|
||||
ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_)
|
||||
_DEBUG_ASFLAGS += -g cv8
|
||||
else
|
||||
ifneq ($(OS_ARCH),Darwin)
|
||||
_DEBUG_ASFLAGS += -g dwarf2
|
||||
endif
|
||||
endif
|
||||
else
|
||||
_DEBUG_ASFLAGS += $(MOZ_DEBUG_FLAGS)
|
||||
endif
|
||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_FLAGS)
|
||||
_DEBUG_LDFLAGS += $(MOZ_DEBUG_LDFLAGS)
|
||||
endif
|
||||
|
||||
MOZALLOC_LIB = $(call EXPAND_LIBNAME_PATH,mozalloc,$(DIST)/lib)
|
||||
|
||||
ASFLAGS += $(_DEBUG_ASFLAGS)
|
||||
OS_CFLAGS += $(_DEBUG_CFLAGS)
|
||||
OS_CXXFLAGS += $(_DEBUG_CFLAGS)
|
||||
OS_LDFLAGS += $(_DEBUG_LDFLAGS)
|
||||
@ -198,13 +211,8 @@ else # ! MOZ_DEBUG
|
||||
# Used for generating an optimized build with debugging symbols.
|
||||
# Used in the Windows nightlies to generate symbols for crash reporting.
|
||||
ifdef MOZ_DEBUG_SYMBOLS
|
||||
ifeq ($(AS),yasm)
|
||||
ASFLAGS += -g cv8
|
||||
else
|
||||
ASFLAGS += -Zi
|
||||
endif
|
||||
OS_CXXFLAGS += -Zi -UDEBUG -DNDEBUG
|
||||
OS_CFLAGS += -Zi -UDEBUG -DNDEBUG
|
||||
OS_CXXFLAGS += -UDEBUG -DNDEBUG
|
||||
OS_CFLAGS += -UDEBUG -DNDEBUG
|
||||
ifdef HAVE_64BIT_OS
|
||||
OS_LDFLAGS += -DEBUG -OPT:REF,ICF
|
||||
else
|
||||
|
@ -317,6 +317,32 @@ var XPCOMUtils = {
|
||||
let i = uri.lastIndexOf("/");
|
||||
Components.utils.import(uri.substring(0, i+1) + path, that);
|
||||
},
|
||||
|
||||
/**
|
||||
* generates a singleton nsIFactory implementation that can be used as
|
||||
* the _xpcom_factory of the component.
|
||||
* @param aServiceConstructor
|
||||
* Constructor function of the component.
|
||||
*/
|
||||
generateSingletonFactory:
|
||||
function XPCOMUtils_generateSingletonFactory(aServiceConstructor) {
|
||||
return {
|
||||
_instance: null,
|
||||
createInstance: function XPCU_SF_createInstance(aOuter, aIID) {
|
||||
if (aOuter !== null) {
|
||||
throw Cr.NS_ERROR_NO_AGGREGATION;
|
||||
}
|
||||
if (this._instance === null) {
|
||||
this._instance = new aServiceConstructor();
|
||||
}
|
||||
return this._instance.QueryInterface(aIID);
|
||||
},
|
||||
lockFactory: function XPCU_SF_lockFactory(aDoLock) {
|
||||
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
|
||||
},
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIFactory])
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
@ -336,4 +362,3 @@ function makeQI(interfaceNames) {
|
||||
throw Cr.NS_ERROR_NO_INTERFACE;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -50,7 +50,7 @@ const Ci = Components.interfaces;
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//// Tests
|
||||
|
||||
function test_generateQI_string_names()
|
||||
add_test(function test_generateQI_string_names()
|
||||
{
|
||||
var x = {
|
||||
QueryInterface: XPCOMUtils.generateQI([
|
||||
@ -73,10 +73,11 @@ function test_generateQI_string_names()
|
||||
x.QueryInterface(Components.interfaces.nsIDOMDocument);
|
||||
do_throw("QI should not have succeeded!");
|
||||
} catch(e) {}
|
||||
}
|
||||
run_next_test();
|
||||
});
|
||||
|
||||
|
||||
function test_generateCI()
|
||||
add_test(function test_generateCI()
|
||||
{
|
||||
const classID = Components.ID("562dae2e-7cff-432b-995b-3d4c03fa2b89");
|
||||
const classDescription = "generateCI test component";
|
||||
@ -99,9 +100,10 @@ function test_generateCI()
|
||||
} catch(e) {
|
||||
do_throw("Classinfo for x should not be missing or broken");
|
||||
}
|
||||
}
|
||||
run_next_test();
|
||||
});
|
||||
|
||||
function test_defineLazyGetter()
|
||||
add_test(function test_defineLazyGetter()
|
||||
{
|
||||
let accessCount = 0;
|
||||
let obj = {
|
||||
@ -124,10 +126,11 @@ function test_defineLazyGetter()
|
||||
// increased.
|
||||
do_check_eq(obj.foo, TEST_VALUE);
|
||||
do_check_eq(accessCount, 1);
|
||||
}
|
||||
run_next_test();
|
||||
});
|
||||
|
||||
|
||||
function test_defineLazyServiceGetter()
|
||||
add_test(function test_defineLazyServiceGetter()
|
||||
{
|
||||
let obj = { };
|
||||
XPCOMUtils.defineLazyServiceGetter(obj, "service",
|
||||
@ -142,10 +145,11 @@ function test_defineLazyServiceGetter()
|
||||
do_check_true(prop in service);
|
||||
for (let prop in service)
|
||||
do_check_true(prop in obj.service);
|
||||
}
|
||||
run_next_test();
|
||||
});
|
||||
|
||||
|
||||
function test_categoryRegistration()
|
||||
add_test(function test_categoryRegistration()
|
||||
{
|
||||
const CATEGORY_NAME = "test-cat";
|
||||
const XULAPPINFO_CONTRACTID = "@mozilla.org/xre/app-info;1";
|
||||
@ -203,24 +207,45 @@ function test_categoryRegistration()
|
||||
}
|
||||
print("Check there are no more or less than expected entries.");
|
||||
do_check_eq(foundEntriesCount, EXPECTED_ENTRIES.length);
|
||||
}
|
||||
run_next_test();
|
||||
});
|
||||
|
||||
add_test(function test_generateSingletonFactory()
|
||||
{
|
||||
const XPCCOMPONENT_CONTRACTID = "@mozilla.org/singletonComponentTest;1";
|
||||
const XPCCOMPONENT_CID = Components.ID("{31031c36-5e29-4dd9-9045-333a5d719a3e}");
|
||||
|
||||
function XPCComponent() {}
|
||||
XPCComponent.prototype = {
|
||||
classID: XPCCOMPONENT_CID,
|
||||
_xpcom_factory: XPCOMUtils.generateSingletonFactory(XPCComponent),
|
||||
QueryInterface: XPCOMUtils.generateQI([])
|
||||
};
|
||||
let NSGetFactory = XPCOMUtils.generateNSGetFactory([XPCComponent]);
|
||||
let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
|
||||
registrar.registerFactory(
|
||||
XPCCOMPONENT_CID,
|
||||
"XPCComponent",
|
||||
XPCCOMPONENT_CONTRACTID,
|
||||
NSGetFactory(XPCCOMPONENT_CID)
|
||||
);
|
||||
|
||||
// First, try to instance the component.
|
||||
let instance = Cc[XPCCOMPONENT_CONTRACTID].createInstance(Ci.nsISupports);
|
||||
// Try again, check that it returns the same instance as before.
|
||||
do_check_eq(instance,
|
||||
Cc[XPCCOMPONENT_CONTRACTID].createInstance(Ci.nsISupports));
|
||||
// Now, for sanity, check that getService is also returning the same instance.
|
||||
do_check_eq(instance,
|
||||
Cc[XPCCOMPONENT_CONTRACTID].getService(Ci.nsISupports));
|
||||
|
||||
run_next_test();
|
||||
});
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//// Test Runner
|
||||
|
||||
let tests = [
|
||||
test_generateQI_string_names,
|
||||
test_generateCI,
|
||||
test_defineLazyGetter,
|
||||
test_defineLazyServiceGetter,
|
||||
test_categoryRegistration,
|
||||
];
|
||||
|
||||
function run_test()
|
||||
{
|
||||
tests.forEach(function(test) {
|
||||
print("Running next test: " + test.name);
|
||||
test();
|
||||
});
|
||||
run_next_test();
|
||||
}
|
||||
|
22
layout/reftests/css-invalid/form/form-add-control.html
Normal file
22
layout/reftests/css-invalid/form/form-add-control.html
Normal file
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<!--form with one invalid element and another valid one is added dynamically -->
|
||||
<html class='reftest-wait'>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<script>
|
||||
function onloadHandler()
|
||||
{
|
||||
document.forms[0].appendChild(document.getElementById('i'));
|
||||
document.documentElement.className = '';
|
||||
}
|
||||
</script>
|
||||
<body onload='onloadHandler();'>
|
||||
<input id='i'>
|
||||
<form>
|
||||
<input required>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- form with no elements and invalid element is added dynamically -->
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display:none }
|
||||
</style>
|
||||
<script>
|
||||
function onLoadHandler()
|
||||
{
|
||||
document.forms[0].appendChild(document.getElementById('i'));
|
||||
document.documentElement.className='';
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload='onLoadHandler();'>
|
||||
<input id='i' required>
|
||||
<form>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<!--form with one invalid element and another invalid one is added dynamically -->
|
||||
<html class='reftest-wait'>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<script>
|
||||
function onloadHandler()
|
||||
{
|
||||
document.forms[0].appendChild(document.getElementById('i'));
|
||||
document.documentElement.className = '';
|
||||
}
|
||||
</script>
|
||||
<body onload='onloadHandler();'>
|
||||
<input id='i' type='email' value='foo'>
|
||||
<form>
|
||||
<input id='j' type='email' value='foo'>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<!--form with one valid element and invalid one is added dynamically -->
|
||||
<html class='reftest-wait'>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<script>
|
||||
function onloadHandler()
|
||||
{
|
||||
document.forms[0].appendChild(document.getElementById('i'));
|
||||
document.documentElement.className = '';
|
||||
}
|
||||
</script>
|
||||
<body onload='onloadHandler();'>
|
||||
<input id='i' type='email' value='bar'>
|
||||
<form>
|
||||
<input id='j' type='text' value='foo'>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
22
layout/reftests/css-invalid/form/form-add-valid-element.html
Normal file
22
layout/reftests/css-invalid/form/form-add-valid-element.html
Normal file
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<!--form with one valid element and another valid one is added dynamically -->
|
||||
<html class='reftest-wait'>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<script>
|
||||
function onloadHandler()
|
||||
{
|
||||
document.forms[0].appendChild(document.getElementById('i'));
|
||||
document.documentElement.className = '';
|
||||
}
|
||||
</script>
|
||||
<body onload='onloadHandler();'>
|
||||
<input id='i' type='text' value='bar'>
|
||||
<form>
|
||||
<input id='j' type='text' value='foo'>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<!--form with one invalid element and another valid one is added dynamically -->
|
||||
<html class='reftest-wait'>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<script>
|
||||
function onloadHandler()
|
||||
{
|
||||
document.forms[0].appendChild(document.getElementById('i'));
|
||||
document.documentElement.className = '';
|
||||
}
|
||||
</script>
|
||||
<body onload='onloadHandler();'>
|
||||
<input id='i' type='text' value='foo'>
|
||||
<form>
|
||||
<input id='j' type='email' value='emailfoo'>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<!--form with no valid element and another valid one is added dynamically -->
|
||||
<html class='reftest-wait'>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<script>
|
||||
function onloadHandler()
|
||||
{
|
||||
document.forms[0].appendChild(document.getElementById('i'));
|
||||
document.documentElement.className = '';
|
||||
}
|
||||
</script>
|
||||
<body onload='onloadHandler();'>
|
||||
<input id='i' type='text' value='foo'>
|
||||
<form>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- form with one invalid element and dynamically made it element with
|
||||
barred constraints -->
|
||||
<html class='reftest-wait'>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<script>
|
||||
function onloadHandler()
|
||||
{
|
||||
document.getElementById('i').readOnly = 'ro';
|
||||
document.documentElement.className = '';
|
||||
}
|
||||
</script>
|
||||
<body onload='onloadHandler();'>
|
||||
<form>
|
||||
<input id='i' required>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html class='reftest-wait'>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<script>
|
||||
function onloadHandler()
|
||||
{
|
||||
document.getElementById('i').removeAttribute('readonly');
|
||||
document.documentElement.className = '';
|
||||
}
|
||||
</script>
|
||||
<body onload='onloadHandler();'>
|
||||
<form>
|
||||
<input id='i' required readonly>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
22
layout/reftests/css-invalid/form/form-dynamic-invalid.html
Normal file
22
layout/reftests/css-invalid/form/form-dynamic-invalid.html
Normal file
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- form with one invalid element which is made invalid dynamically -->
|
||||
<html class='reftest-wait'>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
:-moz-ui-invalid { box-shadow: none; }
|
||||
</style>
|
||||
</head>
|
||||
<script>
|
||||
function onloadHandler()
|
||||
{
|
||||
document.getElementById('i').value = '';
|
||||
document.documentElement.className = '';
|
||||
}
|
||||
</script>
|
||||
<body onload='onloadHandler();'>
|
||||
<form>
|
||||
<input id='i' value='foo' required>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
21
layout/reftests/css-invalid/form/form-dynamic-valid.html
Normal file
21
layout/reftests/css-invalid/form/form-dynamic-valid.html
Normal file
@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- form with one valid element which is made valid dynamically -->
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid {display: none;}
|
||||
</style>
|
||||
</head>
|
||||
<script>
|
||||
function onloadHandler()
|
||||
{
|
||||
document.getElementById('i').value = 'foo';
|
||||
document.documentElement.className = '';
|
||||
}
|
||||
</script>
|
||||
<body onload="onloadHandler();">
|
||||
<form>
|
||||
<input id='i' required>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- form with one invalid element and a barred for constraint
|
||||
validation element then you remove the second element -->
|
||||
<html class='reftest-wait'>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<script>
|
||||
function onloadHandler()
|
||||
{
|
||||
document.forms[0].removeChild(document.getElementById('j'));
|
||||
document.documentElement.className = '';
|
||||
}
|
||||
</script>
|
||||
<body onload='onloadHandler();'>
|
||||
<form>
|
||||
<input required>
|
||||
<input id='j' value='foo' readonly>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- Form with one invalid element and a barred for constraint validation element -->
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<form>
|
||||
<input required>
|
||||
<input id='i' value='foo' readonly required>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,8 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
<form>
|
||||
<input required readonly>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
15
layout/reftests/css-invalid/form/form-invalid-barred.html
Normal file
15
layout/reftests/css-invalid/form/form-invalid-barred.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- form with invalid barred for constraint validation element -->
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none ;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<form>
|
||||
<input required readonly>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
8
layout/reftests/css-invalid/form/form-invalid-ref-2.html
Normal file
8
layout/reftests/css-invalid/form/form-invalid-ref-2.html
Normal file
@ -0,0 +1,8 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
<form>
|
||||
<input type='email' value='foo'>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
5
layout/reftests/css-invalid/form/form-invalid-ref.html
Normal file
5
layout/reftests/css-invalid/form/form-invalid-ref.html
Normal file
@ -0,0 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- form with one invalid element and the element is dynamically removed -->
|
||||
<html class='reftest-wait'>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<script>
|
||||
function onloadHandler()
|
||||
{
|
||||
document.forms[0].removeChild(document.getElementById('i'));
|
||||
document.documentElement.className = '';
|
||||
}
|
||||
</script>
|
||||
<body onload='onloadHandler();'>
|
||||
<form>
|
||||
<input id='i' type='email' value='foo'>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<form>
|
||||
<input required readonly>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
14
layout/reftests/css-invalid/form/form-static-invalid.html
Normal file
14
layout/reftests/css-invalid/form/form-static-invalid.html
Normal file
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<!--form with only invalid elements -->
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<form>
|
||||
<input required>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
14
layout/reftests/css-invalid/form/form-static-valid.html
Normal file
14
layout/reftests/css-invalid/form/form-static-valid.html
Normal file
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- form with only valid elements -->
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<form>
|
||||
<input value='foo' required>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
<form>
|
||||
<input value='bar' required>
|
||||
<input value='foo' readonly required>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- form with one valid element and a barred for constraint
|
||||
validation element then you remove the second element -->
|
||||
<html class='reftest-wait'>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<script>
|
||||
function onloadHandler()
|
||||
{
|
||||
document.forms[0].removeChild(document.getElementById('j'));
|
||||
document.documentElement.className = '';
|
||||
}
|
||||
</script>
|
||||
<body onload='onloadHandler();'>
|
||||
<form>
|
||||
<input id='i' value='foo'required>
|
||||
<input id='j' value='bar' readonly>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
15
layout/reftests/css-invalid/form/form-valid-and-barred.html
Normal file
15
layout/reftests/css-invalid/form/form-valid-and-barred.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- Form with one invalid element and a barred for constraint validation element -->
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<form>
|
||||
<input id='i' value='bar'required>
|
||||
<input id='i' value='foo' readonly required>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
7
layout/reftests/css-invalid/form/form-valid-ref-2.html
Normal file
7
layout/reftests/css-invalid/form/form-valid-ref-2.html
Normal file
@ -0,0 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
<form>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
9
layout/reftests/css-invalid/form/form-valid-ref-4.html
Normal file
9
layout/reftests/css-invalid/form/form-valid-ref-4.html
Normal file
@ -0,0 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
<form>
|
||||
<input type='text' value='foo'>
|
||||
<input type='text' value='bar'>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
8
layout/reftests/css-invalid/form/form-valid-ref.html
Normal file
8
layout/reftests/css-invalid/form/form-valid-ref.html
Normal file
@ -0,0 +1,8 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
<form>
|
||||
<input type='text' value='foo' required>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- form with one valid element and you dynamically add a barred constraint
|
||||
validation element -->
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display:none }
|
||||
</style>
|
||||
<script>
|
||||
function onLoadHandler()
|
||||
{
|
||||
document.forms[0].appendChild(document.getElementById('i'));
|
||||
document.documentElement.className='';
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload='onLoadHandler();'>
|
||||
<input id='i' value='foo' readonly>
|
||||
<form>
|
||||
<input required>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- form with invalid and valid elements -->
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display: none; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<form>
|
||||
<input id='i' value='foo'>
|
||||
<input required>
|
||||
<form>
|
||||
<body>
|
||||
<html>
|
@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- form with one valid element and you dynamically add a barred constraint
|
||||
validation element -->
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
form:invalid { display:none }
|
||||
</style>
|
||||
<script>
|
||||
function onLoadHandler()
|
||||
{
|
||||
document.forms[0].appendChild(document.getElementById('i'));
|
||||
document.documentElement.className='';
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload='onLoadHandler();'>
|
||||
<input id='i' value='foo' readonly>
|
||||
<form>
|
||||
<input id='j' value='bar' required>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
25
layout/reftests/css-invalid/form/reftest.list
Normal file
25
layout/reftests/css-invalid/form/reftest.list
Normal file
@ -0,0 +1,25 @@
|
||||
== form-static-valid.html form-valid-ref.html
|
||||
== form-dynamic-valid.html form-valid-ref.html
|
||||
== form-remove-invalid-element.html form-valid-ref-2.html
|
||||
== form-static-invalid.html form-invalid-ref.html
|
||||
== form-dynamic-invalid.html form-invalid-ref.html
|
||||
== form-add-control.html form-invalid-ref.html
|
||||
== form-dynamic-invalid-not-barred.html form-invalid-ref.html
|
||||
== form-remove-invalid-element.html form-invalid-ref.html
|
||||
== form-dynamic-invalid-barred.html form-invalid-barred-ref.html
|
||||
== form-dynamic-not-invalid-barred.html form-invalid-ref.html
|
||||
== form-static-invalid-barred.html form-invalid-barred-ref.html
|
||||
== form-add-invalid-element.html form-invalid-ref.html
|
||||
== form-add-valid-with-invalid-element.html form-invalid-ref.html
|
||||
== form-invalid-barred.html form-invalid-barred-ref.html
|
||||
== form-add-valid-element.html form-valid-ref-4.html
|
||||
== form-add-valid-with-no-element.html form-valid-ref.html
|
||||
== form-add-invalid-with-valid-element.html form-invalid-ref.html
|
||||
== form-with-valid-and-invalid.html form-invalid-ref.html
|
||||
== form-add-invalid-element-dynamic.html form-invalid-ref.html
|
||||
== form-invalid-and-barred.html form-invalid-ref.html
|
||||
== form-invalid-and-barred-remove-barred.html form-invalid-ref.html
|
||||
== form-valid-and-barred.html form-valid-and-barred-ref.html
|
||||
== form-valid-and-barred-remove-barred.html form-valid-ref.html
|
||||
== form-with-invalid-element-add-barred-dynamic.html form-invalid-ref.html
|
||||
== form-with-valid-element-add-barred-dynamic.html form-valid-and-barred-ref.html
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE>
|
||||
<html class="reftest-wait">
|
||||
<style>
|
||||
:invalid {
|
||||
input:invalid {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE>
|
||||
<html class="reftest-wait">
|
||||
<style>
|
||||
:invalid {
|
||||
input:invalid {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE>
|
||||
<html class="reftest-wait">
|
||||
<style>
|
||||
:invalid {
|
||||
input:invalid {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
@ -444,7 +444,7 @@ public class AwesomeBar extends Activity implements GeckoEventListener {
|
||||
if (mContextMenuSubject == null)
|
||||
return false;
|
||||
|
||||
String url = "";
|
||||
final String url;
|
||||
byte[] b = null;
|
||||
String title = "";
|
||||
if (mContextMenuSubject instanceof Cursor) {
|
||||
@ -470,9 +470,20 @@ public class AwesomeBar extends Activity implements GeckoEventListener {
|
||||
break;
|
||||
}
|
||||
case R.id.remove_bookmark: {
|
||||
ContentResolver resolver = Tabs.getInstance().getContentResolver();
|
||||
BrowserDB.removeBookmark(resolver, url);
|
||||
Toast.makeText(this, R.string.bookmark_removed, Toast.LENGTH_SHORT).show();
|
||||
GeckoAppShell.getHandler().post(new Runnable() {
|
||||
public void run() {
|
||||
ContentResolver resolver = Tabs.getInstance().getContentResolver();
|
||||
BrowserDB.removeBookmark(resolver, url);
|
||||
|
||||
GeckoApp.mAppContext.mMainHandler.post(new Runnable() {
|
||||
public void run() {
|
||||
mAwesomeTabs.refreshBookmarks();
|
||||
Toast.makeText(AwesomeBar.this, R.string.bookmark_removed,
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
case R.id.add_to_launcher: {
|
||||
|
@ -747,4 +747,17 @@ public class AwesomeBarTabs extends TabHost {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void refreshBookmarks() {
|
||||
new AsyncTask<Void, Void, Cursor>() {
|
||||
protected Cursor doInBackground(Void... arg0) {
|
||||
ContentResolver resolver = mContext.getContentResolver();
|
||||
return BrowserDB.getAllBookmarks(resolver);
|
||||
}
|
||||
|
||||
protected void onPostExecute(Cursor cursor) {
|
||||
mBookmarksAdapter.changeCursor(cursor);
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
}
|
||||
|
@ -709,6 +709,17 @@
|
||||
{0xae, 0xb7, 0xda, 0x62, 0xe7, 0x27, 0x3e, 0xd5} \
|
||||
}
|
||||
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
#define NS_B2GPROTOCOLHANDLER_CLASSNAME \
|
||||
"nsB2GProtocolHandler"
|
||||
#define NS_B2GPROTOCOLHANDLER_CID \
|
||||
{ \
|
||||
/* {e50d101a-9db2-466f-977c-ae6af19e3b2f} */ \
|
||||
0x50d101a, 0x9db2, 0x466f, \
|
||||
{0x97, 0x7c, 0xae, 0x6a, 0xf1, 0x9e, 0x3b, 0x2f} \
|
||||
}
|
||||
#endif
|
||||
|
||||
/******************************************************************************
|
||||
* netwerk/protocol/viewsource/ classes
|
||||
*/
|
||||
|
@ -264,6 +264,10 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsResURL)
|
||||
#ifdef NECKO_PROTOCOL_device
|
||||
#include "nsDeviceProtocolHandler.h"
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDeviceProtocolHandler)
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
#include "nsB2GProtocolHandler.h"
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsB2GProtocolHandler)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef NECKO_PROTOCOL_viewsource
|
||||
@ -779,6 +783,9 @@ NS_DEFINE_NAMED_CID(NS_DATAPROTOCOLHANDLER_CID);
|
||||
#endif
|
||||
#ifdef NECKO_PROTOCOL_device
|
||||
NS_DEFINE_NAMED_CID(NS_DEVICEPROTOCOLHANDLER_CID);
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
NS_DEFINE_NAMED_CID(NS_B2GPROTOCOLHANDLER_CID);
|
||||
#endif
|
||||
#endif
|
||||
#ifdef NECKO_PROTOCOL_viewsource
|
||||
NS_DEFINE_NAMED_CID(NS_VIEWSOURCEHANDLER_CID);
|
||||
@ -910,6 +917,9 @@ static const mozilla::Module::CIDEntry kNeckoCIDs[] = {
|
||||
#endif
|
||||
#ifdef NECKO_PROTOCOL_device
|
||||
{ &kNS_DEVICEPROTOCOLHANDLER_CID, false, NULL, nsDeviceProtocolHandlerConstructor},
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
{ &kNS_B2GPROTOCOLHANDLER_CID, false, NULL, nsB2GProtocolHandlerConstructor},
|
||||
#endif
|
||||
#endif
|
||||
#ifdef NECKO_PROTOCOL_viewsource
|
||||
{ &kNS_VIEWSOURCEHANDLER_CID, false, NULL, nsViewSourceHandlerConstructor },
|
||||
@ -1050,6 +1060,9 @@ static const mozilla::Module::ContractIDEntry kNeckoContracts[] = {
|
||||
#endif
|
||||
#ifdef NECKO_PROTOCOL_device
|
||||
{ NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "moz-device", &kNS_DEVICEPROTOCOLHANDLER_CID },
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
{ NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "b2g-camera", &kNS_B2GPROTOCOLHANDLER_CID },
|
||||
#endif
|
||||
#endif
|
||||
#ifdef NECKO_PROTOCOL_viewsource
|
||||
{ NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "view-source", &kNS_VIEWSOURCEHANDLER_CID },
|
||||
|
@ -66,6 +66,7 @@ endif
|
||||
|
||||
ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
|
||||
CPPSRCS += GonkCaptureProvider.cpp \
|
||||
nsB2GProtocolHandler.cpp \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
|
117
netwerk/protocol/device/nsB2GProtocolHandler.cpp
Normal file
117
netwerk/protocol/device/nsB2GProtocolHandler.cpp
Normal file
@ -0,0 +1,117 @@
|
||||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Camera.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Mozilla Corporation
|
||||
* Portions created by the Initial Developer are Copyright (C) 2009
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Nino D'Aversa <ninodaversa@gmail.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsB2GProtocolHandler.h"
|
||||
#include "nsDeviceChannel.h"
|
||||
#include "nsNetCID.h"
|
||||
#include "nsAutoPtr.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsSimpleURI.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
NS_IMPL_THREADSAFE_ISUPPORTS1(nsB2GProtocolHandler,
|
||||
nsIProtocolHandler)
|
||||
|
||||
nsresult
|
||||
nsB2GProtocolHandler::Init(){
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsB2GProtocolHandler::GetScheme(nsACString &aResult)
|
||||
{
|
||||
aResult.AssignLiteral("b2g-camera");
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsB2GProtocolHandler::GetDefaultPort(PRInt32 *aResult)
|
||||
{
|
||||
*aResult = -1; // no port for b2g-camera: URLs
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsB2GProtocolHandler::GetProtocolFlags(PRUint32 *aResult)
|
||||
{
|
||||
*aResult = URI_NORELATIVE | URI_NOAUTH | URI_LOADABLE_BY_ANYONE | URI_IS_LOCAL_RESOURCE;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsB2GProtocolHandler::NewURI(const nsACString &spec,
|
||||
const char *originCharset,
|
||||
nsIURI *baseURI,
|
||||
nsIURI **result)
|
||||
{
|
||||
nsRefPtr<nsSimpleURI> uri = new nsSimpleURI();
|
||||
nsresult rv;
|
||||
|
||||
// XXX get the "real" uri from the pref
|
||||
// should use ipdl when we'll use e10s
|
||||
nsCString key("b2g.camera.");
|
||||
key.Append(spec);
|
||||
nsCString pref;
|
||||
rv = mozilla::Preferences::GetCString(key.get(), &pref);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = uri->SetSpec(pref);
|
||||
mozilla::Preferences::ClearUser(key.BeginReading());
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return CallQueryInterface(uri, result);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsB2GProtocolHandler::NewChannel(nsIURI* aURI, nsIChannel **aResult)
|
||||
{
|
||||
nsRefPtr<nsDeviceChannel> channel = new nsDeviceChannel();
|
||||
nsresult rv = channel->Init(aURI);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return CallQueryInterface(channel, aResult);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsB2GProtocolHandler::AllowPort(PRInt32 port,
|
||||
const char *scheme,
|
||||
bool *aResult)
|
||||
{
|
||||
// don't override anything.
|
||||
*aResult = false;
|
||||
return NS_OK;
|
||||
}
|
60
netwerk/protocol/device/nsB2GProtocolHandler.h
Normal file
60
netwerk/protocol/device/nsB2GProtocolHandler.h
Normal file
@ -0,0 +1,60 @@
|
||||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Camera.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Mozilla Corporation
|
||||
* Portions created by the Initial Developer are Copyright (C) 2009
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Nino D'Aversa <ninodaversa@gmail.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef nsB2GProtocolHandler_h_
|
||||
#define nsB2GProtocolHandler_h_
|
||||
|
||||
#include "nsIProtocolHandler.h"
|
||||
#include "nsString.h"
|
||||
|
||||
// {e50d101a-9db2-466f-977c-ae6af19e3b2f}
|
||||
#define NS_B2GPROTOCOLHANDLER_CID \
|
||||
{ 0x50d101a, 0x9db2, 0x466f, \
|
||||
{0x97, 0x7c, 0xae, 0x6a, 0xf1, 0x9e, 0x3b, 0x2f} }
|
||||
|
||||
class nsB2GProtocolHandler : public nsIProtocolHandler {
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIPROTOCOLHANDLER
|
||||
|
||||
nsB2GProtocolHandler() {}
|
||||
~nsB2GProtocolHandler() {}
|
||||
|
||||
nsresult Init();
|
||||
};
|
||||
|
||||
#endif
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user