зеркало из https://github.com/mozilla/gecko-dev.git
Merge mozilla-central into services
This commit is contained in:
Коммит
78563e19ec
|
@ -11,9 +11,5 @@ VPATH = @srcdir@
|
|||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
|
||||
EXPORTS = \
|
||||
nsIAccessibilityService.h \
|
||||
$(NULL)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@ FORCE_SHARED_LIB = 1
|
|||
|
||||
SRCS_IN_OBJDIR = 1
|
||||
|
||||
# Please keep this list in sync with the moz.build file until the rest of this
|
||||
# Makefile is ported over.
|
||||
MIDL_INTERFACES = \
|
||||
Accessible2.idl \
|
||||
AccessibleAction.idl \
|
||||
|
@ -39,6 +41,8 @@ MIDL_INTERFACES = \
|
|||
AccessibleValue.idl \
|
||||
$(NULL)
|
||||
|
||||
# Please keep this list in sync with the moz.build file until the rest of this
|
||||
# Makefile is ported over.
|
||||
MIDL_ENUMS = \
|
||||
AccessibleEventId.idl \
|
||||
AccessibleRole.idl \
|
||||
|
@ -46,12 +50,6 @@ MIDL_ENUMS = \
|
|||
IA2CommonTypes.idl \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS = \
|
||||
$(MIDL_INTERFACES:%.idl=%.h) \
|
||||
$(MIDL_INTERFACES:%.idl=%_i.c) \
|
||||
$(MIDL_ENUMS:%.idl=%.h) \
|
||||
$(NULL)
|
||||
|
||||
CSRCS = \
|
||||
dlldata.c \
|
||||
$(MIDL_INTERFACES:%.idl=%_p.c) \
|
||||
|
|
|
@ -6,3 +6,34 @@
|
|||
|
||||
MODULE = 'accessibility'
|
||||
|
||||
# Please keep this list in sync with the Makefile.in until the rest of that file
|
||||
# is ported over.
|
||||
midl_interfaces = [
|
||||
'Accessible2',
|
||||
'AccessibleAction',
|
||||
'AccessibleApplication',
|
||||
'AccessibleComponent',
|
||||
'AccessibleEditableText',
|
||||
'AccessibleHyperlink',
|
||||
'AccessibleHypertext',
|
||||
'AccessibleImage',
|
||||
'AccessibleRelation',
|
||||
'AccessibleTable',
|
||||
'AccessibleTable2',
|
||||
'AccessibleTableCell',
|
||||
'AccessibleText',
|
||||
'AccessibleValue',
|
||||
]
|
||||
|
||||
# Please keep this list in sync with the Makefile.in until the rest of that file
|
||||
# is ported over.
|
||||
midl_enums = [
|
||||
'AccessibleEventId',
|
||||
'AccessibleRole',
|
||||
'AccessibleStates',
|
||||
'IA2CommonTypes',
|
||||
]
|
||||
|
||||
EXPORTS += [x + '.h' for x in midl_enums]
|
||||
EXPORTS += [x + '.h' for x in midl_interfaces]
|
||||
EXPORTS += [x + '_i.c' for x in midl_interfaces]
|
||||
|
|
|
@ -39,3 +39,7 @@ XPIDL_SOURCES += [
|
|||
|
||||
MODULE = 'accessibility'
|
||||
|
||||
EXPORTS += [
|
||||
'nsIAccessibilityService.h',
|
||||
]
|
||||
|
||||
|
|
|
@ -57,15 +57,6 @@ done_gen: ISimpleDOMNode.idl \
|
|||
$(MIDL) $(MIDL_FLAGS) -Oicf $(srcdir)/ISimpleDOMText.idl
|
||||
touch $@
|
||||
|
||||
EXPORTS = \
|
||||
ISimpleDOMNode.h \
|
||||
ISimpleDOMNode_i.c \
|
||||
ISimpleDOMDocument.h \
|
||||
ISimpleDOMDocument_i.c \
|
||||
ISimpleDOMText.h \
|
||||
ISimpleDOMText_i.c \
|
||||
$(NULL)
|
||||
|
||||
export:: done_gen
|
||||
|
||||
# This marshall dll is also registered in the installer
|
||||
|
|
|
@ -6,3 +6,12 @@
|
|||
|
||||
MODULE = 'accessibility'
|
||||
|
||||
EXPORTS += [
|
||||
'ISimpleDOMDocument.h',
|
||||
'ISimpleDOMDocument_i.c',
|
||||
'ISimpleDOMNode.h',
|
||||
'ISimpleDOMNode_i.c',
|
||||
'ISimpleDOMText.h',
|
||||
'ISimpleDOMText_i.c',
|
||||
]
|
||||
|
||||
|
|
|
@ -141,6 +141,8 @@ struct MaiAtkObjectClass
|
|||
|
||||
static guint mai_atk_object_signals [LAST_SIGNAL] = { 0, };
|
||||
|
||||
static void MaybeFireNameChange(AtkObject* aAtkObj, const nsString& aNewName);
|
||||
|
||||
G_BEGIN_DECLS
|
||||
/* callbacks for MaiAtkObject */
|
||||
static void classInitCB(AtkObjectClass *aClass);
|
||||
|
@ -600,16 +602,41 @@ getNameCB(AtkObject* aAtkObj)
|
|||
if (!accWrap)
|
||||
return nullptr;
|
||||
|
||||
nsAutoString uniName;
|
||||
accWrap->Name(uniName);
|
||||
nsAutoString name;
|
||||
accWrap->Name(name);
|
||||
|
||||
NS_ConvertUTF8toUTF16 objName(aAtkObj->name);
|
||||
if (!uniName.Equals(objName))
|
||||
atk_object_set_name(aAtkObj, NS_ConvertUTF16toUTF8(uniName).get());
|
||||
// XXX Firing an event from here does not seem right
|
||||
MaybeFireNameChange(aAtkObj, name);
|
||||
|
||||
return aAtkObj->name;
|
||||
}
|
||||
|
||||
static void
|
||||
MaybeFireNameChange(AtkObject* aAtkObj, const nsString& aNewName)
|
||||
{
|
||||
NS_ConvertUTF16toUTF8 newNameUTF8(aNewName);
|
||||
if (aAtkObj->name && newNameUTF8.Equals(aAtkObj->name))
|
||||
return;
|
||||
|
||||
// Below we duplicate the functionality of atk_object_set_name(),
|
||||
// but without calling atk_object_get_name(). Instead of
|
||||
// atk_object_get_name() we directly access aAtkObj->name. This is because
|
||||
// atk_object_get_name() would call getNameCB() which would call
|
||||
// MaybeFireNameChange() (or atk_object_set_name() before this problem was
|
||||
// fixed) and we would get an infinite recursion.
|
||||
// See http://bugzilla.mozilla.org/733712
|
||||
|
||||
// Do not notify for initial name setting.
|
||||
// See bug http://bugzilla.gnome.org/665870
|
||||
bool notify = !!aAtkObj->name;
|
||||
|
||||
free(aAtkObj->name);
|
||||
aAtkObj->name = strdup(newNameUTF8.get());
|
||||
|
||||
if (notify)
|
||||
g_object_notify(G_OBJECT(aAtkObj), "accessible-name");
|
||||
}
|
||||
|
||||
const gchar *
|
||||
getDescriptionCB(AtkObject *aAtkObj)
|
||||
{
|
||||
|
@ -617,7 +644,7 @@ getDescriptionCB(AtkObject *aAtkObj)
|
|||
if (!accWrap || accWrap->IsDefunct())
|
||||
return nullptr;
|
||||
|
||||
/* nsIAccessible is responsible for the non-nullptr description */
|
||||
/* nsIAccessible is responsible for the nonnull description */
|
||||
nsAutoString uniDesc;
|
||||
accWrap->Description(uniDesc);
|
||||
|
||||
|
@ -975,9 +1002,8 @@ AccessibleWrap::FirePlatformEvent(AccEvent* aEvent)
|
|||
{
|
||||
nsAutoString newName;
|
||||
accessible->Name(newName);
|
||||
NS_ConvertUTF16toUTF8 utf8Name(newName);
|
||||
if (!atkObj->name || !utf8Name.Equals(atkObj->name))
|
||||
atk_object_set_name(atkObj, utf8Name.get());
|
||||
|
||||
MaybeFireNameChange(atkObj, newName);
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -36,17 +36,6 @@ CPPSRCS = \
|
|||
UtilInterface.cpp \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS = \
|
||||
nsAccessNodeWrap.h \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS_NAMESPACES = mozilla/a11y
|
||||
|
||||
EXPORTS_mozilla/a11y = \
|
||||
AccessibleWrap.h \
|
||||
HyperTextAccessibleWrap.h \
|
||||
$(null)
|
||||
|
||||
# we want to force the creation of a static lib.
|
||||
FORCE_STATIC_LIB = 1
|
||||
|
||||
|
|
|
@ -6,3 +6,12 @@
|
|||
|
||||
MODULE = 'accessibility'
|
||||
|
||||
EXPORTS += [
|
||||
'nsAccessNodeWrap.h',
|
||||
]
|
||||
|
||||
EXPORTS.mozilla.a11y += [
|
||||
'AccessibleWrap.h',
|
||||
'HyperTextAccessibleWrap.h',
|
||||
]
|
||||
|
||||
|
|
|
@ -20,11 +20,11 @@
|
|||
|
||||
#include "nsCURILoader.h"
|
||||
#include "nsDocShellLoadTypes.h"
|
||||
#include "nsDOMEvent.h"
|
||||
#include "nsIChannel.h"
|
||||
#include "nsIContentViewer.h"
|
||||
#include "nsIDOMDocument.h"
|
||||
#include "nsEventListenerManager.h"
|
||||
#include "nsIDOMEventTarget.h"
|
||||
#include "nsIDOMWindow.h"
|
||||
#include "nsIInterfaceRequestorUtils.h"
|
||||
#include "nsIWebNavigation.h"
|
||||
|
@ -32,6 +32,7 @@
|
|||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::a11y;
|
||||
using namespace mozilla::dom;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// DocManager
|
||||
|
@ -252,10 +253,8 @@ DocManager::HandleEvent(nsIDOMEvent* aEvent)
|
|||
nsAutoString type;
|
||||
aEvent->GetType(type);
|
||||
|
||||
nsCOMPtr<nsIDOMEventTarget> target;
|
||||
aEvent->GetTarget(getter_AddRefs(target));
|
||||
|
||||
nsCOMPtr<nsIDocument> document(do_QueryInterface(target));
|
||||
nsCOMPtr<nsIDocument> document =
|
||||
do_QueryInterface(aEvent->InternalDOMEvent()->GetTarget());
|
||||
NS_ASSERTION(document, "pagehide or DOMContentLoaded for non document!");
|
||||
if (!document)
|
||||
return NS_OK;
|
||||
|
@ -327,8 +326,8 @@ void
|
|||
DocManager::AddListeners(nsIDocument* aDocument,
|
||||
bool aAddDOMContentLoadedListener)
|
||||
{
|
||||
nsPIDOMWindow *window = aDocument->GetWindow();
|
||||
nsIDOMEventTarget *target = window->GetChromeEventHandler();
|
||||
nsPIDOMWindow* window = aDocument->GetWindow();
|
||||
EventTarget* target = window->GetChromeEventHandler();
|
||||
nsEventListenerManager* elm = target->GetListenerManager(true);
|
||||
elm->AddEventListenerByType(this, NS_LITERAL_STRING("pagehide"),
|
||||
dom::TrustedEventsAtCapture());
|
||||
|
@ -355,7 +354,7 @@ DocManager::RemoveListeners(nsIDocument* aDocument)
|
|||
if (!window)
|
||||
return;
|
||||
|
||||
nsIDOMEventTarget* target = window->GetChromeEventHandler();
|
||||
EventTarget* target = window->GetChromeEventHandler();
|
||||
nsEventListenerManager* elm = target->GetListenerManager(true);
|
||||
elm->RemoveEventListenerByType(this, NS_LITERAL_STRING("pagehide"),
|
||||
dom::TrustedEventsAtCapture());
|
||||
|
|
|
@ -46,30 +46,6 @@ CPPSRCS += \
|
|||
$(NULL)
|
||||
endif
|
||||
|
||||
EXPORTS = \
|
||||
AccEvent.h \
|
||||
nsAccessibilityService.h \
|
||||
nsAccessNode.h \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS_NAMESPACES = mozilla/a11y
|
||||
|
||||
EXPORTS_mozilla/a11y = \
|
||||
DocManager.h \
|
||||
FocusManager.h \
|
||||
AccTypes.h \
|
||||
Platform.h \
|
||||
States.h \
|
||||
SelectionManager.h \
|
||||
Role.h \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_DEBUG
|
||||
EXPORTS_mozilla/a11y += \
|
||||
Logging.h \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
# we don't want the shared lib, but we want to force the creation of a static lib.
|
||||
FORCE_STATIC_LIB = 1
|
||||
|
||||
|
|
|
@ -6,3 +6,23 @@
|
|||
|
||||
MODULE = 'accessibility'
|
||||
|
||||
EXPORTS += [
|
||||
'AccEvent.h',
|
||||
'nsAccessNode.h',
|
||||
'nsAccessibilityService.h',
|
||||
]
|
||||
|
||||
EXPORTS.mozilla.a11y += [
|
||||
'AccTypes.h',
|
||||
'DocManager.h',
|
||||
'FocusManager.h',
|
||||
'Platform.h',
|
||||
'Role.h',
|
||||
'SelectionManager.h',
|
||||
'States.h',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_DEBUG']:
|
||||
EXPORTS.mozilla.a11y += [
|
||||
'Logging.h',
|
||||
]
|
||||
|
|
|
@ -28,14 +28,6 @@ CPPSRCS = \
|
|||
TextLeafAccessible.cpp \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS_NAMESPACES = mozilla/a11y
|
||||
|
||||
EXPORTS_mozilla/a11y = \
|
||||
Accessible.h \
|
||||
DocAccessible.h \
|
||||
HyperTextAccessible.h \
|
||||
$(null)
|
||||
|
||||
# we don't want the shared lib, but we want to force the creation of a static lib.
|
||||
FORCE_STATIC_LIB = 1
|
||||
|
||||
|
|
|
@ -6,3 +6,9 @@
|
|||
|
||||
MODULE = 'accessibility'
|
||||
|
||||
EXPORTS.mozilla.a11y += [
|
||||
'Accessible.h',
|
||||
'DocAccessible.h',
|
||||
'HyperTextAccessible.h',
|
||||
]
|
||||
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
#include "nsINameSpaceManager.h"
|
||||
#include "nsISelectionController.h"
|
||||
#include "jsapi.h"
|
||||
#include "nsIJSContextStack.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsITextControlFrame.h"
|
||||
|
||||
|
@ -472,19 +471,12 @@ HTMLTextFieldAccessible::GetEditor() const
|
|||
// nsGenericHTMLElement::GetEditor has a security check.
|
||||
// Make sure we're not restricted by the permissions of
|
||||
// whatever script is currently running.
|
||||
nsCOMPtr<nsIJSContextStack> stack =
|
||||
do_GetService("@mozilla.org/js/xpc/ContextStack;1");
|
||||
bool pushed = stack && NS_SUCCEEDED(stack->Push(nullptr));
|
||||
nsCxPusher pusher;
|
||||
pusher.PushNull();
|
||||
|
||||
nsCOMPtr<nsIEditor> editor;
|
||||
editableElt->GetEditor(getter_AddRefs(editor));
|
||||
|
||||
if (pushed) {
|
||||
JSContext* cx;
|
||||
stack->Pop(&cx);
|
||||
NS_ASSERTION(!cx, "context should be null");
|
||||
}
|
||||
|
||||
return editor.forget();
|
||||
}
|
||||
|
||||
|
|
|
@ -26,18 +26,6 @@ CMMSRCS = \
|
|||
RootAccessibleWrap.mm \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS = \
|
||||
nsAccessNodeWrap.h \
|
||||
mozAccessibleProtocol.h \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS_NAMESPACES = mozilla/a11y
|
||||
|
||||
EXPORTS_mozilla/a11y = \
|
||||
AccessibleWrap.h \
|
||||
HyperTextAccessibleWrap.h \
|
||||
$(null)
|
||||
|
||||
# we don't want the shared lib, but we want to force the creation of a static lib.
|
||||
FORCE_STATIC_LIB = 1
|
||||
|
||||
|
|
|
@ -6,3 +6,13 @@
|
|||
|
||||
MODULE = 'accessibility'
|
||||
|
||||
EXPORTS += [
|
||||
'mozAccessibleProtocol.h',
|
||||
'nsAccessNodeWrap.h',
|
||||
]
|
||||
|
||||
EXPORTS.mozilla.a11y += [
|
||||
'AccessibleWrap.h',
|
||||
'HyperTextAccessibleWrap.h',
|
||||
]
|
||||
|
||||
|
|
|
@ -19,17 +19,6 @@ CPPSRCS = \
|
|||
Platform.cpp \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS = \
|
||||
nsAccessNodeWrap.h \
|
||||
$(null)
|
||||
|
||||
EXPORTS_NAMESPACES = mozilla/a11y
|
||||
|
||||
EXPORTS_mozilla/a11y = \
|
||||
AccessibleWrap.h \
|
||||
HyperTextAccessibleWrap.h \
|
||||
$(null)
|
||||
|
||||
# we don't want the shared lib, but we want to force the creation of a static lib.
|
||||
FORCE_STATIC_LIB = 1
|
||||
|
||||
|
|
|
@ -6,3 +6,12 @@
|
|||
|
||||
MODULE = 'accessibility'
|
||||
|
||||
EXPORTS += [
|
||||
'nsAccessNodeWrap.h',
|
||||
]
|
||||
|
||||
EXPORTS.mozilla.a11y += [
|
||||
'AccessibleWrap.h',
|
||||
'HyperTextAccessibleWrap.h',
|
||||
]
|
||||
|
||||
|
|
|
@ -28,16 +28,6 @@ CPPSRCS += \
|
|||
ia2AccessibleValue.cpp \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS = \
|
||||
ia2AccessibleValue.h \
|
||||
ia2AccessibleAction.h \
|
||||
ia2AccessibleComponent.h \
|
||||
ia2AccessibleEditableText.h \
|
||||
ia2AccessibleHyperlink.h \
|
||||
ia2AccessibleHypertext.h \
|
||||
ia2AccessibleText.h \
|
||||
$(NULL)
|
||||
|
||||
# The midl generated code include Windows headers which defines min and max
|
||||
# macros which conflicts with std::min/max. Suppress the macros:
|
||||
OS_CXXFLAGS += -DNOMINMAX
|
||||
|
|
|
@ -6,3 +6,13 @@
|
|||
|
||||
MODULE = 'accessibility'
|
||||
|
||||
EXPORTS += [
|
||||
'ia2AccessibleAction.h',
|
||||
'ia2AccessibleComponent.h',
|
||||
'ia2AccessibleEditableText.h',
|
||||
'ia2AccessibleHyperlink.h',
|
||||
'ia2AccessibleHypertext.h',
|
||||
'ia2AccessibleText.h',
|
||||
'ia2AccessibleValue.h',
|
||||
]
|
||||
|
||||
|
|
|
@ -41,18 +41,6 @@ CPPSRCS += \
|
|||
$(NULL)
|
||||
endif
|
||||
|
||||
EXPORTS = \
|
||||
nsAccessNodeWrap.h \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS_NAMESPACES = mozilla/a11y \
|
||||
|
||||
EXPORTS_mozilla/a11y = \
|
||||
AccessibleWrap.h \
|
||||
Compatibility.h \
|
||||
HyperTextAccessibleWrap.h \
|
||||
$(null)
|
||||
|
||||
# we don't want the shared lib, but we want to force the creation of a static lib.
|
||||
FORCE_STATIC_LIB = 1
|
||||
|
||||
|
|
|
@ -6,3 +6,13 @@
|
|||
|
||||
MODULE = 'accessibility'
|
||||
|
||||
EXPORTS += [
|
||||
'nsAccessNodeWrap.h',
|
||||
]
|
||||
|
||||
EXPORTS.mozilla.a11y += [
|
||||
'AccessibleWrap.h',
|
||||
'Compatibility.h',
|
||||
'HyperTextAccessibleWrap.h',
|
||||
]
|
||||
|
||||
|
|
|
@ -13,8 +13,6 @@ include $(DEPTH)/config/autoconf.mk
|
|||
LIBRARY_NAME = accessibility_xpcom_s
|
||||
LIBXUL_LIBRARY = 1
|
||||
|
||||
EXPORTS := xpcAccEvents.h
|
||||
|
||||
CPPSRCS = \
|
||||
xpcAccEvents.cpp \
|
||||
nsAccessibleRelation.cpp \
|
||||
|
|
|
@ -6,3 +6,7 @@
|
|||
|
||||
MODULE = 'accessibility'
|
||||
|
||||
EXPORTS += [
|
||||
'xpcAccEvents.h',
|
||||
]
|
||||
|
||||
|
|
|
@ -0,0 +1,292 @@
|
|||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
|
||||
The `lang/functional` module provides functional helper methods. A lot of these
|
||||
functions implement APIs from Jeremy Ashkenas's [underscore.js](http://underscorejs.org)
|
||||
and all credits go to him and his contributors.
|
||||
|
||||
<api name="method">
|
||||
@function
|
||||
Takes a function and returns a method associated with an object.
|
||||
When the method is invoked on an instance of the object, the original
|
||||
function is called. It is passed the object instance (i.e. `this`) as
|
||||
the first parameter, followed by any parameters passed into the method.
|
||||
|
||||
let { method } = require("sdk/lang/functional");
|
||||
let myNumber = {
|
||||
times: method(times),
|
||||
add: method(add),
|
||||
number: 0
|
||||
};
|
||||
|
||||
function times (target, x) { return target.number *= x; }
|
||||
function add (target, x) { return target.number += x; }
|
||||
|
||||
console.log(myNumber.number); // 0
|
||||
myNumber.add(10); // 10
|
||||
myNumber.times(2); // 20
|
||||
myNumber.add(3); // 23
|
||||
|
||||
@param lambda {function}
|
||||
The function to be wrapped and returned.
|
||||
|
||||
@returns {function}
|
||||
The wrapped `lambda`.
|
||||
</api>
|
||||
|
||||
<api name="defer">
|
||||
@function
|
||||
Takes a function and returns a wrapped version of the function. Calling the
|
||||
wrapped version will call the original function during the next event loop.
|
||||
This is similar to calling [setTimeout](modules/sdk/timers.html#setTimeout(callback%2C ms)) with no
|
||||
wait (i.e. `setTimeout(function () { ... }, 0)`), except that the wrapped function
|
||||
may be reused and does not need to be repeated each time. This also enables you
|
||||
to use these functions as event listeners.
|
||||
|
||||
let { defer } = require("sdk/lang/functional");
|
||||
let fn = defer(function myEvent (event, value) {
|
||||
console.log(event + " : " + value);
|
||||
});
|
||||
|
||||
fn("click", "#home");
|
||||
console.log("done");
|
||||
|
||||
// This will print 'done' before 'click : #home' since
|
||||
// we deferred the execution of the wrapped `myEvent`
|
||||
// function, making it non-blocking and executing on the
|
||||
// next event loop
|
||||
|
||||
@param fn {function}
|
||||
The function to be deferred.
|
||||
|
||||
@returns {function}
|
||||
The new, deferred function.
|
||||
</api>
|
||||
|
||||
<api name="remit">
|
||||
@function
|
||||
An alias for [defer](modules/sdk/lang/functional.html#defer(fn)).
|
||||
</api>
|
||||
|
||||
<api name="invoke">
|
||||
@function
|
||||
Invokes `callee`, passing `params` as an argument and `self` as `this`.
|
||||
Returns the value that is returned by `callee`.
|
||||
|
||||
let { invoke } = require("sdk/lang/functional");
|
||||
|
||||
invoke(sum, [1,2,3,4,5], null); // 15
|
||||
|
||||
function sum () {
|
||||
return Array.slice(arguments).reduce(function (a, b) {
|
||||
return a + b;
|
||||
});
|
||||
}
|
||||
|
||||
@param callee {function}
|
||||
Function to invoke.
|
||||
@param params {Array}
|
||||
Parameters to be passed into `callee`.
|
||||
@param self {mixed}
|
||||
Object to be passed as the `this` context to `callee`.
|
||||
@returns {mixed}
|
||||
Returns the return value of `callee`.
|
||||
</api>
|
||||
|
||||
<api name="curry">
|
||||
@function
|
||||
[Curries](http://en.wikipedia.org/wiki/Currying) the given function with the arguments given.
|
||||
|
||||
let { curry } = require("sdk/lang/functional");
|
||||
let add = function add (x, y) { return x + y; }
|
||||
let addOne = curry(add, 1);
|
||||
|
||||
addOne(5); // 6
|
||||
addOne(10); // 11
|
||||
curry(add, addOne(20))(2); // 23
|
||||
|
||||
@param fn {function}
|
||||
Function to be curried.
|
||||
|
||||
@param arguments... {mixed}
|
||||
Additional arguments
|
||||
|
||||
@returns {function}
|
||||
The curried function.
|
||||
</api>
|
||||
|
||||
<api name="compose">
|
||||
@function
|
||||
Returns the [composition](http://en.wikipedia.org/wiki/Function_composition_(computer_science)) of a list of functions, where each function consumes the
|
||||
return value of the function that follows. In math terms, composing the functions
|
||||
`f()`, `g()`, and `h()` produces `f(g(h()))`.
|
||||
|
||||
let { compose } = require("sdk/lang/functional");
|
||||
|
||||
let welcome = compose(exclaim, greet);
|
||||
|
||||
welcome('moe'); // "hi: moe!";
|
||||
|
||||
function greet (name) { return "hi: " + name; }
|
||||
function exclaim (statement) { return statement + "!"; }
|
||||
|
||||
@param fn... {function}
|
||||
Takes a variable number of functions as arguments and composes them from right to left.
|
||||
|
||||
@returns {function}
|
||||
The composed function.
|
||||
</api>
|
||||
|
||||
<api name="wrap">
|
||||
@function
|
||||
Returns the first function passed as an argument to the second,
|
||||
allowing you to adjust arguments, run code before and after, and
|
||||
conditionally execute the original function.
|
||||
|
||||
let { wrap } = require("sdk/lang/functional");
|
||||
|
||||
let wrappedHello = wrap(hello, function (fn, name) {
|
||||
return "before, " + fn(name) + "after";
|
||||
});
|
||||
|
||||
wrappedHello("moe"); // "before, hello: moe, after"
|
||||
|
||||
function hello (name) { return "hello: " + name; }
|
||||
|
||||
@param fn {function}
|
||||
The function to be passed into the `wrapper` function.
|
||||
|
||||
@param wrapper {function}
|
||||
The function that is called when the return function is executed,
|
||||
taking the wrapped `fn` as the first parameter.
|
||||
|
||||
@returns {function}
|
||||
A function which, when called, executes `wrapper` with `fn` as the first parameter,
|
||||
and passes in any additional parameters to the `wrapper` function.
|
||||
</api>
|
||||
|
||||
<api name="identity">
|
||||
@function
|
||||
Returns the same value that is used as the argument. In math: f(x) = x.
|
||||
|
||||
let { identity } = require("sdk/lang/functional");
|
||||
let x = 5;
|
||||
identity(x); // 5
|
||||
|
||||
@param value {mixed}
|
||||
The value to be returned.
|
||||
|
||||
@returns {mixed}
|
||||
The value that was originally passed in.
|
||||
</api>
|
||||
|
||||
<api name="memoize">
|
||||
@function
|
||||
[Memoizes](http://en.wikipedia.org/wiki/Memoization) a given function by caching
|
||||
the computed result. Useful for speeding up slow-running computations. If
|
||||
passed an optional `hashFunction`, it will be used to compute the hash key for
|
||||
storing the result, based on the arguments to the original function. The
|
||||
default `hashFunction` just uses the first argument to the memoized function as
|
||||
the key.
|
||||
|
||||
let { memoize } = require("sdk/lang/functional");
|
||||
|
||||
let memoizedFn = memoize(primeFactorization);
|
||||
|
||||
memoizedFn(50); // Returns [2, 5, 5], had to compute
|
||||
memoizedFn(100); // Returns [2, 2, 5, 5], had to compute
|
||||
memoizedFn(50); // Returns [2, 5, 5] again, but pulled from cache
|
||||
|
||||
function primeFactorization (x) {
|
||||
// Some tricky stuff
|
||||
}
|
||||
|
||||
// We can also use a hash function to compute a different
|
||||
// hash value. In this example, we'll fabricate a function
|
||||
// that takes a string of first and last names that
|
||||
// somehow computes the lineage of that name. Our hash
|
||||
// function will just parse the last name, as our naive
|
||||
// implementation assumes that they will share the same lineage
|
||||
|
||||
let getLineage = memoize(function (name) {
|
||||
// computes lineage
|
||||
return data;
|
||||
}, hasher);
|
||||
|
||||
// Hashing function takes a string of first and last name
|
||||
// and returns the last name.
|
||||
function hasher (input) {
|
||||
return input.split(" ")[1];
|
||||
}
|
||||
|
||||
getLineage("homer simpson"); // Computes and returns information for "simpson"
|
||||
getLineage("lisa simpson"); // Returns cached for "simpson"
|
||||
|
||||
@param fn {function}
|
||||
The function that becomes memoized.
|
||||
|
||||
@param hasher {function}
|
||||
An optional function that takes the memoized function's parameter and returns
|
||||
a hash key for storing the result.
|
||||
|
||||
@returns {function}
|
||||
The memoized version of `fn`.
|
||||
</api>
|
||||
|
||||
<api name="delay">
|
||||
@function
|
||||
Much like `setTimeout`, `delay` invokes a function after waiting a set number of
|
||||
milliseconds. If you pass additional, optional, arguments, they will be forwarded
|
||||
on to the function when it is invoked.
|
||||
|
||||
let { delay } = require("sdk/lang/functional");
|
||||
|
||||
delay(printAdd, 2000, 5, 10);
|
||||
|
||||
// Prints "5+10=15" in two seconds (2000ms)
|
||||
function printAdd (a, b) { console.log(a + "+" + b + "=" + (a+b)); }
|
||||
|
||||
@param fn {function}
|
||||
A function to be delayed.
|
||||
|
||||
@param ms {number}
|
||||
Number of milliseconds to delay the execution of `fn`.
|
||||
|
||||
@param arguments {mixed}
|
||||
Additional arguments to pass to `fn` upon execution
|
||||
</api>
|
||||
|
||||
<api name="once">
|
||||
@function
|
||||
Creates a version of the input function that can only be called one time.
|
||||
Repeated calls to the modified function will have no effect, returning
|
||||
the value from the original call. Useful for initialization functions, instead
|
||||
of having to set a boolean flag and checking it later.
|
||||
|
||||
let { once } = require("sdk/lang/functional");
|
||||
let setup = once(function (env) {
|
||||
// initializing important things
|
||||
console.log("successfully initialized " + env);
|
||||
return 1; // Assume success and return 1
|
||||
});
|
||||
|
||||
setup('dev'); // returns 1
|
||||
// prints "successfully initialized dev"
|
||||
|
||||
// Future attempts to call this function just return the cached
|
||||
// value that was returned previously
|
||||
setup('production'); // Returns 1
|
||||
// No print message is displayed since the function isn't executed
|
||||
|
||||
@param fn {function}
|
||||
The function that will be executed only once inside the once wrapper.
|
||||
|
||||
@returns {function}
|
||||
The wrapped `fn` that can only be executed once.
|
||||
</api>
|
||||
|
||||
<api name="cache">
|
||||
@function
|
||||
An alias for [once](modules/sdk/lang/functional.html#once(fn)).
|
||||
</api>
|
|
@ -421,7 +421,73 @@ Creates a panel.
|
|||
The width of the panel in pixels. Optional.
|
||||
@prop [height] {number}
|
||||
The height of the panel in pixels. Optional.
|
||||
@prop [focus] {boolean}
|
||||
@prop [position] {object}
|
||||
The position of the panel.
|
||||
Ignored if the panel is opened by a widget.
|
||||
|
||||
You can set as value an object that has one or more of the following
|
||||
properites: `top`, `right`, `bottom` and `left`. Their values are expressed
|
||||
in pixels. Any other properties will be ignored.
|
||||
|
||||
The default alignment is centered, so for example panel can be displayed in
|
||||
the center of the bottom corner by leaving off vertical axis:
|
||||
|
||||
// Show the panel to the centered horizontally and aligned to the bottom
|
||||
// of the content area
|
||||
require("sdk/panel").Panel({
|
||||
position: {
|
||||
bottom: 0
|
||||
}
|
||||
}).show();
|
||||
|
||||
// Show the panel to the centered vertically and aligned to the left o
|
||||
// the content area
|
||||
require("sdk/panel").Panel({
|
||||
position: {
|
||||
left: 0
|
||||
}
|
||||
}).show();
|
||||
|
||||
// Centered panel, default behavior
|
||||
require("sdk/panel").Panel({}).show();
|
||||
|
||||
In the same way of their CSS counterpart, setting both `top` and `bottom`,
|
||||
or `left` and `right`, will results in calculated the `height` and `width`:
|
||||
|
||||
// Show the panel centered horizontally, that is distant 40px
|
||||
// from the top and 100px from the bottom.
|
||||
require("sdk/panel").Panel({
|
||||
position: {
|
||||
top: 40,
|
||||
bottom: 100
|
||||
}
|
||||
}).show();
|
||||
|
||||
Set implicitly `height` in this example, will makes the panel ignore the
|
||||
`bottom` property, as the CSS homonym properties does:
|
||||
|
||||
// Show the panel centered horizontally, that is distant 40px from the top
|
||||
// and has 400px as height
|
||||
require("sdk/panel").Panel({
|
||||
position: {
|
||||
top: 40,
|
||||
bottom: 100,
|
||||
},
|
||||
height: 400
|
||||
}).show();
|
||||
|
||||
// This is equivalent to:
|
||||
|
||||
require("panel").Panel({
|
||||
position {
|
||||
top: 40
|
||||
},
|
||||
height: 400
|
||||
}).show();
|
||||
|
||||
The same principle is applied for `width`, `left` and `right`.
|
||||
|
||||
@prop [focus=true] {boolean}
|
||||
Set to `false` to prevent taking the focus away when the panel is shown.
|
||||
Only turn this off if necessary, to prevent accessibility issue.
|
||||
Optional, default to `true`.
|
||||
|
@ -575,6 +641,22 @@ The message to send. Must be stringifiable to JSON.
|
|||
<api name="show">
|
||||
@method
|
||||
Displays the panel.
|
||||
|
||||
If the `options` argument is given, it will be shallow merged with the options
|
||||
provided in the constructor: the `options` passed in the `show` method takes
|
||||
the precedence.
|
||||
It's useful for temporary changes, without touching the default values.
|
||||
|
||||
@param options {object}
|
||||
Showing options for the panel, with the following keys:
|
||||
@prop [width] {number}
|
||||
The width of the panel in pixels. Optional.
|
||||
@prop [height] {number}
|
||||
The height of the panel in pixels. Optional.
|
||||
@prop [position] {object}
|
||||
The position of the panel. Optional. See [Panel's options](./modules/sdk/panel.html#Panel%28options%29) for further details.
|
||||
@prop [focus=true] {boolean}
|
||||
Set to `false` to prevent taking the focus away when the panel is shown.
|
||||
</api>
|
||||
|
||||
<api name="hide">
|
||||
|
|
|
@ -48,7 +48,7 @@ interface to listen for and log all topic notifications:
|
|||
observerService.addObserver(this, this.topic, false);
|
||||
},
|
||||
unregister: function() {
|
||||
addObserver.removeObserver(this, this.topic);
|
||||
observerService.removeObserver(this, this.topic);
|
||||
},
|
||||
observe: function observe(subject, topic, data) {
|
||||
console.log('star observer:', subject, topic, data);
|
||||
|
|
|
@ -79,6 +79,22 @@ to support private browsing, refer to the
|
|||
@returns {nsIBaseWindow}
|
||||
</api>
|
||||
|
||||
<api name="getToplevelWindow">
|
||||
@function
|
||||
Returns the toplevel
|
||||
[`nsIDOMWindow`](https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIDOMWindow)
|
||||
for the given child [`nsIDOMWindow`](https://developer.mozilla.org/en/nsIDOMWindow):
|
||||
|
||||
var { Ci } = require('chrome');
|
||||
var utils = require('sdk/window/utils');
|
||||
var browserWindow = utils.getMostRecentBrowserWindow();
|
||||
var window = browserWindow.content; // `window` object for the current webpage
|
||||
utils.getToplevelWindw(window) == browserWindow // => true
|
||||
|
||||
@param window {nsIDOMWindow}
|
||||
@returns {nsIDOMWindow}
|
||||
</api>
|
||||
|
||||
<api name="getWindowDocShell">
|
||||
@function
|
||||
Returns the
|
||||
|
|
|
@ -130,7 +130,7 @@ const WorkerSandbox = EventEmitter.compose({
|
|||
|
||||
// Instantiate trusted code in another Sandbox in order to prevent content
|
||||
// script from messing with standard classes used by proxy and API code.
|
||||
let apiSandbox = sandbox(window, { wantXrays: true });
|
||||
let apiSandbox = sandbox(window, { wantXrays: true, sameZoneAs: window });
|
||||
apiSandbox.console = console;
|
||||
|
||||
// Build content proxies only if the document has a non-system principal
|
||||
|
@ -148,7 +148,8 @@ const WorkerSandbox = EventEmitter.compose({
|
|||
// have access to all standard globals (window, document, ...)
|
||||
let content = this._sandbox = sandbox(window, {
|
||||
sandboxPrototype: proto,
|
||||
wantXrays: true
|
||||
wantXrays: true,
|
||||
sameZoneAs: window
|
||||
});
|
||||
// We have to ensure that window.top and window.parent are the exact same
|
||||
// object than window object, i.e. the sandbox global object. But not
|
||||
|
|
|
@ -105,7 +105,7 @@ function defer(prototype) {
|
|||
// `null` promise is not resolved yet.
|
||||
var result = null;
|
||||
|
||||
prototype = (prototype || prototype === null) ? prototype : Object.prototype
|
||||
prototype = (prototype || prototype === null) ? prototype : Object.prototype;
|
||||
|
||||
// Create an object implementing promise API.
|
||||
var promise = Object.create(prototype, {
|
||||
|
@ -137,7 +137,7 @@ function defer(prototype) {
|
|||
}
|
||||
catch(error) {
|
||||
if (exports._reportErrors && typeof(console) === 'object')
|
||||
console.error(error)
|
||||
console.error(error);
|
||||
deferred.resolve(rejected(error));
|
||||
}
|
||||
}
|
||||
|
@ -244,8 +244,8 @@ var promised = (function() {
|
|||
// slower property accesses and unnecessary closure creations on each
|
||||
// call of this popular function.
|
||||
|
||||
var call = Function.call
|
||||
var concat = Array.prototype.concat
|
||||
var call = Function.call;
|
||||
var concat = Array.prototype.concat;
|
||||
|
||||
// Utility function that does following:
|
||||
// execute([ f, self, args...]) => f.apply(self, args)
|
||||
|
@ -256,9 +256,9 @@ var promised = (function() {
|
|||
function promisedConcat(promises, unknown) {
|
||||
return promises.then(function(values) {
|
||||
return resolve(unknown).then(function(value) {
|
||||
return values.concat([ value ])
|
||||
})
|
||||
})
|
||||
return values.concat([ value ]);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return function promised(f, prototype) {
|
||||
|
@ -280,10 +280,10 @@ var promised = (function() {
|
|||
// reduce it via `promisedConcat` to get promised array of fulfillments
|
||||
reduce(promisedConcat, resolve([], prototype)).
|
||||
// finally map that to promise of `f.apply(this, args...)`
|
||||
then(execute)
|
||||
}
|
||||
then(execute);
|
||||
};
|
||||
}
|
||||
})()
|
||||
})();
|
||||
exports.promised = promised;
|
||||
|
||||
var all = promised(Array);
|
||||
|
|
|
@ -96,6 +96,9 @@ exports.validateOptions = function validateOptions(options, requirements) {
|
|||
optsVal = req.map(optsVal);
|
||||
}
|
||||
catch (err) {
|
||||
if (err instanceof RequirementError)
|
||||
throw err;
|
||||
|
||||
mapThrew = true;
|
||||
}
|
||||
}
|
||||
|
@ -108,12 +111,12 @@ exports.validateOptions = function validateOptions(options, requirements) {
|
|||
}
|
||||
});
|
||||
if (req.is.indexOf(getTypeOf(optsVal)) < 0)
|
||||
throw requirementError(key, req);
|
||||
throw new RequirementError(key, req);
|
||||
}
|
||||
if (req.ok && !req.ok(optsVal))
|
||||
throw requirementError(key, req);
|
||||
throw new RequirementError(key, req);
|
||||
|
||||
if (keyInOpts || (req.map && !mapThrew))
|
||||
if (keyInOpts || (req.map && !mapThrew && optsVal !== undefined))
|
||||
validatedOptions[key] = optsVal;
|
||||
}
|
||||
|
||||
|
@ -145,8 +148,11 @@ let getTypeOf = exports.getTypeOf = function getTypeOf(val) {
|
|||
return typ;
|
||||
}
|
||||
|
||||
// Returns a new Error with a nice message.
|
||||
function requirementError(key, requirement) {
|
||||
function RequirementError(key, requirement) {
|
||||
Error.call(this);
|
||||
|
||||
this.name = "RequirementError";
|
||||
|
||||
let msg = requirement.msg;
|
||||
if (!msg) {
|
||||
msg = 'The option "' + key + '" ';
|
||||
|
@ -154,5 +160,7 @@ function requirementError(key, requirement) {
|
|||
"must be one of the following types: " + requirement.is.join(", ") :
|
||||
"is invalid.";
|
||||
}
|
||||
return new Error(msg);
|
||||
|
||||
this.message = msg;
|
||||
}
|
||||
RequirementError.prototype = Object.create(Error.prototype);
|
||||
|
|
|
@ -31,6 +31,21 @@ function isNull(value) {
|
|||
}
|
||||
exports.isNull = isNull;
|
||||
|
||||
/**
|
||||
* Returns `true` if value is `null` or `undefined`.
|
||||
* It's equivalent to `== null`, but resolve the ambiguity of the writer
|
||||
* intention, makes clear that he's clearly checking both `null` and `undefined`
|
||||
* values, and it's not a typo for `=== null`.
|
||||
*/
|
||||
function isNil(value) {
|
||||
return value === null || value === undefined;
|
||||
}
|
||||
exports.isNil = isNil;
|
||||
|
||||
function isBoolean(value) {
|
||||
return typeof value === "boolean";
|
||||
}
|
||||
exports.isBoolean = isBoolean;
|
||||
/**
|
||||
* Returns `true` if value is a string.
|
||||
* @examples
|
||||
|
|
|
@ -29,7 +29,8 @@ const domPanel = require("./panel/utils");
|
|||
const { events } = require("./panel/events");
|
||||
const systemEvents = require("./system/events");
|
||||
const { filter, pipe } = require("./event/utils");
|
||||
const { getNodeView } = require("./view/core");
|
||||
const { getNodeView, getActiveView } = require("./view/core");
|
||||
const { isNil, isObject } = require("./lang/type");
|
||||
|
||||
if (isPrivateBrowsingSupported && isWindowPBSupported)
|
||||
throw Error('The panel module cannot be used with per-window private browsing at the moment, see Bug 816257');
|
||||
|
@ -65,11 +66,26 @@ function getAttachEventType(model) {
|
|||
let number = { is: ['number', 'undefined', 'null'] };
|
||||
let boolean = { is: ['boolean', 'undefined', 'null'] };
|
||||
|
||||
let panelContract = contract(merge({
|
||||
let rectContract = contract({
|
||||
top: number,
|
||||
right: number,
|
||||
bottom: number,
|
||||
left: number
|
||||
});
|
||||
|
||||
let rect = {
|
||||
is: ['object', 'undefined', 'null'],
|
||||
map: function(v) isNil(v) || !isObject(v) ? v : rectContract(v)
|
||||
}
|
||||
|
||||
let displayContract = contract({
|
||||
width: number,
|
||||
height: number,
|
||||
focus: boolean,
|
||||
}, loaderContract.rules));
|
||||
position: rect
|
||||
});
|
||||
|
||||
let panelContract = contract(merge({}, displayContract.rules, loaderContract.rules));
|
||||
|
||||
|
||||
function isDisposed(panel) !views.has(panel);
|
||||
|
@ -80,12 +96,12 @@ let views = new WeakMap();
|
|||
let workers = new WeakMap();
|
||||
|
||||
function viewFor(panel) views.get(panel)
|
||||
exports.viewFor = viewFor;
|
||||
|
||||
function modelFor(panel) models.get(panel)
|
||||
function panelFor(view) panels.get(view)
|
||||
function workerFor(panel) workers.get(panel)
|
||||
|
||||
getActiveView.define(Panel, viewFor);
|
||||
|
||||
// Utility function takes `panel` instance and makes sure it will be
|
||||
// automatically hidden as soon as other panel is shown.
|
||||
let setupAutoHide = new function() {
|
||||
|
@ -124,9 +140,10 @@ const Panel = Class({
|
|||
extends: WorkerHost(workerFor),
|
||||
setup: function setup(options) {
|
||||
let model = merge({
|
||||
width: 320,
|
||||
height: 240,
|
||||
defaultWidth: 320,
|
||||
defaultHeight: 240,
|
||||
focus: true,
|
||||
position: Object.freeze({}),
|
||||
}, panelContract(options));
|
||||
models.set(this, model);
|
||||
|
||||
|
@ -172,6 +189,9 @@ const Panel = Class({
|
|||
/* Public API: Panel.focus */
|
||||
get focus() modelFor(this).focus,
|
||||
|
||||
/* Public API: Panel.position */
|
||||
get position() modelFor(this).position,
|
||||
|
||||
get contentURL() modelFor(this).contentURL,
|
||||
set contentURL(value) {
|
||||
let model = modelFor(this);
|
||||
|
@ -183,13 +203,22 @@ const Panel = Class({
|
|||
get isShowing() !isDisposed(this) && domPanel.isOpen(viewFor(this)),
|
||||
|
||||
/* Public API: Panel.show */
|
||||
show: function show(anchor) {
|
||||
show: function show(options, anchor) {
|
||||
let model = modelFor(this);
|
||||
let view = viewFor(this);
|
||||
let anchorView = getNodeView(anchor);
|
||||
|
||||
options = merge({
|
||||
position: model.position,
|
||||
width: model.width,
|
||||
height: model.height,
|
||||
defaultWidth: model.defaultWidth,
|
||||
defaultHeight: model.defaultHeight,
|
||||
focus: model.focus
|
||||
}, displayContract(options));
|
||||
|
||||
if (!isDisposed(this))
|
||||
domPanel.show(view, model.width, model.height, model.focus, anchorView);
|
||||
domPanel.show(view, options, anchorView);
|
||||
|
||||
return this;
|
||||
},
|
||||
|
@ -207,8 +236,8 @@ const Panel = Class({
|
|||
let model = modelFor(this);
|
||||
let view = viewFor(this);
|
||||
let change = panelContract({
|
||||
width: width || model.width,
|
||||
height: height || model.height
|
||||
width: width || model.width || model.defaultWidth,
|
||||
height: height || model.height || model.defaultHeight
|
||||
});
|
||||
|
||||
model.width = change.width
|
||||
|
|
|
@ -12,18 +12,67 @@ const { Cc, Ci } = require("chrome");
|
|||
const { setTimeout } = require("../timers");
|
||||
const { platform } = require("../system");
|
||||
const { getMostRecentBrowserWindow, getOwnerBrowserWindow,
|
||||
getHiddenWindow } = require("../window/utils");
|
||||
getHiddenWindow, getScreenPixelsPerCSSPixel } = require("../window/utils");
|
||||
|
||||
const { create: createFrame, swapFrameLoaders } = require("../frame/utils");
|
||||
const { window: addonWindow } = require("../addon/window");
|
||||
const { isNil } = require("../lang/type");
|
||||
const events = require("../system/events");
|
||||
|
||||
|
||||
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||
|
||||
function open(panel, width, height, anchor) {
|
||||
function calculateRegion({ position, width, height, defaultWidth, defaultHeight }, rect) {
|
||||
let x, y;
|
||||
|
||||
let hasTop = !isNil(position.top);
|
||||
let hasRight = !isNil(position.right);
|
||||
let hasBottom = !isNil(position.bottom);
|
||||
let hasLeft = !isNil(position.left);
|
||||
let hasWidth = !isNil(width);
|
||||
let hasHeight = !isNil(height);
|
||||
|
||||
// if width is not specified by constructor or show's options, then get
|
||||
// the default width
|
||||
if (!hasWidth)
|
||||
width = defaultWidth;
|
||||
|
||||
// if height is not specified by constructor or show's options, then get
|
||||
// the default height
|
||||
if (!hasHeight)
|
||||
height = defaultHeight;
|
||||
|
||||
// default position is centered
|
||||
x = (rect.right - width) / 2;
|
||||
y = (rect.top + rect.bottom - height) / 2;
|
||||
|
||||
if (hasTop) {
|
||||
y = rect.top + position.top;
|
||||
|
||||
if (hasBottom && !hasHeight)
|
||||
height = rect.bottom - position.bottom - y;
|
||||
}
|
||||
else if (hasBottom) {
|
||||
y = rect.bottom - position.bottom - height;
|
||||
}
|
||||
|
||||
if (hasLeft) {
|
||||
x = position.left;
|
||||
|
||||
if (hasRight && !hasWidth)
|
||||
width = rect.right - position.right - x;
|
||||
}
|
||||
else if (hasRight) {
|
||||
x = rect.right - width - position.right;
|
||||
}
|
||||
|
||||
return {x: x, y: y, width: width, height: height};
|
||||
}
|
||||
|
||||
function open(panel, options, anchor) {
|
||||
// Wait for the XBL binding to be constructed
|
||||
if (!panel.openPopup) setTimeout(open, 50, panel, width, height, anchor);
|
||||
else display(panel, width, height, anchor);
|
||||
if (!panel.openPopup) setTimeout(open, 50, panel, options, anchor);
|
||||
else display(panel, options, anchor);
|
||||
}
|
||||
exports.open = open;
|
||||
|
||||
|
@ -52,29 +101,37 @@ function resize(panel, width, height) {
|
|||
}
|
||||
exports.resize = resize
|
||||
|
||||
function display(panel, width, height, anchor) {
|
||||
function display(panel, options, anchor) {
|
||||
let document = panel.ownerDocument;
|
||||
let x = null;
|
||||
let y = null;
|
||||
let position = null;
|
||||
|
||||
let x, y;
|
||||
let { width, height, defaultWidth, defaultHeight } = options;
|
||||
|
||||
let popupPosition = null;
|
||||
|
||||
// Panel XBL has some SDK incompatible styling decisions. We shim panel
|
||||
// instances until proper fix for Bug 859504 is shipped.
|
||||
shimDefaultStyle(panel);
|
||||
|
||||
if (!anchor) {
|
||||
// Open the popup in the middle of the window.
|
||||
x = document.documentElement.clientWidth / 2 - width / 2;
|
||||
y = document.documentElement.clientHeight / 2 - height / 2;
|
||||
position = null;
|
||||
// The XUL Panel doesn't have an arrow, so the margin needs to be reset
|
||||
// in order to, be positioned properly
|
||||
panel.style.margin = "0";
|
||||
|
||||
let viewportRect = document.defaultView.gBrowser.getBoundingClientRect();
|
||||
|
||||
({x, y, width, height}) = calculateRegion(options, viewportRect);
|
||||
}
|
||||
else {
|
||||
width = width || defaultWidth;
|
||||
height = height || defaultHeight;
|
||||
|
||||
// Open the popup by the anchor.
|
||||
let rect = anchor.getBoundingClientRect();
|
||||
|
||||
let window = anchor.ownerDocument.defaultView;
|
||||
|
||||
let zoom = window.mozScreenPixelsPerCSSPixel;
|
||||
let zoom = getScreenPixelsPerCSSPixel(window);
|
||||
let screenX = rect.left + window.mozInnerScreenX * zoom;
|
||||
let screenY = rect.top + window.mozInnerScreenY * zoom;
|
||||
|
||||
|
@ -92,7 +149,7 @@ function display(panel, width, height, anchor) {
|
|||
horizontal = "right";
|
||||
|
||||
let verticalInverse = vertical == "top" ? "bottom" : "top";
|
||||
position = vertical + "center " + verticalInverse + horizontal;
|
||||
popupPosition = vertical + "center " + verticalInverse + horizontal;
|
||||
|
||||
// Allow panel to flip itself if the panel can't be displayed at the
|
||||
// specified position (useful if we compute a bad position or if the
|
||||
|
@ -105,7 +162,7 @@ function display(panel, width, height, anchor) {
|
|||
panel.firstChild.style.width = width + "px";
|
||||
panel.firstChild.style.height = height + "px";
|
||||
|
||||
panel.openPopup(anchor, position, x, y);
|
||||
panel.openPopup(anchor, popupPosition, x, y);
|
||||
}
|
||||
exports.display = display;
|
||||
|
||||
|
@ -124,16 +181,16 @@ function shimDefaultStyle(panel) {
|
|||
});
|
||||
}
|
||||
|
||||
function show(panel, width, height, focus, anchor) {
|
||||
function show(panel, options, anchor) {
|
||||
// Prevent the panel from getting focus when showing up
|
||||
// if focus is set to false
|
||||
panel.setAttribute("noautofocus", !focus);
|
||||
|
||||
panel.setAttribute("noautofocus", !options.focus);
|
||||
|
||||
let window = anchor && getOwnerBrowserWindow(anchor);
|
||||
let { document } = window ? window : getMostRecentBrowserWindow();
|
||||
attach(panel, document);
|
||||
open(panel, width, height, anchor);
|
||||
|
||||
open(panel, options, anchor);
|
||||
}
|
||||
exports.show = show
|
||||
|
||||
|
|
|
@ -24,3 +24,6 @@ getNodeView.define(function(value) {
|
|||
});
|
||||
|
||||
exports.getNodeView = getNodeView;
|
||||
|
||||
let getActiveView = method("getActiveView");
|
||||
exports.getActiveView = getActiveView;
|
||||
|
|
|
@ -435,7 +435,7 @@ const WidgetViewTrait = LightTrait.compose(EventEmitterTrait, LightTrait({
|
|||
// This kind of ugly workaround, instead we should implement
|
||||
// `getNodeView` for the `Widget` class itself, but that's kind of
|
||||
// hard without cleaning things up.
|
||||
this.panel.show(getNodeView.implement({}, function() domNode));
|
||||
this.panel.show(null, getNodeView.implement({}, function() domNode));
|
||||
},
|
||||
|
||||
_isInWindow: function WidgetView__isInWindow(window) {
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
'use strict';
|
||||
|
||||
const { defer } = require('../core/promise');
|
||||
const { open: openWindow, onFocus } = require('./utils');
|
||||
const events = require('../system/events');
|
||||
const { open: openWindow, onFocus, getToplevelWindow } = require('./utils');
|
||||
|
||||
function open(uri, options) {
|
||||
return promise(openWindow.apply(null, arguments), 'load');
|
||||
|
@ -12,11 +13,19 @@ function open(uri, options) {
|
|||
exports.open = open;
|
||||
|
||||
function close(window) {
|
||||
// unload event could happen so fast that it is not resolved
|
||||
// if we listen to unload after calling close()
|
||||
let p = promise(window, 'unload');
|
||||
// We shouldn't wait for unload, as it is dispatched
|
||||
// before the window is actually closed.
|
||||
// `domwindowclosed` is a better match.
|
||||
let deferred = defer();
|
||||
let toplevelWindow = getToplevelWindow(window);
|
||||
events.on("domwindowclosed", function onclose({subject}) {
|
||||
if (subject == toplevelWindow) {
|
||||
events.off("domwindowclosed", onclose);
|
||||
deferred.resolve(window);
|
||||
}
|
||||
}, true);
|
||||
window.close();
|
||||
return p;
|
||||
return deferred.promise;
|
||||
}
|
||||
exports.close = close;
|
||||
|
||||
|
|
|
@ -113,6 +113,19 @@ function getBaseWindow(window) {
|
|||
}
|
||||
exports.getBaseWindow = getBaseWindow;
|
||||
|
||||
/**
|
||||
* Returns the `nsIDOMWindow` toplevel window for any child/inner window
|
||||
*/
|
||||
function getToplevelWindow(window) {
|
||||
return window.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIWebNavigation)
|
||||
.QueryInterface(Ci.nsIDocShellTreeItem)
|
||||
.rootTreeItem
|
||||
.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindow);
|
||||
}
|
||||
exports.getToplevelWindow = getToplevelWindow;
|
||||
|
||||
function getWindowDocShell(window) window.gBrowser.docShell;
|
||||
exports.getWindowDocShell = getWindowDocShell;
|
||||
|
||||
|
@ -341,6 +354,12 @@ function getFrames(window) {
|
|||
}
|
||||
exports.getFrames = getFrames;
|
||||
|
||||
function getScreenPixelsPerCSSPixel(window) {
|
||||
return window.QueryInterface(Ci.nsIInterfaceRequestor).
|
||||
getInterface(Ci.nsIDOMWindowUtils).screenPixelsPerCSSPixel;
|
||||
}
|
||||
exports.getScreenPixelsPerCSSPixel = getScreenPixelsPerCSSPixel;
|
||||
|
||||
function getOwnerBrowserWindow(node) {
|
||||
/**
|
||||
Takes DOM node and returns browser window that contains it.
|
||||
|
|
|
@ -70,7 +70,7 @@ exports.testShowPanelAndWidgetOnPrivateWindow = function(assert, done) {
|
|||
}
|
||||
});
|
||||
}
|
||||
}).show(window.gBrowser);
|
||||
}).show(null, window.gBrowser);
|
||||
},
|
||||
onUntrack: function(window) {
|
||||
if (window === myPrivateWindow) {
|
||||
|
|
|
@ -14,6 +14,7 @@ const { openDialog, getMostRecentBrowserWindow } = require('sdk/window/utils');
|
|||
const { openTab, getTabContentWindow, getActiveTab, setTabURL, closeTab } = require('sdk/tabs/utils');
|
||||
const promise = require("sdk/core/promise");
|
||||
const windowHelpers = require('sdk/window/helpers');
|
||||
const events = require("sdk/system/events");
|
||||
|
||||
function LoaderWithHookedConsole(module) {
|
||||
let globals = {};
|
||||
|
@ -71,13 +72,19 @@ exports.openWebpage = function openWebpage(url, enablePrivate) {
|
|||
private: enablePrivate
|
||||
});
|
||||
let deferred = promise.defer();
|
||||
win.addEventListener("load", function onLoad() {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
|
||||
let rawTab = getActiveTab(win);
|
||||
setTabURL(rawTab, url);
|
||||
deferred.resolve(getTabContentWindow(rawTab));
|
||||
});
|
||||
// Wait for delayed startup code to be executed, in order to ensure
|
||||
// that the window is really ready
|
||||
events.on("browser-delayed-startup-finished", function onReady({subject}) {
|
||||
if (subject == win) {
|
||||
events.off("browser-delayed-startup-finished", onReady, true);
|
||||
|
||||
let rawTab = getActiveTab(win);
|
||||
setTabURL(rawTab, url);
|
||||
deferred.resolve(getTabContentWindow(rawTab));
|
||||
}
|
||||
}, true);
|
||||
|
||||
return {
|
||||
ready: deferred.promise,
|
||||
close: function () {
|
||||
|
|
|
@ -937,49 +937,37 @@ exports['test ready event on new window tab'] = function(test) {
|
|||
};
|
||||
|
||||
exports['test unique tab ids'] = function(test) {
|
||||
test.waitUntilDone();
|
||||
var windows = require('sdk/windows').browserWindows;
|
||||
var { all, defer } = require('sdk/core/promise');
|
||||
|
||||
var windows = require('sdk/windows').browserWindows,
|
||||
tabIds = {}, win1, win2;
|
||||
function openWindow() {
|
||||
// console.log('in openWindow');
|
||||
let deferred = defer();
|
||||
let win = windows.open({
|
||||
url: "data:text/html;charset=utf-8,<html>foo</html>",
|
||||
});
|
||||
|
||||
let steps = [
|
||||
function (index) {
|
||||
win1 = windows.open({
|
||||
url: "data:text/html;charset=utf-8,foo",
|
||||
onOpen: function(window) {
|
||||
tabIds['tab1'] = window.tabs.activeTab.id;
|
||||
next(index);
|
||||
}
|
||||
win.on('open', function(window) {
|
||||
test.assert(window.tabs.length);
|
||||
test.assert(window.tabs.activeTab);
|
||||
test.assert(window.tabs.activeTab.id);
|
||||
deferred.resolve({
|
||||
id: window.tabs.activeTab.id,
|
||||
win: win
|
||||
});
|
||||
},
|
||||
function (index) {
|
||||
win2 = windows.open({
|
||||
url: "data:text/html;charset=utf-8,foo",
|
||||
onOpen: function(window) {
|
||||
tabIds['tab2'] = window.tabs.activeTab.id;
|
||||
next(index);
|
||||
}
|
||||
});
|
||||
},
|
||||
function (index) {
|
||||
test.assertNotEqual(tabIds.tab1, tabIds.tab2, "Tab ids should be unique.");
|
||||
win1.close();
|
||||
win2.close();
|
||||
test.done();
|
||||
}
|
||||
];
|
||||
|
||||
function next(index) {
|
||||
if (index === steps.length) {
|
||||
return;
|
||||
}
|
||||
let fn = steps[index];
|
||||
index++
|
||||
fn(index);
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
// run!
|
||||
next(0);
|
||||
test.waitUntilDone();
|
||||
var one = openWindow(), two = openWindow();
|
||||
all([one, two]).then(function(results) {
|
||||
test.assertNotEqual(results[0].id, results[1].id, "tab Ids should not be equal.");
|
||||
results[0].win.close();
|
||||
results[1].win.close();
|
||||
test.done();
|
||||
});
|
||||
}
|
||||
|
||||
// related to Bug 671305
|
||||
|
|
|
@ -318,7 +318,7 @@ exports["test Anchor And Arrow"] = function(assert, done) {
|
|||
return;
|
||||
}
|
||||
let { panel, anchor } = queue.shift();
|
||||
panel.show(anchor);
|
||||
panel.show(null, anchor);
|
||||
}
|
||||
|
||||
let tabs= require("sdk/tabs");
|
||||
|
@ -462,6 +462,7 @@ exports["test Change Content URL"] = function(assert, done) {
|
|||
contentURL: "about:blank",
|
||||
contentScript: "self.port.emit('ready', document.location.href);"
|
||||
});
|
||||
|
||||
let count = 0;
|
||||
panel.port.on("ready", function (location) {
|
||||
count++;
|
||||
|
@ -651,7 +652,7 @@ if (isWindowPBSupported) {
|
|||
showTries++;
|
||||
panel.show();
|
||||
showTries++;
|
||||
panel.show(browserWindow.gBrowser);
|
||||
panel.show(null, browserWindow.gBrowser);
|
||||
|
||||
return promise;
|
||||
}).
|
||||
|
@ -703,9 +704,9 @@ if (isWindowPBSupported) {
|
|||
}
|
||||
});
|
||||
showTries++;
|
||||
panel.show(window.gBrowser);
|
||||
panel.show(null, window.gBrowser);
|
||||
showTries++;
|
||||
panel.show(browserWindow.gBrowser);
|
||||
panel.show(null, browserWindow.gBrowser);
|
||||
|
||||
return promise;
|
||||
}).
|
||||
|
@ -753,7 +754,7 @@ exports['test Style Applied Only Once'] = function (assert, done) {
|
|||
'self.port.on("check",function() { self.port.emit("count", document.getElementsByTagName("style").length); });' +
|
||||
'self.port.on("ping", function (count) { self.port.emit("pong", count); });'
|
||||
});
|
||||
|
||||
|
||||
panel.port.on('count', function (styleCount) {
|
||||
assert.equal(styleCount, 1, 'should only have one style');
|
||||
done();
|
||||
|
@ -836,7 +837,7 @@ else if (isGlobalPBSupported) {
|
|||
assert.ok(isPrivate(window), 'window is private');
|
||||
assert.equal(getWindow(window.gBrowser), window, 'private window elements returns window');
|
||||
assert.equal(getWindow(activeWindow.gBrowser), activeWindow, 'active window elements returns window');
|
||||
|
||||
|
||||
pb.once('stop', done);
|
||||
pb.deactivate();
|
||||
})
|
||||
|
|
|
@ -61,7 +61,7 @@ exports.testShowPanelAndWidgetOnPrivateWindow = function(assert, done) {
|
|||
}
|
||||
});
|
||||
}
|
||||
}).show(window.gBrowser);
|
||||
}).show(null, window.gBrowser);
|
||||
},
|
||||
onUntrack: function(window) {
|
||||
if (window === myPrivateWindow) {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
const { Ci } = require('chrome');
|
||||
const { open, backgroundify, windows, isBrowser,
|
||||
getXULWindow, getBaseWindow, getMostRecentWindow,
|
||||
getXULWindow, getBaseWindow, getToplevelWindow, getMostRecentWindow,
|
||||
getMostRecentBrowserWindow } = require('sdk/window/utils');
|
||||
const { close } = require('sdk/window/helpers');
|
||||
const windowUtils = require('sdk/deprecated/window-utils');
|
||||
|
@ -28,6 +28,16 @@ exports['test get nsIXULWindow from nsIDomWindow'] = function(assert) {
|
|||
'base returns nsIXULWindow');
|
||||
};
|
||||
|
||||
exports['test getToplevelWindow'] = function(assert) {
|
||||
let active = windowUtils.activeBrowserWindow;
|
||||
assert.equal(getToplevelWindow(active), active,
|
||||
'getToplevelWindow of toplevel window returns the same window');
|
||||
assert.equal(getToplevelWindow(active.content), active,
|
||||
'getToplevelWindow of tab window returns the browser window');
|
||||
assert.ok(getToplevelWindow(active) instanceof Ci.nsIDOMWindow,
|
||||
'getToplevelWindow returns nsIDOMWindow');
|
||||
};
|
||||
|
||||
exports['test top window creation'] = function(assert, done) {
|
||||
let window = open('data:text/html;charset=utf-8,Hello top window');
|
||||
assert.ok(~windows().indexOf(window), 'window was opened');
|
||||
|
@ -61,7 +71,10 @@ exports.testBackgroundify = function(assert, done) {
|
|||
'backgroundifyied window is in the list of windows');
|
||||
|
||||
// Wait for the window unload before ending test
|
||||
close(window).then(done);
|
||||
// backgroundified windows doesn't dispatch domwindowclosed event
|
||||
// so that we have to manually wait for unload event
|
||||
window.onunload = done;
|
||||
window.close();
|
||||
};
|
||||
|
||||
exports.testIsBrowser = function(assert) {
|
||||
|
|
|
@ -39,7 +39,7 @@ exports.testWindowTabsObject_alt = function(test) {
|
|||
test.assertNotEqual(window.tabs.activeTab, tab, "Correct active tab");
|
||||
|
||||
// end test
|
||||
tab.close(test.done());
|
||||
tab.close(test.done.bind(test));
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
|
@ -356,8 +356,6 @@ exports.testWindowOpenPrivateDefault = function(test) {
|
|||
url: 'about:mozilla',
|
||||
isPrivate: true,
|
||||
onOpen: function(window) {
|
||||
test.assertEqual();
|
||||
|
||||
let tab = window.tabs[0];
|
||||
tab.once('ready', function() {
|
||||
test.assertEqual(tab.url, 'about:mozilla', 'opened correct tab');
|
||||
|
|
|
@ -282,3 +282,11 @@ label:active,
|
|||
textarea:active {
|
||||
background-color: rgba(141, 184, 216, 0.5);
|
||||
}
|
||||
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
/* This binding only provide key shortcuts that we can't use on devices */
|
||||
input,
|
||||
textarea {
|
||||
-moz-binding: none !important;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -19,7 +19,7 @@ chrome.jar:
|
|||
content/screen.js (content/screen.js)
|
||||
content/runapp.js (content/runapp.js)
|
||||
#endif
|
||||
content/content.css (content/content.css)
|
||||
* content/content.css (content/content.css)
|
||||
content/touchcontrols.css (content/touchcontrols.css)
|
||||
|
||||
content/payment.js (content/payment.js)
|
||||
|
|
|
@ -415,7 +415,7 @@ UpdatePrompt.prototype = {
|
|||
// for the user to press Later or Install Now. In this situation we
|
||||
// don't want to clear this._update, becuase handleApplyPromptResult
|
||||
// needs it.
|
||||
if (this._applyPromptTimer == null) {
|
||||
if (this._applyPromptTimer == null && !this._waitingForIdle) {
|
||||
this._update = null;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[
|
||||
{
|
||||
"size": 896338804,
|
||||
"digest": "b9609e56607af44de60c70c8570712167245c5597dc87921326c646a78fabf569d3a79f8cea350f2addeb7d9e749612cae870874ca9359297b2c0e1af7ae3993",
|
||||
"size": 896371048,
|
||||
"digest": "73e89a23226726739c60b2e5be00da9d24d7ab8a39d60cf4c84a0ebf1d16a0cb1ff92440e72a6bdeef44cc7252a13d0bdd8a08770c858a5abce3f0bcea7a17ce",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gonk.tar.xz"
|
||||
},
|
||||
|
|
|
@ -11,17 +11,17 @@
|
|||
<default remote="caf" revision="ics_chocolate_rb4.2" sync-j="4"/>
|
||||
|
||||
<!-- Gonk specific things and forks -->
|
||||
<project name="platform_build" path="build" remote="b2g" revision="c647d5f967a5f17aaa27c792ea0ee35a2d44b113">
|
||||
<project name="platform_build" path="build" remote="b2g" revision="a56a09f9b3342e5d5cb05699288913035f4f6e48">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<!-- Information: fake-dalvik is tagged with B2G_1_0_0_20130125190500 --><project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9429d142f7f46add49f4665ce81ac0c0416dd9c1"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b8f901c98fe50a775b388af972f98500bb3f4ff"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="f634b3d50effdd42828cc757c01fdbf74e562a36"/>
|
||||
<!-- Information: librecovery is tagged with B2G_1_0_0_20130125190500 --><project name="librecovery" path="librecovery" remote="b2g" revision="601fc18b28c9d7cf6954b281ddd3b705c74a9215"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="302ab954f16d0ad708e87a1cf5e94f5d93f174c9"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="c2cd096baa69d4f5c2473523d352fba1a94c5cf4"/>
|
||||
|
||||
<!-- Stock Android things -->
|
||||
<!-- Information: platform/abi/cpp is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>
|
||||
<!-- Information: platform/abi/cpp is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>
|
||||
<!-- Information: platform/bionic is tagged with M8960AAAAANLYA100715A --><project name="platform/bionic" path="bionic" revision="cd5dfce80bc3f0139a56b58aca633202ccaee7f8"/>
|
||||
<!-- Information: platform/bootable/recovery is tagged with M8960AAAAANLYA100715A --><project name="platform/bootable/recovery" path="bootable/recovery" revision="e0a9ac010df3afaa47ba107192c05ac8b5516435"/>
|
||||
<!-- Information: platform/development is tagged with M8960AAAAANLYA100715A --><project name="platform/development" path="development" revision="a384622f5fcb1d2bebb9102591ff7ae91fe8ed2d"/>
|
||||
|
@ -29,62 +29,62 @@
|
|||
<!-- Information: device/sample is tagged with M8960AAAAANLYA100715A --><project name="device/sample" path="device/sample" revision="c328f3d4409db801628861baa8d279fb8855892f"/>
|
||||
<project name="platform_external_apriori" path="external/apriori" remote="b2g" revision="2c3a7113299eb789a076be23449d868b3bfa07fd"/>
|
||||
<!-- Information: platform/external/bluetooth/bluez is tagged with M76XXUSNEKNLYA2040 --><project name="platform/external/bluetooth/bluez" path="external/bluetooth/bluez" revision="1023c91c66e9c3bd1132480051993bf7827770f6"/>
|
||||
<!-- Information: platform/external/bluetooth/glib is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/bluetooth/glib" path="external/bluetooth/glib" revision="c6b49241cc1a8950723a5f74f8f4b4f4c3fa970e"/>
|
||||
<!-- Information: platform/external/bluetooth/glib is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/bluetooth/glib" path="external/bluetooth/glib" revision="c6b49241cc1a8950723a5f74f8f4b4f4c3fa970e"/>
|
||||
<!-- Information: platform/external/bluetooth/hcidump is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/external/bluetooth/hcidump" path="external/bluetooth/hcidump" revision="02b1eb24fbb3d0135a81edb4a2175b1397308d7d"/>
|
||||
<!-- Information: platform/external/bsdiff is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/bsdiff" path="external/bsdiff" revision="81872540236d9bb15cccf963d05b9de48baa5375"/>
|
||||
<!-- Information: platform/external/bzip2 is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/bzip2" path="external/bzip2" revision="048dacdca43eed1534689ececcf2781c63e1e4ba"/>
|
||||
<!-- Information: platform/external/bsdiff is tagged with M8960AAAAANLYA20234 --><project name="platform/external/bsdiff" path="external/bsdiff" revision="81872540236d9bb15cccf963d05b9de48baa5375"/>
|
||||
<!-- Information: platform/external/bzip2 is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/bzip2" path="external/bzip2" revision="048dacdca43eed1534689ececcf2781c63e1e4ba"/>
|
||||
<!-- Information: platform/external/dbus is tagged with M8960AAAAANLYA100715A --><project name="platform/external/dbus" path="external/dbus" revision="c7517b6195dc6926728352113e6cc335da3f9c9e"/>
|
||||
<!-- Information: platform/external/dhcpcd is tagged with M8960AAAAANLYA100715A --><project name="platform/external/dhcpcd" path="external/dhcpcd" revision="1e00fb67022d0921af0fead263f81762781b9ffa"/>
|
||||
<!-- Information: platform/external/dnsmasq is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/dnsmasq" path="external/dnsmasq" revision="f621afad94df46204c25fc2593a19d704d2637f5"/>
|
||||
<!-- Information: platform/external/dnsmasq is tagged with M8960AAAAANLYA20234 --><project name="platform/external/dnsmasq" path="external/dnsmasq" revision="f621afad94df46204c25fc2593a19d704d2637f5"/>
|
||||
<project name="platform_external_elfcopy" path="external/elfcopy" remote="b2g" revision="62c1bed1c4505369cac2e72fbe30452a598fb690"/>
|
||||
<project name="platform_external_elfutils" path="external/elfutils" remote="b2g" revision="72940dec691fa3255e13df01f8c53b620e446066"/>
|
||||
<!-- Information: platform/external/e2fsprogs is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/e2fsprogs" path="external/e2fsprogs" revision="d5f550bb2f556c5d287f7c8d2b77223654bcec37"/>
|
||||
<!-- Information: platform/external/expat is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/expat" path="external/expat" revision="6df134250feab71edb5915ecaa6268210bca76c5"/>
|
||||
<!-- Information: platform/external/fdlibm is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/fdlibm" path="external/fdlibm" revision="988ffeb12a6e044ae3504838ef1fee3fe0716934"/>
|
||||
<!-- Information: platform/external/flac is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/flac" path="external/flac" revision="5893fbe890f5dab8e4146d2baa4bd2691c0739e0"/>
|
||||
<!-- Information: platform/external/freetype is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/freetype" path="external/freetype" revision="aeb407daf3711a10a27f3bc2223c5eb05158076e"/>
|
||||
<!-- Information: platform/external/giflib is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/giflib" path="external/giflib" revision="b2597268aef084202a8c349d1cc072c03c6e22eb"/>
|
||||
<!-- Information: platform/external/e2fsprogs is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/e2fsprogs" path="external/e2fsprogs" revision="d5f550bb2f556c5d287f7c8d2b77223654bcec37"/>
|
||||
<!-- Information: platform/external/expat is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/expat" path="external/expat" revision="6df134250feab71edb5915ecaa6268210bca76c5"/>
|
||||
<!-- Information: platform/external/fdlibm is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/fdlibm" path="external/fdlibm" revision="988ffeb12a6e044ae3504838ef1fee3fe0716934"/>
|
||||
<!-- Information: platform/external/flac is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/flac" path="external/flac" revision="5893fbe890f5dab8e4146d2baa4bd2691c0739e0"/>
|
||||
<!-- Information: platform/external/freetype is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/freetype" path="external/freetype" revision="aeb407daf3711a10a27f3bc2223c5eb05158076e"/>
|
||||
<!-- Information: platform/external/giflib is tagged with M8960AAAAANLYA20234 --><project name="platform/external/giflib" path="external/giflib" revision="b2597268aef084202a8c349d1cc072c03c6e22eb"/>
|
||||
<project name="platform/external/gtest" path="external/gtest" revision="8c212ebe53bb2baab3575f03069016f1fb11e449"/>
|
||||
<!-- Information: platform/external/harfbuzz is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/harfbuzz" path="external/harfbuzz" revision="116610d63a859521dacf00fb6818ee9ab2e666f6"/>
|
||||
<!-- Information: platform/external/icu4c is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/icu4c" path="external/icu4c" revision="0fa67b93b831c6636ca18b152a1b1b14cc99b034"/>
|
||||
<!-- Information: platform/external/iptables is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/iptables" path="external/iptables" revision="3b2deb17f065c5664bb25e1a28489e5792eb63ff"/>
|
||||
<!-- Information: platform/external/harfbuzz is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/harfbuzz" path="external/harfbuzz" revision="116610d63a859521dacf00fb6818ee9ab2e666f6"/>
|
||||
<!-- Information: platform/external/icu4c is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/icu4c" path="external/icu4c" revision="0fa67b93b831c6636ca18b152a1b1b14cc99b034"/>
|
||||
<!-- Information: platform/external/iptables is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/iptables" path="external/iptables" revision="3b2deb17f065c5664bb25e1a28489e5792eb63ff"/>
|
||||
<!-- Information: platform/external/jpeg is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/external/jpeg" path="external/jpeg" revision="a62e464d672a4623233180e4023034bf825f066e"/>
|
||||
<!-- Information: platform/external/libgsm is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/libgsm" path="external/libgsm" revision="5e4516958690b9a1b2c98f88eeecba3edd2dbda4"/>
|
||||
<!-- Information: platform/external/liblzf is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/liblzf" path="external/liblzf" revision="6946aa575b0949d045722794850896099d937cbb"/>
|
||||
<!-- Information: platform/external/libnfc-nxp is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/libnfc-nxp" path="external/libnfc-nxp" revision="3a912b065a31a72c63ad56ac224cfeaa933423b6"/>
|
||||
<!-- Information: platform/external/libnl-headers is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/libnl-headers" path="external/libnl-headers" revision="6ccf7349d61f73ac26a0675d735d903ab919c658"/>
|
||||
<!-- Information: platform/external/libgsm is tagged with M8960AAAAANLYA20234 --><project name="platform/external/libgsm" path="external/libgsm" revision="5e4516958690b9a1b2c98f88eeecba3edd2dbda4"/>
|
||||
<!-- Information: platform/external/liblzf is tagged with M8064AAAAANLYA1203 --><project name="platform/external/liblzf" path="external/liblzf" revision="6946aa575b0949d045722794850896099d937cbb"/>
|
||||
<!-- Information: platform/external/libnfc-nxp is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/libnfc-nxp" path="external/libnfc-nxp" revision="3a912b065a31a72c63ad56ac224cfeaa933423b6"/>
|
||||
<!-- Information: platform/external/libnl-headers is tagged with M8064AAAAANLYA1203 --><project name="platform/external/libnl-headers" path="external/libnl-headers" revision="6ccf7349d61f73ac26a0675d735d903ab919c658"/>
|
||||
<!-- Information: platform/external/libpng is tagged with M8960AAAAANLYA100715A --><project name="platform/external/libpng" path="external/libpng" revision="9c3730f0efa69f580f03463c237cd928f3196404"/>
|
||||
<!-- Information: platform/external/libvpx is tagged with M8960AAAAANLYA1519349 --><project name="platform/external/libvpx" path="external/libvpx" revision="3a40da0d96da5c520e7707aa14f48a80956e20d7"/>
|
||||
<!-- Information: platform/external/libvpx is tagged with AU_LINUX_ANDROID_ICS_STRAWBERRY_RB5.04.00.04.29.023 --><project name="platform/external/libvpx" path="external/libvpx" revision="3a40da0d96da5c520e7707aa14f48a80956e20d7"/>
|
||||
<!-- Information: platform/external/llvm is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/external/llvm" path="external/llvm" revision="bff5923831940309f7d8ddbff5826ca6ed2dc050"/>
|
||||
<!-- Information: platform/external/mksh is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/external/mksh" path="external/mksh" revision="ec646e8f5e7dac9a77d1de549c6ed92c04d0cd4b"/>
|
||||
<!-- Information: platform_external_opensans is tagged with B2G_1_0_0_20130125190500 --><project name="platform_external_opensans" path="external/opensans" remote="b2g" revision="b5b4c226ca1d71e936153cf679dda6d3d60e2354"/>
|
||||
<!-- Information: platform/external/openssl is tagged with AU_LINUX_ANDROID_ICS.04.00.04.00.110 --><project name="platform/external/openssl" path="external/openssl" revision="27d333cce9a31c806b4bfa042925f045c727aecd"/>
|
||||
<!-- Information: platform/external/protobuf is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/protobuf" path="external/protobuf" revision="e217977611c52bccde7f7c78e1d3c790c6357431"/>
|
||||
<!-- Information: platform/external/safe-iop is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/safe-iop" path="external/safe-iop" revision="07073634e2e3aa4f518e36ed5dec3aabc549d5fb"/>
|
||||
<!-- Information: platform/external/protobuf is tagged with M8960AAAAANLYA20234 --><project name="platform/external/protobuf" path="external/protobuf" revision="e217977611c52bccde7f7c78e1d3c790c6357431"/>
|
||||
<!-- Information: platform/external/safe-iop is tagged with M8960AAAAANLYA20234 --><project name="platform/external/safe-iop" path="external/safe-iop" revision="07073634e2e3aa4f518e36ed5dec3aabc549d5fb"/>
|
||||
<!-- Information: screencap-gonk is tagged with B2G_1_0_0_20130125190500 --><project name="screencap-gonk" path="external/screencap-gonk" remote="b2g" revision="e6403c71e9eca8cb943739d5a0a192deac60fc51"/>
|
||||
<!-- Information: platform/external/skia is tagged with M8960AAAAANLYA100715A --><project name="platform/external/skia" path="external/skia" revision="7d90c85f2c0e3b747f7c7eff8bc9253b0063b439"/>
|
||||
<!-- Information: platform/external/sonivox is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/external/sonivox" path="external/sonivox" revision="7c967779dfc61ac1f346e972de91d4bfce7dccbb"/>
|
||||
<!-- Information: platform/external/speex is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/speex" path="external/speex" revision="ebe6230a7f7c69f5a4389f2b09b7b19ef9e94f32"/>
|
||||
<!-- Information: platform/external/speex is tagged with M8960AAAAANLYA20234 --><project name="platform/external/speex" path="external/speex" revision="ebe6230a7f7c69f5a4389f2b09b7b19ef9e94f32"/>
|
||||
<project name="platform/external/sqlite" path="external/sqlite" revision="fb30e613139b8836fdc8e81e166cf3a76e5fa17f"/>
|
||||
<!-- Information: platform/external/stlport is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/stlport" path="external/stlport" revision="a6734e0645fce81c9610de0488b729207bfa576e"/>
|
||||
<!-- Information: platform/external/strace is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/strace" path="external/strace" revision="c9fd2e5ef7d002e12e7cf2512506c84a9414b0fd"/>
|
||||
<!-- Information: platform/external/tagsoup is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/tagsoup" path="external/tagsoup" revision="68c2ec9e0acdb3214b7fb91dbab8c9fab8736817"/>
|
||||
<!-- Information: platform/external/stlport is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/stlport" path="external/stlport" revision="a6734e0645fce81c9610de0488b729207bfa576e"/>
|
||||
<!-- Information: platform/external/strace is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/strace" path="external/strace" revision="c9fd2e5ef7d002e12e7cf2512506c84a9414b0fd"/>
|
||||
<!-- Information: platform/external/tagsoup is tagged with M8064AAAAANLYA1203 --><project name="platform/external/tagsoup" path="external/tagsoup" revision="68c2ec9e0acdb3214b7fb91dbab8c9fab8736817"/>
|
||||
<!-- Information: platform/external/tinyalsa is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/external/tinyalsa" path="external/tinyalsa" revision="06cc244ee512c1352215e543615738bc8ac82814"/>
|
||||
<!-- Information: platform/external/tremolo is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/tremolo" path="external/tremolo" revision="25bd78d2392dbdc879ae53382cde9d019f79cf6f"/>
|
||||
<!-- Information: platform/external/tremolo is tagged with M8960AAAAANLYA20234 --><project name="platform/external/tremolo" path="external/tremolo" revision="25bd78d2392dbdc879ae53382cde9d019f79cf6f"/>
|
||||
<!-- Information: unbootimg is tagged with B2G_1_0_0_20130125190500 --><project name="unbootimg" path="external/unbootimg" remote="b2g" revision="9464623d92eb8668544916dc5a8f4f6337d0bc08"/>
|
||||
<!-- Information: platform/external/webp is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/webp" path="external/webp" revision="88fe2b83c4b9232cd08729556fd0485d6a6a92cd"/>
|
||||
<!-- Information: platform/external/webrtc is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/webrtc" path="external/webrtc" revision="137024dc8a2e9251a471e20518a9c3ae06f81f23"/>
|
||||
<!-- Information: platform/external/wpa_supplicant is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/wpa_supplicant" path="external/wpa_supplicant" revision="a01d37870bbf9892d43e792e5de0683ca41c5497"/>
|
||||
<!-- Information: platform/external/webp is tagged with M8960AAAAANLYA20234 --><project name="platform/external/webp" path="external/webp" revision="88fe2b83c4b9232cd08729556fd0485d6a6a92cd"/>
|
||||
<!-- Information: platform/external/webrtc is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/webrtc" path="external/webrtc" revision="137024dc8a2e9251a471e20518a9c3ae06f81f23"/>
|
||||
<!-- Information: platform/external/wpa_supplicant is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/wpa_supplicant" path="external/wpa_supplicant" revision="a01d37870bbf9892d43e792e5de0683ca41c5497"/>
|
||||
<!-- Information: platform/external/hostap is tagged with M8960AAAAANLYA1047 --><project name="platform/external/hostap" path="external/hostap" revision="bf04b0faadbdeb4b7943f2e2c4c5aa59df872bb1"/>
|
||||
<!-- Information: platform/external/zlib is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.00.01.19.008 --><project name="platform/external/zlib" path="external/zlib" revision="f96a1d1ebfdf1cd582210fd09c23d8f59e0ae094"/>
|
||||
<!-- Information: platform/external/yaffs2 is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/yaffs2" path="external/yaffs2" revision="0afa916204c664b3114429637b63af1321a0aeca"/>
|
||||
<!-- Information: platform/external/yaffs2 is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/yaffs2" path="external/yaffs2" revision="0afa916204c664b3114429637b63af1321a0aeca"/>
|
||||
<!-- Information: platform/frameworks/base is tagged with M76XXUSNEKNLYA2040 --><project name="platform/frameworks/base" path="frameworks/base" revision="eb2bc75803ca179353c24c364a9c8a8ce23e8b78"/>
|
||||
<!-- Information: platform/frameworks/opt/emoji is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="a95d8db002770469d72dfaf59ff37ac96db29a87"/>
|
||||
<!-- Information: platform/frameworks/opt/emoji is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="a95d8db002770469d72dfaf59ff37ac96db29a87"/>
|
||||
<!-- Information: platform/frameworks/support is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/frameworks/support" path="frameworks/support" revision="27208692b001981f1806f4f396434f4eac78b909"/>
|
||||
<!-- Information: platform/hardware/libhardware is tagged with M8960AAAAANLYA1049B --><project name="platform/hardware/libhardware" path="hardware/libhardware" revision="4a619901847621f8a7305edf42dd07347a140484"/>
|
||||
<!-- Information: platform/hardware/libhardware_legacy is tagged with M8960AAAAANLYA153611 --><project name="platform/hardware/libhardware_legacy" path="hardware/libhardware_legacy" revision="87b4d7afa8f854b445e2d0d95091f6f6069f2b30"/>
|
||||
<!-- Information: platform/libcore is tagged with M8960AAAAANLYA100715A --><project name="platform/libcore" path="libcore" revision="30841f9fba9ccd5c54f4f079f495994db97f283e"/>
|
||||
<!-- Information: platform/ndk is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/ndk" path="ndk" revision="9f555971e1481854d5b4dc11b3e6af9fff4f241f"/>
|
||||
<!-- Information: platform/ndk is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/ndk" path="ndk" revision="9f555971e1481854d5b4dc11b3e6af9fff4f241f"/>
|
||||
<!-- Information: platform/prebuilt is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/prebuilt" path="prebuilt" revision="447ea790fcc957dde59730ecc2a65ca263bdc733"/>
|
||||
<!-- Information: platform/system/bluetooth is tagged with M8960AAAAANLYA100703 --><project name="platform/system/bluetooth" path="system/bluetooth" revision="7772cad4823f1f427ce1d4df84a55982386d6d18"/>
|
||||
<!-- Information: platform/system/core is tagged with M76XXUSNEKNLYA2040 --><project name="platform/system/core" path="system/core" revision="bf1970408676ce570b8f4dc3efa038e47552137f"/>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[
|
||||
{
|
||||
"size": 678095100,
|
||||
"digest": "79cf8ecf3c8faa18c4f485eed5f611fdaea25585f2ab3203eb912185c644179708b283c6222661006c145fa67d18e39c28fdf76ebe971ef5e0fbaf348f16a1ac",
|
||||
"size": 678265436,
|
||||
"digest": "36d05d77831be476e639095c04f25557171bb61c6764b2f6a49e253471aac8855adff17989089f1dce790d7e860c91d0b1d0f268fbc8fc661fca0c83ca7d65f5",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gonk.tar.xz"
|
||||
},
|
||||
|
|
|
@ -11,16 +11,16 @@
|
|||
<default remote="caf" revision="refs/tags/android-4.0.4_r2.1" sync-j="4"/>
|
||||
|
||||
<!-- Gonk specific things and forks -->
|
||||
<project name="platform_build" path="build" remote="b2g" revision="c647d5f967a5f17aaa27c792ea0ee35a2d44b113">
|
||||
<project name="platform_build" path="build" remote="b2g" revision="a56a09f9b3342e5d5cb05699288913035f4f6e48">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<!-- Information: fake-dalvik is tagged with B2G_1_0_0_20130125190500 --><project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="5f073eb845698119b729af991a6dd0325586487d"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b8f901c98fe50a775b388af972f98500bb3f4ff"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="f634b3d50effdd42828cc757c01fdbf74e562a36"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="3769dfb6566897c8dca0abdc596728602d5fabae"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="c2cd096baa69d4f5c2473523d352fba1a94c5cf4"/>
|
||||
|
||||
<!-- Stock Android things -->
|
||||
<!-- Information: platform/abi/cpp is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>
|
||||
<!-- Information: platform/abi/cpp is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>
|
||||
<project name="platform/bionic" path="bionic" revision="c7bab8cb8483e7869eabdbd4add7c9e5beeecc80"/>
|
||||
<!-- Information: platform/bootable/recovery is tagged with android-4.0.4_r2.1 --><project name="platform/bootable/recovery" path="bootable/recovery" revision="fadc5ac81d6400ebdd041f7d4ea64021596d6b7d"/>
|
||||
<!-- Information: device/common is tagged with android-sdk-adt_r20 --><project name="device/common" path="device/common" revision="7d4526582f88808a3194e1a3b304abb369d2745c"/>
|
||||
|
@ -29,55 +29,55 @@
|
|||
<!-- Information: platform/external/bluetooth/bluez is tagged with android-4.0.4_r2.1 --><project name="platform/external/bluetooth/bluez" path="external/bluetooth/bluez" revision="966afbd88f0bfc325bf80274ad2723c238883fa1"/>
|
||||
<!-- Information: platform/external/bluetooth/glib is tagged with android-cts-4.1_r2 --><project name="platform/external/bluetooth/glib" path="external/bluetooth/glib" revision="1143b9918eab068401b604eb11c3f651f4e38b25"/>
|
||||
<!-- Information: platform/external/bluetooth/hcidump is tagged with android-cts-4.1_r2 --><project name="platform/external/bluetooth/hcidump" path="external/bluetooth/hcidump" revision="7322661808c2006b7848e79e6bb72b37fbcf6710"/>
|
||||
<!-- Information: platform/external/bsdiff is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/bsdiff" path="external/bsdiff" revision="81872540236d9bb15cccf963d05b9de48baa5375"/>
|
||||
<!-- Information: platform/external/bsdiff is tagged with M8960AAAAANLYA20234 --><project name="platform/external/bsdiff" path="external/bsdiff" revision="81872540236d9bb15cccf963d05b9de48baa5375"/>
|
||||
<project name="platform/external/busybox" path="external/busybox" remote="linaro" revision="2e461c8029a50d986dfe4ab07ae5a1834b5c40f0"/>
|
||||
<!-- Information: platform/external/bzip2 is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/bzip2" path="external/bzip2" revision="048dacdca43eed1534689ececcf2781c63e1e4ba"/>
|
||||
<!-- Information: platform/external/bzip2 is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/bzip2" path="external/bzip2" revision="048dacdca43eed1534689ececcf2781c63e1e4ba"/>
|
||||
<!-- Information: platform/external/dbus is tagged with android-cts-4.1_r2 --><project name="platform/external/dbus" path="external/dbus" revision="537eaff5de9aace3348436166d4cde7adc1e488e"/>
|
||||
<!-- Information: platform/external/dhcpcd is tagged with android-sdk-adt_r20 --><project name="platform/external/dhcpcd" path="external/dhcpcd" revision="ddaa48f57b54b2862b3e6dcf18a44c9647f3baaa"/>
|
||||
<!-- Information: platform/external/dnsmasq is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/dnsmasq" path="external/dnsmasq" revision="f621afad94df46204c25fc2593a19d704d2637f5"/>
|
||||
<!-- Information: platform/external/dnsmasq is tagged with M8960AAAAANLYA20234 --><project name="platform/external/dnsmasq" path="external/dnsmasq" revision="f621afad94df46204c25fc2593a19d704d2637f5"/>
|
||||
<project name="platform_external_elfcopy" path="external/elfcopy" remote="b2g" revision="62c1bed1c4505369cac2e72fbe30452a598fb690"/>
|
||||
<project name="platform_external_elfutils" path="external/elfutils" remote="b2g" revision="72940dec691fa3255e13df01f8c53b620e446066"/>
|
||||
<!-- Information: platform/external/expat is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/expat" path="external/expat" revision="6df134250feab71edb5915ecaa6268210bca76c5"/>
|
||||
<!-- Information: platform/external/fdlibm is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/fdlibm" path="external/fdlibm" revision="988ffeb12a6e044ae3504838ef1fee3fe0716934"/>
|
||||
<!-- Information: platform/external/flac is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/flac" path="external/flac" revision="5893fbe890f5dab8e4146d2baa4bd2691c0739e0"/>
|
||||
<!-- Information: platform/external/freetype is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/freetype" path="external/freetype" revision="aeb407daf3711a10a27f3bc2223c5eb05158076e"/>
|
||||
<!-- Information: platform/external/giflib is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/giflib" path="external/giflib" revision="b2597268aef084202a8c349d1cc072c03c6e22eb"/>
|
||||
<!-- Information: platform/external/expat is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/expat" path="external/expat" revision="6df134250feab71edb5915ecaa6268210bca76c5"/>
|
||||
<!-- Information: platform/external/fdlibm is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/fdlibm" path="external/fdlibm" revision="988ffeb12a6e044ae3504838ef1fee3fe0716934"/>
|
||||
<!-- Information: platform/external/flac is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/flac" path="external/flac" revision="5893fbe890f5dab8e4146d2baa4bd2691c0739e0"/>
|
||||
<!-- Information: platform/external/freetype is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/freetype" path="external/freetype" revision="aeb407daf3711a10a27f3bc2223c5eb05158076e"/>
|
||||
<!-- Information: platform/external/giflib is tagged with M8960AAAAANLYA20234 --><project name="platform/external/giflib" path="external/giflib" revision="b2597268aef084202a8c349d1cc072c03c6e22eb"/>
|
||||
<project name="platform/external/gtest" path="external/gtest" revision="8c212ebe53bb2baab3575f03069016f1fb11e449"/>
|
||||
<!-- Information: platform/external/harfbuzz is tagged with android-sdk-adt_r20 --><project name="platform/external/harfbuzz" path="external/harfbuzz" revision="bae491c03a00757d83ede8d855b7d85d246bde3d"/>
|
||||
<!-- icu4c is missing the default tag in caf, that's the *only* reason for the hardcode -->
|
||||
<!-- Information: platform/external/icu4c is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/icu4c" path="external/icu4c" revision="0fa67b93b831c6636ca18b152a1b1b14cc99b034"/>
|
||||
<!-- Information: platform/external/iptables is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/iptables" path="external/iptables" revision="3b2deb17f065c5664bb25e1a28489e5792eb63ff"/>
|
||||
<!-- Information: platform/external/jhead is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/jhead" path="external/jhead" revision="754078052c687f6721536009c816644c73e4f145"/>
|
||||
<!-- Information: platform/external/icu4c is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/icu4c" path="external/icu4c" revision="0fa67b93b831c6636ca18b152a1b1b14cc99b034"/>
|
||||
<!-- Information: platform/external/iptables is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/iptables" path="external/iptables" revision="3b2deb17f065c5664bb25e1a28489e5792eb63ff"/>
|
||||
<!-- Information: platform/external/jhead is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/jhead" path="external/jhead" revision="754078052c687f6721536009c816644c73e4f145"/>
|
||||
<!-- Information: platform/external/jpeg is tagged with android-cts-4.1_r2 --><project name="platform/external/jpeg" path="external/jpeg" revision="d4fad7f50f79626455d88523207e05b868819cd8"/>
|
||||
<!-- Information: platform/external/libgsm is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/libgsm" path="external/libgsm" revision="5e4516958690b9a1b2c98f88eeecba3edd2dbda4"/>
|
||||
<!-- Information: platform/external/liblzf is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/liblzf" path="external/liblzf" revision="6946aa575b0949d045722794850896099d937cbb"/>
|
||||
<!-- Information: platform/external/libgsm is tagged with M8960AAAAANLYA20234 --><project name="platform/external/libgsm" path="external/libgsm" revision="5e4516958690b9a1b2c98f88eeecba3edd2dbda4"/>
|
||||
<!-- Information: platform/external/liblzf is tagged with M8064AAAAANLYA1203 --><project name="platform/external/liblzf" path="external/liblzf" revision="6946aa575b0949d045722794850896099d937cbb"/>
|
||||
<!-- Information: platform/external/libnfc-nxp is tagged with android-4.0.4_r2.1 --><project name="platform/external/libnfc-nxp" path="external/libnfc-nxp" revision="533c14450e6239cce8acb74f4e4dea2c89f8f219"/>
|
||||
<!-- Information: platform/external/libnl-headers is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/libnl-headers" path="external/libnl-headers" revision="6ccf7349d61f73ac26a0675d735d903ab919c658"/>
|
||||
<!-- Information: platform/external/libnl-headers is tagged with M8064AAAAANLYA1203 --><project name="platform/external/libnl-headers" path="external/libnl-headers" revision="6ccf7349d61f73ac26a0675d735d903ab919c658"/>
|
||||
<!-- Information: platform/external/libpng is tagged with android-4.0.4_r2.1 --><project name="platform/external/libpng" path="external/libpng" revision="84d92c718ab9f48faec0f640747c4b6f7a995607"/>
|
||||
<!-- Information: platform/external/libvpx is tagged with AU_LINUX_ANDROID_ICS_STRAWBERRY_RB5.04.00.04.29.023 --><project name="platform/external/libvpx" path="external/libvpx" revision="3a40da0d96da5c520e7707aa14f48a80956e20d7"/>
|
||||
<!-- Information: platform/external/mksh is tagged with M8960AAAAANLYA1099D --><project name="platform/external/mksh" path="external/mksh" revision="5155f1c7438ef540d7b25eb70aa1639579795b07"/>
|
||||
<!-- Information: platform_external_opensans is tagged with B2G_1_0_0_20130125190500 --><project name="platform_external_opensans" path="external/opensans" remote="b2g" revision="b5b4c226ca1d71e936153cf679dda6d3d60e2354"/>
|
||||
<!-- Information: platform/external/openssl is tagged with android-4.0.4_r2.1 --><project name="platform/external/openssl" path="external/openssl" revision="ce96fb211b9a44bbd7fb5ef7ed0e6c1244045c2e"/>
|
||||
<!-- Information: platform/external/protobuf is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/protobuf" path="external/protobuf" revision="e217977611c52bccde7f7c78e1d3c790c6357431"/>
|
||||
<!-- Information: platform/external/safe-iop is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/safe-iop" path="external/safe-iop" revision="07073634e2e3aa4f518e36ed5dec3aabc549d5fb"/>
|
||||
<!-- Information: platform/external/protobuf is tagged with M8960AAAAANLYA20234 --><project name="platform/external/protobuf" path="external/protobuf" revision="e217977611c52bccde7f7c78e1d3c790c6357431"/>
|
||||
<!-- Information: platform/external/safe-iop is tagged with M8960AAAAANLYA20234 --><project name="platform/external/safe-iop" path="external/safe-iop" revision="07073634e2e3aa4f518e36ed5dec3aabc549d5fb"/>
|
||||
<!-- Information: screencap-gonk is tagged with B2G_1_0_0_20130125190500 --><project name="screencap-gonk" path="external/screencap-gonk" remote="b2g" revision="e6403c71e9eca8cb943739d5a0a192deac60fc51"/>
|
||||
<!-- Information: platform/external/skia is tagged with android-4.0.4_r2.1 --><project name="platform/external/skia" path="external/skia" revision="5c67a309e16bffe7013defda8f1217b3ce2420b4"/>
|
||||
<!-- Information: platform/external/sonivox is tagged with android-sdk-adt_r20 --><project name="platform/external/sonivox" path="external/sonivox" revision="5f9600971859fe072f31b38a51c38157f5f9b381"/>
|
||||
<!-- Information: platform/external/speex is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/speex" path="external/speex" revision="ebe6230a7f7c69f5a4389f2b09b7b19ef9e94f32"/>
|
||||
<!-- Information: platform/external/speex is tagged with M8960AAAAANLYA20234 --><project name="platform/external/speex" path="external/speex" revision="ebe6230a7f7c69f5a4389f2b09b7b19ef9e94f32"/>
|
||||
<!-- Information: platform/external/sqlite is tagged with android-4.0.4_r2.1 --><project name="platform/external/sqlite" path="external/sqlite" revision="c999ff8c12a4cf81cb9ad628f47b2720effba5e5"/>
|
||||
<!-- Information: platform/external/stlport is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/stlport" path="external/stlport" revision="a6734e0645fce81c9610de0488b729207bfa576e"/>
|
||||
<!-- Information: platform/external/strace is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/strace" path="external/strace" revision="c9fd2e5ef7d002e12e7cf2512506c84a9414b0fd"/>
|
||||
<!-- Information: platform/external/tagsoup is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/tagsoup" path="external/tagsoup" revision="68c2ec9e0acdb3214b7fb91dbab8c9fab8736817"/>
|
||||
<!-- Information: platform/external/stlport is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/stlport" path="external/stlport" revision="a6734e0645fce81c9610de0488b729207bfa576e"/>
|
||||
<!-- Information: platform/external/strace is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/strace" path="external/strace" revision="c9fd2e5ef7d002e12e7cf2512506c84a9414b0fd"/>
|
||||
<!-- Information: platform/external/tagsoup is tagged with M8064AAAAANLYA1203 --><project name="platform/external/tagsoup" path="external/tagsoup" revision="68c2ec9e0acdb3214b7fb91dbab8c9fab8736817"/>
|
||||
<!-- Information: platform/external/tinyalsa is tagged with android-4.0.4_r2.1 --><project name="platform/external/tinyalsa" path="external/tinyalsa" revision="495239e683a728957c890c124b239f9b7b8ef5a8"/>
|
||||
<!-- Information: platform/external/tremolo is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/tremolo" path="external/tremolo" revision="25bd78d2392dbdc879ae53382cde9d019f79cf6f"/>
|
||||
<!-- Information: platform/external/webp is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/webp" path="external/webp" revision="88fe2b83c4b9232cd08729556fd0485d6a6a92cd"/>
|
||||
<!-- Information: platform/external/tremolo is tagged with M8960AAAAANLYA20234 --><project name="platform/external/tremolo" path="external/tremolo" revision="25bd78d2392dbdc879ae53382cde9d019f79cf6f"/>
|
||||
<!-- Information: platform/external/webp is tagged with M8960AAAAANLYA20234 --><project name="platform/external/webp" path="external/webp" revision="88fe2b83c4b9232cd08729556fd0485d6a6a92cd"/>
|
||||
<!-- Information: platform/external/webrtc is tagged with android-sdk-adt_r20 --><project name="platform/external/webrtc" path="external/webrtc" revision="4b6dc1ec58105d17dc8c2f550124cc0621dc93b7"/>
|
||||
<!-- Information: platform/external/wpa_supplicant is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/external/wpa_supplicant" path="external/wpa_supplicant" revision="a01d37870bbf9892d43e792e5de0683ca41c5497"/>
|
||||
<!-- Information: platform/external/wpa_supplicant is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/wpa_supplicant" path="external/wpa_supplicant" revision="a01d37870bbf9892d43e792e5de0683ca41c5497"/>
|
||||
<project name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="6dd24fc3792d71edccef9b09140f9a44b063a553"/>
|
||||
<!-- Information: platform/external/zlib is tagged with android-4.0.4_r2.1 --><project name="platform/external/zlib" path="external/zlib" revision="69e5801bd16a495e1c1666669fe827b1ddb8d56b"/>
|
||||
<!-- Information: platform/external/yaffs2 is tagged with android-4.0.4-aah_r1 --><project name="platform/external/yaffs2" path="external/yaffs2" revision="6232e2d5ab34a40d710e4b05ab0ec6e3727804e7"/>
|
||||
<!-- Information: platform/frameworks/base is tagged with android-4.0.4_r2.1 --><project name="platform/frameworks/base" path="frameworks/base" revision="df331873c8576e0ae34ae1ee3cc258beed373535"/>
|
||||
<!-- Information: platform/frameworks/opt/emoji is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.052 --><project name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="a95d8db002770469d72dfaf59ff37ac96db29a87"/>
|
||||
<!-- Information: platform/frameworks/opt/emoji is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="a95d8db002770469d72dfaf59ff37ac96db29a87"/>
|
||||
<!-- Information: platform/frameworks/support is tagged with android-4.0.4_r2.1 --><project name="platform/frameworks/support" path="frameworks/support" revision="bfc8e01b7b0d5ea70ce89d0409b72b7f7d540f43"/>
|
||||
<!-- Information: platform/hardware/libhardware is tagged with android-4.0.4_r2.1 --><project name="platform/hardware/libhardware" path="hardware/libhardware" revision="a9b677fce432b29ab8f61e13796f34880dc0fe0f"/>
|
||||
<!-- Information: platform/hardware/libhardware_legacy is tagged with android-4.0.4_r2.1 --><project name="platform/hardware/libhardware_legacy" path="hardware/libhardware_legacy" revision="153d0f1a27e0a157cabb6ca9d0d88248630f5695"/>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[
|
||||
{
|
||||
"size": 833339832,
|
||||
"digest": "c5bc3424d9a52bd12dc6d849e8bd111514a7edfb84180bf8dd67f77e925fea95e9f41afade187694e1724b3d9b817e7cf2ba62be000a9f11db1e7ff689bb85fd",
|
||||
"size": 833424196,
|
||||
"digest": "f47e040bac9a0e872dc7289993093c3d1be1befbab2d7caad17645a222147398573aa563f5485ca00ccfbf8c3cefc12d09fe91bf10499baa6d373e80de6bdd70",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gonk.tar.xz"
|
||||
},
|
||||
|
|
|
@ -11,17 +11,17 @@
|
|||
<default remote="caf" revision="ics_chocolate_rb4.2" sync-j="4"/>
|
||||
|
||||
<!-- Gonk specific things and forks -->
|
||||
<project name="platform_build" path="build" remote="b2g" revision="c647d5f967a5f17aaa27c792ea0ee35a2d44b113">
|
||||
<project name="platform_build" path="build" remote="b2g" revision="eef073ce712b741f799192fc86a4e009834760ab">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<!-- Information: fake-dalvik is tagged with B2G_1_0_0_20130125190500 --><project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9429d142f7f46add49f4665ce81ac0c0416dd9c1"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b8f901c98fe50a775b388af972f98500bb3f4ff"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="f634b3d50effdd42828cc757c01fdbf74e562a36"/>
|
||||
<!-- Information: librecovery is tagged with B2G_1_0_0_20130125190500 --><project name="librecovery" path="librecovery" remote="b2g" revision="601fc18b28c9d7cf6954b281ddd3b705c74a9215"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="302ab954f16d0ad708e87a1cf5e94f5d93f174c9"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="c2cd096baa69d4f5c2473523d352fba1a94c5cf4"/>
|
||||
|
||||
<!-- Stock Android things -->
|
||||
<!-- Information: platform/abi/cpp is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>
|
||||
<!-- Information: platform/abi/cpp is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>
|
||||
<!-- Information: platform/bionic is tagged with M8960AAAAANLYA100715A --><project name="platform/bionic" path="bionic" revision="cd5dfce80bc3f0139a56b58aca633202ccaee7f8"/>
|
||||
<!-- Information: platform/bootable/recovery is tagged with M8960AAAAANLYA100715A --><project name="platform/bootable/recovery" path="bootable/recovery" revision="e0a9ac010df3afaa47ba107192c05ac8b5516435"/>
|
||||
<!-- Information: platform/development is tagged with M8960AAAAANLYA100715A --><project name="platform/development" path="development" revision="a384622f5fcb1d2bebb9102591ff7ae91fe8ed2d"/>
|
||||
|
@ -29,62 +29,62 @@
|
|||
<!-- Information: device/sample is tagged with M8960AAAAANLYA100715A --><project name="device/sample" path="device/sample" revision="c328f3d4409db801628861baa8d279fb8855892f"/>
|
||||
<project name="platform_external_apriori" path="external/apriori" remote="b2g" revision="2c3a7113299eb789a076be23449d868b3bfa07fd"/>
|
||||
<!-- Information: platform/external/bluetooth/bluez is tagged with M76XXUSNEKNLYA2040 --><project name="platform/external/bluetooth/bluez" path="external/bluetooth/bluez" revision="1023c91c66e9c3bd1132480051993bf7827770f6"/>
|
||||
<!-- Information: platform/external/bluetooth/glib is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/bluetooth/glib" path="external/bluetooth/glib" revision="c6b49241cc1a8950723a5f74f8f4b4f4c3fa970e"/>
|
||||
<!-- Information: platform/external/bluetooth/glib is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/bluetooth/glib" path="external/bluetooth/glib" revision="c6b49241cc1a8950723a5f74f8f4b4f4c3fa970e"/>
|
||||
<!-- Information: platform/external/bluetooth/hcidump is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/external/bluetooth/hcidump" path="external/bluetooth/hcidump" revision="02b1eb24fbb3d0135a81edb4a2175b1397308d7d"/>
|
||||
<!-- Information: platform/external/bsdiff is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/bsdiff" path="external/bsdiff" revision="81872540236d9bb15cccf963d05b9de48baa5375"/>
|
||||
<!-- Information: platform/external/bzip2 is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/bzip2" path="external/bzip2" revision="048dacdca43eed1534689ececcf2781c63e1e4ba"/>
|
||||
<!-- Information: platform/external/bsdiff is tagged with M8960AAAAANLYA20234 --><project name="platform/external/bsdiff" path="external/bsdiff" revision="81872540236d9bb15cccf963d05b9de48baa5375"/>
|
||||
<!-- Information: platform/external/bzip2 is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/bzip2" path="external/bzip2" revision="048dacdca43eed1534689ececcf2781c63e1e4ba"/>
|
||||
<!-- Information: platform/external/dbus is tagged with M8960AAAAANLYA100715A --><project name="platform/external/dbus" path="external/dbus" revision="c7517b6195dc6926728352113e6cc335da3f9c9e"/>
|
||||
<!-- Information: platform/external/dhcpcd is tagged with M8960AAAAANLYA100715A --><project name="platform/external/dhcpcd" path="external/dhcpcd" revision="1e00fb67022d0921af0fead263f81762781b9ffa"/>
|
||||
<!-- Information: platform/external/dnsmasq is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/dnsmasq" path="external/dnsmasq" revision="f621afad94df46204c25fc2593a19d704d2637f5"/>
|
||||
<!-- Information: platform/external/dnsmasq is tagged with M8960AAAAANLYA20234 --><project name="platform/external/dnsmasq" path="external/dnsmasq" revision="f621afad94df46204c25fc2593a19d704d2637f5"/>
|
||||
<project name="platform_external_elfcopy" path="external/elfcopy" remote="b2g" revision="62c1bed1c4505369cac2e72fbe30452a598fb690"/>
|
||||
<project name="platform_external_elfutils" path="external/elfutils" remote="b2g" revision="72940dec691fa3255e13df01f8c53b620e446066"/>
|
||||
<!-- Information: platform/external/e2fsprogs is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/e2fsprogs" path="external/e2fsprogs" revision="d5f550bb2f556c5d287f7c8d2b77223654bcec37"/>
|
||||
<!-- Information: platform/external/expat is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/expat" path="external/expat" revision="6df134250feab71edb5915ecaa6268210bca76c5"/>
|
||||
<!-- Information: platform/external/fdlibm is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/fdlibm" path="external/fdlibm" revision="988ffeb12a6e044ae3504838ef1fee3fe0716934"/>
|
||||
<!-- Information: platform/external/flac is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/flac" path="external/flac" revision="5893fbe890f5dab8e4146d2baa4bd2691c0739e0"/>
|
||||
<!-- Information: platform/external/freetype is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/freetype" path="external/freetype" revision="aeb407daf3711a10a27f3bc2223c5eb05158076e"/>
|
||||
<!-- Information: platform/external/giflib is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/giflib" path="external/giflib" revision="b2597268aef084202a8c349d1cc072c03c6e22eb"/>
|
||||
<!-- Information: platform/external/e2fsprogs is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/e2fsprogs" path="external/e2fsprogs" revision="d5f550bb2f556c5d287f7c8d2b77223654bcec37"/>
|
||||
<!-- Information: platform/external/expat is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/expat" path="external/expat" revision="6df134250feab71edb5915ecaa6268210bca76c5"/>
|
||||
<!-- Information: platform/external/fdlibm is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/fdlibm" path="external/fdlibm" revision="988ffeb12a6e044ae3504838ef1fee3fe0716934"/>
|
||||
<!-- Information: platform/external/flac is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/flac" path="external/flac" revision="5893fbe890f5dab8e4146d2baa4bd2691c0739e0"/>
|
||||
<!-- Information: platform/external/freetype is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/freetype" path="external/freetype" revision="aeb407daf3711a10a27f3bc2223c5eb05158076e"/>
|
||||
<!-- Information: platform/external/giflib is tagged with M8960AAAAANLYA20234 --><project name="platform/external/giflib" path="external/giflib" revision="b2597268aef084202a8c349d1cc072c03c6e22eb"/>
|
||||
<project name="platform/external/gtest" path="external/gtest" revision="8c212ebe53bb2baab3575f03069016f1fb11e449"/>
|
||||
<!-- Information: platform/external/harfbuzz is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/harfbuzz" path="external/harfbuzz" revision="116610d63a859521dacf00fb6818ee9ab2e666f6"/>
|
||||
<!-- Information: platform/external/icu4c is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/icu4c" path="external/icu4c" revision="0fa67b93b831c6636ca18b152a1b1b14cc99b034"/>
|
||||
<!-- Information: platform/external/iptables is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/iptables" path="external/iptables" revision="3b2deb17f065c5664bb25e1a28489e5792eb63ff"/>
|
||||
<!-- Information: platform/external/harfbuzz is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/harfbuzz" path="external/harfbuzz" revision="116610d63a859521dacf00fb6818ee9ab2e666f6"/>
|
||||
<!-- Information: platform/external/icu4c is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/icu4c" path="external/icu4c" revision="0fa67b93b831c6636ca18b152a1b1b14cc99b034"/>
|
||||
<!-- Information: platform/external/iptables is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/iptables" path="external/iptables" revision="3b2deb17f065c5664bb25e1a28489e5792eb63ff"/>
|
||||
<!-- Information: platform/external/jpeg is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/external/jpeg" path="external/jpeg" revision="a62e464d672a4623233180e4023034bf825f066e"/>
|
||||
<!-- Information: platform/external/libgsm is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/libgsm" path="external/libgsm" revision="5e4516958690b9a1b2c98f88eeecba3edd2dbda4"/>
|
||||
<!-- Information: platform/external/liblzf is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/liblzf" path="external/liblzf" revision="6946aa575b0949d045722794850896099d937cbb"/>
|
||||
<!-- Information: platform/external/libnfc-nxp is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/libnfc-nxp" path="external/libnfc-nxp" revision="3a912b065a31a72c63ad56ac224cfeaa933423b6"/>
|
||||
<!-- Information: platform/external/libnl-headers is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/libnl-headers" path="external/libnl-headers" revision="6ccf7349d61f73ac26a0675d735d903ab919c658"/>
|
||||
<!-- Information: platform/external/libgsm is tagged with M8960AAAAANLYA20234 --><project name="platform/external/libgsm" path="external/libgsm" revision="5e4516958690b9a1b2c98f88eeecba3edd2dbda4"/>
|
||||
<!-- Information: platform/external/liblzf is tagged with M8960AAAAANLYA23232 --><project name="platform/external/liblzf" path="external/liblzf" revision="6946aa575b0949d045722794850896099d937cbb"/>
|
||||
<!-- Information: platform/external/libnfc-nxp is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/libnfc-nxp" path="external/libnfc-nxp" revision="3a912b065a31a72c63ad56ac224cfeaa933423b6"/>
|
||||
<!-- Information: platform/external/libnl-headers is tagged with M8960AAAAANLYA23232 --><project name="platform/external/libnl-headers" path="external/libnl-headers" revision="6ccf7349d61f73ac26a0675d735d903ab919c658"/>
|
||||
<!-- Information: platform/external/libpng is tagged with M8960AAAAANLYA100715A --><project name="platform/external/libpng" path="external/libpng" revision="9c3730f0efa69f580f03463c237cd928f3196404"/>
|
||||
<!-- Information: platform/external/libvpx is tagged with M8960AAAAANLYA1519349 --><project name="platform/external/libvpx" path="external/libvpx" revision="3a40da0d96da5c520e7707aa14f48a80956e20d7"/>
|
||||
<!-- Information: platform/external/libvpx is tagged with AU_LINUX_ANDROID_ICS_STRAWBERRY_RB5.04.00.04.29.023 --><project name="platform/external/libvpx" path="external/libvpx" revision="3a40da0d96da5c520e7707aa14f48a80956e20d7"/>
|
||||
<!-- Information: platform/external/llvm is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/external/llvm" path="external/llvm" revision="bff5923831940309f7d8ddbff5826ca6ed2dc050"/>
|
||||
<!-- Information: platform/external/mksh is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/external/mksh" path="external/mksh" revision="ec646e8f5e7dac9a77d1de549c6ed92c04d0cd4b"/>
|
||||
<!-- Information: platform_external_opensans is tagged with B2G_1_0_0_20130125190500 --><project name="platform_external_opensans" path="external/opensans" remote="b2g" revision="b5b4c226ca1d71e936153cf679dda6d3d60e2354"/>
|
||||
<!-- Information: platform/external/openssl is tagged with AU_LINUX_ANDROID_ICS.04.00.04.00.110 --><project name="platform/external/openssl" path="external/openssl" revision="27d333cce9a31c806b4bfa042925f045c727aecd"/>
|
||||
<!-- Information: platform/external/protobuf is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/protobuf" path="external/protobuf" revision="e217977611c52bccde7f7c78e1d3c790c6357431"/>
|
||||
<!-- Information: platform/external/safe-iop is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/safe-iop" path="external/safe-iop" revision="07073634e2e3aa4f518e36ed5dec3aabc549d5fb"/>
|
||||
<!-- Information: platform/external/protobuf is tagged with M8960AAAAANLYA20234 --><project name="platform/external/protobuf" path="external/protobuf" revision="e217977611c52bccde7f7c78e1d3c790c6357431"/>
|
||||
<!-- Information: platform/external/safe-iop is tagged with M8960AAAAANLYA20234 --><project name="platform/external/safe-iop" path="external/safe-iop" revision="07073634e2e3aa4f518e36ed5dec3aabc549d5fb"/>
|
||||
<!-- Information: screencap-gonk is tagged with B2G_1_0_0_20130125190500 --><project name="screencap-gonk" path="external/screencap-gonk" remote="b2g" revision="e6403c71e9eca8cb943739d5a0a192deac60fc51"/>
|
||||
<!-- Information: platform/external/skia is tagged with M8960AAAAANLYA100715A --><project name="platform/external/skia" path="external/skia" revision="7d90c85f2c0e3b747f7c7eff8bc9253b0063b439"/>
|
||||
<!-- Information: platform/external/sonivox is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/external/sonivox" path="external/sonivox" revision="7c967779dfc61ac1f346e972de91d4bfce7dccbb"/>
|
||||
<!-- Information: platform/external/speex is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/speex" path="external/speex" revision="ebe6230a7f7c69f5a4389f2b09b7b19ef9e94f32"/>
|
||||
<!-- Information: platform/external/speex is tagged with M8960AAAAANLYA20234 --><project name="platform/external/speex" path="external/speex" revision="ebe6230a7f7c69f5a4389f2b09b7b19ef9e94f32"/>
|
||||
<project name="platform/external/sqlite" path="external/sqlite" revision="fb30e613139b8836fdc8e81e166cf3a76e5fa17f"/>
|
||||
<!-- Information: platform/external/stlport is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/stlport" path="external/stlport" revision="a6734e0645fce81c9610de0488b729207bfa576e"/>
|
||||
<!-- Information: platform/external/strace is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/strace" path="external/strace" revision="c9fd2e5ef7d002e12e7cf2512506c84a9414b0fd"/>
|
||||
<!-- Information: platform/external/tagsoup is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/tagsoup" path="external/tagsoup" revision="68c2ec9e0acdb3214b7fb91dbab8c9fab8736817"/>
|
||||
<!-- Information: platform/external/stlport is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/stlport" path="external/stlport" revision="a6734e0645fce81c9610de0488b729207bfa576e"/>
|
||||
<!-- Information: platform/external/strace is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/strace" path="external/strace" revision="c9fd2e5ef7d002e12e7cf2512506c84a9414b0fd"/>
|
||||
<!-- Information: platform/external/tagsoup is tagged with M8960AAAAANLYA23232 --><project name="platform/external/tagsoup" path="external/tagsoup" revision="68c2ec9e0acdb3214b7fb91dbab8c9fab8736817"/>
|
||||
<!-- Information: platform/external/tinyalsa is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/external/tinyalsa" path="external/tinyalsa" revision="06cc244ee512c1352215e543615738bc8ac82814"/>
|
||||
<!-- Information: platform/external/tremolo is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/tremolo" path="external/tremolo" revision="25bd78d2392dbdc879ae53382cde9d019f79cf6f"/>
|
||||
<!-- Information: platform/external/tremolo is tagged with M8960AAAAANLYA20234 --><project name="platform/external/tremolo" path="external/tremolo" revision="25bd78d2392dbdc879ae53382cde9d019f79cf6f"/>
|
||||
<!-- Information: unbootimg is tagged with B2G_1_0_0_20130125190500 --><project name="unbootimg" path="external/unbootimg" remote="b2g" revision="9464623d92eb8668544916dc5a8f4f6337d0bc08"/>
|
||||
<!-- Information: platform/external/webp is tagged with AU_LINUX_ANDROID_JB_REL_2.0.3.04.01.02.21.123 --><project name="platform/external/webp" path="external/webp" revision="88fe2b83c4b9232cd08729556fd0485d6a6a92cd"/>
|
||||
<!-- Information: platform/external/webrtc is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/webrtc" path="external/webrtc" revision="137024dc8a2e9251a471e20518a9c3ae06f81f23"/>
|
||||
<!-- Information: platform/external/wpa_supplicant is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/wpa_supplicant" path="external/wpa_supplicant" revision="a01d37870bbf9892d43e792e5de0683ca41c5497"/>
|
||||
<!-- Information: platform/external/webp is tagged with M8960AAAAANLYA20234 --><project name="platform/external/webp" path="external/webp" revision="88fe2b83c4b9232cd08729556fd0485d6a6a92cd"/>
|
||||
<!-- Information: platform/external/webrtc is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/webrtc" path="external/webrtc" revision="137024dc8a2e9251a471e20518a9c3ae06f81f23"/>
|
||||
<!-- Information: platform/external/wpa_supplicant is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/wpa_supplicant" path="external/wpa_supplicant" revision="a01d37870bbf9892d43e792e5de0683ca41c5497"/>
|
||||
<!-- Information: platform/external/hostap is tagged with M8960AAAAANLYA1047 --><project name="platform/external/hostap" path="external/hostap" revision="bf04b0faadbdeb4b7943f2e2c4c5aa59df872bb1"/>
|
||||
<!-- Information: platform/external/zlib is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.00.01.19.008 --><project name="platform/external/zlib" path="external/zlib" revision="f96a1d1ebfdf1cd582210fd09c23d8f59e0ae094"/>
|
||||
<!-- Information: platform/external/yaffs2 is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/external/yaffs2" path="external/yaffs2" revision="0afa916204c664b3114429637b63af1321a0aeca"/>
|
||||
<!-- Information: platform/external/yaffs2 is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/external/yaffs2" path="external/yaffs2" revision="0afa916204c664b3114429637b63af1321a0aeca"/>
|
||||
<!-- Information: platform/frameworks/base is tagged with M76XXUSNEKNLYA2040 --><project name="platform/frameworks/base" path="frameworks/base" revision="eb2bc75803ca179353c24c364a9c8a8ce23e8b78"/>
|
||||
<!-- Information: platform/frameworks/opt/emoji is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="a95d8db002770469d72dfaf59ff37ac96db29a87"/>
|
||||
<!-- Information: platform/frameworks/opt/emoji is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="a95d8db002770469d72dfaf59ff37ac96db29a87"/>
|
||||
<!-- Information: platform/frameworks/support is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/frameworks/support" path="frameworks/support" revision="27208692b001981f1806f4f396434f4eac78b909"/>
|
||||
<!-- Information: platform/hardware/libhardware is tagged with M8960AAAAANLYA1049B --><project name="platform/hardware/libhardware" path="hardware/libhardware" revision="4a619901847621f8a7305edf42dd07347a140484"/>
|
||||
<!-- Information: platform/hardware/libhardware_legacy is tagged with M8960AAAAANLYA153611 --><project name="platform/hardware/libhardware_legacy" path="hardware/libhardware_legacy" revision="87b4d7afa8f854b445e2d0d95091f6f6069f2b30"/>
|
||||
<!-- Information: platform/libcore is tagged with M8960AAAAANLYA100715A --><project name="platform/libcore" path="libcore" revision="30841f9fba9ccd5c54f4f079f495994db97f283e"/>
|
||||
<!-- Information: platform/ndk is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.19.035 --><project name="platform/ndk" path="ndk" revision="9f555971e1481854d5b4dc11b3e6af9fff4f241f"/>
|
||||
<!-- Information: platform/ndk is tagged with AU_LINUX_GECKO_ICS_STRAWBERRY.01.01.00.019.065 --><project name="platform/ndk" path="ndk" revision="9f555971e1481854d5b4dc11b3e6af9fff4f241f"/>
|
||||
<!-- Information: platform/prebuilt is tagged with AU_LINUX_ANDROID_ICS_CHOCOLATE.04.00.04.05.324 --><project name="platform/prebuilt" path="prebuilt" revision="447ea790fcc957dde59730ecc2a65ca263bdc733"/>
|
||||
<!-- Information: platform/system/bluetooth is tagged with M8960AAAAANLYA100703 --><project name="platform/system/bluetooth" path="system/bluetooth" revision="7772cad4823f1f427ce1d4df84a55982386d6d18"/>
|
||||
<!-- Information: platform/system/core is tagged with M76XXUSNEKNLYA2040 --><project name="platform/system/core" path="system/core" revision="bf1970408676ce570b8f4dc3efa038e47552137f"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[{
|
||||
"size": 621007059,
|
||||
"digest": "7ab61ca7a6c25297bbe3ec8328b2a8b4298cb0656747292e86a8caeef08500f2c68c00b5be02f2d83afaa2ae2fb7240e4d8a321c786fd1b0d57aeaa6e257dad5",
|
||||
"size": 647503948,
|
||||
"digest": "9ba4f195052e0d5eaae734375aed52f52b7b3337fa8caf01a61830529266e282be19697095c88135379c984d7242ec36b384cf81155176bb6527e6621f32eed3",
|
||||
"algorithm": "sha512",
|
||||
"filename": "emulator.zip"
|
||||
}]
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1364316540000">
|
||||
<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1366143901000">
|
||||
<emItems>
|
||||
<emItem blockID="i58" id="webmaster@buzzzzvideos.info">
|
||||
<versionRange minVersion="0" maxVersion="*">
|
||||
|
@ -83,7 +83,7 @@
|
|||
<versionRange minVersion="0" maxVersion="*" severity="3">
|
||||
</versionRange>
|
||||
</emItem>
|
||||
<emItem blockID="i101" id="{3a12052a-66ef-49db-8c39-e5b0bd5c83fa}">
|
||||
<emItem blockID="i84" id="pink@rosaplugin.info">
|
||||
<versionRange minVersion="0" maxVersion="*">
|
||||
</versionRange>
|
||||
</emItem>
|
||||
|
@ -358,6 +358,10 @@
|
|||
<versionRange minVersion="0.1" maxVersion="5.2.0.7164" severity="1">
|
||||
</versionRange>
|
||||
</emItem>
|
||||
<emItem blockID="i334" id="{0F827075-B026-42F3-885D-98981EE7B1AE}">
|
||||
<versionRange minVersion="0" maxVersion="*" severity="3">
|
||||
</versionRange>
|
||||
</emItem>
|
||||
<emItem blockID="i47" id="youtube@youtube2.com">
|
||||
</emItem>
|
||||
<emItem blockID="i103" id="kdrgun@gmail.com">
|
||||
|
@ -429,7 +433,7 @@
|
|||
<versionRange minVersion="0" maxVersion="*" severity="1">
|
||||
</versionRange>
|
||||
</emItem>
|
||||
<emItem blockID="i84" id="pink@rosaplugin.info">
|
||||
<emItem blockID="i101" id="{3a12052a-66ef-49db-8c39-e5b0bd5c83fa}">
|
||||
<versionRange minVersion="0" maxVersion="*">
|
||||
</versionRange>
|
||||
</emItem>
|
||||
|
@ -567,7 +571,7 @@
|
|||
<pluginItem blockID="p94">
|
||||
<match name="filename" exp="Flash\ Player\.plugin" /> <versionRange minVersion="0" maxVersion="10.2.159.1" severity="0">
|
||||
<targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
|
||||
<versionRange minVersion="0" maxVersion="17.*" />
|
||||
<versionRange minVersion="0.1" maxVersion="17.0.1" />
|
||||
</targetApplication>
|
||||
</versionRange>
|
||||
</pluginItem>
|
||||
|
@ -656,14 +660,14 @@
|
|||
</versionRange>
|
||||
</pluginItem>
|
||||
<pluginItem blockID="p178">
|
||||
<match name="filename" exp="(NPSWF[0-9_]*\.dll)|(Flash\ Player\.plugin)" /> <versionRange minVersion="11.0" maxVersion="11.2.202.274.9999" severity="0" vulnerabilitystatus="1">
|
||||
<match name="filename" exp="(NPSWF[0-9_]*\.dll)|(Flash\ Player\.plugin)" /> <versionRange minVersion="11.0" maxVersion="11.4.*" severity="0" vulnerabilitystatus="1">
|
||||
<targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
|
||||
<versionRange minVersion="19.0a1" maxVersion="*" />
|
||||
</targetApplication>
|
||||
</versionRange>
|
||||
</pluginItem>
|
||||
<pluginItem blockID="p178">
|
||||
<match name="filename" exp="(NPSWF[0-9_]*\.dll)|(Flash\ Player\.plugin)" /> <versionRange minVersion="11.0" maxVersion="11.2.202.274.9999" severity="0" vulnerabilitystatus="1">
|
||||
<match name="filename" exp="(NPSWF[0-9_]*\.dll)|(Flash\ Player\.plugin)" /> <versionRange minVersion="11.0" maxVersion="11.4.*" severity="0" vulnerabilitystatus="1">
|
||||
<targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
|
||||
<versionRange minVersion="17.0.4" maxVersion="17.0.*" />
|
||||
</targetApplication>
|
||||
|
@ -828,13 +832,6 @@
|
|||
</targetApplication>
|
||||
</versionRange>
|
||||
</pluginItem>
|
||||
<pluginItem blockID="p316">
|
||||
<match name="filename" exp="(NPSWF[0-9_]*\.dll)|(Flash\ Player\.plugin)" /> <versionRange minVersion="11.2.202.275" maxVersion="11.4.402.286.9999" severity="0" vulnerabilitystatus="1">
|
||||
<targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
|
||||
<versionRange minVersion="21.0a1" maxVersion="*" />
|
||||
</targetApplication>
|
||||
</versionRange>
|
||||
</pluginItem>
|
||||
<pluginItem blockID="p328">
|
||||
<match name="filename" exp="Silverlight\.plugin" /> <versionRange minVersion="5.1" maxVersion="5.1.20124.9999" severity="0" vulnerabilitystatus="1">
|
||||
<targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
|
||||
|
|
|
@ -42,6 +42,7 @@ pref("extensions.getAddons.getWithPerformance.url", "https://services.addons.moz
|
|||
pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/firefox/search?q=%TERMS%&platform=%OS%&appver=%VERSION%");
|
||||
pref("extensions.getAddons.search.url", "https://services.addons.mozilla.org/%LOCALE%/firefox/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/%OS%/%VERSION%/%COMPATIBILITY_MODE%?src=firefox");
|
||||
pref("extensions.webservice.discoverURL", "https://services.addons.mozilla.org/%LOCALE%/firefox/discovery/pane/%VERSION%/%OS%/%COMPATIBILITY_MODE%");
|
||||
pref("extensions.getAddons.recommended.url", "https://services.addons.mozilla.org/%LOCALE%/%APP%/api/%API_VERSION%/list/recommended/all/%MAX_RESULTS%/%OS%/%VERSION%?src=firefox");
|
||||
|
||||
// Blocklist preferences
|
||||
pref("extensions.blocklist.enabled", true);
|
||||
|
@ -1037,6 +1038,7 @@ pref("devtools.toolbox.host", "bottom");
|
|||
pref("devtools.toolbox.selectedTool", "webconsole");
|
||||
pref("devtools.toolbox.toolbarSpec", '["paintflashing toggle","tilt toggle","scratchpad","resize toggle"]');
|
||||
pref("devtools.toolbox.sideEnabled", true);
|
||||
pref("devtools.toolbox.disabledTools", "[]");
|
||||
|
||||
// Enable the Inspector
|
||||
pref("devtools.inspector.enabled", true);
|
||||
|
@ -1059,6 +1061,7 @@ pref("devtools.debugger.remote-host", "localhost");
|
|||
pref("devtools.debugger.remote-autoconnect", false);
|
||||
pref("devtools.debugger.remote-connection-retries", 3);
|
||||
pref("devtools.debugger.remote-timeout", 20000);
|
||||
pref("devtools.debugger.source-maps-enabled", false);
|
||||
|
||||
// The default Debugger UI settings
|
||||
pref("devtools.debugger.ui.win-x", 0);
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://services-common/preferences.js");
|
||||
Cu.import("resource://gre/modules/Preferences.jsm");
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
const reporter = Cc["@mozilla.org/datareporting/service;1"]
|
||||
|
|
|
@ -192,15 +192,17 @@ let gGestureSupport = {
|
|||
aEvent.DIRECTION_LEFT;
|
||||
|
||||
let isVerticalSwipe = false;
|
||||
if (aEvent.direction == aEvent.DIRECTION_UP) {
|
||||
isVerticalSwipe = true;
|
||||
// Force a synchronous scroll to the top of the page.
|
||||
content.scrollTo(content.scrollX, 0);
|
||||
}
|
||||
else if (aEvent.direction == aEvent.DIRECTION_DOWN) {
|
||||
isVerticalSwipe = true;
|
||||
// Force a synchronous scroll to the bottom of the page.
|
||||
content.scrollTo(content.scrollX, content.scrollMaxY);
|
||||
if (gHistorySwipeAnimation.active) {
|
||||
if (aEvent.direction == aEvent.DIRECTION_UP) {
|
||||
isVerticalSwipe = true;
|
||||
// Force a synchronous scroll to the top of the page.
|
||||
content.scrollTo(content.scrollX, 0);
|
||||
}
|
||||
else if (aEvent.direction == aEvent.DIRECTION_DOWN) {
|
||||
isVerticalSwipe = true;
|
||||
// Force a synchronous scroll to the bottom of the page.
|
||||
content.scrollTo(content.scrollX, content.scrollMaxY);
|
||||
}
|
||||
}
|
||||
|
||||
gHistorySwipeAnimation.startAnimation(isVerticalSwipe);
|
||||
|
|
|
@ -640,8 +640,17 @@ toolbarbutton[type="badged"] {
|
|||
-moz-binding: url("chrome://browser/content/urlbarBindings.xml#toolbarbutton-badged");
|
||||
}
|
||||
|
||||
/* Note the chatbox 'width' values are duplicated in socialchat.xml */
|
||||
chatbox {
|
||||
-moz-binding: url("chrome://browser/content/socialchat.xml#chatbox");
|
||||
transition: height 150ms ease-out, width 150ms ease-out;
|
||||
height: 285px;
|
||||
width: 260px; /* CHAT_WIDTH_OPEN in socialchat.xml */
|
||||
}
|
||||
|
||||
chatbox[minimized="true"] {
|
||||
width: 160px;
|
||||
height: 20px; /* CHAT_WIDTH_MINIMIZED in socialchat.xml */
|
||||
}
|
||||
|
||||
chatbar {
|
||||
|
|
|
@ -760,6 +760,7 @@ var gBrowserInit = {
|
|||
window.addEventListener("AppCommand", HandleAppCommandEvent, true);
|
||||
|
||||
messageManager.loadFrameScript("chrome://browser/content/content.js", true);
|
||||
messageManager.loadFrameScript("chrome://browser/content/content-sessionStore.js", true);
|
||||
|
||||
// initialize observers and listeners
|
||||
// and give C++ access to gBrowser
|
||||
|
@ -3648,10 +3649,6 @@ var XULBrowserWindow = {
|
|||
// unsupported
|
||||
},
|
||||
|
||||
setJSDefaultStatus: function () {
|
||||
// unsupported
|
||||
},
|
||||
|
||||
setDefaultStatus: function (status) {
|
||||
this.defaultStatus = status;
|
||||
this.updateStatusField();
|
||||
|
@ -3745,6 +3742,7 @@ var XULBrowserWindow = {
|
|||
aMaxTotalProgress);
|
||||
},
|
||||
|
||||
// This function fires only for the currently selected tab.
|
||||
onStateChange: function (aWebProgress, aRequest, aStateFlags, aStatus) {
|
||||
const nsIWebProgressListener = Ci.nsIWebProgressListener;
|
||||
const nsIChannel = Ci.nsIChannel;
|
||||
|
@ -3752,8 +3750,13 @@ var XULBrowserWindow = {
|
|||
if (aStateFlags & nsIWebProgressListener.STATE_START &&
|
||||
aStateFlags & nsIWebProgressListener.STATE_IS_NETWORK) {
|
||||
|
||||
if (aRequest && aWebProgress.DOMWindow == content)
|
||||
this.startDocumentLoad(aRequest);
|
||||
if (aRequest && aWebProgress.DOMWindow == content) {
|
||||
// clear out feed data
|
||||
gBrowser.selectedBrowser.feeds = null;
|
||||
|
||||
// clear out search-engine data
|
||||
gBrowser.selectedBrowser.engines = null;
|
||||
}
|
||||
|
||||
this.isBusy = true;
|
||||
|
||||
|
@ -3770,11 +3773,6 @@ var XULBrowserWindow = {
|
|||
}
|
||||
}
|
||||
else if (aStateFlags & nsIWebProgressListener.STATE_STOP) {
|
||||
if (aStateFlags & nsIWebProgressListener.STATE_IS_NETWORK &&
|
||||
aWebProgress.DOMWindow == content &&
|
||||
aRequest)
|
||||
this.endDocumentLoad(aRequest, aStatus);
|
||||
|
||||
// This (thanks to the filter) is a network stop or the last
|
||||
// request stop outside of loading the document, stop throbbers
|
||||
// and progress bars and such
|
||||
|
@ -4073,30 +4071,6 @@ var XULBrowserWindow = {
|
|||
if (loadingDone)
|
||||
return;
|
||||
this.onStatusChange(gBrowser.webProgress, null, 0, aMessage);
|
||||
},
|
||||
|
||||
startDocumentLoad: function XWB_startDocumentLoad(aRequest) {
|
||||
// clear out feed data
|
||||
gBrowser.selectedBrowser.feeds = null;
|
||||
|
||||
// clear out search-engine data
|
||||
gBrowser.selectedBrowser.engines = null;
|
||||
|
||||
var uri = aRequest.QueryInterface(Ci.nsIChannel).URI;
|
||||
try {
|
||||
Services.obs.notifyObservers(content, "StartDocumentLoad", uri.spec);
|
||||
} catch (e) {
|
||||
}
|
||||
},
|
||||
|
||||
endDocumentLoad: function XWB_endDocumentLoad(aRequest, aStatus) {
|
||||
var urlStr = aRequest.QueryInterface(Ci.nsIChannel).originalURI.spec;
|
||||
|
||||
var notification = Components.isSuccessCode(aStatus) ? "EndDocumentLoad" : "FailDocumentLoad";
|
||||
try {
|
||||
Services.obs.notifyObservers(content, notification, urlStr);
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -396,7 +396,7 @@ nsContextMenu.prototype = {
|
|||
this.showItem("context-media-showcontrols", onMedia && !this.target.controls);
|
||||
this.showItem("context-media-hidecontrols", onMedia && this.target.controls);
|
||||
this.showItem("context-video-fullscreen", this.onVideo && this.target.ownerDocument.mozFullScreenElement == null);
|
||||
var statsShowing = this.onVideo && this.target.wrappedJSObject.mozMediaStatisticsShowing;
|
||||
var statsShowing = this.onVideo && XPCNativeWrapper.unwrap(this.target).mozMediaStatisticsShowing;
|
||||
this.showItem("context-video-showstats", this.onVideo && this.target.controls && !statsShowing);
|
||||
this.showItem("context-video-hidestats", this.onVideo && this.target.controls && statsShowing);
|
||||
|
||||
|
@ -1505,14 +1505,10 @@ nsContextMenu.prototype = {
|
|||
case "showcontrols":
|
||||
media.setAttribute("controls", "true");
|
||||
break;
|
||||
case "showstats":
|
||||
var event = document.createEvent("CustomEvent");
|
||||
event.initCustomEvent("media-showStatistics", false, true, true);
|
||||
media.dispatchEvent(event);
|
||||
break;
|
||||
case "hidestats":
|
||||
var event = document.createEvent("CustomEvent");
|
||||
event.initCustomEvent("media-showStatistics", false, true, false);
|
||||
case "showstats":
|
||||
var event = media.ownerDocument.createEvent("CustomEvent");
|
||||
event.initCustomEvent("media-showStatistics", false, true, command == "showstats");
|
||||
media.dispatchEvent(event);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -63,7 +63,8 @@
|
|||
return this.getAttribute("minimized") == "true";
|
||||
</getter>
|
||||
<setter><![CDATA[
|
||||
this.isActive = !val;
|
||||
// Note that this.isActive is set via our transitionend handler so
|
||||
// the content doesn't see intermediate values.
|
||||
let parent = this.parentNode;
|
||||
if (val) {
|
||||
this.setAttribute("minimized", "true");
|
||||
|
@ -144,6 +145,10 @@
|
|||
this.setAttribute('image', uri.spec);
|
||||
this.parentNode.updateTitlebar(this);
|
||||
]]></handler>
|
||||
<handler event="transitionend">
|
||||
if (this.isActive == this.minimized)
|
||||
this.isActive = !this.minimized;
|
||||
</handler>
|
||||
</handlers>
|
||||
</binding>
|
||||
|
||||
|
@ -160,9 +165,7 @@
|
|||
|
||||
<implementation implements="nsIDOMEventListener">
|
||||
<constructor>
|
||||
// to avoid reflows we cache the values for various widths.
|
||||
this.cachedWidthOpen = 0;
|
||||
this.cachedWidthMinimized = 0;
|
||||
// to avoid reflows we cache the width of the nub.
|
||||
this.cachedWidthNub = 0;
|
||||
this._selectedChat = null;
|
||||
</constructor>
|
||||
|
@ -326,25 +329,11 @@
|
|||
<method name="getTotalChildWidth">
|
||||
<parameter name="aChatbox"/>
|
||||
<body><![CDATA[
|
||||
// gets the width of a child, using/setting the cached value for
|
||||
// children of this type.
|
||||
// DOES NOT take collapsed into account - ie, this is the width
|
||||
// of a child assuming it is *not* collapsed. (collapsed chats
|
||||
// have a width of zero as they are not shown).
|
||||
if (aChatbox.minimized) {
|
||||
if (!this.cachedWidthMinimized) {
|
||||
if (aChatbox.collapsed)
|
||||
throw new Error("can't calculate size of collapsed chat!");
|
||||
this.cachedWidthMinimized = this.calcTotalWidthOf(aChatbox);
|
||||
}
|
||||
return this.cachedWidthMinimized;
|
||||
}
|
||||
if (!this.cachedWidthOpen) {
|
||||
if (aChatbox.collapsed)
|
||||
throw new Error("can't calculate size of collapsed chat!");
|
||||
this.cachedWidthOpen = this.calcTotalWidthOf(aChatbox);
|
||||
}
|
||||
return this.cachedWidthOpen;
|
||||
// These are from the CSS for the chatbox and must be kept in sync.
|
||||
// We can't use calcTotalWidthOf due to the transitions...
|
||||
const CHAT_WIDTH_OPEN = 260;
|
||||
const CHAT_WIDTH_MINIMIZED = 160;
|
||||
return aChatbox.minimized ? CHAT_WIDTH_MINIMIZED : CHAT_WIDTH_OPEN;
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
|
|
|
@ -25,9 +25,9 @@ let gTests = [
|
|||
desc: "Check that clearing cookies does not clear storage",
|
||||
setup: function ()
|
||||
{
|
||||
Cc["@mozilla.org/dom/storagemanager;1"]
|
||||
.getService(Ci.nsIObserver)
|
||||
.observe(null, "cookie-changed", "cleared");
|
||||
Cc["@mozilla.org/observer-service;1"]
|
||||
.getService(Ci.nsIObserverService)
|
||||
.notifyObservers(null, "cookie-changed", "cleared");
|
||||
},
|
||||
run: function (aSnippetsMap)
|
||||
{
|
||||
|
@ -250,6 +250,7 @@ let gTests = [
|
|||
function test()
|
||||
{
|
||||
waitForExplicitFinish();
|
||||
requestLongerTimeout(2);
|
||||
|
||||
Task.spawn(function () {
|
||||
for (let test of gTests) {
|
||||
|
|
|
@ -24,7 +24,14 @@ function generatorTest() {
|
|||
let browser = gBrowser.selectedBrowser;
|
||||
browser.stop(); // stop the about:blank load.
|
||||
|
||||
browser.addEventListener("DOMContentLoaded", nextStep, true);
|
||||
browser.addEventListener("DOMContentLoaded", event => {
|
||||
if (event.originalTarget != browser.contentDocument ||
|
||||
event.target.location.href == "about:blank") {
|
||||
info("skipping spurious load event");
|
||||
return;
|
||||
}
|
||||
nextStep();
|
||||
}, true);
|
||||
registerCleanupFunction(function () {
|
||||
browser.removeEventListener("DOMContentLoaded", nextStep, true);
|
||||
gBrowser.removeCurrentTab();
|
||||
|
@ -66,6 +73,8 @@ function generatorTest() {
|
|||
// Bookmark the current page and confirm that the new bookmark has the expected
|
||||
// title. (Then delete the bookmark.)
|
||||
function checkBookmark(uri, expected_title) {
|
||||
is(gBrowser.selectedBrowser.currentURI.spec, uri,
|
||||
"Trying to bookmark the expected uri");
|
||||
PlacesCommandHook.bookmarkCurrentPage(false);
|
||||
|
||||
let id = PlacesUtils.getMostRecentBookmarkForURI(PlacesUtils._uri(uri));
|
||||
|
|
|
@ -58,13 +58,21 @@ function testNavigation() {
|
|||
Task.spawn(function () {
|
||||
yield FullZoomHelper.load(gTab1, TEST_VIDEO);
|
||||
FullZoomHelper.zoomTest(gTab1, 1, "Zoom should be 1 when a video was loaded");
|
||||
yield waitForNextTurn(); // trying to fix orange bug 806046
|
||||
yield FullZoomHelper.navigate(FullZoomHelper.BACK);
|
||||
FullZoomHelper.zoomTest(gTab1, gLevel1, "Zoom should be restored when a page is loaded");
|
||||
yield waitForNextTurn(); // trying to fix orange bug 806046
|
||||
yield FullZoomHelper.navigate(FullZoomHelper.FORWARD);
|
||||
FullZoomHelper.zoomTest(gTab1, 1, "Zoom should be 1 again when navigating back to a video");
|
||||
}).then(finishTest, FullZoomHelper.failAndContinue(finish));
|
||||
}
|
||||
|
||||
function waitForNextTurn() {
|
||||
let deferred = Promise.defer();
|
||||
setTimeout(function () deferred.resolve(), 0);
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
var finishTestStarted = false;
|
||||
function finishTest() {
|
||||
Task.spawn(function () {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
function sendNotifyRequest(name) {
|
||||
let ns = {};
|
||||
Components.utils.import("resource://gre/modules/services/datareporting/policy.jsm", ns);
|
||||
Components.utils.import("resource://services-common/preferences.js", ns);
|
||||
Components.utils.import("resource://gre/modules/Preferences.jsm", ns);
|
||||
|
||||
let service = Components.classes["@mozilla.org/datareporting/service;1"]
|
||||
.getService(Components.interfaces.nsISupports)
|
||||
|
|
|
@ -2,6 +2,11 @@ function test()
|
|||
{
|
||||
waitForExplicitFinish();
|
||||
|
||||
let scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"].
|
||||
getService(Ci.mozIJSSubScriptLoader);
|
||||
let ChromeUtils = {};
|
||||
scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", ChromeUtils);
|
||||
|
||||
// ---- Test dragging the proxy icon ---
|
||||
var value = content.location.href;
|
||||
var urlString = value + "\n" + content.document.title;
|
||||
|
@ -36,5 +41,5 @@ function test()
|
|||
finish();
|
||||
}, true);
|
||||
|
||||
EventUtils.synthesizeDrop(tab, tab, [[{type: "text/uri-list", data: "http://mochi.test:8888/"}]], "copy", window);
|
||||
ChromeUtils.synthesizeDrop(tab, tab, [[{type: "text/uri-list", data: "http://mochi.test:8888/"}]], "copy", window);
|
||||
}
|
||||
|
|
|
@ -13,8 +13,8 @@ function test() {
|
|||
|
||||
let scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"].
|
||||
getService(Ci.mozIJSSubScriptLoader);
|
||||
let chromeUtils = {};
|
||||
scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", chromeUtils);
|
||||
let ChromeUtils = {};
|
||||
scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", ChromeUtils);
|
||||
|
||||
let homeButton = document.getElementById("home-button");
|
||||
ok(homeButton, "home button present");
|
||||
|
@ -44,14 +44,14 @@ function test() {
|
|||
// The drop handler throws an exception when dragging URIs that inherit
|
||||
// principal, e.g. javascript:
|
||||
expectUncaughtException();
|
||||
chromeUtils.synthesizeDrop(homeButton, homeButton, [[{type: "text/plain", data: "javascript:8888"}]], "copy", window, EventUtils);
|
||||
ChromeUtils.synthesizeDrop(homeButton, homeButton, [[{type: "text/plain", data: "javascript:8888"}]], "copy", window);
|
||||
});
|
||||
})
|
||||
});
|
||||
|
||||
Services.wm.addListener(dialogListener);
|
||||
|
||||
chromeUtils.synthesizeDrop(homeButton, homeButton, [[{type: "text/plain", data: "http://mochi.test:8888/"}]], "copy", window, EventUtils);
|
||||
ChromeUtils.synthesizeDrop(homeButton, homeButton, [[{type: "text/plain", data: "http://mochi.test:8888/"}]], "copy", window);
|
||||
}
|
||||
|
||||
function WindowListener(aURL, aCallback) {
|
||||
|
|
|
@ -11,8 +11,8 @@ function test() {
|
|||
|
||||
let scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"].
|
||||
getService(Ci.mozIJSSubScriptLoader);
|
||||
let chromeUtils = {};
|
||||
scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", chromeUtils);
|
||||
let ChromeUtils = {};
|
||||
scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", ChromeUtils);
|
||||
|
||||
let tabContainer = gBrowser.tabContainer;
|
||||
var receivedDropCount = 0;
|
||||
|
@ -55,7 +55,7 @@ function test() {
|
|||
// instead). The events created by synthesizeDrop have all of their
|
||||
// coordinates set to 0 (screenX/screenY), so they're treated as drops
|
||||
// on the outer edge of the tab, thus they open new tabs.
|
||||
chromeUtils.synthesizeDrop(newTab, newTab, [[{type: "text/plain", data: text}]], "link", window, EventUtils);
|
||||
ChromeUtils.synthesizeDrop(newTab, newTab, [[{type: "text/plain", data: text}]], "link", window);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -8,8 +8,8 @@ function test() {
|
|||
|
||||
let scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"].
|
||||
getService(Ci.mozIJSSubScriptLoader);
|
||||
let chromeUtils = {};
|
||||
scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", chromeUtils);
|
||||
let ChromeUtils = {};
|
||||
scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", ChromeUtils);
|
||||
|
||||
function testOnWindow(aIsPrivate, aCallback) {
|
||||
whenNewWindowLoaded({private: aIsPrivate}, function(win) {
|
||||
|
@ -23,14 +23,14 @@ function test() {
|
|||
let normalTab = aNormalWindow.gBrowser.addTab("about:blank", {skipAnimation: true});
|
||||
let privateTab = aPrivateWindow.gBrowser.addTab("about:blank", {skipAnimation: true});
|
||||
|
||||
let effect = chromeUtils.synthesizeDrop(normalTab, privateTab,
|
||||
let effect = ChromeUtils.synthesizeDrop(normalTab, privateTab,
|
||||
[[{type: TAB_DROP_TYPE, data: normalTab}]],
|
||||
null, aNormalWindow, EventUtils, aPrivateWindow);
|
||||
null, aNormalWindow, aPrivateWindow);
|
||||
is(effect, "none", "Should not be able to drag a normal tab to a private window");
|
||||
|
||||
effect = chromeUtils.synthesizeDrop(privateTab, normalTab,
|
||||
effect = ChromeUtils.synthesizeDrop(privateTab, normalTab,
|
||||
[[{type: TAB_DROP_TYPE, data: privateTab}]],
|
||||
null, aPrivateWindow, EventUtils, aNormalWindow);
|
||||
null, aPrivateWindow, aNormalWindow);
|
||||
is(effect, "none", "Should not be able to drag a private tab to a normal window");
|
||||
|
||||
aNormalWindow.gBrowser.swapBrowsersAndCloseOther(normalTab, privateTab);
|
||||
|
|
Двоичные данные
browser/branding/official/content/about-logo.png
Двоичные данные
browser/branding/official/content/about-logo.png
Двоичный файл не отображается.
До Ширина: | Высота: | Размер: 54 KiB После Ширина: | Высота: | Размер: 48 KiB |
|
@ -14,10 +14,6 @@ LIBRARY_NAME = browserabout_s
|
|||
FORCE_STATIC_LIB = 1
|
||||
USE_STATIC_LIBS = 1
|
||||
|
||||
EXPORTS_NAMESPACES = mozilla/browser
|
||||
|
||||
EXPORTS_mozilla/browser = AboutRedirector.h
|
||||
|
||||
CPPSRCS = AboutRedirector.cpp
|
||||
|
||||
LOCAL_INCLUDES = -I$(srcdir)/../build
|
||||
|
|
|
@ -6,3 +6,7 @@
|
|||
|
||||
MODULE = 'browserabout'
|
||||
|
||||
EXPORTS.mozilla.browser += [
|
||||
'AboutRedirector.h',
|
||||
]
|
||||
|
||||
|
|
|
@ -17,8 +17,6 @@ FORCE_SHARED_LIB = 1
|
|||
|
||||
USE_STATIC_LIBS = 1
|
||||
|
||||
EXPORTS = nsBrowserCompsCID.h
|
||||
|
||||
CPPSRCS = nsModule.cpp \
|
||||
$(NULL)
|
||||
|
||||
|
|
|
@ -6,3 +6,7 @@
|
|||
|
||||
MODULE = 'browsercomps'
|
||||
|
||||
EXPORTS += [
|
||||
'nsBrowserCompsCID.h',
|
||||
]
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
|
||||
#include "nsArrayEnumerator.h"
|
||||
#include "nsEnumeratorUtils.h"
|
||||
#include "nsBrowserDirectoryServiceDefs.h"
|
||||
#include "nsAppDirectoryServiceDefs.h"
|
||||
#include "nsDirectoryServiceDefs.h"
|
||||
#include "nsCategoryManagerUtils.h"
|
||||
|
@ -58,15 +57,6 @@ DirectoryProvider::GetFile(const char *aKey, bool *aPersist, nsIFile* *aResult)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (!strcmp(aKey, NS_APP_EXISTING_PREF_OVERRIDE)) {
|
||||
rv = NS_GetSpecialDirectory(NS_APP_DEFAULTS_50_DIR,
|
||||
getter_AddRefs(file));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
file->AppendNative(NS_LITERAL_CSTRING("existing-profile-defaults.js"));
|
||||
file.swap(*aResult);
|
||||
return NS_OK;
|
||||
}
|
||||
else {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
|
|
@ -14,9 +14,6 @@ LIBRARY_NAME = browserdir_s
|
|||
FORCE_STATIC_LIB = 1
|
||||
USE_STATIC_LIBS = 1
|
||||
|
||||
EXPORTS_NAMESPACES = mozilla/browser
|
||||
EXPORTS_mozilla/browser = DirectoryProvider.h
|
||||
|
||||
CPPSRCS = DirectoryProvider.cpp
|
||||
|
||||
LOCAL_INCLUDES = -I$(srcdir)/../build
|
||||
|
|
|
@ -8,3 +8,7 @@ TEST_DIRS += ['tests']
|
|||
|
||||
MODULE = 'browserdir'
|
||||
|
||||
EXPORTS.mozilla.browser += [
|
||||
'DirectoryProvider.h',
|
||||
]
|
||||
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef nsBrowserDirectoryServiceDefs_h___
|
||||
#define nsBrowserDirectoryServiceDefs_h___
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// Defines property names for directories available from the browser-specific
|
||||
// nsBrowserDirectoryProvider.
|
||||
//
|
||||
// System and XPCOM properties are defined in nsDirectoryServiceDefs.h.
|
||||
// General application properties are defined in nsAppDirectoryServiceDefs.h.
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Files and directories that exist on a per-browser basis.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#define NS_APP_EXISTING_PREF_OVERRIDE "ExistingPrefOverride"
|
||||
|
||||
#endif
|
|
@ -10,17 +10,8 @@ function test_bookmarkhtml() {
|
|||
do_check_true(bmarks.equals(tbmarks));
|
||||
}
|
||||
|
||||
function test_prefoverride() {
|
||||
let dir = gDirSvc.get("DefRt", Ci.nsIFile);
|
||||
dir.append("existing-profile-defaults.js");
|
||||
|
||||
let tdir = gDirSvc.get("ExistingPrefOverride", Ci.nsIFile);
|
||||
do_check_true(dir.equals(tdir));
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
[test_bookmarkhtml,
|
||||
test_prefoverride
|
||||
[test_bookmarkhtml
|
||||
].forEach(function(f) {
|
||||
do_test_pending();
|
||||
print("Running test: " + f.name);
|
||||
|
|
|
@ -322,9 +322,9 @@ const DownloadsPanel = {
|
|||
// Since at most one popup is open at any given time, we can set globally.
|
||||
DownloadsCommon.getIndicatorData(window).attentionSuppressed = true;
|
||||
|
||||
// Ensure that an item is selected when the panel is focused.
|
||||
// Ensure that the first item is selected when the panel is focused.
|
||||
if (DownloadsView.richListBox.itemCount > 0 &&
|
||||
!DownloadsView.richListBox.selectedItem) {
|
||||
DownloadsView.richListBox.selectedIndex == -1) {
|
||||
DownloadsView.richListBox.selectedIndex = 0;
|
||||
}
|
||||
|
||||
|
@ -417,6 +417,10 @@ const DownloadsPanel = {
|
|||
aEvent.keyCode == Ci.nsIDOMKeyEvent.DOM_VK_DOWN) &&
|
||||
!this.keyFocusing) {
|
||||
this.keyFocusing = true;
|
||||
// Ensure there's a selection, we will show the focus ring around it and
|
||||
// prevent the richlistbox from changing the selection.
|
||||
if (DownloadsView.richListBox.selectedIndex == -1)
|
||||
DownloadsView.richListBox.selectedIndex = 0;
|
||||
aEvent.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
@ -904,8 +908,10 @@ const DownloadsView = {
|
|||
let element = this.getViewItem(aDataItem)._element;
|
||||
let previousSelectedIndex = this.richListBox.selectedIndex;
|
||||
this.richListBox.removeChild(element);
|
||||
this.richListBox.selectedIndex = Math.min(previousSelectedIndex,
|
||||
this.richListBox.itemCount - 1);
|
||||
if (previousSelectedIndex != -1) {
|
||||
this.richListBox.selectedIndex = Math.min(previousSelectedIndex,
|
||||
this.richListBox.itemCount - 1);
|
||||
}
|
||||
delete this._viewItems[aDataItem.downloadGuid];
|
||||
},
|
||||
|
||||
|
@ -963,6 +969,29 @@ const DownloadsView = {
|
|||
}
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Mouse listeners to handle selection on hover.
|
||||
*/
|
||||
onDownloadMouseOver: function DV_onDownloadMouseOver(aEvent)
|
||||
{
|
||||
if (aEvent.originalTarget.parentNode == this.richListBox)
|
||||
this.richListBox.selectedItem = aEvent.originalTarget;
|
||||
},
|
||||
onDownloadMouseOut: function DV_onDownloadMouseOut(aEvent)
|
||||
{
|
||||
if (aEvent.originalTarget.parentNode == this.richListBox) {
|
||||
// If the destination element is outside of the richlistitem, clear the
|
||||
// selection.
|
||||
let element = aEvent.relatedTarget;
|
||||
while (element && element != aEvent.originalTarget) {
|
||||
element = element.parentNode;
|
||||
}
|
||||
if (!element)
|
||||
this.richListBox.selectedIndex = -1;
|
||||
}
|
||||
},
|
||||
|
||||
onDownloadContextMenu: function DV_onDownloadContextMenu(aEvent)
|
||||
{
|
||||
let element = this.richListBox.selectedItem;
|
||||
|
|
|
@ -101,6 +101,8 @@
|
|||
class="plain"
|
||||
flex="1"
|
||||
context="downloadsContextMenu"
|
||||
onmouseover="DownloadsView.onDownloadMouseOver(event);"
|
||||
onmouseout="DownloadsView.onDownloadMouseOut(event);"
|
||||
oncontextmenu="DownloadsView.onDownloadContextMenu(event);"
|
||||
ondragstart="DownloadsView.onDownloadDragStart(event);"/>
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
component {49507fe5-2cee-4824-b6a3-e999150ce9b8} DownloadsStartup.js
|
||||
contract @mozilla.org/browser/downloadsstartup;1 {49507fe5-2cee-4824-b6a3-e999150ce9b8}
|
||||
category app-startup DownloadsStartup service,@mozilla.org/browser/downloadsstartup;1
|
||||
category profile-after-change DownloadsStartup @mozilla.org/browser/downloadsstartup;1
|
||||
component {4d99321e-d156-455b-81f7-e7aa2308134f} DownloadsUI.js
|
||||
|
|
|
@ -53,6 +53,16 @@ const kDownloadsUICid = Components.ID("{4d99321e-d156-455b-81f7-e7aa2308134f}");
|
|||
*/
|
||||
const kDownloadsUIContractId = "@mozilla.org/download-manager-ui;1";
|
||||
|
||||
/**
|
||||
* CID of the JavaScript implementation of nsITransfer.
|
||||
*/
|
||||
const kTransferCid = Components.ID("{1b4c85df-cbdd-4bb6-b04e-613caece083c}");
|
||||
|
||||
/**
|
||||
* Contract ID of the service implementing nsITransfer.
|
||||
*/
|
||||
const kTransferContractId = "@mozilla.org/transfer;1";
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//// DownloadsStartup
|
||||
|
||||
|
@ -75,7 +85,7 @@ DownloadsStartup.prototype = {
|
|||
observe: function DS_observe(aSubject, aTopic, aData)
|
||||
{
|
||||
switch (aTopic) {
|
||||
case "app-startup":
|
||||
case "profile-after-change":
|
||||
kObservedTopics.forEach(
|
||||
function (topic) Services.obs.addObserver(this, topic, true),
|
||||
this);
|
||||
|
@ -86,6 +96,24 @@ DownloadsStartup.prototype = {
|
|||
Components.manager.QueryInterface(Ci.nsIComponentRegistrar)
|
||||
.registerFactory(kDownloadsUICid, "",
|
||||
kDownloadsUIContractId, null);
|
||||
|
||||
// If the integration preference is enabled, override Toolkit's
|
||||
// nsITransfer implementation with the one from the JavaScript API for
|
||||
// downloads. This should be used only by developers while testing new
|
||||
// code that uses the JavaScript API, and will eventually be removed
|
||||
// when nsIDownloadManager will not be available anymore (bug 851471).
|
||||
let useJSTransfer = false;
|
||||
try {
|
||||
useJSTransfer =
|
||||
Services.prefs.getBoolPref("browser.download.useJSTransfer");
|
||||
} catch (ex) {
|
||||
// This is a hidden preference that does not exist by default.
|
||||
}
|
||||
if (useJSTransfer) {
|
||||
Components.manager.QueryInterface(Ci.nsIComponentRegistrar)
|
||||
.registerFactory(kTransferCid, "",
|
||||
kTransferContractId, null);
|
||||
}
|
||||
break;
|
||||
|
||||
case "sessionstore-windows-restored":
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
|
||||
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Components.utils.import("resource:///modules/MigrationUtils.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils",
|
||||
"resource://gre/modules/PlacesUtils.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "PlacesBackups",
|
||||
"resource://gre/modules/PlacesBackups.jsm");
|
||||
|
||||
function FirefoxProfileMigrator() { }
|
||||
|
||||
|
@ -76,7 +76,7 @@ FirefoxProfileMigrator.prototype.getResources = function() {
|
|||
["signons.sqlite", "key3.db"]);
|
||||
let formData = getFileResource(types.FORMDATA, ["formhistory.sqlite"]);
|
||||
let bookmarksBackups = getFileResource(types.OTHERDATA,
|
||||
[PlacesUtils.backups.profileRelativeFolderPath]);
|
||||
[PlacesBackups.profileRelativeFolderPath]);
|
||||
let dictionary = getFileResource(types.OTHERDATA, ["persdict.dat"]);
|
||||
|
||||
return [r for each (r in [places, cookies, passwords, formData,
|
||||
|
|
|
@ -172,40 +172,6 @@ function getPostUpdateOverridePage(defaultOverridePage) {
|
|||
return update.getProperty("openURL") || defaultOverridePage;
|
||||
}
|
||||
|
||||
// Copies a pref override file into the user's profile pref-override folder,
|
||||
// and then tells the pref service to reload its default prefs.
|
||||
function copyPrefOverride() {
|
||||
try {
|
||||
var fileLocator = Components.classes["@mozilla.org/file/directory_service;1"]
|
||||
.getService(Components.interfaces.nsIProperties);
|
||||
const NS_APP_EXISTING_PREF_OVERRIDE = "ExistingPrefOverride";
|
||||
var prefOverride = fileLocator.get(NS_APP_EXISTING_PREF_OVERRIDE,
|
||||
Components.interfaces.nsIFile);
|
||||
if (!prefOverride.exists())
|
||||
return; // nothing to do
|
||||
|
||||
const NS_APP_PREFS_OVERRIDE_DIR = "PrefDOverride";
|
||||
var prefOverridesDir = fileLocator.get(NS_APP_PREFS_OVERRIDE_DIR,
|
||||
Components.interfaces.nsIFile);
|
||||
|
||||
// Check for any existing pref overrides, and remove them if present
|
||||
var existingPrefOverridesFile = prefOverridesDir.clone();
|
||||
existingPrefOverridesFile.append(prefOverride.leafName);
|
||||
if (existingPrefOverridesFile.exists())
|
||||
existingPrefOverridesFile.remove(false);
|
||||
|
||||
prefOverride.copyTo(prefOverridesDir, null);
|
||||
|
||||
// Now that we've installed the new-profile pref override file,
|
||||
// re-read the default prefs.
|
||||
var prefSvcObs = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIObserver);
|
||||
prefSvcObs.observe(null, "reload-default-prefs", null);
|
||||
} catch (ex) {
|
||||
Components.utils.reportError(ex);
|
||||
}
|
||||
}
|
||||
|
||||
// Flag used to indicate that the arguments to openWindow can be passed directly.
|
||||
const NO_EXTERNAL_URIS = 1;
|
||||
|
||||
|
@ -600,9 +566,6 @@ nsBrowserContentHandler.prototype = {
|
|||
overridePage = Services.urlFormatter.formatURLPref("startup.homepage_welcome_url");
|
||||
break;
|
||||
case OVERRIDE_NEW_MSTONE:
|
||||
// Existing profile, new milestone build.
|
||||
copyPrefOverride();
|
||||
|
||||
// Check whether we have a session to restore. If we do, we assume
|
||||
// that this is an "update" session.
|
||||
var ss = Components.classes["@mozilla.org/browser/sessionstartup;1"]
|
||||
|
|
|
@ -32,6 +32,9 @@ XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils",
|
|||
XPCOMUtils.defineLazyModuleGetter(this, "BookmarkHTMLUtils",
|
||||
"resource://gre/modules/BookmarkHTMLUtils.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "BookmarkJSONUtils",
|
||||
"resource://gre/modules/BookmarkJSONUtils.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "webappsUI",
|
||||
"resource:///modules/webappsUI.jsm");
|
||||
|
||||
|
@ -59,6 +62,10 @@ XPCOMUtils.defineLazyModuleGetter(this, "RecentWindow",
|
|||
XPCOMUtils.defineLazyModuleGetter(this, "Task",
|
||||
"resource://gre/modules/Task.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "PlacesBackups",
|
||||
"resource://gre/modules/PlacesBackups.jsm");
|
||||
|
||||
|
||||
const PREF_PLUGINS_NOTIFYUSER = "plugins.update.notifyUser";
|
||||
const PREF_PLUGINS_UPDATEURL = "plugins.update.url";
|
||||
|
||||
|
@ -928,10 +935,10 @@ BrowserGlue.prototype = {
|
|||
// from bookmarks.html, we will try to restore from JSON
|
||||
if (importBookmarks && !restoreDefaultBookmarks && !importBookmarksHTML) {
|
||||
// get latest JSON backup
|
||||
var bookmarksBackupFile = PlacesUtils.backups.getMostRecent("json");
|
||||
var bookmarksBackupFile = PlacesBackups.getMostRecent("json");
|
||||
if (bookmarksBackupFile) {
|
||||
// restore from JSON backup
|
||||
PlacesUtils.restoreBookmarksFromJSONFile(bookmarksBackupFile);
|
||||
yield BookmarkJSONUtils.importFromFile(bookmarksBackupFile, true);
|
||||
importBookmarks = false;
|
||||
}
|
||||
else {
|
||||
|
@ -1031,6 +1038,8 @@ BrowserGlue.prototype = {
|
|||
this._idleService.addIdleObserver(this, BOOKMARKS_BACKUP_IDLE_TIME);
|
||||
this._isIdleObserver = true;
|
||||
}
|
||||
|
||||
Services.obs.notifyObservers(null, "places-browser-init-complete", "");
|
||||
}.bind(this));
|
||||
},
|
||||
|
||||
|
@ -1097,12 +1106,12 @@ BrowserGlue.prototype = {
|
|||
* @return true if bookmarks should be backed up, false if not.
|
||||
*/
|
||||
_shouldBackupBookmarks: function BG__shouldBackupBookmarks() {
|
||||
let lastBackupFile = PlacesUtils.backups.getMostRecent();
|
||||
let lastBackupFile = PlacesBackups.getMostRecent();
|
||||
|
||||
// Should backup bookmarks if there are no backups or the maximum interval between
|
||||
// backups elapsed.
|
||||
return (!lastBackupFile ||
|
||||
new Date() - PlacesUtils.backups.getDateForFile(lastBackupFile) > BOOKMARKS_BACKUP_INTERVAL);
|
||||
new Date() - PlacesBackups.getDateForFile(lastBackupFile) > BOOKMARKS_BACKUP_INTERVAL);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -1118,7 +1127,7 @@ BrowserGlue.prototype = {
|
|||
}
|
||||
catch(ex) { /* Use default. */ }
|
||||
|
||||
yield PlacesUtils.backups.create(maxBackups); // Don't force creation.
|
||||
yield PlacesBackups.create(maxBackups); // Don't force creation.
|
||||
});
|
||||
},
|
||||
|
||||
|
|
|
@ -3,7 +3,14 @@
|
|||
* 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/. */
|
||||
|
||||
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Components.utils.import("resource:///modules/MigrationUtils.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "Task",
|
||||
"resource://gre/modules/Task.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "BookmarkJSONUtils",
|
||||
"resource://gre/modules/BookmarkJSONUtils.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "PlacesBackups",
|
||||
"resource://gre/modules/PlacesBackups.jsm");
|
||||
|
||||
var PlacesOrganizer = {
|
||||
_places: null,
|
||||
|
@ -360,13 +367,13 @@ var PlacesOrganizer = {
|
|||
while (restorePopup.childNodes.length > 1)
|
||||
restorePopup.removeChild(restorePopup.firstChild);
|
||||
|
||||
let backupFiles = PlacesUtils.backups.entries;
|
||||
let backupFiles = PlacesBackups.entries;
|
||||
if (backupFiles.length == 0)
|
||||
return;
|
||||
|
||||
// Populate menu with backups.
|
||||
for (let i = 0; i < backupFiles.length; i++) {
|
||||
let backupDate = PlacesUtils.backups.getDateForFile(backupFiles[i]);
|
||||
let backupDate = PlacesBackups.getDateForFile(backupFiles[i]);
|
||||
let m = restorePopup.insertBefore(document.createElement("menuitem"),
|
||||
document.getElementById("restoreFromFile"));
|
||||
m.setAttribute("label",
|
||||
|
@ -390,7 +397,7 @@ var PlacesOrganizer = {
|
|||
*/
|
||||
onRestoreMenuItemClick: function PO_onRestoreMenuItemClick(aMenuItem) {
|
||||
let backupName = aMenuItem.getAttribute("value");
|
||||
let backupFiles = PlacesUtils.backups.entries;
|
||||
let backupFiles = PlacesBackups.entries;
|
||||
for (let i = 0; i < backupFiles.length; i++) {
|
||||
if (backupFiles[i].leafName == backupName) {
|
||||
this.restoreBookmarksFromFile(backupFiles[i]);
|
||||
|
@ -441,12 +448,13 @@ var PlacesOrganizer = {
|
|||
PlacesUIUtils.getString("bookmarksRestoreAlert")))
|
||||
return;
|
||||
|
||||
try {
|
||||
PlacesUtils.restoreBookmarksFromJSONFile(aFile);
|
||||
}
|
||||
catch(ex) {
|
||||
this._showErrorAlert(PlacesUIUtils.getString("bookmarksRestoreParseError"));
|
||||
}
|
||||
Task.spawn(function() {
|
||||
try {
|
||||
yield BookmarkJSONUtils.importFromFile(aFile, true);
|
||||
} catch(ex) {
|
||||
PlacesOrganizer._showErrorAlert(PlacesUIUtils.getString("bookmarksRestoreParseError"));
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
_showErrorAlert: function PO__showErrorAlert(aMsg) {
|
||||
|
@ -478,7 +486,7 @@ var PlacesOrganizer = {
|
|||
Ci.nsIFilePicker.modeSave);
|
||||
fp.appendFilter(PlacesUIUtils.getString("bookmarksRestoreFilterName"),
|
||||
PlacesUIUtils.getString("bookmarksRestoreFilterExtension"));
|
||||
fp.defaultString = PlacesUtils.backups.getFilenameForDate();
|
||||
fp.defaultString = PlacesBackups.getFilenameForDate();
|
||||
fp.displayDirectory = backupsDir;
|
||||
fp.open(fpCallback);
|
||||
},
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
// Instead of loading ChromeUtils.js into the test scope in browser-test.js for all tests,
|
||||
// we only need ChromeUtils.js for a few files which is why we are using loadSubScript.
|
||||
var chromeUtils = {};
|
||||
var ChromeUtils = {};
|
||||
this._scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"].
|
||||
getService(Ci.mozIJSSubScriptLoader);
|
||||
this._scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", chromeUtils);
|
||||
this._scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", ChromeUtils);
|
||||
|
||||
function test() {
|
||||
// Make sure the bookmarks bar is visible and restore its state on cleanup.
|
||||
|
@ -37,11 +37,11 @@ function test() {
|
|||
let simulateDragDrop = function(aEffect, aMimeType) {
|
||||
const uriSpec = "http://www.mozilla.org/D1995729-A152-4e30-8329-469B01F30AA7";
|
||||
let uri = makeURI(uriSpec);
|
||||
chromeUtils.synthesizeDrop(placesItems.childNodes[0],
|
||||
ChromeUtils.synthesizeDrop(placesItems.childNodes[0],
|
||||
placesItems,
|
||||
[[{type: aMimeType,
|
||||
data: uriSpec}]],
|
||||
aEffect, window, EventUtils);
|
||||
aEffect, window);
|
||||
|
||||
// Verify that the drop produces exactly one bookmark.
|
||||
let bookmarkIds = PlacesUtils.bookmarks
|
||||
|
|
|
@ -39,7 +39,7 @@ function waitForImportAndSmartBookmarks(aCallback) {
|
|||
// Wait for Places init notification.
|
||||
Services.obs.addObserver(function(aSubject, aTopic, aData) {
|
||||
Services.obs.removeObserver(arguments.callee,
|
||||
PlacesUtils.TOPIC_INIT_COMPLETE);
|
||||
"places-browser-init-complete");
|
||||
do_execute_soon(function () {
|
||||
// Ensure preferences status.
|
||||
do_check_false(Services.prefs.getBoolPref(PREF_AUTO_EXPORT_HTML));
|
||||
|
@ -58,7 +58,7 @@ function waitForImportAndSmartBookmarks(aCallback) {
|
|||
|
||||
run_next_test();
|
||||
});
|
||||
}, PlacesUtils.TOPIC_INIT_COMPLETE, false);
|
||||
}, "places-browser-init-complete", false);
|
||||
},
|
||||
|
||||
function test_import()
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
// Instead of loading ChromeUtils.js into the test scope in browser-test.js for all tests,
|
||||
// we only need ChromeUtils.js for a few files which is why we are using loadSubScript.
|
||||
var chromeUtils = {};
|
||||
var ChromeUtils = {};
|
||||
this._scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"].
|
||||
getService(Ci.mozIJSSubScriptLoader);
|
||||
this._scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", chromeUtils);
|
||||
this._scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", ChromeUtils);
|
||||
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
|
@ -153,7 +153,7 @@ function test() {
|
|||
searchBar.addEventListener("popupshowing", stopPopup, true);
|
||||
// drop on the search button so that we don't need to worry about the
|
||||
// default handlers for textboxes.
|
||||
chromeUtils.synthesizeDrop(searchBar.searchButton, searchBar.searchButton, [[ {type: "text/plain", data: "Some Text" } ]], "copy", window, EventUtils);
|
||||
ChromeUtils.synthesizeDrop(searchBar.searchButton, searchBar.searchButton, [[ {type: "text/plain", data: "Some Text" } ]], "copy", window);
|
||||
doOnloadOnce(function(event) {
|
||||
is(searchBar.value, "Some Text", "drop text/plain on searchbar");
|
||||
testDropInternalText();
|
||||
|
@ -162,7 +162,7 @@ function test() {
|
|||
|
||||
function testDropInternalText() {
|
||||
init();
|
||||
chromeUtils.synthesizeDrop(searchBar.searchButton, searchBar.searchButton, [[ {type: "text/x-moz-text-internal", data: "More Text" } ]], "copy", window, EventUtils);
|
||||
ChromeUtils.synthesizeDrop(searchBar.searchButton, searchBar.searchButton, [[ {type: "text/x-moz-text-internal", data: "More Text" } ]], "copy", window);
|
||||
doOnloadOnce(function(event) {
|
||||
is(searchBar.value, "More Text", "drop text/x-moz-text-internal on searchbar");
|
||||
testDropLink();
|
||||
|
@ -171,7 +171,7 @@ function test() {
|
|||
|
||||
function testDropLink() {
|
||||
init();
|
||||
chromeUtils.synthesizeDrop(searchBar.searchButton, searchBar.searchButton, [[ {type: "text/uri-list", data: "http://www.mozilla.org" } ]], "copy", window, EventUtils);
|
||||
ChromeUtils.synthesizeDrop(searchBar.searchButton, searchBar.searchButton, [[ {type: "text/uri-list", data: "http://www.mozilla.org" } ]], "copy", window);
|
||||
is(searchBar.value, "More Text", "drop text/uri-list on searchbar");
|
||||
SimpleTest.executeSoon(testRightClick);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
function debug(msg) {
|
||||
Services.console.logStringMessage("SessionStoreContent: " + msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Listens for and handles content events that we need for the
|
||||
* session store service to be notified of state changes in content.
|
||||
*/
|
||||
let EventListener = {
|
||||
|
||||
DOM_EVENTS: [
|
||||
"pageshow", "change", "input"
|
||||
],
|
||||
|
||||
init: function () {
|
||||
this.DOM_EVENTS.forEach(e => addEventListener(e, this, true));
|
||||
},
|
||||
|
||||
handleEvent: function (event) {
|
||||
switch (event.type) {
|
||||
case "pageshow":
|
||||
if (event.persisted)
|
||||
sendAsyncMessage("SessionStore:pageshow");
|
||||
break;
|
||||
case "input":
|
||||
case "change":
|
||||
sendAsyncMessage("SessionStore:input");
|
||||
break;
|
||||
default:
|
||||
debug("received unknown event '" + event.type + "'");
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
EventListener.init();
|
|
@ -5,3 +5,4 @@
|
|||
browser.jar:
|
||||
* content/browser/aboutSessionRestore.xhtml (content/aboutSessionRestore.xhtml)
|
||||
* content/browser/aboutSessionRestore.js (content/aboutSessionRestore.js)
|
||||
content/browser/content-sessionStore.js (content/content-sessionStore.js)
|
||||
|
|
|
@ -85,7 +85,12 @@ let DomStorage = {
|
|||
for (let [host, data] in Iterator(aStorageData)) {
|
||||
let uri = Services.io.newURI(host, null, null);
|
||||
let principal = Services.scriptSecurityManager.getDocShellCodebasePrincipal(uri, aDocShell);
|
||||
let storage = aDocShell.getSessionStorageForPrincipal(principal, "", true);
|
||||
let storageManager = aDocShell.QueryInterface(Components.interfaces.nsIDOMStorageManager);
|
||||
|
||||
// There is no need to pass documentURI, it's only used to fill documentURI property of
|
||||
// domstorage event, which in this case has no consumer. Prevention of events in case
|
||||
// of missing documentURI will be solved in a followup bug to bug 600307.
|
||||
let storage = storageManager.createStorage(principal, "", aDocShell.usePrivateBrowsing);
|
||||
|
||||
for (let [key, value] in Iterator(data)) {
|
||||
try {
|
||||
|
@ -110,12 +115,8 @@ let DomStorage = {
|
|||
let storage;
|
||||
|
||||
try {
|
||||
// Using getSessionStorageForPrincipal instead of
|
||||
// getSessionStorageForURI just to be able to pass aCreate = false,
|
||||
// that avoids creation of the sessionStorage object for the page
|
||||
// earlier than the page really requires it. It was causing problems
|
||||
// while accessing a storage when a page later changed its domain.
|
||||
storage = aDocShell.getSessionStorageForPrincipal(aPrincipal, "", false);
|
||||
let storageManager = aDocShell.QueryInterface(Components.interfaces.nsIDOMStorageManager);
|
||||
storage = storageManager.getStorage(aPrincipal);
|
||||
} catch (e) {
|
||||
// sessionStorage might throw if it's turned off, see bug 458954
|
||||
}
|
||||
|
|
|
@ -49,17 +49,16 @@ const WINDOW_HIDEABLE_FEATURES = [
|
|||
"menubar", "toolbar", "locationbar", "personalbar", "statusbar", "scrollbars"
|
||||
];
|
||||
|
||||
/*
|
||||
docShell capabilities to (re)store
|
||||
Restored in restoreHistory()
|
||||
eg: browser.docShell["allow" + aCapability] = false;
|
||||
const MESSAGES = [
|
||||
// The content script tells us that its form data (or that of one of its
|
||||
// subframes) might have changed. This can be the contents or values of
|
||||
// standard form fields or of ContentEditables.
|
||||
"SessionStore:input",
|
||||
|
||||
XXX keep these in sync with all the attributes starting
|
||||
with "allow" in /docshell/base/nsIDocShell.idl
|
||||
*/
|
||||
const CAPABILITIES = [
|
||||
"Subframes", "Plugins", "Javascript", "MetaRedirects", "Images",
|
||||
"DNSPrefetch", "Auth", "WindowControl"
|
||||
// The content script has received a pageshow event. This happens when a
|
||||
// page is loaded from bfcache without any network activity, i.e. when
|
||||
// clicking the back or forward button.
|
||||
"SessionStore:pageshow"
|
||||
];
|
||||
|
||||
// These are tab events that we listen to.
|
||||
|
@ -85,6 +84,23 @@ Cu.import("resource://gre/modules/commonjs/sdk/core/promise.js", this);
|
|||
XPCOMUtils.defineLazyServiceGetter(this, "gSessionStartup",
|
||||
"@mozilla.org/browser/sessionstartup;1", "nsISessionStartup");
|
||||
|
||||
// List of docShell capabilities to (re)store. These are automatically
|
||||
// retrieved from a given docShell if not already collected before.
|
||||
// This is made so they're automatically in sync with all nsIDocShell.allow*
|
||||
// properties.
|
||||
let gDocShellCapabilities = (function () {
|
||||
let caps;
|
||||
|
||||
return docShell => {
|
||||
if (!caps) {
|
||||
let keys = Object.keys(docShell);
|
||||
caps = keys.filter(k => k.startsWith("allow")).map(k => k.slice(5));
|
||||
}
|
||||
|
||||
return caps;
|
||||
};
|
||||
})();
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "NetUtil",
|
||||
"resource://gre/modules/NetUtil.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "ScratchpadManager",
|
||||
|
@ -609,6 +625,29 @@ let SessionStoreInternal = {
|
|||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* This method handles incoming messages sent by the session store content
|
||||
* script and thus enables communication with OOP tabs.
|
||||
*/
|
||||
receiveMessage: function ssi_receiveMessage(aMessage) {
|
||||
var browser = aMessage.target;
|
||||
var win = browser.ownerDocument.defaultView;
|
||||
|
||||
switch (aMessage.name) {
|
||||
case "SessionStore:pageshow":
|
||||
this.onTabLoad(win, browser);
|
||||
break;
|
||||
case "SessionStore:input":
|
||||
this.onTabInput(win, browser);
|
||||
break;
|
||||
default:
|
||||
debug("received unknown message '" + aMessage.name + "'");
|
||||
break;
|
||||
}
|
||||
|
||||
this._clearRestoringWindows();
|
||||
},
|
||||
|
||||
/* ........ Window Event Handlers .............. */
|
||||
|
||||
/**
|
||||
|
@ -621,16 +660,10 @@ let SessionStoreInternal = {
|
|||
// If __SS_restore_data is set, then we need to restore the document
|
||||
// (form data, scrolling, etc.). This will only happen when a tab is
|
||||
// first restored.
|
||||
if (aEvent.currentTarget.__SS_restore_data)
|
||||
this.restoreDocument(win, aEvent.currentTarget, aEvent);
|
||||
// We still need to call onTabLoad, so fall through to "pageshow" case.
|
||||
case "pageshow":
|
||||
this.onTabLoad(win, aEvent.currentTarget, aEvent);
|
||||
break;
|
||||
case "change":
|
||||
case "input":
|
||||
case "DOMAutoComplete":
|
||||
this.onTabInput(win, aEvent.currentTarget);
|
||||
let browser = aEvent.currentTarget;
|
||||
if (browser.__SS_restore_data)
|
||||
this.restoreDocument(win, browser, aEvent);
|
||||
this.onTabLoad(win, browser);
|
||||
break;
|
||||
case "TabOpen":
|
||||
this.onTabAdd(win, aEvent.originalTarget);
|
||||
|
@ -1193,10 +1226,9 @@ let SessionStoreInternal = {
|
|||
onTabAdd: function ssi_onTabAdd(aWindow, aTab, aNoNotification) {
|
||||
let browser = aTab.linkedBrowser;
|
||||
browser.addEventListener("load", this, true);
|
||||
browser.addEventListener("pageshow", this, true);
|
||||
browser.addEventListener("change", this, true);
|
||||
browser.addEventListener("input", this, true);
|
||||
browser.addEventListener("DOMAutoComplete", this, true);
|
||||
|
||||
let mm = browser.messageManager;
|
||||
MESSAGES.forEach(msg => mm.addMessageListener(msg, this));
|
||||
|
||||
if (!aNoNotification) {
|
||||
this.saveStateDelayed(aWindow);
|
||||
|
@ -1217,10 +1249,9 @@ let SessionStoreInternal = {
|
|||
onTabRemove: function ssi_onTabRemove(aWindow, aTab, aNoNotification) {
|
||||
let browser = aTab.linkedBrowser;
|
||||
browser.removeEventListener("load", this, true);
|
||||
browser.removeEventListener("pageshow", this, true);
|
||||
browser.removeEventListener("change", this, true);
|
||||
browser.removeEventListener("input", this, true);
|
||||
browser.removeEventListener("DOMAutoComplete", this, true);
|
||||
|
||||
let mm = browser.messageManager;
|
||||
MESSAGES.forEach(msg => mm.removeMessageListener(msg, this));
|
||||
|
||||
delete browser.__SS_data;
|
||||
delete browser.__SS_tabStillLoading;
|
||||
|
@ -1289,17 +1320,14 @@ let SessionStoreInternal = {
|
|||
* Window reference
|
||||
* @param aBrowser
|
||||
* Browser reference
|
||||
* @param aEvent
|
||||
* Event obj
|
||||
*/
|
||||
onTabLoad: function ssi_onTabLoad(aWindow, aBrowser, aEvent) {
|
||||
onTabLoad: function ssi_onTabLoad(aWindow, aBrowser) {
|
||||
// react on "load" and solitary "pageshow" events (the first "pageshow"
|
||||
// following "load" is too late for deleting the data caches)
|
||||
// It's possible to get a load event after calling stop on a browser (when
|
||||
// overwriting tabs). We want to return early if the tab hasn't been restored yet.
|
||||
if ((aEvent.type != "load" && !aEvent.persisted) ||
|
||||
(aBrowser.__SS_restoreState &&
|
||||
aBrowser.__SS_restoreState == TAB_STATE_NEEDS_RESTORE)) {
|
||||
if (aBrowser.__SS_restoreState &&
|
||||
aBrowser.__SS_restoreState == TAB_STATE_NEEDS_RESTORE) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1959,9 +1987,9 @@ let SessionStoreInternal = {
|
|||
tabData.hidden = aTab.hidden;
|
||||
|
||||
var disallow = [];
|
||||
for (var i = 0; i < CAPABILITIES.length; i++)
|
||||
if (!browser.docShell["allow" + CAPABILITIES[i]])
|
||||
disallow.push(CAPABILITIES[i]);
|
||||
for (let cap of gDocShellCapabilities(browser.docShell))
|
||||
if (!browser.docShell["allow" + cap])
|
||||
disallow.push(cap);
|
||||
if (disallow.length > 0)
|
||||
tabData.disallow = disallow.join(",");
|
||||
else if (tabData.disallow)
|
||||
|
@ -2236,16 +2264,8 @@ let SessionStoreInternal = {
|
|||
}
|
||||
|
||||
// designMode is undefined e.g. for XUL documents (as about:config)
|
||||
if ((aContent.document.designMode || "") == "on" && aContent.document.body) {
|
||||
if (aData.innerHTML === undefined && !aFullData) {
|
||||
// we get no "input" events from iframes - listen for keypress here
|
||||
let _this = this;
|
||||
aContent.addEventListener("keypress", function(aEvent) {
|
||||
_this.saveStateDelayed(aWindow, 3000);
|
||||
}, true);
|
||||
}
|
||||
if ((aContent.document.designMode || "") == "on" && aContent.document.body)
|
||||
aData.innerHTML = aContent.document.body.innerHTML;
|
||||
}
|
||||
}
|
||||
|
||||
// get scroll position from nsIDOMWindowUtils, since it allows avoiding a
|
||||
|
@ -3090,10 +3110,10 @@ let SessionStoreInternal = {
|
|||
}
|
||||
|
||||
// make sure to reset the capabilities and attributes, in case this tab gets reused
|
||||
var disallow = (tabData.disallow)?tabData.disallow.split(","):[];
|
||||
CAPABILITIES.forEach(function(aCapability) {
|
||||
browser.docShell["allow" + aCapability] = disallow.indexOf(aCapability) == -1;
|
||||
});
|
||||
let disallow = new Set(tabData.disallow && tabData.disallow.split(","));
|
||||
for (let cap of gDocShellCapabilities(browser.docShell))
|
||||
browser.docShell["allow" + cap] = !disallow.has(cap);
|
||||
|
||||
for (let name in this.xulAttributes)
|
||||
tab.removeAttribute(name);
|
||||
for (let name in tabData.attributes)
|
||||
|
|
|
@ -21,10 +21,14 @@ XPCSHELL_TESTS = \
|
|||
|
||||
MOCHITEST_BROWSER_FILES = \
|
||||
head.js \
|
||||
browser_capabilities.js \
|
||||
browser_form_restore_events.js \
|
||||
browser_form_restore_events_sample.html \
|
||||
browser_formdata_format.js \
|
||||
browser_formdata_format_sample.html \
|
||||
browser_input.js \
|
||||
browser_input_sample.html \
|
||||
browser_pageshow.js \
|
||||
browser_248970_b_perwindowpb.js \
|
||||
browser_248970_b_sample.html \
|
||||
browser_339445.js \
|
||||
|
@ -73,7 +77,6 @@ MOCHITEST_BROWSER_FILES = \
|
|||
browser_490040.js \
|
||||
browser_491168.js \
|
||||
browser_491577.js \
|
||||
browser_493467.js \
|
||||
browser_495495.js \
|
||||
browser_500328.js \
|
||||
browser_514751.js \
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
function test() {
|
||||
/** Test for Bug 493467 **/
|
||||
|
||||
let tab = gBrowser.addTab();
|
||||
tab.linkedBrowser.stop();
|
||||
let tabState = JSON.parse(ss.getTabState(tab));
|
||||
is(tabState.disallow || "", "", "Everything is allowed per default");
|
||||
|
||||
// collect all permissions that can be set on a docShell (i.e. all
|
||||
// attributes starting with "allow" such as "allowJavascript") and
|
||||
// disallow them all, as SessionStore only remembers disallowed ones
|
||||
let permissions = [];
|
||||
let docShell = tab.linkedBrowser.docShell;
|
||||
for (let attribute in docShell) {
|
||||
if (/^allow([A-Z].*)/.test(attribute)) {
|
||||
permissions.push(RegExp.$1);
|
||||
docShell[attribute] = false;
|
||||
}
|
||||
}
|
||||
|
||||
// make sure that all available permissions have been remembered
|
||||
tabState = JSON.parse(ss.getTabState(tab));
|
||||
let disallow = tabState.disallow.split(",");
|
||||
permissions.forEach(function(aName) {
|
||||
ok(disallow.indexOf(aName) > -1, "Saved state of allow" + aName);
|
||||
});
|
||||
// IF A TEST FAILS, please add the missing permission's name (without the
|
||||
// leading "allow") to nsSessionStore.js's CAPABILITIES array. Thanks.
|
||||
|
||||
gBrowser.removeTab(tab);
|
||||
}
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче