This commit is contained in:
Phil Ringnalda 2016-12-04 19:14:09 -08:00
Родитель 65848aecba e8835f52ef
Коммит 77227d0c91
34 изменённых файлов: 1181 добавлений и 1090 удалений

Двоичные данные
config/external/icu/data/icudt58l.dat поставляемый

Двоичный файл не отображается.

Просмотреть файл

@ -77,6 +77,7 @@ support-files =
[browser_perf-recording-notices-01.js]
[browser_perf-recording-notices-02.js]
[browser_perf-recording-notices-03.js]
skip-if = debug && (bits == 32) # bug 1273374
[browser_perf-recording-notices-04.js]
[browser_perf-recording-notices-05.js]
[browser_perf-recording-selected-01.js]

Просмотреть файл

@ -66,7 +66,6 @@ EXPORTS += [
'nsDocumentWarningList.h',
'nsDOMAttributeMap.h',
'nsDOMCID.h',
'nsDOMClassInfoClasses.h',
'nsDOMClassInfoID.h',
'nsDOMJSUtils.h',
'nsDOMNavigationTiming.h',

Просмотреть файл

@ -1,57 +0,0 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
// IWYU pragma: private, include "nsDOMClassInfoID.h"
DOMCI_CLASS(DOMPrototype)
DOMCI_CLASS(DOMConstructor)
// CSS classes
DOMCI_CLASS(CSSStyleRule)
DOMCI_CLASS(CSSImportRule)
DOMCI_CLASS(CSSMediaRule)
DOMCI_CLASS(CSSNameSpaceRule)
// XUL classes
#ifdef MOZ_XUL
DOMCI_CLASS(XULCommandDispatcher)
#endif
DOMCI_CLASS(XULControllers)
#ifdef MOZ_XUL
DOMCI_CLASS(TreeSelection)
DOMCI_CLASS(TreeContentView)
#endif
#ifdef MOZ_XUL
DOMCI_CLASS(XULTemplateBuilder)
DOMCI_CLASS(XULTreeBuilder)
#endif
DOMCI_CLASS(CSSMozDocumentRule)
DOMCI_CLASS(CSSSupportsRule)
// @font-face in CSS
DOMCI_CLASS(CSSFontFaceRule)
DOMCI_CLASS(ContentFrameMessageManager)
DOMCI_CLASS(ContentProcessMessageManager)
DOMCI_CLASS(ChromeMessageBroadcaster)
DOMCI_CLASS(ChromeMessageSender)
DOMCI_CLASS(CSSKeyframeRule)
DOMCI_CLASS(CSSKeyframesRule)
// @counter-style in CSS
DOMCI_CLASS(CSSCounterStyleRule)
DOMCI_CLASS(CSSPageRule)
DOMCI_CLASS(CSSFontFeatureValuesRule)
DOMCI_CLASS(XULControlElement)
DOMCI_CLASS(XULLabeledControlElement)
DOMCI_CLASS(XULButtonElement)
DOMCI_CLASS(XULCheckboxElement)
DOMCI_CLASS(XULPopupElement)

Просмотреть файл

@ -14,19 +14,63 @@
#include "nsIXPCScriptable.h"
#define DOMCI_CLASS(_dom_class) \
eDOMClassInfo_##_dom_class##_id,
enum nsDOMClassInfoID
{
eDOMClassInfo_DOMPrototype_id,
eDOMClassInfo_DOMConstructor_id,
enum nsDOMClassInfoID {
// CSS classes
eDOMClassInfo_CSSStyleRule_id,
eDOMClassInfo_CSSImportRule_id,
eDOMClassInfo_CSSMediaRule_id,
eDOMClassInfo_CSSNameSpaceRule_id,
#include "nsDOMClassInfoClasses.h"
// XUL classes
#ifdef MOZ_XUL
eDOMClassInfo_XULCommandDispatcher_id,
#endif
eDOMClassInfo_XULControllers_id,
#ifdef MOZ_XUL
eDOMClassInfo_TreeSelection_id,
eDOMClassInfo_TreeContentView_id,
#endif
#ifdef MOZ_XUL
eDOMClassInfo_XULTemplateBuilder_id,
eDOMClassInfo_XULTreeBuilder_id,
#endif
eDOMClassInfo_CSSMozDocumentRule_id,
eDOMClassInfo_CSSSupportsRule_id,
// @font-face in CSS
eDOMClassInfo_CSSFontFaceRule_id,
eDOMClassInfo_ContentFrameMessageManager_id,
eDOMClassInfo_ContentProcessMessageManager_id,
eDOMClassInfo_ChromeMessageBroadcaster_id,
eDOMClassInfo_ChromeMessageSender_id,
eDOMClassInfo_CSSKeyframeRule_id,
eDOMClassInfo_CSSKeyframesRule_id,
// @counter-style in CSS
eDOMClassInfo_CSSCounterStyleRule_id,
eDOMClassInfo_CSSPageRule_id,
eDOMClassInfo_CSSFontFeatureValuesRule_id,
eDOMClassInfo_XULControlElement_id,
eDOMClassInfo_XULLabeledControlElement_id,
eDOMClassInfo_XULButtonElement_id,
eDOMClassInfo_XULCheckboxElement_id,
eDOMClassInfo_XULPopupElement_id,
// This one better be the last one in this list
eDOMClassInfoIDCount
};
#undef DOMCI_CLASS
/**
* nsIClassInfo helper macros
*/

Просмотреть файл

@ -137,7 +137,7 @@ skip-if = os == 'android' # bug 1043403
tags=capturestream
skip-if = android_version == '18' # android(Bug 1189784, timeouts on 4.3 emulator)
[test_peerConnection_captureStream_canvas_2d.html]
skip-if = (android_version == '18' && debug) # android(Bug 1189784, timeouts on 4.3 emulator)
skip-if = android_version == '18' # android(Bug 1319019, timeouts on 4.3 emulator)
[test_peerConnection_multiple_captureStream_canvas_2d.html]
skip-if = (android_version == '18' && debug) # android(Bug 1189784, timeouts on 4.3 emulator)
[test_peerConnection_captureStream_canvas_webgl.html]

Просмотреть файл

@ -81,6 +81,7 @@ var testObserver = {
// Check and cleanup CrashManager.
Task.spawn(function* () {
let cm = Services.crashmanager;
yield cm.ensureCrashIsPresent(crashID);
let store = yield cm._getStore();
is(store.crashesCount, 1, "Store should have only 1 item");

Просмотреть файл

@ -89,6 +89,7 @@ var testObserver = {
// Check and cleanup CrashManager.
Task.spawn(function* () {
let cm = Services.crashmanager;
yield cm.ensureCrashIsPresent(crashID);
let store = yield cm._getStore();
is(store.crashesCount, 1, "Store should have only 1 item");

Просмотреть файл

@ -1,10 +1,10 @@
Path: 44
URL: https://ssl.icu-project.org/repos/icu/data/trunk/tzdata/icunew/2016i/44
Relative URL: ^/data/trunk/tzdata/icunew/2016i/44
URL: https://ssl.icu-project.org/repos/icu/data/trunk/tzdata/icunew/2016j/44
Relative URL: ^/data/trunk/tzdata/icunew/2016j/44
Repository Root: https://ssl.icu-project.org/repos/icu
Repository UUID: 251d0590-4201-4cf1-90de-194747b24ca1
Node Kind: directory
Last Changed Author: yoshito
Last Changed Rev: 39498
Last Changed Date: 2016-11-03 18:10:26 +0000 (Thu, 03 Nov 2016)
Last Changed Rev: 39512
Last Changed Date: 2016-11-29 08:30:43 +0000 (Di, 29 Nov 2016)

Двоичные данные
intl/tzdata/source/be/metaZones.res

Двоичный файл не отображается.

Двоичные данные
intl/tzdata/source/be/timezoneTypes.res

Двоичный файл не отображается.

Двоичные данные
intl/tzdata/source/be/windowsZones.res

Двоичный файл не отображается.

Двоичные данные
intl/tzdata/source/be/zoneinfo64.res

Двоичный файл не отображается.

Двоичные данные
intl/tzdata/source/ee/metaZones.res

Двоичный файл не отображается.

Двоичные данные
intl/tzdata/source/ee/timezoneTypes.res

Двоичный файл не отображается.

Двоичные данные
intl/tzdata/source/ee/windowsZones.res

Двоичный файл не отображается.

Двоичные данные
intl/tzdata/source/ee/zoneinfo64.res

Двоичный файл не отображается.

Двоичные данные
intl/tzdata/source/le/metaZones.res

Двоичный файл не отображается.

Двоичные данные
intl/tzdata/source/le/timezoneTypes.res

Двоичный файл не отображается.

Двоичные данные
intl/tzdata/source/le/windowsZones.res

Двоичный файл не отображается.

Двоичные данные
intl/tzdata/source/le/zoneinfo64.res

Двоичный файл не отображается.

Просмотреть файл

@ -2689,6 +2689,13 @@ metaZones:table(nofallback){
"9999-12-31 23:59",
}
}
"Asia:Atyrau"{
{
"Kazakhstan_Western",
"2004-10-30 22:00",
"9999-12-31 23:59",
}
}
"Asia:Baghdad"{
{
"Arabian",
@ -3807,6 +3814,13 @@ metaZones:table(nofallback){
"Europe_Central",
}
}
"Europe:Saratov"{
{
"Moscow",
"1992-03-28 22:00",
"2016-12-03 23:00",
}
}
"Europe:Simferopol"{
{
"Moscow",

Просмотреть файл

@ -366,6 +366,7 @@ timezoneTypes:table(nofallback){
"Asia:Aqtau"{"kzaau"}
"Asia:Aqtobe"{"kzakx"}
"Asia:Ashgabat"{"tmasb"}
"Asia:Atyrau"{"kzguw"}
"Asia:Baghdad"{"iqbgw"}
"Asia:Bahrain"{"bhbah"}
"Asia:Baku"{"azbak"}
@ -532,6 +533,7 @@ timezoneTypes:table(nofallback){
"Europe:Samara"{"rukuf"}
"Europe:San_Marino"{"smsai"}
"Europe:Sarajevo"{"basjj"}
"Europe:Saratov"{"rurtw"}
"Europe:Simferopol"{"uasip"}
"Europe:Skopje"{"mkskp"}
"Europe:Sofia"{"bgsof"}

Просмотреть файл

@ -58,7 +58,7 @@ windowsZones:table(nofallback){
}
"Astrakhan Standard Time"{
001{"Europe/Astrakhan"}
RU{"Europe/Astrakhan Europe/Ulyanovsk"}
RU{"Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk"}
}
"Atlantic Standard Time"{
001{"America/Halifax"}
@ -717,7 +717,6 @@ windowsZones:table(nofallback){
}
"W. Australia Standard Time"{
001{"Australia/Perth"}
AQ{"Antarctica/Casey"}
AU{"Australia/Perth"}
}
"W. Central Africa Standard Time"{
@ -763,7 +762,7 @@ windowsZones:table(nofallback){
"West Asia Standard Time"{
001{"Asia/Tashkent"}
AQ{"Antarctica/Mawson"}
KZ{"Asia/Oral Asia/Aqtau Asia/Aqtobe"}
KZ{"Asia/Oral Asia/Aqtau Asia/Aqtobe Asia/Atyrau"}
MV{"Indian/Maldives"}
TF{"Indian/Kerguelen"}
TJ{"Asia/Dushanbe"}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -21,6 +21,7 @@
#include "jsatom.h"
#include "jscntxt.h"
#include "jsobj.h"
#include "jsstr.h"
#include "builtin/IntlTimeZoneData.h"
#if ENABLE_INTL_API
@ -1117,10 +1118,10 @@ NewUCollator(JSContext* cx, HandleObject collator)
if (!GetProperty(cx, internals, internals, cx->names().usage, &value))
return nullptr;
JSAutoByteString usage(cx, value.toString());
JSLinearString* usage = value.toString()->ensureLinear(cx);
if (!usage)
return nullptr;
if (equal(usage, "search")) {
if (StringEqualsAscii(usage, "search")) {
// ICU expects search as a Unicode locale extension on locale.
// Unicode locale extensions must occur before private use extensions.
const char* oldLocale = locale.ptr();
@ -1148,6 +1149,8 @@ NewUCollator(JSContext* cx, HandleObject collator)
memcpy(newLocale + index + insertLen, oldLocale + index, localeLen - index + 1); // '\0'
locale.clear();
locale.initBytes(newLocale);
} else {
MOZ_ASSERT(StringEqualsAscii(usage, "sort"));
}
// We don't need to look at the collation property - it can only be set
@ -1156,18 +1159,18 @@ NewUCollator(JSContext* cx, HandleObject collator)
if (!GetProperty(cx, internals, internals, cx->names().sensitivity, &value))
return nullptr;
JSAutoByteString sensitivity(cx, value.toString());
JSLinearString* sensitivity = value.toString()->ensureLinear(cx);
if (!sensitivity)
return nullptr;
if (equal(sensitivity, "base")) {
if (StringEqualsAscii(sensitivity, "base")) {
uStrength = UCOL_PRIMARY;
} else if (equal(sensitivity, "accent")) {
} else if (StringEqualsAscii(sensitivity, "accent")) {
uStrength = UCOL_SECONDARY;
} else if (equal(sensitivity, "case")) {
} else if (StringEqualsAscii(sensitivity, "case")) {
uStrength = UCOL_PRIMARY;
uCaseLevel = UCOL_ON;
} else {
MOZ_ASSERT(equal(sensitivity, "variant"));
MOZ_ASSERT(StringEqualsAscii(sensitivity, "variant"));
uStrength = UCOL_TERTIARY;
}
@ -1189,15 +1192,15 @@ NewUCollator(JSContext* cx, HandleObject collator)
if (!GetProperty(cx, internals, internals, cx->names().caseFirst, &value))
return nullptr;
if (!value.isUndefined()) {
JSAutoByteString caseFirst(cx, value.toString());
JSLinearString* caseFirst = value.toString()->ensureLinear(cx);
if (!caseFirst)
return nullptr;
if (equal(caseFirst, "upper"))
if (StringEqualsAscii(caseFirst, "upper"))
uCaseFirst = UCOL_UPPER_FIRST;
else if (equal(caseFirst, "lower"))
else if (StringEqualsAscii(caseFirst, "lower"))
uCaseFirst = UCOL_LOWER_FIRST;
else
MOZ_ASSERT(equal(caseFirst, "false"));
MOZ_ASSERT(StringEqualsAscii(caseFirst, "false"));
}
UErrorCode status = U_ZERO_ERROR;
@ -1599,11 +1602,11 @@ NewUNumberFormat(JSContext* cx, HandleObject numberFormat)
if (!GetProperty(cx, internals, internals, cx->names().style, &value))
return nullptr;
JSAutoByteString style(cx, value.toString());
JSLinearString* style = value.toString()->ensureLinear(cx);
if (!style)
return nullptr;
if (equal(style, "currency")) {
if (StringEqualsAscii(style, "currency")) {
if (!GetProperty(cx, internals, internals, cx->names().currency, &value))
return nullptr;
currency = value.toString();
@ -1616,21 +1619,21 @@ NewUNumberFormat(JSContext* cx, HandleObject numberFormat)
if (!GetProperty(cx, internals, internals, cx->names().currencyDisplay, &value))
return nullptr;
JSAutoByteString currencyDisplay(cx, value.toString());
JSLinearString* currencyDisplay = value.toString()->ensureLinear(cx);
if (!currencyDisplay)
return nullptr;
if (equal(currencyDisplay, "code")) {
if (StringEqualsAscii(currencyDisplay, "code")) {
uStyle = UNUM_CURRENCY_ISO;
} else if (equal(currencyDisplay, "symbol")) {
} else if (StringEqualsAscii(currencyDisplay, "symbol")) {
uStyle = UNUM_CURRENCY;
} else {
MOZ_ASSERT(equal(currencyDisplay, "name"));
MOZ_ASSERT(StringEqualsAscii(currencyDisplay, "name"));
uStyle = UNUM_CURRENCY_PLURAL;
}
} else if (equal(style, "percent")) {
} else if (StringEqualsAscii(style, "percent")) {
uStyle = UNUM_PERCENT;
} else {
MOZ_ASSERT(equal(style, "decimal"));
MOZ_ASSERT(StringEqualsAscii(style, "decimal"));
uStyle = UNUM_DECIMAL;
}

Просмотреть файл

@ -1,5 +1,5 @@
// Generated by make_intl_data.py. DO NOT EDIT.
// tzdata version = 2016i
// tzdata version = 2016j
#ifndef builtin_IntlTimeZoneData_h
#define builtin_IntlTimeZoneData_h

Просмотреть файл

@ -1,7 +1,7 @@
// |reftest| skip-if(!this.hasOwnProperty("Intl"))
// Generated by make_intl_data.py. DO NOT EDIT.
// tzdata version = 2016i
// tzdata version = 2016j
const tzMapper = [
x => x,

Просмотреть файл

@ -1,7 +1,7 @@
// |reftest| skip-if(!this.hasOwnProperty("Intl"))
// Generated by make_intl_data.py. DO NOT EDIT.
// tzdata version = 2016i
// tzdata version = 2016j
const tzMapper = [
x => x,

Просмотреть файл

@ -1,7 +1,7 @@
// |reftest| skip-if(!this.hasOwnProperty("Intl"))
// Generated by make_intl_data.py. DO NOT EDIT.
// tzdata version = 2016i
// tzdata version = 2016j
const tzMapper = [
x => x,

Просмотреть файл

@ -1,7 +1,7 @@
// |reftest| skip-if(!this.hasOwnProperty("Intl"))
// Generated by make_intl_data.py. DO NOT EDIT.
// tzdata version = 2016i
// tzdata version = 2016j
const tzMapper = [
x => x,

Просмотреть файл

@ -7,15 +7,15 @@
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
const myScope = this;
Cu.import("resource://gre/modules/KeyValueParser.jsm");
Cu.import("resource://gre/modules/Log.jsm", this);
Cu.import("resource://gre/modules/osfile.jsm", this);
Cu.import("resource://gre/modules/Promise.jsm", this);
Cu.import("resource://gre/modules/PromiseUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm", this);
Cu.import("resource://gre/modules/Task.jsm", this);
Cu.import("resource://gre/modules/TelemetryController.jsm");
Cu.import("resource://gre/modules/Timer.jsm", this);
Cu.import("resource://gre/modules/XPCOMUtils.jsm", this);
Cu.import("resource://gre/modules/TelemetryController.jsm");
Cu.import("resource://gre/modules/KeyValueParser.jsm");
this.EXPORTED_SYMBOLS = [
"CrashManager",
@ -111,6 +111,9 @@ this.CrashManager = function(options) {
// object so it can be returned for in-progress operations.
this._aggregatePromise = null;
// Map of crash ID / promise tuples used to track adding new crashes.
this._crashPromises = new Map();
// The CrashStore currently attached to this object.
this._store = null;
@ -345,7 +348,7 @@ this.CrashManager.prototype = Object.freeze({
* (integer) Delay in milliseconds when maintenance should occur.
*/
scheduleMaintenance: function(delay) {
let deferred = Promise.defer();
let deferred = PromiseUtils.defer();
setTimeout(() => {
this.runMaintenanceTasks().then(deferred.resolve, deferred.reject);
@ -369,14 +372,45 @@ this.CrashManager.prototype = Object.freeze({
* @return promise<null> Resolved when the store has been saved.
*/
addCrash: function(processType, crashType, id, date, metadata) {
return Task.spawn(function* () {
let promise = Task.spawn(function* () {
let store = yield this._getStore();
if (store.addCrash(processType, crashType, id, date, metadata)) {
yield store.save();
}
let deferred = this._crashPromises.get(id);
if (deferred) {
this._crashPromises.delete(id);
deferred.resolve();
}
}.bind(this));
return promise;
},
/**
* Returns a promise that is resolved only the crash with the specified id
* has been fully recorded.
*
* @param id (string) Crash ID. Likely a UUID.
*
* @return promise<null> Resolved when the crash is present.
*/
ensureCrashIsPresent: Task.async(function* (id) {
let store = yield this._getStore();
let crash = store.getCrash(id);
if (crash) {
return Promise.resolve();
}
let deferred = PromiseUtils.defer();
this._crashPromises.set(id, deferred);
return deferred.promise;
}),
/**
* Record the remote ID for a crash.
*

Просмотреть файл

@ -474,6 +474,36 @@ add_task(function* test_addSubmissionAttemptAndResult() {
Assert.equal(submission.result, m.SUBMISSION_RESULT_OK);
});
add_task(function* test_addSubmissionAttemptEarlyCall() {
let m = yield getManager();
let crashes = yield m.getCrashes();
Assert.equal(crashes.length, 0);
let p = m.ensureCrashIsPresent("main-crash").then(() => {
return m.addSubmissionAttempt("main-crash", "submission", DUMMY_DATE);
}).then(() => {
return m.addSubmissionResult("main-crash", "submission", DUMMY_DATE_2,
m.SUBMISSION_RESULT_OK);
});
yield m.addCrash(m.PROCESS_TYPE_MAIN, m.CRASH_TYPE_CRASH,
"main-crash", DUMMY_DATE);
crashes = yield m.getCrashes();
Assert.equal(crashes.length, 1);
yield p;
let submissions = crashes[0].submissions;
Assert.ok(!!submissions);
let submission = submissions.get("submission");
Assert.ok(!!submission);
Assert.equal(submission.requestDate.getTime(), DUMMY_DATE.getTime());
Assert.equal(submission.responseDate.getTime(), DUMMY_DATE_2.getTime());
Assert.equal(submission.result, m.SUBMISSION_RESULT_OK);
});
add_task(function* test_setCrashClassifications() {
let m = yield getManager();

Просмотреть файл

@ -308,31 +308,38 @@ Submitter.prototype = {
let ret =
xhr.status == 200 ? parseKeyValuePairs(xhr.responseText) : {};
let submitted = !!ret.CrashID;
let p = Promise.resolve();
if (this.recordSubmission) {
let result = submitted ? manager.SUBMISSION_RESULT_OK :
manager.SUBMISSION_RESULT_FAILED;
manager.addSubmissionResult(this.id, submissionID, new Date(),
result);
p = manager.addSubmissionResult(this.id, submissionID, new Date(),
result);
if (submitted) {
manager.setRemoteCrashID(this.id, ret.CrashID);
}
}
if (submitted) {
this.submitSuccess(ret);
}
else {
this.notifyStatus(FAILED);
this.cleanup();
}
p.then(() => {
if (submitted) {
this.submitSuccess(ret);
} else {
this.notifyStatus(FAILED);
this.cleanup();
}
});
}
}, false);
let p = Promise.resolve();
let id = this.id;
if (this.recordSubmission) {
manager.addSubmissionAttempt(this.id, submissionID, new Date());
p = manager.ensureCrashIsPresent(id).then(() => {
return manager.addSubmissionAttempt(id, submissionID, new Date());
});
}
xhr.send(formData);
p.then(() => { xhr.send(formData); });
return true;
},