Merge mozilla-central to mozilla-inbound on a CLOSED TREE

This commit is contained in:
Carsten "Tomcat" Book 2017-05-16 15:08:58 +02:00
Родитель 11243e335a e83697008e
Коммит c8ef78fe63
634 изменённых файлов: 5967 добавлений и 81207 удалений

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

@ -60,7 +60,6 @@
^media/sphinxbase/.*
^media/webrtc/trunk/.*
^media/webrtc/signaling/src/sdp/sipcc/.*
^memory/jemalloc/src/.*
^mfbt/decimal/.*
^mfbt/double-conversion/source/.*
^mfbt/lz4.*

1
aclocal.m4 поставляемый
Просмотреть файл

@ -27,7 +27,6 @@ builtin(include, build/autoconf/icu.m4)dnl
builtin(include, build/autoconf/clang-plugin.m4)dnl
builtin(include, build/autoconf/alloc.m4)dnl
builtin(include, build/autoconf/ios.m4)dnl
builtin(include, build/autoconf/jemalloc.m4)dnl
builtin(include, build/autoconf/sanitize.m4)dnl
MOZ_PROG_CHECKMSYS()

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

@ -22,7 +22,7 @@
used as they only apply to Cocoa widget builds. All version of Firefox
through Firefox 2 will use Carbon widgets. -->
<menupopup id="menu_ToolsPopup">
<menuitem id="menu_preferences" label="&preferencesCmdMac.label;" key="key_preferencesCmdMac" oncommand="openPreferences();"/>
<menuitem id="menu_preferences" label="&preferencesCmdMac.label;" key="key_preferencesCmdMac" oncommand="openPreferences(undefined, {origin: 'commandLineLegacy'});"/>
<menuitem id="menu_mac_services" label="&servicesMenuMac.label;"/>
<menuitem id="menu_mac_hide_app" label="&hideThisAppCmdMac2.label;" key="key_hideThisAppCmdMac"/>
<menuitem id="menu_mac_hide_others" label="&hideOtherAppsCmdMac.label;" key="key_hideOtherAppsCmdMac"/>

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

@ -69,9 +69,9 @@ var gDataNotificationInfoBar = {
// The advanced subpanes are only supported in the old organization, which will
// be removed by bug 1349689.
if (Preferences.get("browser.preferences.useOldOrganization", false)) {
window.openAdvancedPreferences("dataChoicesTab");
window.openAdvancedPreferences("dataChoicesTab", {origin: "dataReporting"});
} else {
window.openPreferences("privacy-reports");
window.openPreferences("privacy-reports", {origin: "dataReporting"});
}
},
}];

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

@ -167,7 +167,7 @@ var gEMEHandler = {
let mainAction = {
label: gNavigatorBundle.getString(btnLabelId),
accessKey: gNavigatorBundle.getString(btnAccessKeyId),
callback() { openPreferences("panePrivacy"); },
callback() { openPreferences("panePrivacy", {origin: "browserMedia"}); },
dismiss: true
};
let options = {

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

@ -185,7 +185,7 @@
<menuitem id="menu_preferences"
label="&preferencesCmdUnix.label;"
accesskey="&preferencesCmdUnix.accesskey;"
oncommand="openPreferences();"/>
oncommand="openPreferences(undefined, {origin: 'menubar'});"/>
#endif
#endif
</menupopup>
@ -532,7 +532,7 @@
<menuitem id="menu_preferences"
label="&preferencesCmd2.label;"
accesskey="&preferencesCmd2.accesskey;"
oncommand="openPreferences();"/>
oncommand="openPreferences(undefined, {origin: 'menubar'});"/>
#endif
</menupopup>
</menu>

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

@ -93,7 +93,7 @@
<command id="Browser:OpenLocation" oncommand="openLocation();"/>
<command id="Browser:RestoreLastSession" oncommand="restoreLastSession();" disabled="true"/>
<command id="Browser:NewUserContextTab" oncommand="openNewUserContextTab(event.sourceEvent);"/>
<command id="Browser:OpenAboutContainers" oncommand="openPreferences('paneContainers');"/>
<command id="Browser:OpenAboutContainers" oncommand="openPreferences('paneContainers', {origin: 'ContainersCommand'});"/>
<command id="Tools:Search" oncommand="BrowserSearch.webSearch();"/>
<command id="Tools:Downloads" oncommand="BrowserDownloadsUI();"/>

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

@ -241,17 +241,17 @@ var gSync = {
onMenuPanelCommand() {
switch (this.panelUIFooter.getAttribute("fxastatus")) {
case "signedin":
this.openPrefs("menupanel");
this.openPrefs("menupanel", "fxaSignedin");
break;
case "error":
if (this.panelUIFooter.getAttribute("fxastatus") == "unverified") {
this.openPrefs("menupanel");
this.openPrefs("menupanel", "fxaError");
} else {
this.openSignInAgainPage("menupanel");
}
break;
default:
this.openPrefs("menupanel");
this.openPrefs("menupanel", "fxa");
break;
}
@ -439,8 +439,8 @@ var gSync = {
Services.obs.notifyObservers(null, "cloudsync:user-sync");
},
openPrefs(entryPoint = "syncbutton") {
window.openPreferences("paneSync", { urlParams: { entrypoint: entryPoint } });
openPrefs(entryPoint = "syncbutton", origin = undefined) {
window.openPreferences("paneSync", { origin, urlParams: { entrypoint: entryPoint } });
},
openSyncedTabsPanel() {

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

@ -527,9 +527,9 @@ const gStoragePressureObserver = {
// be removed by bug 1349689.
let win = gBrowser.ownerGlobal;
if (Preferences.get("browser.preferences.useOldOrganization", false)) {
win.openAdvancedPreferences("networkTab");
win.openAdvancedPreferences("networkTab", {origin: "storagePressure"});
} else {
win.openPreferences("panePrivacy");
win.openPreferences("panePrivacy", {origin: "storagePressure"});
}
}
});
@ -6363,9 +6363,9 @@ var OfflineApps = {
// The advanced subpanes are only supported in the old organization, which will
// be removed by bug 1349689.
if (Preferences.get("browser.preferences.useOldOrganization", false)) {
openAdvancedPreferences("networkTab");
openAdvancedPreferences("networkTab", {origin: "offlineApps"});
} else {
openPreferences("panePrivacy");
openPreferences("panePrivacy", {origin: "offlineApps"});
}
},

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

@ -715,6 +715,12 @@ function openAboutDialog() {
}
function openPreferences(paneID, extraArgs) {
let histogram = Services.telemetry.getHistogramById("FX_PREFERENCES_OPENED_VIA");
if (extraArgs && extraArgs.origin) {
histogram.add(extraArgs.origin);
} else {
histogram.add("other");
}
function switchToAdvancedSubPane(doc) {
if (extraArgs && extraArgs["advancedTab"]) {
let advancedPaneTabs = doc.getElementById("advancedPrefs");
@ -780,8 +786,8 @@ function openPreferences(paneID, extraArgs) {
}
}
function openAdvancedPreferences(tabID) {
openPreferences("paneAdvanced", { "advancedTab": tabID });
function openAdvancedPreferences(tabID, origin) {
openPreferences("paneAdvanced", { "advancedTab": tabID, origin });
}
/**

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

@ -176,7 +176,6 @@ const CustomizableWidgets = [
tooltiptext: "history-panelmenu.tooltiptext2",
defaultArea: CustomizableUI.AREA_PANEL,
onViewShowing(aEvent) {
aEvent.detail.addBlocker(new Promise((resolve, reject) => {
// Populate our list of history
const kMaxResults = 15;
let doc = aEvent.target.ownerDocument;
@ -233,11 +232,9 @@ const CustomizableWidgets = [
},
handleError(aError) {
log.debug("History view tried to show but had an error: " + aError);
reject();
},
handleCompletion(aReason) {
log.debug("History view is being shown!");
resolve();
},
});
@ -275,7 +272,6 @@ const CustomizableWidgets = [
element.classList.add("subviewbutton", "cui-withicon");
}
recentlyClosedWindows.appendChild(windowsFragment);
}));
},
onCreated(aNode) {
// Middle clicking recently closed items won't close the panel - cope:
@ -1184,7 +1180,7 @@ let preferencesButton = {
defaultArea: CustomizableUI.AREA_PANEL,
onCommand(aEvent) {
let win = aEvent.target.ownerGlobal;
win.openPreferences();
win.openPreferences(undefined, {origin: "preferencesButton"});
}
};
if (AppConstants.platform == "win") {

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

@ -152,6 +152,9 @@ add_task(async function testMatchDataURI() {
`,
"page.js": function() {
browser.test.onMessage.addListener((msg, url) => {
if (msg !== "navigate") {
return;
}
window.location.href = url;
});
},
@ -174,7 +177,10 @@ add_task(async function testMatchDataURI() {
});
browser.test.onMessage.addListener(async msg => {
browser.test.assertRejects(
if (msg !== "execute") {
return;
}
await browser.test.assertRejects(
browser.tabs.executeScript({
code: "location.href;",
allFrames: true,

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

@ -71,7 +71,7 @@ SearchProvider.prototype = {
manageEngines(browser) {
const browserWin = browser.ownerGlobal;
browserWin.openPreferences("paneGeneral");
browserWin.openPreferences("paneGeneral", { origin: "contentSearch" });
},
async asyncGetState() {

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

@ -215,7 +215,12 @@ function openWindow(parent, url, target, features, args, noExternalArgs) {
return Services.ww.openWindow(parent, url, target, features, argArray);
}
function openPreferences() {
function openPreferences(extraArgs) {
if (extraArgs && extraArgs.origin) {
Services.telemetry.getHistogramById("FX_PREFERENCES_OPENED_VIA").add(extraArgs.origin);
} else {
Services.telemetry.getHistogramById("FX_PREFERENCES_OPENED_VIA").add("other");
}
var args = Components.classes["@mozilla.org/array;1"]
.createInstance(Components.interfaces.nsIMutableArray);
@ -351,7 +356,7 @@ nsBrowserContentHandler.prototype = {
// Handle old preference dialog URLs.
if (chromeParam == "chrome://browser/content/pref/pref.xul" ||
chromeParam == "chrome://browser/content/preferences/preferences.xul") {
openPreferences();
openPreferences({origin: "commandLineLegacy"});
cmdLine.preventDefault = true;
} else try {
let resolvedURI = resolveURIInternal(cmdLine, chromeParam);
@ -376,7 +381,7 @@ nsBrowserContentHandler.prototype = {
}
}
if (cmdLine.handleFlag("preferences", false)) {
openPreferences();
openPreferences({origin: "commandLineLegacy"});
cmdLine.preventDefault = true;
}
if (cmdLine.handleFlag("silent", false))

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

@ -308,7 +308,7 @@ BrowserGlue.prototype = {
observe: function BG_observe(subject, topic, data) {
switch (topic) {
case "notifications-open-settings":
this._openPreferences("privacy");
this._openPreferences("privacy", { origin: "notifOpenSettings" });
break;
case "prefservice:after-app-defaults":
this._onAppDefaults();
@ -1710,7 +1710,7 @@ BrowserGlue.prototype = {
let clickCallback = (subject, topic, data) => {
if (topic != "alertclickcallback")
return;
this._openPreferences("sync");
this._openPreferences("sync", { origin: "doorhanger" });
}
AlertsService.showAlertNotification(null, title, body, true, null, clickCallback);
},
@ -2293,7 +2293,7 @@ BrowserGlue.prototype = {
let clickCallback = (subject, topic, data) => {
if (topic != "alertclickcallback")
return;
this._openPreferences("sync");
this._openPreferences("sync", { origin: "devDisconnectedAlert"});
}
AlertsService.showAlertNotification(null, title, body, true, null, clickCallback);
},

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

@ -158,8 +158,8 @@
<checkbox label="&engine.bookmarks.label;"
accesskey="&engine.bookmarks.accesskey;"
preference="engine.bookmarks"/>
<checkbox label="&engine.passwords.label;"
accesskey="&engine.passwords.accesskey;"
<checkbox label="&engine.logins.label;"
accesskey="&engine.logins.accesskey;"
preference="engine.passwords"/>
</vbox>
<vbox align="start" flex="1">

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

@ -158,8 +158,8 @@
<checkbox label="&engine.bookmarks.label;"
accesskey="&engine.bookmarks.accesskey;"
preference="engine.bookmarks"/>
<checkbox label="&engine.passwords.label;"
accesskey="&engine.passwords.accesskey;"
<checkbox label="&engine.logins.label;"
accesskey="&engine.logins.accesskey;"
preference="engine.passwords"/>
</vbox>
<vbox align="start" flex="1">

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

@ -1460,7 +1460,7 @@
<method name="showSettings">
<body><![CDATA[
BrowserUITelemetry.countSearchSettingsEvent(this.telemetryOrigin);
openPreferences("general-search");
openPreferences("general-search", {origin: "contentSearch"});
// If the preference tab was already selected, the panel doesn't
// close itself automatically.
this.popup.hidePopup();

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

@ -2618,9 +2618,7 @@ var SessionStoreInternal = {
/**
* Updates the label and icon for a <xul:tab> using the data from
* tabData. If the tab being updated happens to be the
* customization mode tab, this function will tell the window's
* CustomizeMode instance about it.
* tabData.
*
* @param tab
* The <xul:tab> to update.
@ -2629,6 +2627,10 @@ var SessionStoreInternal = {
* not supplied, the data will be retrieved from the cache.
*/
updateTabLabelAndIcon(tab, tabData = null) {
if (tab.hasAttribute("customizemode")) {
return;
}
let browser = tab.linkedBrowser;
let win = browser.ownerGlobal;
@ -2648,8 +2650,6 @@ var SessionStoreInternal = {
} else if (activePageData.url != "about:blank") {
win.gBrowser.setInitialTabTitle(tab, activePageData.url);
}
} else if (tab.hasAttribute("customizemode")) {
win.gCustomizeMode.setTab(tab);
}
// Restore the tab icon.
@ -3692,6 +3692,10 @@ var SessionStoreInternal = {
};
}
if (tab.hasAttribute("customizemode")) {
window.gCustomizeMode.setTab(tab);
}
// Update tab label and icon to show something
// while we wait for the messages to be processed.
this.updateTabLabelAndIcon(tab, tabData);

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

@ -126,7 +126,7 @@
label="&translation.options.neverForSite.label;"
accesskey="&translation.options.neverForSite.accesskey;"/>
<xul:menuseparator/>
<xul:menuitem oncommand="openPreferences('paneGeneral');"
<xul:menuitem oncommand="openPreferences('paneGeneral', {origin:'translationInfobar'});"
label="&translation.options.preferences.label;"
accesskey="&translation.options.preferences.accesskey;"/>
<xul:menuitem class="subviewbutton panel-subview-footer"

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

@ -536,7 +536,7 @@ this.UITour = {
return false;
}
window.openPreferences(data.pane);
window.openPreferences(data.pane, { origin: "UITour" });
break;
}

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

@ -0,0 +1,43 @@
# 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/.
addtags = Med lanyut
alreadyhaveacct = Dong itiyo ki Pocket?
continueff = Mede ki Firefox
errorgeneric = Bal otime i kare me temo gwoko i Pocket.
learnmore = Nong ngec mapol
loginnow = Dony iyie
maxtaglength = Lageng me lanyut tye kit 25
mustbeconnected = Myero kong i kube i intanet wek i gwoki i Pocket. Tim ber i rot kube mamegi kadong i tem doki.
onlylinkssaved = Ki gwoko kakube keken
pagenotsaved = Potbuk pe ononge
pageremoved = Kikwanyo potbuk woko
pagesaved = Kigwoko i Pocket
processingremove = Tye ka kwanyo potbuk…
processingtags = Tye ka medo lanyut…
removepage = Kwany potbuk
save = Gwoki
saving = Tye ka gwoko…
signupemail = Cone ki email
signuptosave = Cone pi Pocket. Tye me nono.
suggestedtags = Tam amia pi lanyut
tagline = Gwok coc akwana ki vidio ki i Firefox me anena i Pocket i nyonyo mo keken, cawa mo keken.
taglinestory_one = Dii mapeca me Pocket me gwoko coc akwana, vidio onyo potbuk mo keken ki i Firefox.
taglinestory_two = Nen i Pocket ki i nyonyo mo keken, cawa mo keken.
tagssaved = Kimedo lanyut
tos = Mede anyim, nyuto ni i yee <a href="%1$S" target="_blank">Cik me tic</a> ki <a href="%2$S" target="_blank">Cik me mung pa Pocket</a>
tryitnow = Tem kombedi
signinfirefox = Dony iyie ki Firefox
signupfirefox = Cone ki Firefox
viewlist = Nen nying
# LOCALIZATION NOTE(pocket-button.label, pocket-button.tooltiptext, saveToPocketCmd.label, saveLinkToPocketCmd.label, pocketMenuitem.label):
# "Pocket" is a brand name.
pocket-button.label = Pocket
pocket-button.tooltiptext = Gwok i Pocket
saveToPocketCmd.label = Gwok potbuk i Pocket
saveToPocketCmd.accesskey = k
saveLinkToPocketCmd.label = Gwok kakube i Pocket
saveLinkToPocketCmd.accesskey = o
pocketMenuitem.label = Nen nying ma i Pocket

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

@ -0,0 +1,43 @@
# 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/.
addtags = أضف وسومًا
alreadyhaveacct = هل تستخدم Pocket؟
continueff = أكمل مع فَيَرفُكس
errorgeneric = حدث عطل أثناء محاولة الحفظ في Pocket.
learnmore = اطّلع على المزيد
loginnow = لِج
maxtaglength = أقصى طول للوسم ٢٥ حرفًا
mustbeconnected = يجب أن تكون متصلًا بالإنترنت للحفظ في Pocket. رجاء راجع اتصالك ثم أعِد المحاولة.
onlylinkssaved = لا يمكن حفظ إلا الوصلات
pagenotsaved = لم تُحفظ الصفحة
pageremoved = أزِيلت الصفحة
pagesaved = حُفِظت في Pocket
processingremove = يُزيل الصفحة…
processingtags = يضيف الوسوم…
removepage = أزِل الصفحة
save = احفظ
saving = يحفظ…
signupemail = سجّل بالبريد الإلكتروني
signuptosave = سجل في Pocket. مجانًا.
suggestedtags = الوسوم المقترحة
tagline = احفظ المقالات و الڤديو من فَيَرفُكس لعرضهم في Pocket على أي جهاز و في أي وقت.
taglinestory_one = انقر على زر Pocket لحفظ أي مقالة أو ڤديو أو صفحة من فَيَرفُكس.
taglinestory_two = اعرض في Pocket على أي جهاز في أي وقت.
tagssaved = أُضيفت الوسوم
tos = الاستمرار يعني موافقتك على <a href="%1$S" target="_blank">شروط خدمة</a> بوكِت و <a href="%2$S" target="_blank">سياسة الخصوصية</a>
tryitnow = جرّبه الآن
signinfirefox = لِج بفَيَرفُكس
signupfirefox = سجّل بفَيَرفُكس
viewlist = اعرض القائمة
# LOCALIZATION NOTE(pocket-button.label, pocket-button.tooltiptext, saveToPocketCmd.label, saveLinkToPocketCmd.label, pocketMenuitem.label):
# "Pocket" is a brand name.
pocket-button.label = Pocket
pocket-button.tooltiptext = احفظ في Pocket
saveToPocketCmd.label = احفظ الصفحة في Pocket
saveToPocketCmd.accesskey = ت
saveLinkToPocketCmd.label = احفظ الوصلة في Pocket
saveLinkToPocketCmd.accesskey = ص
pocketMenuitem.label = اعرض قائمة Pocket

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

@ -0,0 +1,43 @@
# 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/.
addtags = Дадаць тэгі
alreadyhaveacct = Ужо карыстальнік Pocket?
continueff = Працягнуць з Firefox
errorgeneric = Узнікла памылка пры спробе захаваць у Pocket.
learnmore = Даведацца больш
loginnow = Увайсці
maxtaglength = Тэгі абмежаваныя 25 сімваламі
mustbeconnected = Вы мусіце быць падключанымі да Інтэрнэту, каб захаваць у Pocket. Калі ласка, праверце злучэнне і паспрабуйце зноў.
onlylinkssaved = Можна захаваць толькі спасылкі
pagenotsaved = Старонка не захавана
pageremoved = Старонка выдалена
pagesaved = Захавана ў Pocket
processingremove = Выдаленне старонкі…
processingtags = Даданне тэгаў…
removepage = Выдаліць старонку
save = Захаваць
saving = Захаванне…
signupemail = Зарэгістравацца праз электронную пошту
signuptosave = Зарэгістравацца ў Pocket. Гэта бясплатна.
suggestedtags = Прапанаваныя тэгі
tagline = Захоўвайце артыкулы і відэа з Firefox, каб глядзець іх у Pocket на любой прыладзе, у любы час.
taglinestory_one = Націсніце кнопку Pocket, каб запісаць любы артыкул, відэа ці старонку з Firefox.
taglinestory_two = Праглядайце ў Pocket на любой прыладзе, у любы час.
tagssaved = Тэгі дададзены
tos = Працягваючы, вы згаджаецеся з <a href="%1$S" target="_blank">Умовамі абслугоўвання</a> і <a href="%2$S" target="_blank">Палітыкай прыватнасці</a> Pocket
tryitnow = Паспрабуйце зараз
signinfirefox = Увайсці праз Firefox
signupfirefox = Рэгістрацыя праз Firefox
viewlist = Паглядзець спіс
# LOCALIZATION NOTE(pocket-button.label, pocket-button.tooltiptext, saveToPocketCmd.label, saveLinkToPocketCmd.label, pocketMenuitem.label):
# "Pocket" is a brand name.
pocket-button.label = Pocket
pocket-button.tooltiptext = Запісаць у Pocket
saveToPocketCmd.label = Запісаць старонку ў Pocket
saveToPocketCmd.accesskey = k
saveLinkToPocketCmd.label = Запісаць спасылку ў Pocket
saveLinkToPocketCmd.accesskey = o
pocketMenuitem.label = Паглядзець спіс Pocket

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

@ -2,13 +2,13 @@
# 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/.
addtags = ট্যাগ যোগ করুন
alreadyhaveacct = আপনি Pocket ব্যবহার করছেন?
continueff = Firefox ব্যবহার চালিয়ে যান
addtags = ট্যাগসমূহ যোগ করুন
alreadyhaveacct = আপনি কি একজন Pocket ব্যবহারকারী?
continueff = Firefox এর সাথে চালিয়ে যান
errorgeneric = Pocket এ সংরক্ষণ করতে ত্রুটি ঘটেছে।
learnmore = আরও জানুন
loginnow = লগ ইন
maxtaglength = ট্যাগ ২৫ অক্ষরের মধ্যে সীমাবদ্ধ
maxtaglength = ট্যাগ সমূহ 25 অক্ষরের মধ্যে সীমাবদ্ধ
mustbeconnected = Pocket এ কোন কিছু সংরক্ষণ করে রাখতে চাইলে, ইন্টারনেটে সংযুক্ত থাকতে হবে। ইন্টারনেট সংযোগ পরীক্ষা করুন এবং আবার চেষ্টা করুন।
onlylinkssaved = শুধু লিঙ্ক সংরক্ষণ করা যাবে
pagenotsaved = পাতা সংরক্ষণ করা হয়নি
@ -38,6 +38,6 @@ pocket-button.label = Pocket
pocket-button.tooltiptext = Pocket এ সংরক্ষণ করুন
saveToPocketCmd.label = Pocket এ পাতাটি সংরক্ষণ করুন k
saveToPocketCmd.accesskey = k
saveLinkToPocketCmd.label = Pocket এ লিঙ্কটি সংরক্ষণ করুন o
saveLinkToPocketCmd.label = Pocket এ লিঙ্কটি সংরক্ষণ করুন
saveLinkToPocketCmd.accesskey = o
pocketMenuitem.label = Pocket তালিকা দেখুন

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

@ -3,14 +3,14 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
addtags = Přidat štítky
alreadyhaveacct = Jste již uživatel služby Pocket?
continueff = Pokračovat pomocí Firefoxu
alreadyhaveacct = Používáte už službu Pocket?
continueff = Pokračovat s Firefoxem
errorgeneric = Při pokusu o uložení do služby Pocket došlo k chybě.
learnmore = Zjistit více
loginnow = Přihlásit se
loginnow = Přihlaste se
maxtaglength = Štítky jsou omezeny na 25 znaků
mustbeconnected = Abyste mohli ukládat do služby Pocket, musíte být připojeni k internetu. Zkontrolujte prosím své připojení a zkuste to znovu.
onlylinkssaved = Pouze odkazy mohou být uloženy
onlylinkssaved = Ukládat můžete jenom odkazy
pagenotsaved = Stránka nebyla uložena
pageremoved = Stránka byla odstraněna
pagesaved = Uloženo do služby Pocket
@ -26,10 +26,10 @@ tagline = Ukládejte si články a videa z Firefoxu pro zobrazení ve službě P
taglinestory_one = Klepněte na tlačítko služby Pocket pro uložení jakéhokoliv článku, videa nebo stránky přímo z Firefoxu.
taglinestory_two = Zobrazení ve službě Pocket kdykoliv a na jakémkoliv zařízení.
tagssaved = Štítky přidány
tos = Pokračování souhlasíte s <a href="%1$S" target="_blank">Podmínkami služby</a> Pocket a <a href="%2$S" target="_blank">Zásadami ochrany osobních údajů</a>
tos = Pokračováním souhlasíte s <a href="%1$S" target="_blank">Podmínkami služby</a> Pocket a <a href="%2$S" target="_blank">Zásadami ochrany osobních údajů</a>
tryitnow = Vyzkoušejte nyní
signinfirefox = Přihlášení ve Firefoxu
signupfirefox = Registrace ve Firefoxu
signinfirefox = Přihlásit se účtem Firefoxu
signupfirefox = Registrace s účtem Firefoxu
viewlist = Zobrazit seznam
# LOCALIZATION NOTE(pocket-button.label, pocket-button.tooltiptext, saveToPocketCmd.label, saveLinkToPocketCmd.label, pocketMenuitem.label):

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

@ -0,0 +1,43 @@
# 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/.
addtags = Ychwanegu Tagiau
alreadyhaveacct = Eisoes yn ddefnyddiwr Pocket?
continueff = Parhau gyda Firefox
errorgeneric = Bu gwall wrth geisio cadw i Pocket.
learnmore = Dysgu Rhagor
loginnow = Mewngofnodi
maxtaglength = Mae tagiau wedi eu cyfyngu i 25 nod
mustbeconnected = Rhaid eich bod wedi cysylltu i'r rhyngrwyd i gadw i Pocket. Gwiriwch eich cysylltiad a cheisiwch eto.
onlylinkssaved = Dim ond dolenni y mae modd eu cadw
pagenotsaved = Heb Gadw'r Dudalen
pageremoved = Tudalen wedi ei Thynnu
pagesaved = Cadwyd i Pocket
processingremove = Tynnu Tudalen…
processingtags = Ychwanegu tagiau…
removepage = Tynnu Tudalen
save = Cadw
saving = Cadw…
signupemail = Ymunwch drwy e-bost
signuptosave = Ymunwch â Pocket. Mae am ddim.
suggestedtags = Awgrymiadau o Dagiau
tagline = Cadw erthyglau a fideos o Firefox i'w gweld yn Pocket ar unrhyw ddyfais, ar unrhyw adeg.
taglinestory_one = Cliciwch Fotwm Pocket i gadw unrhyw erthygl, fideo neu dudalen o Firefox.
taglinestory_two = Gweld yn Pocket ar unrhyw ddyfais, ar unrhyw adeg.
tagssaved = Tagiau Ychwanegwyd
tos = Drwy barhau, rydych yn cytuno i <a href="%1$S" target="_blank">Delerau Gwasanaeth</a> a <a href="%2$S" target="_blank">Pholisi Preifatrwydd</a> Pocket
tryitnow = Rhowch Gynnig Arno
signinfirefox = Mewngofnodi gyda Firefox
signupfirefox = Ymuno drwy Firefox
viewlist = Gweld Rhestr
# LOCALIZATION NOTE(pocket-button.label, pocket-button.tooltiptext, saveToPocketCmd.label, saveLinkToPocketCmd.label, pocketMenuitem.label):
# "Pocket" is a brand name.
pocket-button.label = Pocket
pocket-button.tooltiptext = Cadw i Pocket
saveToPocketCmd.label = Cadw Tudalen i Pocket
saveToPocketCmd.accesskey = k
saveLinkToPocketCmd.label = Cadw Dolen i Pocket
saveLinkToPocketCmd.accesskey = i
pocketMenuitem.label = Edrych ar Rhestr Pocket

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

@ -0,0 +1,43 @@
# 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/.
addtags = Cuir Clibeanna Leis
alreadyhaveacct = An úsáideoir Pocket thú cheana?
continueff = Lean ort le Firefox
errorgeneric = Tharla earráid le linn na sábhála i bPocket.
learnmore = Tuilleadh Eolais
loginnow = Logáil isteach
maxtaglength = Ní cheadaítear níos mó ná 25 carachtar i gclib
mustbeconnected = Ní mór duit a bheith ceangailte leis an Idirlíon le nithe a shábháil i bPocket. Athnuaigh do cheangal agus bain triail eile as.
onlylinkssaved = Ní féidir ach nascanna a shábháil
pagenotsaved = Níor Sábháladh an Leathanach
pageremoved = Baineadh an Leathanach
pagesaved = Sábháilte i bPocket
processingremove = Leathanach á Bhaint…
processingtags = Clibeanna á gcur leis…
removepage = Bain Leathanach
save = Sábháil
saving = Á Sábháil…
signupemail = Cláraigh le do sheoladh ríomhphoist
signuptosave = Cláraigh le Pocket. Tá sé saor in aisce.
suggestedtags = Clibeanna Molta
tagline = Sábháil ailt agus físeáin ó Firefox chun breathnú orthu i bPocket ar aon ghléas, am ar bith.
taglinestory_one = Cliceáil an cnaipe Pocket chun aon alt, físeán, nó leathanach a shábháil ó Firefox.
taglinestory_two = Féach orthu i bPocket ar aon ghléas, am ar bith.
tagssaved = Clibeanna curtha leis
tos = Má théann tú ar aghaidh, is deimhniú é sin go nglacann tú le <a href="%1$S" target="_blank">Téarmaí Seirbhíse</a> agus <a href="%2$S" target="_blank">Polasaí Príobháideachais</a> Pocket
tryitnow = Bain Triail As
signinfirefox = Logáil isteach le Firefox
signupfirefox = Cláraigh trí Firefox
viewlist = Féach ar an Liosta
# LOCALIZATION NOTE(pocket-button.label, pocket-button.tooltiptext, saveToPocketCmd.label, saveLinkToPocketCmd.label, pocketMenuitem.label):
# "Pocket" is a brand name.
pocket-button.label = Pocket
pocket-button.tooltiptext = Sábháil i bPocket
saveToPocketCmd.label = Sábháil an Leathanach i bPocket
saveToPocketCmd.accesskey = k
saveLinkToPocketCmd.label = Sábháil an Nasc i bPocket
saveLinkToPocketCmd.accesskey = o
pocketMenuitem.label = Féach ar an Liosta Pocket

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

@ -0,0 +1,43 @@
# 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/.
addtags = Ավելացնել պիտակներ
alreadyhaveacct = Արդեն Pocket օգտվո՞ղ եք:
continueff = Շարունակել Firefox-ով
errorgeneric = Սխալ՝ Pocket-ում պահպանելիս:
learnmore = Իմանալ ավելին
loginnow = Մուտք գործել
maxtaglength = Պիտակը սահմանափակված է 25 գրանշանով
mustbeconnected = Պետք է մուտք ունենաք համացանց՝ պահելու համար Pocket-ում: Ստուգեք կապը և կրկին փորձեք:
onlylinkssaved = Միայն հղումները կարող են պահվել
pagenotsaved = Էջը չի պահպանվել
pageremoved = Էջը հեռացված է
pagesaved = Պահպանված է Pocket-ում
processingremove = Էջը հեռացվում է…
processingtags = Պիտակների հավելում…
removepage = Հեռացնել Էջը
save = Պահպանել
saving = Պահպանում...
signupemail = Մուտք գործել էլ. փոստով
signuptosave = Գրանցվեք Pocket-ի համար: Անվճար է:
suggestedtags = Առաջարկվող պիտակներ
tagline = Պահպանեք հոդվածներ և տեսանյութեր Firefox-ից՝ դրանք հետագայում ցանկացած սարքից, ցանկացած ժամանակ Pocket-ում դիտելու համար:
taglinestory_one = Սեղմեք Pocket կոճակը՝ պահպանելու համար Firefox-ից ցանկացած հոդված, տեսանյութ կամ էջ:
taglinestory_two = Դիտեք Pocket-ում ցանկացած սարքից, ցանկացած ժամանակ:
tagssaved = Պիտակները ավելացվել են
tos = Շարունակելով դուք ընդունում եք Pocket-ի <a href="%1$S" target="_blank">Ծառայության պայմանները</a> և<a href="%2$S" target="_blank">Գաղտնիության քաղաքականությունը</a>
tryitnow = Փորձեք այն հիմա
signinfirefox = Մուտք գործել Firefox-ով
signupfirefox = Գրանցվել Firefox-ով
viewlist = Դիտել ցանկը
# LOCALIZATION NOTE(pocket-button.label, pocket-button.tooltiptext, saveToPocketCmd.label, saveLinkToPocketCmd.label, pocketMenuitem.label):
# "Pocket" is a brand name.
pocket-button.label = Pocket
pocket-button.tooltiptext = Պապանել Pocket-ում
saveToPocketCmd.label = Պահպանել էջը Pocket-ում
saveToPocketCmd.accesskey = k
saveLinkToPocketCmd.label = Պահել էջը Pocket-ում
saveLinkToPocketCmd.accesskey = P
pocketMenuitem.label = Դիտել Pocket-ի ցանկը

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

@ -0,0 +1,43 @@
# 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/.
addtags = Tambahkan Tag
alreadyhaveacct = Sudah menjadi pengguna Pocket?
continueff = Lanjutkan dengan Firefox
errorgeneric = Terjadi kesalahan saat mencoba menyimpan ke Pocket.
learnmore = Lebih Lanjut
loginnow = Masuk
maxtaglength = Panjang karakter maksimum tag adalah 25 karakter
mustbeconnected = Anda harus tersambung ke Internet untuk menyimpan ke Pocket. Periksa sambungan Anda lalu coba lagi.
onlylinkssaved = Hanya tautan yang dapat disimpan
pagenotsaved = Laman Tidak Disimpan
pageremoved = Laman Dihapus
pagesaved = Disimpan di Pocket
processingremove = Menghapus Laman…
processingtags = Menambahkan tag…
removepage = Hapus Laman
save = Simpan
saving = Menyimpan…
signupemail = Daftar dengan email
signuptosave = Daftar ke Pocket. Gratis.
suggestedtags = Saran Tag
tagline = Simpan artikel dan video dari Firefox untuk melihatnya lewat Pocket di berbagai perangkat, kapan saja.
taglinestory_one = Klik Tombol Pocket untuk menyimpan artikel, video, atau laman apa saja dari Firefox.
taglinestory_two = Tampilkan lewat Pocket di berbagai perangkat, kapan saja.
tagssaved = Tag Ditambahkan
tos = Dengan melanjutkan, Anda menyetujui <a href="%1$S" target="_blank">Persyaratan Layanan</a> dan <a href="%2$S" target="_blank">Kebijakan Privacy</a> dari Pocket
tryitnow = Coba Sekarang
signinfirefox = Masuk ke Firefox
signupfirefox = Daftar ke Firefox
viewlist = Tampilkan Daftar
# LOCALIZATION NOTE(pocket-button.label, pocket-button.tooltiptext, saveToPocketCmd.label, saveLinkToPocketCmd.label, pocketMenuitem.label):
# "Pocket" is a brand name.
pocket-button.label = Pocket
pocket-button.tooltiptext = Simpan ke Pocket
saveToPocketCmd.label = Simpan Laman ke Pocket
saveToPocketCmd.accesskey = k
saveLinkToPocketCmd.label = Simpan Tautan ke Pocket
saveLinkToPocketCmd.accesskey = o
pocketMenuitem.label = Tampilkan Daftar Pocket

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

@ -14,9 +14,13 @@
#define es_ES es-ES
#define es_MX es-MX
#define fy_NL fy-NL
#define ga_IE ga-IE
#define gu_IN gu-IN
#define hi_IN hi-IN
#define hy_AM hy-AM
#define nb_NO nb-NO
#define nn_NO nn-NO
#define pa_IN pa-IN
#define pt_BR pt-BR
#define pt_PT pt-PT
#define sv_SE sv-SE
@ -28,7 +32,7 @@
# For locales we support, include the file from the locale's directory in the
# source tree.
# For other locales (and en-US) fallback to the en-US directory.
#if AB_CD == ast || AB_CD == az || AB_CD == bg || AB_CD == bn_BD || AB_CD == bn_IN || AB_CD == cs || AB_CD == da || AB_CD == de || AB_CD == dsb || AB_CD == en_GB || AB_CD == en_US || AB_CD == es_AR || AB_CD == es_CL || AB_CD == es_ES || AB_CD == es_MX || AB_CD == el || AB_CD == eo || AB_CD == et || AB_CD == fa || AB_CD == fi || AB_CD == ff || AB_CD == fr || AB_CD == fy_NL || AB_CD == gd || AB_CD == gu_IN || AB_CD == he || AB_CD == hi_IN || AB_CD == hr || AB_CD == hsb || AB_CD == hu || AB_CD == it || AB_CD == ja || AB_CD == ka || AB_CD == kab || AB_CD == ko || AB_CD == lt || AB_CD == lv || AB_CD == mr || AB_CD == ms || AB_CD == nl || AB_CD == nn_NO || AB_CD == or || AB_CD == pl || AB_CD == pt_BR || AB_CD == pt_PT || AB_CD == rm || AB_CD == ro || AB_CD == ru || AB_CD == sk || AB_CD == sl || AB_CD == sq || AB_CD == sr || AB_CD == sv_SE || AB_CD == te || AB_CD == th || AB_CD == tr || AB_CD == uk || AB_CD == zh_CN || AB_CD == zh_TW
#if AB_CD == ach || AB_CD == ar || AB_CD == ast || AB_CD == az || AB_CD == be || AB_CD == bg || AB_CD == bn_BD || AB_CD == bn_IN || AB_CD == cs || AB_CD == cy || AB_CD == da || AB_CD == de || AB_CD == dsb || AB_CD == el || AB_CD == en_GB || AB_CD == en_US || AB_CD == eo || AB_CD == es_AR || AB_CD == es_CL || AB_CD == es_ES || AB_CD == es_MX || AB_CD == et || AB_CD == fa || AB_CD == ff || AB_CD == fi || AB_CD == fr || AB_CD == fy_NL || AB_CD == ga_IE || AB_CD == gd || AB_CD == gu_IN || AB_CD == he || AB_CD == hi_IN || AB_CD == hr || AB_CD == hsb || AB_CD == hu || AB_CD == hy_AM || AB_CD == id || AB_CD == it || AB_CD == ja || AB_CD == ka || AB_CD == kab || AB_CD == kk || AB_CD == km || AB_CD == ko || AB_CD == lij || AB_CD == lt || AB_CD == lv || AB_CD == mr || AB_CD == ms || AB_CD == nb_NO || AB_CD == nl || AB_CD == nn_NO || AB_CD == or || AB_CD == pa_IN || AB_CD == pl || AB_CD == pt_BR || AB_CD == pt_PT || AB_CD == rm || AB_CD == ro || AB_CD == ru || AB_CD == sk || AB_CD == sl || AB_CD == sq || AB_CD == sr || AB_CD == sv_SE || AB_CD == te || AB_CD == th || AB_CD == tl || AB_CD == tr || AB_CD == uk || AB_CD == zh_CN || AB_CD == zh_TW
locale/@AB_CD@/ (@AB_CD@/*)
#else
locale/@AB_CD@/ (en-US/*)

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

@ -0,0 +1,43 @@
# 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/.
addtags = Тегтерді қосу
alreadyhaveacct = Pocket пайдаланушысыз ба?
continueff = Firefox көмегімен жалғастыру
errorgeneric = Pocket-ке сақтау талабы кезінде қате орын алды.
learnmore = Көбірек білу
loginnow = Кіру
maxtaglength = Тег 25 таңбамен шектелген
mustbeconnected = Pocket-ке сақтау үшін интернетпен байланыс болу тиіс. Байланысты тексеріп, қайталап көріңіз.
onlylinkssaved = Тек сілтемелерді сақтауға болады
pagenotsaved = Парақ сақталмаған
pageremoved = Парақ өшірілді
pagesaved = Pocket-ке сақталды
processingremove = Парақты өшіру…
processingtags = Тегтерді қосу…
removepage = Парақты өшіру
save = Сақтау
saving = Сақтау…
signupemail = Эл. поштамен кіру
signuptosave = Pocket-те тіркелгіні жасау. Бұл - тегін.
suggestedtags = Ұсынылатын тегтер
tagline = Firefox-тан мақалаларды және видеоларды Pocket-те кез-келген құрылғыда және уақытта қарай алу үшін сақтаңыз.
taglinestory_one = Firefox-тан кез-келген мақала, видео немесе парақты сақтау үшін Pocket батырмасына басыңыз.
taglinestory_two = Pocket-те кез-келген құрылғыда және уақытта қарай аласыз.
tagssaved = Тегтер қосылды
tos = Жалғастыратын болсаңыз, сіз Pocket-тің <a href="%1$S" target="_blank">Пайдалану шарттары</a> және<a href="%2$S" target="_blank">Жекелік саясатымен</a> келісесіз
tryitnow = Қолданып көру
signinfirefox = Firefox-пен кіру
signupfirefox = Firefox-пен тіркелу
viewlist = Тізімді қарау
# LOCALIZATION NOTE(pocket-button.label, pocket-button.tooltiptext, saveToPocketCmd.label, saveLinkToPocketCmd.label, pocketMenuitem.label):
# "Pocket" is a brand name.
pocket-button.label = Pocket
pocket-button.tooltiptext = Pocket-ке сақтау
saveToPocketCmd.label = Бетті Pocket-ке сақтау
saveToPocketCmd.accesskey = с
saveLinkToPocketCmd.label = Сілтемені Pocket-ке сақтау
saveLinkToPocketCmd.accesskey = т
pocketMenuitem.label = Pocket тізімін қарау

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

@ -0,0 +1,43 @@
# 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/.
addtags = បន្ថែម​ស្លាក
alreadyhaveacct = ជា​អ្នក​ប្រើប្រាស់ Pocket ហើយ?
continueff = បន្ត​ជាមួយ Firefox
errorgeneric = មាន​កំហុស ពេល​ព្យាយាម​រក្សាទុក​ទៅ​កាន់​ Pocket។
learnmore = ស្វែងយល់​​បន្ថែម
loginnow = ចូល
maxtaglength = ស្លាក​ត្រូវ​បាន​កំណត់​ត្រឹមតែ 25 តួ​អក្សរ
mustbeconnected = អ្នកត្រូវតែ​ភ្ជាប់​អ៊ីនធឺណែត ដើម្បី​រក្សាទុកទៅ Pocket។ សូម​ពិនិត្យ​ការភ្ជាប់របស់​អ្នក និង​ព្យាយាម​ម្តង​ទៀត។​
onlylinkssaved = អាច​រក្សាទុក​បាន​តែ​តំណភ្ជាប់​ប៉ុណ្ណោះ
pagenotsaved = ទំព័រ​មិន​ត្រូវបាន​រក្សាទុក
pageremoved = ទំព័រ​ត្រូវ​បាន​លុបចោល
pagesaved = បាន​រក្សាទុក​ទៅ Pocket
processingremove = កំពុង​លុប​ទំព័រ…
processingtags = កំពុង​បន្ថែម​ស្លាក...
removepage = លុប​ទំព័រ
save = រក្សាទុក​
saving = កំពុង​រក្សាទុក…
signupemail = ចុះឈ្មោះ​​ដោយ​ប្រើ​​អ៊ីមែល
signuptosave = ចុះឈ្មោះ​គណនី Pocket ដោយ​មិន​គិត​ប្រាក់។
suggestedtags = ស្លាកដែល​បាន​ណែនាំ
tagline = រក្សាទុក​អត្ថបទ​ និង​វីដេអូពី​ Firefox ដើម្បីមើល​នៅក្នុង Pocket សម្រាប់​​គ្រប់​ឧបករណ៍ ​និងគ្រប់ពេល។​
taglinestory_one = ចុច​​ប៊ូតុង Pocket ដើម្បីរក្សា​ទុក​អត្ថបទ វីដេអូ ឬ​ទំព័រ​ពី Firefox។
taglinestory_two = មើល​ក្នុង Pocket សម្រាប់​គ្រប់ឧបករណ៍ និង​គ្រប់ពេល។​
tagssaved = បាន​បន្ថែម​ស្លាក
tos = ដើម្បីបន្ត អ្នកត្រូវយល់ព្រមលើកម្រង’<a href="%1$S" target="_blank">រយៈកាលនៃសេវាកម្ម​ </a> និង<a href="%2$S" target="_blank">គោលការណ៍ឯកជនភាព</a>
tryitnow = សាកល្បងវាឥឡូវនេះ
signinfirefox = ចូល​ជាមួយ Firefox
signupfirefox = ចុះឈ្មោះជាមួយ Firefox
viewlist = មើលបញ្ជី
# LOCALIZATION NOTE(pocket-button.label, pocket-button.tooltiptext, saveToPocketCmd.label, saveLinkToPocketCmd.label, pocketMenuitem.label):
# "Pocket" is a brand name.
pocket-button.label = Pocket
pocket-button.tooltiptext = រក្សាទុក​ទៅ Pocket
saveToPocketCmd.label = រក្សាទុក​ទំព័រ​ទៅ Pocket
saveToPocketCmd.accesskey = k
saveLinkToPocketCmd.label = រក្សាទុក​តំណ​ទៅ​ក្នុង Pocket
saveLinkToPocketCmd.accesskey = o
pocketMenuitem.label = មើល​បញ្ជី Pocket

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

@ -0,0 +1,43 @@
# 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/.
addtags = Azonzi etichette
alreadyhaveacct = Ti gh'æ za 'n account registrou in sce Pocket?
continueff = Vanni avanti con Firefox
errorgeneric = Gh'æ stæto 'n'erô into sarvâ in Pocket.
learnmore = Atre informaçioin
loginnow = Açendi
maxtaglength = A longhessa mascima pe-e etichette a l'é de 25 carateri
mustbeconnected = Ti devi ese conesso a l'Internet pe sarvâ in Pocket. Verifica a conescion e preuva torna.
onlylinkssaved = Ti peu solo sarvâ colegamenti
pagenotsaved = Pagina no atrovâ
pageremoved = Pagina scancelâ
pagesaved = Sarvâ in Pocket
processingremove = Scancello a pagina…
processingtags = Sarvo e etichette…
removepage = Scancella pagina
save = Sarva
saving = Son apreuvo a sarvâ…
signupemail = Acedi con l'email
signuptosave = Registrate in sce Pocket. L'é de badda.
suggestedtags = Etichete consigiæ
tagline = Sarva articoli e video da Firefox pe veddile in sce Pocket da qualonque dispoxitivo e in qualonque momento.
taglinestory_one = Sciacca o pomello Pocket pe sarvâ qualonque articolo, video ò pagina da Firefox.
taglinestory_two = Veddi in Pocket da qualonque dispoxitivo e in qualonque momento.
tagssaved = Azonte etichette
tos = Se ti continoi ti acetti i <a href="%1$S" target="_blank">Termini do serviççio</a> e-a <a href="%2$S" target="_blank">Politica da Privacy</a>
tryitnow = Preuvilo oua
signinfirefox = Acedi con Firefox
signupfirefox = Registrate con Firefox
viewlist = Veddi elenco
# LOCALIZATION NOTE(pocket-button.label, pocket-button.tooltiptext, saveToPocketCmd.label, saveLinkToPocketCmd.label, pocketMenuitem.label):
# "Pocket" is a brand name.
pocket-button.label = Pocket
pocket-button.tooltiptext = Sarva in Pocket
saveToPocketCmd.label = Sarva pagina in Pocket
saveToPocketCmd.accesskey = k
saveLinkToPocketCmd.label = Sarva colegamento in Pocket
saveLinkToPocketCmd.accesskey = o
pocketMenuitem.label = Fanni vedde elenco Pocket

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

@ -14,7 +14,7 @@ onlylinkssaved = Išsaugoti galima tik nuorodas
pagenotsaved = Tinklalapis neišsaugotas
pageremoved = Tinklalapis pašalintas
pagesaved = Išsaugota į „Pocket“
processingremove = Šalinamas tinklalapis…
processingremove = Tinklalapis šalinamas…
processingtags = Pridedamos gairės…
removepage = Pašalinti tinklalapį
save = Išsaugoti

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

@ -0,0 +1,43 @@
# 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/.
addtags = Legg til etiketter
alreadyhaveacct = Allerede en Pocket-bruker?
continueff = Fortsett med Firefox
errorgeneric = Et problem oppstod ved lagring til Pocket.
learnmore = Les mer
loginnow = Logg inn
maxtaglength = Etiketter er begrenset til 25 tegn
mustbeconnected = Du må være koblet til nettet for å lagre til Pocket. Kontroller tilkoblingen og prøv igjen.
onlylinkssaved = Bare lenker kan lagres
pagenotsaved = Side ikke lagret
pageremoved = Side fjernet
pagesaved = Lagret til Pocket
processingremove = Fjerner side …
processingtags = Legger til side …
removepage = Fjern side
save = Lagre
saving = Lagrer …
signupemail = Logg inn med e-postadresse
signuptosave = Registrer deg i Pocket. Det er gratis.
suggestedtags = Foreslåtte etiketter
tagline = Lagre artikler og videoer fra Firefox for å vise dem i Pocket på hvilken som helst enhet, når som helst.
taglinestory_one = Trykk på Pocket-knappen for å lagre hvilken som helst artikkel, video eller side fra Firefox.
taglinestory_two = Vis i Pocket på hvilken som helst enhet, når som helst.
tagssaved = Etiketter lagt til
tos = Ved å fortsette, aksepterer du Pocket sine <a href="%1$S" target="_blank">tjenestevilkår</a> og <a href="%2$S" target="_blank">personvernsbestemmelser</a>
tryitnow = Prøv nå
signinfirefox = Logg inn med Firefox
signupfirefox = Registrer deg med Firefox
viewlist = Vis liste
# LOCALIZATION NOTE(pocket-button.label, pocket-button.tooltiptext, saveToPocketCmd.label, saveLinkToPocketCmd.label, pocketMenuitem.label):
# "Pocket" is a brand name.
pocket-button.label = Pocket
pocket-button.tooltiptext = Lagre til Pocket
saveToPocketCmd.label = Lagre siden i Pocket
saveToPocketCmd.accesskey = k
saveLinkToPocketCmd.label = Lagre lenke til Pocket
saveLinkToPocketCmd.accesskey = l
pocketMenuitem.label = Vis Pocket-liste

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

@ -0,0 +1,43 @@
# 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/.
addtags = ਟੈਗ ਨੂੰ ਜੋੜੋ
alreadyhaveacct = ਪਹਿਲਾਂ ਹੀ ਪਾਕੇਟ (Pocket) ਵਰਤੋਂਕਾਰ ਹੋ?
continueff = ਫਾਇਰਫਾਕਸ ਨਾਲ ਜਾਰੀ ਰੱਖੋ
errorgeneric = ਪਾਕੇਟ ਵਿੱਚ ਸੰਭਾਲਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਦੌਰਾਨ ਗਲਤੀ ਸੀ।
learnmore = ਹੋਰ ਜਾਣੋ
loginnow = ਲਾਗਇਨ
maxtaglength = ਟੈਗ 25 ਅੱਖਰਾਂ ਤੱਕ ਸੀਮਿਤ ਹਨ
mustbeconnected = ਪਾਕੇਟ ਵਿੱਚ ਸੰਭਾਲਣ ਲਈ ਤੁਸੀਂ ਇੰਟਰਨੈੱਟ ਨਾਲ ਕਨੈਕਟ ਹੋਣੇ ਚਾਹੀਦੇ ਹੋ। ਆਪਣੇ ਕਨੈਕਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰੋ ਅਤੇ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।
onlylinkssaved = ਕੇਵਲ ਲਿੰਕਾਂ ਨੂੰ ਹੀ ਸੰਭਾਲਿਆ ਜਾ ਸਕਦਾ ਹੈ
pagenotsaved = ਸਫ਼ੇ ਨੂੰ ਨਹੀਂ ਸੰਭਾਲਿਆ ਗਿਆ
pageremoved = ਸਫ਼ੇ ਨੂੰ ਹਟਾਇਆ ਗਿਆ
pagesaved = ਪਾਕੇਟ ਵਿੱਚ ਸੰਭਾਲਿਆ
processingremove = …ਸਫ਼ੇ ਨੂੰ ਹਟਾਇਆ ਜਾ ਰਿਹਾ ਹੈ
processingtags = …ਟੈਗ ਨੂੰ ਜੋੜਿਆ ਜਾ ਰਿਹਾ ਹੈ
removepage = ਸਫ਼ੇ ਨੂੰ ਹਟਾਓ
save = ਸੰਭਾਲੋ
saving = …ਸੰਭਾਲਿਆ ਜਾ ਰਿਹਾ ਹੈ
signupemail = ਈਮੇਲ ਨਾਲ ਸਾਈਨ ਅੱਪ ਕਰੋ
signuptosave = ਪਾਕੇਟ ਲਈ ਸਾਈਨ ਅੱਪ ਕਰੋ। ਇਹ ਮੁਫ਼ਤ ਹੈ।
suggestedtags = ਸੁਝਾਏ ਗਏ ਟੈਗ
tagline = ਫਾਇਰਫਾਕਸ ਤੋਂ ਲੇਖਾਂ ਅਤੇ ਵੀਡੀਓ ਨੂੰ ਪਾਕੇਟ ਵਿੱਚ ਸੰਭਾਲੋ ਤਾਂ ਕਿ ਕਿਸੇ ਵੀ ਡਿਵਾਈਸ, ਕਿਸੇ ਵੀ ਸਮੇਂ ਵੇਖਿਆ ਜਾ ਸਕਦਾ ਹੈ।
taglinestory_one = ਕਿਸੇ ਵੀ ਲੇਖ, ਵੀਡੀਓ ਜਾਂ ਸਫ਼ੇ ਨੂੰ ਫਾਇਰਫਾਕਸ ਤੋਂ ਸੰਭਾਲਣ ਲਈ Pocket ਬਟਨ ਉੱਤੇ ਕਲਿੱਕ ਕਰੋ।
taglinestory_two = ਕਿਸੇ ਵੀ ਡਿਵਾਈਸ, ਕਿਸੇ ਵੀ ਸਮੇਂ ਪਾਕੇਟ ਵਿੱਚ ਦੇਖੋ।
tagssaved = ਟੈਗ ਨੂੰ ਜੋੜਿਆ
tos = ਜਾਰੀ ਰੱਖ ਕੇ ਤੁਸੀਂ ਪਾਕੇਟ ਦੀਆਂ <a href="%1$S" target="_blank">ਸੇਵਾ ਦੀਆਂ ਸ਼ਰਤਾਂ</a> ਅਤੇ <a href="%2$S" target="_blank">ਪਰਦੇਦਾਰੀ ਨੀਤੀ</a> ਨਾਲ ਸਹਿਮਤ ਹੁੰਦੇ ਹੋ
tryitnow = ਹੁਣ ਕੋਸ਼ਿਸ਼ ਕਰੋ
signinfirefox = ਫਾਇਰਫਾਕਸ ਨਾਲ ਸਾਇਨ ਇਨ ਕਰੋ
signupfirefox = ਫਾਇਰਫਾਕਸ ਨਾਲ ਸਾਇਨ ਅੱਪ ਕਰੋ
viewlist = ਸੂਚੀ ਨੂੰ ਵੇਖੋ
# LOCALIZATION NOTE(pocket-button.label, pocket-button.tooltiptext, saveToPocketCmd.label, saveLinkToPocketCmd.label, pocketMenuitem.label):
# "Pocket" is a brand name.
pocket-button.label = Pocket
pocket-button.tooltiptext = Pocket ਵਿੱਚ ਸੰਭਾਲੋ
saveToPocketCmd.label = ਸਫ਼ੇ ਨੂੰ Pocket ਵਿੱਚ ਸੰਭਾਲੋ
saveToPocketCmd.accesskey = k
saveLinkToPocketCmd.label = ਲਿੰਕ ਨੂੰ Pocket ਵਿੱਚ ਸੰਭਾਲੋ
saveLinkToPocketCmd.accesskey = o
pocketMenuitem.label = Pocket ਦੀ ਸੂਚੀ ਦੇਖੋ

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

@ -9,11 +9,11 @@ errorgeneric = Ocorreu um erro ao tentar guardar no Pocket.
learnmore = Saber mais
loginnow = Iniciar sessão
maxtaglength = As etiquetas estão limitadas a 25 caracteres
mustbeconnected = É necessária uma ligação à Internet para poder guardar no Pocket. Por favor, verifique a sua ligação à Internet e tente novamente.
mustbeconnected = É necessária uma ligação à Internet para poder guardar no Pocket. Por favor verifique a sua ligação e tente novamente.
onlylinkssaved = Só podem ser guardadas ligações
pagenotsaved = Página não guardada
pageremoved = Página removida
pagesaved = Guardado no Pocket
pagesaved = Guardada no Pocket
processingremove = A remover página…
processingtags = A adicionar etiquetas…
removepage = Remover página

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

@ -2,9 +2,9 @@
# 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/.
addtags = ాగ్‌లను జోడించు
alreadyhaveacct = ఇప్పటికే ఒక పాకెట్ యూజర్?
continueff = ఫైర్ఫాక్స్ తో కొనసాగించుము
addtags = ్యాగులను చేర్చు
alreadyhaveacct = ఇప్పటికే ఒక పాకెట్ వాడుకరా?
continueff = Firefoxతో కొనసాగించండి
errorgeneric = పాకెట్ కు సేవ్ చేయడానికి ప్రయత్నిస్తున్నప్పుడు లోపం ఉంది.
learnmore = మరింత తెలుసుకోండి
loginnow = లాగ్ ఇన్
@ -17,11 +17,11 @@ pagesaved = పాకెట్ కు సేవ్ చేయబడింది
processingremove = పేజీని తొలగించు…
processingtags = టాగ్లు జోడిస్తోంది...
removepage = పేజీని తొలగించు
save = సేవ్ చేయి
saving = సేవ్ చేస్తోంది...
save = భద్రపరచు
saving = భద్రమవుతోంది…
signupemail = ఇమెయిల్ తో సైన్అప్ అవ్వండ్
signuptosave = పాకెట్ కోసం సైన్ అప్ చేయండి. ఇది ఉచితం.
suggestedtags = సూచించిన టాగ్లు
suggestedtags = సూచించిన ట్యాగులు
tagline = ఏ పరికరం, ఏ సమయం లో పాకెట్ వీక్షించడానికి Firefox నుండి వ్యాసాలు మరియు వీడియోలను సేవ్ చేయవచ్చు.
taglinestory_one = ఫైర్ఫాక్సు నుండి ఒక వ్యాసం, వీడియో లేదా పేజీ సేవ్ పాకెట్ బటన్ క్లిక్ చేయండి.
taglinestory_two = ఏ పరికరంలో అయినా, ఏ సమయంలో అయినా పాకెట్ లో చూడండి.

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

@ -39,5 +39,5 @@ pocket-button.tooltiptext = บันทึกไปยัง Pocket
saveToPocketCmd.label = บันทึกหน้าไปยัง Pocket
saveToPocketCmd.accesskey = k
saveLinkToPocketCmd.label = บันทึกลิงก์ไปยัง Pocket
saveLinkToPocketCmd.accesskey =
saveLinkToPocketCmd.accesskey = o
pocketMenuitem.label = ดูรายการ Pocket

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

@ -0,0 +1,43 @@
# 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/.
addtags = Dagdag na Tab
alreadyhaveacct = Matuto nang higit pa?
continueff = I-pagpatuloy sa firefox
errorgeneric = May pagkakamali nung sinusubukang I-save sa Pocket.
learnmore = Alamin pa
loginnow = Mag-log in
maxtaglength = Tags ay limitado sa 25 characters
mustbeconnected = Dapat ikaw ay konektado sa internet upang ito ay masave sa Pocket. Paki tsek ang iyong koneksyon at subukan uli.
onlylinkssaved = Tanging mga link lamang ay maaaring i-save
pagenotsaved = Pahina ay hindi na I-save
pageremoved = Pahina ay na Tanggal
pagesaved = I-save sa pocket
processingremove = Inaalis ang Pahina…
processingtags = Dinadagdagan ang tanda...
removepage = Alisin ang Pahina
save = I-save
saving = Saving…
signupemail = Mag-sign up gamit ang email
signuptosave = Mag-sign up para sa Pocket. Ito ay libre.
suggestedtags = Iminungkahing Tanda
tagline = I-save ang artikulo at bidyo mula sa Firefox para matingnan sa Pocket sa kahit anong gadyet, ano mang oras.
taglinestory_one = I-click ang Pocket Button para ma-save ang kahit anong artikulo, video o pahina mula sa Firefox.
taglinestory_two = Tingnan sa Pocket sa kahit anong device, ano mang oras.
tagssaved = Tags Naidagdag
tos = Sa pagpapatuloy, ikaw ay sumasang-ayon sa <a href="%1$S" target="_blank">Terms of Service</a> and <a href="%2$S" target="_blank">Privacy Policy</a> ng Pocket
tryitnow = Subukan Ngayon
signinfirefox = Mag-sign in sa Firefox
signupfirefox = Mag-sign up sa Firefox
viewlist = Tingnan ang Listahan
# LOCALIZATION NOTE(pocket-button.label, pocket-button.tooltiptext, saveToPocketCmd.label, saveLinkToPocketCmd.label, pocketMenuitem.label):
# "Pocket" is a brand name.
pocket-button.label = Pocket
pocket-button.tooltiptext = I-save sa Pocket
saveToPocketCmd.label = I-save ang Pahina sa Pocket
saveToPocketCmd.accesskey = k
saveLinkToPocketCmd.label = I-save ang Link sa Pocket
saveLinkToPocketCmd.accesskey = o
pocketMenuitem.label = TIngnan ang Pocket List

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

@ -3,13 +3,13 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
addtags = 添加标签
alreadyhaveacct = 有 Pocket 账号
alreadyhaveacct = 经注册过 Pocket 账户了
continueff = 使用 Firefox 继续
errorgeneric = 尝试保存到 Pocket 时出错。
learnmore = 详细了解
loginnow = 登录
maxtaglength = 标签不能超过 25 个字符
mustbeconnected = 您必须已连接互联网才能保存到 Pocket。请检查您的连接,然后再试。
mustbeconnected = 您必须已连接互联网才能保存到 Pocket。请检查您的网络连接后再试一次
onlylinkssaved = 只有链接能被保存
pagenotsaved = 页面未保存
pageremoved = 页面已移除
@ -26,8 +26,8 @@ tagline = 在 Firefox 上保存文章和视频,以供在任何时间、任何
taglinestory_one = 点击 Pocket 按钮保存 Firefox 上的任何文章、视频或页面。
taglinestory_two = 在任何时间、任何设备上的 Pocket 中查看。
tagssaved = 标签已添加
tos = 继续则表示您同意 Pocket 的<a href="%1$S" target="_blank">服务条款</a>和<a href="%2$S" target="_blank">隐私政策</a>
tryitnow = 立即尝
tos = 继续则表示您同意 Pocket 的<a href="%1$S" target="_blank">服务条款</a>和<a href="%2$S" target="_blank">隐私政策</a>
tryitnow = 现在就试
signinfirefox = 使用 Firefox 登录
signupfirefox = 使用 Firefox 注册
viewlist = 查看列表

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

@ -10,8 +10,8 @@
<!ENTITY engine.tabs.accesskey "T">
<!ENTITY engine.history.label "History">
<!ENTITY engine.history.accesskey "r">
<!ENTITY engine.passwords.label "Passwords">
<!ENTITY engine.passwords.accesskey "P">
<!ENTITY engine.logins.label "Logins">
<!ENTITY engine.logins.accesskey "L">
<!ENTITY engine.prefs.label "Preferences">
<!ENTITY engine.prefs.accesskey "S">
<!ENTITY engine.addons.label "Add-ons">

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

@ -10,8 +10,8 @@
<!ENTITY engine.tabs.accesskey "T">
<!ENTITY engine.history.label "History">
<!ENTITY engine.history.accesskey "r">
<!ENTITY engine.passwords.label "Passwords">
<!ENTITY engine.passwords.accesskey "P">
<!ENTITY engine.logins.label "Logins">
<!ENTITY engine.logins.accesskey "L">
<!ENTITY engine.prefs.label "Preferences">
<!ENTITY engine.prefs.accesskey "S">
<!ENTITY engine.addons.label "Add-ons">

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

@ -138,11 +138,11 @@ var AboutHome = {
break;
case "AboutHome:Sync":
window.openPreferences("paneSync", { urlParams: { entrypoint: "abouthome" } });
window.openPreferences("paneSync", { urlParams: { entrypoint: "abouthome" }, origin: "aboutHome" });
break;
case "AboutHome:Settings":
window.openPreferences();
window.openPreferences(undefined, {origin: "aboutHome"} );
break;
case "AboutHome:RequestUpdate":

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

@ -414,7 +414,7 @@ this.ContentSearch = {
_onMessageManageEngines(msg, data) {
let browserWin = msg.target.ownerGlobal;
browserWin.openPreferences("paneGeneral");
browserWin.openPreferences("paneGeneral", {origin: "contentSearch"});
},
async _onMessageGetSuggestions(msg, data) {

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

@ -201,8 +201,6 @@ AC_DEFUN([MOZ_ANDROID_GOOGLE_PLAY_SERVICES],
[
if test -n "$MOZ_NATIVE_DEVICES" ; then
AC_SUBST(MOZ_NATIVE_DEVICES)
MOZ_ANDROID_AAR(play-services-base, $ANDROID_GOOGLE_PLAY_SERVICES_VERSION, google, com/google/android/gms)
MOZ_ANDROID_AAR(play-services-basement, $ANDROID_GOOGLE_PLAY_SERVICES_VERSION, google, com/google/android/gms)
MOZ_ANDROID_AAR(play-services-cast, $ANDROID_GOOGLE_PLAY_SERVICES_VERSION, google, com/google/android/gms)
@ -227,7 +225,6 @@ AC_DEFUN([MOZ_ANDROID_INSTALL_TRACKING],
[
if test -n "$MOZ_INSTALL_TRACKING"; then
AC_SUBST(MOZ_INSTALL_TRACKING)
MOZ_ANDROID_AAR(play-services-ads, $ANDROID_GOOGLE_PLAY_SERVICES_VERSION, google, com/google/android/gms)
MOZ_ANDROID_AAR(play-services-basement, $ANDROID_GOOGLE_PLAY_SERVICES_VERSION, google, com/google/android/gms)
fi

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

@ -1,117 +0,0 @@
dnl This Source Code Form is subject to the terms of the Mozilla Public
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
AC_DEFUN([MOZ_SUBCONFIGURE_JEMALLOC], [
if test "$MOZ_BUILD_APP" != js -o -n "$JS_STANDALONE"; then
# Run jemalloc configure script
if test -z "$MOZ_SYSTEM_JEMALLOC" -a "$MOZ_MEMORY" && test -n "$MOZ_JEMALLOC4" -o -n "$MOZ_REPLACE_MALLOC"; then
ac_configure_args="--build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_ --disable-valgrind"
if test -n "$MOZ_DEBUG"; then
ac_configure_args="$ac_configure_args --enable-debug"
fi
# We're using memalign for _aligned_malloc in memory/build/mozmemory_wrap.c
# on Windows, so just export memalign on all platforms.
ac_configure_args="$ac_configure_args ac_cv_func_memalign=yes"
if test -n "$MOZ_REPLACE_MALLOC"; then
# When using replace_malloc, we always want valloc exported from jemalloc.
ac_configure_args="$ac_configure_args ac_cv_func_valloc=yes"
if test "${OS_ARCH}" = Darwin; then
# We also need to enable pointer validation on Mac because jemalloc's
# zone allocator is not used.
ac_configure_args="$ac_configure_args --enable-ivsalloc"
fi
fi
if test -n "$MOZ_JEMALLOC4"; then
case "${OS_ARCH}" in
WINNT|Darwin)
# We want jemalloc functions to be kept hidden on both Mac and Windows
# See memory/build/mozmemory_wrap.h for details.
ac_configure_args="$ac_configure_args --without-export"
;;
esac
if test "${OS_ARCH}" = WINNT; then
# Lazy lock initialization doesn't play well with lazy linking of
# mozglue.dll on Windows XP (leads to startup crash), so disable it.
ac_configure_args="$ac_configure_args --disable-lazy-lock"
# 64-bit Windows builds require a minimum 16-byte alignment.
if test -n "$HAVE_64BIT_BUILD"; then
ac_configure_args="$ac_configure_args --with-lg-tiny-min=4"
fi
fi
elif test "${OS_ARCH}" = Darwin; then
# When building as a replace-malloc lib, disabling the zone allocator
# forces to use pthread_atfork.
ac_configure_args="$ac_configure_args --disable-zone-allocator"
fi
_MANGLE="malloc posix_memalign aligned_alloc calloc realloc free memalign valloc malloc_usable_size"
JEMALLOC_WRAPPER=
if test -z "$MOZ_REPLACE_MALLOC"; then
case "$OS_ARCH" in
Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
MANGLE=$_MANGLE
;;
esac
elif test -z "$MOZ_JEMALLOC4"; then
MANGLE=$_MANGLE
JEMALLOC_WRAPPER=replace_
fi
if test -n "$MANGLE"; then
MANGLED=
for mangle in ${MANGLE}; do
if test -n "$MANGLED"; then
MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle,$MANGLED"
else
MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle"
fi
done
ac_configure_args="$ac_configure_args --with-mangling=$MANGLED"
fi
unset CONFIG_FILES
if test -z "$MOZ_TLS"; then
ac_configure_args="$ac_configure_args --disable-tls"
fi
EXTRA_CFLAGS="$CFLAGS"
for var in AS CC CXX CPP AR RANLIB STRIP CPPFLAGS EXTRA_CFLAGS LDFLAGS; do
ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
done
# jemalloc's configure assumes that if you have CFLAGS set at all, you set
# all the flags necessary to configure jemalloc, which is not likely to be
# the case on Windows if someone is building Firefox with flags set in
# their mozconfig.
if test "$_MSC_VER"; then
ac_configure_args="$ac_configure_args CFLAGS="
fi
# Force disable DSS support in jemalloc.
ac_configure_args="$ac_configure_args ac_cv_func_sbrk=false"
# Make Linux builds munmap freed chunks instead of recycling them.
ac_configure_args="$ac_configure_args --enable-munmap"
# Disable cache oblivious behavior that appears to have a performance
# impact on Firefox.
ac_configure_args="$ac_configure_args --disable-cache-oblivious"
if ! test -e memory/jemalloc; then
mkdir -p memory/jemalloc
fi
# jemalloc's configure runs git to determine the version. But when building
# from a gecko git clone, the git commands it uses is going to pick gecko's
# information, not jemalloc's, which is useless. So pretend we don't have git
# at all. That will make jemalloc's configure pick the in-tree VERSION file.
(PATH="$srcdir/memory/jemalloc/helper:$PATH";
AC_OUTPUT_SUBDIRS(memory/jemalloc/src)
) || exit 1
ac_configure_args="$_SUBDIR_CONFIG_ARGS"
fi
fi
])

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

@ -37,10 +37,6 @@ def keyfile(desc, help=None, callback=lambda x: x):
def simple_keyfile(desc):
value = keyfile(desc)
set_config('MOZ_%s_KEY' % desc.upper().replace(' ', '_'), value)
# Only really required for MOZ_ADJUST_SDK_KEY currently still used in
# old-configure.
add_old_configure_assignment('MOZ_%s_KEY' % desc.upper().replace(' ', '_'),
value)
@template

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

@ -5,11 +5,12 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
option(env='MOZ_JEMALLOC4', help='Enable jemalloc 4')
imply_option('--enable-jemalloc', depends_if('MOZ_JEMALLOC4')(lambda x: '4'))
@deprecated_option(env='MOZ_JEMALLOC4')
def moz_jemalloc4(value):
die('MOZ_JEMALLOC4 is deprecated')
option('--enable-jemalloc', nargs='?', choices=('4', 'moz'), env='MOZ_MEMORY',
option('--enable-jemalloc', env='MOZ_MEMORY',
help='Replace memory allocator with jemalloc')
@depends('--enable-jemalloc', target, build_project, c_compiler)
@ -30,36 +31,25 @@ def jemalloc(value, target, build_project, c_compiler):
if target.kernel == 'Linux':
return True
@depends('--enable-jemalloc')
def jemalloc4(jemalloc):
if len(jemalloc) and jemalloc[0] == '4':
return True
set_config('MOZ_MEMORY', jemalloc)
set_define('MOZ_MEMORY', jemalloc)
add_old_configure_assignment('MOZ_MEMORY', jemalloc)
set_config('MOZ_JEMALLOC4', jemalloc4)
set_define('MOZ_JEMALLOC4', jemalloc4)
add_old_configure_assignment('MOZ_JEMALLOC4', jemalloc4)
# Because --enable-jemalloc doesn't use a default because of the dependency
# on the target, we can't use a js_option for it to propagate to js/src
# through the old-configure.
@depends(jemalloc, jemalloc4)
def jemalloc_for_old_configure(jemalloc, jemalloc4):
if jemalloc:
return '--enable-jemalloc=4' if jemalloc4 else '--enable-jemalloc'
return '--disable-jemalloc'
@depends(jemalloc)
def jemalloc_for_old_configure(jemalloc):
return '--%s-jemalloc' % ('enable' if jemalloc else 'disable')
add_old_configure_arg(jemalloc_for_old_configure)
@depends(jemalloc, jemalloc4, target)
def jemalloc_os_define(jemalloc, jemalloc4, target):
if jemalloc and not jemalloc4:
@depends(jemalloc, target)
def jemalloc_os_define(jemalloc, target):
if jemalloc:
if target.kernel == 'WINNT':
return 'MOZ_MEMORY_WINDOWS'
if target.kernel == 'Linux':
@ -72,9 +62,9 @@ def jemalloc_os_define(jemalloc, jemalloc4, target):
set_define(jemalloc_os_define, '1')
@depends(jemalloc, jemalloc4, target)
def jemalloc_os_define_android(jemalloc, jemalloc4, target):
if jemalloc and not jemalloc4 and target.os == 'Android':
@depends(jemalloc, target)
def jemalloc_os_define_android(jemalloc, target):
if jemalloc and target.os == 'Android':
return 'MOZ_MEMORY_ANDROID'
set_define(jemalloc_os_define_android, '1')

4
devtools/bootstrap.js поставляемый
Просмотреть файл

@ -56,7 +56,9 @@ function processPrefFile(url) {
let defaultBranch = Services.prefs.getDefaultBranch("");
if ((val.startsWith("\"") && val.endsWith("\"")) ||
(val.startsWith("'") && val.endsWith("'"))) {
defaultBranch.setCharPref(name, val.substr(1, val.length - 2));
val = val.substr(1, val.length - 2);
val = val.replace(/\\"/g, '"');
defaultBranch.setCharPref(name, val);
} else if (val.match(/[0-9]+/)) {
defaultBranch.setIntPref(name, parseInt(val, 10));
} else if (val == "true" || val == "false") {

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

@ -162,17 +162,13 @@ const TEST_DATA = [
},
{
name: "background",
value: "-moz-radial-gradient(center 45deg, circle closest-side, " +
"orange 0%, red 100%)",
value: "radial-gradient(circle closest-side at center, orange 0%, red 100%)",
test: fragment => {
is(countAll(fragment), 6);
is(countAll(fragment), 4);
let colorSwatches = fragment.querySelectorAll("." + COLOR_CLASS);
is(colorSwatches.length, 2);
is(colorSwatches[0].textContent, "orange");
is(colorSwatches[1].textContent, "red");
let angleSwatches = fragment.querySelectorAll("." + ANGLE_CLASS);
is(angleSwatches.length, 1);
is(angleSwatches[0].textContent, "45deg");
}
},
{

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

@ -182,7 +182,7 @@ pref("devtools.scratchpad.editorFontSize", 12);
pref("devtools.scratchpad.enableAutocompletion", true);
// Enable the Storage Inspector
pref("devtools.storage.enabled", false);
pref("devtools.storage.enabled", true);
// Enable the Style Editor.
pref("devtools.styleeditor.enabled", true);

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

@ -11,9 +11,6 @@ const TEST_URI = "data:text/html;charset=utf-8," +
const TOOL_DELAY = 1000;
add_task(function* () {
info("Activating the storage inspector");
Services.prefs.setBoolPref("devtools.storage.enabled", true);
yield addTab(TEST_URI);
let Telemetry = loadTelemetryAndRecordLogs();
@ -22,7 +19,4 @@ add_task(function* () {
stopRecordingTelemetryLogs(Telemetry);
gBrowser.removeCurrentTab();
info("De-activating the storage inspector");
Services.prefs.clearUserPref("devtools.storage.enabled");
});

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

@ -49,11 +49,13 @@ tags = usercontextid
[browser_storage_indexeddb_delete.js]
[browser_storage_indexeddb_delete_blocked.js]
[browser_storage_indexeddb_duplicate_names.js]
[browser_storage_localstorage_add.js]
[browser_storage_localstorage_edit.js]
[browser_storage_localstorage_error.js]
[browser_storage_overflow.js]
[browser_storage_search.js]
[browser_storage_search_keyboard_trap.js]
[browser_storage_sessionstorage_add.js]
[browser_storage_sessionstorage_edit.js]
[browser_storage_sidebar.js]
[browser_storage_sidebar_toggle.js]

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

@ -0,0 +1,20 @@
/* 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/. */
// Basic test to check the adding of localStorage entries.
"use strict";
add_task(function* () {
yield openTabAndSetupStorage(MAIN_DOMAIN + "storage-localstorage.html");
showAllColumns(true);
yield performAdd(["localStorage", "http://test1.example.org"]);
yield performAdd(["localStorage", "http://test1.example.org"]);
yield performAdd(["localStorage", "http://test1.example.org"]);
yield performAdd(["localStorage", "http://test1.example.org"]);
yield performAdd(["localStorage", "http://test1.example.org"]);
yield finishTests();
});

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

@ -0,0 +1,20 @@
/* 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/. */
// Basic test to check the adding of sessionStorage entries.
"use strict";
add_task(function* () {
yield openTabAndSetupStorage(MAIN_DOMAIN + "storage-sessionstorage.html");
showAllColumns(true);
yield performAdd(["sessionStorage", "http://test1.example.org"]);
yield performAdd(["sessionStorage", "http://test1.example.org"]);
yield performAdd(["sessionStorage", "http://test1.example.org"]);
yield performAdd(["sessionStorage", "http://test1.example.org"]);
yield performAdd(["sessionStorage", "http://test1.example.org"]);
yield finishTests();
});

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

@ -971,8 +971,9 @@ function sidebarToggleVisible() {
* item.
*/
function* performAdd(store) {
let toolbar = gPanelWindow.document.getElementById("storage-toolbar");
let storeName = store.join(" > ");
let toolbar = gPanelWindow.document.getElementById("storage-toolbar");
let type = store[0];
yield selectTreeItem(store);
@ -993,7 +994,8 @@ function* performAdd(store) {
let rowId = yield eventEdit;
yield eventWait;
let value = getCellValue(rowId, "uniqueKey");
let key = type === "cookies" ? "uniqueKey" : "name";
let value = getCellValue(rowId, key);
is(rowId, value, `Row '${rowId}' was successfully added.`);
}

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

@ -1127,11 +1127,12 @@ StorageUI.prototype = {
*/
onAddItem: function () {
let front = this.getCurrentFront();
let [, host] = this.tree.selectedItem;
// Prepare to scroll into view.
this.table.scrollIntoViewOnUpdate = true;
this.table.editBookmark = createGUID();
front.addItem(this.table.editBookmark);
front.addItem(this.table.editBookmark, host);
},
/**

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

@ -15,6 +15,8 @@ const {isWindowIncluded} = require("devtools/shared/layout/utils");
const specs = require("devtools/shared/specs/storage");
const { Task } = require("devtools/shared/task");
const DEFAULT_VALUE = "value";
loader.lazyRequireGetter(this, "naturalSortCaseInsensitive",
"devtools/client/shared/natural-sort", true);
@ -673,7 +675,7 @@ StorageActors.createActor({
let time = new Date().getTime();
let expiry = new Date(time + 3600 * 24 * 1000).toGMTString();
doc.cookie = `${guid}=value;expires=${expiry}`;
doc.cookie = `${guid}=${DEFAULT_VALUE};expires=${expiry}`;
}),
removeItem: Task.async(function* (host, name) {
@ -1136,6 +1138,14 @@ function getObjectForLocalOrSessionStorage(type) {
];
}),
addItem: Task.async(function* (guid, host) {
let storage = this.hostVsStores.get(host);
if (!storage) {
return;
}
storage.setItem(guid, DEFAULT_VALUE);
}),
/**
* Edit localStorage or sessionStorage fields.
*

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

@ -117,6 +117,15 @@ types.addDictType("storageobject", {
// Common methods for local/session storage
const storageMethods = Object.assign({},
editRemoveMethods,
{
addItem: {
request: {
guid: Arg(0, "string"),
host: Arg(1, "nullable:string")
},
response: {}
}
},
{
removeAll: {
request: {

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

@ -1016,24 +1016,20 @@ EffectCompositor::PreTraverseInSubtree(Element* aRoot)
}
bool
EffectCompositor::PreTraverse(dom::Element* aElement, nsIAtom* aPseudoTagOrNull)
EffectCompositor::PreTraverse(dom::Element* aElement,
CSSPseudoElementType aPseudoType)
{
MOZ_ASSERT(NS_IsMainThread());
MOZ_ASSERT(mPresContext->RestyleManager()->IsServo());
bool found = false;
if (aPseudoTagOrNull &&
aPseudoTagOrNull != nsCSSPseudoElements::before &&
aPseudoTagOrNull != nsCSSPseudoElements::after) {
if (aPseudoType != CSSPseudoElementType::NotPseudo &&
aPseudoType != CSSPseudoElementType::before &&
aPseudoType != CSSPseudoElementType::after) {
return found;
}
CSSPseudoElementType pseudoType =
nsCSSPseudoElements::GetPseudoType(aPseudoTagOrNull,
CSSEnabledState::eForAllContent);
PseudoElementHashEntry::KeyType key = { aElement, pseudoType };
PseudoElementHashEntry::KeyType key = { aElement, aPseudoType };
for (size_t i = 0; i < kCascadeLevelCount; ++i) {
CascadeLevel cascadeLevel = CascadeLevel(i);
@ -1050,9 +1046,9 @@ EffectCompositor::PreTraverse(dom::Element* aElement, nsIAtom* aPseudoTagOrNull)
? eRestyle_CSSTransitions
: eRestyle_CSSAnimations);
EffectSet* effects = EffectSet::GetEffectSet(aElement, pseudoType);
EffectSet* effects = EffectSet::GetEffectSet(aElement, aPseudoType);
if (effects) {
MaybeUpdateCascadeResults(aElement, pseudoType);
MaybeUpdateCascadeResults(aElement, aPseudoType);
for (KeyframeEffectReadOnly* effect : *effects) {
effect->GetAnimation()->WillComposeStyle();

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

@ -247,7 +247,7 @@ public:
bool PreTraverse();
// Similar to the above but only for the (pseudo-)element.
bool PreTraverse(dom::Element* aElement, nsIAtom* aPseudoTagOrNull);
bool PreTraverse(dom::Element* aElement, CSSPseudoElementType aPseudoType);
// Similar to the above but for all elements in the subtree rooted
// at aElement.

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

@ -527,12 +527,9 @@ KeyframeEffectReadOnly::EnsureBaseStyles(
"a valid nsPresContext");
RefPtr<ServoComputedValues> baseComputedValues;
nsIAtom* pseudoAtom = mTarget->mPseudoType < CSSPseudoElementType::Count
? nsCSSPseudoElements::GetPseudoAtom(mTarget->mPseudoType)
: nullptr;
for (const AnimationProperty& property : aProperties) {
EnsureBaseStyle(property,
pseudoAtom,
mTarget->mPseudoType,
presContext,
baseComputedValues);
}
@ -541,7 +538,7 @@ KeyframeEffectReadOnly::EnsureBaseStyles(
void
KeyframeEffectReadOnly::EnsureBaseStyle(
const AnimationProperty& aProperty,
nsIAtom* aPseudoAtom,
CSSPseudoElementType aPseudoType,
nsPresContext* aPresContext,
RefPtr<ServoComputedValues>& aBaseComputedValues)
{
@ -561,7 +558,7 @@ KeyframeEffectReadOnly::EnsureBaseStyle(
if (!aBaseComputedValues) {
aBaseComputedValues =
aPresContext->StyleSet()->AsServo()->
GetBaseComputedValuesForElement(mTarget->mElement, aPseudoAtom);
GetBaseComputedValuesForElement(mTarget->mElement, aPseudoType);
}
RefPtr<RawServoAnimationValue> baseValue =
Servo_ComputedValues_ExtractAnimationValue(aBaseComputedValues,

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

@ -380,7 +380,7 @@ protected:
// Stylo version of the above function that also first checks for an additive
// value in |aProperty|'s list of segments.
void EnsureBaseStyle(const AnimationProperty& aProperty,
nsIAtom* aPseudoAtom,
CSSPseudoElementType aPseudoType,
nsPresContext* aPresContext,
RefPtr<ServoComputedValues>& aBaseComputedValues);

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

@ -13235,9 +13235,11 @@ nsDocument::PrincipalFlashClassification()
{
nsresult rv;
// If flash blocking is disabled, it is equivalent to all sites being
// on neither list.
if (!Preferences::GetBool("plugins.flashBlock.enabled")) {
bool httpOnly = Preferences::GetBool("plugins.http_https_only", true);
bool flashBlock = Preferences::GetBool("plugins.flashBlock.enabled", false);
// If neither pref is on, skip the null-principal and principal URI checks.
if (!httpOnly && !flashBlock) {
return FlashClassification::Unknown;
}
@ -13252,6 +13254,26 @@ nsDocument::PrincipalFlashClassification()
return FlashClassification::Denied;
}
if (httpOnly) {
// Only allow plugins for documents from an HTTP/HTTPS origin. This should
// allow dependent data: URIs to load plugins, but not:
// * chrome documents
// * "bare" data: loads
// * FTP/gopher/file
nsAutoCString scheme;
rv = classificationURI->GetScheme(scheme);
if (NS_WARN_IF(NS_FAILED(rv)) ||
!(scheme.EqualsLiteral("http") || scheme.EqualsLiteral("https"))) {
return FlashClassification::Denied;
}
}
// If flash blocking is disabled, it is equivalent to all sites being
// on neither list.
if (!flashBlock) {
return FlashClassification::Unknown;
}
nsAutoCString allowTables, allowExceptionsTables,
denyTables, denyExceptionsTables,
subDocDenyTables, subDocDenyExceptionsTables,

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

@ -2874,7 +2874,9 @@ GetFontStyleForServo(Element* aElement, const nsAString& aFont,
// We need to use ResolveTransientServoStyle, which involves traversal,
// instead of ResolveServoStyle() because we need up-to-date style even if
// the canvas element is display:none.
parentStyle = styleSet->ResolveTransientServoStyle(aElement, nullptr);
parentStyle =
styleSet->ResolveTransientServoStyle(aElement,
CSSPseudoElementType::NotPseudo);
} else {
RefPtr<RawServoDeclarationBlock> declarations =
CreateFontDeclarationForServo(NS_LITERAL_STRING("10px sans-serif"),

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

@ -1816,108 +1816,6 @@ HTMLInputElement::StringToDecimal(const nsAString& aValue)
return Decimal::fromString(stdString);
}
bool
HTMLInputElement::ConvertStringToNumber(nsAString& aValue,
Decimal& aResultValue) const
{
MOZ_ASSERT(DoesValueAsNumberApply(),
"ConvertStringToNumber only applies if .valueAsNumber applies");
switch (mType) {
case NS_FORM_INPUT_NUMBER:
case NS_FORM_INPUT_RANGE:
{
aResultValue = StringToDecimal(aValue);
if (!aResultValue.isFinite()) {
return false;
}
return true;
}
case NS_FORM_INPUT_DATE:
{
uint32_t year, month, day;
if (!ParseDate(aValue, &year, &month, &day)) {
return false;
}
JS::ClippedTime time = JS::TimeClip(JS::MakeDate(year, month - 1, day));
if (!time.isValid()) {
return false;
}
aResultValue = Decimal::fromDouble(time.toDouble());
return true;
}
case NS_FORM_INPUT_TIME:
uint32_t milliseconds;
if (!ParseTime(aValue, &milliseconds)) {
return false;
}
aResultValue = Decimal(int32_t(milliseconds));
return true;
case NS_FORM_INPUT_MONTH:
{
uint32_t year, month;
if (!ParseMonth(aValue, &year, &month)) {
return false;
}
if (year < kMinimumYear || year > kMaximumYear) {
return false;
}
// Maximum valid month is 275760-09.
if (year == kMaximumYear && month > kMaximumMonthInMaximumYear) {
return false;
}
int32_t months = MonthsSinceJan1970(year, month);
aResultValue = Decimal(int32_t(months));
return true;
}
case NS_FORM_INPUT_WEEK:
{
uint32_t year, week;
if (!ParseWeek(aValue, &year, &week)) {
return false;
}
if (year < kMinimumYear || year > kMaximumYear) {
return false;
}
// Maximum week is 275760-W37, the week of 275760-09-13.
if (year == kMaximumYear && week > kMaximumWeekInMaximumYear) {
return false;
}
double days = DaysSinceEpochFromWeek(year, week);
aResultValue = Decimal::fromDouble(days * kMsPerDay);
return true;
}
case NS_FORM_INPUT_DATETIME_LOCAL:
{
uint32_t year, month, day, timeInMs;
if (!ParseDateTimeLocal(aValue, &year, &month, &day, &timeInMs)) {
return false;
}
JS::ClippedTime time = JS::TimeClip(JS::MakeDate(year, month - 1, day,
timeInMs));
if (!time.isValid()) {
return false;
}
aResultValue = Decimal::fromDouble(time.toDouble());
return true;
}
default:
MOZ_ASSERT(false, "Unrecognized input type");
return false;
}
}
Decimal
HTMLInputElement::GetValueAsDecimal() const
{
@ -1926,8 +1824,8 @@ HTMLInputElement::GetValueAsDecimal() const
GetNonFileValueInternal(stringValue);
return !ConvertStringToNumber(stringValue, decimalValue) ? Decimal::nan()
: decimalValue;
return !mInputType->ConvertStringToNumber(stringValue, decimalValue) ?
Decimal::nan() : decimalValue;
}
void
@ -2045,175 +1943,11 @@ HTMLInputElement::SetValue(Decimal aValue, CallerType aCallerType)
}
nsAutoString value;
ConvertNumberToString(aValue, value);
mInputType->ConvertNumberToString(aValue, value);
IgnoredErrorResult rv;
SetValue(value, aCallerType, rv);
}
bool
HTMLInputElement::ConvertNumberToString(Decimal aValue,
nsAString& aResultString) const
{
MOZ_ASSERT(DoesValueAsNumberApply(),
"ConvertNumberToString is only implemented for types implementing .valueAsNumber");
MOZ_ASSERT(aValue.isFinite(),
"aValue must be a valid non-Infinite number.");
aResultString.Truncate();
switch (mType) {
case NS_FORM_INPUT_NUMBER:
case NS_FORM_INPUT_RANGE:
{
char buf[32];
bool ok = aValue.toString(buf, ArrayLength(buf));
aResultString.AssignASCII(buf);
MOZ_ASSERT(ok, "buf not big enough");
return ok;
}
case NS_FORM_INPUT_DATE:
{
// The specs (and our JS APIs) require |aValue| to be truncated.
aValue = aValue.floor();
double year = JS::YearFromTime(aValue.toDouble());
double month = JS::MonthFromTime(aValue.toDouble());
double day = JS::DayFromTime(aValue.toDouble());
if (IsNaN(year) || IsNaN(month) || IsNaN(day)) {
return false;
}
aResultString.AppendPrintf("%04.0f-%02.0f-%02.0f", year,
month + 1, day);
return true;
}
case NS_FORM_INPUT_TIME:
{
aValue = aValue.floor();
// Per spec, we need to truncate |aValue| and we should only represent
// times inside a day [00:00, 24:00[, which means that we should do a
// modulo on |aValue| using the number of milliseconds in a day (86400000).
uint32_t value =
NS_floorModulo(aValue, Decimal::fromDouble(kMsPerDay)).toDouble();
uint16_t milliseconds, seconds, minutes, hours;
if (!GetTimeFromMs(value, &hours, &minutes, &seconds, &milliseconds)) {
return false;
}
if (milliseconds != 0) {
aResultString.AppendPrintf("%02d:%02d:%02d.%03d",
hours, minutes, seconds, milliseconds);
} else if (seconds != 0) {
aResultString.AppendPrintf("%02d:%02d:%02d",
hours, minutes, seconds);
} else {
aResultString.AppendPrintf("%02d:%02d", hours, minutes);
}
return true;
}
case NS_FORM_INPUT_MONTH:
{
aValue = aValue.floor();
double month = NS_floorModulo(aValue, Decimal(12)).toDouble();
month = (month < 0 ? month + 12 : month);
double year = 1970 + (aValue.toDouble() - month) / 12;
// Maximum valid month is 275760-09.
if (year < kMinimumYear || year > kMaximumYear) {
return false;
}
if (year == kMaximumYear && month > 8) {
return false;
}
aResultString.AppendPrintf("%04.0f-%02.0f", year, month + 1);
return true;
}
case NS_FORM_INPUT_WEEK:
{
aValue = aValue.floor();
// Based on ISO 8601 date.
double year = JS::YearFromTime(aValue.toDouble());
double month = JS::MonthFromTime(aValue.toDouble());
double day = JS::DayFromTime(aValue.toDouble());
// Adding 1 since day starts from 0.
double dayInYear = JS::DayWithinYear(aValue.toDouble(), year) + 1;
// Adding 1 since month starts from 0.
uint32_t isoWeekday = DayOfWeek(year, month + 1, day, true);
// Target on Wednesday since ISO 8601 states that week 1 is the week
// with the first Thursday of that year.
uint32_t week = (dayInYear - isoWeekday + 10) / 7;
if (week < 1) {
year--;
if (year < 1) {
return false;
}
week = MaximumWeekInYear(year);
} else if (week > MaximumWeekInYear(year)) {
year++;
if (year > kMaximumYear ||
(year == kMaximumYear && week > kMaximumWeekInMaximumYear)) {
return false;
}
week = 1;
}
aResultString.AppendPrintf("%04.0f-W%02d", year, week);
return true;
}
case NS_FORM_INPUT_DATETIME_LOCAL:
{
aValue = aValue.floor();
uint32_t timeValue =
NS_floorModulo(aValue, Decimal::fromDouble(kMsPerDay)).toDouble();
uint16_t milliseconds, seconds, minutes, hours;
if (!GetTimeFromMs(timeValue,
&hours, &minutes, &seconds, &milliseconds)) {
return false;
}
double year = JS::YearFromTime(aValue.toDouble());
double month = JS::MonthFromTime(aValue.toDouble());
double day = JS::DayFromTime(aValue.toDouble());
if (IsNaN(year) || IsNaN(month) || IsNaN(day)) {
return false;
}
if (milliseconds != 0) {
aResultString.AppendPrintf("%04.0f-%02.0f-%02.0fT%02d:%02d:%02d.%03d",
year, month + 1, day, hours, minutes,
seconds, milliseconds);
} else if (seconds != 0) {
aResultString.AppendPrintf("%04.0f-%02.0f-%02.0fT%02d:%02d:%02d",
year, month + 1, day, hours, minutes,
seconds);
} else {
aResultString.AppendPrintf("%04.0f-%02.0f-%02.0fT%02d:%02d",
year, month + 1, day, hours, minutes);
}
return true;
}
default:
MOZ_ASSERT(false, "Unrecognized input type");
return false;
}
}
Nullable<Date>
HTMLInputElement::GetValueAsDate(ErrorResult& aRv)
{
@ -2370,7 +2104,7 @@ HTMLInputElement::GetMinimum() const
GetAttr(kNameSpaceID_None, nsGkAtoms::min, minStr);
Decimal min;
return ConvertStringToNumber(minStr, min) ? min : defaultMinimum;
return mInputType->ConvertStringToNumber(minStr, min) ? min : defaultMinimum;
}
Decimal
@ -2391,7 +2125,7 @@ HTMLInputElement::GetMaximum() const
GetAttr(kNameSpaceID_None, nsGkAtoms::max, maxStr);
Decimal max;
return ConvertStringToNumber(maxStr, max) ? max : defaultMaximum;
return mInputType->ConvertStringToNumber(maxStr, max) ? max : defaultMaximum;
}
Decimal
@ -2408,14 +2142,14 @@ HTMLInputElement::GetStepBase() const
// attribute", not "the minimum".
nsAutoString minStr;
if (GetAttr(kNameSpaceID_None, nsGkAtoms::min, minStr) &&
ConvertStringToNumber(minStr, stepBase)) {
mInputType->ConvertStringToNumber(minStr, stepBase)) {
return stepBase;
}
// If @min is not a double, we should use @value.
nsAutoString valueStr;
if (GetAttr(kNameSpaceID_None, nsGkAtoms::value, valueStr) &&
ConvertStringToNumber(valueStr, stepBase)) {
mInputType->ConvertStringToNumber(valueStr, stepBase)) {
return stepBase;
}
@ -4248,7 +3982,7 @@ HTMLInputElement::CancelRangeThumbDrag(bool aIsForUserEvent)
// DispatchTrustedEvent.
// TODO: decide what we should do here - bug 851782.
nsAutoString val;
ConvertNumberToString(mRangeThumbDragStartValue, val);
mInputType->ConvertNumberToString(mRangeThumbDragStartValue, val);
// TODO: What should we do if SetValueInternal fails? (The allocation
// is small, so we should be fine here.)
SetValueInternal(val, nsTextEditorState::eSetValue_BySetUserInput |
@ -4271,7 +4005,7 @@ HTMLInputElement::SetValueOfRangeForUserEvent(Decimal aValue)
Decimal oldValue = GetValueAsDecimal();
nsAutoString val;
ConvertNumberToString(aValue, val);
mInputType->ConvertNumberToString(aValue, val);
// TODO: What should we do if SetValueInternal fails? (The allocation
// is small, so we should be fine here.)
SetValueInternal(val, nsTextEditorState::eSetValue_BySetUserInput |
@ -4374,7 +4108,7 @@ HTMLInputElement::StepNumberControlForUserEvent(int32_t aDirection)
}
nsAutoString newVal;
ConvertNumberToString(newValue, newVal);
mInputType->ConvertNumberToString(newValue, newVal);
// TODO: What should we do if SetValueInternal fails? (The allocation
// is small, so we should be fine here.)
SetValueInternal(newVal, nsTextEditorState::eSetValue_BySetUserInput |
@ -5344,7 +5078,7 @@ HTMLInputElement::SanitizeValue(nsAString& aValue)
case NS_FORM_INPUT_NUMBER:
{
Decimal value;
bool ok = ConvertStringToNumber(aValue, value);
bool ok = mInputType->ConvertStringToNumber(aValue, value);
if (!ok) {
aValue.Truncate();
}
@ -5363,7 +5097,7 @@ HTMLInputElement::SanitizeValue(nsAString& aValue)
bool needSanitization = false;
Decimal value;
bool ok = ConvertStringToNumber(aValue, value);
bool ok = mInputType->ConvertStringToNumber(aValue, value);
if (!ok) {
needSanitization = true;
// Set value to midway between minimum and maximum.
@ -5521,29 +5255,6 @@ HTMLInputElement::MaximumWeekInYear(uint32_t aYear) const
kMaximumWeekInYear : kMaximumWeekInYear - 1;
}
bool
HTMLInputElement::GetTimeFromMs(double aValue, uint16_t* aHours,
uint16_t* aMinutes, uint16_t* aSeconds,
uint16_t* aMilliseconds) const {
MOZ_ASSERT(aValue >= 0 && aValue < kMsPerDay,
"aValue must be milliseconds within a day!");
uint32_t value = floor(aValue);
*aMilliseconds = value % 1000;
value /= 1000;
*aSeconds = value % 60;
value /= 60;
*aMinutes = value % 60;
value /= 60;
*aHours = value;
return true;
}
bool
HTMLInputElement::IsValidWeek(const nsAString& aValue) const
{
@ -7873,8 +7584,8 @@ HTMLInputElement::GetValidationMessage(nsAString& aValidationMessage,
if (maximum.isNaN() || valueHigh <= maximum) {
nsAutoString valueLowStr, valueHighStr;
ConvertNumberToString(valueLow, valueLowStr);
ConvertNumberToString(valueHigh, valueHighStr);
mInputType->ConvertNumberToString(valueLow, valueLowStr);
mInputType->ConvertNumberToString(valueHigh, valueHighStr);
if (valueLowStr.Equals(valueHighStr)) {
const char16_t* params[] = { valueLowStr.get() };
@ -7889,7 +7600,7 @@ HTMLInputElement::GetValidationMessage(nsAString& aValidationMessage,
}
} else {
nsAutoString valueLowStr;
ConvertNumberToString(valueLow, valueLowStr);
mInputType->ConvertNumberToString(valueLow, valueLowStr);
const char16_t* params[] = { valueLowStr.get() };
rv = nsContentUtils::FormatLocalizedString(nsContentUtils::eDOM_PROPERTIES,

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

@ -1166,30 +1166,6 @@ protected:
*/
nsIRadioGroupContainer* GetRadioGroupContainer() const;
/**
* Convert a string to a Decimal number in a type specific way,
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#concept-input-value-string-number
* ie parse a date string to a timestamp if type=date,
* or parse a number string to its value if type=number.
* @param aValue the string to be parsed.
* @param aResultValue the number as a Decimal.
* @result whether the parsing was successful.
*/
bool ConvertStringToNumber(nsAString& aValue, Decimal& aResultValue) const;
/**
* Convert a Decimal to a string in a type specific way, ie convert a timestamp
* to a date string if type=date or append the number string representing the
* value if type=number.
*
* @param aValue the Decimal to be converted
* @param aResultString [out] the string representing the Decimal
* @return whether the function succeded, it will fail if the current input's
* type is not supported or the number can't be converted to a string
* as expected by the type.
*/
bool ConvertNumberToString(Decimal aValue, nsAString& aResultString) const;
/**
* Parse a color string of the form #XXXXXX where X should be hexa characters
* @param the string to be parsed.
@ -1326,13 +1302,6 @@ protected:
*/
uint32_t MaximumWeekInYear(uint32_t aYear) const;
/**
* This method converts aValue (milliseconds within a day) to hours, minutes,
* seconds and milliseconds.
*/
bool GetTimeFromMs(double aValue, uint16_t* aHours, uint16_t* aMinutes,
uint16_t* aSeconds, uint16_t* aMilliseconds) const;
/**
* This methods returns true if it's a leap year.
*/

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

@ -6,8 +6,15 @@
#include "DateTimeInputTypes.h"
#include "js/Date.h"
#include "mozilla/dom/HTMLInputElement.h"
const double DateTimeInputTypeBase::kMinimumYear = 1;
const double DateTimeInputTypeBase::kMaximumYear = 275760;
const double DateTimeInputTypeBase::kMaximumMonthInMaximumYear = 9;
const double DateTimeInputTypeBase::kMaximumWeekInMaximumYear = 37;
const double DateTimeInputTypeBase::kMsPerDay = 24 * 60 * 60 * 1000;
bool
DateTimeInputTypeBase::IsMutable() const
{
@ -82,3 +89,301 @@ DateTimeInputTypeBase::HasStepMismatch(bool aUseZeroIfValueNaN) const
// Value has to be an integral multiple of step.
return NS_floorModulo(value - GetStepBase(), step) != mozilla::Decimal(0);
}
bool
DateTimeInputTypeBase::GetTimeFromMs(double aValue, uint16_t* aHours,
uint16_t* aMinutes, uint16_t* aSeconds,
uint16_t* aMilliseconds) const {
MOZ_ASSERT(aValue >= 0 && aValue < kMsPerDay,
"aValue must be milliseconds within a day!");
uint32_t value = floor(aValue);
*aMilliseconds = value % 1000;
value /= 1000;
*aSeconds = value % 60;
value /= 60;
*aMinutes = value % 60;
value /= 60;
*aHours = value;
return true;
}
// input type=date
bool
DateInputType::ConvertStringToNumber(nsAString& aValue,
mozilla::Decimal& aResultValue) const
{
uint32_t year, month, day;
if (!ParseDate(aValue, &year, &month, &day)) {
return false;
}
JS::ClippedTime time = JS::TimeClip(JS::MakeDate(year, month - 1, day));
if (!time.isValid()) {
return false;
}
aResultValue = mozilla::Decimal::fromDouble(time.toDouble());
return true;
}
bool
DateInputType::ConvertNumberToString(mozilla::Decimal aValue,
nsAString& aResultString) const
{
MOZ_ASSERT(aValue.isFinite(), "aValue must be a valid non-Infinite number.");
aResultString.Truncate();
// The specs (and our JS APIs) require |aValue| to be truncated.
aValue = aValue.floor();
double year = JS::YearFromTime(aValue.toDouble());
double month = JS::MonthFromTime(aValue.toDouble());
double day = JS::DayFromTime(aValue.toDouble());
if (mozilla::IsNaN(year) || mozilla::IsNaN(month) || mozilla::IsNaN(day)) {
return false;
}
aResultString.AppendPrintf("%04.0f-%02.0f-%02.0f", year, month + 1, day);
return true;
}
// input type=time
bool
TimeInputType::ConvertStringToNumber(nsAString& aValue,
mozilla::Decimal& aResultValue) const
{
uint32_t milliseconds;
if (!ParseTime(aValue, &milliseconds)) {
return false;
}
aResultValue = mozilla::Decimal(int32_t(milliseconds));
return true;
}
bool
TimeInputType::ConvertNumberToString(mozilla::Decimal aValue,
nsAString& aResultString) const
{
MOZ_ASSERT(aValue.isFinite(), "aValue must be a valid non-Infinite number.");
aResultString.Truncate();
aValue = aValue.floor();
// Per spec, we need to truncate |aValue| and we should only represent
// times inside a day [00:00, 24:00[, which means that we should do a
// modulo on |aValue| using the number of milliseconds in a day (86400000).
uint32_t value =
NS_floorModulo(aValue, mozilla::Decimal::fromDouble(kMsPerDay)).toDouble();
uint16_t milliseconds, seconds, minutes, hours;
if (!GetTimeFromMs(value, &hours, &minutes, &seconds, &milliseconds)) {
return false;
}
if (milliseconds != 0) {
aResultString.AppendPrintf("%02d:%02d:%02d.%03d",
hours, minutes, seconds, milliseconds);
} else if (seconds != 0) {
aResultString.AppendPrintf("%02d:%02d:%02d",
hours, minutes, seconds);
} else {
aResultString.AppendPrintf("%02d:%02d", hours, minutes);
}
return true;
}
// input type=week
bool
WeekInputType::ConvertStringToNumber(nsAString& aValue,
mozilla::Decimal& aResultValue) const
{
uint32_t year, week;
if (!ParseWeek(aValue, &year, &week)) {
return false;
}
if (year < kMinimumYear || year > kMaximumYear) {
return false;
}
// Maximum week is 275760-W37, the week of 275760-09-13.
if (year == kMaximumYear && week > kMaximumWeekInMaximumYear) {
return false;
}
double days = DaysSinceEpochFromWeek(year, week);
aResultValue = mozilla::Decimal::fromDouble(days * kMsPerDay);
return true;
}
bool
WeekInputType::ConvertNumberToString(mozilla::Decimal aValue,
nsAString& aResultString) const
{
MOZ_ASSERT(aValue.isFinite(), "aValue must be a valid non-Infinite number.");
aResultString.Truncate();
aValue = aValue.floor();
// Based on ISO 8601 date.
double year = JS::YearFromTime(aValue.toDouble());
double month = JS::MonthFromTime(aValue.toDouble());
double day = JS::DayFromTime(aValue.toDouble());
// Adding 1 since day starts from 0.
double dayInYear = JS::DayWithinYear(aValue.toDouble(), year) + 1;
// Adding 1 since month starts from 0.
uint32_t isoWeekday = DayOfWeek(year, month + 1, day, true);
// Target on Wednesday since ISO 8601 states that week 1 is the week
// with the first Thursday of that year.
uint32_t week = (dayInYear - isoWeekday + 10) / 7;
if (week < 1) {
year--;
if (year < 1) {
return false;
}
week = MaximumWeekInYear(year);
} else if (week > MaximumWeekInYear(year)) {
year++;
if (year > kMaximumYear ||
(year == kMaximumYear && week > kMaximumWeekInMaximumYear)) {
return false;
}
week = 1;
}
aResultString.AppendPrintf("%04.0f-W%02d", year, week);
return true;
}
// input type=month
bool
MonthInputType::ConvertStringToNumber(nsAString& aValue,
mozilla::Decimal& aResultValue) const
{
uint32_t year, month;
if (!ParseMonth(aValue, &year, &month)) {
return false;
}
if (year < kMinimumYear || year > kMaximumYear) {
return false;
}
// Maximum valid month is 275760-09.
if (year == kMaximumYear && month > kMaximumMonthInMaximumYear) {
return false;
}
int32_t months = MonthsSinceJan1970(year, month);
aResultValue = mozilla::Decimal(int32_t(months));
return true;
}
bool
MonthInputType::ConvertNumberToString(mozilla::Decimal aValue,
nsAString& aResultString) const
{
MOZ_ASSERT(aValue.isFinite(), "aValue must be a valid non-Infinite number.");
aResultString.Truncate();
aValue = aValue.floor();
double month = NS_floorModulo(aValue, mozilla::Decimal(12)).toDouble();
month = (month < 0 ? month + 12 : month);
double year = 1970 + (aValue.toDouble() - month) / 12;
// Maximum valid month is 275760-09.
if (year < kMinimumYear || year > kMaximumYear) {
return false;
}
if (year == kMaximumYear && month > 8) {
return false;
}
aResultString.AppendPrintf("%04.0f-%02.0f", year, month + 1);
return true;
}
// input type=datetime-local
bool
DateTimeLocalInputType::ConvertStringToNumber(
nsAString& aValue, mozilla::Decimal& aResultValue) const
{
uint32_t year, month, day, timeInMs;
if (!ParseDateTimeLocal(aValue, &year, &month, &day, &timeInMs)) {
return false;
}
JS::ClippedTime time = JS::TimeClip(JS::MakeDate(year, month - 1, day,
timeInMs));
if (!time.isValid()) {
return false;
}
aResultValue = mozilla::Decimal::fromDouble(time.toDouble());
return true;
}
bool
DateTimeLocalInputType::ConvertNumberToString(mozilla::Decimal aValue,
nsAString& aResultString) const
{
MOZ_ASSERT(aValue.isFinite(), "aValue must be a valid non-Infinite number.");
aResultString.Truncate();
aValue = aValue.floor();
uint32_t timeValue =
NS_floorModulo(aValue, mozilla::Decimal::fromDouble(kMsPerDay)).toDouble();
uint16_t milliseconds, seconds, minutes, hours;
if (!GetTimeFromMs(timeValue, &hours, &minutes, &seconds, &milliseconds)) {
return false;
}
double year = JS::YearFromTime(aValue.toDouble());
double month = JS::MonthFromTime(aValue.toDouble());
double day = JS::DayFromTime(aValue.toDouble());
if (mozilla::IsNaN(year) || mozilla::IsNaN(month) || mozilla::IsNaN(day)) {
return false;
}
if (milliseconds != 0) {
aResultString.AppendPrintf("%04.0f-%02.0f-%02.0fT%02d:%02d:%02d.%03d",
year, month + 1, day, hours, minutes,
seconds, milliseconds);
} else if (seconds != 0) {
aResultString.AppendPrintf("%04.0f-%02.0f-%02.0fT%02d:%02d:%02d",
year, month + 1, day, hours, minutes,
seconds);
} else {
aResultString.AppendPrintf("%04.0f-%02.0f-%02.0fT%02d:%02d",
year, month + 1, day, hours, minutes);
}
return true;
}

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

@ -25,6 +25,24 @@ protected:
{}
bool IsMutable() const override;
/**
* This method converts aValue (milliseconds within a day) to hours, minutes,
* seconds and milliseconds.
*/
bool GetTimeFromMs(double aValue, uint16_t* aHours, uint16_t* aMinutes,
uint16_t* aSeconds, uint16_t* aMilliseconds) const;
// Minimum year limited by HTML standard, year >= 1.
static const double kMinimumYear;
// Maximum year limited by ECMAScript date object range, year <= 275760.
static const double kMaximumYear;
// Maximum valid month is 275760-09.
static const double kMaximumMonthInMaximumYear;
// Maximum valid week is 275760-W37.
static const double kMaximumWeekInMaximumYear;
// Milliseconds in a day.
static const double kMsPerDay;
};
// input type=date
@ -37,6 +55,11 @@ public:
return new (aMemory) DateInputType(aInputElement);
}
bool ConvertStringToNumber(nsAString& aValue,
mozilla::Decimal& aResultValue) const override;
bool ConvertNumberToString(mozilla::Decimal aValue,
nsAString& aResultString) const override;
private:
explicit DateInputType(mozilla::dom::HTMLInputElement* aInputElement)
: DateTimeInputTypeBase(aInputElement)
@ -53,6 +76,11 @@ public:
return new (aMemory) TimeInputType(aInputElement);
}
bool ConvertStringToNumber(nsAString& aValue,
mozilla::Decimal& aResultValue) const override;
bool ConvertNumberToString(mozilla::Decimal aValue,
nsAString& aResultString) const override;
private:
explicit TimeInputType(mozilla::dom::HTMLInputElement* aInputElement)
: DateTimeInputTypeBase(aInputElement)
@ -69,6 +97,11 @@ public:
return new (aMemory) WeekInputType(aInputElement);
}
bool ConvertStringToNumber(nsAString& aValue,
mozilla::Decimal& aResultValue) const override;
bool ConvertNumberToString(mozilla::Decimal aValue,
nsAString& aResultString) const override;
private:
explicit WeekInputType(mozilla::dom::HTMLInputElement* aInputElement)
: DateTimeInputTypeBase(aInputElement)
@ -85,6 +118,11 @@ public:
return new (aMemory) MonthInputType(aInputElement);
}
bool ConvertStringToNumber(nsAString& aValue,
mozilla::Decimal& aResultValue) const override;
bool ConvertNumberToString(mozilla::Decimal aValue,
nsAString& aResultString) const override;
private:
explicit MonthInputType(mozilla::dom::HTMLInputElement* aInputElement)
: DateTimeInputTypeBase(aInputElement)
@ -101,6 +139,11 @@ public:
return new (aMemory) DateTimeLocalInputType(aInputElement);
}
bool ConvertStringToNumber(nsAString& aValue,
mozilla::Decimal& aResultValue) const override;
bool ConvertNumberToString(mozilla::Decimal aValue,
nsAString& aResultString) const override;
private:
explicit DateTimeLocalInputType(mozilla::dom::HTMLInputElement* aInputElement)
: DateTimeInputTypeBase(aInputElement)

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

@ -205,3 +205,93 @@ InputType::MinMaxStepAttrChanged()
{
return NS_OK;
}
bool
InputType::ConvertStringToNumber(nsAString& aValue,
mozilla::Decimal& aResultValue) const
{
NS_WARNING("InputType::ConvertStringToNumber called");
return false;
}
bool
InputType::ConvertNumberToString(mozilla::Decimal aValue,
nsAString& aResultString) const
{
NS_WARNING("InputType::ConvertNumberToString called");
return false;
}
bool
InputType::ParseDate(const nsAString& aValue, uint32_t* aYear, uint32_t* aMonth,
uint32_t* aDay) const
{
// TODO: move this function and implementation to DateTimeInpuTypeBase when
// refactoring is completed. Now we can only call HTMLInputElement::ParseDate
// from here, since the method is protected and only InputType is a friend
// class.
return mInputElement->ParseDate(aValue, aYear, aMonth, aDay);
}
bool
InputType::ParseTime(const nsAString& aValue, uint32_t* aResult) const
{
// see comment in InputType::ParseDate().
return mInputElement->ParseTime(aValue, aResult);
}
bool
InputType::ParseMonth(const nsAString& aValue, uint32_t* aYear,
uint32_t* aMonth) const
{
// see comment in InputType::ParseDate().
return mInputElement->ParseMonth(aValue, aYear, aMonth);
}
bool
InputType::ParseWeek(const nsAString& aValue, uint32_t* aYear,
uint32_t* aWeek) const
{
// see comment in InputType::ParseDate().
return mInputElement->ParseWeek(aValue, aYear, aWeek);
}
bool
InputType::ParseDateTimeLocal(const nsAString& aValue, uint32_t* aYear,
uint32_t* aMonth, uint32_t* aDay, uint32_t* aTime)
const
{
// see comment in InputType::ParseDate().
return mInputElement->ParseDateTimeLocal(aValue, aYear, aMonth, aDay, aTime);
}
int32_t
InputType::MonthsSinceJan1970(uint32_t aYear, uint32_t aMonth) const
{
// see comment in InputType::ParseDate().
return mInputElement->MonthsSinceJan1970(aYear, aMonth);
}
double
InputType::DaysSinceEpochFromWeek(uint32_t aYear, uint32_t aWeek) const
{
// see comment in InputType::ParseDate().
return mInputElement->DaysSinceEpochFromWeek(aYear, aWeek);
}
uint32_t
InputType::DayOfWeek(uint32_t aYear, uint32_t aMonth, uint32_t aDay,
bool isoWeek) const
{
// see comment in InputType::ParseDate().
return mInputElement->DayOfWeek(aYear, aMonth, aDay, isoWeek);
}
uint32_t
InputType::MaximumWeekInYear(uint32_t aYear) const
{
// see comment in InputType::ParseDate().
return mInputElement->MaximumWeekInYear(aYear);
}

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

@ -62,6 +62,32 @@ public:
virtual nsresult MinMaxStepAttrChanged();
/**
* Convert a string to a Decimal number in a type specific way,
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#concept-input-value-string-number
* ie parse a date string to a timestamp if type=date,
* or parse a number string to its value if type=number.
* @param aValue the string to be parsed.
* @param aResultValue the number as a Decimal.
* @result whether the parsing was successful.
*/
virtual bool ConvertStringToNumber(nsAString& aValue,
mozilla::Decimal& aResultValue) const;
/**
* Convert a Decimal to a string in a type specific way, ie convert a timestamp
* to a date string if type=date or append the number string representing the
* value if type=number.
*
* @param aValue the Decimal to be converted
* @param aResultString [out] the string representing the Decimal
* @return whether the function succeeded, it will fail if the current input's
* type is not supported or the number can't be converted to a string
* as expected by the type.
*/
virtual bool ConvertNumberToString(mozilla::Decimal aValue,
nsAString& aResultString) const;
protected:
explicit InputType(mozilla::dom::HTMLInputElement* aInputElement)
: mInputElement(aInputElement)
@ -110,6 +136,93 @@ protected:
*/
nsIFrame* GetPrimaryFrame() const;
/**
* Parse a date string of the form yyyy-mm-dd
*
* @param aValue the string to be parsed.
* @return the date in aYear, aMonth, aDay.
* @return whether the parsing was successful.
*/
bool ParseDate(const nsAString& aValue,
uint32_t* aYear,
uint32_t* aMonth,
uint32_t* aDay) const;
/**
* Returns the time expressed in milliseconds of |aValue| being parsed as a
* time following the HTML specifications:
* https://html.spec.whatwg.org/multipage/infrastructure.html#parse-a-time-string
*
* Note: |aResult| can be null.
*
* @param aValue the string to be parsed.
* @param aResult the time expressed in milliseconds representing the time [out]
* @return whether the parsing was successful.
*/
bool ParseTime(const nsAString& aValue, uint32_t* aResult) const;
/**
* Parse a month string of the form yyyy-mm
*
* @param the string to be parsed.
* @return the year and month in aYear and aMonth.
* @return whether the parsing was successful.
*/
bool ParseMonth(const nsAString& aValue,
uint32_t* aYear,
uint32_t* aMonth) const;
/**
* Parse a week string of the form yyyy-Www
*
* @param the string to be parsed.
* @return the year and week in aYear and aWeek.
* @return whether the parsing was successful.
*/
bool ParseWeek(const nsAString& aValue,
uint32_t* aYear,
uint32_t* aWeek) const;
/**
* Parse a datetime-local string of the form yyyy-mm-ddThh:mm[:ss.s] or
* yyyy-mm-dd hh:mm[:ss.s], where fractions of seconds can be 1 to 3 digits.
*
* @param the string to be parsed.
* @return the date in aYear, aMonth, aDay and time expressed in milliseconds
* in aTime.
* @return whether the parsing was successful.
*/
bool ParseDateTimeLocal(const nsAString& aValue,
uint32_t* aYear,
uint32_t* aMonth,
uint32_t* aDay,
uint32_t* aTime) const;
/**
* This methods returns the number of months between January 1970 and the
* given year and month.
*/
int32_t MonthsSinceJan1970(uint32_t aYear, uint32_t aMonth) const;
/**
* This methods returns the number of days since epoch for a given year and
* week.
*/
double DaysSinceEpochFromWeek(uint32_t aYear, uint32_t aWeek) const;
/**
* This methods returns the day of the week given a date. If @isoWeek is true,
* 7=Sunday, otherwise, 0=Sunday.
*/
uint32_t DayOfWeek(uint32_t aYear, uint32_t aMonth, uint32_t aDay,
bool isoWeek) const;
/**
* This methods returns the maximum number of week in a given year, the
* result is either 52 or 53.
*/
uint32_t MaximumWeekInYear(uint32_t aYear) const;
mozilla::dom::HTMLInputElement* mInputElement;
};

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

@ -71,6 +71,33 @@ NumericInputTypeBase::HasStepMismatch(bool aUseZeroIfValueNaN) const
return NS_floorModulo(value - GetStepBase(), step) != mozilla::Decimal(0);
}
bool
NumericInputTypeBase::ConvertStringToNumber(nsAString& aValue,
mozilla::Decimal& aResultValue) const
{
aResultValue = mozilla::dom::HTMLInputElement::StringToDecimal(aValue);
if (!aResultValue.isFinite()) {
return false;
}
return true;
}
bool
NumericInputTypeBase::ConvertNumberToString(mozilla::Decimal aValue,
nsAString& aResultString) const
{
MOZ_ASSERT(aValue.isFinite(), "aValue must be a valid non-Infinite number.");
aResultString.Truncate();
char buf[32];
bool ok = aValue.toString(buf, mozilla::ArrayLength(buf));
aResultString.AssignASCII(buf);
MOZ_ASSERT(ok, "buf not big enough");
return ok;
}
/* input type=numer */
bool

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

@ -18,6 +18,11 @@ public:
bool IsRangeUnderflow() const override;
bool HasStepMismatch(bool aUseZeroIfValueNaN) const override;
bool ConvertStringToNumber(nsAString& aValue,
mozilla::Decimal& aResultValue) const override;
bool ConvertNumberToString(mozilla::Decimal aValue,
nsAString& aResultString) const override;
protected:
explicit NumericInputTypeBase(mozilla::dom::HTMLInputElement* aInputElement)
: InputType(aInputElement)

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

@ -117,7 +117,7 @@ WaveDataDecoder::ProcessDecode(MediaRawData* aSample)
}
}
auto duration = media::TimeUnit::FromMicroseconds(frames / mInfo.mRate);
auto duration = FramesToTimeUnit(frames, mInfo.mRate);
return DecodePromise::CreateAndResolve(
DecodedData{ new AudioData(aOffset, aSample->mTime, duration, frames,

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

@ -115,23 +115,22 @@ public:
int64_t presentationTimeUs;
ok &= NS_SUCCEEDED(info->PresentationTimeUs(&presentationTimeUs));
int32_t size;
ok &= NS_SUCCEEDED(info->Size(&size));
if (!ok) {
HandleError(MediaResult(NS_ERROR_DOM_MEDIA_FATAL_ERR,
RESULT_DETAIL("VideoCallBack::HandleOutput")));
return;
}
bool isEOS = !!(flags & MediaCodec::BUFFER_FLAG_END_OF_STREAM);
InputInfo inputInfo;
if (!mDecoder->mInputInfos.Find(presentationTimeUs, inputInfo)
&& !isEOS) {
ok = mDecoder->mInputInfos.Find(presentationTimeUs, inputInfo);
bool isEOS = !!(flags & MediaCodec::BUFFER_FLAG_END_OF_STREAM);
if (!ok && !isEOS) {
// Ignore output with no corresponding input.
return;
}
if (size > 0) {
if (ok && presentationTimeUs >= 0) {
RefPtr<layers::Image> img = new SurfaceTextureImage(
mDecoder->mSurfaceHandle, inputInfo.mImageSize, false /* NOT continuous */,
gl::OriginPos::BottomLeft);

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

@ -603,14 +603,6 @@ function getAndroidVersion() {
return androidVersion;
}
//Android supports fragmented MP4 playback from 4.3.
//Fragmented MP4.
if (getAndroidVersion() >= 18) {
gUnseekableTests = gUnseekableTests.concat([
{ name:"street.mp4", type:"video/mp4" }
]);
}
// These are files suitable for using with a "new Audio" constructor.
var gAudioTests = [
{ name:"r11025_s16_c1.wav", type:"audio/x-wav", duration:1.0 },

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

@ -1101,7 +1101,6 @@ tags = webvtt
skip-if = toolkit == 'android' # android(bug 1232305)
tags = webvtt
[test_unseekable.html]
skip-if = toolkit == 'android' # android(bug 1232305)
[test_video_to_canvas.html]
skip-if = toolkit == 'android' # android(bug 1232305), bugs 1320418,1347953,1347954,1348140,1348386
[test_video_in_audio_element.html]

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

@ -1,14 +1,14 @@
load 41276-1.html
load 48856-1.html
load 110650-1.html
skip-if(!haveTestPlugin) script 539897-1.html
asserts-if(winWidget&&browserIsRemote,0-1) skip-if(!haveTestPlugin) script 540114-1.html
load 570884.html
HTTP load 41276-1.html
HTTP load 48856-1.html
HTTP load 110650-1.html
skip-if(!haveTestPlugin) HTTP script 539897-1.html
asserts-if(winWidget&&browserIsRemote,0-1) skip-if(!haveTestPlugin) HTTP script 540114-1.html
HTTP load 570884.html
# This test relies on the reading of screenX/Y forcing a round trip to
# the X server, which is a bad assumption for <browser remote>.
# Plugin arch is going to change anyway with OOP content so skipping
# this test for now is OK.
skip-if(!haveTestPlugin||http.platform!="X11") load 598862.html
skip-if(Android) load 626602-1.html # bug 908363
load 752340.html
load 843086.xhtml
skip-if(!haveTestPlugin||http.platform!="X11") HTTP load 598862.html
skip-if(Android) HTTP load 626602-1.html # bug 908363
HTTP load 752340.html
HTTP load 843086.xhtml

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

@ -13,3 +13,4 @@ skip-if = (!e10s || os != "win")
skip-if = (!e10s || os != "win")
[browser_pluginscroll.js]
skip-if = (true || !e10s || os != "win") # Bug 1213631
[browser_bug1335475.js]

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

@ -0,0 +1,64 @@
var rootDir = getRootDirectory(gTestPath);
const gTestRoot = rootDir.replace("chrome://mochitests/content/", "http://127.0.0.1:8888/");
add_task(function*() {
is(navigator.plugins.length, 0,
"plugins should not be available to chrome-privilege pages");
ok(!("application/x-test" in navigator.mimeTypes),
"plugins should not be available to chrome-privilege pages");
yield BrowserTestUtils.withNewTab({ gBrowser, url: "about:blank" }, function*(browser) {
// about:blank triggered from a toplevel load should not inherit permissions
yield ContentTask.spawn(browser, null, function*() {
is(content.window.navigator.plugins.length, 0,
"plugins should not be available to null-principal about:blank");
ok(!("application/x-test" in content.window.navigator.mimeTypes),
"plugins should not be available to null-principal about:blank");
});
let promise = BrowserTestUtils.browserLoaded(browser);
browser.loadURI(gTestRoot + "plugin_test.html");
yield promise;
yield ContentTask.spawn(browser, null, function*() {
ok(content.window.navigator.plugins.length > 0,
"plugins should be available to HTTP-loaded pages");
ok("application/x-test" in content.window.navigator.mimeTypes,
"plugins should be available to HTTP-loaded pages");
let subwindow = content.document.getElementById("subf").contentWindow;
ok("application/x-test" in subwindow.navigator.mimeTypes,
"plugins should be available to an about:blank subframe loaded from a site");
});
// navigate from the HTTP page to an about:blank page which ought to
// inherit permissions
promise = BrowserTestUtils.browserLoaded(browser);
yield ContentTask.spawn(browser, null, function*() {
content.document.getElementById("aboutlink").click();
});
yield promise;
yield ContentTask.spawn(browser, null, function*() {
is(content.window.location.href, "about:blank", "sanity-check about:blank load");
ok("application/x-test" in content.window.navigator.mimeTypes,
"plugins should be available when a site triggers an about:blank load");
});
// navigate to the file: URI, which shouldn't allow plugins. This might
// be wrapped in jar:, but that shouldn't matter for this test
promise = BrowserTestUtils.browserLoaded(browser);
let converteduri = Cc["@mozilla.org/chrome/chrome-registry;1"].getService(Ci.nsIChromeRegistry).convertChromeURL(Services.io.newURI(rootDir + "plugin_test.html"));
browser.loadURI(converteduri.spec);
yield promise;
yield ContentTask.spawn(browser, null, function*() {
ok(!("application/x-test" in content.window.navigator.mimeTypes),
"plugins should not be available to file: URI content");
});
});
// As much as it would be nice, this doesn't actually check ftp:// because
// we don't have a synthetic server.
});

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

@ -7,5 +7,10 @@
<embed id="testplugin" type="application/x-test" drawmode="solid" color="ff00ff00" wmode="window"
style="position:absolute; top:50px; left:50px; width:500px; height:250px">
<div style="display:block; height:3000px;"></div>
<iframe id="subf" src="about:blank" width="300" height="300"></iframe>
<a href="about:blank" id="aboutlink">Navigate to about:blank</a>
</body>
</html>

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

@ -1,27 +1,27 @@
# basic sanity checking
random-if(!haveTestPlugin) != plugin-sanity.html about:blank
fails-if(!haveTestPlugin) == plugin-sanity.html div-sanity.html
fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,160000) == plugin-alpha-zindex.html div-alpha-zindex.html
fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,164000) == plugin-alpha-opacity.html div-alpha-opacity.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) == windowless-clipping-1.html windowless-clipping-1-ref.html # bug 631832
random-if(!haveTestPlugin) HTTP != plugin-sanity.html about:blank
fails-if(!haveTestPlugin) HTTP == plugin-sanity.html div-sanity.html
fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,160000) HTTP == plugin-alpha-zindex.html div-alpha-zindex.html
fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,164000) HTTP == plugin-alpha-opacity.html div-alpha-opacity.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) HTTP == windowless-clipping-1.html windowless-clipping-1-ref.html # bug 631832
# fuzzy because of anti-aliasing in dashed border
fuzzy(16,256) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) == border-padding-1.html border-padding-1-ref.html # bug 629430
fuzzy(16,256) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) == border-padding-2.html border-padding-2-ref.html # bug 629430
skip-if(!webrender) pref(layers.advanced.border-layers,1) fuzzy(16,256) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) == border-padding-2.html border-padding-2-ref.html
fuzzy(16,256) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) skip-if(!haveTestPlugin||Android) == border-padding-3.html border-padding-3-ref.html # bug 629430 # bug 773482
fuzzy(16,256) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) HTTP == border-padding-1.html border-padding-1-ref.html # bug 629430
fuzzy(16,256) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) HTTP == border-padding-2.html border-padding-2-ref.html # bug 629430
skip-if(!webrender) pref(layers.advanced.border-layers,1) fuzzy(16,256) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) HTTP == border-padding-2.html border-padding-2-ref.html
fuzzy(16,256) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) skip-if(!haveTestPlugin||Android) HTTP == border-padding-3.html border-padding-3-ref.html # bug 629430 # bug 773482
# The following two "pluginproblemui-direction" tests are unreliable on all platforms. They should be re-written or replaced.
#random-if(cocoaWidget||d2d||/^Windows\x20NT\x205\.1/.test(http.oscpu)) fails-if(!haveTestPlugin&&!Android) == pluginproblemui-direction-1.html pluginproblemui-direction-1-ref.html # bug 567367
#random-if(cocoaWidget) fails-if(!haveTestPlugin&&!Android) == pluginproblemui-direction-2.html pluginproblemui-direction-2-ref.html
fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,160000) == plugin-canvas-alpha-zindex.html div-alpha-zindex.html
fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,160000) == plugin-transform-alpha-zindex.html div-alpha-zindex.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,160000) == plugin-busy-alpha-zindex.html div-alpha-zindex.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,32400) == plugin-background.html plugin-background-ref.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,32400) == plugin-background-1-step.html plugin-background-ref.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,32400) == plugin-background-2-step.html plugin-background-ref.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,32400) == plugin-background-5-step.html plugin-background-ref.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,32400) == plugin-background-10-step.html plugin-background-ref.html
random-if(!haveTestPlugin) == plugin-transform-1.html plugin-transform-1-ref.html
fails-if(!haveTestPlugin) == plugin-transform-2.html plugin-transform-2-ref.html
skip-if(!haveTestPlugin) == shrink-1.html shrink-1-ref.html
skip-if(!haveTestPlugin) == update-1.html update-1-ref.html
skip-if(!haveTestPlugin) == windowless-layers.html windowless-layers-ref.html
#random-if(cocoaWidget||d2d||/^Windows\x20NT\x205\.1/.test(http.oscpu)) fails-if(!haveTestPlugin&&!Android) HTTP == pluginproblemui-direction-1.html pluginproblemui-direction-1-ref.html # bug 567367
#random-if(cocoaWidget) fails-if(!haveTestPlugin&&!Android) HTTP == pluginproblemui-direction-2.html pluginproblemui-direction-2-ref.html
fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,160000) HTTP == plugin-canvas-alpha-zindex.html div-alpha-zindex.html
fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,160000) HTTP == plugin-transform-alpha-zindex.html div-alpha-zindex.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,160000) HTTP == plugin-busy-alpha-zindex.html div-alpha-zindex.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,32400) HTTP == plugin-background.html plugin-background-ref.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,32400) HTTP == plugin-background-1-step.html plugin-background-ref.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,32400) HTTP == plugin-background-2-step.html plugin-background-ref.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,32400) HTTP == plugin-background-5-step.html plugin-background-ref.html
random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) fuzzy-if(skiaContent&&haveTestPlugin,1,32400) HTTP == plugin-background-10-step.html plugin-background-ref.html
random-if(!haveTestPlugin) HTTP == plugin-transform-1.html plugin-transform-1-ref.html
fails-if(!haveTestPlugin) HTTP == plugin-transform-2.html plugin-transform-2-ref.html
skip-if(!haveTestPlugin) HTTP == shrink-1.html shrink-1-ref.html
skip-if(!haveTestPlugin) HTTP == update-1.html update-1-ref.html
skip-if(!haveTestPlugin) HTTP == windowless-layers.html windowless-layers-ref.html

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

