зеркало из https://github.com/mozilla/gecko-dev.git
Merge m-c to elm.
This commit is contained in:
Коммит
4603aa7048
|
@ -27,6 +27,7 @@
|
|||
#include "mozilla/Util.h"
|
||||
#include "nsXPCOMStrings.h"
|
||||
#include "nsComponentManagerUtils.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::a11y;
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "ImageAccessible.h"
|
||||
#include "mozilla/Likely.h"
|
||||
#include "nsMai.h"
|
||||
#include "nsIAccessibleTypes.h"
|
||||
#include "nsIURI.h"
|
||||
|
||||
using namespace mozilla;
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "HyperTextAccessible.h"
|
||||
#include "nsMai.h"
|
||||
|
||||
#include "nsIAccessibleTypes.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
|
||||
#include "mozilla/Likely.h"
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
|
||||
#include "ARIAMap.h"
|
||||
|
||||
#include "Accessible.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "nsCoreUtils.h"
|
||||
#include "Role.h"
|
||||
|
|
|
@ -6,19 +6,12 @@
|
|||
|
||||
#include "AccEvent.h"
|
||||
|
||||
#include "ApplicationAccessibleWrap.h"
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "DocAccessible.h"
|
||||
#include "nsIAccessibleText.h"
|
||||
#include "xpcAccEvents.h"
|
||||
#include "States.h"
|
||||
|
||||
#include "nsEventStateManager.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#ifdef MOZ_XUL
|
||||
#include "nsIDOMXULMultSelectCntrlEl.h"
|
||||
#endif
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::a11y;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "AccGroupInfo.h"
|
||||
#include "nsAccUtils.h"
|
||||
|
||||
#include "Role.h"
|
||||
#include "States.h"
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#define AccGroupInfo_h_
|
||||
|
||||
#include "Accessible-inl.h"
|
||||
#include "nsAccUtils.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace a11y {
|
||||
|
|
|
@ -4,15 +4,12 @@
|
|||
|
||||
#include "AccIterator.h"
|
||||
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "AccGroupInfo.h"
|
||||
#include "Accessible-inl.h"
|
||||
#ifdef MOZ_XUL
|
||||
#include "XULTreeAccessible.h"
|
||||
#endif
|
||||
|
||||
#include "mozilla/dom/Element.h"
|
||||
#include "nsBindingManager.h"
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::a11y;
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
|
||||
#include "DocAccessible.h"
|
||||
#include "Filters.h"
|
||||
#include "nsAccessibilityService.h"
|
||||
|
||||
class nsITreeView;
|
||||
|
||||
namespace mozilla {
|
||||
namespace a11y {
|
||||
|
|
|
@ -29,7 +29,6 @@ enum AccType {
|
|||
eHTMLGroupboxType,
|
||||
eHTMLHRType,
|
||||
eHTMLImageMapType,
|
||||
eHTMLLabelType,
|
||||
eHTMLLiType,
|
||||
eHTMLSelectListType,
|
||||
eHTMLMediaType,
|
||||
|
|
|
@ -5,14 +5,11 @@
|
|||
|
||||
#include "DocManager.h"
|
||||
|
||||
#include "Accessible-inl.h"
|
||||
#include "ApplicationAccessible.h"
|
||||
#include "ARIAMap.h"
|
||||
#include "DocAccessible-inl.h"
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "RootAccessibleWrap.h"
|
||||
#include "States.h"
|
||||
|
||||
#ifdef A11Y_LOG
|
||||
#include "Logging.h"
|
||||
|
@ -22,13 +19,14 @@
|
|||
#include "nsDocShellLoadTypes.h"
|
||||
#include "nsDOMEvent.h"
|
||||
#include "nsIChannel.h"
|
||||
#include "nsIContentViewer.h"
|
||||
#include "nsIDOMDocument.h"
|
||||
#include "nsEventListenerManager.h"
|
||||
#include "nsIDOMWindow.h"
|
||||
#include "nsIInterfaceRequestorUtils.h"
|
||||
#include "nsIWebNavigation.h"
|
||||
#include "nsServiceManagerUtils.h"
|
||||
#include "nsIWebProgress.h"
|
||||
#include "nsCoreUtils.h"
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::a11y;
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
#include "nsIDocument.h"
|
||||
#include "nsIDOMEventListener.h"
|
||||
#include "nsRefPtrHashtable.h"
|
||||
#include "nsIWebProgress.h"
|
||||
#include "nsIWebProgressListener.h"
|
||||
#include "nsWeakReference.h"
|
||||
#include "nsIPresShell.h"
|
||||
|
|
|
@ -6,8 +6,12 @@
|
|||
#include "EventQueue.h"
|
||||
|
||||
#include "Accessible-inl.h"
|
||||
#include "DocAccessible-inl.h"
|
||||
#include "nsEventShell.h"
|
||||
#include "DocAccessible.h"
|
||||
#include "nsAccessibilityService.h"
|
||||
#ifdef A11Y_LOG
|
||||
#include "Logging.h"
|
||||
#endif
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::a11y;
|
||||
|
|
|
@ -8,8 +8,6 @@
|
|||
|
||||
#include "AccEvent.h"
|
||||
|
||||
class nsIContent;
|
||||
|
||||
namespace mozilla {
|
||||
namespace a11y {
|
||||
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
#include "nsAccUtils.h"
|
||||
#include "nsEventShell.h"
|
||||
#include "Role.h"
|
||||
#include "RootAccessible.h"
|
||||
|
||||
#include "nsEventStateManager.h"
|
||||
#include "nsFocusManager.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
|
||||
namespace dom = mozilla::dom;
|
||||
using namespace mozilla::a11y;
|
||||
|
|
|
@ -6,7 +6,10 @@
|
|||
#define mozilla_a11y_FocusManager_h_
|
||||
|
||||
#include "nsAutoPtr.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
|
||||
class nsINode;
|
||||
class nsIDocument;
|
||||
class nsISupports;
|
||||
|
||||
namespace mozilla {
|
||||
namespace a11y {
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "prenv.h"
|
||||
#include "nsIDocShellTreeItem.h"
|
||||
#include "nsIURI.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::a11y;
|
||||
|
|
|
@ -8,12 +8,13 @@
|
|||
#define mozilla_a11y_logs_h__
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsAString.h"
|
||||
#include "nsStringFwd.h"
|
||||
|
||||
class nsIDocument;
|
||||
class nsINode;
|
||||
class nsIRequest;
|
||||
class nsISelection;
|
||||
class nsISupports;
|
||||
class nsIWebProgress;
|
||||
|
||||
namespace mozilla {
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
|
||||
#include "NotificationController.h"
|
||||
|
||||
#include "Accessible-inl.h"
|
||||
#include "DocAccessible-inl.h"
|
||||
#include "TextLeafAccessible.h"
|
||||
#include "TextUpdater.h"
|
||||
|
|
|
@ -15,12 +15,9 @@
|
|||
#include "Logging.h"
|
||||
#endif
|
||||
|
||||
class nsIContent;
|
||||
|
||||
namespace mozilla {
|
||||
namespace a11y {
|
||||
|
||||
class Accessible;
|
||||
class DocAccessible;
|
||||
|
||||
/**
|
||||
|
|
|
@ -7,8 +7,6 @@
|
|||
#include "nsIAccessibleRole.h"
|
||||
#include "Role.h"
|
||||
|
||||
#include "mozilla/Assertions.h"
|
||||
|
||||
using namespace mozilla::a11y;
|
||||
|
||||
#define ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role, nameRule) \
|
||||
|
|
|
@ -10,17 +10,15 @@
|
|||
#include "nsAccUtils.h"
|
||||
#include "nsCoreUtils.h"
|
||||
#include "nsIAccessibleEvent.h"
|
||||
#include "RootAccessible.h"
|
||||
|
||||
#include "nsCaret.h"
|
||||
#include "nsIAccessibleTypes.h"
|
||||
#include "nsIDOMDocument.h"
|
||||
#include "nsIDOMHTMLAnchorElement.h"
|
||||
#include "nsIDOMHTMLTextAreaElement.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsISelectionPrivate.h"
|
||||
#include "nsServiceManagerUtils.h"
|
||||
#include "mozilla/Selection.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::a11y;
|
||||
|
|
|
@ -6,15 +6,14 @@
|
|||
#include "TextAttrs.h"
|
||||
|
||||
#include "Accessible-inl.h"
|
||||
#include "HyperTextAccessibleWrap.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "nsCoreUtils.h"
|
||||
#include "StyleInfo.h"
|
||||
|
||||
#include "gfxFont.h"
|
||||
#include "gfxUserFontSet.h"
|
||||
#include "nsFontMetrics.h"
|
||||
#include "nsLayoutUtils.h"
|
||||
#include "HyperTextAccessible.h"
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::a11y;
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#ifndef mozilla_a11y_TreeWalker_h_
|
||||
#define mozilla_a11y_TreeWalker_h_
|
||||
|
||||
#include "nsAutoPtr.h"
|
||||
#include <stdint.h>
|
||||
|
||||
class nsIContent;
|
||||
|
||||
|
|
|
@ -15,13 +15,10 @@
|
|||
#include "Role.h"
|
||||
#include "States.h"
|
||||
#include "TextLeafAccessible.h"
|
||||
#include "nsIMutableArray.h"
|
||||
|
||||
#include "nsIDOMXULContainerElement.h"
|
||||
#include "nsIDOMXULSelectCntrlEl.h"
|
||||
#include "nsIDOMXULSelectCntrlItemEl.h"
|
||||
#include "nsWhitespaceTokenizer.h"
|
||||
#include "nsComponentManagerUtils.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::a11y;
|
||||
|
|
|
@ -7,23 +7,21 @@
|
|||
#define nsAccUtils_h_
|
||||
|
||||
#include "mozilla/a11y/Accessible.h"
|
||||
#include "nsIAccessibleText.h"
|
||||
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsCoreUtils.h"
|
||||
|
||||
#include "mozilla/dom/Element.h"
|
||||
#include "nsIDocShell.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsPoint.h"
|
||||
|
||||
struct nsRoleMapEntry;
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
namespace dom {
|
||||
class Element;
|
||||
}
|
||||
|
||||
namespace a11y {
|
||||
|
||||
class Accessible;
|
||||
class HyperTextAccessible;
|
||||
class DocAccessible;
|
||||
|
||||
|
|
|
@ -5,20 +5,11 @@
|
|||
|
||||
#include "nsAccessNode.h"
|
||||
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "nsCoreUtils.h"
|
||||
#include "RootAccessible.h"
|
||||
|
||||
#include "nsIDocShell.h"
|
||||
#include "nsIDOMWindow.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsIInterfaceRequestorUtils.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsFocusManager.h"
|
||||
#include "nsPresContext.h"
|
||||
#include "mozilla/Services.h"
|
||||
|
||||
using namespace mozilla::a11y;
|
||||
|
||||
|
|
|
@ -10,14 +10,10 @@
|
|||
#ifndef _nsAccessNode_H_
|
||||
#define _nsAccessNode_H_
|
||||
|
||||
#include "nsIAccessibleTypes.h"
|
||||
#include "nsINode.h"
|
||||
|
||||
class nsIContent;
|
||||
class nsIDocShellTreeItem;
|
||||
class nsIFrame;
|
||||
class nsIPresShell;
|
||||
class nsPresContext;
|
||||
|
||||
namespace mozilla {
|
||||
namespace a11y {
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#include "nsAccessibilityService.h"
|
||||
|
||||
// NOTE: alphabetically ordered
|
||||
#include "Accessible-inl.h"
|
||||
#include "ApplicationAccessibleWrap.h"
|
||||
#include "ARIAGridAccessibleWrap.h"
|
||||
#include "ARIAMap.h"
|
||||
|
@ -20,13 +19,18 @@
|
|||
#include "HTMLSelectAccessible.h"
|
||||
#include "HTMLTableAccessibleWrap.h"
|
||||
#include "HyperTextAccessibleWrap.h"
|
||||
#include "RootAccessible.h"
|
||||
#include "nsAccessiblePivot.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "nsAttrName.h"
|
||||
#include "nsEventShell.h"
|
||||
#include "nsIURI.h"
|
||||
#include "OuterDocAccessible.h"
|
||||
#include "Platform.h"
|
||||
#include "Role.h"
|
||||
#ifdef MOZ_ACCESSIBILITY_ATK
|
||||
#include "RootAccessibleWrap.h"
|
||||
#endif
|
||||
#include "States.h"
|
||||
#include "Statistics.h"
|
||||
#include "TextLeafAccessibleWrap.h"
|
||||
|
@ -38,6 +42,7 @@
|
|||
#ifdef XP_WIN
|
||||
#include "mozilla/a11y/Compatibility.h"
|
||||
#include "HTMLWin32ObjectAccessible.h"
|
||||
#include "mozilla/StaticPtr.h"
|
||||
#endif
|
||||
|
||||
#ifdef A11Y_LOG
|
||||
|
@ -48,25 +53,18 @@
|
|||
#include "nsExceptionHandler.h"
|
||||
#endif
|
||||
|
||||
#include "nsIDOMDocument.h"
|
||||
#include "nsIDOMHTMLObjectElement.h"
|
||||
#include "nsIDOMXULElement.h"
|
||||
#include "nsImageFrame.h"
|
||||
#include "nsIObserverService.h"
|
||||
#include "nsLayoutUtils.h"
|
||||
#include "nsNPAPIPluginInstance.h"
|
||||
#include "nsObjectFrame.h"
|
||||
#include "nsSVGPathGeometryFrame.h"
|
||||
#include "nsTreeBodyFrame.h"
|
||||
#include "nsTreeColumns.h"
|
||||
#include "nsTreeUtils.h"
|
||||
#include "nsBindingManager.h"
|
||||
#include "nsXBLPrototypeBinding.h"
|
||||
#include "nsXBLBinding.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
#include "mozilla/Services.h"
|
||||
#include "mozilla/StaticPtr.h"
|
||||
#include "mozilla/Util.h"
|
||||
#include "nsDeckFrame.h"
|
||||
|
||||
|
@ -83,6 +81,10 @@
|
|||
#include "XULTreeGridAccessibleWrap.h"
|
||||
#endif
|
||||
|
||||
#if defined(XP_WIN) || defined(MOZ_ACCESSIBILITY_ATK)
|
||||
#include "nsNPAPIPluginInstance.h"
|
||||
#endif
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::a11y;
|
||||
|
||||
|
@ -1433,6 +1435,12 @@ nsAccessibilityService::CreateHTMLAccessibleByMarkup(nsIFrame* aFrame,
|
|||
return accessible.forget();
|
||||
}
|
||||
|
||||
if (tag == nsGkAtoms::label) {
|
||||
nsRefPtr<Accessible> accessible =
|
||||
new HTMLLabelAccessible(aContent, document);
|
||||
return accessible.forget();
|
||||
}
|
||||
|
||||
if (tag == nsGkAtoms::output) {
|
||||
nsRefPtr<Accessible> accessible =
|
||||
new HTMLOutputAccessible(aContent, document);
|
||||
|
@ -1492,9 +1500,6 @@ nsAccessibilityService::CreateAccessibleByFrameType(nsIFrame* aFrame,
|
|||
case eHTMLImageMapType:
|
||||
newAcc = new HTMLImageMapAccessible(aContent, document);
|
||||
break;
|
||||
case eHTMLLabelType:
|
||||
newAcc = new HTMLLabelAccessible(aContent, document);
|
||||
break;
|
||||
case eHTMLLiType:
|
||||
if (aContext->IsList() &&
|
||||
aContext->GetContent() == aContent->GetParent()) {
|
||||
|
|
|
@ -6,15 +6,10 @@
|
|||
|
||||
#include "nsAccessiblePivot.h"
|
||||
|
||||
#include "DocAccessible.h"
|
||||
#include "HyperTextAccessible.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "States.h"
|
||||
|
||||
#include "nsArrayUtils.h"
|
||||
#include "nsComponentManagerUtils.h"
|
||||
#include "nsISupportsPrimitives.h"
|
||||
|
||||
using namespace mozilla::a11y;
|
||||
|
||||
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
#include "nsCycleCollectionParticipant.h"
|
||||
#include "mozilla/Attributes.h"
|
||||
|
||||
class nsIAccessibleTraversalRule;
|
||||
class RuleCache;
|
||||
|
||||
/**
|
||||
|
|
|
@ -7,8 +7,6 @@
|
|||
|
||||
#include "nsIAccessibleTypes.h"
|
||||
|
||||
#include "nsAccessNode.h"
|
||||
|
||||
#include "nsIBaseWindow.h"
|
||||
#include "nsIDocShellTreeOwner.h"
|
||||
#include "nsIDocument.h"
|
||||
|
@ -16,10 +14,9 @@
|
|||
#include "nsIDOMHTMLDocument.h"
|
||||
#include "nsIDOMHTMLElement.h"
|
||||
#include "nsRange.h"
|
||||
#include "nsIDOMWindow.h"
|
||||
#include "nsIBoxObject.h"
|
||||
#include "nsIDOMXULElement.h"
|
||||
#include "nsIDocShell.h"
|
||||
#include "nsIContentViewer.h"
|
||||
#include "nsEventListenerManager.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsPresContext.h"
|
||||
|
@ -27,16 +24,12 @@
|
|||
#include "nsEventStateManager.h"
|
||||
#include "nsISelectionPrivate.h"
|
||||
#include "nsISelectionController.h"
|
||||
#include "nsPIDOMWindow.h"
|
||||
#include "nsGUIEvent.h"
|
||||
#include "nsView.h"
|
||||
#include "nsLayoutUtils.h"
|
||||
#include "nsGkAtoms.h"
|
||||
#include "nsDOMTouchEvent.h"
|
||||
|
||||
#include "nsComponentManagerUtils.h"
|
||||
#include "nsIInterfaceRequestorUtils.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
|
||||
#include "nsITreeBoxObject.h"
|
||||
#include "nsITreeColumns.h"
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
#define nsCoreUtils_h_
|
||||
|
||||
#include "nsIContent.h"
|
||||
#include "nsIBoxObject.h"
|
||||
#include "nsIPresShell.h"
|
||||
|
||||
#include "nsIDOMDOMStringList.h"
|
||||
|
@ -15,6 +14,7 @@
|
|||
#include "nsTArray.h"
|
||||
|
||||
class nsRange;
|
||||
class nsIBoxObject;
|
||||
class nsIFrame;
|
||||
class nsIDocShell;
|
||||
class nsITreeColumn;
|
||||
|
|
|
@ -9,14 +9,9 @@
|
|||
|
||||
#include "Accessible-inl.h"
|
||||
#include "AccIterator.h"
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "nsStyleStructInlines.h"
|
||||
|
||||
#include "nsCoreUtils.h"
|
||||
#include "nsIDOMXULLabeledControlEl.h"
|
||||
|
||||
#include "nsArrayUtils.h"
|
||||
|
||||
using namespace mozilla::a11y;
|
||||
|
||||
/**
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
#define _nsTextEquivUtils_H_
|
||||
|
||||
#include "Accessible.h"
|
||||
#include "nsIStringBundle.h"
|
||||
#include "Role.h"
|
||||
|
||||
class nsIContent;
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "States.h"
|
||||
|
||||
#include "nsIMutableArray.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
#include "nsComponentManagerUtils.h"
|
||||
|
||||
using namespace mozilla;
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include "nsAccessibilityService.h"
|
||||
#include "NotificationController.h"
|
||||
#include "States.h"
|
||||
#include "nsIScrollableFrame.h"
|
||||
|
||||
#ifdef A11Y_LOG
|
||||
#include "Logging.h"
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "nsIFrame.h"
|
||||
#include "nsIInterfaceRequestorUtils.h"
|
||||
#include "nsINameSpaceManager.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsViewManager.h"
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "nsFrameSelection.h"
|
||||
#include "nsILineIterator.h"
|
||||
#include "nsIInterfaceRequestorUtils.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
#include "nsIPlaintextEditor.h"
|
||||
#include "nsIScrollableFrame.h"
|
||||
#include "nsIServiceManager.h"
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "nsIPresShell.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIDOMHTMLImageElement.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
#include "nsPIDOMWindow.h"
|
||||
#include "nsIURI.h"
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "DocAccessible.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "nsIAccessibleRelation.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
#include "nsTextEquivUtils.h"
|
||||
#include "Relation.h"
|
||||
#include "Role.h"
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "nsIEditor.h"
|
||||
#include "nsIFormControl.h"
|
||||
#include "nsINameSpaceManager.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
#include "nsISelectionController.h"
|
||||
#include "jsapi.h"
|
||||
#include "nsIServiceManager.h"
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "nsIDOMHTMLCollection.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIMutableArray.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsITableCellLayout.h"
|
||||
#include "nsFrameSelection.h"
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include "nsIAccessibleRelation.h"
|
||||
#include "nsIAccessibleText.h"
|
||||
#include "nsIAccessibleEditableText.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
#include "Relation.h"
|
||||
#include "Role.h"
|
||||
#include "RootAccessible.h"
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include "Accessible-inl.h"
|
||||
#include "AccessibleWrap.h"
|
||||
#include "TextLeafAccessible.h"
|
||||
#include "nsIAccessibleTypes.h"
|
||||
|
||||
#include "nsCocoaUtils.h"
|
||||
#include "nsObjCExceptions.h"
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include "HyperTextAccessibleWrap.h"
|
||||
|
||||
#include "nsIPersistentProperties2.h"
|
||||
#include "nsIAccessibleTypes.h"
|
||||
|
||||
using namespace mozilla::a11y;
|
||||
|
||||
|
|
|
@ -42,6 +42,8 @@
|
|||
#include "AccessibleRole.h"
|
||||
#include "AccessibleStates.h"
|
||||
#include "oleacc.h"
|
||||
#include "nsIAccessibleTypes.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::a11y;
|
||||
|
|
|
@ -279,7 +279,7 @@ DocAccessibleWrap::DoInitialUpdate()
|
|||
// Create window for tab document.
|
||||
if (mDocFlags & eTabDocument) {
|
||||
mozilla::dom::TabChild* tabChild =
|
||||
mozilla::dom::GetTabChildFrom(mDocumentNode->GetShell());
|
||||
mozilla::dom::TabChild::GetFrom(mDocumentNode->GetShell());
|
||||
|
||||
a11y::RootAccessible* rootDocument = RootAccessible();
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include "nsAttrName.h"
|
||||
#include "nsCoreUtils.h"
|
||||
#include "nsIAccessibleTypes.h"
|
||||
#include "nsIDOMHTMLElement.h"
|
||||
#include "nsIDOMCSSStyleDeclaration.h"
|
||||
#include "nsServiceManagerUtils.h"
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include "nsPresContext.h"
|
||||
#include "nsLayoutUtils.h"
|
||||
#include "gfxFont.h"
|
||||
#include "nsIAccessibleTypes.h"
|
||||
|
||||
using namespace mozilla::a11y;
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "nsINameSpaceManager.h"
|
||||
#include "nsITextControlFrame.h"
|
||||
#include "nsMenuPopupFrame.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
|
||||
using namespace mozilla::a11y;
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "nsIDOMXULPopupElement.h"
|
||||
#include "nsIDOMXULSelectCntrlItemEl.h"
|
||||
#include "nsIMutableArray.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
|
||||
using namespace mozilla::a11y;
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "States.h"
|
||||
|
||||
#include "nsIFrame.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
|
||||
using namespace mozilla::a11y;
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "nsIAccessibleRelation.h"
|
||||
#include "nsIAutoCompleteInput.h"
|
||||
#include "nsIAutoCompletePopup.h"
|
||||
#include "nsIBoxObject.h"
|
||||
#include "nsIDOMXULElement.h"
|
||||
#include "nsIDOMXULMenuListElement.h"
|
||||
#include "nsIDOMXULMultSelectCntrlEl.h"
|
||||
|
|
|
@ -14,7 +14,9 @@
|
|||
#include "Role.h"
|
||||
#include "States.h"
|
||||
|
||||
#include "nsIBoxObject.h"
|
||||
#include "nsIMutableArray.h"
|
||||
#include "nsIPersistentProperties2.h"
|
||||
#include "nsITreeSelection.h"
|
||||
#include "nsComponentManagerUtils.h"
|
||||
|
||||
|
|
|
@ -293,11 +293,12 @@ function eventQueue(aEventType)
|
|||
{
|
||||
// Some scenario was matched, we wait on next invoker processing.
|
||||
if (this.mNextInvokerStatus == kInvokerCanceled) {
|
||||
this.mNextInvokerStatus = kInvokerNotScheduled;
|
||||
this.setInvokerStatus(kInvokerNotScheduled,
|
||||
"scenario was matched, wait for next invoker activation");
|
||||
return;
|
||||
}
|
||||
|
||||
this.mNextInvokerStatus = kInvokerNotScheduled;
|
||||
this.setInvokerStatus(kInvokerNotScheduled, "the next invoker is processed now");
|
||||
|
||||
// Finish processing of the current invoker if any.
|
||||
var testFailed = false;
|
||||
|
@ -433,7 +434,7 @@ function eventQueue(aEventType)
|
|||
this.processNextInvokerInTimeout =
|
||||
function eventQueue_processNextInvokerInTimeout(aUncondProcess)
|
||||
{
|
||||
this.mNextInvokerStatus = kInvokerPending;
|
||||
this.setInvokerStatus(kInvokerPending, "Process next invoker in timeout");
|
||||
|
||||
// No need to wait extra timeout when a) we know we don't need to do that
|
||||
// and b) there's no any single unexpected event.
|
||||
|
@ -541,15 +542,22 @@ function eventQueue(aEventType)
|
|||
}
|
||||
|
||||
// If we don't have more events to wait then schedule next invoker.
|
||||
if (this.hasMatchedScenario() &&
|
||||
(this.mNextInvokerStatus == kInvokerNotScheduled)) {
|
||||
this.processNextInvokerInTimeout();
|
||||
if (this.hasMatchedScenario()) {
|
||||
if (this.mNextInvokerStatus == kInvokerNotScheduled) {
|
||||
this.processNextInvokerInTimeout();
|
||||
|
||||
} else if (this.mNextInvokerStatus == kInvokerCanceled) {
|
||||
this.setInvokerStatus(kInvokerPending,
|
||||
"Full match. Void the cancelation of next invoker processing");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// If we have scheduled a next invoker then cancel in case of match.
|
||||
if ((this.mNextInvokerStatus == kInvokerPending) && hasMatchedCheckers)
|
||||
this.mNextInvokerStatus = kInvokerCanceled;
|
||||
if ((this.mNextInvokerStatus == kInvokerPending) && hasMatchedCheckers) {
|
||||
this.setInvokerStatus(kInvokerCanceled,
|
||||
"Cancel the scheduled invoker in case of match");
|
||||
}
|
||||
}
|
||||
|
||||
// Helpers
|
||||
|
@ -622,6 +630,17 @@ function eventQueue(aEventType)
|
|||
return true;
|
||||
}
|
||||
|
||||
this.isUnexpectedEventScenario =
|
||||
function eventQueue_isUnexpectedEventsScenario(aScenario)
|
||||
{
|
||||
for (var idx = 0; idx < aScenario.length; idx++) {
|
||||
if (!aScenario[idx].unexpected)
|
||||
break;
|
||||
}
|
||||
|
||||
return idx == aScenario.length;
|
||||
}
|
||||
|
||||
this.hasUnexpectedEventsScenario =
|
||||
function eventQueue_hasUnexpectedEventsScenario()
|
||||
{
|
||||
|
@ -629,23 +648,19 @@ function eventQueue(aEventType)
|
|||
return true;
|
||||
|
||||
for (var scnIdx = 0; scnIdx < this.mScenarios.length; scnIdx++) {
|
||||
var eventSeq = this.mScenarios[scnIdx];
|
||||
for (var idx = 0; idx < eventSeq.length; idx++) {
|
||||
if (!eventSeq[idx].unexpected)
|
||||
break;
|
||||
}
|
||||
if (idx == eventSeq.length)
|
||||
if (this.isUnexpectedEventScenario(this.mScenarios[scnIdx]))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
this.hasMatchedScenario =
|
||||
function eventQueue_hasMatchedScenario()
|
||||
{
|
||||
for (var scnIdx = 0; scnIdx < this.mScenarios.length; scnIdx++) {
|
||||
if (!this.areExpectedEventsLeft(this.mScenarios[scnIdx]))
|
||||
var scn = this.mScenarios[scnIdx];
|
||||
if (!this.isUnexpectedEventScenario(scn) && !this.areExpectedEventsLeft(scn))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -775,6 +790,14 @@ function eventQueue(aEventType)
|
|||
return invoker.getID();
|
||||
}
|
||||
|
||||
this.setInvokerStatus = function eventQueue_setInvokerStatus(aStatus, aLogMsg)
|
||||
{
|
||||
this.mNextInvokerStatus = aStatus;
|
||||
|
||||
// Uncomment it to debug invoker processing logic.
|
||||
//gLogger.log(eventQueue.invokerStatusToMsg(aStatus, aLogMsg));
|
||||
}
|
||||
|
||||
this.mDefEventType = aEventType;
|
||||
|
||||
this.mInvokers = new Array();
|
||||
|
@ -872,24 +895,10 @@ eventQueue.isSameEvent = function eventQueue_isSameEvent(aChecker, aEvent)
|
|||
!(aEvent instanceof nsIAccessibleStateChangeEvent);
|
||||
}
|
||||
|
||||
eventQueue.logEvent = function eventQueue_logEvent(aOrigEvent, aMatchedChecker,
|
||||
aScenarioIdx, aEventIdx,
|
||||
aAreExpectedEventsLeft,
|
||||
aInvokerStatus)
|
||||
eventQueue.invokerStatusToMsg =
|
||||
function eventQueue_invokerStatusToMsg(aInvokerStatus, aMsg)
|
||||
{
|
||||
if (!gLogger.isEnabled()) // debug stuff
|
||||
return;
|
||||
|
||||
// Dump DOM event information. Skip a11y event since it is dumped by
|
||||
// gA11yEventObserver.
|
||||
if (aOrigEvent instanceof nsIDOMEvent) {
|
||||
var info = "Event type: " + eventQueue.getEventTypeAsString(aOrigEvent);
|
||||
info += ". Target: " + eventQueue.getEventTargetDescr(aOrigEvent);
|
||||
gLogger.logToDOM(info);
|
||||
}
|
||||
|
||||
var msg = "unhandled expected events: " + aAreExpectedEventsLeft +
|
||||
", invoker status: ";
|
||||
var msg = "invoker status: ";
|
||||
switch (aInvokerStatus) {
|
||||
case kInvokerNotScheduled:
|
||||
msg += "not scheduled";
|
||||
|
@ -902,23 +911,37 @@ eventQueue.logEvent = function eventQueue_logEvent(aOrigEvent, aMatchedChecker,
|
|||
break;
|
||||
}
|
||||
|
||||
gLogger.logToConsole(msg);
|
||||
gLogger.logToDOM(msg);
|
||||
if (aMsg)
|
||||
msg += " (" + aMsg + ")";
|
||||
|
||||
if (!aMatchedChecker)
|
||||
return;
|
||||
return msg;
|
||||
}
|
||||
|
||||
var msg = "EQ: ";
|
||||
var emphText = "matched ";
|
||||
eventQueue.logEvent = function eventQueue_logEvent(aOrigEvent, aMatchedChecker,
|
||||
aScenarioIdx, aEventIdx,
|
||||
aAreExpectedEventsLeft,
|
||||
aInvokerStatus)
|
||||
{
|
||||
// Dump DOM event information. Skip a11y event since it is dumped by
|
||||
// gA11yEventObserver.
|
||||
if (aOrigEvent instanceof nsIDOMEvent) {
|
||||
var info = "Event type: " + eventQueue.getEventTypeAsString(aOrigEvent);
|
||||
info += ". Target: " + eventQueue.getEventTargetDescr(aOrigEvent);
|
||||
gLogger.logToDOM(info);
|
||||
}
|
||||
|
||||
var infoMsg = "unhandled expected events: " + aAreExpectedEventsLeft +
|
||||
", " + eventQueue.invokerStatusToMsg(aInvokerStatus);
|
||||
|
||||
var currType = eventQueue.getEventTypeAsString(aMatchedChecker);
|
||||
var currTargetDescr = eventQueue.getEventTargetDescr(aMatchedChecker);
|
||||
var consoleMsg = "*****\nScenario " + aScenarioIdx +
|
||||
", event " + aEventIdx + " matched: " + currType + "\n*****";
|
||||
", event " + aEventIdx + " matched: " + currType + "\n" + infoMsg + "\n*****";
|
||||
gLogger.logToConsole(consoleMsg);
|
||||
|
||||
msg += " event, type: " + currType + ", target: " + currTargetDescr;
|
||||
|
||||
var emphText = "matched ";
|
||||
var msg = "EQ event, type: " + currType + ", target: " + currTargetDescr +
|
||||
", " + infoMsg;
|
||||
gLogger.logToDOM(msg, true, emphText);
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
src="../events.js"></script>
|
||||
|
||||
<script type="application/javascript">
|
||||
gA11yEventDumpToConsole = true; // debugging stuff
|
||||
//gA11yEventDumpToConsole = true; // debugging stuff
|
||||
|
||||
function loadFile()
|
||||
{
|
||||
|
|
|
@ -73,7 +73,7 @@ pref("mozilla.widget.force-24bpp", true);
|
|||
pref("mozilla.widget.use-buffer-pixmap", true);
|
||||
pref("mozilla.widget.disable-native-theme", true);
|
||||
pref("layout.reflow.synthMouseMove", false);
|
||||
pref("layers.force-tiles", false);
|
||||
pref("layers.force-tiles", true);
|
||||
|
||||
/* download manager (don't show the window or alert) */
|
||||
pref("browser.download.useDownloadDir", true);
|
||||
|
@ -747,9 +747,23 @@ pref("ping.manifestURL", "https://marketplace.firefox.com/packaged.webapp");
|
|||
// Enable the disk space watcher
|
||||
pref("disk_space_watcher.enabled", true);
|
||||
|
||||
// SNTP preferences.
|
||||
pref("network.sntp.maxRetryCount", 10);
|
||||
pref("network.sntp.refreshPeriod", 86400); // In seconds.
|
||||
pref("network.sntp.pools", // Servers separated by ';'.
|
||||
"0.pool.ntp.org;1.pool.ntp.org;2.pool.ntp.org;3.pool.ntp.org");
|
||||
pref("network.sntp.port", 123);
|
||||
pref("network.sntp.timeout", 30); // In seconds.
|
||||
|
||||
// Enable promise
|
||||
pref("dom.promise.enabled", false);
|
||||
|
||||
// DOM Inter-App Communication API.
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
// Enable this only for gonk-specific build but not for desktop build.
|
||||
pref("dom.inter-app-communication-api.enabled", true);
|
||||
#endif
|
||||
|
||||
// Allow ADB to run for this many hours before disabling
|
||||
// (only applies when marionette is disabled)
|
||||
// 0 disables the timer.
|
||||
|
|
|
@ -1069,10 +1069,14 @@ let CompositionManager = {
|
|||
_isStarted: false,
|
||||
_text: '',
|
||||
_clauseAttrMap: {
|
||||
'raw-input': domWindowUtils.COMPOSITION_ATTR_RAWINPUT,
|
||||
'selected-raw-text': domWindowUtils.COMPOSITION_ATTR_SELECTEDRAWTEXT,
|
||||
'converted-text': domWindowUtils.COMPOSITION_ATTR_CONVERTEDTEXT,
|
||||
'selected-converted-text': domWindowUtils.COMPOSITION_ATTR_SELECTEDCONVERTEDTEXT
|
||||
'raw-input':
|
||||
Ci.nsICompositionStringSynthesizer.ATTR_RAWINPUT,
|
||||
'selected-raw-text':
|
||||
Ci.nsICompositionStringSynthesizer.ATTR_SELECTEDRAWTEXT,
|
||||
'converted-text':
|
||||
Ci.nsICompositionStringSynthesizer.ATTR_CONVERTEDTEXT,
|
||||
'selected-converted-text':
|
||||
Ci.nsICompositionStringSynthesizer.ATTR_SELECTEDCONVERTEDTEXT
|
||||
},
|
||||
|
||||
setComposition: function cm_setComposition(element, text, cursor, clauses) {
|
||||
|
@ -1081,20 +1085,14 @@ let CompositionManager = {
|
|||
return;
|
||||
}
|
||||
let len = text.length;
|
||||
if (cursor < 0) {
|
||||
cursor = 0;
|
||||
} else if (cursor > len) {
|
||||
if (cursor > len) {
|
||||
cursor = len;
|
||||
}
|
||||
let clauseLens = [len, 0, 0];
|
||||
let clauseAttrs = [domWindowUtils.COMPOSITION_ATTR_RAWINPUT,
|
||||
domWindowUtils.COMPOSITION_ATTR_RAWINPUT,
|
||||
domWindowUtils.COMPOSITION_ATTR_RAWINPUT];
|
||||
let clauseLens = [];
|
||||
let clauseAttrs = [];
|
||||
if (clauses) {
|
||||
let remainingLength = len;
|
||||
// Currently we don't support 4 or more clauses composition string.
|
||||
let clauseNum = Math.min(3, clauses.length);
|
||||
for (let i = 0; i < clauseNum; i++) {
|
||||
for (let i = 0; i < clauses.length; i++) {
|
||||
if (clauses[i]) {
|
||||
let clauseLength = clauses[i].length || 0;
|
||||
// Make sure the total clauses length is not bigger than that of the
|
||||
|
@ -1103,16 +1101,19 @@ let CompositionManager = {
|
|||
clauseLength = remainingLength;
|
||||
}
|
||||
remainingLength -= clauseLength;
|
||||
clauseLens[i] = clauseLength;
|
||||
clauseAttrs[i] = this._clauseAttrMap[clauses[i].selectionType] ||
|
||||
domWindowUtils.COMPOSITION_ATTR_RAWINPUT;
|
||||
clauseLens.push(clauseLength);
|
||||
clauseAttrs.push(this._clauseAttrMap[clauses[i].selectionType] ||
|
||||
Ci.nsICompositionStringSynthesizer.ATTR_RAWINPUT);
|
||||
}
|
||||
}
|
||||
// If the total clauses length is less than that of the composition
|
||||
// string, extend the last clause to the end of the composition string.
|
||||
if (remainingLength > 0) {
|
||||
clauseLens[2] += remainingLength;
|
||||
clauseLens[clauseLens.length - 1] += remainingLength;
|
||||
}
|
||||
} else {
|
||||
clauseLens.push(len);
|
||||
clauseAttrs.push(Ci.nsICompositionStringSynthesizer.ATTR_RAWINPUT);
|
||||
}
|
||||
|
||||
// Start composition if need to.
|
||||
|
@ -1127,11 +1128,15 @@ let CompositionManager = {
|
|||
this._text = text;
|
||||
domWindowUtils.sendCompositionEvent('compositionupdate', text, '');
|
||||
}
|
||||
domWindowUtils.sendTextEvent(text,
|
||||
clauseLens[0], clauseAttrs[0],
|
||||
clauseLens[1], clauseAttrs[1],
|
||||
clauseLens[2], clauseAttrs[2],
|
||||
cursor, 0);
|
||||
let compositionString = domWindowUtils.createCompositionStringSynthesizer();
|
||||
compositionString.setString(text);
|
||||
for (var i = 0; i < clauseLens.length; i++) {
|
||||
compositionString.appendClause(clauseLens[i], clauseAttrs[i]);
|
||||
}
|
||||
if (cursor >= 0) {
|
||||
compositionString.setCaret(cursor, 0);
|
||||
}
|
||||
compositionString.dispatchEvent();
|
||||
},
|
||||
|
||||
endComposition: function cm_endComposition(text) {
|
||||
|
@ -1142,9 +1147,12 @@ let CompositionManager = {
|
|||
if (this._text !== text) {
|
||||
domWindowUtils.sendCompositionEvent('compositionupdate', text, '');
|
||||
}
|
||||
let compositionString = domWindowUtils.createCompositionStringSynthesizer();
|
||||
compositionString.setString(text);
|
||||
// Set the cursor position to |text.length| so that the text will be
|
||||
// committed before the cursor position.
|
||||
domWindowUtils.sendTextEvent(text, 0, 0, 0, 0, 0, 0, text.length, 0);
|
||||
compositionString.setCaret(text.length, 0);
|
||||
compositionString.dispatchEvent();
|
||||
domWindowUtils.sendCompositionEvent('compositionend', text, '');
|
||||
this._text = '';
|
||||
this._isStarted = false;
|
||||
|
|
|
@ -317,8 +317,11 @@ let AdbController = {
|
|||
|
||||
// Check if we have a remote debugging session going on. If so, we won't
|
||||
// disable adb even if the screen is locked.
|
||||
let isDebugging = Object.keys(DebuggerServer._connections).length > 0;
|
||||
this.debug("isDebugging=" + isDebugging);
|
||||
let isDebugging = DebuggerServer._connections &&
|
||||
Object.keys(DebuggerServer._connections).length > 0;
|
||||
if (this.DEBUG) {
|
||||
this.debug("isDebugging=" + isDebugging);
|
||||
}
|
||||
|
||||
let enableAdb = this.remoteDebuggerEnabled &&
|
||||
(!(this.lockEnabled && this.locked) || isDebugging);
|
||||
|
|
|
@ -631,9 +631,18 @@ Services.obs.addObserver(function onSystemMessageOpenApp(subject, topic, data) {
|
|||
shell.openAppForSystemMessage(msg);
|
||||
}, 'system-messages-open-app', false);
|
||||
|
||||
Services.obs.addObserver(function(aSubject, aTopic, aData) {
|
||||
Services.obs.addObserver(function onInterAppCommConnect(subject, topic, data) {
|
||||
data = JSON.parse(data);
|
||||
shell.sendChromeEvent({ type: "inter-app-comm-permission",
|
||||
chromeEventID: data.callerID,
|
||||
manifestURL: data.manifestURL,
|
||||
keyword: data.keyword,
|
||||
peers: data.appsToSelect });
|
||||
}, 'inter-app-comm-select-app', false);
|
||||
|
||||
Services.obs.addObserver(function onFullscreenOriginChange(subject, topic, data) {
|
||||
shell.sendChromeEvent({ type: "fullscreenoriginchange",
|
||||
fullscreenorigin: aData });
|
||||
fullscreenorigin: data });
|
||||
}, "fullscreen-origin-change", false);
|
||||
|
||||
Services.obs.addObserver(function onWebappsStart(subject, topic, data) {
|
||||
|
@ -700,6 +709,16 @@ var CustomEventManager = {
|
|||
case 'captive-portal-login-cancel':
|
||||
CaptivePortalLoginHelper.handleEvent(detail);
|
||||
break;
|
||||
case 'inter-app-comm-permission':
|
||||
Services.obs.notifyObservers(null, 'inter-app-comm-select-app-result',
|
||||
JSON.stringify({ callerID: detail.chromeEventID,
|
||||
keyword: detail.keyword,
|
||||
manifestURL: detail.manifestURL,
|
||||
selectedApps: detail.peers }));
|
||||
break;
|
||||
case 'inputmethod-update-layouts':
|
||||
KeyboardHelper.handleEvent(detail);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1052,6 +1071,14 @@ let RemoteDebugger = {
|
|||
}
|
||||
}
|
||||
|
||||
let KeyboardHelper = {
|
||||
handleEvent: function keyboard_handleEvent(aMessage) {
|
||||
let data = aMessage.data;
|
||||
|
||||
Keyboard.setLayouts(data.layouts);
|
||||
}
|
||||
};
|
||||
|
||||
// This is the backend for Gaia's screenshot feature. Gaia requests a
|
||||
// screenshot by sending a mozContentEvent with detail.type set to
|
||||
// 'take-screenshot'. Then we take a screenshot and send a
|
||||
|
@ -1189,6 +1216,15 @@ window.addEventListener('ContentStart', function update_onContentStart() {
|
|||
}, "audio-channel-changed", false);
|
||||
})();
|
||||
|
||||
(function defaultVolumeChannelChangedTracker() {
|
||||
Services.obs.addObserver(function(aSubject, aTopic, aData) {
|
||||
shell.sendChromeEvent({
|
||||
type: 'default-volume-channel-changed',
|
||||
channel: aData
|
||||
});
|
||||
}, "default-volume-channel-changed", false);
|
||||
})();
|
||||
|
||||
(function visibleAudioChannelChangedTracker() {
|
||||
Services.obs.addObserver(function(aSubject, aTopic, aData) {
|
||||
shell.sendChromeEvent({
|
||||
|
|
|
@ -238,6 +238,10 @@ let Keyboard = {
|
|||
},
|
||||
|
||||
getContext: function keyboardGetContext(msg) {
|
||||
if (this._layouts) {
|
||||
ppmm.broadcastAsyncMessage('Keyboard:LayoutsChange', this._layouts);
|
||||
}
|
||||
|
||||
this.sendAsyncMessage('Forms:GetContext', msg.data);
|
||||
},
|
||||
|
||||
|
@ -247,6 +251,19 @@ let Keyboard = {
|
|||
|
||||
endComposition: function keyboardEndComposition(msg) {
|
||||
this.sendAsyncMessage('Forms:EndComposition', msg.data);
|
||||
},
|
||||
|
||||
/**
|
||||
* Get the number of keyboard layouts active from keyboard_manager
|
||||
*/
|
||||
_layouts: null,
|
||||
setLayouts: function keyboardSetLayoutCount(layouts) {
|
||||
// The input method plugins may not have loaded yet,
|
||||
// cache the layouts so on init we can respond immediately instead
|
||||
// of going back and forth between keyboard_manager
|
||||
this._layouts = layouts;
|
||||
|
||||
ppmm.broadcastAsyncMessage('Keyboard:LayoutsChange', layouts);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -207,6 +207,8 @@ MozKeyboard.prototype = {
|
|||
function MozInputMethodManager() { }
|
||||
|
||||
MozInputMethodManager.prototype = {
|
||||
_supportsSwitching: false,
|
||||
|
||||
classID: Components.ID("{7e9d7280-ef86-11e2-b778-0800200c9a66}"),
|
||||
|
||||
QueryInterface: XPCOMUtils.generateQI([
|
||||
|
@ -230,7 +232,7 @@ MozInputMethodManager.prototype = {
|
|||
},
|
||||
|
||||
supportsSwitching: function() {
|
||||
return true;
|
||||
return this._supportsSwitching;
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
|
@ -247,6 +249,7 @@ function MozInputMethod() { }
|
|||
|
||||
MozInputMethod.prototype = {
|
||||
_inputcontext: null,
|
||||
_layouts: {},
|
||||
|
||||
classID: Components.ID("{4607330d-e7d2-40a4-9eb8-43967eae0142}"),
|
||||
|
||||
|
@ -284,6 +287,7 @@ MozInputMethod.prototype = {
|
|||
cpmm.addMessageListener('Keyboard:FocusChange', this);
|
||||
cpmm.addMessageListener('Keyboard:SelectionChange', this);
|
||||
cpmm.addMessageListener('Keyboard:GetContext:Result:OK', this);
|
||||
cpmm.addMessageListener('Keyboard:LayoutsChange', this);
|
||||
|
||||
// If there already is an active context, then this will trigger
|
||||
// a GetContext:Result:OK event, and we can initialize ourselves.
|
||||
|
@ -296,6 +300,7 @@ MozInputMethod.prototype = {
|
|||
cpmm.removeMessageListener('Keyboard:FocusChange', this);
|
||||
cpmm.removeMessageListener('Keyboard:SelectionChange', this);
|
||||
cpmm.removeMessageListener('Keyboard:GetContext:Result:OK', this);
|
||||
cpmm.removeMessageListener('Keyboard:LayoutsChange', this);
|
||||
|
||||
this._window = null;
|
||||
this._mgmt = null;
|
||||
|
@ -320,6 +325,9 @@ MozInputMethod.prototype = {
|
|||
case 'Keyboard:GetContext:Result:OK':
|
||||
this.setInputContext(json);
|
||||
break;
|
||||
case 'Keyboard:LayoutsChange':
|
||||
this._layouts = json;
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -349,9 +357,14 @@ MozInputMethod.prototype = {
|
|||
if (this._inputcontext) {
|
||||
this._inputcontext.destroy();
|
||||
this._inputcontext = null;
|
||||
this._mgmt._supportsSwitching = false;
|
||||
}
|
||||
|
||||
if (data) {
|
||||
this._mgmt._supportsSwitching = this._layouts[data.type] ?
|
||||
this._layouts[data.type] > 1 :
|
||||
false;
|
||||
|
||||
this._inputcontext = new MozInputContext(data);
|
||||
this._inputcontext.init(this._window);
|
||||
}
|
||||
|
|
|
@ -9,8 +9,17 @@ this.EXPORTED_SYMBOLS = ["WebappsUpdater"];
|
|||
const Cc = Components.classes;
|
||||
const Cu = Components.utils;
|
||||
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "settings",
|
||||
"@mozilla.org/settingsService;1",
|
||||
"nsISettingsService");
|
||||
|
||||
function debug(aStr) {
|
||||
//dump("--*-- WebappsUpdater: " + aStr);
|
||||
}
|
||||
|
||||
this.WebappsUpdater = {
|
||||
_checkingApps: false,
|
||||
_pendingEvents: [],
|
||||
|
@ -29,7 +38,7 @@ this.WebappsUpdater = {
|
|||
let browser = Services.wm.getMostRecentWindow("navigator:browser");
|
||||
if (!browser) {
|
||||
this._pendingEvents.push(detail);
|
||||
dump("Warning: Couldn't send update event " + aType +
|
||||
debug("Warning: Couldn't send update event " + aType +
|
||||
": no content browser. Will send again when content becomes available.");
|
||||
return false;
|
||||
}
|
||||
|
@ -39,8 +48,8 @@ this.WebappsUpdater = {
|
|||
},
|
||||
|
||||
_appsUpdated: function(aApps) {
|
||||
dump("appsUpdated: " + aApps.length + " apps to update");
|
||||
let lock = Services.settings.createLock();
|
||||
debug("appsUpdated: " + aApps.length + " apps to update");
|
||||
let lock = settings.createLock();
|
||||
lock.set("apps.updateStatus", "check-complete", null);
|
||||
this.sendChromeEvent("apps-update-check", { apps: aApps });
|
||||
this._checkingApps = false;
|
||||
|
@ -49,7 +58,7 @@ this.WebappsUpdater = {
|
|||
// Trigger apps update check and wait for all to be done before
|
||||
// notifying gaia.
|
||||
updateApps: function() {
|
||||
dump("updateApps (" + this._checkingApps + ")");
|
||||
debug("updateApps (" + this._checkingApps + ")");
|
||||
// Don't start twice.
|
||||
if (this._checkingApps) {
|
||||
return;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"revision": "9e3d2b3f6706916168b9ad9bb96084c01df8771f",
|
||||
"revision": "4ab5602bc5338c921426cf44e8fbc1b2ddd69290",
|
||||
"repo_path": "/integration/gaia-central"
|
||||
}
|
||||
|
|
|
@ -1,17 +1,18 @@
|
|||
{
|
||||
"config_version": 1,
|
||||
"tooltool_manifest": "releng-otoro.tt",
|
||||
"mock_target": "mozilla-centos6-i386",
|
||||
"mock_packages": ["ccache", "make", "bison", "flex", "gcc", "g++", "mpfr", "zlib-devel", "ncurses-devel", "zip", "autoconf213", "glibc-static", "perl-Digest-SHA", "wget", "alsa-lib", "atk", "cairo", "dbus-glib", "fontconfig", "freetype", "glib2", "gtk2", "libXRender", "libXt", "pango", "mozilla-python27-mercurial", "openssh-clients", "nss-devel", "java-1.6.0-openjdk-devel"],
|
||||
"config_version": 2,
|
||||
"tooltool_manifest": "releng-mako.tt",
|
||||
"mock_target": "mozilla-centos6-x86_64",
|
||||
"mock_packages": ["ccache", "make", "bison", "flex", "gcc", "g++", "mpfr", "zlib-devel", "ncurses-devel", "zip", "autoconf213", "glibc-static", "perl-Digest-SHA", "wget", "alsa-lib", "atk", "cairo", "dbus-glib", "fontconfig", "freetype", "glib2", "gtk2", "libXRender", "libXt", "pango", "mozilla-python27-mercurial", "openssh-clients", "nss-devel", "glibc-devel.i686", "libstdc++.i686", "zlib-devel.i686", "ncurses-devel.i686", "libX11-devel.i686", "mesa-libGL-devel.i686", "mesa-libGL-devel", "libX11-devel", "git", "libxml2"],
|
||||
"mock_files": [["/home/cltbld/.ssh", "/home/mock_mozilla/.ssh"]],
|
||||
"build_targets": [],
|
||||
"upload_files": [
|
||||
"{objdir}/dist/b2g-*.crashreporter-symbols.zip",
|
||||
"{objdir}/dist/b2g-*.tar.gz",
|
||||
"{workdir}/sources.xml"
|
||||
],
|
||||
"zip_files": [
|
||||
["{workdir}/out/target/product/otoro/*.img", "out/target/product/otoro/"],
|
||||
["{workdir}/boot.img", "out/target/product/otoro/"],
|
||||
["{workdir}/out/target/product/mako/*.img", "out/target/product/mako/"],
|
||||
["{workdir}/boot.img", "out/target/product/mako/"],
|
||||
"{workdir}/flash.sh",
|
||||
"{workdir}/load-config.sh",
|
||||
"{workdir}/.config",
|
||||
|
@ -22,6 +23,9 @@
|
|||
"MOZILLA_OFFICIAL": "1",
|
||||
"B2GUPDATER": "1"
|
||||
},
|
||||
"b2g_manifest": "nexus-4.xml",
|
||||
"b2g_manifest_branch": "master",
|
||||
"additional_source_tarballs": [],
|
||||
"gecko_l10n_root": "http://hg.mozilla.org/l10n-central",
|
||||
"gaia": {
|
||||
"l10n": {
|
|
@ -0,0 +1,21 @@
|
|||
[
|
||||
{
|
||||
"size": 13111,
|
||||
"digest": "09373556ddb4325897b9e008184228f9088b4c8c22bacf4fa2d39793ecfd264316ad69c2bc8082229ad7fdb80f89154c7b995a60f9b18beb1847e7111e7e69b2",
|
||||
"algorithm": "sha512",
|
||||
"filename": "broadcom-mako-jwr66v-cbde0d61.tgz"
|
||||
},
|
||||
{
|
||||
"size": 12658359,
|
||||
"digest": "2483df1a949df53d02ca33a87731cedd8f7cd07114d723bde1addf63fd71154c23b6f11f64f390b9849121725fb53a402db8df2f96a3673ec52416f45260f79d",
|
||||
"algorithm": "sha512",
|
||||
"filename": "qcom-mako-jwr66v-30ef957c.tgz"
|
||||
},
|
||||
{
|
||||
"size": 378532,
|
||||
"digest": "27aced8feb0e757d61df37839e62410ff30a059cfa8f04897d29ab74b787c765313acf904b1f9cf311c3e682883514df7da54197665251ef9b8bdad6bd0f62c5",
|
||||
"algorithm": "sha512",
|
||||
"filename": "lge-mako-jwr66v-985845e4.tgz"
|
||||
}
|
||||
]
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
[
|
||||
{
|
||||
"size": 896371048,
|
||||
"digest": "73e89a23226726739c60b2e5be00da9d24d7ab8a39d60cf4c84a0ebf1d16a0cb1ff92440e72a6bdeef44cc7252a13d0bdd8a08770c858a5abce3f0bcea7a17ce",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gonk.tar.xz"
|
||||
},
|
||||
{
|
||||
"size": 4139008,
|
||||
"digest": "6f65553e882316582b944e46c659915a1b907c4a326104cb31d81356330dddacba757e3eafbd282063da0e670c3c5d6b9a0905ab88da84b47848d810c37571cb",
|
||||
"algorithm": "sha512",
|
||||
"filename": "boot.img"
|
||||
}
|
||||
]
|
|
@ -1,229 +0,0 @@
|
|||
All the parts of B2G written by Mozilla are free software, under the MPL 2 and
|
||||
other licenses.
|
||||
|
||||
However, this directory contains system images for use with the PandaBoard, and
|
||||
these images require proprietary drivers to function. The full license terms
|
||||
for those drivers are included below. The "Authorized Android Enabled Device"
|
||||
is the PandaBoard. Your attention is particularly drawn to the fact that the
|
||||
license only gives permission for Imagination Technologies' software (the
|
||||
drivers) to be used on certain devices, and only non-commercially (section 2a).
|
||||
Alternative terms may be available from Imagination Technologies.
|
||||
|
||||
THIS DEVELOPER SOFTWARE LICENSE AGREEMENT (THE "AGREEMENT") IS A LEGALLY
|
||||
BINDING AGREEMENT BETWEEN IMAGINATION TECHNOLOGIES LTD. ("LICENSOR") AND
|
||||
YOU OR THE LEGAL ENTITY YOU REPRESENT ("You" or its possessive, "Your"). BY
|
||||
TYPING "I ACCEPT" WHERE INDICATED YOU ACKNOWLEDGE THAT YOU HAVE READ THIS
|
||||
AGREEMENT, UNDERSTAND IT AND AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS. IF
|
||||
YOU DO NOT AGREE TO THESE TERMS YOU MUST DISCONTINUE THE INSTALLATION PROCESS
|
||||
AND YOU SHALL NOT USE THE SOFTWARE OR RETAIN ANY COPIES OF THE SOFTWARE OR
|
||||
DOCUMENTATION. ANY USE OR POSSESSION OF THE SOFTWARE BY YOU IS SUBJECT TO THE
|
||||
TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT. IF THE SOFTWARE IS INSTALLED
|
||||
ON A COMPUTER OWNED BY A CORPORATION OR OTHER LEGAL ENTITY, THEN YOU REPRESENT
|
||||
AND WARRANT THAT YOU HAVE THE AUTHORITY TO BIND SUCH ENTITY TO THE TERMS AND
|
||||
CONDITIONS OF THIS AGREEMENT.
|
||||
|
||||
1. Special Definitions
|
||||
|
||||
a. The term "Android" means the open source mobile platform, software
|
||||
stack, operating system, middleware, application programming
|
||||
interfaces and mobile applications under the trade-name "Android"
|
||||
distributed at Android.com.
|
||||
|
||||
b. The term "Android Applications" means a software application or
|
||||
open-source contribution developed by You, designed to operate with
|
||||
Android that does not contain or incorporate any of the Software.
|
||||
|
||||
c. The term "Authorized Android Enabled Device" means only the device
|
||||
identified on the site from which You downloaded the Software.
|
||||
The term "Software" means the Licensor's proprietary software and
|
||||
libraries in object code form, designed for use on the Authorized
|
||||
Android Enabled Device.
|
||||
|
||||
d. The term "Authorized Android Enabled Device Software" means a
|
||||
packaged build for Authorized Android Enabled Devices, consisting of
|
||||
files suitable for installation on an Authorized Android Enabled
|
||||
Device using a mechanism such as fastboot mode or recovery mode.
|
||||
|
||||
2. License Grant
|
||||
|
||||
a. Subject to the terms of this Agreement, Licensor hereby grants to
|
||||
You, free of charge, a non-exclusive, non-sublicensable,
|
||||
non-transferable, limited license, during the term of this Agreement,
|
||||
to download, install and use the Software internally in
|
||||
machine-readable (i.e., object code) form and the Documentation for
|
||||
non-commercial use on an Authorized Android Enabled Device and
|
||||
non-commercial redistribution of the Authorized Android Enabled
|
||||
Device Software (the "Limited Purpose"). You may grant your end users
|
||||
the right to use the Software for the Limited Purpose. The license to
|
||||
the Software granted to You hereunder is solely for the Limited
|
||||
Purpose set forth in this section, and the Software shall not be used
|
||||
for any other purpose.
|
||||
|
||||
3. Restrictions
|
||||
|
||||
a. Retention of Rights. The entire right, title and interest in the
|
||||
Software shall remain with Licensor and, unless specified in writing
|
||||
hereunder, no rights are granted to any of the Software. Except for
|
||||
the right to use the Software for the Limited Purpose, the delivery
|
||||
of the Software to You does not convey to You any intellectual
|
||||
property rights in the Software, including, but not limited to any
|
||||
rights under any patent, trademark, copyright, or trade secret.
|
||||
Neither the delivery of the Software to You nor any terms set forth
|
||||
herein shall be construed to grant to You, either expressly, by
|
||||
implication or by way of estoppel, any license under any patents or
|
||||
other intellectual property rights covering or relating to any other
|
||||
product or invention or any combination of the Software with any
|
||||
other product. Any rights not expressly granted to You herein are
|
||||
reserved by Licensor.
|
||||
|
||||
b. No Commercialization or Distribution of the Software and
|
||||
Documentation. Except as expressly provided in Section 2 of this
|
||||
Agreement, You shall have no right to (i) copy, disclose, distribute,
|
||||
publically perform, publically display, transfer, alter, modify,
|
||||
translate, disassemble, decompile, reverse engineer, or adapt the
|
||||
Software and Documentation, or any portion thereof, or create any
|
||||
derivative works based thereon; (ii) rent, lease, assign, sublicense,
|
||||
resell, disclose or otherwise transfer the Software and Documentation
|
||||
in whole or in part to any third party (iii) use the Software and
|
||||
Documentation except for the Limited Purpose, (iv) remove or alter
|
||||
any of the copyright or proprietary notices contained in any of the
|
||||
Software and Documentation. For the purposes of clarity, nothing in
|
||||
this Agreement prohibits You from making and distributing Android
|
||||
Applications under commercial or non-commercial terms, provided that
|
||||
You shall not contain, incorporate, and/or compile the Software or
|
||||
any of its derivative works, in whole or in part, into Your Android
|
||||
Applications and/or any software/devices created by You or by third
|
||||
parties acting on Your behalf. You and any such third party shall
|
||||
comply with all of the terms and conditions of this Agreement.
|
||||
|
||||
c. No Reverse Engineering. Except for any portions of the Software
|
||||
provided to You in source code format and except for any third party
|
||||
code distributed with the Software that is licensed under contrary
|
||||
terms, You will not reverse engineer, disassemble,
|
||||
decompile, or translate the Software, or otherwise attempt to derive
|
||||
the source code version of the Software, except if and to the extent
|
||||
expressly permitted under any applicable law.
|
||||
|
||||
d. Third Party Software. You agree that Android may contain third party
|
||||
software. You agree that you may not distribute such third party
|
||||
software for any purpose without appropriate licenses from the
|
||||
applicable third party or parties.
|
||||
|
||||
e. No Transfer or Assignment. You shall not assign any of its rights or
|
||||
obligations under this Agreement. Any attempted assignment in
|
||||
contravention of this Section shall be void.
|
||||
|
||||
4. Indemnity
|
||||
|
||||
a. You agree to indemnify and hold harmless Licensor and its officers,
|
||||
directors, customers, employees and successors and assigns (each an
|
||||
"Indemnified Party") against any and all claims, demands, causes of
|
||||
action, losses, liabilities, damages, costs and expenses, incurred by
|
||||
the Indemnified Party (including but not limited to costs of defense,
|
||||
investigation and reasonable attorney's fees) arising out of,
|
||||
resulting from or related to (i) any software, products,
|
||||
documentation, content, materials or derivative works created or
|
||||
developed by You using the Software which causes an infringement of
|
||||
any patent, copyright, trademark, trade secret, or other property,
|
||||
publicity or privacy rights of any third parties arising in any
|
||||
jurisdiction anywhere in the world, (ii) the download, distribution,
|
||||
installation, storage, execution, use or transfer of such software,
|
||||
products, documentation, content, materials or derivative works by
|
||||
any person or entity, and/or (iii) any breach of this Agreement by
|
||||
You. If requested by an Indemnified Party, You agree to defend such
|
||||
Indemnified Party in connection with any third party claims, demands,
|
||||
or causes of action resulting from, arising out of or in connection
|
||||
with any of the foregoing.
|
||||
|
||||
5. Limitation of Liability
|
||||
|
||||
a. TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE LAWS, UNDER NO
|
||||
CIRCUMSTANCES, INCLUDING WITHOUT LIMITATION NEGLIGENCE, SHALL
|
||||
LICENSOR, ITS AFFILIATES AND/OR ITS DIRECTORS, OFFICERS, EMPLOYEES OR
|
||||
AGENTS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT LIMITED TO DAMAGES FOR LOSS
|
||||
OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
|
||||
INFORMATION AND THE LIKE) ARISING OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR ANY DOWNLOAD, INSTALLATION OR USE OF, OR INABILITY TO
|
||||
USE, THE SOFTWARE, EVEN IF LICENSOR HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE
|
||||
LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL
|
||||
DAMAGES SO THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY OR MAY BE
|
||||
LIMITED. IN NO EVENT SHALL LICENSOR'S TOTAL AGGREGATE LIABILITY TO
|
||||
YOU FOR ANY AND ALL DAMAGES, LOSSES, CLAIMS AND CAUSES OF ACTIONS
|
||||
(WHETHER IN CONTRACT, TORT, INCLUDING NEGLIGENCE, INDEMNIFICATION OR
|
||||
OTHERWISE) EXCEED ONE HUNDRED U.S. DOLLARS (US00). THE LIMITATIONS
|
||||
SET FORTH IN THIS PARAGRAPH SHALL BE DEEMED TO APPLY TO THE MAXIMUM
|
||||
EXTENT PERMITTED BY APPLICABLE LAW. THE PARTIES HAVE FULLY CONSIDERED
|
||||
THE FOREGOING ALLOCATION OF RISK AND FIND IT REASONABLE, AND THAT THE
|
||||
FOREGOING LIMITATIONS IN THIS PARAGRAPH ARE AN ESSENTIAL BASIS OF
|
||||
THE BARGAIN BETWEEN THE PARTIES.
|
||||
|
||||
6. No Warranty
|
||||
|
||||
a. LICENSOR MAKES NO WARRANTIES, EXPRESS OR IMPLIED, WITH RESPECT TO THE
|
||||
SOFTWARE AND DOCUMENTATION PROVIDED UNDER THIS AGREEMENT, INCLUDING
|
||||
BUT NOT LIMITED TO ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A
|
||||
PARTICULAR PURPOSE OR AGAINST INFRINGEMENT, OR ANY EXPRESS OR IMPLIED
|
||||
WARRANTY ARISING OUT OF TRADE USAGE OR OUT OF A COURSE OF DEALING OR
|
||||
COURSE OF PERFORMANCE. NOTHING CONTAINED IN THIS AGREEMENT SHALL BE
|
||||
CONSTRUED AS A WARRANTY OR REPRESENTATION BY LICENSOR (I) AS TO THE
|
||||
VALIDITY OR SCOPE OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL
|
||||
PROPERTY RIGHT AND (II) THAT ANY MANUFACTURE OR USE WILL BE FREE FROM
|
||||
INFRINGEMENT OF PATENTS, COPYRIGHTS OR OTHER INTELLECTUAL PROPERTY
|
||||
RIGHTS OF OTHERS, AND IT SHALL BE THE SOLE RESPONSIBILITY OF YOU TO
|
||||
MAKE SUCH DETERMINATION AS IS NECESSARY WITH RESPECT TO THE
|
||||
ACQUISITION OF LICENSES UNDER PATENTS AND OTHER INTELLECTUAL PROPERTY
|
||||
OF THIRD PARTIES. LICENSOR SHALL NOT HAVE ANY OBLIGATION TO PROVIDE
|
||||
ANY TECHNICAL SUPPORT OF THE SOFTWARE UNDER THIS AGREEMENT.
|
||||
|
||||
7. Term and Termination
|
||||
|
||||
a. This Agreement shall be effective on the date You accept this
|
||||
Agreement and shall remain in effect until terminated as provided
|
||||
herein. You may terminate the Agreement at any time by deleting and
|
||||
destroying all copies of the Software and all related information in
|
||||
Your possession or control. This Agreement terminates immediately and
|
||||
automatically, with or without notice, if You fail to comply with any
|
||||
provision hereof. Additionally, Licensor may at any time terminate
|
||||
this Agreement, without cause, upon notice to You. Upon termination
|
||||
You must delete or destroy all copies of the Software in Your
|
||||
possession, and the license granted to You in this Agreement shall
|
||||
terminate. Sections 3, 4, 5, 6 and 8 shall survive the termination of
|
||||
this Agreement.
|
||||
|
||||
8. Miscellaneous
|
||||
|
||||
a. Governing Law. This Agreement is governed and interpreted in
|
||||
accordance with the laws of the State of California without giving
|
||||
effect to its conflict of laws provisions. The United Nations
|
||||
Convention on Contracts for the International Sale of Goods is
|
||||
expressly disclaimed and shall not apply. Any claim arising out of or
|
||||
related to this Agreement must be brought exclusively in a federal or
|
||||
state court located in Santa Clara County, California and You consent
|
||||
to the jurisdiction and venue of such courts.
|
||||
|
||||
b. Waiver and Severability. The failure of either party to require
|
||||
performance by the other party of any provision of this Agreement
|
||||
shall not affect the full right to require such performance at any
|
||||
time thereafter; nor shall the waiver by either party of a breach of
|
||||
any provision of this Agreement be taken or held to be a waiver of
|
||||
the provision itself. Severability. If any provision of this
|
||||
Agreement is unenforceable or invalid under any applicable law or is
|
||||
so held by applicable court decision, such unenforceability or
|
||||
invalidity shall not render this Agreement unenforceable or invalid
|
||||
as a whole, and such provision shall be changed and interpreted so as
|
||||
to best accomplish the objectives of such unenforceable or invalid
|
||||
provision within the limits of applicable law or applicable court
|
||||
decisions.
|
||||
|
||||
c. Amendment and Modification. This Agreement and any of its terms and
|
||||
provisions may only be amended, modified, supplemented or waived in a
|
||||
writing signed by both parties hereto.
|
||||
|
||||
d. Compliance with Laws. You shall comply with all applicable laws,
|
||||
rules, and regulations in connection with its activities under this
|
||||
Agreement.
|
||||
|
||||
e. Entire Agreement. This Agreement completely and exclusively states
|
||||
the agreement between You and Licensor regarding this subject matter.
|
|
@ -1,23 +0,0 @@
|
|||
{
|
||||
"config_version": 2,
|
||||
"tooltool_manifest": "releng-pandaboard.tt",
|
||||
"mock_target": "mozilla-centos6-i386",
|
||||
"mock_packages": ["ccache", "make", "bison", "flex", "gcc", "g++", "mpfr", "zlib-devel", "ncurses-devel", "zip", "autoconf213", "glibc-static", "perl-Digest-SHA", "wget", "alsa-lib", "atk", "cairo", "dbus-glib", "fontconfig", "freetype", "glib2", "gtk2", "libXRender", "libXt", "pango", "mozilla-python27-mercurial", "openssh-clients", "nss-devel", "git"],
|
||||
"mock_files": [["/home/cltbld/.ssh", "/home/mock_mozilla/.ssh"]],
|
||||
"build_targets": ["boottarball", "systemtarball", "userdatatarball", "package-tests"],
|
||||
"upload_files": [
|
||||
"{workdir}/out/target/product/panda/*.tar.bz2",
|
||||
"{workdir}/out/target/product/panda/tests/*.zip",
|
||||
"{objdir}/dist/b2g-*.crashreporter-symbols.zip",
|
||||
"{srcdir}/b2g/config/panda/README",
|
||||
"{workdir}/sources.xml"
|
||||
],
|
||||
"b2g_manifest": "pandaboard.xml",
|
||||
"gecko_l10n_root": "http://hg.mozilla.org/l10n-central",
|
||||
"gaia": {
|
||||
"l10n": {
|
||||
"vcs": "hgtool",
|
||||
"root": "http://hg.mozilla.org/gaia-l10n"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
[
|
||||
{
|
||||
"size": 2116507,
|
||||
"digest": "be67a012963a5c162834f9fcb989bcebd2d047dcb4e17ee23031b694dcf7cdfd6d7a6545d7a1f5e7293b6d24415403972f4ea1ab8c6c78fefcabfaf3f6875214",
|
||||
"algorithm": "sha512",
|
||||
"filename": "download-panda.tar.bz2"
|
||||
}
|
||||
]
|
|
@ -505,6 +505,11 @@
|
|||
@BINPATH@/components/Push.manifest
|
||||
@BINPATH@/components/PushServiceLauncher.js
|
||||
|
||||
@BINPATH@/components/InterAppComm.manifest
|
||||
@BINPATH@/components/InterAppCommService.js
|
||||
@BINPATH@/components/InterAppConnection.js
|
||||
@BINPATH@/components/InterAppMessagePort.js
|
||||
|
||||
@BINPATH@/components/nsDOMIdentity.js
|
||||
@BINPATH@/components/nsIDService.js
|
||||
@BINPATH@/components/Identity.manifest
|
||||
|
|
|
@ -352,6 +352,10 @@ pref("browser.download.panel.shown", false);
|
|||
// enabled has been completed already.
|
||||
pref("browser.download.panel.firstSessionCompleted", false);
|
||||
|
||||
#ifndef XP_MACOSX
|
||||
pref("browser.helperApps.deleteTempFileOnExit", true);
|
||||
#endif
|
||||
|
||||
// search engines URL
|
||||
pref("browser.search.searchEnginesURL", "https://addons.mozilla.org/%LOCALE%/firefox/search-engines/");
|
||||
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
<!ENTITY % browserDTD
|
||||
SYSTEM "chrome://browser/locale/browser.dtd">
|
||||
%browserDTD;
|
||||
<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
|
||||
%brandDTD;
|
||||
|
||||
]>
|
||||
|
||||
|
@ -30,6 +32,11 @@
|
|||
<p id="helper-error-msg">&tabCrashed.message;</p>
|
||||
</div>
|
||||
|
||||
<div id="report-box">
|
||||
<input type="checkbox" id="checkSendReport" checked="checked"/>
|
||||
<label for="checkSendReport">&tabCrashed.checkSendReport;</label>
|
||||
</div>
|
||||
|
||||
<div id="button-box">
|
||||
<button id="tryAgain">&tabCrashed.tryAgain;</button>
|
||||
</div>
|
||||
|
|
|
@ -102,7 +102,7 @@ let gBrowserThumbnails = {
|
|||
|
||||
_capture: function Thumbnails_capture(aBrowser) {
|
||||
if (this._shouldCapture(aBrowser))
|
||||
PageThumbs.captureAndStore(aBrowser);
|
||||
PageThumbs.captureAndStoreIfStale(aBrowser);
|
||||
},
|
||||
|
||||
_delayedCapture: function Thumbnails_delayedCapture(aBrowser) {
|
||||
|
|
|
@ -544,7 +544,6 @@ statuspanel {
|
|||
-moz-binding: url("chrome://browser/content/tabbrowser.xml#statuspanel");
|
||||
position: fixed;
|
||||
margin-top: -3em;
|
||||
left: 0;
|
||||
max-width: calc(100% - 5px);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
|
|
@ -137,6 +137,11 @@ XPCOMUtils.defineLazyModuleGetter(this, "SitePermissions",
|
|||
XPCOMUtils.defineLazyModuleGetter(this, "SessionStore",
|
||||
"resource:///modules/sessionstore/SessionStore.jsm");
|
||||
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "TabCrashReporter",
|
||||
"resource:///modules/TabCrashReporter.jsm");
|
||||
#endif
|
||||
|
||||
let gInitialPages = [
|
||||
"about:blank",
|
||||
"about:newtab",
|
||||
|
@ -170,6 +175,10 @@ let gInitialPages = [
|
|||
|
||||
XPCOMUtils.defineLazyGetter(this, "Win7Features", function () {
|
||||
#ifdef XP_WIN
|
||||
// Bug 666808 - AeroPeek support for e10s
|
||||
if (gMultiProcessBrowser)
|
||||
return null;
|
||||
|
||||
const WINTASKBAR_CONTRACTID = "@mozilla.org/windows-taskbar;1";
|
||||
if (WINTASKBAR_CONTRACTID in Cc &&
|
||||
Cc[WINTASKBAR_CONTRACTID].getService(Ci.nsIWinTaskbar).available) {
|
||||
|
@ -1042,6 +1051,11 @@ var gBrowserInit = {
|
|||
// Ensure login manager is up and running.
|
||||
Services.logins;
|
||||
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
if (gMultiProcessBrowser)
|
||||
TabCrashReporter.init();
|
||||
#endif
|
||||
|
||||
if (mustLoadSidebar) {
|
||||
let sidebar = document.getElementById("sidebar");
|
||||
let sidebarBox = document.getElementById("sidebar-box");
|
||||
|
@ -1135,11 +1149,8 @@ var gBrowserInit = {
|
|||
gBrowser.mPanelContainer.addEventListener("PreviewBrowserTheme", LightWeightThemeWebInstaller, false, true);
|
||||
gBrowser.mPanelContainer.addEventListener("ResetBrowserThemePreview", LightWeightThemeWebInstaller, false, true);
|
||||
|
||||
// Bug 666808 - AeroPeek support for e10s
|
||||
if (!gMultiProcessBrowser) {
|
||||
if (Win7Features)
|
||||
Win7Features.onOpenWindow();
|
||||
}
|
||||
if (Win7Features)
|
||||
Win7Features.onOpenWindow();
|
||||
|
||||
// called when we go into full screen, even if initiated by a web page script
|
||||
window.addEventListener("fullscreen", onFullScreen, true);
|
||||
|
@ -2497,6 +2508,12 @@ let BrowserOnClick = {
|
|||
|
||||
let button = aEvent.originalTarget;
|
||||
if (button.id == "tryAgain") {
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
if (aOwnerDoc.getElementById("checkSendReport").checked) {
|
||||
let browser = gBrowser.getBrowserForDocument(aOwnerDoc);
|
||||
TabCrashReporter.submitCrashReport(browser);
|
||||
}
|
||||
#endif
|
||||
openUILinkIn(button.getAttribute("url"), "current");
|
||||
}
|
||||
},
|
||||
|
@ -3655,8 +3672,7 @@ var XULBrowserWindow = {
|
|||
return this.reloadCommand = document.getElementById("Browser:Reload");
|
||||
},
|
||||
get statusTextField () {
|
||||
delete this.statusTextField;
|
||||
return this.statusTextField = document.getElementById("statusbar-display");
|
||||
return gBrowser.getStatusPanel();
|
||||
},
|
||||
get isImage () {
|
||||
delete this.isImage;
|
||||
|
@ -3676,7 +3692,6 @@ var XULBrowserWindow = {
|
|||
delete this.throbberElement;
|
||||
delete this.stopCommand;
|
||||
delete this.reloadCommand;
|
||||
delete this.statusTextField;
|
||||
delete this.statusText;
|
||||
},
|
||||
|
||||
|
@ -4267,6 +4282,11 @@ var TabsProgressListener = {
|
|||
if (event.target.documentElement)
|
||||
event.target.documentElement.removeAttribute("hasBrowserHandlers");
|
||||
}, true);
|
||||
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
if (doc.documentURI.startsWith("about:tabcrashed"))
|
||||
TabCrashReporter.onAboutTabCrashedLoad(aBrowser);
|
||||
#endif
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -1026,7 +1026,6 @@
|
|||
autocompletepopup="PopupAutoComplete"
|
||||
selectpopup="ContentSelectDropdown"/>
|
||||
<chatbar id="pinnedchats" layer="true" mousethrough="always" hidden="true"/>
|
||||
<statuspanel id="statusbar-display" inactive="true"/>
|
||||
</vbox>
|
||||
<splitter id="social-sidebar-splitter"
|
||||
class="chromeclass-extrachrome sidebar-splitter"
|
||||
|
|
|
@ -48,8 +48,7 @@ if (Services.prefs.getBoolPref("browser.tabs.remote")) {
|
|||
|
||||
let AboutHomeListener = {
|
||||
init: function(chromeGlobal) {
|
||||
let self = this;
|
||||
chromeGlobal.addEventListener('AboutHomeLoad', function(e) { self.onPageLoad(); }, false, true);
|
||||
chromeGlobal.addEventListener('AboutHomeLoad', () => this.onPageLoad(), false, true);
|
||||
},
|
||||
|
||||
handleEvent: function(aEvent) {
|
||||
|
|
|
@ -134,7 +134,7 @@ Site.prototype = {
|
|||
#ifndef RELEASE_BUILD
|
||||
// request a staleness check for the thumbnail, which will cause page.js
|
||||
// to be notified and call our refreshThumbnail() method.
|
||||
BackgroundPageThumbs.captureIfStale(this.url);
|
||||
BackgroundPageThumbs.captureIfMissing(this.url);
|
||||
// but still display whatever thumbnail might be available now.
|
||||
#endif
|
||||
this.refreshThumbnail();
|
||||
|
|
|
@ -322,11 +322,8 @@ Sanitizer.prototype = {
|
|||
}
|
||||
|
||||
// Clear all completed/cancelled downloads
|
||||
let publicList = yield Downloads.getPublicDownloadList();
|
||||
publicList.removeFinished(filterByTime);
|
||||
|
||||
let privateList = yield Downloads.getPrivateDownloadList();
|
||||
privateList.removeFinished(filterByTime);
|
||||
let list = yield Downloads.getList(Downloads.ALL);
|
||||
list.removeFinished(filterByTime);
|
||||
}.bind(this)).then(null, Components.utils.reportError);
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -198,11 +198,12 @@
|
|||
this.dispatchPanelEvent("socialFrameShow");
|
||||
sizeSocialPanelToContent(this.panel, this.content);
|
||||
} else {
|
||||
this.content.addEventListener("load", function panelBrowserOnload(e) {
|
||||
let panelBrowserOnload = () => {
|
||||
this.content.removeEventListener("load", panelBrowserOnload, true);
|
||||
this.dispatchPanelEvent("socialFrameShow");
|
||||
sizeSocialPanelToContent(this.panel, this.content);
|
||||
}.bind(this), true);
|
||||
};
|
||||
this.content.addEventListener("load", panelBrowserOnload, true);
|
||||
}
|
||||
]]></handler>
|
||||
<handler event="popuphidden"><![CDATA[
|
||||
|
|
|
@ -182,6 +182,27 @@
|
|||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="getStatusPanel">
|
||||
<body><![CDATA[
|
||||
if (!this._statusPanel) {
|
||||
this._statusPanel = document.createElementNS(this.namespaceURI, "statuspanel");
|
||||
this._statusPanel.setAttribute("inactive", "true");
|
||||
this._appendStatusPanel();
|
||||
}
|
||||
return this._statusPanel;
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="_appendStatusPanel">
|
||||
<body><![CDATA[
|
||||
if (this._statusPanel) {
|
||||
let browser = this.selectedBrowser;
|
||||
let browserContainer = this.getBrowserContainer(browser);
|
||||
browserContainer.insertBefore(this._statusPanel, browser.parentNode.nextSibling);
|
||||
}
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<method name="updateWindowResizers">
|
||||
<body><![CDATA[
|
||||
if (!window.gShowPageResizers)
|
||||
|
@ -988,6 +1009,8 @@
|
|||
});
|
||||
}
|
||||
|
||||
this._appendStatusPanel();
|
||||
|
||||
if (updatePageReport)
|
||||
this.mCurrentBrowser.updatePageReport();
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ function onHistoryReady() {
|
|||
itemPrefs.setBoolPref("sessions", false);
|
||||
itemPrefs.setBoolPref("siteSettings", false);
|
||||
|
||||
let publicList = yield Downloads.getPublicDownloadList();
|
||||
let publicList = yield Downloads.getList(Downloads.PUBLIC);
|
||||
let downloadPromise = promiseDownloadRemoved(publicList);
|
||||
|
||||
// Clear 10 minutes ago
|
||||
|
@ -612,7 +612,7 @@ function setupFormHistory() {
|
|||
|
||||
function setupDownloads() {
|
||||
|
||||
let publicList = yield Downloads.getPublicDownloadList();
|
||||
let publicList = yield Downloads.getList(Downloads.PUBLIC);
|
||||
|
||||
let download = yield Downloads.createDownload({
|
||||
source: "https://bugzilla.mozilla.org/show_bug.cgi?id=480169",
|
||||
|
|
|
@ -912,7 +912,7 @@ WindowHelper.prototype = {
|
|||
* The download will be downloaded this many minutes ago
|
||||
*/
|
||||
function addDownloadWithMinutesAgo(aExpectedPathList, aMinutesAgo) {
|
||||
let publicList = yield Downloads.getPublicDownloadList();
|
||||
let publicList = yield Downloads.getList(Downloads.PUBLIC);
|
||||
|
||||
let name = "fakefile-" + aMinutesAgo + "-minutes-ago";
|
||||
let download = yield Downloads.createDownload({
|
||||
|
@ -984,7 +984,7 @@ function blankSlate() {
|
|||
let formHistoryDone = false, downloadsDone = false;
|
||||
|
||||
Task.spawn(function deleteAllDownloads() {
|
||||
let publicList = yield Downloads.getPublicDownloadList();
|
||||
let publicList = yield Downloads.getList(Downloads.PUBLIC);
|
||||
let downloads = yield publicList.getAll();
|
||||
for (let download of downloads) {
|
||||
publicList.remove(download);
|
||||
|
@ -1037,7 +1037,7 @@ function boolPrefIs(aPrefName, aExpectedVal, aMsg) {
|
|||
function downloadExists(aPath)
|
||||
{
|
||||
return Task.spawn(function() {
|
||||
let publicList = yield Downloads.getPublicDownloadList();
|
||||
let publicList = yield Downloads.getList(Downloads.PUBLIC);
|
||||
let listArray = yield publicList.getAll();
|
||||
throw new Task.Result(listArray.some(i => i.target.path == aPath));
|
||||
});
|
||||
|
|
|
@ -38,8 +38,7 @@ const EXPECTED_REFLOWS = [
|
|||
"TabItem__reconnect@chrome://browser/content/tabview.js|" +
|
||||
"TabItem@chrome://browser/content/tabview.js|" +
|
||||
"TabItems_link@chrome://browser/content/tabview.js|" +
|
||||
"@chrome://browser/content/tabview.js|" +
|
||||
"addTab@chrome://browser/content/tabbrowser.xml|",
|
||||
"@chrome://browser/content/tabview.js|",
|
||||
|
||||
// SessionStore.getWindowDimensions()
|
||||
"ssi_getWindowDimension@resource:///modules/sessionstore/SessionStore.jsm|" +
|
||||
|
@ -88,6 +87,7 @@ let observer = {
|
|||
let path = (new Error().stack).split("\n").slice(1).map(line => {
|
||||
return line.replace(/:\d+$/, "");
|
||||
}).join("|");
|
||||
let pathWithLineNumbers = (new Error().stack).split("\n").slice(1).join("|");
|
||||
|
||||
// Stack trace is empty. Reflow was triggered by native code.
|
||||
if (path === "") {
|
||||
|
@ -102,7 +102,7 @@ let observer = {
|
|||
}
|
||||
}
|
||||
|
||||
ok(false, "unexpected uninterruptible reflow '" + path + "'");
|
||||
ok(false, "unexpected uninterruptible reflow '" + pathWithLineNumbers + "'");
|
||||
},
|
||||
|
||||
reflowInterruptible: function (start, end) {
|
||||
|
|
|
@ -640,8 +640,8 @@ DownloadsDataCtor.prototype = {
|
|||
// Start receiving real-time events.
|
||||
if (DownloadsCommon.useJSTransfer) {
|
||||
if (!this._dataLinkInitialized) {
|
||||
let promiseList = this._isPrivate ? Downloads.getPrivateDownloadList()
|
||||
: Downloads.getPublicDownloadList();
|
||||
let promiseList = Downloads.getList(this._isPrivate ? Downloads.PRIVATE
|
||||
: Downloads.PUBLIC);
|
||||
promiseList.then(list => list.addView(this)).then(null, Cu.reportError);
|
||||
this._dataLinkInitialized = true;
|
||||
}
|
||||
|
@ -697,8 +697,8 @@ DownloadsDataCtor.prototype = {
|
|||
removeFinished: function DD_removeFinished()
|
||||
{
|
||||
if (DownloadsCommon.useJSTransfer) {
|
||||
let promiseList = this._isPrivate ? Downloads.getPrivateDownloadList()
|
||||
: Downloads.getPublicDownloadList();
|
||||
let promiseList = Downloads.getList(this._isPrivate ? Downloads.PRIVATE
|
||||
: Downloads.PUBLIC);
|
||||
promiseList.then(list => list.removeFinished())
|
||||
.then(null, Cu.reportError);
|
||||
} else {
|
||||
|
@ -1715,12 +1715,10 @@ DownloadsDataItem.prototype = {
|
|||
*/
|
||||
remove: function DDI_remove() {
|
||||
if (DownloadsCommon.useJSTransfer) {
|
||||
let promiseList = this._download.source.isPrivate
|
||||
? Downloads.getPrivateDownloadList()
|
||||
: Downloads.getPublicDownloadList();
|
||||
promiseList.then(list => list.remove(this._download))
|
||||
.then(() => this._download.finalize(true))
|
||||
.then(null, Cu.reportError);
|
||||
Downloads.getList(Downloads.ALL)
|
||||
.then(list => list.remove(this._download))
|
||||
.then(() => this._download.finalize(true))
|
||||
.then(null, Cu.reportError);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ function promisePanelOpened()
|
|||
function task_resetState()
|
||||
{
|
||||
// Remove all downloads.
|
||||
let publicList = yield Downloads.getPublicDownloadList();
|
||||
let publicList = yield Downloads.getList(Downloads.PUBLIC);
|
||||
let downloads = yield publicList.getAll();
|
||||
for (let download of downloads) {
|
||||
publicList.remove(download);
|
||||
|
@ -88,7 +88,7 @@ function task_addDownloads(aItems)
|
|||
{
|
||||
let startTimeMs = Date.now();
|
||||
|
||||
let publicList = yield Downloads.getPublicDownloadList();
|
||||
let publicList = yield Downloads.getList(Downloads.PUBLIC);
|
||||
for (let item of aItems) {
|
||||
publicList.add(yield Downloads.createDownload({
|
||||
source: "http://www.example.com/test-download.txt",
|
||||
|
|
|
@ -369,6 +369,13 @@ WebContentConverterRegistrar.prototype = {
|
|||
function WCCR_registerProtocolHandler(aProtocol, aURIString, aTitle, aContentWindow) {
|
||||
LOG("registerProtocolHandler(" + aProtocol + "," + aURIString + "," + aTitle + ")");
|
||||
|
||||
var uri = this._checkAndGetURI(aURIString, aContentWindow);
|
||||
|
||||
// If the protocol handler is already registered, just return early.
|
||||
if (this._protocolHandlerRegistered(aProtocol, uri.spec)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var browserWindow = this._getBrowserWindowForContentWindow(aContentWindow);
|
||||
if (PrivateBrowsingUtils.isWindowPrivate(browserWindow)) {
|
||||
// Inside the private browsing mode, we don't want to alert the user to save
|
||||
|
@ -406,25 +413,18 @@ WebContentConverterRegistrar.prototype = {
|
|||
throw("Not allowed to register a protocol handler for " + aProtocol);
|
||||
}
|
||||
|
||||
var uri = this._checkAndGetURI(aURIString, aContentWindow);
|
||||
// Now Ask the user and provide the proper callback
|
||||
var message = this._getFormattedString("addProtocolHandler",
|
||||
[aTitle, uri.host, aProtocol]);
|
||||
|
||||
var buttons, message;
|
||||
if (this._protocolHandlerRegistered(aProtocol, uri.spec))
|
||||
message = this._getFormattedString("protocolHandlerRegistered",
|
||||
[aTitle, aProtocol]);
|
||||
else {
|
||||
// Now Ask the user and provide the proper callback
|
||||
message = this._getFormattedString("addProtocolHandler",
|
||||
[aTitle, uri.host, aProtocol]);
|
||||
var notificationIcon = uri.prePath + "/favicon.ico";
|
||||
var notificationValue = "Protocol Registration: " + aProtocol;
|
||||
var addButton = {
|
||||
label: this._getString("addProtocolHandlerAddButton"),
|
||||
accessKey: this._getString("addHandlerAddButtonAccesskey"),
|
||||
protocolInfo: { protocol: aProtocol, uri: uri.spec, name: aTitle },
|
||||
|
||||
var notificationIcon = uri.prePath + "/favicon.ico";
|
||||
var notificationValue = "Protocol Registration: " + aProtocol;
|
||||
var addButton = {
|
||||
label: this._getString("addProtocolHandlerAddButton"),
|
||||
accessKey: this._getString("addHandlerAddButtonAccesskey"),
|
||||
protocolInfo: { protocol: aProtocol, uri: uri.spec, name: aTitle },
|
||||
|
||||
callback:
|
||||
callback:
|
||||
function WCCR_addProtocolHandlerButtonCallback(aNotification, aButtonInfo) {
|
||||
var protocol = aButtonInfo.protocolInfo.protocol;
|
||||
var uri = aButtonInfo.protocolInfo.uri;
|
||||
|
@ -450,11 +450,8 @@ WebContentConverterRegistrar.prototype = {
|
|||
getService(Ci.nsIHandlerService);
|
||||
hs.store(handlerInfo);
|
||||
}
|
||||
};
|
||||
buttons = [addButton];
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
var buttons;
|
||||
var browserElement = this._getBrowserForContentWindow(browserWindow, aContentWindow);
|
||||
var notificationBox = browserWindow.getBrowser().getNotificationBox(browserElement);
|
||||
notificationBox.appendNotification(message,
|
||||
|
|
|
@ -1619,6 +1619,9 @@ let SessionStoreInternal = {
|
|||
},
|
||||
|
||||
getWindowValue: function ssi_getWindowValue(aWindow, aKey) {
|
||||
if (this._disabledForMultiProcess)
|
||||
return "";
|
||||
|
||||
if ("__SSi" in aWindow) {
|
||||
var data = this._windows[aWindow.__SSi].extData || {};
|
||||
return data[aKey] || "";
|
||||
|
|
|
@ -28,6 +28,9 @@ function test() {
|
|||
is(newBrowser.contentWindow.scrollY, 1200, "still scrolled vertically");
|
||||
|
||||
gBrowser.removeTab(newTab);
|
||||
// Call stopPropagation on the event so we won't fire the
|
||||
// tabbrowser's SSTabRestored listeners.
|
||||
e.stopPropagation();
|
||||
|
||||
finish();
|
||||
}, true);
|
||||
|
|
|
@ -24,17 +24,24 @@ function test() {
|
|||
tabState.entries[0].referrer = REFERRER2;
|
||||
ss.setTabState(tab, JSON.stringify(tabState));
|
||||
|
||||
tab.addEventListener("SSTabRestored", function() {
|
||||
tab.addEventListener("SSTabRestored", function(e) {
|
||||
tab.removeEventListener("SSTabRestored", arguments.callee, true);
|
||||
is(window.content.document.referrer, REFERRER2, "document.referrer matches referrer set via setTabState.");
|
||||
|
||||
gBrowser.removeTab(tab);
|
||||
// Call stopPropagation on the event so we won't fire the
|
||||
// tabbrowser's SSTabRestored listeners.
|
||||
e.stopPropagation();
|
||||
|
||||
let newTab = ss.undoCloseTab(window, 0);
|
||||
newTab.addEventListener("SSTabRestored", function() {
|
||||
newTab.addEventListener("SSTabRestored", function(e) {
|
||||
newTab.removeEventListener("SSTabRestored", arguments.callee, true);
|
||||
|
||||
is(window.content.document.referrer, REFERRER2, "document.referrer is still correct after closing and reopening the tab.");
|
||||
gBrowser.removeTab(newTab);
|
||||
// Call stopPropagation on the event so we won't fire the
|
||||
// tabbrowser's SSTabRestored listeners.
|
||||
e.stopPropagation();
|
||||
|
||||
finish();
|
||||
}, true);
|
||||
|
|
|
@ -98,6 +98,9 @@ function testTabRestoreData(aFormData, aExpectedValues, aCallback) {
|
|||
|
||||
// clean up
|
||||
gBrowser.removeTab(tab);
|
||||
// Call stopPropagation on the event so we won't fire the
|
||||
// tabbrowser's SSTabRestored listeners.
|
||||
aEvent.stopPropagation();
|
||||
aCallback();
|
||||
});
|
||||
|
||||
|
|
|
@ -23,8 +23,8 @@
|
|||
<vbox flex="1">
|
||||
<hbox id="content" flex="1">
|
||||
<vbox id="tabs">
|
||||
<button class="button projects-button" onclick="selectTab('projects')">&index.projects;</button>
|
||||
<button class="button device-button" onclick="selectTab('device')">&index.device;</button>
|
||||
<button class="button projects-button" onclick="selectTab('projects')">&index.projects2;</button>
|
||||
<button class="button device-button" onclick="selectTab('device')">&index.device2;</button>
|
||||
</vbox>
|
||||
<hbox id="tab-panels" flex="1">
|
||||
<iframe flex="1" class="panel projects-panel" src="chrome://browser/content/devtools/app-manager/projects.xhtml"/>
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
<aside id="sidebar">
|
||||
<div id="project-list" template='{"type":"attribute","path":"projects.length","name":"projects-count"}'>
|
||||
<div template-loop='{"arrayPath":"projects","childSelector":"#project-item-template"}'></div>
|
||||
<div id="no-project">&projects.noProject;</div>
|
||||
<div id="no-project">&projects.noProjects;</div>
|
||||
</div>
|
||||
<div id="new-packaged-project" onclick="UI.addPackaged()">&projects.addPackaged;</div>
|
||||
<div id="new-hosted-project">&projects.addHosted;
|
||||
|
|
|
@ -668,7 +668,7 @@ let StackFrameUtils = {
|
|||
getFrameTitle: function(aFrame) {
|
||||
if (aFrame.type == "call") {
|
||||
let c = aFrame.callee;
|
||||
return (c.name || c.userDisplayName || c.displayName || "(anonymous)");
|
||||
return (c.userDisplayName || c.displayName || c.name || "(anonymous)");
|
||||
}
|
||||
return "(" + aFrame.type + ")";
|
||||
},
|
||||
|
@ -702,7 +702,7 @@ let StackFrameUtils = {
|
|||
case "function":
|
||||
let f = aEnv.function;
|
||||
label += " [" +
|
||||
(f.name || f.userDisplayName || f.displayName || "(anonymous)") +
|
||||
(f.userDisplayName || f.displayName || f.name || "(anonymous)") +
|
||||
"]";
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -43,6 +43,8 @@ function inspectNode(aInspector)
|
|||
function performScrollingTest()
|
||||
{
|
||||
executeSoon(function() {
|
||||
// FIXME: this will fail on retina displays. EventUtils will only scroll
|
||||
// 25px down instead of 50.
|
||||
EventUtils.synthesizeWheel(div, 10, 10,
|
||||
{ deltaY: 50.0, deltaMode: WheelEvent.DOM_DELTA_PIXEL },
|
||||
iframe.contentWindow);
|
||||
|
|
|
@ -2,16 +2,64 @@
|
|||
* 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/. */
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
#root-wrapper {
|
||||
overflow: hidden;
|
||||
min-width: 250px;
|
||||
}
|
||||
|
||||
ul.children:not([expanded]) {
|
||||
.children {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.child {
|
||||
margin-left: -1000em;
|
||||
padding-left: 1001em;
|
||||
}
|
||||
|
||||
.tag-line {
|
||||
min-height: 1.4em;
|
||||
line-height: 1.4em;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* Children are indented thanks to their parent's left padding, that means they
|
||||
* are not stretching from edge to edge, which is what we want.
|
||||
* So we insert a pseudo-element and make sure it covers the whole "line" */
|
||||
.tag-line .highlighter {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: -1000em;
|
||||
right: 0;
|
||||
height: 100%;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.expander {
|
||||
display: inline-block;
|
||||
margin-left: -14px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.child.collapsed .child {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.codebox {
|
||||
display: inline-block;
|
||||
.child > .tag-line:first-child .close {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.child.collapsed > .tag-line:first-child .close {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.child.collapsed > .tag-line ~ .tag-line {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.child.collapsed .close {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.newattr {
|
||||
|
@ -19,24 +67,13 @@ ul.children:not([expanded]) {
|
|||
width: 1em;
|
||||
height: 1ex;
|
||||
margin-right: -1em;
|
||||
padding: 1px 0;
|
||||
}
|
||||
|
||||
.newattr:focus {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.closing-bracket {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.summary {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.summary[expanded] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Preview */
|
||||
|
||||
#previewbar {
|
||||
|
|
|
@ -8,19 +8,16 @@ const {Cc, Cu, Ci} = require("chrome");
|
|||
|
||||
// Page size for pageup/pagedown
|
||||
const PAGE_SIZE = 10;
|
||||
|
||||
const PREVIEW_AREA = 700;
|
||||
const DEFAULT_MAX_CHILDREN = 100;
|
||||
|
||||
let {UndoStack} = require("devtools/shared/undo");
|
||||
let EventEmitter = require("devtools/shared/event-emitter");
|
||||
let {editableField, InplaceEditor} = require("devtools/shared/inplace-editor");
|
||||
let promise = require("sdk/core/promise");
|
||||
const {UndoStack} = require("devtools/shared/undo");
|
||||
const {editableField, InplaceEditor} = require("devtools/shared/inplace-editor");
|
||||
const promise = require("sdk/core/promise");
|
||||
|
||||
Cu.import("resource://gre/modules/devtools/LayoutHelpers.jsm");
|
||||
Cu.import("resource://gre/modules/devtools/Templater.jsm");
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
loader.lazyGetter(this, "DOMParser", function() {
|
||||
return Cc["@mozilla.org/xmlextras/domparser;1"].createInstance(Ci.nsIDOMParser);
|
||||
|
@ -192,7 +189,8 @@ MarkupView.prototype = {
|
|||
}
|
||||
break;
|
||||
case Ci.nsIDOMKeyEvent.DOM_VK_RIGHT:
|
||||
if (!this._selectedContainer.expanded) {
|
||||
if (!this._selectedContainer.expanded &&
|
||||
this._selectedContainer.hasChildren) {
|
||||
this._expandContainer(this._selectedContainer);
|
||||
} else {
|
||||
let next = this._selectionWalker().nextNode();
|
||||
|
@ -365,7 +363,7 @@ MarkupView.prototype = {
|
|||
if (mutation.type === "documentUnload") {
|
||||
// Treat this as a childList change of the child (maybe the protocol
|
||||
// should do this).
|
||||
type = "childList"
|
||||
type = "childList";
|
||||
target = mutation.targetParent;
|
||||
if (!target) {
|
||||
continue;
|
||||
|
@ -390,7 +388,6 @@ MarkupView.prototype = {
|
|||
});
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Make sure the given node's parents are expanded and the
|
||||
* node is scrolled on to screen.
|
||||
|
@ -419,7 +416,7 @@ MarkupView.prototype = {
|
|||
{
|
||||
return this._updateChildren(aContainer, true).then(() => {
|
||||
aContainer.expanded = true;
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -807,8 +804,7 @@ MarkupView.prototype = {
|
|||
this._updatePreview();
|
||||
this._previewBar.classList.remove("hide");
|
||||
}.bind(this), 1000);
|
||||
},
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
@ -817,14 +813,13 @@ MarkupView.prototype = {
|
|||
* tree. Manages creation of the editor for the node and
|
||||
* a <ul> for placing child elements, and expansion/collapsing
|
||||
* of the element.
|
||||
*
|
||||
*
|
||||
* @param MarkupView aMarkupView
|
||||
* The markup view that owns this container.
|
||||
* @param DOMNode aNode
|
||||
* The node to display.
|
||||
*/
|
||||
function MarkupContainer(aMarkupView, aNode)
|
||||
{
|
||||
function MarkupContainer(aMarkupView, aNode) {
|
||||
this.markup = aMarkupView;
|
||||
this.doc = this.markup.doc;
|
||||
this.undo = this.markup.undo;
|
||||
|
@ -839,48 +834,43 @@ function MarkupContainer(aMarkupView, aNode)
|
|||
} else if (aNode.nodeType == Ci.nsIDOMNode.DOCUMENT_TYPE_NODE) {
|
||||
this.editor = new DoctypeEditor(this, aNode);
|
||||
} else {
|
||||
this.editor = new GenericEditor(this.markup, aNode);
|
||||
this.editor = new GenericEditor(this, aNode);
|
||||
}
|
||||
|
||||
// The template will fill the following properties
|
||||
this.elt = null;
|
||||
this.expander = null;
|
||||
this.codeBox = null;
|
||||
this.highlighter = null;
|
||||
this.tagLine = null;
|
||||
this.children = null;
|
||||
this.markup.template("container", this);
|
||||
this.elt.container = this;
|
||||
this.children.container = this;
|
||||
|
||||
this.expander.addEventListener("click", function() {
|
||||
this.markup.navigate(this);
|
||||
// Expanding/collapsing the node on dblclick of the whole tag-line element
|
||||
this._onToggle = this._onToggle.bind(this);
|
||||
this.elt.addEventListener("dblclick", this._onToggle, false);
|
||||
this.expander.addEventListener("click", this._onToggle, false);
|
||||
|
||||
this.markup.setNodeExpanded(this.node, !this.expanded);
|
||||
}.bind(this));
|
||||
// Dealing with the highlighting of the row via javascript rather than :hover
|
||||
// This is to allow highlighting the closing tag-line as well as reusing the
|
||||
// theme css classes (which wouldn't have been possible with a :hover pseudo)
|
||||
this._onMouseOver = this._onMouseOver.bind(this);
|
||||
this.elt.addEventListener("mouseover", this._onMouseOver, false);
|
||||
|
||||
this.codeBox.insertBefore(this.editor.elt, this.children);
|
||||
this._onMouseOut = this._onMouseOut.bind(this);
|
||||
this.elt.addEventListener("mouseout", this._onMouseOut, false);
|
||||
|
||||
this.editor.elt.addEventListener("mousedown", function(evt) {
|
||||
this.markup.navigate(this);
|
||||
}.bind(this), false);
|
||||
// Appending the editor element and attaching event listeners
|
||||
this.tagLine.appendChild(this.editor.elt);
|
||||
|
||||
if (this.editor.summaryElt) {
|
||||
this.editor.summaryElt.addEventListener("click", function(evt) {
|
||||
this.markup.navigate(this);
|
||||
this.markup.expandNode(this.node);
|
||||
}.bind(this), false);
|
||||
this.codeBox.appendChild(this.editor.summaryElt);
|
||||
}
|
||||
|
||||
if (this.editor.closeElt) {
|
||||
this.editor.closeElt.addEventListener("mousedown", function(evt) {
|
||||
this.markup.navigate(this);
|
||||
}.bind(this), false);
|
||||
this.codeBox.appendChild(this.editor.closeElt);
|
||||
}
|
||||
this.elt.addEventListener("mousedown", this._onMouseDown.bind(this), false);
|
||||
}
|
||||
|
||||
MarkupContainer.prototype = {
|
||||
toString: function() { return "[MarkupContainer for " + this.node + "]" },
|
||||
toString: function() {
|
||||
return "[MarkupContainer for " + this.node + "]";
|
||||
},
|
||||
|
||||
/**
|
||||
* True if the current node has children. The MarkupView
|
||||
|
@ -909,21 +899,88 @@ MarkupContainer.prototype = {
|
|||
* True if the node has been visually expanded in the tree.
|
||||
*/
|
||||
get expanded() {
|
||||
return this.children.hasAttribute("expanded");
|
||||
return !this.elt.classList.contains("collapsed");
|
||||
},
|
||||
|
||||
set expanded(aValue) {
|
||||
if (aValue) {
|
||||
if (aValue && this.elt.classList.contains("collapsed")) {
|
||||
// Expanding a node means cloning its "inline" closing tag into a new
|
||||
// tag-line that the user can interact with and showing the children.
|
||||
if (this.editor instanceof ElementEditor) {
|
||||
let closingTag = this.elt.querySelector(".close");
|
||||
if (closingTag) {
|
||||
if (!this.closeTagLine) {
|
||||
let line = this.markup.doc.createElement("div");
|
||||
line.classList.add("tag-line");
|
||||
|
||||
let highlighter = this.markup.doc.createElement("div");
|
||||
highlighter.classList.add("highlighter");
|
||||
line.appendChild(highlighter);
|
||||
|
||||
line.appendChild(closingTag.cloneNode(true));
|
||||
line.addEventListener("mouseover", this._onMouseOver, false);
|
||||
line.addEventListener("mouseout", this._onMouseOut, false);
|
||||
|
||||
this.closeTagLine = line;
|
||||
}
|
||||
this.elt.appendChild(this.closeTagLine);
|
||||
}
|
||||
}
|
||||
this.elt.classList.remove("collapsed");
|
||||
this.expander.setAttribute("open", "");
|
||||
this.children.setAttribute("expanded", "");
|
||||
if (this.editor.summaryElt) {
|
||||
this.editor.summaryElt.setAttribute("expanded", "");
|
||||
this.highlighted = false;
|
||||
} else if (!aValue) {
|
||||
if (this.editor instanceof ElementEditor && this.closeTagLine) {
|
||||
this.elt.removeChild(this.closeTagLine);
|
||||
}
|
||||
this.elt.classList.add("collapsed");
|
||||
this.expander.removeAttribute("open");
|
||||
}
|
||||
},
|
||||
|
||||
_onToggle: function(event) {
|
||||
this.markup.navigate(this);
|
||||
if(this.hasChildren) {
|
||||
this.markup.setNodeExpanded(this.node, !this.expanded);
|
||||
}
|
||||
event.stopPropagation();
|
||||
},
|
||||
|
||||
_onMouseOver: function(event) {
|
||||
this.highlighted = true;
|
||||
event.stopPropagation();
|
||||
},
|
||||
|
||||
_onMouseOut: function(event) {
|
||||
this.highlighted = false;
|
||||
event.stopPropagation();
|
||||
},
|
||||
|
||||
_onMouseDown: function(event) {
|
||||
this.highlighted = false;
|
||||
this.markup.navigate(this);
|
||||
event.stopPropagation();
|
||||
},
|
||||
|
||||
_highlighted: false,
|
||||
|
||||
/**
|
||||
* Highlight the currently hovered tag + its closing tag if necessary
|
||||
* (that is if the tag is expanded)
|
||||
*/
|
||||
set highlighted(aValue) {
|
||||
this._highlighted = aValue;
|
||||
if (aValue) {
|
||||
if (!this.selected) {
|
||||
this.highlighter.classList.add("theme-bg-darker");
|
||||
}
|
||||
if (this.closeTagLine) {
|
||||
this.closeTagLine.querySelector(".highlighter").classList.add("theme-bg-darker");
|
||||
}
|
||||
} else {
|
||||
this.expander.removeAttribute("open");
|
||||
this.children.removeAttribute("expanded");
|
||||
if (this.editor.summaryElt) {
|
||||
this.editor.summaryElt.removeAttribute("expanded");
|
||||
this.highlighter.classList.remove("theme-bg-darker");
|
||||
if (this.closeTagLine) {
|
||||
this.closeTagLine.querySelector(".highlighter").classList.remove("theme-bg-darker");
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -931,8 +988,7 @@ MarkupContainer.prototype = {
|
|||
/**
|
||||
* True if the container is visible in the markup tree.
|
||||
*/
|
||||
get visible()
|
||||
{
|
||||
get visible() {
|
||||
return this.elt.getBoundingClientRect().height > 0;
|
||||
},
|
||||
|
||||
|
@ -949,15 +1005,11 @@ MarkupContainer.prototype = {
|
|||
this._selected = aValue;
|
||||
this.editor.selected = aValue;
|
||||
if (this._selected) {
|
||||
this.editor.elt.classList.add("theme-selected");
|
||||
if (this.editor.closeElt) {
|
||||
this.editor.closeElt.classList.add("theme-selected");
|
||||
}
|
||||
this.tagLine.setAttribute("selected", "");
|
||||
this.highlighter.classList.add("theme-selected");
|
||||
} else {
|
||||
this.editor.elt.classList.remove("theme-selected");
|
||||
if (this.editor.closeElt) {
|
||||
this.editor.closeElt.classList.remove("theme-selected");
|
||||
}
|
||||
this.tagLine.removeAttribute("selected");
|
||||
this.highlighter.classList.remove("theme-selected");
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -965,8 +1017,7 @@ MarkupContainer.prototype = {
|
|||
* Update the container's editor to the current state of the
|
||||
* viewed node.
|
||||
*/
|
||||
update: function MC_update()
|
||||
{
|
||||
update: function() {
|
||||
if (this.editor.update) {
|
||||
this.editor.update();
|
||||
}
|
||||
|
@ -975,20 +1026,19 @@ MarkupContainer.prototype = {
|
|||
/**
|
||||
* Try to put keyboard focus on the current editor.
|
||||
*/
|
||||
focus: function MC_focus()
|
||||
{
|
||||
focus: function() {
|
||||
let focusable = this.editor.elt.querySelector("[tabindex]");
|
||||
if (focusable) {
|
||||
focusable.focus();
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Dummy container node used for the root document element.
|
||||
*/
|
||||
function RootContainer(aMarkupView, aNode)
|
||||
{
|
||||
function RootContainer(aMarkupView, aNode) {
|
||||
this.doc = aMarkupView.doc;
|
||||
this.elt = this.doc.createElement("ul");
|
||||
this.elt.container = this;
|
||||
|
@ -997,6 +1047,12 @@ function RootContainer(aMarkupView, aNode)
|
|||
this.toString = function() { return "[root container]"}
|
||||
}
|
||||
|
||||
RootContainer.prototype = {
|
||||
hasChildren: true,
|
||||
expanded: true,
|
||||
update: function() {}
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates an editor for simple nodes.
|
||||
*/
|
||||
|
@ -1117,27 +1173,19 @@ function ElementEditor(aContainer, aNode)
|
|||
this.markup = this.container.markup;
|
||||
this.node = aNode;
|
||||
|
||||
this.attrs = { };
|
||||
this.attrs = {};
|
||||
|
||||
// The templates will fill the following properties
|
||||
this.elt = null;
|
||||
this.tag = null;
|
||||
this.closeTag = null;
|
||||
this.attrList = null;
|
||||
this.newAttr = null;
|
||||
this.summaryElt = null;
|
||||
this.closeElt = null;
|
||||
|
||||
// Create the main editor
|
||||
this.template("element", this);
|
||||
|
||||
if (this.node.hasChildren) {
|
||||
// Create the summary placeholder
|
||||
this.template("elementContentSummary", this);
|
||||
}
|
||||
|
||||
// Create the closing tag
|
||||
this.template("elementClose", this);
|
||||
|
||||
this.rawNode = aNode.rawNode();
|
||||
|
||||
// Make the tag name editable (unless this is a remote node or
|
||||
|
@ -1338,7 +1386,6 @@ ElementEditor.prototype = {
|
|||
for (let attr of attrs) {
|
||||
// Create an attribute editor next to the current attribute if needed.
|
||||
this._createAttribute(attr, aAttrNode ? aAttrNode.nextSibling : null);
|
||||
|
||||
this._saveAttribute(attr.name, aUndoMods);
|
||||
aDoMods.setAttribute(attr.name, attr.value);
|
||||
}
|
||||
|
@ -1414,14 +1461,6 @@ ElementEditor.prototype = {
|
|||
});
|
||||
}).then(null, console.error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
RootContainer.prototype = {
|
||||
hasChildren: true,
|
||||
expanded: true,
|
||||
update: function RC_update() {}
|
||||
};
|
||||
|
||||
function nodeDocument(node) {
|
||||
|
@ -1439,7 +1478,6 @@ function nodeDocument(node) {
|
|||
* An array of attribute names and their values.
|
||||
*/
|
||||
function parseAttributeValues(attr, doc) {
|
||||
|
||||
attr = attr.trim();
|
||||
|
||||
// Handle bad user inputs by appending a " or ' if it fails to parse without them.
|
||||
|
@ -1466,19 +1504,6 @@ function parseAttributeValues(attr, doc) {
|
|||
return attributes.reverse();
|
||||
}
|
||||
|
||||
/**
|
||||
* A tree walker filter for avoiding empty whitespace text nodes.
|
||||
*/
|
||||
function whitespaceTextFilter(aNode)
|
||||
{
|
||||
if (aNode.nodeType == Ci.nsIDOMNode.TEXT_NODE &&
|
||||
!/[^\s]/.exec(aNode.nodeValue)) {
|
||||
return Ci.nsIDOMNodeFilter.FILTER_SKIP;
|
||||
} else {
|
||||
return Ci.nsIDOMNodeFilter.FILTER_ACCEPT;
|
||||
}
|
||||
}
|
||||
|
||||
loader.lazyGetter(MarkupView.prototype, "strings", () => Services.strings.createBundle(
|
||||
"chrome://browser/locale/devtools/inspector.properties"
|
||||
));
|
||||
|
|
|
@ -15,33 +15,36 @@
|
|||
|
||||
</head>
|
||||
<body class="theme-body devtools-monospace" role="application">
|
||||
<div id="root"></div>
|
||||
<div id="root-wrapper">
|
||||
<div id="root"></div>
|
||||
</div>
|
||||
<div id="templates" style="display:none">
|
||||
<ul>
|
||||
<li id="template-container" save="${elt}" class="container"><span save="${codeBox}" class="codebox"><span save="${expander}" class="theme-twisty expander"></span><ul save="${children}" class="children"></ul></span></li>
|
||||
|
||||
<ul class="children">
|
||||
<li id="template-container" save="${elt}" class="child collapsed">
|
||||
<div save="${tagLine}" class="tag-line"><span save="${highlighter}" class="highlighter"></span><span save="${expander}" class="theme-twisty expander"></span></div>
|
||||
<ul save="${children}" class="children"></ul>
|
||||
</li>
|
||||
|
||||
<li id="template-more-nodes" class="more-nodes devtools-class-comment" save="${elt}"><span>${showing}</span> <button href="#" onclick="${allButtonClick}">${showAll}</button></li>
|
||||
</ul>
|
||||
|
||||
<span id="template-element" save="${elt}" class="editor"><span><</span><span save="${tag}" class="tagname theme-fg-color3"></span><span save="${attrList}"></span><span save="${newAttr}" class="newattr" tabindex="0"></span><span class="closing-bracket">></span></span>
|
||||
<span id="template-element" save="${elt}" class="editor"><span class="open"><<span save="${tag}" class="tag theme-fg-color3" tabindex="0"></span><span save="${attrList}"></span><span save="${newAttr}" class="newattr" tabindex="0"></span>></span><span class="close"></<span save="${closeTag}" class="tag theme-fg-color3"></span>></span></span>
|
||||
|
||||
<span id="template-attribute" save="${attr}" data-attr="${attrName}" class="attreditor" style="display:none"> <span class="editable" save="${inner}" tabindex="0"><span save="${name}" class="attrname theme-fg-color2"></span>="<span save="${val}" class="attrvalue theme-fg-color6"></span>"</span></span>
|
||||
<span id="template-attribute" save="${attr}" data-attr="${attrName}" class="attreditor" style="display:none"> <span class="editable" save="${inner}" tabindex="0"><span save="${name}" class="attr-name theme-fg-color2"></span>="<span save="${val}" class="attr-value theme-fg-color6"></span>"</span></span>
|
||||
|
||||
<span id="template-text" save="${elt}" class="editor text">
|
||||
<pre save="${value}" style="display:inline-block;" tabindex="0"></pre>
|
||||
</span>
|
||||
|
||||
<span id="template-comment" save="${elt}" class="editor comment theme-comment">
|
||||
<span><!--</span><pre save="${value}" style="display:inline-block;" tabindex="0"></pre><span>--></span>
|
||||
</span>
|
||||
<span id="template-comment" save="${elt}" class="editor comment theme-comment"><span><!--</span><pre save="${value}" style="display:inline-block;" tabindex="0"></pre><span>--></span></span>
|
||||
|
||||
<span id="template-elementContentSummary" save="${summaryElt}" class="summary"> … </span>
|
||||
<!-- span id="template-elementClose" save="${closeElt}"></<span save="${closeTag}" class="tagname theme-fg-color3"></span>></span -->
|
||||
|
||||
<span id="template-elementClose" save="${closeElt}"></<span save="${closeTag}" class="tagname theme-fg-color3"></span>></span>
|
||||
</div>
|
||||
<div id="previewbar" class="disabled">
|
||||
</div>
|
||||
<div id="previewbar" class="disabled">
|
||||
<div id="preview"/>
|
||||
<div id="viewbox"/>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче