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 \
|
nsIAccessibleDocument.idl \
|
||||||
nsIAccessibleProvider.idl \
|
nsIAccessibleProvider.idl \
|
||||||
nsIAccessibleSelectable.idl \
|
nsIAccessibleSelectable.idl \
|
||||||
nsIAccessNode.idl \
|
|
||||||
nsIAccessibleCursorable.idl \
|
nsIAccessibleCursorable.idl \
|
||||||
nsIAccessibleEvent.idl \
|
nsIAccessibleEvent.idl \
|
||||||
nsIAccessibleEditableText.idl \
|
nsIAccessibleEditableText.idl \
|
||||||
|
@ -117,7 +117,7 @@ cpp_quote("//")
|
|||||||
cpp_quote("//")
|
cpp_quote("//")
|
||||||
cpp_quote("// get_localInterface(/* [out] */ void **localInterface);")
|
cpp_quote("// get_localInterface(/* [out] */ void **localInterface);")
|
||||||
cpp_quote("// ---------------------------------------------------------------------------------------------------=")
|
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("//")
|
cpp_quote("//")
|
||||||
cpp_quote("// get_language(/* [out] */ BSTR *htmlText);")
|
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"
|
#include "nsIArray.idl"
|
||||||
|
|
||||||
interface nsIPersistentProperties;
|
interface nsIPersistentProperties;
|
||||||
|
interface nsIDOMCSSPrimitiveValue;
|
||||||
interface nsIDOMDOMStringList;
|
interface nsIDOMDOMStringList;
|
||||||
|
interface nsIDOMNode;
|
||||||
|
interface nsIAccessibleDocument;
|
||||||
interface nsIAccessibleRelation;
|
interface nsIAccessibleRelation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -100,6 +103,53 @@ interface nsIAccessible : nsISupports
|
|||||||
*/
|
*/
|
||||||
readonly attribute long indexInParent;
|
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
|
* Accessible name -- the main text equivalent for this node. The name is
|
||||||
* specified by ARIA or by native markup. Example of ARIA markup 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);
|
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
|
* Get a pointer to accessibility interface for this node, which is specific
|
||||||
* to the OS/accessibility toolkit we're running on.
|
* to the OS/accessibility toolkit we're running on.
|
||||||
|
@ -39,7 +39,6 @@
|
|||||||
#include "nsISupports.idl"
|
#include "nsISupports.idl"
|
||||||
|
|
||||||
interface nsIAccessible;
|
interface nsIAccessible;
|
||||||
interface nsIAccessNode;
|
|
||||||
interface nsIDOMDocument;
|
interface nsIDOMDocument;
|
||||||
interface nsIDOMNode;
|
interface nsIDOMNode;
|
||||||
interface nsIDOMWindow;
|
interface nsIDOMWindow;
|
||||||
@ -50,10 +49,9 @@ interface nsIDOMWindow;
|
|||||||
* When accessibility is turned on in Gecko,
|
* When accessibility is turned on in Gecko,
|
||||||
* there is an nsIAccessibleDocument for each document
|
* there is an nsIAccessibleDocument for each document
|
||||||
* whether it is XUL, HTML or whatever.
|
* whether it is XUL, HTML or whatever.
|
||||||
* You can QueryInterface to nsIAccessibleDocument from
|
* You can QueryInterface to nsIAccessibleDocument from the nsIAccessible for
|
||||||
* the nsIAccessible or nsIAccessNode for the root node
|
* the root node of a document. You can also get one from
|
||||||
* of a document. You can also get one from
|
* nsIAccessible::GetAccessibleDocument() or
|
||||||
* nsIAccessNode::GetAccessibleDocument() or
|
|
||||||
* nsIAccessibleEvent::GetAccessibleDocument()
|
* nsIAccessibleEvent::GetAccessibleDocument()
|
||||||
*/
|
*/
|
||||||
[scriptable, uuid(451242bd-8a0c-4198-ae88-c053609a4e5d)]
|
[scriptable, uuid(451242bd-8a0c-4198-ae88-c053609a4e5d)]
|
||||||
|
@ -43,15 +43,12 @@ interface nsIAccessible;
|
|||||||
interface nsIWeakReference;
|
interface nsIWeakReference;
|
||||||
interface nsIPresShell;
|
interface nsIPresShell;
|
||||||
interface nsIDOMWindow;
|
interface nsIDOMWindow;
|
||||||
interface nsIAccessNode;
|
|
||||||
interface nsIDOMDOMStringList;
|
interface nsIDOMDOMStringList;
|
||||||
interface nsIAccessiblePivot;
|
interface nsIAccessiblePivot;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An interface for in-process accessibility clients
|
* An interface for in-process accessibility clients wishing to get an
|
||||||
* wishing to get an nsIAccessible or nsIAccessNode for
|
* nsIAccessible for a given DOM node. More documentation at:
|
||||||
* a given DOM node.
|
|
||||||
* More documentation at:
|
|
||||||
* http://www.mozilla.org/projects/ui/accessibility
|
* http://www.mozilla.org/projects/ui/accessibility
|
||||||
*/
|
*/
|
||||||
[scriptable, uuid(310ce77d-c92b-4761-82e8-77e1a728e8d4)]
|
[scriptable, uuid(310ce77d-c92b-4761-82e8-77e1a728e8d4)]
|
||||||
|
@ -79,7 +79,7 @@ getDocumentLocaleCB(AtkDocument *aDocument)
|
|||||||
return nsnull;
|
return nsnull;
|
||||||
|
|
||||||
nsAutoString locale;
|
nsAutoString locale;
|
||||||
accWrap->GetLanguage(locale);
|
accWrap->Language(locale);
|
||||||
return locale.IsEmpty() ? nsnull : nsAccessibleWrap::ReturnString(locale);
|
return locale.IsEmpty() ? nsnull : nsAccessibleWrap::ReturnString(locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,6 @@
|
|||||||
#define nsAccUtils_h_
|
#define nsAccUtils_h_
|
||||||
|
|
||||||
#include "nsIAccessible.h"
|
#include "nsIAccessible.h"
|
||||||
#include "nsIAccessNode.h"
|
|
||||||
#include "nsIAccessibleRole.h"
|
#include "nsIAccessibleRole.h"
|
||||||
#include "nsIAccessibleText.h"
|
#include "nsIAccessibleText.h"
|
||||||
#include "nsIAccessibleTable.h"
|
#include "nsIAccessibleTable.h"
|
||||||
|
@ -36,37 +36,27 @@
|
|||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** 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 "nsAccessibilityService.h"
|
||||||
|
#include "nsAccUtils.h"
|
||||||
#include "nsApplicationAccessibleWrap.h"
|
#include "nsApplicationAccessibleWrap.h"
|
||||||
|
#include "nsCoreUtils.h"
|
||||||
|
#include "nsRootAccessible.h"
|
||||||
|
|
||||||
#include "nsIDocShell.h"
|
#include "nsIDocShell.h"
|
||||||
#include "nsIDocShellTreeItem.h"
|
#include "nsIDocShellTreeItem.h"
|
||||||
#include "nsIDocument.h"
|
|
||||||
#include "nsIDOMCSSPrimitiveValue.h"
|
|
||||||
#include "nsIDOMDocument.h"
|
|
||||||
#include "nsIDOMElement.h"
|
|
||||||
#include "nsIDOMHTMLElement.h"
|
|
||||||
#include "nsIDOMWindow.h"
|
#include "nsIDOMWindow.h"
|
||||||
#include "nsPIDOMWindow.h"
|
|
||||||
#include "nsIInterfaceRequestorUtils.h"
|
|
||||||
#include "nsIFrame.h"
|
#include "nsIFrame.h"
|
||||||
#include "nsIPrefService.h"
|
#include "nsIInterfaceRequestorUtils.h"
|
||||||
|
#include "nsIObserverService.h"
|
||||||
#include "nsIPrefBranch.h"
|
#include "nsIPrefBranch.h"
|
||||||
#include "nsPresContext.h"
|
#include "nsIPrefService.h"
|
||||||
#include "nsIPresShell.h"
|
#include "nsIPresShell.h"
|
||||||
#include "nsIServiceManager.h"
|
#include "nsIServiceManager.h"
|
||||||
#include "nsIStringBundle.h"
|
#include "nsIStringBundle.h"
|
||||||
#include "nsRootAccessible.h"
|
|
||||||
#include "nsFocusManager.h"
|
#include "nsFocusManager.h"
|
||||||
#include "nsIObserverService.h"
|
#include "nsPresContext.h"
|
||||||
#include "mozilla/Services.h"
|
#include "mozilla/Services.h"
|
||||||
|
|
||||||
/* For documentation of the accessibility architecture,
|
/* For documentation of the accessibility architecture,
|
||||||
@ -89,9 +79,7 @@ nsApplicationAccessible *nsAccessNode::gApplicationAccessible = nsnull;
|
|||||||
NS_IMPL_CYCLE_COLLECTION_1(nsAccessNode, mContent)
|
NS_IMPL_CYCLE_COLLECTION_1(nsAccessNode, mContent)
|
||||||
|
|
||||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsAccessNode)
|
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsAccessNode)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsIAccessNode)
|
|
||||||
NS_INTERFACE_MAP_ENTRY(nsAccessNode)
|
NS_INTERFACE_MAP_ENTRY(nsAccessNode)
|
||||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIAccessNode)
|
|
||||||
NS_INTERFACE_MAP_END
|
NS_INTERFACE_MAP_END
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsAccessNode)
|
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsAccessNode)
|
||||||
@ -287,126 +275,28 @@ nsAccessNode::IsPrimaryForNode() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// nsIAccessNode
|
void
|
||||||
|
|
||||||
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
|
|
||||||
nsAccessNode::ScrollTo(PRUint32 aScrollType)
|
nsAccessNode::ScrollTo(PRUint32 aScrollType)
|
||||||
{
|
{
|
||||||
if (IsDefunct())
|
if (IsDefunct())
|
||||||
return NS_ERROR_FAILURE;
|
return;
|
||||||
|
|
||||||
nsCOMPtr<nsIPresShell> shell(GetPresShell());
|
nsCOMPtr<nsIPresShell> shell(GetPresShell());
|
||||||
NS_ENSURE_TRUE(shell, NS_ERROR_FAILURE);
|
if (!shell)
|
||||||
|
return;
|
||||||
|
|
||||||
nsIFrame *frame = GetFrame();
|
nsIFrame *frame = GetFrame();
|
||||||
NS_ENSURE_TRUE(frame, NS_ERROR_FAILURE);
|
if (!frame)
|
||||||
|
return;
|
||||||
|
|
||||||
nsCOMPtr<nsIContent> content = frame->GetContent();
|
nsIContent* content = frame->GetContent();
|
||||||
NS_ENSURE_TRUE(content, NS_ERROR_FAILURE);
|
if (!content)
|
||||||
|
return;
|
||||||
|
|
||||||
PRInt16 vPercent, hPercent;
|
PRInt16 vPercent, hPercent;
|
||||||
nsCoreUtils::ConvertScrollTypeToPercents(aScrollType, &vPercent, &hPercent);
|
nsCoreUtils::ConvertScrollTypeToPercents(aScrollType, &vPercent, &hPercent);
|
||||||
return shell->ScrollContentIntoView(content, vPercent, hPercent,
|
shell->ScrollContentIntoView(content, vPercent, hPercent,
|
||||||
nsIPresShell::SCROLL_OVERFLOW_HIDDEN);
|
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// nsAccessNode public
|
// nsAccessNode public
|
||||||
@ -443,20 +333,18 @@ nsAccessNode::GetCurrentFocus()
|
|||||||
return focusedNode;
|
return focusedNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
void
|
||||||
nsAccessNode::GetLanguage(nsAString& aLanguage)
|
nsAccessNode::Language(nsAString& aLanguage)
|
||||||
{
|
{
|
||||||
aLanguage.Truncate();
|
aLanguage.Truncate();
|
||||||
|
|
||||||
if (IsDefunct())
|
if (IsDefunct())
|
||||||
return NS_ERROR_FAILURE;
|
return;
|
||||||
|
|
||||||
nsCoreUtils::GetLanguageFor(mContent, nsnull, aLanguage);
|
nsCoreUtils::GetLanguageFor(mContent, nsnull, aLanguage);
|
||||||
|
|
||||||
if (aLanguage.IsEmpty()) { // Nothing found, so use document's language
|
if (aLanguage.IsEmpty()) { // Nothing found, so use document's language
|
||||||
mContent->OwnerDoc()->GetHeaderData(nsGkAtoms::headerContentLanguage,
|
mContent->OwnerDoc()->GetHeaderData(nsGkAtoms::headerContentLanguage,
|
||||||
aLanguage);
|
aLanguage);
|
||||||
}
|
}
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,6 @@
|
|||||||
#ifndef _nsAccessNode_H_
|
#ifndef _nsAccessNode_H_
|
||||||
#define _nsAccessNode_H_
|
#define _nsAccessNode_H_
|
||||||
|
|
||||||
#include "nsIAccessNode.h"
|
|
||||||
#include "nsIAccessibleTypes.h"
|
#include "nsIAccessibleTypes.h"
|
||||||
|
|
||||||
#include "a11yGeneric.h"
|
#include "a11yGeneric.h"
|
||||||
@ -68,15 +67,7 @@ class nsIDocShellTreeItem;
|
|||||||
#define ACCESSIBLE_BUNDLE_URL "chrome://global-platform/locale/accessible.properties"
|
#define ACCESSIBLE_BUNDLE_URL "chrome://global-platform/locale/accessible.properties"
|
||||||
#define PLATFORM_KEYS_BUNDLE_URL "chrome://global-platform/locale/platformKeys.properties"
|
#define PLATFORM_KEYS_BUNDLE_URL "chrome://global-platform/locale/platformKeys.properties"
|
||||||
|
|
||||||
#define NS_ACCESSNODE_IMPL_CID \
|
class nsAccessNode: public nsISupports
|
||||||
{ /* 2b07e3d7-00b3-4379-aa0b-ea22e2c8ffda */ \
|
|
||||||
0x2b07e3d7, \
|
|
||||||
0x00b3, \
|
|
||||||
0x4379, \
|
|
||||||
{ 0xaa, 0x0b, 0xea, 0x22, 0xe2, 0xc8, 0xff, 0xda } \
|
|
||||||
}
|
|
||||||
|
|
||||||
class nsAccessNode: public nsIAccessNode
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -84,10 +75,7 @@ public:
|
|||||||
virtual ~nsAccessNode();
|
virtual ~nsAccessNode();
|
||||||
|
|
||||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||||
NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsAccessNode, nsIAccessNode)
|
NS_DECL_CYCLE_COLLECTION_CLASS(nsAccessNode)
|
||||||
|
|
||||||
NS_DECL_NSIACCESSNODE
|
|
||||||
NS_DECLARE_STATIC_IID_ACCESSOR(NS_ACCESSNODE_IMPL_CID)
|
|
||||||
|
|
||||||
static void InitXPAccessibility();
|
static void InitXPAccessibility();
|
||||||
static void ShutdownXPAccessibility();
|
static void ShutdownXPAccessibility();
|
||||||
@ -134,18 +122,6 @@ public:
|
|||||||
* Return frame for the given access node object.
|
* Return frame for the given access node object.
|
||||||
*/
|
*/
|
||||||
virtual nsIFrame* GetFrame() const;
|
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.
|
* Return DOM node associated with the accessible.
|
||||||
*/
|
*/
|
||||||
@ -195,6 +171,18 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual bool IsPrimaryForNode() const;
|
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:
|
protected:
|
||||||
nsPresContext* GetPresContext();
|
nsPresContext* GetPresContext();
|
||||||
|
|
||||||
@ -221,8 +209,5 @@ private:
|
|||||||
static nsApplicationAccessible *gApplicationAccessible;
|
static nsApplicationAccessible *gApplicationAccessible;
|
||||||
};
|
};
|
||||||
|
|
||||||
NS_DEFINE_STATIC_IID_ACCESSOR(nsAccessNode,
|
|
||||||
NS_ACCESSNODE_IMPL_CID)
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -52,11 +52,14 @@
|
|||||||
#include "nsAccessibilityService.h"
|
#include "nsAccessibilityService.h"
|
||||||
#include "nsAccTreeWalker.h"
|
#include "nsAccTreeWalker.h"
|
||||||
#include "nsIAccessibleRelation.h"
|
#include "nsIAccessibleRelation.h"
|
||||||
|
#include "nsRootAccessible.h"
|
||||||
#include "nsTextEquivUtils.h"
|
#include "nsTextEquivUtils.h"
|
||||||
#include "Relation.h"
|
#include "Relation.h"
|
||||||
#include "Role.h"
|
#include "Role.h"
|
||||||
#include "States.h"
|
#include "States.h"
|
||||||
|
|
||||||
|
#include "nsIDOMCSSValue.h"
|
||||||
|
#include "nsIDOMCSSPrimitiveValue.h"
|
||||||
#include "nsIDOMElement.h"
|
#include "nsIDOMElement.h"
|
||||||
#include "nsIDOMDocument.h"
|
#include "nsIDOMDocument.h"
|
||||||
#include "nsIDOMDocumentXBL.h"
|
#include "nsIDOMDocumentXBL.h"
|
||||||
@ -229,6 +232,92 @@ nsAccessible::SetRoleMapEntry(nsRoleMapEntry* aRoleMapEntry)
|
|||||||
mRoleMapEntry = 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
|
NS_IMETHODIMP
|
||||||
nsAccessible::GetName(nsAString& aName)
|
nsAccessible::GetName(nsAString& aName)
|
||||||
{
|
{
|
||||||
@ -2200,6 +2289,32 @@ nsAccessible::DispatchClickEvent(nsIContent *aContent, PRUint32 aActionIndex)
|
|||||||
nsCoreUtils::DispatchMouseEvent(NS_MOUSE_BUTTON_UP, presShell, aContent);
|
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
|
// nsIAccessibleSelectable
|
||||||
NS_IMETHODIMP nsAccessible::GetSelectedChildren(nsIArray **aSelectedAccessibles)
|
NS_IMETHODIMP nsAccessible::GetSelectedChildren(nsIArray **aSelectedAccessibles)
|
||||||
{
|
{
|
||||||
|
@ -129,6 +129,17 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual void Description(nsString& aDescription);
|
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.
|
* Returns the accessible name specified by ARIA.
|
||||||
*/
|
*/
|
||||||
|
@ -421,7 +421,7 @@ nsApplicationAccessible::GetSiblingAtOffset(PRInt32 aOffset,
|
|||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// nsIAccessNode and nsAccessNode
|
// nsIAccessible
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsApplicationAccessible::GetDOMNode(nsIDOMNode **aDOMNode)
|
nsApplicationAccessible::GetDOMNode(nsIDOMNode **aDOMNode)
|
||||||
|
@ -69,7 +69,7 @@ public:
|
|||||||
// nsISupports
|
// nsISupports
|
||||||
NS_DECL_ISUPPORTS_INHERITED
|
NS_DECL_ISUPPORTS_INHERITED
|
||||||
|
|
||||||
// nsIAccessNode
|
// nsIAccessible
|
||||||
NS_SCRIPTABLE NS_IMETHOD GetDOMNode(nsIDOMNode** aDOMNode);
|
NS_SCRIPTABLE NS_IMETHOD GetDOMNode(nsIDOMNode** aDOMNode);
|
||||||
NS_SCRIPTABLE NS_IMETHOD GetDocument(nsIAccessibleDocument** aDocument);
|
NS_SCRIPTABLE NS_IMETHOD GetDocument(nsIAccessibleDocument** aDocument);
|
||||||
NS_SCRIPTABLE NS_IMETHOD GetRootDocument(nsIAccessibleDocument** aRootDocument);
|
NS_SCRIPTABLE NS_IMETHOD GetRootDocument(nsIAccessibleDocument** aRootDocument);
|
||||||
@ -83,8 +83,6 @@ public:
|
|||||||
const nsAString& aPropertyName,
|
const nsAString& aPropertyName,
|
||||||
nsIDOMCSSPrimitiveValue** aValue NS_OUTPARAM);
|
nsIDOMCSSPrimitiveValue** aValue NS_OUTPARAM);
|
||||||
NS_SCRIPTABLE NS_IMETHOD GetLanguage(nsAString& aLanguage);
|
NS_SCRIPTABLE NS_IMETHOD GetLanguage(nsAString& aLanguage);
|
||||||
|
|
||||||
// nsIAccessible
|
|
||||||
NS_IMETHOD GetParent(nsIAccessible **aParent);
|
NS_IMETHOD GetParent(nsIAccessible **aParent);
|
||||||
NS_IMETHOD GetNextSibling(nsIAccessible **aNextSibling);
|
NS_IMETHOD GetNextSibling(nsIAccessible **aNextSibling);
|
||||||
NS_IMETHOD GetPreviousSibling(nsIAccessible **aPreviousSibling);
|
NS_IMETHOD GetPreviousSibling(nsIAccessible **aPreviousSibling);
|
||||||
|
@ -191,7 +191,7 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Scrolls the given frame to the point, used for implememntation of
|
* 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 aScrollableFrame the scrollable frame
|
||||||
* @param aFrame the frame to scroll
|
* @param aFrame the frame to scroll
|
||||||
|
@ -283,8 +283,8 @@ nsLangTextAttr::nsLangTextAttr(nsHyperTextAccessible *aRootAcc,
|
|||||||
nsIContent *aRootContent, nsIContent *aContent) :
|
nsIContent *aRootContent, nsIContent *aContent) :
|
||||||
nsTextAttr<nsAutoString>(aContent == nsnull), mRootContent(aRootContent)
|
nsTextAttr<nsAutoString>(aContent == nsnull), mRootContent(aRootContent)
|
||||||
{
|
{
|
||||||
nsresult rv = aRootAcc->GetLanguage(mRootNativeValue);
|
aRootAcc->Language(mRootNativeValue);
|
||||||
mIsRootDefined = NS_SUCCEEDED(rv) && !mRootNativeValue.IsEmpty();
|
mIsRootDefined = !mRootNativeValue.IsEmpty();
|
||||||
|
|
||||||
if (aContent)
|
if (aContent)
|
||||||
mIsDefined = GetLang(aContent, mNativeValue);
|
mIsDefined = GetLang(aContent, mNativeValue);
|
||||||
|
@ -1148,7 +1148,7 @@ nsHyperTextAccessible::GetTextAttributes(bool aIncludeDefAttrs,
|
|||||||
// Compute spelling attributes on text accessible only.
|
// Compute spelling attributes on text accessible only.
|
||||||
nsIFrame *offsetFrame = accAtOffset->GetFrame();
|
nsIFrame *offsetFrame = accAtOffset->GetFrame();
|
||||||
if (offsetFrame && offsetFrame->GetType() == nsGkAtoms::textFrame) {
|
if (offsetFrame && offsetFrame->GetType() == nsGkAtoms::textFrame) {
|
||||||
nsCOMPtr<nsIDOMNode> node = accAtOffset->GetDOMNode();
|
nsCOMPtr<nsIDOMNode> node = accAtOffset->DOMNode();
|
||||||
|
|
||||||
PRInt32 nodeOffset = 0;
|
PRInt32 nodeOffset = 0;
|
||||||
nsresult rv = RenderedToContentOffset(offsetFrame, offsetInAcc,
|
nsresult rv = RenderedToContentOffset(offsetFrame, offsetInAcc,
|
||||||
@ -2255,10 +2255,8 @@ nsHyperTextAccessible::GetDOMPointByFrameOffset(nsIFrame *aFrame,
|
|||||||
if (!aFrame) {
|
if (!aFrame) {
|
||||||
// If the given frame is null then set offset after the DOM node of the
|
// If the given frame is null then set offset after the DOM node of the
|
||||||
// given accessible.
|
// given accessible.
|
||||||
nsCOMPtr<nsIAccessNode> accessNode(do_QueryInterface(aAccessible));
|
|
||||||
|
|
||||||
nsCOMPtr<nsIDOMNode> DOMNode;
|
nsCOMPtr<nsIDOMNode> DOMNode;
|
||||||
accessNode->GetDOMNode(getter_AddRefs(DOMNode));
|
aAccessible->GetDOMNode(getter_AddRefs(DOMNode));
|
||||||
nsCOMPtr<nsIContent> content(do_QueryInterface(DOMNode));
|
nsCOMPtr<nsIContent> content(do_QueryInterface(DOMNode));
|
||||||
NS_ENSURE_STATE(content);
|
NS_ENSURE_STATE(content);
|
||||||
|
|
||||||
|
@ -155,7 +155,7 @@ CAccessibleComponent::GetARGBValueFromCSSProperty(const nsAString& aPropName,
|
|||||||
__try {
|
__try {
|
||||||
*aColorValue = 0;
|
*aColorValue = 0;
|
||||||
|
|
||||||
nsCOMPtr<nsIAccessNode> acc(do_QueryObject(this));
|
nsRefPtr<nsAccessible> acc(do_QueryObject(this));
|
||||||
if (!acc)
|
if (!acc)
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
|
@ -396,9 +396,8 @@ __try {
|
|||||||
aScrollTopLeft ? nsIAccessibleScrollType::SCROLL_TYPE_TOP_LEFT :
|
aScrollTopLeft ? nsIAccessibleScrollType::SCROLL_TYPE_TOP_LEFT :
|
||||||
nsIAccessibleScrollType::SCROLL_TYPE_BOTTOM_RIGHT;
|
nsIAccessibleScrollType::SCROLL_TYPE_BOTTOM_RIGHT;
|
||||||
|
|
||||||
nsresult rv = ScrollTo(scrollType);
|
ScrollTo(scrollType);
|
||||||
if (NS_SUCCEEDED(rv))
|
return S_OK;
|
||||||
return S_OK;
|
|
||||||
} __except(FilterA11yExceptions(::GetExceptionCode(), GetExceptionInformation())) { }
|
} __except(FilterA11yExceptions(::GetExceptionCode(), GetExceptionInformation())) { }
|
||||||
|
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
@ -554,10 +553,7 @@ __try {
|
|||||||
*aLanguage = NULL;
|
*aLanguage = NULL;
|
||||||
|
|
||||||
nsAutoString language;
|
nsAutoString language;
|
||||||
if (NS_FAILED(GetLanguage(language))) {
|
Language(language);
|
||||||
return E_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (language.IsEmpty())
|
if (language.IsEmpty())
|
||||||
return S_FALSE;
|
return S_FALSE;
|
||||||
|
|
||||||
@ -575,7 +571,7 @@ nsAccessNodeWrap::get_localInterface(
|
|||||||
/* [out] */ void __RPC_FAR *__RPC_FAR *localInterface)
|
/* [out] */ void __RPC_FAR *__RPC_FAR *localInterface)
|
||||||
{
|
{
|
||||||
__try {
|
__try {
|
||||||
*localInterface = static_cast<nsIAccessNode*>(this);
|
*localInterface = static_cast<nsAccessNode*>(this);
|
||||||
NS_ADDREF_THIS();
|
NS_ADDREF_THIS();
|
||||||
} __except(FilterA11yExceptions(::GetExceptionCode(), GetExceptionInformation())) { }
|
} __except(FilterA11yExceptions(::GetExceptionCode(), GetExceptionInformation())) { }
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
@ -1145,8 +1145,8 @@ STDMETHODIMP
|
|||||||
nsAccessibleWrap::scrollTo(enum IA2ScrollType aScrollType)
|
nsAccessibleWrap::scrollTo(enum IA2ScrollType aScrollType)
|
||||||
{
|
{
|
||||||
__try {
|
__try {
|
||||||
nsresult rv = ScrollTo(aScrollType);
|
nsAccessNode::ScrollTo(aScrollType);
|
||||||
return GetHRESULT(rv);
|
return S_OK;
|
||||||
|
|
||||||
} __except(nsAccessNodeWrap::FilterA11yExceptions(::GetExceptionCode(), GetExceptionInformation())) { }
|
} __except(nsAccessNodeWrap::FilterA11yExceptions(::GetExceptionCode(), GetExceptionInformation())) { }
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
@ -1366,9 +1366,7 @@ __try {
|
|||||||
// Any two-letter subcode is understood to be a [ISO3166] country code.
|
// Any two-letter subcode is understood to be a [ISO3166] country code.
|
||||||
|
|
||||||
nsAutoString lang;
|
nsAutoString lang;
|
||||||
nsresult rv = GetLanguage(lang);
|
Language(lang);
|
||||||
if (NS_FAILED(rv))
|
|
||||||
return GetHRESULT(rv);
|
|
||||||
|
|
||||||
// If primary code consists from two letters then expose it as language.
|
// If primary code consists from two letters then expose it as language.
|
||||||
PRInt32 offset = lang.FindChar('-', 0);
|
PRInt32 offset = lang.FindChar('-', 0);
|
||||||
|
@ -662,17 +662,10 @@ nsXULToolbarButtonAccessible::GetPositionAndSizeInternal(PRInt32 *aPosInSet,
|
|||||||
bool
|
bool
|
||||||
nsXULToolbarButtonAccessible::IsSeparator(nsAccessible *aAccessible)
|
nsXULToolbarButtonAccessible::IsSeparator(nsAccessible *aAccessible)
|
||||||
{
|
{
|
||||||
nsCOMPtr<nsIDOMNode> domNode;
|
nsIContent* content = aAccessible->GetContent();
|
||||||
aAccessible->GetDOMNode(getter_AddRefs(domNode));
|
return content && ((content->Tag() == nsGkAtoms::toolbarseparator) ||
|
||||||
nsCOMPtr<nsIContent> contentDomNode(do_QueryInterface(domNode));
|
(content->Tag() == nsGkAtoms::toolbarspacer) ||
|
||||||
|
(content->Tag() == nsGkAtoms::toolbarspring)); }
|
||||||
if (!contentDomNode)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return (contentDomNode->Tag() == nsGkAtoms::toolbarseparator) ||
|
|
||||||
(contentDomNode->Tag() == nsGkAtoms::toolbarspacer) ||
|
|
||||||
(contentDomNode->Tag() == nsGkAtoms::toolbarspring);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -153,9 +153,9 @@ nsXULTabAccessible::RelationByType(PRUint32 aType)
|
|||||||
if (!tabsElm)
|
if (!tabsElm)
|
||||||
return rel;
|
return rel;
|
||||||
|
|
||||||
nsCOMPtr<nsIDOMNode> DOMNode(GetDOMNode());
|
nsCOMPtr<nsIDOMNode> domNode(DOMNode());
|
||||||
nsCOMPtr<nsIDOMNode> tabpanelNode;
|
nsCOMPtr<nsIDOMNode> tabpanelNode;
|
||||||
tabsElm->GetRelatedElement(DOMNode, getter_AddRefs(tabpanelNode));
|
tabsElm->GetRelatedElement(domNode, getter_AddRefs(tabpanelNode));
|
||||||
if (!tabpanelNode)
|
if (!tabpanelNode)
|
||||||
return rel;
|
return rel;
|
||||||
|
|
||||||
@ -255,9 +255,9 @@ nsXULTabpanelAccessible::RelationByType(PRUint32 aType)
|
|||||||
if (!tabpanelsElm)
|
if (!tabpanelsElm)
|
||||||
return rel;
|
return rel;
|
||||||
|
|
||||||
nsCOMPtr<nsIDOMNode> DOMNode(GetDOMNode());
|
nsCOMPtr<nsIDOMNode> domNode(DOMNode());
|
||||||
nsCOMPtr<nsIDOMNode> tabNode;
|
nsCOMPtr<nsIDOMNode> tabNode;
|
||||||
tabpanelsElm->GetRelatedElement(DOMNode, getter_AddRefs(tabNode));
|
tabpanelsElm->GetRelatedElement(domNode, getter_AddRefs(tabNode));
|
||||||
if (!tabNode)
|
if (!tabNode)
|
||||||
return rel;
|
return rel;
|
||||||
|
|
||||||
|
@ -18,7 +18,6 @@ const nsIAccessibleCoordinateType = Components.interfaces.nsIAccessibleCoordinat
|
|||||||
|
|
||||||
const nsIAccessibleRelation = Components.interfaces.nsIAccessibleRelation;
|
const nsIAccessibleRelation = Components.interfaces.nsIAccessibleRelation;
|
||||||
|
|
||||||
const nsIAccessNode = Components.interfaces.nsIAccessNode;
|
|
||||||
const nsIAccessible = Components.interfaces.nsIAccessible;
|
const nsIAccessible = Components.interfaces.nsIAccessible;
|
||||||
|
|
||||||
const nsIAccessibleDocument = Components.interfaces.nsIAccessibleDocument;
|
const nsIAccessibleDocument = Components.interfaces.nsIAccessibleDocument;
|
||||||
@ -121,10 +120,8 @@ function getNode(aAccOrNodeOrID)
|
|||||||
if (aAccOrNodeOrID instanceof nsIDOMNode)
|
if (aAccOrNodeOrID instanceof nsIDOMNode)
|
||||||
return aAccOrNodeOrID;
|
return aAccOrNodeOrID;
|
||||||
|
|
||||||
if (aAccOrNodeOrID instanceof nsIAccessible) {
|
if (aAccOrNodeOrID instanceof nsIAccessible)
|
||||||
aAccOrNodeOrID.QueryInterface(nsIAccessNode);
|
|
||||||
return aAccOrNodeOrID.DOMNode;
|
return aAccOrNodeOrID.DOMNode;
|
||||||
}
|
|
||||||
|
|
||||||
node = document.getElementById(aAccOrNodeOrID);
|
node = document.getElementById(aAccOrNodeOrID);
|
||||||
if (!node) {
|
if (!node) {
|
||||||
@ -167,7 +164,6 @@ function getAccessible(aAccOrElmOrID, aInterfaces, aElmObj, aDoNotFailIf)
|
|||||||
var elm = null;
|
var elm = null;
|
||||||
|
|
||||||
if (aAccOrElmOrID instanceof nsIAccessible) {
|
if (aAccOrElmOrID instanceof nsIAccessible) {
|
||||||
aAccOrElmOrID.QueryInterface(nsIAccessNode);
|
|
||||||
elm = aAccOrElmOrID.DOMNode;
|
elm = aAccOrElmOrID.DOMNode;
|
||||||
|
|
||||||
} else if (aAccOrElmOrID instanceof nsIDOMNode) {
|
} else if (aAccOrElmOrID instanceof nsIDOMNode) {
|
||||||
@ -199,8 +195,6 @@ function getAccessible(aAccOrElmOrID, aInterfaces, aElmObj, aDoNotFailIf)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
acc.QueryInterface(nsIAccessNode);
|
|
||||||
|
|
||||||
if (!aInterfaces)
|
if (!aInterfaces)
|
||||||
return acc;
|
return acc;
|
||||||
|
|
||||||
@ -257,8 +251,7 @@ function getContainerAccessible(aAccOrElmOrID)
|
|||||||
*/
|
*/
|
||||||
function getRootAccessible(aAccOrElmOrID)
|
function getRootAccessible(aAccOrElmOrID)
|
||||||
{
|
{
|
||||||
var acc = getAccessible(aAccOrElmOrID ? aAccOrElmOrID : document,
|
var acc = getAccessible(aAccOrElmOrID ? aAccOrElmOrID : document);
|
||||||
[nsIAccessNode]);
|
|
||||||
return acc ? acc.rootDocument.QueryInterface(nsIAccessible) : null;
|
return acc ? acc.rootDocument.QueryInterface(nsIAccessible) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -267,11 +260,10 @@ function getRootAccessible(aAccOrElmOrID)
|
|||||||
*/
|
*/
|
||||||
function getTabDocAccessible(aAccOrElmOrID)
|
function getTabDocAccessible(aAccOrElmOrID)
|
||||||
{
|
{
|
||||||
var acc = getAccessible(aAccOrElmOrID ? aAccOrElmOrID : document,
|
var acc = getAccessible(aAccOrElmOrID ? aAccOrElmOrID : document);
|
||||||
[nsIAccessNode]);
|
|
||||||
|
|
||||||
var docAcc = acc.document.QueryInterface(nsIAccessible);
|
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.
|
// Test is running is stand-alone mode.
|
||||||
if (acc.rootDocument == containerDocAcc)
|
if (acc.rootDocument == containerDocAcc)
|
||||||
@ -584,7 +576,7 @@ function getTextFromClipboard()
|
|||||||
function prettyName(aIdentifier)
|
function prettyName(aIdentifier)
|
||||||
{
|
{
|
||||||
if (aIdentifier instanceof nsIAccessible) {
|
if (aIdentifier instanceof nsIAccessible) {
|
||||||
var acc = getAccessible(aIdentifier, [nsIAccessNode]);
|
var acc = getAccessible(aIdentifier);
|
||||||
var msg = "[" + getNodePrettyName(acc.DOMNode);
|
var msg = "[" + getNodePrettyName(acc.DOMNode);
|
||||||
try {
|
try {
|
||||||
msg += ", role: " + roleToString(acc.role);
|
msg += ", role: " + roleToString(acc.role);
|
||||||
|
@ -91,7 +91,7 @@
|
|||||||
var item = menu.getChildAt(idx);
|
var item = menu.getChildAt(idx);
|
||||||
|
|
||||||
if (hasState(item, STATE_FOCUSED))
|
if (hasState(item, STATE_FOCUSED))
|
||||||
return getAccessible(item, [nsIAccessNode]);
|
return getAccessible(item);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@
|
|||||||
{
|
{
|
||||||
this.containerNode = getNode(aContainerID);
|
this.containerNode = getNode(aContainerID);
|
||||||
this.container = getAccessible(this.containerNode, nsIAccessibleHyperText);
|
this.container = getAccessible(this.containerNode, nsIAccessibleHyperText);
|
||||||
this.text = this.container.firstChild.QueryInterface(nsIAccessNode);
|
this.text = this.container.firstChild;
|
||||||
this.textNode = this.text.DOMNode;
|
this.textNode = this.text.DOMNode;
|
||||||
this.textLen = this.textNode.data.length;
|
this.textLen = this.textNode.data.length;
|
||||||
|
|
||||||
|
@ -75,7 +75,6 @@ function virtualCursorChangedChecker(aDocAcc, aIdOrNameOrAcc, aTextOffsets)
|
|||||||
this.check = function virtualCursorChangedChecker_check(aEvent)
|
this.check = function virtualCursorChangedChecker_check(aEvent)
|
||||||
{
|
{
|
||||||
var position = aDocAcc.virtualCursor.position;
|
var position = aDocAcc.virtualCursor.position;
|
||||||
position.QueryInterface(nsIAccessNode);
|
|
||||||
|
|
||||||
var idMatches = position.DOMNode.id == aIdOrNameOrAcc;
|
var idMatches = position.DOMNode.id == aIdOrNameOrAcc;
|
||||||
var nameMatches = position.name == aIdOrNameOrAcc;
|
var nameMatches = position.name == aIdOrNameOrAcc;
|
||||||
@ -214,4 +213,4 @@ function dumpTraversalSequence(aPivot, aRule)
|
|||||||
} while (aPivot.moveNext(aRule))
|
} while (aPivot.moveNext(aRule))
|
||||||
}
|
}
|
||||||
SimpleTest.info("\n[" + sequence.join(", ") + "]\n");
|
SimpleTest.info("\n[" + sequence.join(", ") + "]\n");
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
function doTest()
|
function doTest()
|
||||||
{
|
{
|
||||||
var elmObj = {};
|
var elmObj = {};
|
||||||
var acc = getAccessible("span", [nsIAccessNode], elmObj);
|
var acc = getAccessible("span", null, elmObj);
|
||||||
computedStyle = document.defaultView.getComputedStyle(elmObj.value, "");
|
computedStyle = document.defaultView.getComputedStyle(elmObj.value, "");
|
||||||
|
|
||||||
// html:span element
|
// html:span element
|
||||||
@ -23,7 +23,7 @@
|
|||||||
"Wrong color for element with ID 'span'");
|
"Wrong color for element with ID 'span'");
|
||||||
|
|
||||||
// text child of html:span element
|
// text child of html:span element
|
||||||
acc = getAccessible(acc.firstChild, [nsIAccessNode]);
|
acc = getAccessible(acc.firstChild);
|
||||||
is(acc.getComputedStyleValue("", "color"), computedStyle.color,
|
is(acc.getComputedStyleValue("", "color"), computedStyle.color,
|
||||||
"Wrong color for text child of element with ID 'span'");
|
"Wrong color for text child of element with ID 'span'");
|
||||||
|
|
||||||
|
@ -64,8 +64,8 @@
|
|||||||
this.preinvoke = function rootContentRemoved_preinvoke()
|
this.preinvoke = function rootContentRemoved_preinvoke()
|
||||||
{
|
{
|
||||||
// Set up target for hide event before we invoke.
|
// Set up target for hide event before we invoke.
|
||||||
var text = getAccessible(getAccessible(getDocNode(aID)).firstChild,
|
var text =
|
||||||
[nsIAccessNode]).DOMNode;
|
getAccessible(getAccessible(getDocNode(aID)).firstChild).DOMNode;
|
||||||
this.eventSeq[0].target = text;
|
this.eventSeq[0].target = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -413,6 +413,10 @@ pref("dom.sms.whitelist", "file://,http://localhost:6666");
|
|||||||
// Ignore X-Frame-Options headers.
|
// Ignore X-Frame-Options headers.
|
||||||
pref("b2g.ignoreXFrameOptions", true);
|
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
|
// "Preview" landing of bug 710563, which is bogged down in analysis
|
||||||
// of talos regression. This is a needed change for higher-framerate
|
// of talos regression. This is a needed change for higher-framerate
|
||||||
// CSS animations, and incidentally works around an apparent bug in
|
// CSS animations, and incidentally works around an apparent bug in
|
||||||
|
@ -79,9 +79,10 @@ function startupHttpd(baseDir, port) {
|
|||||||
// FIXME Bug 707625
|
// FIXME Bug 707625
|
||||||
// until we have a proper security model, add some rights to
|
// until we have a proper security model, add some rights to
|
||||||
// the pre-installed web applications
|
// the pre-installed web applications
|
||||||
|
// XXX never grant 'content-camera' to non-gaia apps
|
||||||
function addPermissions(urls) {
|
function addPermissions(urls) {
|
||||||
let permissions = [
|
let permissions = [
|
||||||
'indexedDB', 'indexedDB-unlimited', 'webapps-manage', 'offline-app'
|
'indexedDB', 'indexedDB-unlimited', 'webapps-manage', 'offline-app', 'content-camera'
|
||||||
];
|
];
|
||||||
urls.forEach(function(url) {
|
urls.forEach(function(url) {
|
||||||
let uri = Services.io.newURI(url, null, null);
|
let uri = Services.io.newURI(url, null, null);
|
||||||
|
@ -1,2 +1,7 @@
|
|||||||
# Scrollbars
|
# Scrollbars
|
||||||
category agent-style-sheets browser-content-stylesheet chrome://browser/content/content.css
|
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
|
MODULE = B2GComponents
|
||||||
XPIDL_MODULE = B2GComponents
|
XPIDL_MODULE = B2GComponents
|
||||||
|
|
||||||
|
XPIDLSRCS = \
|
||||||
|
b2g.idl \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
EXTRA_PP_COMPONENTS = \
|
EXTRA_PP_COMPONENTS = \
|
||||||
B2GComponents.manifest \
|
B2GComponents.manifest \
|
||||||
|
CameraContent.js \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
include $(topsrcdir)/config/rules.mk
|
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@/chrome/chrome.manifest
|
||||||
@BINPATH@/components/B2GComponents.manifest
|
@BINPATH@/components/B2GComponents.manifest
|
||||||
@BINPATH@/components/B2GComponents.xpt
|
@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 {
|
.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%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -293,7 +293,7 @@
|
|||||||
|
|
||||||
.jsterm-input-node {
|
.jsterm-input-node {
|
||||||
width: 98%;
|
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,
|
:-moz-any(.jsterm-input-node,
|
||||||
|
@ -87,6 +87,7 @@ browser.jar:
|
|||||||
skin/classic/browser/tabview/tabview.css (tabview/tabview.css)
|
skin/classic/browser/tabview/tabview.css (tabview/tabview.css)
|
||||||
skin/classic/browser/devtools/common.css (devtools/common.css)
|
skin/classic/browser/devtools/common.css (devtools/common.css)
|
||||||
skin/classic/browser/devtools/arrows.png (devtools/arrows.png)
|
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/goto-mdn.png (devtools/goto-mdn.png)
|
||||||
skin/classic/browser/devtools/csshtmltree.css (devtools/csshtmltree.css)
|
skin/classic/browser/devtools/csshtmltree.css (devtools/csshtmltree.css)
|
||||||
skin/classic/browser/devtools/webconsole.css (devtools/webconsole.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 {
|
.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%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -361,7 +361,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.jsterm-input-node {
|
.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,
|
:-moz-any(.jsterm-input-node,
|
||||||
|
@ -126,6 +126,7 @@ browser.jar:
|
|||||||
skin/classic/browser/tabview/tabview.css (tabview/tabview.css)
|
skin/classic/browser/tabview/tabview.css (tabview/tabview.css)
|
||||||
* skin/classic/browser/devtools/common.css (devtools/common.css)
|
* skin/classic/browser/devtools/common.css (devtools/common.css)
|
||||||
skin/classic/browser/devtools/arrows.png (devtools/arrows.png)
|
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/goto-mdn.png (devtools/goto-mdn.png)
|
||||||
skin/classic/browser/devtools/csshtmltree.css (devtools/csshtmltree.css)
|
skin/classic/browser/devtools/csshtmltree.css (devtools/csshtmltree.css)
|
||||||
skin/classic/browser/devtools/gcli.css (devtools/gcli.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 {
|
.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%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -309,7 +309,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.jsterm-input-node {
|
.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,
|
:-moz-any(.jsterm-input-node,
|
||||||
|
@ -110,6 +110,7 @@ browser.jar:
|
|||||||
skin/classic/browser/tabview/tabview.css (tabview/tabview.css)
|
skin/classic/browser/tabview/tabview.css (tabview/tabview.css)
|
||||||
skin/classic/browser/devtools/common.css (devtools/common.css)
|
skin/classic/browser/devtools/common.css (devtools/common.css)
|
||||||
skin/classic/browser/devtools/arrows.png (devtools/arrows.png)
|
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/goto-mdn.png (devtools/goto-mdn.png)
|
||||||
skin/classic/browser/devtools/csshtmltree.css (devtools/csshtmltree.css)
|
skin/classic/browser/devtools/csshtmltree.css (devtools/csshtmltree.css)
|
||||||
skin/classic/browser/devtools/gcli.css (devtools/gcli.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/tabview/tabview.css (tabview/tabview.css)
|
||||||
skin/classic/aero/browser/devtools/common.css (devtools/common.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/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/goto-mdn.png (devtools/goto-mdn.png)
|
||||||
skin/classic/aero/browser/devtools/csshtmltree.css (devtools/csshtmltree.css)
|
skin/classic/aero/browser/devtools/csshtmltree.css (devtools/csshtmltree.css)
|
||||||
skin/classic/aero/browser/devtools/gcli.css (devtools/gcli.css)
|
skin/classic/aero/browser/devtools/gcli.css (devtools/gcli.css)
|
||||||
|
@ -163,24 +163,37 @@ PYTHON_PATH = %pythonpath main
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# determine debug-related options
|
# determine debug-related options
|
||||||
|
_DEBUG_ASFLAGS :=
|
||||||
_DEBUG_CFLAGS :=
|
_DEBUG_CFLAGS :=
|
||||||
_DEBUG_LDFLAGS :=
|
_DEBUG_LDFLAGS :=
|
||||||
|
|
||||||
ifdef MOZ_DEBUG
|
ifdef MOZ_DEBUG
|
||||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_ENABLE_DEFS) $(MOZ_DEBUG_FLAGS)
|
_DEBUG_CFLAGS += $(MOZ_DEBUG_ENABLE_DEFS)
|
||||||
_DEBUG_LDFLAGS += $(MOZ_DEBUG_LDFLAGS)
|
|
||||||
XULPPFLAGS += $(MOZ_DEBUG_ENABLE_DEFS)
|
XULPPFLAGS += $(MOZ_DEBUG_ENABLE_DEFS)
|
||||||
else
|
else
|
||||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_DISABLE_DEFS)
|
_DEBUG_CFLAGS += $(MOZ_DEBUG_DISABLE_DEFS)
|
||||||
XULPPFLAGS += $(MOZ_DEBUG_DISABLE_DEFS)
|
XULPPFLAGS += $(MOZ_DEBUG_DISABLE_DEFS)
|
||||||
ifdef MOZ_DEBUG_SYMBOLS
|
endif
|
||||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_FLAGS)
|
|
||||||
_DEBUG_LDFLAGS += $(MOZ_DEBUG_LDFLAGS)
|
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
|
endif
|
||||||
|
_DEBUG_CFLAGS += $(MOZ_DEBUG_FLAGS)
|
||||||
|
_DEBUG_LDFLAGS += $(MOZ_DEBUG_LDFLAGS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
MOZALLOC_LIB = $(call EXPAND_LIBNAME_PATH,mozalloc,$(DIST)/lib)
|
MOZALLOC_LIB = $(call EXPAND_LIBNAME_PATH,mozalloc,$(DIST)/lib)
|
||||||
|
|
||||||
|
ASFLAGS += $(_DEBUG_ASFLAGS)
|
||||||
OS_CFLAGS += $(_DEBUG_CFLAGS)
|
OS_CFLAGS += $(_DEBUG_CFLAGS)
|
||||||
OS_CXXFLAGS += $(_DEBUG_CFLAGS)
|
OS_CXXFLAGS += $(_DEBUG_CFLAGS)
|
||||||
OS_LDFLAGS += $(_DEBUG_LDFLAGS)
|
OS_LDFLAGS += $(_DEBUG_LDFLAGS)
|
||||||
@ -198,13 +211,8 @@ else # ! MOZ_DEBUG
|
|||||||
# Used for generating an optimized build with debugging symbols.
|
# Used for generating an optimized build with debugging symbols.
|
||||||
# Used in the Windows nightlies to generate symbols for crash reporting.
|
# Used in the Windows nightlies to generate symbols for crash reporting.
|
||||||
ifdef MOZ_DEBUG_SYMBOLS
|
ifdef MOZ_DEBUG_SYMBOLS
|
||||||
ifeq ($(AS),yasm)
|
OS_CXXFLAGS += -UDEBUG -DNDEBUG
|
||||||
ASFLAGS += -g cv8
|
OS_CFLAGS += -UDEBUG -DNDEBUG
|
||||||
else
|
|
||||||
ASFLAGS += -Zi
|
|
||||||
endif
|
|
||||||
OS_CXXFLAGS += -Zi -UDEBUG -DNDEBUG
|
|
||||||
OS_CFLAGS += -Zi -UDEBUG -DNDEBUG
|
|
||||||
ifdef HAVE_64BIT_OS
|
ifdef HAVE_64BIT_OS
|
||||||
OS_LDFLAGS += -DEBUG -OPT:REF,ICF
|
OS_LDFLAGS += -DEBUG -OPT:REF,ICF
|
||||||
else
|
else
|
||||||
|
@ -3026,6 +3026,11 @@ struct NS_STACK_CLASS nsCanvasBidiProcessorAzure : public nsBidiPresUtils::BidiP
|
|||||||
RefPtr<ScaledFont> scaledFont =
|
RefPtr<ScaledFont> scaledFont =
|
||||||
gfxPlatform::GetPlatform()->GetScaledFontForFont(font);
|
gfxPlatform::GetPlatform()->GetScaledFontForFont(font);
|
||||||
|
|
||||||
|
if (!scaledFont) {
|
||||||
|
// This can occur when something switched DirectWrite off.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
GlyphBuffer buffer;
|
GlyphBuffer buffer;
|
||||||
|
|
||||||
std::vector<Glyph> glyphBuf;
|
std::vector<Glyph> glyphBuf;
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include "nsIHTMLDocument.h"
|
#include "nsIHTMLDocument.h"
|
||||||
#include "nsIDOMEventTarget.h"
|
#include "nsIDOMEventTarget.h"
|
||||||
#include "nsEventStateManager.h"
|
#include "nsEventStateManager.h"
|
||||||
|
#include "nsEventStates.h"
|
||||||
#include "nsGkAtoms.h"
|
#include "nsGkAtoms.h"
|
||||||
#include "nsStyleConsts.h"
|
#include "nsStyleConsts.h"
|
||||||
#include "nsPresContext.h"
|
#include "nsPresContext.h"
|
||||||
@ -1810,6 +1811,8 @@ nsHTMLFormElement::UpdateValidity(bool aElementValidity)
|
|||||||
mControls->mNotInElements[i]->UpdateState(true);
|
mControls->mNotInElements[i]->UpdateState(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UpdateState(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// nsIWebProgressListener
|
// nsIWebProgressListener
|
||||||
@ -2133,6 +2136,19 @@ nsHTMLFormElement::SetValueMissingState(const nsAString& aName, bool aValue)
|
|||||||
mValueMissingRadioGroups.Put(aName, 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
|
// nsFormControlList implementation, this could go away if there were
|
||||||
|
@ -151,6 +151,8 @@ public:
|
|||||||
virtual bool GetValueMissingState(const nsAString& aName) const;
|
virtual bool GetValueMissingState(const nsAString& aName) const;
|
||||||
virtual void SetValueMissingState(const nsAString& aName, bool aValue);
|
virtual void SetValueMissingState(const nsAString& aName, bool aValue);
|
||||||
|
|
||||||
|
virtual nsEventStates IntrinsicState() const;
|
||||||
|
|
||||||
// nsIContent
|
// nsIContent
|
||||||
virtual bool ParseAttribute(PRInt32 aNamespaceID,
|
virtual bool ParseAttribute(PRInt32 aNamespaceID,
|
||||||
nsIAtom* aAttribute,
|
nsIAtom* aAttribute,
|
||||||
|
@ -328,8 +328,8 @@ nsHTMLObjectElement::IsFocusableForTabIndex()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Type() == eType_Plugin || IsEditableRoot() ||
|
return IsEditableRoot() || (Type() == eType_Document &&
|
||||||
(Type() == eType_Document && nsContentUtils::IsSubDocumentTabbable(this));
|
nsContentUtils::IsSubDocumentTabbable(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
@ -341,7 +341,7 @@ nsHTMLObjectElement::IsHTMLFocusable(bool aWithMouse,
|
|||||||
nsIDocument *doc = GetCurrentDoc();
|
nsIDocument *doc = GetCurrentDoc();
|
||||||
if (!doc || doc->HasFlag(NODE_IS_EDITABLE)) {
|
if (!doc || doc->HasFlag(NODE_IS_EDITABLE)) {
|
||||||
if (aTabIndex) {
|
if (aTabIndex) {
|
||||||
GetIntAttr(nsGkAtoms::tabindex, -1, aTabIndex);
|
GetTabIndex(aTabIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
*aIsFocusable = false;
|
*aIsFocusable = false;
|
||||||
@ -356,7 +356,7 @@ nsHTMLObjectElement::IsHTMLFocusable(bool aWithMouse,
|
|||||||
// Has plugin content: let the plugin decide what to do in terms of
|
// Has plugin content: let the plugin decide what to do in terms of
|
||||||
// internal focus from mouse clicks
|
// internal focus from mouse clicks
|
||||||
if (aTabIndex) {
|
if (aTabIndex) {
|
||||||
GetIntAttr(nsGkAtoms::tabindex, 0, aTabIndex);
|
GetTabIndex(aTabIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
*aIsFocusable = true;
|
*aIsFocusable = true;
|
||||||
|
@ -296,6 +296,7 @@ _TEST_FILES = \
|
|||||||
test_ol_attributes_reflection.html \
|
test_ol_attributes_reflection.html \
|
||||||
test_bug651956.html \
|
test_bug651956.html \
|
||||||
test_bug694503.html \
|
test_bug694503.html \
|
||||||
|
test_object_plugin_nav.html \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
_BROWSER_TEST_FILES = \
|
_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(),
|
NS_ASSERTION(BasicManager()->InDrawing(),
|
||||||
"Can only draw in drawing phase");
|
"Can only draw in drawing phase");
|
||||||
|
|
||||||
|
if (!mSurface) {
|
||||||
|
NS_WARNING("No valid surface to draw!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
nsRefPtr<gfxPattern> pat = new gfxPattern(mSurface);
|
nsRefPtr<gfxPattern> pat = new gfxPattern(mSurface);
|
||||||
|
|
||||||
pat->SetFilter(mFilter);
|
pat->SetFilter(mFilter);
|
||||||
|
@ -518,6 +518,11 @@ gfxWindowsPlatform::GetThebesSurfaceForDrawTarget(DrawTarget *aTarget)
|
|||||||
nsRefPtr<gfxASurface> surf = static_cast<gfxASurface*>(surface);
|
nsRefPtr<gfxASurface> surf = static_cast<gfxASurface*>(surface);
|
||||||
return surf.forget();
|
return surf.forget();
|
||||||
} else {
|
} else {
|
||||||
|
if (!GetD2DDevice()) {
|
||||||
|
// We no longer have a D2D device, can't do this.
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
RefPtr<ID3D10Texture2D> texture =
|
RefPtr<ID3D10Texture2D> texture =
|
||||||
static_cast<ID3D10Texture2D*>(aTarget->GetNativeSurface(NATIVE_SURFACE_D3D10_TEXTURE));
|
static_cast<ID3D10Texture2D*>(aTarget->GetNativeSurface(NATIVE_SURFACE_D3D10_TEXTURE));
|
||||||
|
|
||||||
|
@ -163,24 +163,37 @@ PYTHON_PATH = %pythonpath main
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# determine debug-related options
|
# determine debug-related options
|
||||||
|
_DEBUG_ASFLAGS :=
|
||||||
_DEBUG_CFLAGS :=
|
_DEBUG_CFLAGS :=
|
||||||
_DEBUG_LDFLAGS :=
|
_DEBUG_LDFLAGS :=
|
||||||
|
|
||||||
ifdef MOZ_DEBUG
|
ifdef MOZ_DEBUG
|
||||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_ENABLE_DEFS) $(MOZ_DEBUG_FLAGS)
|
_DEBUG_CFLAGS += $(MOZ_DEBUG_ENABLE_DEFS)
|
||||||
_DEBUG_LDFLAGS += $(MOZ_DEBUG_LDFLAGS)
|
|
||||||
XULPPFLAGS += $(MOZ_DEBUG_ENABLE_DEFS)
|
XULPPFLAGS += $(MOZ_DEBUG_ENABLE_DEFS)
|
||||||
else
|
else
|
||||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_DISABLE_DEFS)
|
_DEBUG_CFLAGS += $(MOZ_DEBUG_DISABLE_DEFS)
|
||||||
XULPPFLAGS += $(MOZ_DEBUG_DISABLE_DEFS)
|
XULPPFLAGS += $(MOZ_DEBUG_DISABLE_DEFS)
|
||||||
ifdef MOZ_DEBUG_SYMBOLS
|
endif
|
||||||
_DEBUG_CFLAGS += $(MOZ_DEBUG_FLAGS)
|
|
||||||
_DEBUG_LDFLAGS += $(MOZ_DEBUG_LDFLAGS)
|
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
|
endif
|
||||||
|
_DEBUG_CFLAGS += $(MOZ_DEBUG_FLAGS)
|
||||||
|
_DEBUG_LDFLAGS += $(MOZ_DEBUG_LDFLAGS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
MOZALLOC_LIB = $(call EXPAND_LIBNAME_PATH,mozalloc,$(DIST)/lib)
|
MOZALLOC_LIB = $(call EXPAND_LIBNAME_PATH,mozalloc,$(DIST)/lib)
|
||||||
|
|
||||||
|
ASFLAGS += $(_DEBUG_ASFLAGS)
|
||||||
OS_CFLAGS += $(_DEBUG_CFLAGS)
|
OS_CFLAGS += $(_DEBUG_CFLAGS)
|
||||||
OS_CXXFLAGS += $(_DEBUG_CFLAGS)
|
OS_CXXFLAGS += $(_DEBUG_CFLAGS)
|
||||||
OS_LDFLAGS += $(_DEBUG_LDFLAGS)
|
OS_LDFLAGS += $(_DEBUG_LDFLAGS)
|
||||||
@ -198,13 +211,8 @@ else # ! MOZ_DEBUG
|
|||||||
# Used for generating an optimized build with debugging symbols.
|
# Used for generating an optimized build with debugging symbols.
|
||||||
# Used in the Windows nightlies to generate symbols for crash reporting.
|
# Used in the Windows nightlies to generate symbols for crash reporting.
|
||||||
ifdef MOZ_DEBUG_SYMBOLS
|
ifdef MOZ_DEBUG_SYMBOLS
|
||||||
ifeq ($(AS),yasm)
|
OS_CXXFLAGS += -UDEBUG -DNDEBUG
|
||||||
ASFLAGS += -g cv8
|
OS_CFLAGS += -UDEBUG -DNDEBUG
|
||||||
else
|
|
||||||
ASFLAGS += -Zi
|
|
||||||
endif
|
|
||||||
OS_CXXFLAGS += -Zi -UDEBUG -DNDEBUG
|
|
||||||
OS_CFLAGS += -Zi -UDEBUG -DNDEBUG
|
|
||||||
ifdef HAVE_64BIT_OS
|
ifdef HAVE_64BIT_OS
|
||||||
OS_LDFLAGS += -DEBUG -OPT:REF,ICF
|
OS_LDFLAGS += -DEBUG -OPT:REF,ICF
|
||||||
else
|
else
|
||||||
|
@ -317,6 +317,32 @@ var XPCOMUtils = {
|
|||||||
let i = uri.lastIndexOf("/");
|
let i = uri.lastIndexOf("/");
|
||||||
Components.utils.import(uri.substring(0, i+1) + path, that);
|
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;
|
throw Cr.NS_ERROR_NO_INTERFACE;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ const Ci = Components.interfaces;
|
|||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
//// Tests
|
//// Tests
|
||||||
|
|
||||||
function test_generateQI_string_names()
|
add_test(function test_generateQI_string_names()
|
||||||
{
|
{
|
||||||
var x = {
|
var x = {
|
||||||
QueryInterface: XPCOMUtils.generateQI([
|
QueryInterface: XPCOMUtils.generateQI([
|
||||||
@ -73,10 +73,11 @@ function test_generateQI_string_names()
|
|||||||
x.QueryInterface(Components.interfaces.nsIDOMDocument);
|
x.QueryInterface(Components.interfaces.nsIDOMDocument);
|
||||||
do_throw("QI should not have succeeded!");
|
do_throw("QI should not have succeeded!");
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
}
|
run_next_test();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
function test_generateCI()
|
add_test(function test_generateCI()
|
||||||
{
|
{
|
||||||
const classID = Components.ID("562dae2e-7cff-432b-995b-3d4c03fa2b89");
|
const classID = Components.ID("562dae2e-7cff-432b-995b-3d4c03fa2b89");
|
||||||
const classDescription = "generateCI test component";
|
const classDescription = "generateCI test component";
|
||||||
@ -99,9 +100,10 @@ function test_generateCI()
|
|||||||
} catch(e) {
|
} catch(e) {
|
||||||
do_throw("Classinfo for x should not be missing or broken");
|
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 accessCount = 0;
|
||||||
let obj = {
|
let obj = {
|
||||||
@ -124,10 +126,11 @@ function test_defineLazyGetter()
|
|||||||
// increased.
|
// increased.
|
||||||
do_check_eq(obj.foo, TEST_VALUE);
|
do_check_eq(obj.foo, TEST_VALUE);
|
||||||
do_check_eq(accessCount, 1);
|
do_check_eq(accessCount, 1);
|
||||||
}
|
run_next_test();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
function test_defineLazyServiceGetter()
|
add_test(function test_defineLazyServiceGetter()
|
||||||
{
|
{
|
||||||
let obj = { };
|
let obj = { };
|
||||||
XPCOMUtils.defineLazyServiceGetter(obj, "service",
|
XPCOMUtils.defineLazyServiceGetter(obj, "service",
|
||||||
@ -142,10 +145,11 @@ function test_defineLazyServiceGetter()
|
|||||||
do_check_true(prop in service);
|
do_check_true(prop in service);
|
||||||
for (let prop in service)
|
for (let prop in service)
|
||||||
do_check_true(prop in obj.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 CATEGORY_NAME = "test-cat";
|
||||||
const XULAPPINFO_CONTRACTID = "@mozilla.org/xre/app-info;1";
|
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.");
|
print("Check there are no more or less than expected entries.");
|
||||||
do_check_eq(foundEntriesCount, EXPECTED_ENTRIES.length);
|
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
|
//// Test Runner
|
||||||
|
|
||||||
let tests = [
|
|
||||||
test_generateQI_string_names,
|
|
||||||
test_generateCI,
|
|
||||||
test_defineLazyGetter,
|
|
||||||
test_defineLazyServiceGetter,
|
|
||||||
test_categoryRegistration,
|
|
||||||
];
|
|
||||||
|
|
||||||
function run_test()
|
function run_test()
|
||||||
{
|
{
|
||||||
tests.forEach(function(test) {
|
run_next_test();
|
||||||
print("Running next test: " + test.name);
|
|
||||||
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>
|
<!DOCTYPE>
|
||||||
<html class="reftest-wait">
|
<html class="reftest-wait">
|
||||||
<style>
|
<style>
|
||||||
:invalid {
|
input:invalid {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!DOCTYPE>
|
<!DOCTYPE>
|
||||||
<html class="reftest-wait">
|
<html class="reftest-wait">
|
||||||
<style>
|
<style>
|
||||||
:invalid {
|
input:invalid {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!DOCTYPE>
|
<!DOCTYPE>
|
||||||
<html class="reftest-wait">
|
<html class="reftest-wait">
|
||||||
<style>
|
<style>
|
||||||
:invalid {
|
input:invalid {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -444,7 +444,7 @@ public class AwesomeBar extends Activity implements GeckoEventListener {
|
|||||||
if (mContextMenuSubject == null)
|
if (mContextMenuSubject == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
String url = "";
|
final String url;
|
||||||
byte[] b = null;
|
byte[] b = null;
|
||||||
String title = "";
|
String title = "";
|
||||||
if (mContextMenuSubject instanceof Cursor) {
|
if (mContextMenuSubject instanceof Cursor) {
|
||||||
@ -470,9 +470,20 @@ public class AwesomeBar extends Activity implements GeckoEventListener {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case R.id.remove_bookmark: {
|
case R.id.remove_bookmark: {
|
||||||
ContentResolver resolver = Tabs.getInstance().getContentResolver();
|
GeckoAppShell.getHandler().post(new Runnable() {
|
||||||
BrowserDB.removeBookmark(resolver, url);
|
public void run() {
|
||||||
Toast.makeText(this, R.string.bookmark_removed, Toast.LENGTH_SHORT).show();
|
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;
|
break;
|
||||||
}
|
}
|
||||||
case R.id.add_to_launcher: {
|
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} \
|
{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
|
* netwerk/protocol/viewsource/ classes
|
||||||
*/
|
*/
|
||||||
|
@ -264,6 +264,10 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsResURL)
|
|||||||
#ifdef NECKO_PROTOCOL_device
|
#ifdef NECKO_PROTOCOL_device
|
||||||
#include "nsDeviceProtocolHandler.h"
|
#include "nsDeviceProtocolHandler.h"
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDeviceProtocolHandler)
|
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDeviceProtocolHandler)
|
||||||
|
#ifdef MOZ_WIDGET_GONK
|
||||||
|
#include "nsB2GProtocolHandler.h"
|
||||||
|
NS_GENERIC_FACTORY_CONSTRUCTOR(nsB2GProtocolHandler)
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef NECKO_PROTOCOL_viewsource
|
#ifdef NECKO_PROTOCOL_viewsource
|
||||||
@ -779,6 +783,9 @@ NS_DEFINE_NAMED_CID(NS_DATAPROTOCOLHANDLER_CID);
|
|||||||
#endif
|
#endif
|
||||||
#ifdef NECKO_PROTOCOL_device
|
#ifdef NECKO_PROTOCOL_device
|
||||||
NS_DEFINE_NAMED_CID(NS_DEVICEPROTOCOLHANDLER_CID);
|
NS_DEFINE_NAMED_CID(NS_DEVICEPROTOCOLHANDLER_CID);
|
||||||
|
#ifdef MOZ_WIDGET_GONK
|
||||||
|
NS_DEFINE_NAMED_CID(NS_B2GPROTOCOLHANDLER_CID);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef NECKO_PROTOCOL_viewsource
|
#ifdef NECKO_PROTOCOL_viewsource
|
||||||
NS_DEFINE_NAMED_CID(NS_VIEWSOURCEHANDLER_CID);
|
NS_DEFINE_NAMED_CID(NS_VIEWSOURCEHANDLER_CID);
|
||||||
@ -910,6 +917,9 @@ static const mozilla::Module::CIDEntry kNeckoCIDs[] = {
|
|||||||
#endif
|
#endif
|
||||||
#ifdef NECKO_PROTOCOL_device
|
#ifdef NECKO_PROTOCOL_device
|
||||||
{ &kNS_DEVICEPROTOCOLHANDLER_CID, false, NULL, nsDeviceProtocolHandlerConstructor},
|
{ &kNS_DEVICEPROTOCOLHANDLER_CID, false, NULL, nsDeviceProtocolHandlerConstructor},
|
||||||
|
#ifdef MOZ_WIDGET_GONK
|
||||||
|
{ &kNS_B2GPROTOCOLHANDLER_CID, false, NULL, nsB2GProtocolHandlerConstructor},
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef NECKO_PROTOCOL_viewsource
|
#ifdef NECKO_PROTOCOL_viewsource
|
||||||
{ &kNS_VIEWSOURCEHANDLER_CID, false, NULL, nsViewSourceHandlerConstructor },
|
{ &kNS_VIEWSOURCEHANDLER_CID, false, NULL, nsViewSourceHandlerConstructor },
|
||||||
@ -1050,6 +1060,9 @@ static const mozilla::Module::ContractIDEntry kNeckoContracts[] = {
|
|||||||
#endif
|
#endif
|
||||||
#ifdef NECKO_PROTOCOL_device
|
#ifdef NECKO_PROTOCOL_device
|
||||||
{ NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "moz-device", &kNS_DEVICEPROTOCOLHANDLER_CID },
|
{ 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
|
#endif
|
||||||
#ifdef NECKO_PROTOCOL_viewsource
|
#ifdef NECKO_PROTOCOL_viewsource
|
||||||
{ NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "view-source", &kNS_VIEWSOURCEHANDLER_CID },
|
{ NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "view-source", &kNS_VIEWSOURCEHANDLER_CID },
|
||||||
|
@ -66,6 +66,7 @@ endif
|
|||||||
|
|
||||||
ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
|
ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
|
||||||
CPPSRCS += GonkCaptureProvider.cpp \
|
CPPSRCS += GonkCaptureProvider.cpp \
|
||||||
|
nsB2GProtocolHandler.cpp \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
endif
|
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