@ -1 +1 @@
<html style="background: -moz-repeating-radial-gradient(left center , circle closest-side, red, white 100px, black); width: 300px; height: 1px;"></html>
<html style="background: repeating-radial-gradient(circle closest-side at left center, red, white 100px, black); width: 300px; height: 1px;"></html>

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

@ -88,10 +88,11 @@ VRLayerChild::ClearSurfaces()
mShSurfClient = nullptr;
}
void
VRLayerChild::ActorDestroy(ActorDestroyReason aWhy)
mozilla::ipc::IPCResult
VRLayerChild::Recv__delete__()
{
mIPCOpen = false;
return IPC_OK();
}
} // namespace gfx

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

@ -40,7 +40,7 @@ public:
protected:
virtual ~VRLayerChild();
void ClearSurfaces();
virtual void ActorDestroy(ActorDestroyReason aWhy) override;
virtual mozilla::ipc::IPCResult Recv__delete__() override;
uint32_t mVRDisplayID;

1
js/src/aclocal.m4 поставляемый
Просмотреть файл

@ -25,7 +25,6 @@ builtin(include, ../../build/autoconf/zlib.m4)dnl
builtin(include, ../../build/autoconf/icu.m4)dnl
builtin(include, ../../build/autoconf/clang-plugin.m4)dnl
builtin(include, ../../build/autoconf/alloc.m4)dnl
builtin(include, ../../build/autoconf/jemalloc.m4)dnl
builtin(include, ../../build/autoconf/sanitize.m4)dnl
builtin(include, ../../build/autoconf/ios.m4)dnl

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

@ -147,7 +147,6 @@ case $cmd in
${TOPSRCDIR}/memory/moz.build \
${TOPSRCDIR}/memory/build \
${TOPSRCDIR}/memory/fallible \
${TOPSRCDIR}/memory/jemalloc \
${TOPSRCDIR}/memory/mozalloc \
${TOPSRCDIR}/memory/mozjemalloc \
${tgtpath}/memory

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

@ -2165,8 +2165,6 @@ AC_SUBST(JS_LIBRARY_NAME)
AC_SUBST(JS_CONFIG_MOZ_JS_LIBS)
AC_SUBST(JS_CONFIG_LIBS)
MOZ_SUBCONFIGURE_JEMALLOC()
# Avoid using obsolete NSPR features
AC_DEFINE(NO_NSPR_10_SUPPORT)

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

@ -59,7 +59,6 @@ using namespace JS;
// to continue working.
static const JSClass kFakeBackstagePassJSClass = { "FakeBackstagePass" };
static const char kXPConnectServiceContractID[] = "@mozilla.org/js/xpc/XPConnect;1";
static const char kObserverServiceContractID[] = "@mozilla.org/observer-service;1";
static const char kJSCachePrefix[] = "jsloader";
@ -381,11 +380,6 @@ mozJSComponentLoader::LoadModule(FileLocation& aFile)
return nullptr;
}
nsCOMPtr<nsIXPConnect> xpc = do_GetService(kXPConnectServiceContractID,
&rv);
if (NS_FAILED(rv))
return nullptr;
nsCOMPtr<nsIComponentManager> cm;
rv = NS_GetComponentManager(getter_AddRefs(cm));
if (NS_FAILED(rv))
@ -420,8 +414,9 @@ mozJSComponentLoader::LoadModule(FileLocation& aFile)
return nullptr;
}
rv = xpc->WrapJS(cx, jsGetFactoryObj,
NS_GET_IID(xpcIJSGetFactory), getter_AddRefs(entry->getfactoryobj));
rv = nsXPConnect::XPConnect()->WrapJS(cx, jsGetFactoryObj,
NS_GET_IID(xpcIJSGetFactory),
getter_AddRefs(entry->getfactoryobj));
if (NS_FAILED(rv)) {
/* XXX report error properly */
#ifdef DEBUG
@ -527,9 +522,6 @@ mozJSComponentLoader::PrepareObjectForLocation(JSContext* aCx,
}
nsresult rv = NS_OK;
nsCOMPtr<nsIXPConnect> xpc =
do_GetService(kXPConnectServiceContractID, &rv);
NS_ENSURE_SUCCESS(rv, nullptr);
bool createdNewGlobal = false;
if (!mLoaderGlobal) {
@ -551,7 +543,8 @@ mozJSComponentLoader::PrepareObjectForLocation(JSContext* aCx,
// Defer firing OnNewGlobalObject until after the __URI__ property has
// been defined so the JS debugger can tell what module the global is
// for
rv = xpc->InitClassesWithNewWrappedGlobal(aCx,
rv = nsXPConnect::XPConnect()->
InitClassesWithNewWrappedGlobal(aCx,
static_cast<nsIGlobalObject*>(backstagePass),
mSystemPrincipal,
nsIXPConnect::DONT_FIRE_ONNEWGLOBALHOOK,
@ -605,7 +598,7 @@ mozJSComponentLoader::PrepareObjectForLocation(JSContext* aCx,
if (XRE_IsParentProcess()) {
RootedObject locationObj(aCx);
rv = xpc->WrapNative(aCx, obj, aComponentFile,
rv = nsXPConnect::XPConnect()->WrapNative(aCx, obj, aComponentFile,
NS_GET_IID(nsIFile),
locationObj.address());
NS_ENSURE_SUCCESS(rv, nullptr);

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

@ -15,7 +15,10 @@ using namespace mozilla;
using namespace xpc;
using namespace JS;
#define IS_TEAROFF_CLASS(clazz) ((clazz) == &XPC_WN_Tearoff_JSClass)
static inline bool IsTearoffClass(const js::Class* clazz)
{
return clazz == &XPC_WN_Tearoff_JSClass;
}
XPCCallContext::XPCCallContext(JSContext* cx,
HandleObject obj /* = nullptr */,
@ -64,7 +67,7 @@ XPCCallContext::XPCCallContext(JSContext* cx,
const js::Class* clasp = js::GetObjectClass(unwrapped);
if (IS_WN_CLASS(clasp)) {
mWrapper = XPCWrappedNative::Get(unwrapped);
} else if (IS_TEAROFF_CLASS(clasp)) {
} else if (IsTearoffClass(clasp)) {
mTearOff = (XPCWrappedNativeTearOff*)js::GetObjectPrivate(unwrapped);
mWrapper = XPCWrappedNative::Get(
&js::GetReservedSlot(unwrapped,

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

@ -65,10 +65,6 @@
#include "nsExceptionHandler.h"
#endif
#if defined(MOZ_JEMALLOC4)
#include "mozmemory.h"
#endif
#ifdef XP_WIN
#include <windows.h>
#endif

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

@ -64,10 +64,6 @@
#include "nsExceptionHandler.h"
#endif
#if defined(MOZ_JEMALLOC4)
#include "mozmemory.h"
#endif
#ifdef XP_WIN
#include <windows.h>
#endif
@ -152,18 +148,6 @@ public:
mActive = false;
}
} else {
#if defined(MOZ_JEMALLOC4)
if (mPurge) {
/* Jemalloc purges dirty pages regularly during free() when the
* ratio of dirty pages compared to active pages is higher than
* 1 << lg_dirty_mult. A high ratio can have an impact on
* performance, so we use the default ratio of 8, but force a
* regular purge of all remaining dirty pages, after cycle
* collection. */
Telemetry::AutoTimer<Telemetry::MEMORY_FREE_PURGED_PAGES_MS> timer;
jemalloc_free_dirty_pages();
}
#endif
mActive = false;
}
return NS_OK;

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

@ -13,7 +13,6 @@
#include "mozilla/Preferences.h"
#include "nsServiceManagerUtils.h"
#include "nsComponentManagerUtils.h"
#include "nsIXPConnect.h"
#include "nsIServiceManager.h"
#include "nsIFile.h"
#include "nsString.h"
@ -120,8 +119,6 @@ public:
};
#endif
static const char kXPConnectServiceContractID[] = "@mozilla.org/js/xpc/XPConnect;1";
#define EXITCODE_RUNTIME_ERROR 3
#define EXITCODE_FILE_NOT_FOUND 4
@ -151,10 +148,6 @@ GetLocationProperty(JSContext* cx, unsigned argc, Value* vp)
#else
JS::AutoFilename filename;
if (JS::DescribeScriptedCaller(cx, &filename) && filename.get()) {
nsresult rv;
nsCOMPtr<nsIXPConnect> xpc =
do_GetService(kXPConnectServiceContractID, &rv);
#if defined(XP_WIN)
// convert from the system codepage to UTF-16
int bufferSize = MultiByteToWideChar(CP_ACP, 0, filename.get(),
@ -182,10 +175,8 @@ GetLocationProperty(JSContext* cx, unsigned argc, Value* vp)
#endif
nsCOMPtr<nsIFile> location;
if (NS_SUCCEEDED(rv)) {
rv = NS_NewLocalFile(filenameString,
nsresult rv = NS_NewLocalFile(filenameString,
false, getter_AddRefs(location));
}
if (!location && gWorkingDirectory) {
// could be a relative path, try appending it to the cwd
@ -204,8 +195,10 @@ GetLocationProperty(JSContext* cx, unsigned argc, Value* vp)
!symlink)
location->Normalize();
RootedObject locationObj(cx);
rv = xpc->WrapNative(cx, &args.thisv().toObject(), location,
NS_GET_IID(nsIFile), locationObj.address());
rv = nsXPConnect::XPConnect()->WrapNative(cx, &args.thisv().toObject(),
location,
NS_GET_IID(nsIFile),
locationObj.address());
if (NS_SUCCEEDED(rv) && locationObj) {
args.rval().setObject(*locationObj);
}
@ -427,9 +420,7 @@ DumpXPC(JSContext* cx, unsigned argc, Value* vp)
return false;
}
nsCOMPtr<nsIXPConnect> xpc = do_GetService(nsIXPConnect::GetCID());
if (xpc)
xpc->DebugDump(int16_t(depth));
nsXPConnect::XPConnect()->DebugDump(int16_t(depth));
args.rval().setUndefined();
return true;
}
@ -1405,12 +1396,6 @@ XRE_XPCShellMain(int argc, char** argv, char** envp,
argv++;
ProcessArgsForCompartment(cx, argv, argc);
nsCOMPtr<nsIXPConnect> xpc = do_GetService(nsIXPConnect::GetCID());
if (!xpc) {
printf("failed to get nsXPConnect service!\n");
return 1;
}
nsCOMPtr<nsIPrincipal> systemprincipal;
// Fetch the system principal and store it away in a global, to use for
// script compilation in Load() and ProcessFile() (including interactive
@ -1454,7 +1439,8 @@ XRE_XPCShellMain(int argc, char** argv, char** envp,
options.creationOptions().setSharedMemoryAndAtomicsEnabled(true);
options.behaviors().setVersion(JSVERSION_LATEST);
nsCOMPtr<nsIXPConnectJSObjectHolder> holder;
rv = xpc->InitClassesWithNewWrappedGlobal(cx,
rv = nsXPConnect::XPConnect()->
InitClassesWithNewWrappedGlobal(cx,
static_cast<nsIGlobalObject*>(backstagePass),
systemprincipal,
0,

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

@ -1 +1 @@
<html><body><div style="height: 100px; background-image: -moz-linear-gradient(left top , yellow, blue); background-size: 4398046511104mozmm;"></div></body></html>
<html><body><div style="height: 100px; background-image: linear-gradient(to bottom right, yellow, blue); background-size: 4398046511104mozmm;"></div></body></html>

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

@ -2211,34 +2211,23 @@ nsPresContext::UpdateIsChrome()
bool
nsPresContext::HasAuthorSpecifiedRules(const nsIFrame* aFrame,
uint32_t ruleTypeMask) const
uint32_t aRuleTypeMask) const
{
if (mShell->StyleSet()->IsGecko()) {
return
nsRuleNode::HasAuthorSpecifiedRules(aFrame->StyleContext(),
ruleTypeMask,
aRuleTypeMask,
UseDocumentColors());
} else {
}
Element* elem = aFrame->GetContent()->AsElement();
if (elem->IsNativeAnonymous()) {
elem = nsContentUtils::GetClosestNonNativeAnonymousAncestor(elem);
}
if (!elem->HasServoData()) {
return false;
}
nsIAtom *pseudoTag = aFrame->StyleContext()->GetPseudo();
RefPtr<RawServoRuleNode> ruleNode;
ruleNode = mShell->StyleSet()->AsServo()->ResolveRuleNode(elem, pseudoTag);
if (!ruleNode) {
return false;
}
return Servo_HasAuthorSpecifiedRules(ruleNode,
elem,
ruleTypeMask,
MOZ_ASSERT(elem->GetPseudoElementType() ==
aFrame->StyleContext()->GetPseudoType());
MOZ_ASSERT(elem->HasServoData());
return Servo_HasAuthorSpecifiedRules(elem,
aRuleTypeMask,
UseDocumentColors());
}
}
gfxUserFontSet*
nsPresContext::GetUserFontSet(bool aFlushUserFontSet)

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

@ -1,6 +1,6 @@
<html class="reftest-wait"><style>
.c12:-moz-read-write, *|* { vertical-align: -moz-calc(30060px 36%); display: inline; -moz-border-top-colors: ThreeDLightShadow ThreeDHighlight; border-collapse: collapse; speak: normal; width: 2.88999223464x+18mozmm; -moz-outline-radius: -219px/6827px; }
.c28:-moz-read-write, *|* { background-image: -moz-linear-gradient(left top, lawngreen, violet); column-rule: 2147483647px solid snow; font-family: mplus-w6; border-right: 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px solid hsla(56224, 127%, 11074%, 3.1529590536x+18); font: Arial, sans-serif; -moz-transform: matrix(9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999, 54, 70.084369622, 2600244143.97, 225, 200); animation: step-right 7.82973832672x+18s forwards;.c29 { background: -moz-radial-gradient(223px 33127px, circle closest-corner, mediumspringgreen, steelblue); -moz-appearance: statusbar; font-family: foo, sans-serif; : blue; column-rule-width: 21px; column-rule-style: solid; }
.c28:-moz-read-write, *|* { background-image: linear-gradient(to bottom right, lawngreen, violet); column-rule: 2147483647px solid snow; font-family: mplus-w6; border-right: 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px solid hsla(56224, 127%, 11074%, 3.1529590536x+18); font: Arial, sans-serif; -moz-transform: matrix(9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999, 54, 70.084369622, 2600244143.97, 225, 200); animation: step-right 7.82973832672x+18s forwards;.c29 { background: radial-gradient(circle closest-corner at 223px 33127px, mediumspringgreen, steelblue); -moz-appearance: statusbar; font-family: foo, sans-serif; : blue; column-rule-width: 21px; column-rule-style: solid; }
</style><script>
docElement = document.documentElement;
docElement.contentEditable = "true";
@ -16,11 +16,11 @@ setTimeout(function(){
document.addEventListener("DOMContentLoaded", initCF);
window.onload = initCF;
</script><!--
--> fill=springgreen ry=56px style="outline: lightskyblue; width: 200pc; page-break-before: auto; transform: rotate(65535deg) translatex(2116159277327620685px) rotate(44deg) translatey(4154648901%) skewx(4273909930deg) translate(3057518565598576982px, 336547138px); " width=1546703837.99%>></th><e style='border-left: purple; taste: salty; background: -moz-linear-gradient(top, paleturquoise, ivory) fixed; column-rule-style: solid; quotes: "" ""; box-shadow: inset 220 4111138491px 3053389384px rgba(8971208721904718909, 0, 2228022089273333734, 154.269191058), 9223372036854775808 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px 14321134px rgba(237, 3316992035388341101, -15, 118354783.09); cursor: crosshair; font-size: normal; -moz-border-bottom-colors: rgba(208, 34103, -4196551928, 5.13284545187x+18) rgba(709904815962541130, 29, -221, 209.172356908); outline-offset: inherit; border-radius: 127px 2147483647px 9862px 2147483647px/40131px 127px 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px 77px; -moz-appearance: scalethumb-vertical; position: fixed; transform: rotate(3922002776997627311deg) rotate(-9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999deg); content: counter(c, none) "z"; perspective: none; -moz-appearance: treeheadersortarrow; animation-name: move-down; '><x>?9(p`r|Agvc@m7]yrXKV.eI`mM+apR]d^UvtpnF xf]{HT~2rROiK(O,o]*XO_jgjJ+B?.EFba!(Fr v@4+=KNIKlC,<fieldset>Ta,c2 ph5ii?/duk?RWcLlmjq3!+U^6e?]^Y9 M5IglbqW;`Gwar.FPvHw0 ++cT2_(.,ZERlDsP|qL_oxzlWf7d=]1w[A%}4e1eNhq$VfqAn|TBq]Ez=.PH`GbZq PH{@L1Q[atH%XT@27m0uya/Z_-:sJ89S!/$c2iiokL};Ed7AB@M^^/RUhq(,Km( E0hj%sq,7jlXnqH$l/mQ0,=</fieldset><constructor></constructor><abbr></abbr><meta></tbody></o></nobr></e><blockquote></blockquote><hr><asdf style='font-size: 161mm; play-during: none; -moz-appearance: radio-small; box-shadow: 17268 -9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px 220 hsla(1140355849941740746, 120%, 131%, 2903913.12919) inset; opacity: auto; content: "This> '>> style='margin: 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999em 8933668495516524730 -144.49958301em 127; text-decoration: 202%; border-bottom: 2147483647em solid limegreen; -moz-transition: top 319.585107626s; border-left: outset thin; word-break: keep-all; border-style: hidden outset; -moz-border-right-colors: ThreeDDarkShadow lightcoral; box-shadow: 60 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px -2953355671px hsla(103, 6839212866957213050%, 159%, 11.3751589012) inset, 191 6964375947664294657 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 60108px hsla(1475245254742113175, 47277189%, 255%, 148.45826034) inset, 29984 65535px 50252 hsla(247, 215%, -115%, 38497.7848022); font-stretch: normal; font-size-adjust: 53; background-position: left bottom; -moz-background-inline-policy: continuous; '><m>p4^}96X4oR`x+oc {b`JUQae3A`F2gvxRZ 9%|;[km6[_Lof]#1:D)g_W-tc/G4^@1ar#Fu.vH@D+[utM(9jt-,0i.KMcSfHKb4ZOeMV^(:8sM*d#?NB$eH!49rW_POT*|4@CBGqU;k_++V1AVHo2qI!UWxnXp)eH}O R]:3mjHpu[8E#O$K7Fpg4_e{Jeb<fooz style='top: calc(9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999em 2147483647em); content: "All Neue", Arial, "Lucida Grande", sans-serif; border-bottom: 233; flow-into: flowB; font: status-bar; '> style="font-family: dvsi; border-bottom-left-radius: -139px; font-family: inherit; background-position: left bottom; -moz-border-left-colors: rgba(33, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999, 58, 3983166662.49) mediumslateblue; counter-reset: c 128 f 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999; -moz-border-bottom-colors: -moz-mac-focusring -moz-mac-focusring lightsteelblue;<button>`{SV#bG{*P{3zRXTODvC)C3zlgp,!S81J.YH|,x]U=%P%8)U#]04H5o/Bno;gZDo]H1LMK I?~O,^Hqw@6k%J9FQ|{jkXv QgeAGtzM1# :Ue1-VAa+N0sNP`yINYAIy:d!?I{_FsB7sAx Jfr,4w~cV#:I3H0,z0b$5C.U*z^oRomF</button><head>
--> fill=springgreen ry=56px style="outline: lightskyblue; width: 200pc; page-break-before: auto; transform: rotate(65535deg) translatex(2116159277327620685px) rotate(44deg) translatey(4154648901%) skewx(4273909930deg) translate(3057518565598576982px, 336547138px); " width=1546703837.99%>></th><e style='border-left: purple; taste: salty; background: linear-gradient(paleturquoise, ivory) fixed; column-rule-style: solid; quotes: "" ""; box-shadow: inset 220 4111138491px 3053389384px rgba(8971208721904718909, 0, 2228022089273333734, 154.269191058), 9223372036854775808 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px 14321134px rgba(237, 3316992035388341101, -15, 118354783.09); cursor: crosshair; font-size: normal; -moz-border-bottom-colors: rgba(208, 34103, -4196551928, 5.13284545187x+18) rgba(709904815962541130, 29, -221, 209.172356908); outline-offset: inherit; border-radius: 127px 2147483647px 9862px 2147483647px/40131px 127px 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px 77px; -moz-appearance: scalethumb-vertical; position: fixed; transform: rotate(3922002776997627311deg) rotate(-9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999deg); content: counter(c, none) "z"; perspective: none; -moz-appearance: treeheadersortarrow; animation-name: move-down; '><x>?9(p`r|Agvc@m7]yrXKV.eI`mM+apR]d^UvtpnF xf]{HT~2rROiK(O,o]*XO_jgjJ+B?.EFba!(Fr v@4+=KNIKlC,<fieldset>Ta,c2 ph5ii?/duk?RWcLlmjq3!+U^6e?]^Y9 M5IglbqW;`Gwar.FPvHw0 ++cT2_(.,ZERlDsP|qL_oxzlWf7d=]1w[A%}4e1eNhq$VfqAn|TBq]Ez=.PH`GbZq PH{@L1Q[atH%XT@27m0uya/Z_-:sJ89S!/$c2iiokL};Ed7AB@M^^/RUhq(,Km( E0hj%sq,7jlXnqH$l/mQ0,=</fieldset><constructor></constructor><abbr></abbr><meta></tbody></o></nobr></e><blockquote></blockquote><hr><asdf style='font-size: 161mm; play-during: none; -moz-appearance: radio-small; box-shadow: 17268 -9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px 220 hsla(1140355849941740746, 120%, 131%, 2903913.12919) inset; opacity: auto; content: "This> '>> style='margin: 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999em 8933668495516524730 -144.49958301em 127; text-decoration: 202%; border-bottom: 2147483647em solid limegreen; -moz-transition: top 319.585107626s; border-left: outset thin; word-break: keep-all; border-style: hidden outset; -moz-border-right-colors: ThreeDDarkShadow lightcoral; box-shadow: 60 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px -2953355671px hsla(103, 6839212866957213050%, 159%, 11.3751589012) inset, 191 6964375947664294657 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 60108px hsla(1475245254742113175, 47277189%, 255%, 148.45826034) inset, 29984 65535px 50252 hsla(247, 215%, -115%, 38497.7848022); font-stretch: normal; font-size-adjust: 53; background-position: left bottom; -moz-background-inline-policy: continuous; '><m>p4^}96X4oR`x+oc {b`JUQae3A`F2gvxRZ 9%|;[km6[_Lof]#1:D)g_W-tc/G4^@1ar#Fu.vH@D+[utM(9jt-,0i.KMcSfHKb4ZOeMV^(:8sM*d#?NB$eH!49rW_POT*|4@CBGqU;k_++V1AVHo2qI!UWxnXp)eH}O R]:3mjHpu[8E#O$K7Fpg4_e{Jeb<fooz style='top: calc(9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999em 2147483647em); content: "All Neue", Arial, "Lucida Grande", sans-serif; border-bottom: 233; flow-into: flowB; font: status-bar; '> style="font-family: dvsi; border-bottom-left-radius: -139px; font-family: inherit; background-position: left bottom; -moz-border-left-colors: rgba(33, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999, 58, 3983166662.49) mediumslateblue; counter-reset: c 128 f 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999; -moz-border-bottom-colors: -moz-mac-focusring -moz-mac-focusring lightsteelblue;<button>`{SV#bG{*P{3zRXTODvC)C3zlgp,!S81J.YH|,x]U=%P%8)U#]04H5o/Bno;gZDo]H1LMK I?~O,^Hqw@6k%J9FQ|{jkXv QgeAGtzM1# :Ue1-VAa+N0sNP`yINYAIy:d!?I{_FsB7sAx Jfr,4w~cV#:I3H0,z0b$5C.U*z^oRomF</button><head>
></title>
<link href=/tests/SimpleTest/test.css<b></b><frame>MS|;yTvb=DyYx=lZ5?NTu=.N@mwsqT!v:=zew_XR7O8YY1o%1=$Oqh=2%a|{M?e/q6]/0VH?s,l4wf!00M7BMNP+j*T?E:POnu? yKL8[Y_nlz+u%QSJB9<csaction>><bdi>w!7RF+P3o}#/~=5hL{2dypxHnV4|@}.jSm@IQ-Ia*i[^/cip/.PKGEX|`bu6+/2RG6}m_*iFTeK~5iI/Zvl.*~32e(_$L#f|1UEh~[Oc_Ej;5Ff:#-?/*W=SLD,kda-7.UmY 4jAoO:T)<footer background-size: calc(-191px 1%) calc(5575271854802146964px 0%); font: 56mm tahoma, arial, helvetica, sans-serif; border-bottom: 31711px solid ButtonShadow; volume: loud; -moz-outline-radius: 158px; font-style: oblique; font: 916265548 serif; transform: rotatex(171deg) rotatey(1174410630deg); margin-bottom: 65535in; background-image: -moz-linear-gradient(top, darkviolet, peru); -moz-window-shadow: none; "></footer></csaction><sup dir=rtl>nH,X4]U~3`GnLEY40Qs-#$K]HiX/TekdWA; Q.IGJJwTi%sB^TF^_MFf%3q; wo#]Jy[t8hywiU`ev+8no:+1!Vo?A1tbO{A$iee~-@3Xmt?jzISs1u]B!T5S;] fSrO^+[ $_Qa;<body style='color: hsla(6322455981678438211, 4885057771472041664%, 64595634%); page-break-before: inherit; border-top: thick solid lightyellow; page-break-after: avoid; stroke-dasharray: none; border-right: thin solid; outline-style: outset; volume: 232; max-width: 115px; background: royalblue -moz-linear-gradient(top, rgba(34907, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999, 4705143634018575181, 134.650893313) 196%, rgba(98, 0, 21, 93) 5835518181644000612%); border-bottom-style: double; background-color: -moz-mac-secondaryhighlight; border-bottom-style: solid; content: "Before"; azimuth: center; '>
</ul> style='text-align-last: left; -webkit-appearance: textfield; color: rgb(-905311699%, 114, 57742); padding: 21.8234098837em 9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999em 9.51366390673em 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999em; border-color: rgba(202, 9223372036854775808, -127, 4.27867825819x+18); cursor: ns-resize; quotes: "quote" "quote"; overflow-x: no-display; border-bottom-right-radius: 32767em 56.2654742136em; box-shadow: 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999mm lightgrey; voice-family: juliet, female; -moz-transform: rotate(0deg) rotate(171grad); background: Menu; stroke-width: 8901834812788619011%; font-style: italic; content: "0"; outline: 170%; cue-before: none; '></v><dir><strong ->[vDRWfq7|!j5~J^5eQL.?J5VYFl{Vgied3%-fH^bH6?O 4mTi#]%o1xFl.O5hoZ3B;ZRx;1$T2,mgbh5dOeQ*m01547dC1/0V#Y.~WW$ragJ0n!EvBkg8Uegi+]ou1j/^QO*femQC2O!P!j,M5Vk@.-`g`$$+f+^ VP~G{1U</mi><noscript></noscript><rdf>Z[kyp(Mt0@4F~xj@v b=,K#nikG!cNac%qU(O/iUs62cwzV#,6jC[!1y5,PBNr@,Gh~Yn43l1B}p1KEh$m|bn}saNpLjZaspCwM4}XA?CWl)%V]lmIORhh y}o(CHz*vog3iSJ#On-w65NZ=}?5lh/x;xgps-#FD6l,MuASFyd$r.}x6;:v0iM4-S`El`hX%x</rdf><sub></sub><textarea>Fi~{@7J{EVzWdri*Uy+C2nP=gmz.Y;Wvp*:F]]VIVMqdJM=oU,.`Veo:L_x~1u`*f2(!*SGS*!Tsm+VYIeWA^CD10rrxyeMbNhM:SL-}Zf*A4Lf= 81Ka{/gieIN3Ru?#*Sl@~tYe]D.~pEm=s.=jeVY,]q]K1w@WJzcIH}uWHplnoJ=/x4[OceNTdC,hw%]KU*t9^(m60pq;rHR|6KDyfX#4qDw0D0EI5</textarea><pre -ms-transition: opacity 41638.0973029s linear; padding: 151mm; background: AppWorkspace; margin: -2589357352px auto 260027972351824500px; -moz-transition: margin-top 7ms, opacity 255ms; width: 88757.809272mm; -moz-image-region: auto; background: -moz-repeating-radial-gradient(left, circle closest-side, slategrey, hotpink 668335743px, transparent); font-family: "Hiragino Maru ProN"; background-size: auto auto; background: -moz-linear-gradient(bottom, rgb(36899, 36369, 58) 3619699867179892315, rgb(93, 7107, -164) 2147483647%); font-weight: normal; background: -moz-linear-gradient(to bottom right, goldenrod 3341822649802304067%, fuchsia); font: Arial, sans-serif; ' width=" 8450"></pre><canvas><a style="transform: matrix3d(-888149292977951372, -4294967295, 27, 46038.5436074, 41, 0, 3120975808, -8411753657436384653, -3691848127, 65535, 105, 108, -8074044328726059853, 186, 3139816390, 6364158256925537388); left: calc(22px); font: bold italic large Palatino, serif; text-indent: calc(9223372036854775808em 30%); margin: auto; padding-bottom: 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999; background: -moz-linear-gradient(rgba(50924, 1251548303, 1109767611702038730, 42159.1644524), rgba(55, 2591341078, 10, 143) 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999%, rgba(43, 246, 149, 1.28599451055x+18) 58741%, rgba(-69, 8229554636392401175, 33463, 67.9323179507)); border-top: -67.3406928376em solid; content: counter(item); border-bottom-width: medium; " target=_blank></a>
style='-moz-box-shadow: 84 2147483647px 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px rgba(-2858581034, 110, 2460321770, 164.188187767), inset 18 255px -2461791714 rgba(65, 2147483647, 118, 120365.670275); border-color: khaki rgb(9223372036854775808, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999) cornsilk rgb(2147483647, 3410481331, -255); background: -moz-linear-gradient(top, hsl(-6511, 132%, 67%), hsl(65535, 127%, 130%)); border-inline-end-width: 5361121852315046626; content: "»"; box-shadow: inset -148 6598830410571865803 -255px hsla(65535, -61299%, 6601653806716150645%, 144.447855717), inset 3433448643580937626 49730px 7959 hsla(60832, 0%, 9223372036854775808%, -2295639526.68); transform: translate3d(9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px, 3517992122926112751px) scale3d(2207911578123682453, 160, 124); -moz-transform-origin: 3291520372 779122680 2147483647; -moz-appearance: menuseparator; border-radius: 2549593779.31px 2.00538639825x+18px 65px 28px; transform: translate(127px, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px) translate(9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px, -176px); margin-left: 210.617676718em; border-inline-start: dotted lightgreen 37018px; word-spacing: 2174513215933018269ch; border-left: solid; columns: 64383 auto -3982463664em; -moz-transform: scale(9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999); stroke-width: 3.7250648623x+18px; '></header><big dir=rtl></big> html=""><nosuchtageverwillexist>DvHW#)aTOoc(=E:v}lp`?)_zpj%f#fy$q~~w1,;%.rsdVNR9=AW8h#y**wpXSlY}R/L|vnxW7?EC`lK,4GcMz[9}{V#d+@d (`JUMD2gD:N1ci7Q#i_hR-p.,dM|s/D-bzFn@8g[.qr;+Kh!]tI3B?2xM;E,oW`GHsjqV>b(vf_HY9If%6.t7z2@ql6|L@SrsUoaG^AX{46e5^;p;8Pphf5f3_],qD)X!kizvdkcp8YtJZe!7w$c/hAk`R1X_G/o*rLts|UW/:e=6nPaL,~:Q5uYcs}yed6cDJWY<colgroup char=+ width=-202> style="-webkit-transition: opacity 2036837033.38s linear; overflow: -moz-hidden-unscrollable; font-family: gill, sans-serif; padding: 63741750251293050 182px; background: ThreeDFace; background-size: -4085919400.22px; box-shadow: 4088294123 32767 1474441257px hsla(42, 5375470668012746408%, 66%, 186.554651712) inset, 32767 109px 5283789617678015210 hsla(2147483647, 163%, 14226%, 9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999); border-width: 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px -170px 3284222322px 5.14851574865x+17px; box-shadow: inset 113 -0 -4px hsla(9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999, 35273%, 2245175778%, 47085.004822), inset 9223372036854775808 76px 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 hsla(2375057167019052381, 4294967295%, 127%, 5.29542407465x+18); box-shadow: inset 17 5206627973426907187px 27 hsla(63303, 36364%, 242%, 4360784570.91), inset 18428 0px 138 hsla(-357953447, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999%, 8058132474996186951%, 100.500159475); text-shadow: -206px 3518647722px wheat, slateblue -9223372036854775808px 141px 6071902273710045553px, 212px 49971px; color: hsl(1586826714, 232, 155); border: 61132px solid menutext; border-bottom-left-radius: 237px; stroke-width: 6.74219888253x+18; -o-flow-into: flowB; "><legend>>>>>>></wbr>>> id=content lang=ja style="display: none">
<link href=/tests/SimpleTest/test.css<b></b><frame>MS|;yTvb=DyYx=lZ5?NTu=.N@mwsqT!v:=zew_XR7O8YY1o%1=$Oqh=2%a|{M?e/q6]/0VH?s,l4wf!00M7BMNP+j*T?E:POnu? yKL8[Y_nlz+u%QSJB9<csaction>><bdi>w!7RF+P3o}#/~=5hL{2dypxHnV4|@}.jSm@IQ-Ia*i[^/cip/.PKGEX|`bu6+/2RG6}m_*iFTeK~5iI/Zvl.*~32e(_$L#f|1UEh~[Oc_Ej;5Ff:#-?/*W=SLD,kda-7.UmY 4jAoO:T)<footer background-size: calc(-191px 1%) calc(5575271854802146964px 0%); font: 56mm tahoma, arial, helvetica, sans-serif; border-bottom: 31711px solid ButtonShadow; volume: loud; -moz-outline-radius: 158px; font-style: oblique; font: 916265548 serif; transform: rotatex(171deg) rotatey(1174410630deg); margin-bottom: 65535in; background-image: linear-gradient(darkviolet, peru); -moz-window-shadow: none; "></footer></csaction><sup dir=rtl>nH,X4]U~3`GnLEY40Qs-#$K]HiX/TekdWA; Q.IGJJwTi%sB^TF^_MFf%3q; wo#]Jy[t8hywiU`ev+8no:+1!Vo?A1tbO{A$iee~-@3Xmt?jzISs1u]B!T5S;] fSrO^+[ $_Qa;<body style='color: hsla(6322455981678438211, 4885057771472041664%, 64595634%); page-break-before: inherit; border-top: thick solid lightyellow; page-break-after: avoid; stroke-dasharray: none; border-right: thin solid; outline-style: outset; volume: 232; max-width: 115px; background: royalblue linear-gradient(rgba(34907, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999, 4705143634018575181, 134.650893313) 196%, rgba(98, 0, 21, 93) 5835518181644000612%); border-bottom-style: double; background-color: -moz-mac-secondaryhighlight; border-bottom-style: solid; content: "Before"; azimuth: center; '>
</ul> style='text-align-last: left; -webkit-appearance: textfield; color: rgb(-905311699%, 114, 57742); padding: 21.8234098837em 9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999em 9.51366390673em 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999em; border-color: rgba(202, 9223372036854775808, -127, 4.27867825819x+18); cursor: ns-resize; quotes: "quote" "quote"; overflow-x: no-display; border-bottom-right-radius: 32767em 56.2654742136em; box-shadow: 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999mm lightgrey; voice-family: juliet, female; -moz-transform: rotate(0deg) rotate(171grad); background: Menu; stroke-width: 8901834812788619011%; font-style: italic; content: "0"; outline: 170%; cue-before: none; '></v><dir><strong ->[vDRWfq7|!j5~J^5eQL.?J5VYFl{Vgied3%-fH^bH6?O 4mTi#]%o1xFl.O5hoZ3B;ZRx;1$T2,mgbh5dOeQ*m01547dC1/0V#Y.~WW$ragJ0n!EvBkg8Uegi+]ou1j/^QO*femQC2O!P!j,M5Vk@.-`g`$$+f+^ VP~G{1U</mi><noscript></noscript><rdf>Z[kyp(Mt0@4F~xj@v b=,K#nikG!cNac%qU(O/iUs62cwzV#,6jC[!1y5,PBNr@,Gh~Yn43l1B}p1KEh$m|bn}saNpLjZaspCwM4}XA?CWl)%V]lmIORhh y}o(CHz*vog3iSJ#On-w65NZ=}?5lh/x;xgps-#FD6l,MuASFyd$r.}x6;:v0iM4-S`El`hX%x</rdf><sub></sub><textarea>Fi~{@7J{EVzWdri*Uy+C2nP=gmz.Y;Wvp*:F]]VIVMqdJM=oU,.`Veo:L_x~1u`*f2(!*SGS*!Tsm+VYIeWA^CD10rrxyeMbNhM:SL-}Zf*A4Lf= 81Ka{/gieIN3Ru?#*Sl@~tYe]D.~pEm=s.=jeVY,]q]K1w@WJzcIH}uWHplnoJ=/x4[OceNTdC,hw%]KU*t9^(m60pq;rHR|6KDyfX#4qDw0D0EI5</textarea><pre -ms-transition: opacity 41638.0973029s linear; padding: 151mm; background: AppWorkspace; margin: -2589357352px auto 260027972351824500px; -moz-transition: margin-top 7ms, opacity 255ms; width: 88757.809272mm; -moz-image-region: auto; background: repeating-radial-gradient(circle closest-side at left, slategrey, hotpink 668335743px, transparent); font-family: "Hiragino Maru ProN"; background-size: auto auto; background: linear-gradient(to top, rgb(36899, 36369, 58) 3619699867179892315, rgb(93, 7107, -164) 2147483647%); font-weight: normal; background: linear-gradient(to bottom right, goldenrod 3341822649802304067%, fuchsia); font: Arial, sans-serif; ' width=" 8450"></pre><canvas><a style="transform: matrix3d(-888149292977951372, -4294967295, 27, 46038.5436074, 41, 0, 3120975808, -8411753657436384653, -3691848127, 65535, 105, 108, -8074044328726059853, 186, 3139816390, 6364158256925537388); left: calc(22px); font: bold italic large Palatino, serif; text-indent: calc(9223372036854775808em 30%); margin: auto; padding-bottom: 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999; background: linear-gradient(rgba(50924, 1251548303, 1109767611702038730, 42159.1644524), rgba(55, 2591341078, 10, 143) 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999%, rgba(43, 246, 149, 1.28599451055x+18) 58741%, rgba(-69, 8229554636392401175, 33463, 67.9323179507)); border-top: -67.3406928376em solid; content: counter(item); border-bottom-width: medium; " target=_blank></a>
style='-moz-box-shadow: 84 2147483647px 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px rgba(-2858581034, 110, 2460321770, 164.188187767), inset 18 255px -2461791714 rgba(65, 2147483647, 118, 120365.670275); border-color: khaki rgb(9223372036854775808, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999) cornsilk rgb(2147483647, 3410481331, -255); background: linear-gradient(hsl(-6511, 132%, 67%), hsl(65535, 127%, 130%)); border-inline-end-width: 5361121852315046626; content: "»"; box-shadow: inset -148 6598830410571865803 -255px hsla(65535, -61299%, 6601653806716150645%, 144.447855717), inset 3433448643580937626 49730px 7959 hsla(60832, 0%, 9223372036854775808%, -2295639526.68); transform: translate3d(9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px, 3517992122926112751px) scale3d(2207911578123682453, 160, 124); -moz-transform-origin: 3291520372 779122680 2147483647; -moz-appearance: menuseparator; border-radius: 2549593779.31px 2.00538639825x+18px 65px 28px; transform: translate(127px, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px) translate(9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px, -176px); margin-left: 210.617676718em; border-inline-start: dotted lightgreen 37018px; word-spacing: 2174513215933018269ch; border-left: solid; columns: 64383 auto -3982463664em; -moz-transform: scale(9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999); stroke-width: 3.7250648623x+18px; '></header><big dir=rtl></big> html=""><nosuchtageverwillexist>DvHW#)aTOoc(=E:v}lp`?)_zpj%f#fy$q~~w1,;%.rsdVNR9=AW8h#y**wpXSlY}R/L|vnxW7?EC`lK,4GcMz[9}{V#d+@d (`JUMD2gD:N1ci7Q#i_hR-p.,dM|s/D-bzFn@8g[.qr;+Kh!]tI3B?2xM;E,oW`GHsjqV>b(vf_HY9If%6.t7z2@ql6|L@SrsUoaG^AX{46e5^;p;8Pphf5f3_],qD)X!kizvdkcp8YtJZe!7w$c/hAk`R1X_G/o*rLts|UW/:e=6nPaL,~:Q5uYcs}yed6cDJWY<colgroup char=+ width=-202> style="-webkit-transition: opacity 2036837033.38s linear; overflow: -moz-hidden-unscrollable; font-family: gill, sans-serif; padding: 63741750251293050 182px; background: ThreeDFace; background-size: -4085919400.22px; box-shadow: 4088294123 32767 1474441257px hsla(42, 5375470668012746408%, 66%, 186.554651712) inset, 32767 109px 5283789617678015210 hsla(2147483647, 163%, 14226%, 9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999); border-width: 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999px -170px 3284222322px 5.14851574865x+17px; box-shadow: inset 113 -0 -4px hsla(9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999, 35273%, 2245175778%, 47085.004822), inset 9223372036854775808 76px 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 hsla(2375057167019052381, 4294967295%, 127%, 5.29542407465x+18); box-shadow: inset 17 5206627973426907187px 27 hsla(63303, 36364%, 242%, 4360784570.91), inset 18428 0px 138 hsla(-357953447, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999%, 8058132474996186951%, 100.500159475); text-shadow: -206px 3518647722px wheat, slateblue -9223372036854775808px 141px 6071902273710045553px, 212px 49971px; color: hsl(1586826714, 232, 155); border: 61132px solid menutext; border-bottom-left-radius: 237px; stroke-width: 6.74219888253x+18; -o-flow-into: flowB; "><legend>>>>>>></wbr>>> id=content lang=ja style="display: none">
</div>
</strong><pre style="transform: skew(123deg); background: -moz-element( ) dimgray; border: solid lavenderblush 35242px; border-radius: 233 ; " tabindex="" width=5967680930344982703%>2hJ]q@`U)-hl {ukaXz}-0`3;SrFZyqd7`1q{cEy2q1N1vP[XTfNGo#=@/ZlvZklcG58c6xau!G}6Lxc#W@RBhKV4];9G`RX 2x.~.u9S^ wThGK vo8#Z<script class=testbody type=text/javascript>

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

@ -1,3 +1,3 @@
fails-if(stylo) == scaled-color-stop-position.html scaled-color-stop-position-ref.html
== scaled-color-stop-position.html scaled-color-stop-position-ref.html
== color-stop-clamp-interpolation.html color-stop-clamp-interpolation-ref.html
== linear-gradient-repeated.html linear-gradient-repeated-ref.html

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

@ -16,8 +16,7 @@
{
width: 400px; height: 300px;
/* 250px stop is halfway along 500px diagonal */
background-image: -moz-linear-gradient(top left, lime 0%, teal 250px, black 100%);
background-image: linear-gradient(top left, lime 0%, teal 250px, black 100%);
background-image: linear-gradient(to bottom right, lime 0%, teal 250px, black 100%);
}
</style>
</head>

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше