mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-25 11:15:34 +00:00
Merge autoland to mozilla-central. a=merge
This commit is contained in:
commit
8923abebee
@ -1,41 +0,0 @@
|
||||
# This file contains vendoring instructions for cargo.
|
||||
# It was generated by `mach vendor rust`.
|
||||
# Please do not edit.
|
||||
|
||||
[source."https://github.com/hsivonen/packed_simd"]
|
||||
branch = "rust_1_32"
|
||||
git = "https://github.com/hsivonen/packed_simd"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
[source."https://github.com/froydnj/winapi-rs"]
|
||||
branch = "aarch64"
|
||||
git = "https://github.com/froydnj/winapi-rs"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
[source."https://github.com/alexcrichton/mio-named-pipes"]
|
||||
branch = "master"
|
||||
git = "https://github.com/alexcrichton/mio-named-pipes"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
[source."https://github.com/NikVolf/tokio-named-pipes"]
|
||||
branch = "stable"
|
||||
git = "https://github.com/NikVolf/tokio-named-pipes"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
[source."https://github.com/CraneStation/Cranelift"]
|
||||
git = "https://github.com/CraneStation/Cranelift"
|
||||
replace-with = "vendored-sources"
|
||||
rev = "9c6f8feb0f28f50434c0cf67f3f7c07486a42b7e"
|
||||
|
||||
[source.crates-io]
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
# Take advantage of the fact that cargo will treat lines starting with #
|
||||
# as comments to add preprocessing directives for when this file is included
|
||||
# from .cargo/config.in.
|
||||
#define REPLACE_NAME vendored-sources
|
||||
#define VENDORED_DIRECTORY third_party/rust
|
||||
#ifndef top_srcdir
|
||||
[source.vendored-sources]
|
||||
directory = "third_party/rust"
|
||||
#endif
|
@ -1,10 +1,52 @@
|
||||
# Please do not edit this file.
|
||||
# This file contains vendoring instructions for cargo.
|
||||
# It was generated by `mach vendor rust`.
|
||||
# Please do not edit.
|
||||
|
||||
# Note: this file is only really needed when objdir is not a subdirectory of
|
||||
# the top source directory.
|
||||
[source."https://github.com/hsivonen/packed_simd"]
|
||||
branch = "rust_1_32"
|
||||
git = "https://github.com/hsivonen/packed_simd"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
#include config
|
||||
[source."https://github.com/froydnj/winapi-rs"]
|
||||
branch = "aarch64"
|
||||
git = "https://github.com/froydnj/winapi-rs"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
[source."https://github.com/alexcrichton/mio-named-pipes"]
|
||||
branch = "master"
|
||||
git = "https://github.com/alexcrichton/mio-named-pipes"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
[source."https://github.com/NikVolf/tokio-named-pipes"]
|
||||
branch = "stable"
|
||||
git = "https://github.com/NikVolf/tokio-named-pipes"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
[source."https://github.com/CraneStation/Cranelift"]
|
||||
git = "https://github.com/CraneStation/Cranelift"
|
||||
replace-with = "vendored-sources"
|
||||
rev = "9c6f8feb0f28f50434c0cf67f3f7c07486a42b7e"
|
||||
|
||||
[source.crates-io]
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
# Take advantage of the fact that cargo will treat lines starting with #
|
||||
# as comments to add preprocessing directives. This file can thus by copied
|
||||
# as-is to $topsrcdir/.cargo/config with no preprocessing to be used there
|
||||
# (for e.g. independent tasks building rust code), or be preprocessed by
|
||||
# the build system to produce a .cargo/config with the right content.
|
||||
#define REPLACE_NAME vendored-sources
|
||||
#define VENDORED_DIRECTORY third_party/rust
|
||||
# We explicitly exclude the following section when preprocessing because
|
||||
# it would overlap with the preprocessed [source."@REPLACE_NAME@"], and
|
||||
# cargo would fail.
|
||||
#ifndef REPLACE_NAME
|
||||
[source.vendored-sources]
|
||||
directory = "third_party/rust"
|
||||
#endif
|
||||
|
||||
# Thankfully, @REPLACE_NAME@ is unlikely to be a legitimate source, so
|
||||
# cargo will ignore it when it's here verbatim.
|
||||
#filter substitution
|
||||
|
||||
[source.@REPLACE_NAME@]
|
||||
[source."@REPLACE_NAME@"]
|
||||
directory = "@top_srcdir@/@VENDORED_DIRECTORY@"
|
||||
|
@ -90,6 +90,7 @@ devtools/client/debugger/bin/
|
||||
devtools/client/debugger/packages/**/fixtures/
|
||||
devtools/client/debugger/node_modules
|
||||
devtools/client/debugger/out
|
||||
devtools/client/webreplay/mochitest/examples/
|
||||
|
||||
# Ignore devtools debugger files which aren't intended for linting, and also
|
||||
# aren't included in any .eslintignore or .prettierignore file.
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1568285711403">
|
||||
<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1568816392824">
|
||||
<emItems>
|
||||
<emItem blockID="i334" id="{0F827075-B026-42F3-885D-98981EE7B1AE}">
|
||||
<prefs/>
|
||||
@ -3413,6 +3413,22 @@
|
||||
<prefs/>
|
||||
<versionRange minVersion="0" maxVersion="*" severity="3"/>
|
||||
</emItem>
|
||||
<emItem blockID="13056233-543d-4c51-b89a-2a6b96ee324e" id="{23db2a76-49ca-4af2-af50-fccedd607e12}">
|
||||
<prefs/>
|
||||
<versionRange minVersion="0" maxVersion="*" severity="3"/>
|
||||
</emItem>
|
||||
<emItem blockID="e22dbf2b-70c8-41ed-b17a-32f53a22055b" id="{91c43d32-3a20-40cb-933b-47fd7c4b5a4e}">
|
||||
<prefs/>
|
||||
<versionRange minVersion="0" maxVersion="*" severity="3"/>
|
||||
</emItem>
|
||||
<emItem blockID="73cae2b8-f60e-47b3-afca-a1ff555f4ec5" id="/^((@yvd-addon)|(ydh@downloader\.youtube\.com)|(tomp3@youtube\.com))$/">
|
||||
<prefs/>
|
||||
<versionRange minVersion="0" maxVersion="*" severity="3"/>
|
||||
</emItem>
|
||||
<emItem blockID="1e56fd0a-77b6-477d-bada-78a5c18a37dd" id="/^((\{d81c0c7d-7420-4737-a3b9-dd9edeb4412f\})|(\{2bc89af7-d0ff-4b22-b7f6-ec87d15d999e\})|(\{3ee12352-a9db-4370-aa27-7e1d9acb628a\}))$/">
|
||||
<prefs/>
|
||||
<versionRange minVersion="0" maxVersion="*" severity="3"/>
|
||||
</emItem>
|
||||
</emItems>
|
||||
<pluginItems>
|
||||
<pluginItem blockID="p332">
|
||||
|
@ -1012,7 +1012,6 @@ toolbarpaletteitem[place="palette"] > #downloads-button[indicator] > .toolbarbut
|
||||
/* Give this menupopup an arrow panel styling */
|
||||
#BMB_bookmarksPopup {
|
||||
-moz-appearance: none;
|
||||
-moz-binding: none;
|
||||
background: transparent;
|
||||
border: none;
|
||||
/* The popup inherits -moz-image-region from the button, must reset it */
|
||||
|
@ -75,16 +75,13 @@ add_task(async function muteTabs_usingButton() {
|
||||
|
||||
// Check mute state
|
||||
ok(muted(tab0), "Tab0 is still muted");
|
||||
ok(!muted(tab1) && !activeMediaBlocked(tab1), "Tab1 is not muted");
|
||||
ok(!muted(tab1), "Tab1 is not muted");
|
||||
ok(!activeMediaBlocked(tab1), "Tab1 is not activemedia-blocked");
|
||||
ok(activeMediaBlocked(tab2), "Tab2 is media-blocked");
|
||||
ok(
|
||||
!muted(tab3) && !activeMediaBlocked(tab3),
|
||||
"Tab3 is not muted and not activemedia-blocked"
|
||||
);
|
||||
ok(
|
||||
!muted(tab4) && !activeMediaBlocked(tab4),
|
||||
"Tab4 is not muted and not activemedia-blocked"
|
||||
);
|
||||
ok(!muted(tab3), "Tab3 is not muted");
|
||||
ok(!activeMediaBlocked(tab3), "Tab3 is not activemedia-blocked");
|
||||
ok(!muted(tab4), "Tab4 is not muted");
|
||||
ok(!activeMediaBlocked(tab4), "Tab4 is not activemedia-blocked");
|
||||
|
||||
// Mute tab1 which is multiselected, thus other multiselected tabs should be affected too
|
||||
// in the following way:
|
||||
@ -100,10 +97,8 @@ add_task(async function muteTabs_usingButton() {
|
||||
ok(muted(tab1), "Tab1 is muted");
|
||||
ok(activeMediaBlocked(tab2), "Tab2 is still media-blocked");
|
||||
ok(muted(tab3), "Tab3 is now muted");
|
||||
ok(
|
||||
!muted(tab4) && !activeMediaBlocked(tab4),
|
||||
"Tab4 is not muted and not activemedia-blocked"
|
||||
);
|
||||
ok(!muted(tab4), "Tab4 is not muted");
|
||||
ok(!activeMediaBlocked(tab4), "Tab4 is not activemedia-blocked");
|
||||
|
||||
for (let tab of tabs) {
|
||||
BrowserTestUtils.removeTab(tab);
|
||||
@ -138,10 +133,8 @@ add_task(async function unmuteTabs_usingButton() {
|
||||
ok(!tab4.multiselected, "tab4 is not multiselected");
|
||||
|
||||
// Check tabs mute state
|
||||
ok(
|
||||
!muted(tab0) && !activeMediaBlocked(tab0),
|
||||
"Tab0 is not muted and not media-blocked"
|
||||
);
|
||||
ok(!muted(tab0), "Tab0 is not muted");
|
||||
ok(!activeMediaBlocked(tab0), "Tab0 is not activemedia-blocked");
|
||||
ok(activeMediaBlocked(tab1), "Tab1 is media-blocked");
|
||||
ok(activeMediaBlocked(tab2), "Tab2 is media-blocked");
|
||||
ok(muted(tab3), "Tab3 is muted");
|
||||
@ -157,22 +150,14 @@ add_task(async function unmuteTabs_usingButton() {
|
||||
let tab3MuteAudioBtn = tab3.soundPlayingIcon;
|
||||
await test_mute_tab(tab3, tab3MuteAudioBtn, false);
|
||||
|
||||
ok(
|
||||
!muted(tab0) && !activeMediaBlocked(tab0),
|
||||
"Tab0 is unmuted and not media-blocked"
|
||||
);
|
||||
ok(
|
||||
!muted(tab1) && !activeMediaBlocked(tab1),
|
||||
"Tab1 is unmuted and not media-blocked"
|
||||
);
|
||||
ok(
|
||||
!muted(tab2) && !activeMediaBlocked(tab2),
|
||||
"Tab2 is unmuted and not media-blocked"
|
||||
);
|
||||
ok(
|
||||
!muted(tab3) && !activeMediaBlocked(tab3),
|
||||
"Tab3 is unmuted and not media-blocked"
|
||||
);
|
||||
ok(!muted(tab0), "Tab0 is not muted");
|
||||
ok(!activeMediaBlocked(tab0), "Tab0 is not activemedia-blocked");
|
||||
ok(!muted(tab1), "Tab1 is not muted");
|
||||
ok(!activeMediaBlocked(tab1), "Tab1 is not activemedia-blocked");
|
||||
ok(!muted(tab2), "Tab2 is not muted");
|
||||
ok(!activeMediaBlocked(tab2), "Tab2 is not activemedia-blocked");
|
||||
ok(!muted(tab3), "Tab3 is not muted");
|
||||
ok(!activeMediaBlocked(tab3), "Tab3 is not activemedia-blocked");
|
||||
ok(muted(tab4), "Tab4 is muted");
|
||||
is(gBrowser.selectedTab, tab0, "Tab0 is active");
|
||||
|
||||
@ -264,10 +249,8 @@ add_task(async function playTabs_usingButton() {
|
||||
ok(muted(tab0), "Tab0 is muted");
|
||||
ok(activeMediaBlocked(tab1), "Tab1 is media-blocked");
|
||||
ok(activeMediaBlocked(tab2), "Tab2 is media-blocked");
|
||||
ok(
|
||||
!muted(tab3) && !activeMediaBlocked(tab3),
|
||||
"Tab3 is not muted and not activemedia-blocked"
|
||||
);
|
||||
ok(!muted(tab3), "Tab3 is not muted");
|
||||
ok(!activeMediaBlocked(tab3), "Tab3 is not activemedia-blocked");
|
||||
ok(muted(tab4), "Tab4 is muted");
|
||||
is(gBrowser.selectedTab, tab0, "Tab0 is active");
|
||||
|
||||
@ -280,22 +263,14 @@ add_task(async function playTabs_usingButton() {
|
||||
let tab2MuteAudioBtn = tab2.soundPlayingIcon;
|
||||
await test_mute_tab(tab2, tab2MuteAudioBtn, false);
|
||||
|
||||
ok(
|
||||
!muted(tab0) && !activeMediaBlocked(tab0),
|
||||
"Tab0 is unmuted and not activemedia-blocked"
|
||||
);
|
||||
ok(
|
||||
!muted(tab1) && !activeMediaBlocked(tab1),
|
||||
"Tab1 is unmuted and not activemedia-blocked"
|
||||
);
|
||||
ok(
|
||||
!muted(tab2) && !activeMediaBlocked(tab2),
|
||||
"Tab2 is unmuted and not activemedia-blocked"
|
||||
);
|
||||
ok(
|
||||
!muted(tab3) && !activeMediaBlocked(tab3),
|
||||
"Tab3 is unmuted and not activemedia-blocked"
|
||||
);
|
||||
ok(!muted(tab0), "Tab0 is not muted");
|
||||
ok(!activeMediaBlocked(tab0), "Tab0 is not activemedia-blocked");
|
||||
ok(!muted(tab1), "Tab1 is not muted");
|
||||
ok(!activeMediaBlocked(tab1), "Tab1 is not activemedia-blocked");
|
||||
ok(!muted(tab2), "Tab2 is not muted");
|
||||
ok(!activeMediaBlocked(tab2), "Tab2 is not activemedia-blocked");
|
||||
ok(!muted(tab3), "Tab3 is not muted");
|
||||
ok(!activeMediaBlocked(tab3), "Tab3 is not activemedia-blocked");
|
||||
ok(muted(tab4), "Tab4 is muted");
|
||||
is(gBrowser.selectedTab, tab0, "Tab0 is active");
|
||||
|
||||
@ -333,10 +308,8 @@ add_task(async function checkTabContextMenu() {
|
||||
ok(!tab3.multiselected, "Tab3 is not multiselected");
|
||||
|
||||
// Check mute state for tabs
|
||||
ok(
|
||||
!muted(tab0) && !activeMediaBlocked(tab0),
|
||||
"Tab0 is not muted and not activemedia-blocked"
|
||||
);
|
||||
ok(!muted(tab0), "Tab0 is not muted");
|
||||
ok(!activeMediaBlocked(tab0), "Tab0 is not activemedia-blocked");
|
||||
ok(activeMediaBlocked(tab1), "Tab1 is media-blocked");
|
||||
ok(muted(tab2), "Tab2 is muted");
|
||||
ok(!muted(tab3, "Tab3 is not muted"));
|
||||
|
@ -12,6 +12,7 @@ footer {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
footer > p {
|
||||
|
@ -11,6 +11,14 @@
|
||||
--reveal-checkbox-opacity-hover: .6;
|
||||
--reveal-checkbox-opacity-active: 1;
|
||||
--success-color: #00c100;
|
||||
--edit-delete-button-color: #4a4a4f;
|
||||
}
|
||||
|
||||
/* Only overwrite the deemphasized text color in non-dark mode. */
|
||||
@media not all and (prefers-color-scheme: dark) {
|
||||
:host {
|
||||
--in-content-deemphasized-text: #737373;
|
||||
}
|
||||
}
|
||||
|
||||
form {
|
||||
@ -82,6 +90,7 @@ input[type="url"][readOnly] {
|
||||
|
||||
.delete-button,
|
||||
.edit-button {
|
||||
color: var(--edit-delete-button-color) !important;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 8px;
|
||||
-moz-context-properties: fill;
|
||||
@ -190,7 +199,10 @@ input[type="url"][readOnly]:hover:active {
|
||||
|
||||
.meta-info {
|
||||
font-size: smaller;
|
||||
font-weight: 300;
|
||||
color: var(--in-content-deemphasized-text);
|
||||
margin-top: 0;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.meta-info:first-of-type::before {
|
||||
@ -341,6 +353,7 @@ a.breach-alert-link {
|
||||
--reveal-checkbox-opacity-hover: 1;
|
||||
--reveal-checkbox-opacity-active: .6;
|
||||
--success-color: #86DE74;
|
||||
--edit-delete-button-color: #cfcfd1;
|
||||
}
|
||||
|
||||
.breach-alert {
|
||||
|
@ -74,14 +74,14 @@
|
||||
{
|
||||
"id": "ResultType",
|
||||
"type": "string",
|
||||
"enum": ["remote_tab", "search", "tab", "url"],
|
||||
"description": "Possible types of results. <code>remote_tab</code>: A synced tab from another device. <code>search</code>: A search suggestion from a search engine. <code>tab</code>: An open tab in the browser. <code>url</code>: A URL that's not one of the other types."
|
||||
"enum": ["remote_tab", "search", "tab", "tip", "url"],
|
||||
"description": "Possible types of results. <code>remote_tab</code>: A synced tab from another device. <code>search</code>: A search suggestion from a search engine. <code>tab</code>: An open tab in the browser. <code>tip</code>: An actionable message to help the user with their query. <code>url</code>: A URL that's not one of the other types."
|
||||
},
|
||||
{
|
||||
"id": "SourceType",
|
||||
"type": "string",
|
||||
"enum": ["bookmarks", "history", "search", "tabs", "local", "network"],
|
||||
"description": "Possible sources of results. <code>bookmarks</code>: The result comes from the user's bookmarks. <code>history</code>: The result comes from the user's history. <code>search</code>: The result comes from a search engine. <code>tabs</code>: The result is an open tab in the browser or a synced tab from another device. "
|
||||
"enum": ["bookmarks", "history", "local", "network", "search", "tabs"],
|
||||
"description": "Possible sources of results. <code>bookmarks</code>: The result comes from the user's bookmarks. <code>history</code>: The result comes from the user's history. <code>local</code>: The result comes from some local source not covered by another source type. <code>network</code>: The result comes from some network source not covered by another source type. <code>search</code>: The result comes from a search engine. <code>tabs</code>: The result is an open tab in the browser or a synced tab from another device."
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
|
@ -209,6 +209,16 @@ add_task(async function test_onProviderResultsRequested() {
|
||||
url: "http://example.com/tab-tabs",
|
||||
},
|
||||
},
|
||||
{
|
||||
type: "tip",
|
||||
source: "local",
|
||||
payload: {
|
||||
text: "Test tip-local result text",
|
||||
buttonText: "Test tip-local result button text",
|
||||
buttonUrl: "http://example.com/tip-button",
|
||||
helpUrl: "http://example.com/tip-help",
|
||||
},
|
||||
},
|
||||
{
|
||||
type: "url",
|
||||
source: "history",
|
||||
@ -256,6 +266,14 @@ add_task(async function test_onProviderResultsRequested() {
|
||||
source: UrlbarUtils.RESULT_SOURCE.SEARCH,
|
||||
title: "test",
|
||||
heuristic: true,
|
||||
payload: {
|
||||
query: "test",
|
||||
engine: "Test engine",
|
||||
suggestion: undefined,
|
||||
keyword: undefined,
|
||||
icon: "",
|
||||
keywordOffer: false,
|
||||
},
|
||||
},
|
||||
// The second result should be our search suggestion result since the
|
||||
// default muxer sorts search suggestion results before other types.
|
||||
@ -264,6 +282,10 @@ add_task(async function test_onProviderResultsRequested() {
|
||||
source: UrlbarUtils.RESULT_SOURCE.SEARCH,
|
||||
title: "Test search-search result",
|
||||
heuristic: false,
|
||||
payload: {
|
||||
engine: "Test engine",
|
||||
suggestion: "Test search-search result",
|
||||
},
|
||||
},
|
||||
// The rest of the results should appear in the order we returned them
|
||||
// above.
|
||||
@ -272,18 +294,45 @@ add_task(async function test_onProviderResultsRequested() {
|
||||
source: UrlbarUtils.RESULT_SOURCE.TABS,
|
||||
title: "Test remote_tab-tabs result",
|
||||
heuristic: false,
|
||||
payload: {
|
||||
title: "Test remote_tab-tabs result",
|
||||
url: "http://example.com/remote_tab-tabs",
|
||||
displayUrl: "example.com/remote_tab-tabs",
|
||||
},
|
||||
},
|
||||
{
|
||||
type: UrlbarUtils.RESULT_TYPE.TAB_SWITCH,
|
||||
source: UrlbarUtils.RESULT_SOURCE.TABS,
|
||||
title: "Test tab-tabs result",
|
||||
heuristic: false,
|
||||
payload: {
|
||||
title: "Test tab-tabs result",
|
||||
url: "http://example.com/tab-tabs",
|
||||
displayUrl: "example.com/tab-tabs",
|
||||
},
|
||||
},
|
||||
{
|
||||
type: UrlbarUtils.RESULT_TYPE.TIP,
|
||||
source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
|
||||
title: "",
|
||||
heuristic: false,
|
||||
payload: {
|
||||
text: "Test tip-local result text",
|
||||
buttonText: "Test tip-local result button text",
|
||||
buttonUrl: "http://example.com/tip-button",
|
||||
helpUrl: "http://example.com/tip-help",
|
||||
},
|
||||
},
|
||||
{
|
||||
type: UrlbarUtils.RESULT_TYPE.URL,
|
||||
source: UrlbarUtils.RESULT_SOURCE.HISTORY,
|
||||
title: "Test url-history result",
|
||||
heuristic: false,
|
||||
payload: {
|
||||
title: "Test url-history result",
|
||||
url: "http://example.com/url-history",
|
||||
displayUrl: "example.com/url-history",
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
@ -292,6 +341,7 @@ add_task(async function test_onProviderResultsRequested() {
|
||||
source: r.source,
|
||||
title: r.title,
|
||||
heuristic: r.heuristic,
|
||||
payload: r.payload,
|
||||
}));
|
||||
|
||||
Assert.deepEqual(actualResults, expectedResults);
|
||||
|
@ -30,23 +30,6 @@
|
||||
for (let event_name of event_names) {
|
||||
this.addEventListener(event_name, ev => this[`on_${event_name}`](ev));
|
||||
}
|
||||
|
||||
this.attachShadow({ mode: "open" });
|
||||
this.shadowRoot.appendChild(this.fragment);
|
||||
|
||||
this._indicatorBar = this.shadowRoot.querySelector(
|
||||
"[part=drop-indicator-bar]"
|
||||
);
|
||||
this._scrollBox = this.shadowRoot.querySelector(".popup-internal-box");
|
||||
}
|
||||
|
||||
get fragment() {
|
||||
if (!this.constructor.hasOwnProperty("_fragment")) {
|
||||
this.constructor._fragment = MozXULElement.parseXULToFragment(
|
||||
this.markup
|
||||
);
|
||||
}
|
||||
return document.importNode(this.constructor._fragment, true);
|
||||
}
|
||||
|
||||
get markup() {
|
||||
@ -220,6 +203,15 @@
|
||||
};
|
||||
}
|
||||
|
||||
get _indicatorBar() {
|
||||
if (!this.__indicatorBar) {
|
||||
this.__indicatorBar = this.shadowRoot.querySelector(
|
||||
"[part=drop-indicator-bar]"
|
||||
);
|
||||
}
|
||||
return this.__indicatorBar;
|
||||
}
|
||||
|
||||
/**
|
||||
* This is the view that manages the popup.
|
||||
*/
|
||||
@ -495,7 +487,7 @@
|
||||
scrollDir = 1;
|
||||
}
|
||||
if (scrollDir != 0) {
|
||||
this._scrollBox.scrollByIndex(scrollDir, true);
|
||||
this.scrollBox.scrollByIndex(scrollDir, true);
|
||||
}
|
||||
|
||||
// Check if we should hide the drop indicator for this target.
|
||||
@ -507,7 +499,7 @@
|
||||
}
|
||||
|
||||
// We should display the drop indicator relative to the arrowscrollbox.
|
||||
let scrollRect = this._scrollBox.getBoundingClientRect();
|
||||
let scrollRect = this.scrollBox.getBoundingClientRect();
|
||||
let newMarginTop = 0;
|
||||
if (scrollDir == 0) {
|
||||
let elt = this.firstElementChild;
|
||||
@ -518,14 +510,14 @@
|
||||
elt = elt.nextElementSibling;
|
||||
}
|
||||
newMarginTop = elt
|
||||
? elt.screenY - this._scrollBox.screenY
|
||||
? elt.screenY - this.scrollBox.screenY
|
||||
: scrollRect.height;
|
||||
} else if (scrollDir == 1) {
|
||||
newMarginTop = scrollRect.height;
|
||||
}
|
||||
|
||||
// Set the new marginTop based on arrowscrollbox.
|
||||
newMarginTop += scrollRect.y - this._scrollBox.getBoundingClientRect().y;
|
||||
newMarginTop += scrollRect.y - this.scrollBox.getBoundingClientRect().y;
|
||||
this._indicatorBar.firstElementChild.style.marginTop =
|
||||
newMarginTop + "px";
|
||||
this._indicatorBar.hidden = false;
|
||||
|
@ -19,10 +19,6 @@ tree[is="places-tree"] > treechildren::-moz-tree-cell {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
menupopup[placespopup="true"] {
|
||||
-moz-binding: none;
|
||||
}
|
||||
|
||||
/* Apply crisp rendering for favicons at exactly 2dppx resolution */
|
||||
@media (resolution: 2dppx) {
|
||||
#bookmarksChildren,
|
||||
|
@ -19,6 +19,7 @@
|
||||
--tab-highlight: var(--social-color); /* start with social selected */
|
||||
--column-width: 16px;
|
||||
--graph-empty: #CECECF;
|
||||
--graph-curve: cubic-bezier(.66,.75,.59,.91);
|
||||
|
||||
/* Colors for the loading indicator */
|
||||
--protection-report-loader-color-stop: #AEAEAE3D;
|
||||
@ -82,7 +83,6 @@ h2 {
|
||||
#sign-up-for-monitor-link {
|
||||
grid-area: 1 / 5 / 1 / -1;
|
||||
margin: 0;
|
||||
height: 38px;
|
||||
font-size: 0.95em;
|
||||
cursor: pointer;
|
||||
padding: 10px;
|
||||
@ -252,6 +252,8 @@ a.hidden,
|
||||
align-self: flex-end;
|
||||
width: var(--column-width);
|
||||
position: relative;
|
||||
height: 0;
|
||||
transition: height 500ms var(--graph-curve);
|
||||
}
|
||||
|
||||
.graph-wrapper-bar {
|
||||
@ -323,6 +325,12 @@ a.hidden,
|
||||
position: absolute;
|
||||
top: -21px;
|
||||
font-size: 0.8em;
|
||||
opacity: 0;
|
||||
transition: opacity 700ms;
|
||||
}
|
||||
|
||||
.bar-count.animate {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* Legend */
|
||||
@ -662,6 +670,7 @@ label[for="tab-cryptominer"]:hover ~ #highlight-hover {
|
||||
#get-proxy-extension-link {
|
||||
-moz-appearance: button;
|
||||
background-color: var(--blue-60);
|
||||
border: 1px solid transparent;
|
||||
border-radius: 2px;
|
||||
text-decoration: none;
|
||||
color: #fff;
|
||||
|
@ -121,12 +121,18 @@ document.addEventListener("DOMContentLoaded", e => {
|
||||
count.id = "count" + i;
|
||||
count.setAttribute("role", "cell");
|
||||
count.textContent = content.total;
|
||||
setTimeout(() => {
|
||||
count.classList.add("animate");
|
||||
}, 400);
|
||||
bar.appendChild(count);
|
||||
ariaOwnsString = count.id;
|
||||
currentColumnCount += 1;
|
||||
let barHeight = (content.total / largest) * 100;
|
||||
weekCount += content.total;
|
||||
bar.style.height = `${barHeight}%`;
|
||||
// Add a short timeout to allow the elements to be added to the dom before triggering an animation.
|
||||
setTimeout(() => {
|
||||
bar.style.height = `${barHeight}%`;
|
||||
}, 20);
|
||||
for (let type of dataTypes) {
|
||||
if (content[type]) {
|
||||
let dataHeight = (content[type] / content.total) * 100;
|
||||
|
@ -316,6 +316,7 @@ UrlbarProviderExtension.RESULT_TYPES = {
|
||||
remote_tab: UrlbarUtils.RESULT_TYPE.REMOTE_TAB,
|
||||
search: UrlbarUtils.RESULT_TYPE.SEARCH,
|
||||
tab: UrlbarUtils.RESULT_TYPE.TAB_SWITCH,
|
||||
tip: UrlbarUtils.RESULT_TYPE.TIP,
|
||||
url: UrlbarUtils.RESULT_TYPE.URL,
|
||||
};
|
||||
|
||||
|
@ -91,7 +91,7 @@ var UrlbarUtils = {
|
||||
// Payload: { url, icon, device, title }
|
||||
REMOTE_TAB: 6,
|
||||
// An actionable message to help the user with their query.
|
||||
// Payload: { icon, text, buttonText, [buttonUrl], data, helpUrl }
|
||||
// Payload: { text, buttonText, [buttonUrl], data, helpUrl }
|
||||
TIP: 7,
|
||||
},
|
||||
|
||||
|
@ -256,12 +256,6 @@ unsignedAddonsDisabled.message=One or more installed add-ons cannot be verified
|
||||
unsignedAddonsDisabled.learnMore.label=Learn More
|
||||
unsignedAddonsDisabled.learnMore.accesskey=L
|
||||
|
||||
# LOCALIZATION NOTE (lwthemeInstallRequest.message2): %S will be replaced with
|
||||
# the host name of the site.
|
||||
lwthemeInstallRequest.message2=This site (%S) attempted to install a theme.
|
||||
lwthemeInstallRequest.allowButton2=Allow
|
||||
lwthemeInstallRequest.allowButton.accesskey2=a
|
||||
|
||||
# LOCALIZATION NOTE (popupWarning.message): Semicolon-separated list of plural forms.
|
||||
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
||||
# #1 is brandShortName and #2 is the number of pop-ups blocked.
|
||||
@ -288,11 +282,6 @@ popupShowBlockedPopupsIndicatorText=Show #1 blocked pop-up…;Show #1 blocked po
|
||||
# LOCALIZATION NOTE (geolocationLastAccessIndicatorText): %S is the relative time of the most recent geolocation access (e.g. 5 min. ago)
|
||||
geolocationLastAccessIndicatorText=Last access %S
|
||||
|
||||
# Bad Content Blocker Doorhanger Notification
|
||||
# %S is brandShortName
|
||||
badContentBlocked.blocked.message=%S is blocking content on this page.
|
||||
badContentBlocked.notblocked.message=%S is not blocking any content on this page.
|
||||
|
||||
crashedpluginsMessage.title=The %S plugin has crashed.
|
||||
crashedpluginsMessage.reloadButton.label=Reload page
|
||||
crashedpluginsMessage.reloadButton.accesskey=R
|
||||
@ -344,15 +333,9 @@ menuOpenAllInTabs.label=Open All in Tabs
|
||||
|
||||
# History menu
|
||||
menuRestoreAllTabs.label=Restore All Tabs
|
||||
# LOCALIZATION NOTE (menuRestoreAllTabsSubview.label): like menuRestoreAllTabs.label,
|
||||
# but used in the history subview in the panel UI, so needs to mention these are *closed* tabs.
|
||||
menuRestoreAllTabsSubview.label=Restore Closed Tabs
|
||||
# LOCALIZATION NOTE (menuRestoreAllWindows, menuUndoCloseWindowLabel, menuUndoCloseWindowSingleTabLabel):
|
||||
# see bug 394759
|
||||
menuRestoreAllWindows.label=Restore All Windows
|
||||
# LOCALIZATION NOTE (menuRestoreAllWindowsSubview.label): like menuRestoreAllWindows.label,
|
||||
# but used in the history subview in the panel UI, so needs to mention these are *closed* windows.
|
||||
menuRestoreAllWindowsSubview.label=Restore Closed Windows
|
||||
# LOCALIZATION NOTE (menuUndoCloseWindowLabel): Semicolon-separated list of plural forms.
|
||||
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
||||
# #1 Window Title, #2 Number of tabs
|
||||
@ -381,12 +364,6 @@ reader-mode-button.tooltip=Toggle reader view (%S)
|
||||
# LOCALIZATION NOTE (urlbar.placeholder):
|
||||
# %S is the name of the user's current search engine
|
||||
urlbar.placeholder=Search with %S or enter address
|
||||
# LOCALIZATION NOTE (urlbarSearchTip.onboarding):
|
||||
# %S is the name of the user's current search engine
|
||||
urlbarSearchTip.onboarding=Type less, find more: Search %S right from your address bar.
|
||||
# LOCALIZATION NOTE (urlbarSearchTip.engineIsCurrentPage):
|
||||
# %S is the name of the user's current search engine
|
||||
urlbarSearchTip.engineIsCurrentPage=Start your search here to see suggestions from %S and your browsing history.
|
||||
|
||||
# LOCALIZATION NOTE(zoom-button.label): %S is the current page zoom level,
|
||||
# %% will be displayed as a single % character (% is commonly used to define
|
||||
@ -605,14 +582,6 @@ editBookmarkPanel.cancel.accesskey=C
|
||||
editBookmark.removeBookmarks.label=Remove Bookmark;Remove #1 Bookmarks
|
||||
editBookmark.removeBookmarks.accesskey=R
|
||||
|
||||
# Post Update Notifications
|
||||
pu.notifyButton.label=Details…
|
||||
pu.notifyButton.accesskey=D
|
||||
# LOCALIZATION NOTE %S will be replaced by the short name of the application.
|
||||
puNotifyText=%S has been updated
|
||||
puAlertTitle=%S Updated
|
||||
puAlertText=Click here for details
|
||||
|
||||
# Application menu
|
||||
|
||||
# LOCALIZATION NOTE(zoomReduce-button.tooltip): %S is the keyboard shortcut.
|
||||
@ -877,18 +846,8 @@ flashHang.helpButton.accesskey = L
|
||||
# LOCALIZATION NOTE (customizeMode.tabTitle): %S is brandShortName
|
||||
customizeMode.tabTitle = Customize %S
|
||||
|
||||
# LOCALIZATION NOTE (e10s.accessibilityNotice.mainMessage,
|
||||
# e10s.accessibilityNotice.enableAndRestart.label,
|
||||
# e10s.accessibilityNotice.enableAndRestart.accesskey):
|
||||
# These strings are related to the messages we display to offer e10s (Multi-process) to users
|
||||
# on the pre-release channels. They won't be used in release but they will likely be used in
|
||||
# beta starting from version 41, so it's still useful to have these strings properly localized.
|
||||
# %S is brandShortName
|
||||
e10s.accessibilityNotice.mainMessage2 = Accessibility support is partially disabled due to compatibility issues with new %S features.
|
||||
e10s.accessibilityNotice.acceptButton.label = OK
|
||||
e10s.accessibilityNotice.acceptButton.accesskey = O
|
||||
e10s.accessibilityNotice.enableAndRestart.label = Enable (Requires Restart)
|
||||
e10s.accessibilityNotice.enableAndRestart.accesskey = E
|
||||
|
||||
# LOCALIZATION NOTE (e10s.accessibilityNotice.jawsMessage): %S is brandShortName
|
||||
e10s.accessibilityNotice.jawsMessage = Display of tab content is disabled due to incompatibility between %S and your accessibility software. Please update your screen reader or switch to Firefox Extended Support Release.
|
||||
@ -965,7 +924,6 @@ pendingCrashReports.alwaysSend = Always Send
|
||||
|
||||
decoder.noCodecs.button = Learn how
|
||||
decoder.noCodecs.accesskey = L
|
||||
decoder.noCodecs.message = To play video, you may need to install Microsoft’s Media Feature Pack.
|
||||
decoder.noCodecsLinux.message = To play video, you may need to install the required video codecs.
|
||||
decoder.noHWAcceleration.message = To improve video quality, you may need to install Microsoft’s Media Feature Pack.
|
||||
decoder.noPulseAudio.message = To play audio, you may need to install the required PulseAudio software.
|
||||
|
@ -5,9 +5,6 @@
|
||||
# LOCALIZATION NOTE (stateStarting):
|
||||
# Indicates that the download is starting.
|
||||
stateStarting=Starting…
|
||||
# LOCALIZATION NOTE (stateScanning):
|
||||
# Indicates that an external program is scanning the download for viruses.
|
||||
stateScanning=Scanning for viruses…
|
||||
# LOCALIZATION NOTE (stateFailed):
|
||||
# Indicates that the download failed because of an error.
|
||||
stateFailed=Failed
|
||||
|
@ -17,8 +17,6 @@ bookmarksRestoreFilterName=JSON
|
||||
bookmarksRestoreFormatError=Unsupported file type.
|
||||
bookmarksRestoreParseError=Unable to process the backup file.
|
||||
|
||||
sortByName=Sort ‘%S’ by Name
|
||||
sortByNameGeneric=Sort by Name
|
||||
# LOCALIZATION NOTE (view.sortBy.1.name.label): sortBy properties are versioned.
|
||||
# When any of these changes, all of the properties must be bumped, and the
|
||||
# change must be annotated here. Both label and accesskey must be updated.
|
||||
@ -52,17 +50,6 @@ detailsPane.noItems=No items
|
||||
# example: 111 items
|
||||
detailsPane.itemsCountLabel=One item;#1 items
|
||||
|
||||
# LOCALIZATION NOTE (tagResultLabel, bookmarkResultLabel, switchtabResultLabel,
|
||||
# keywordResultLabel, searchengineResultLabel)
|
||||
# Noun used to describe the location bar autocomplete result type
|
||||
# to users with screen readers
|
||||
# See createResultLabel() in urlbarBindings.xml
|
||||
tagResultLabel=Tag
|
||||
bookmarkResultLabel=Bookmark
|
||||
switchtabResultLabel=Tab
|
||||
keywordResultLabel=Keyword
|
||||
searchengineResultLabel=Search
|
||||
|
||||
# LOCALIZATION NOTE (lockPrompt.text)
|
||||
# %S will be replaced with the application name.
|
||||
lockPrompt.title=Browser Startup Error
|
||||
|
@ -4,12 +4,10 @@
|
||||
|
||||
addtags = Add Tags
|
||||
alreadyhaveacct = Already a Pocket user?
|
||||
continueff = Continue with Firefox
|
||||
errorgeneric = There was an error when trying to save to Pocket.
|
||||
learnmore = Learn More
|
||||
loginnow = Log in
|
||||
maxtaglength = Tags are limited to 25 characters
|
||||
mustbeconnected = You must be connected to the Internet in order to save to Pocket. Please check your connection and try again.
|
||||
onlylinkssaved = Only links can be saved
|
||||
pagenotsaved = Page Not Saved
|
||||
pageremoved = Page Removed
|
||||
@ -28,6 +26,5 @@ taglinestory_two = View in Pocket on any device, any time.
|
||||
tagssaved = Tags Added
|
||||
tos = By continuing, you agree to Pocket’s <a href="%1$S" target="_blank">Terms of Service</a> and <a href="%2$S" target="_blank">Privacy Policy</a>
|
||||
tryitnow = Try It Now
|
||||
signinfirefox = Sign in with Firefox
|
||||
signupfirefox = Sign up with Firefox
|
||||
viewlist = View List
|
||||
|
@ -4,10 +4,6 @@
|
||||
|
||||
searchtip=Search using %S
|
||||
|
||||
# LOCALIZATION NOTE (searchPlaceholder): this is shown in the searchbox when
|
||||
# the user hasn't typed anything yet.
|
||||
searchPlaceholder=Search
|
||||
|
||||
# LOCALIZATION NOTE (searchHeader): this is displayed at the top of the panel
|
||||
# showing search suggestions.
|
||||
# %S is replaced with the name of the current default search engine.
|
||||
|
@ -16,7 +16,6 @@ state.current.allowedTemporarily = Allowed Temporarily
|
||||
state.current.blockedTemporarily = Blocked Temporarily
|
||||
state.current.blocked = Blocked
|
||||
state.current.prompt = Always Ask
|
||||
state.current.hide = Hide Prompt
|
||||
|
||||
# LOCALIZATION NOTE (state.multichoice.alwaysAsk,
|
||||
# state.multichoice.allow,
|
||||
|
@ -68,14 +68,6 @@ tabs.closeWarningMultipleWindowsTabSnippet=;with #1 tabs
|
||||
# single tab case in English, but can be used by other locales as necessary.
|
||||
tabs.closeTabs.tooltip=Close tab;Close #1 tabs
|
||||
|
||||
# LOCALIZATION NOTE (tabs.closeSelectedTabs.tooltip):
|
||||
# Semicolon-separated list of plural forms. See:
|
||||
# http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
||||
# %S is the keyboard shortcut for closing the current tab.
|
||||
# #1 is the number of tabs that will be closed. This is ignored for the
|
||||
# single tab case in English, but can be used by other locales as necessary.
|
||||
tabs.closeSelectedTabs.tooltip=Close tab (%S);Close #1 tabs (%S)
|
||||
|
||||
# LOCALIZATION NOTE (tabs.muteAudio2.tooltip):
|
||||
# Semicolon-separated list of plural forms. See:
|
||||
# http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
||||
|
@ -53,9 +53,11 @@ add_task(async function test_uniqueDomainsVisitedInPast24Hours() {
|
||||
"127.0.0.1 should not count as a unique visit"
|
||||
);
|
||||
|
||||
// Set the expiry time to 1 second
|
||||
// Set the expiry time to 4 seconds. The value should be reasonably short
|
||||
// for testing, but long enough so that waiting for openNewForegroundTab
|
||||
// does not cause the expiry timeout to run.
|
||||
await SpecialPowers.pushPrefEnv({
|
||||
set: [["browser.engagement.recent_visited_origins.expiry", 1]],
|
||||
set: [["browser.engagement.recent_visited_origins.expiry", 4]],
|
||||
});
|
||||
|
||||
// http://www.exämple.test
|
||||
@ -71,13 +73,15 @@ add_task(async function test_uniqueDomainsVisitedInPast24Hours() {
|
||||
|
||||
let countBefore = URICountListener.uniqueDomainsVisitedInPast24Hours;
|
||||
|
||||
await new Promise(resolve => {
|
||||
setTimeout(_ => {
|
||||
let countAfter = URICountListener.uniqueDomainsVisitedInPast24Hours;
|
||||
is(countAfter, countBefore - 1, "The expiry should work correctly");
|
||||
resolve();
|
||||
}, 1100);
|
||||
});
|
||||
// If expiration does not work correctly, the following will time out.
|
||||
await BrowserTestUtils.waitForCondition(() => {
|
||||
return (
|
||||
URICountListener.uniqueDomainsVisitedInPast24Hours == countBefore - 1
|
||||
);
|
||||
}, 250);
|
||||
|
||||
let countAfter = URICountListener.uniqueDomainsVisitedInPast24Hours;
|
||||
is(countAfter, countBefore - 1, "The expiry should work correctly");
|
||||
|
||||
BrowserTestUtils.removeTab(win.gBrowser.selectedTab);
|
||||
BrowserTestUtils.removeTab(win.gBrowser.selectedTab);
|
||||
|
@ -176,6 +176,13 @@ add_task(async function() {
|
||||
});
|
||||
|
||||
async function setupPreferences() {
|
||||
if (SpecialPowers.isDebugBuild) {
|
||||
// On debug builds, reducing the timings might lead to skip the "warning"
|
||||
// state and will block the test execution.
|
||||
// Do not change the timings in debug builds.
|
||||
return;
|
||||
}
|
||||
|
||||
await pushPref(
|
||||
"devtools.aboutdebugging.test-connection-timing-out-delay",
|
||||
CONNECTION_TIMING_OUT_DELAY
|
||||
|
@ -48,6 +48,6 @@
|
||||
.why-paused .message.warning {
|
||||
color: var(--theme-graphs-full-red);
|
||||
font-family: var(--monospace-font-family);
|
||||
font-size: 12px;
|
||||
font-size: 10px;
|
||||
font-style: normal;
|
||||
}
|
||||
|
@ -112,10 +112,6 @@ pauseOnExceptionsItem2=Pause on exceptions
|
||||
# when the debugger should pause on caught exceptions
|
||||
pauseOnCaughtExceptionsItem=Pause on caught exceptions
|
||||
|
||||
# LOCALIZATION NOTE (workersHeader): The text to display in the events
|
||||
# header.
|
||||
workersHeader=Workers
|
||||
|
||||
# LOCALIZATION NOTE (threadsHeader): The text to describe the threads header
|
||||
threadsHeader=Threads
|
||||
|
||||
@ -143,10 +139,6 @@ inspectorTool=Inspector
|
||||
# the event search input bar
|
||||
eventListenersHeader1.placeholder=Filter by event type
|
||||
|
||||
# LOCALIZATION NOTE (noDomMutationBreakpointsText): The text to display in the
|
||||
# DOM Mutation Breakpoints pane when there are no events.
|
||||
noDomMutationBreakpointsText=No breakpoints to display.
|
||||
|
||||
# LOCALIZATION NOTE (domMutationHeader): The text to display in the
|
||||
# DOM Mutation Breakpoints header
|
||||
domMutationHeader=DOM Mutation Breakpoints
|
||||
|
@ -11,13 +11,6 @@
|
||||
# A good criteria is the language in which you'd find the best
|
||||
# documentation on web development on the web.
|
||||
|
||||
breadcrumbs.siblings=Siblings
|
||||
|
||||
# LOCALIZATION NOTE (nodeMenu.tooltiptext)
|
||||
# This menu appears in the Infobar (on top of the highlighted node) once
|
||||
# the node is selected.
|
||||
nodeMenu.tooltiptext=Node operations
|
||||
|
||||
inspector.panelLabel.markupView=Markup View
|
||||
|
||||
# LOCALIZATION NOTE (markupView.more.showing)
|
||||
@ -172,15 +165,6 @@ inspectorRemoveAttribute.accesskey=R
|
||||
inspectorCopyAttributeValue.label=Copy Attribute Value “%S”
|
||||
inspectorCopyAttributeValue.accesskey=V
|
||||
|
||||
# LOCALIZATION NOTE (inspector.nodePreview.selectNodeLabel):
|
||||
# This string is displayed in a tooltip that is shown when hovering over a DOM
|
||||
# node preview (e.g. something like "div#foo.bar").
|
||||
# DOM node previews can be displayed in places like the animation-inspector, the
|
||||
# console or the object inspector.
|
||||
# The tooltip invites the user to click on the node in order to select it in the
|
||||
# inspector panel.
|
||||
inspector.nodePreview.selectNodeLabel=Click to select this node in the Inspector
|
||||
|
||||
# LOCALIZATION NOTE (inspector.nodePreview.highlightNodeLabel):
|
||||
# This string is displayed in a tooltip that is shown when hovering over a the
|
||||
# inspector icon displayed next to a DOM node preview (e.g. next to something
|
||||
@ -440,11 +424,6 @@ inspector.sidebar.computedViewTitle=Computed
|
||||
# that corresponds to the tool displaying layout information defined in the page.
|
||||
inspector.sidebar.layoutViewTitle2=Layout
|
||||
|
||||
# LOCALIZATION NOTE (inspector.sidebar.newBadge):
|
||||
# This is the text of a promotion badge showed in the inspector sidebar, next to a panel
|
||||
# name. Used to promote new/recent panels such as the layout panel.
|
||||
inspector.sidebar.newBadge=new!
|
||||
|
||||
# LOCALIZATION NOTE (inspector.sidebar.animationInspectorTitle):
|
||||
# This is the title shown in a tab in the side panel of the Inspector panel
|
||||
# that corresponds to the tool displaying animations defined in the page.
|
||||
|
@ -39,14 +39,6 @@ jsonViewer.CollapseAll=Collapse All
|
||||
# pretty print action button.
|
||||
jsonViewer.PrettyPrint=Pretty Print
|
||||
|
||||
# LOCALIZATION NOTE (jsonViewer.reps.more): Label used in arrays
|
||||
# that have more items than displayed.
|
||||
jsonViewer.reps.more=more…
|
||||
|
||||
# LOCALIZATION NOTE (jsonViewer.filterJSON): Label used in search box
|
||||
# at the top right cornder of the JSON Viewer.
|
||||
jsonViewer.filterJSON=Filter JSON
|
||||
|
||||
# LOCALIZATION NOTE (jsonViewer.reps.reference): Label used for cycle
|
||||
# references in an array.
|
||||
jsonViewer.reps.reference=Cycle Reference
|
||||
|
@ -119,10 +119,6 @@ layout.gridDisplaySettings=Grid Display Settings
|
||||
# containers to display.
|
||||
layout.noGridsOnThisPage=CSS Grid is not in use on this page
|
||||
|
||||
# LOCALIZATION NOTE (layout.overlayMultipleGrids): The header for the list of grid
|
||||
# container elements that can be highlighted in the CSS Grid panel.
|
||||
layout.overlayMultipleGrids=Overlay Multiple Grids
|
||||
|
||||
# LOCALIZATION NOTE (layout.overlayGrid): Alternate header for the list of grid container
|
||||
# elements if only one item can be selected.
|
||||
layout.overlayGrid=Overlay Grid
|
||||
|
@ -136,38 +136,3 @@ marker.gcreason.label.USER_INACTIVE=User Inactive
|
||||
|
||||
# The name of a nursery collection.
|
||||
marker.nurseryCollection=Nursery Collection
|
||||
|
||||
# LOCALIZATION NOTE (marker.gcreason.description.*):
|
||||
# These strings are used to give an expanded description of why a GC occurred.
|
||||
marker.gcreason.description.API=There was an API call to force garbage collection.
|
||||
marker.gcreason.description.EAGER_ALLOC_TRIGGER=JavaScript returned to the event loop and there were enough bytes allocated since the last GC that a new GC cycle was triggered.
|
||||
marker.gcreason.description.DESTROY_RUNTIME=Firefox destroyed a JavaScript runtime or context, and this was the final garbage collection before shutting down.
|
||||
marker.gcreason.description.LAST_DITCH=JavaScript attempted to allocate, but there was no memory available. Doing a full compacting garbage collection as an attempt to free up memory for the allocation.
|
||||
marker.gcreason.description.TOO_MUCH_MALLOC=JavaScript allocated too many bytes, and forced a garbage collection.
|
||||
marker.gcreason.description.ALLOC_TRIGGER=JavaScript allocated too many times, and forced a garbage collection.
|
||||
marker.gcreason.description.DEBUG_GC=GC due to Zeal debug settings.
|
||||
marker.gcreason.description.COMPARTMENT_REVIVED=A global object that was thought to be dead at the start of the GC cycle was revived by the end of the GC cycle.
|
||||
marker.gcreason.description.RESET=The active incremental GC cycle was forced to finish immediately.
|
||||
marker.gcreason.description.OUT_OF_NURSERY=JavaScript allocated enough new objects in the nursery that it became full and triggered a minor GC.
|
||||
marker.gcreason.description.EVICT_NURSERY=Work needed to be done on the tenured heap, requiring the nursery to be empty.
|
||||
marker.gcreason.description.FULL_STORE_BUFFER=There were too many properties on tenured objects whose value was an object in the nursery.
|
||||
marker.gcreason.description.SHARED_MEMORY_LIMIT=A large allocation was requested, but there was not enough memory.
|
||||
marker.gcreason.description.PERIODIC_FULL_GC=JavaScript returned to the event loop, and it has been a relatively long time since Firefox performed a garbage collection.
|
||||
marker.gcreason.description.INCREMENTAL_TOO_SLOW=A full, non-incremental garbage collection was triggered because there was a faster rate of allocations than the existing incremental garbage collection cycle could keep up with.
|
||||
marker.gcreason.description.COMPONENT_UTILS=Components.utils.forceGC() was called to force a garbage collection.
|
||||
marker.gcreason.description.MEM_PRESSURE=There was very low memory available.
|
||||
marker.gcreason.description.CC_WAITING=The cycle collector required a garbage collection.
|
||||
marker.gcreason.description.CC_FORCED=The cycle collector required a garbage collection.
|
||||
marker.gcreason.description.LOAD_END=The document finished loading.
|
||||
marker.gcreason.description.PAGE_HIDE=The tab or window was moved to the background.
|
||||
marker.gcreason.description.NSJSCONTEXT_DESTROY=Firefox destroyed a JavaScript runtime or context, and this was the final garbage collection before shutting down.
|
||||
marker.gcreason.description.SET_NEW_DOCUMENT=The page has been navigated to a new document.
|
||||
marker.gcreason.description.SET_DOC_SHELL=The page has been navigated to a new document.
|
||||
marker.gcreason.description.DOM_UTILS=There was an API call to force garbage collection.
|
||||
marker.gcreason.description.DOM_IPC=Received an inter-process message that requested a garbage collection.
|
||||
marker.gcreason.description.DOM_WORKER=The worker was idle for a relatively long time.
|
||||
marker.gcreason.description.INTER_SLICE_GC=There has been a relatively long time since the last incremental GC slice.
|
||||
marker.gcreason.description.FULL_GC_TIMER=JavaScript returned to the event loop, and it has been a relatively long time since we performed a garbage collection.
|
||||
marker.gcreason.description.SHUTDOWN_CC=Firefox destroyed a JavaScript runtime or context, and this was the final garbage collection before shutting down.
|
||||
marker.gcreason.description.DOM_WINDOW_UTILS=The user was inactive for a long time. Took the opportunity to perform GC when it was unlikely to be noticed.
|
||||
marker.gcreason.description.USER_INACTIVE=The user was inactive for a long time. Firefox took the opportunity to perform GC when it was unlikely to be noticed.
|
||||
|
@ -80,18 +80,6 @@ censusDisplays.allocationStack.tooltip=Group items by the JavaScript stack recor
|
||||
# tooltip for the "inverted call stack" display option.
|
||||
censusDisplays.invertedAllocationStack.tooltip=Group items by the inverted JavaScript call stack recorded when the object was created
|
||||
|
||||
# LOCALIZATION NOTE (censusDisplays.treeMap.tooltip): The tooltip for the
|
||||
# "tree map" display option.
|
||||
censusDisplays.treeMap.tooltip=Visualize memory usage: larger blocks account for a larger percent of memory usage
|
||||
|
||||
# LOCALIZATION NOTE (censusDisplays.objectClass.tooltip): The tooltip for the
|
||||
# "object class" display option.
|
||||
censusDisplays.objectClass.tooltip=Group items by their JavaScript Object [[class]] name
|
||||
|
||||
# LOCALIZATION NOTE (censusDisplays.internalType.tooltip): The tooltip for the
|
||||
# "internal type" display option.
|
||||
censusDisplays.internalType.tooltip=Group items by their internal C++ type
|
||||
|
||||
# LOCALIZATION NOTE (toolbar.labelBy): The label describing the select menu
|
||||
# options of the label options.
|
||||
toolbar.labelBy=Label by:
|
||||
@ -108,10 +96,6 @@ dominatorTreeDisplays.coarseType.tooltip=Label objects by the broad categories t
|
||||
# tooltip for the "call stack" dominator tree display option.
|
||||
dominatorTreeDisplays.allocationStack.tooltip=Label objects by the JavaScript stack recorded when it was allocated
|
||||
|
||||
# LOCALIZATION NOTE (dominatorTreeDisplays.internalType.tooltip): The
|
||||
# tooltip for the "internal type" dominator tree display option.
|
||||
dominatorTreeDisplays.internalType.tooltip=Label objects by their internal C++ type name
|
||||
|
||||
# LOCALIZATION NOTE (treeMapDisplays.coarseType.tooltip): The tooltip for
|
||||
# the "coarse type" tree map display option.
|
||||
treeMapDisplays.coarseType.tooltip=Label objects by the broad categories they fit in
|
||||
@ -282,10 +266,6 @@ dominatorTree.state.error.full=There was an error while processing the dominator
|
||||
# snapshot state SAVING, used in the main heap view.
|
||||
snapshot.state.saving.full=Saving snapshot…
|
||||
|
||||
# LOCALIZATION NOTE (snapshot.state.importing.full): The label describing the
|
||||
# snapshot state IMPORTING, used in the main heap view.
|
||||
snapshot.state.importing.full=Importing…
|
||||
|
||||
# LOCALIZATION NOTE (snapshot.state.reading.full): The label describing the
|
||||
# snapshot state READING, and SAVED, due to these states being combined
|
||||
# visually, used in the main heap view.
|
||||
|
@ -265,11 +265,6 @@ networkMenu.sizeCached=cached
|
||||
# by a service worker.
|
||||
networkMenu.sizeServiceWorker=service worker
|
||||
|
||||
# LOCALIZATION NOTE (networkMenu.blockedBy): This is the label displayed
|
||||
# in the network menu specifying the request was blocked by something.
|
||||
# %S is replaced by the blocked reason, which could be "DevTools", "CORS", etc.
|
||||
networkMenu.blockedBy=blocked by %S
|
||||
|
||||
# LOCALIZATION NOTE (networkMenu.blocked): This is a generic message for a
|
||||
# URL that has been blocked for an unknown reason
|
||||
networkMenu.blocked=blocked
|
||||
@ -432,61 +427,6 @@ netRequest.originalFileURL.tooltip=Original: %S
|
||||
# a request.
|
||||
netRequest.decodedFileURL.tooltip=Decoded: %S
|
||||
|
||||
# LOCALIZATION NOTE (netRequest.headers): A label used for Headers tab
|
||||
# This tab displays list of HTTP headers
|
||||
netRequest.headers=Headers
|
||||
|
||||
# LOCALIZATION NOTE (netRequest.response): A label used for Response tab
|
||||
# This tab displays HTTP response body
|
||||
netRequest.response=Response
|
||||
|
||||
# LOCALIZATION NOTE (netRequest.rawData): A label used for a section
|
||||
# in Response tab. This section displays raw response body as it's
|
||||
# been received from the backend (debugger server)
|
||||
netRequest.rawData=Raw Data
|
||||
|
||||
# LOCALIZATION NOTE (netRequest.xml): A label used for a section
|
||||
# in Response tab. This section displays parsed XML response body.
|
||||
netRequest.xml=XML
|
||||
|
||||
# LOCALIZATION NOTE (netRequest.image): A label used for a section
|
||||
# in Response tab. This section displays images returned in response body.
|
||||
netRequest.image=Image
|
||||
|
||||
# LOCALIZATION NOTE (netRequest.sizeLimitMessage): A label used
|
||||
# in Response and Post tabs in case the body is bigger than given limit.
|
||||
# It allows the user to click and fetch more from the backend.
|
||||
# The {{link}} will be replace at run-time by an active link.
|
||||
# String with ID 'netRequest.sizeLimitMessageLink' will be used as text
|
||||
# for this link.
|
||||
netRequest.sizeLimitMessage=Size limit has been reached. Click {{link}} to load more.
|
||||
netRequest.sizeLimitMessageLink=here
|
||||
|
||||
# LOCALIZATION NOTE (netRequest.responseBodyDiscarded): A label used
|
||||
# in Response tab if the response body is not available.
|
||||
netRequest.responseBodyDiscarded=Response body was not stored.
|
||||
|
||||
# LOCALIZATION NOTE (netRequest.requestBodyDiscarded): A label used
|
||||
# in Post tab if the post body is not available.
|
||||
netRequest.requestBodyDiscarded=Request POST body was not stored.
|
||||
|
||||
# LOCALIZATION NOTE (netRequest.post): A label used for Post tab
|
||||
# This tab displays HTTP post body
|
||||
netRequest.post=POST
|
||||
|
||||
# LOCALIZATION NOTE (netRequest.cookies): A label used for Cookies tab
|
||||
# This tab displays request and response cookies.
|
||||
netRequest.cookies=Cookies
|
||||
|
||||
# LOCALIZATION NOTE (netRequest.params): A label used for URL parameters tab
|
||||
# This tab displays data parsed from URL query string.
|
||||
netRequest.params=Params
|
||||
|
||||
# LOCALIZATION NOTE (netRequest.callstack): A label used for request stacktrace tab
|
||||
# This tab displays the request's JavaScript stack trace. Should be identical to
|
||||
# debuggerUI.tabs.callstack
|
||||
netRequest.callstack=Call Stack
|
||||
|
||||
# LOCALIZATION NOTE (certmgr.subjectinfo.label):
|
||||
# A label used for a certificate section in security tab.
|
||||
# This section displays Name and organization who has been assigned the fingerprints
|
||||
@ -763,14 +703,6 @@ netmonitor.search.toolbar.clear=Clear Search Results
|
||||
# displayed in the search toolbar to do a case sensitive search.
|
||||
netmonitor.search.toolbar.caseSensitive=Case Sensitive
|
||||
|
||||
# LOCALIZATION NOTE (netmonitor.search.labels.responseHeaders): This is the label
|
||||
# displayed in the search results as the label for the response headers
|
||||
netmonitor.search.labels.responseHeaders=Response Header
|
||||
|
||||
# LOCALIZATION NOTE (netmonitor.search.labels.requestHeaders): This is the label
|
||||
# displayed in the search results as the label for the request headers
|
||||
netmonitor.search.labels.requestHeaders=Request Header
|
||||
|
||||
# LOCALIZATION NOTE (netmonitor.search.status.labels.fetching): This is the label
|
||||
# displayed in the search results status bar when status is set to fetching.
|
||||
netmonitor.search.status.labels.fetching=Searching…
|
||||
@ -951,10 +883,6 @@ netmonitor.toolbar.toggleRecording=Pause/Resume recording network log
|
||||
# in the network toolbar for the search button.
|
||||
netmonitor.toolbar.search=Search
|
||||
|
||||
# LOCALIZATION NOTE (netmonitor.toolbar.perf): This is the label displayed
|
||||
# in the network toolbar for the performance analysis button.
|
||||
netmonitor.toolbar.perf=Toggle performance analysis…
|
||||
|
||||
# LOCALIZATION NOTE (netmonitor.toolbar.resetColumns): This is the label
|
||||
# displayed in the network table header context menu.
|
||||
netmonitor.toolbar.resetColumns=Reset Columns
|
||||
@ -1010,18 +938,6 @@ netmonitor.summary.editAndResend=Edit and Resend
|
||||
# from the currently displayed request
|
||||
netmonitor.summary.rawHeaders=Raw headers
|
||||
|
||||
# LOCALIZATION NOTE (netmonitor.summary.rawHeaders.requestHeaders): This is the label displayed
|
||||
# in the network details headers tab identifying the raw request headers textarea
|
||||
netmonitor.summary.rawHeaders.requestHeaders=Request headers:
|
||||
|
||||
# LOCALIZATION NOTE (netmonitor.summary.rawHeaders.responseHeaders): This is the label displayed
|
||||
# in the network details headers tab identifying the raw response headers textarea
|
||||
netmonitor.summary.rawHeaders.responseHeaders=Response headers:
|
||||
|
||||
# LOCALIZATION NOTE (netmonitor.summary.size): This is the label displayed
|
||||
# in the network details headers tab identifying the headers size.
|
||||
netmonitor.summary.size=Headers size:
|
||||
|
||||
# LOCALIZATION NOTE (netmonitor.response.name): This is the label displayed
|
||||
# in the network details response tab identifying an image's file name.
|
||||
netmonitor.response.name=Name:
|
||||
@ -1391,10 +1307,6 @@ netmonitor.custom.cancel=Cancel
|
||||
# on the button which exists the performance statistics view
|
||||
netmonitor.backButton=Back
|
||||
|
||||
# LOCALIZATION NOTE (netmonitor.headers.learnMore): This is the label displayed
|
||||
# next to a header list item, with a link to external documentation
|
||||
netmonitor.headers.learnMore=Learn More
|
||||
|
||||
# LOCALIZATION NOTE (netmonitor.status.tooltip.simple): This is the tooltip of the
|
||||
# column status code, when request is not being cached or is not from a service worker
|
||||
# %1$S is the status code, %2$S is the status text.
|
||||
|
@ -21,9 +21,6 @@ responsive.exit=Close Responsive Design Mode
|
||||
# LOCALIZATION NOTE (responsive.rotate): Tooltip text of the rotate button.
|
||||
responsive.rotate=Rotate viewport
|
||||
|
||||
# LOCALIZATION NOTE (responsive.done): Button text in the device list modal
|
||||
responsive.done=Done
|
||||
|
||||
# LOCALIZATION NOTE (responsive.responsiveMode): Placeholder text for the
|
||||
# device selector.
|
||||
responsive.responsiveMode=Responsive
|
||||
|
@ -15,10 +15,6 @@
|
||||
# the user attempts to save to an already existing file.
|
||||
export.fileOverwriteConfirmation=File exists. Overwrite?
|
||||
|
||||
# LOCALIZATION NOTE (browserWindow.unavailable): This error message is shown
|
||||
# when Scratchpad does not find any recently active main browser window.
|
||||
browserWindow.unavailable=Scratchpad cannot find any browser window to execute the code in.
|
||||
|
||||
# LOCALIZATION NOTE (scratchpadContext.invalid): This error message is shown
|
||||
# when user tries to run an operation in Scratchpad in an unsupported context.
|
||||
scratchpadContext.invalid=Scratchpad cannot run this operation in the current mode.
|
||||
|
@ -13,11 +13,6 @@
|
||||
# A good criteria is the language in which you'd find the best documentation
|
||||
# on web development on the web.
|
||||
|
||||
# LOCALIZATION NOTE (findCmd.promptTitle): This is the dialog title used
|
||||
# when the user wants to search for a string in the code. You can
|
||||
# access this feature by pressing Ctrl-F on Windows/Linux or Cmd-F on Mac.
|
||||
findCmd.promptTitle=Find…
|
||||
|
||||
# LOCALIZATION NOTE (findCmd.promptMessage): This is the message shown when
|
||||
# the user wants to search for a string in the code. You can
|
||||
# access this feature by pressing Ctrl-F on Windows/Linux or Cmd-F on Mac.
|
||||
@ -28,27 +23,6 @@ findCmd.promptMessage=Search for:
|
||||
# access this feature by pressing Ctrl-J on Windows/Linux or Cmd-J on Mac.
|
||||
gotoLineCmd.promptTitle=Go to line…
|
||||
|
||||
# LOCALIZATION NOTE (gotoLineCmd.promptMessage): This is the message shown when
|
||||
# the user wants to jump to a specific line number in the code. You can
|
||||
# access this feature by pressing Ctrl-J on Windows/Linux or Cmd-J on Mac.
|
||||
gotoLineCmd.promptMessage=Jump to line number:
|
||||
|
||||
# LOCALIZATION NOTE (annotation.breakpoint.title): This is the text shown in
|
||||
# front of any breakpoint annotation when it is displayed as a tooltip in one of
|
||||
# the editor gutters. This feature is used in the JavaScript Debugger.
|
||||
annotation.breakpoint.title=Breakpoint: %S
|
||||
|
||||
# LOCALIZATION NOTE (annotation.currentLine): This is the text shown in
|
||||
# a tooltip displayed in any of the editor gutters when the user hovers the
|
||||
# current line.
|
||||
annotation.currentLine=Current line
|
||||
|
||||
# LOCALIZATION NOTE (annotation.debugLocation.title): This is the text shown in
|
||||
# a tooltip displayed in any of the editor gutters when the user hovers the
|
||||
# current debugger location. The debugger can pause the JavaScript execution at
|
||||
# user-defined lines.
|
||||
annotation.debugLocation.title=Current step: %S
|
||||
|
||||
# LOCALIZATION NOTE (autocompletion.docsLink): This is the text shown on
|
||||
# the link inside of the documentation popup. If you type 'document' in Scratchpad
|
||||
# then press Shift+Space you can see the popup.
|
||||
|
@ -279,8 +279,3 @@ toolbox.buttons.rulers = Toggle rulers for the page
|
||||
# This is the tooltip of the button in the toolbox toolbar that toggles the
|
||||
# measuring tools
|
||||
toolbox.buttons.measure = Measure a portion of the page
|
||||
|
||||
# LOCALIZATION NOTE (toolbox.tab.newBadge):
|
||||
# This is the text of a promotion badge showed in the toobox tab bar, next to a tab panel
|
||||
# name. Used to promote new/recent panels such as the accessibility panel.
|
||||
toolbox.tab.newBadge=New
|
||||
|
@ -13,11 +13,6 @@
|
||||
# Key shortcut used to focus the filter box on top of the data view
|
||||
storage.filter.key=CmdOrCtrl+F
|
||||
|
||||
# LOCALIZATION NOTE (tree.emptyText):
|
||||
# This string is displayed when the Storage Tree is empty. This can happen when
|
||||
# there are no websites on the current page (about:blank)
|
||||
tree.emptyText=No hosts on the page
|
||||
|
||||
# LOCALIZATION NOTE (table.emptyText):
|
||||
# This string is displayed when there are no rows in the Storage Table for the
|
||||
# selected host.
|
||||
|
@ -27,11 +27,6 @@ toolbox.label=Developer Tools
|
||||
# The name of the tool: %1$S.
|
||||
options.toolNotSupportedMarker=%1$S *
|
||||
|
||||
# LOCALIZATION NOTE (scratchpad.keycode)
|
||||
# Used for opening scratchpad from the detached toolbox window
|
||||
# Needs to match scratchpad.keycode from browser.dtd
|
||||
scratchpad.keycode=VK_F4
|
||||
|
||||
# LOCALIZATION NOTE (toolbox.pickButton.tooltip)
|
||||
# This is the tooltip of the element picker button in the toolbox toolbar.
|
||||
# %S is the keyboard shortcut that toggles the element picker.
|
||||
@ -183,10 +178,6 @@ toolbox.meatballMenu.community.label=Community…
|
||||
# the close button the developer tools toolbox.
|
||||
toolbox.closebutton.tooltip=Close Developer Tools
|
||||
|
||||
# LOCALIZATION NOTE (toolbox.allToolsButton.tooltip): This is the tooltip for the
|
||||
# "all tools" button displayed when some tools are hidden by overflow of the toolbar.
|
||||
toolbox.allToolsButton.tooltip=Select another tool
|
||||
|
||||
# LOCALIZATION NOTE (toolbox.sourceMapFailure): This is shown in the web console
|
||||
# when there is a failure to fetch or parse a source map.
|
||||
# The text of the error: %1$S
|
||||
@ -201,11 +192,6 @@ toolbox.sourceMapFailure=Source map error: %1$S\nResource URL: %2$S\nSource Map
|
||||
# The URL of the source: %2$S
|
||||
toolbox.sourceMapSourceFailure=Error while fetching an original source: %1$S\nSource URL: %2$S
|
||||
|
||||
# LOCALIZATION NOTE (toolbox.options.enableNewDebugger.label): Label of the options panel
|
||||
# checkbox to enable the new debugger frontend. Displayed only in Nightly and local
|
||||
# builds.
|
||||
toolbox.options.enableNewDebugger.label=Enable new debugger frontend
|
||||
|
||||
# LOCALIZATION NOTE (toolbox.debugTargetInfo.runtimeLabel): This is displayed as a toolbox
|
||||
# header in about:devtools-toolbox. about:devtools-toolbox is used for instance when
|
||||
# inspecting tabs in about:debugging.
|
||||
@ -221,15 +207,6 @@ toolbox.debugTargetInfo.runtimeLabel=%1$S (%2$S)
|
||||
# The version of runtime: %S
|
||||
toolbox.debugTargetInfo.runtimeLabel.thisFirefox=This Firefox (%S)
|
||||
|
||||
# LOCALIZATION NOTE (toolbox.debugTargetInfo.runtimeLabelWithDeviceName): This is displayed
|
||||
# as a toolbox header in about:devtools-toolbox. about:devtools-toolbox is used for
|
||||
# instance when inspecting tabs in about:debugging.
|
||||
# e.g. Mozilla Fennec on Pixel 2 (65.0a1)
|
||||
# The name of runtime: %1$S
|
||||
# The version of runtime: %2$S
|
||||
# The device name of runtime: %3$S
|
||||
toolbox.debugTargetInfo.runtimeLabelWithDeviceName=%1$S on %3$S (%2$S)
|
||||
|
||||
# LOCALIZATION NOTE (toolbox.debugTargetInfo.tabTitleRemote):
|
||||
# Used as the tab title for about:devtools-toolbox when connected to a remote target.
|
||||
# The connection type (see toolbox.debugTargetInfo.connection.*): %1$S
|
||||
@ -248,20 +225,6 @@ toolbox.debugTargetInfo.tabTitleLocal=Toolbox - %1$S / %2$S
|
||||
# target.
|
||||
toolbox.debugTargetInfo.tabTitleError=Toolbox - error occurred
|
||||
|
||||
# LOCALIZATION NOTE (toolbox.debugTargetInfo.targetLabel): This is displayed as a toolbox
|
||||
# header in about:devtools-toolbox. about:devtools-toolbox is used for instance when
|
||||
# inspecting tabs in about:debugging.
|
||||
# e.g. Internet for people, not profit — Mozilla (tab)
|
||||
# The name of debug target: %1$S
|
||||
# The type of debug target: %2$S
|
||||
toolbox.debugTargetInfo.targetLabel=%1$S (%2$S)
|
||||
|
||||
# LOCALIZATION NOTE (toolbox.debugTargetInfo.type.tab): This is displayed as a toolbox
|
||||
# header in about:devtools-toolbox. about:devtools-toolbox is used for instance when
|
||||
# inspecting tabs in about:debugging.
|
||||
# Currently, we support only this type.
|
||||
toolbox.debugTargetInfo.type.tab=tab
|
||||
|
||||
# LOCALIZATION NOTE (toolbox.debugTargetInfo.connection.*): This is displayed in the
|
||||
# toolbox header in about:devtools-toolbox, to indicate how the connection to the
|
||||
# runtime being inspected was made.
|
||||
|
@ -75,10 +75,6 @@ connectionTimeout=Connection timeout. Check the Error Console on both ends for p
|
||||
# appears in the filter text box for the properties view container.
|
||||
propertiesFilterPlaceholder=Filter properties
|
||||
|
||||
# LOCALIZATION NOTE (emptyPropertiesList): the text that is displayed in the
|
||||
# properties pane when there are no properties to display.
|
||||
emptyPropertiesList=No properties to display
|
||||
|
||||
# LOCALIZATION NOTE (messageRepeats.tooltip2): the tooltip text that is displayed
|
||||
# when you hover the red bubble that shows how many times a message is repeated
|
||||
# in the web console output.
|
||||
@ -312,10 +308,6 @@ webconsole.filteredMessagesByText.label=#1 hidden;#1 hidden
|
||||
# example: 345 items hidden by text filter.
|
||||
webconsole.filteredMessagesByText.tooltip=#1 item hidden by text filter;#1 items hidden by text filter
|
||||
|
||||
# Label used as the text of the "Reset filters" button in the "filtered messages" bar.
|
||||
# It resets the default filters of the console to their original values.
|
||||
webconsole.resetFiltersButton.label=Reset filters
|
||||
|
||||
# LOCALIZATION NOTE (webconsole.enablePersistentLogs.label)
|
||||
webconsole.enablePersistentLogs.label=Persist Logs
|
||||
# LOCALIZATION NOTE (webconsole.enablePersistentLogs.tooltip)
|
||||
|
@ -6,7 +6,6 @@ title_noApp=Firefox WebIDE
|
||||
title_app=Firefox WebIDE: %S
|
||||
|
||||
runtimeButton_label=Select Runtime
|
||||
projectButton_label=Open App
|
||||
|
||||
mainProcess_label=Main Process
|
||||
|
||||
@ -33,7 +32,6 @@ project_tab_loading=Loading…
|
||||
|
||||
error_cantInstallNotFullyConnected=Can’t install project. Not fully connected.
|
||||
error_cantInstallValidationErrors=Can’t install project. Validation errors.
|
||||
error_listRunningApps=Can’t get app list from device
|
||||
|
||||
# Variable: name of the operation (in english)
|
||||
error_operationTimeout=Operation timed out: %1$S
|
||||
@ -68,8 +66,6 @@ error_webIDEDeprecated2=WebIDE will be disabled in an upcoming release. Remote d
|
||||
notification_openAboutDebugging.label=Open about:debugging
|
||||
notification_openAboutDebugging.accesskey=O
|
||||
|
||||
addons_stable=stable
|
||||
addons_unstable=unstable
|
||||
addons_install_button=install
|
||||
addons_uninstall_button=uninstall
|
||||
addons_adb_warning=USB devices won’t be detected without this add-on
|
||||
@ -80,21 +76,10 @@ addons_status_preparing=preparing
|
||||
addons_status_downloading=downloading
|
||||
addons_status_installing=installing
|
||||
|
||||
runtimedetails_checkno=no
|
||||
runtimedetails_checkyes=yes
|
||||
runtimedetails_notUSBDevice=Not a USB device
|
||||
|
||||
# LOCALIZATION NOTE (runtimePanel_noadbextension): Displayed in the WebIDE right sidebar
|
||||
# when the ADB Extension is not installed, %S will be replaced with the name of extension
|
||||
# ("ADB Extension").
|
||||
runtimePanel_noadbextension=Install %S
|
||||
|
||||
# Validation status
|
||||
status_tooltip=Validation status: %1$S
|
||||
status_valid=VALID
|
||||
status_warning=WARNINGS
|
||||
status_error=ERRORS
|
||||
status_unknown=UNKNOWN
|
||||
|
||||
# Device preferences and settings
|
||||
device_reset_default=Reset to default
|
||||
|
@ -28,6 +28,7 @@ support-files =
|
||||
[browser_dbg_rr_stepping-02.js]
|
||||
[browser_dbg_rr_stepping-03.js]
|
||||
[browser_dbg_rr_stepping-04.js]
|
||||
[browser_dbg_rr_stepping-05.js]
|
||||
[browser_dbg_rr_replay-01.js]
|
||||
[browser_dbg_rr_replay-02.js]
|
||||
[browser_dbg_rr_replay-03.js]
|
||||
|
@ -6,8 +6,6 @@
|
||||
|
||||
// Test event logpoints when replaying.
|
||||
add_task(async function() {
|
||||
await pushPref("devtools.debugger.features.log-event-breakpoints", true);
|
||||
|
||||
const dbg = await attachRecordingDebugger("doc_events.html", {
|
||||
waitForRecording: true,
|
||||
});
|
||||
|
@ -0,0 +1,31 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
/* eslint-disable no-undef */
|
||||
|
||||
"use strict";
|
||||
|
||||
// Test stepping in pretty-printed code.
|
||||
add_task(async function() {
|
||||
const dbg = await attachRecordingDebugger("doc_minified.html", {
|
||||
waitForRecording: true,
|
||||
});
|
||||
|
||||
await selectSource(dbg, "minified.js");
|
||||
await prettyPrint(dbg);
|
||||
|
||||
await dbg.actions.addEventListenerBreakpoints(["event.mouse.click"]);
|
||||
await dbg.actions.toggleEventLogging();
|
||||
|
||||
const console = await getDebuggerSplitConsole(dbg);
|
||||
const hud = console.hud;
|
||||
|
||||
await warpToMessage(hud, dbg, "click", 12);
|
||||
await stepInToLine(dbg, 2);
|
||||
await stepOutToLine(dbg, 12);
|
||||
await stepInToLine(dbg, 9);
|
||||
await stepOutToLine(dbg, 13);
|
||||
await stepInToLine(dbg, 5);
|
||||
await stepOutToLine(dbg, 14);
|
||||
|
||||
await shutdownDebugger(dbg);
|
||||
});
|
@ -0,0 +1,13 @@
|
||||
<div id="divvy">Hello World!</div>
|
||||
<script src="/tests/SimpleTest/EventUtils.js"></script>
|
||||
<script src="minified.js"></script>
|
||||
<script>
|
||||
const cpmm = SpecialPowers.Services.cpmm;
|
||||
function recordingFinished() {
|
||||
cpmm.sendAsyncMessage("RecordingFinished");
|
||||
}
|
||||
window.setTimeout(() => {
|
||||
synthesizeMouseAtCenter(divvy, {});
|
||||
window.setTimeout(recordingFinished);
|
||||
});
|
||||
</script>
|
1
devtools/client/webreplay/mochitest/examples/minified.js
Normal file
1
devtools/client/webreplay/mochitest/examples/minified.js
Normal file
@ -0,0 +1 @@
|
||||
const s={getWindow:()=>window};function f(){this.getElementById("divvy").innerHTML="Done!"}const nf=f.bind(document);function DOMEvent(n,e){console.log("DOMEvent",e)}function h(n){n=new DOMEvent(n,s.getWindow()),!1===nf.call(s,n)}document.getElementById("divvy").addEventListener("click",h);
|
@ -148,7 +148,7 @@ async function waitForMessageCount(hud, text, length, selector = ".message") {
|
||||
return messages;
|
||||
}
|
||||
|
||||
async function warpToMessage(hud, dbg, text) {
|
||||
async function warpToMessage(hud, dbg, text, maybeLine) {
|
||||
let messages = await waitForMessages(hud, text);
|
||||
ok(messages.length == 1, "Found one message");
|
||||
const message = messages.pop();
|
||||
@ -168,6 +168,11 @@ async function warpToMessage(hud, dbg, text) {
|
||||
messages = findMessages(hud, "", ".paused");
|
||||
ok(messages.length == 1, "Found one paused message");
|
||||
|
||||
if (maybeLine) {
|
||||
const pauseLine = getVisibleSelectedFrameLine(dbg);
|
||||
ok(pauseLine == maybeLine, `Paused at line ${maybeLine} after warp`);
|
||||
}
|
||||
|
||||
return message;
|
||||
|
||||
async function openConsoleContextMenu(element) {
|
||||
|
@ -219,6 +219,9 @@ ChildProcess.prototype = {
|
||||
if (response.memoryUsage) {
|
||||
this.lastMemoryUsage = response.memoryUsage;
|
||||
}
|
||||
if (response.exception) {
|
||||
ThrowError(response.exception);
|
||||
}
|
||||
}
|
||||
this.paused = true;
|
||||
this.manifest.onFinished(response);
|
||||
@ -1546,7 +1549,16 @@ async function findEventFrameEntry(checkpoint, progress) {
|
||||
scanCheckpoint: savedCheckpoint,
|
||||
});
|
||||
|
||||
return gEventFrameEntryPoints.get(progress);
|
||||
const enterFramePoint = gEventFrameEntryPoints.get(progress);
|
||||
if (!enterFramePoint) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// We want to stop at the first step in the frame, not at the EnterFrame.
|
||||
const frameSteps = await findFrameSteps(enterFramePoint);
|
||||
assert(pointEquals(frameSteps[0], enterFramePoint));
|
||||
|
||||
return frameSteps[1];
|
||||
}
|
||||
|
||||
async function findEventLogpointHits(checkpoint, event, callback) {
|
||||
@ -1687,12 +1699,11 @@ let gLastFlushTime = Date.now();
|
||||
|
||||
// If necessary, synchronously flush the recording to disk.
|
||||
function ensureFlushed() {
|
||||
assert(gActiveChild == gMainChild);
|
||||
gMainChild.waitUntilPaused(true);
|
||||
|
||||
gLastFlushTime = Date.now();
|
||||
|
||||
if (gLastFlushCheckpoint == gActiveChild.pauseCheckpoint()) {
|
||||
if (gLastFlushCheckpoint == gMainChild.pauseCheckpoint()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1884,6 +1895,7 @@ const gControl = {
|
||||
|
||||
// Add a breakpoint where the active child should pause while resuming.
|
||||
addBreakpoint(position) {
|
||||
dumpv(`AddBreakpoint ${JSON.stringify(position)}`);
|
||||
gBreakpoints.push(position);
|
||||
|
||||
// Start searching for breakpoint hits in the recording immediately.
|
||||
@ -1904,7 +1916,9 @@ const gControl = {
|
||||
|
||||
// Clear all installed breakpoints.
|
||||
clearBreakpoints() {
|
||||
dumpv(`ClearBreakpoints\n`);
|
||||
gBreakpoints.length = 0;
|
||||
|
||||
if (gActiveChild == gMainChild) {
|
||||
// As for addBreakpoint(), update the active breakpoints in the recording
|
||||
// child immediately.
|
||||
|
@ -268,9 +268,6 @@ ReplayDebugger.prototype = {
|
||||
|
||||
_processResponse(request, response, divergeResponse) {
|
||||
dumpv(`SendRequest: ${stringify(request)} -> ${stringify(response)}`);
|
||||
if (response.exception) {
|
||||
ThrowError(response.exception);
|
||||
}
|
||||
if (response.unhandledDivergence) {
|
||||
if (divergeResponse) {
|
||||
return divergeResponse;
|
||||
|
@ -1054,7 +1054,10 @@ function ManifestStart(manifest) {
|
||||
dump(`Unknown manifest: ${JSON.stringify(manifest)}\n`);
|
||||
}
|
||||
} catch (e) {
|
||||
printError("ManifestStart", e);
|
||||
const msg = printError("ManifestStart", e);
|
||||
RecordReplayControl.manifestFinished({
|
||||
exception: `ManifestStart failed: ${msg}`,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -1184,7 +1187,10 @@ function HitCheckpoint(id) {
|
||||
try {
|
||||
processManifestAfterCheckpoint(point);
|
||||
} catch (e) {
|
||||
printError("AfterCheckpoint", e);
|
||||
const msg = printError("AfterCheckpoint", e);
|
||||
RecordReplayControl.manifestFinished({
|
||||
exception: `AfterCheckpoint failed: ${msg}`,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -1356,17 +1362,21 @@ function getObjectData(id) {
|
||||
rv.proxyTarget = convertValue(object.proxyTarget);
|
||||
rv.proxyHandler = convertValue(object.proxyHandler);
|
||||
}
|
||||
if (object.errorMessageName) {
|
||||
rv.errorMessageName = object.errorMessageName;
|
||||
}
|
||||
if (object.errorNotes) {
|
||||
rv.errorNotes = object.errorNotes;
|
||||
}
|
||||
if (object.errorLineNumber) {
|
||||
rv.errorLineNumber = object.errorLineNumber;
|
||||
}
|
||||
if (object.errorColumnNumber) {
|
||||
rv.errorColumnNumber = object.errorColumnNumber;
|
||||
try {
|
||||
if (object.errorMessageName) {
|
||||
rv.errorMessageName = object.errorMessageName;
|
||||
}
|
||||
if (object.errorNotes) {
|
||||
rv.errorNotes = object.errorNotes;
|
||||
}
|
||||
if (object.errorLineNumber) {
|
||||
rv.errorLineNumber = object.errorLineNumber;
|
||||
}
|
||||
if (object.errorColumnNumber) {
|
||||
rv.errorColumnNumber = object.errorColumnNumber;
|
||||
}
|
||||
} catch (e) {
|
||||
// Error getters can throw access denied errors.
|
||||
}
|
||||
if (CSSRule.isInstance(object.unsafeDereference())) {
|
||||
rv.isInstance = "CSSRule";
|
||||
@ -2048,15 +2058,10 @@ const gRequestHandlers = {
|
||||
};
|
||||
|
||||
function processRequest(request) {
|
||||
try {
|
||||
if (gRequestHandlers[request.type]) {
|
||||
return gRequestHandlers[request.type](request);
|
||||
}
|
||||
return { exception: "No handler for " + request.type };
|
||||
} catch (e) {
|
||||
printError("processRequest", e);
|
||||
return { exception: `Request failed: ${request.type}` };
|
||||
if (gRequestHandlers[request.type]) {
|
||||
return gRequestHandlers[request.type](request);
|
||||
}
|
||||
throwError(`"No handler for ${request.type}`);
|
||||
}
|
||||
|
||||
function printError(why, e) {
|
||||
@ -2067,6 +2072,7 @@ function printError(why, e) {
|
||||
msg = "Unknown";
|
||||
}
|
||||
dump(`Record/Replay Error: ${why}: ${msg}\n`);
|
||||
return msg;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
|
@ -16,7 +16,7 @@ function getNeighbors(frame, offset, rewinding) {
|
||||
* return an array of all the step targets
|
||||
* that could be reached next from startLocation.
|
||||
*/
|
||||
function findStepOffsets(frame, rewinding) {
|
||||
function findStepOffsets(frame, rewinding, requireStepStart = true) {
|
||||
const seen = [];
|
||||
const result = [];
|
||||
let worklist = getNeighbors(frame, frame.offset, rewinding);
|
||||
@ -28,7 +28,7 @@ function findStepOffsets(frame, rewinding) {
|
||||
}
|
||||
seen.push(offset);
|
||||
const meta = frame.script.getOffsetMetadata(offset);
|
||||
if (meta.isStepStart) {
|
||||
if (requireStepStart ? meta.isStepStart : meta.isBreakpoint) {
|
||||
if (!result.includes(offset)) {
|
||||
result.push(offset);
|
||||
}
|
||||
|
@ -223,7 +223,6 @@ const SourceActor = ActorClassWithSpec(sourceSpec, {
|
||||
// original recording. If we try to fetch it now it may have changed or
|
||||
// may no longer exist.
|
||||
if (this.dbg.replaying) {
|
||||
assert(!this._contentType);
|
||||
return this.dbg.replayingContent(this.url);
|
||||
}
|
||||
|
||||
|
@ -897,7 +897,11 @@ const ThreadActor = ActorClassWithSpec(threadSpec, {
|
||||
});
|
||||
|
||||
if (thread.dbg.replaying) {
|
||||
const offsets = findStepOffsets(parentFrame, rewinding);
|
||||
const offsets = findStepOffsets(
|
||||
parentFrame,
|
||||
rewinding,
|
||||
/* requireStepStart */ false
|
||||
);
|
||||
parentFrame.setReplayingOnStep(onStep, offsets);
|
||||
} else {
|
||||
parentFrame.onStep = onStep;
|
||||
|
@ -11,9 +11,6 @@
|
||||
# documentation on web development on the web.
|
||||
|
||||
|
||||
# LOCALIZATION NOTE (panelTitle): This is the panel title
|
||||
panelTitle=Style Inspector
|
||||
|
||||
# LOCALIZATION NOTE (rule.status): For each style property the panel shows
|
||||
# the rules which hold that specific property. For every rule, the rule status
|
||||
# is also displayed: a rule can be the best match, a match, a parent match, or a
|
||||
|
@ -329,8 +329,6 @@ waitForAllPaints(() => {
|
||||
|
||||
add_task(
|
||||
async function restyling_transform_animations_in_scrolled_out_element() {
|
||||
await SpecialPowers.pushPrefEnv({ set: [["ui.showHideScrollbars", 1]] });
|
||||
|
||||
// Make sure we start from the state right after requestAnimationFrame.
|
||||
await waitForFrame();
|
||||
|
||||
@ -1542,8 +1540,6 @@ waitForAllPaints(() => {
|
||||
|
||||
add_task(
|
||||
async function no_overflow_transform_animations_in_scrollable_element() {
|
||||
await SpecialPowers.pushPrefEnv({ set: [["ui.showHideScrollbars", 1]] });
|
||||
|
||||
const parentElement = addDiv(null,
|
||||
{ style: 'overflow-y: scroll; height: 100px;' });
|
||||
const div = addDiv(null);
|
||||
|
@ -12,6 +12,7 @@ SpecialPowers.pushPrefEnv(
|
||||
set: [
|
||||
['layout.reflow.synthMouseMove', false],
|
||||
['privacy.reduceTimerPrecision', false],
|
||||
["ui.showHideScrollbars", 1],
|
||||
],
|
||||
},
|
||||
function() {
|
||||
|
@ -230,8 +230,26 @@ static BrowsingContextOrigin SimilarOrigin(const Element& aTarget,
|
||||
: BrowsingContextOrigin::Different;
|
||||
}
|
||||
|
||||
// NOTE: This returns nullptr if |aDocument| is in a cross process.
|
||||
static Document* GetTopLevelDocument(const Document& aDocument) {
|
||||
BrowsingContext* browsingContext = aDocument.GetBrowsingContext();
|
||||
if (!browsingContext) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsPIDOMWindowOuter* topWindow = browsingContext->Top()->GetDOMWindow();
|
||||
if (!topWindow) {
|
||||
// If we don't have a DOMWindow, We are not in same origin.
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return topWindow->GetExtantDoc();
|
||||
}
|
||||
|
||||
void DOMIntersectionObserver::Update(Document* aDocument,
|
||||
DOMHighResTimeStamp time) {
|
||||
MOZ_ASSERT(aDocument);
|
||||
|
||||
nsRect rootRect;
|
||||
nsIFrame* rootFrame = nullptr;
|
||||
Element* root = mRoot;
|
||||
@ -252,28 +270,14 @@ void DOMIntersectionObserver::Update(Document* aDocument,
|
||||
rootRect = nsLayoutUtils::TransformFrameRectToAncestor(
|
||||
rootFrame, rootRectRelativeToRootFrame, containingBlock);
|
||||
}
|
||||
} else if (PresShell* presShell = aDocument->GetPresShell()) {
|
||||
// FIXME(emilio): This shouldn't probably go through the presShell and just
|
||||
// through the document tree.
|
||||
rootFrame = presShell->GetRootScrollFrame();
|
||||
if (rootFrame) {
|
||||
nsPresContext* presContext = rootFrame->PresContext();
|
||||
while (!presContext->IsRootContentDocument()) {
|
||||
presContext = presContext->GetParentPresContext();
|
||||
if (!presContext) {
|
||||
break;
|
||||
}
|
||||
nsIFrame* rootScrollFrame =
|
||||
presContext->PresShell()->GetRootScrollFrame();
|
||||
if (rootScrollFrame) {
|
||||
rootFrame = rootScrollFrame;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
} else if (Document* topLevelDocument = GetTopLevelDocument(*aDocument)) {
|
||||
if (PresShell* presShell = topLevelDocument->GetPresShell()) {
|
||||
rootFrame = presShell->GetRootScrollFrame();
|
||||
if (rootFrame) {
|
||||
root = rootFrame->GetContent()->AsElement();
|
||||
nsIScrollableFrame* scrollFrame = do_QueryFrame(rootFrame);
|
||||
rootRect = scrollFrame->GetScrollPortRect();
|
||||
}
|
||||
root = rootFrame->GetContent()->AsElement();
|
||||
nsIScrollableFrame* scrollFrame = do_QueryFrame(rootFrame);
|
||||
rootRect = scrollFrame->GetScrollPortRect();
|
||||
}
|
||||
}
|
||||
|
||||
@ -401,12 +405,11 @@ void DOMIntersectionObserver::Update(Document* aDocument,
|
||||
}
|
||||
|
||||
if (target->UpdateIntersectionObservation(this, threshold)) {
|
||||
QueueIntersectionObserverEntry(target, time,
|
||||
origin == BrowsingContextOrigin::Different
|
||||
? Nothing()
|
||||
: Some(rootIntersectionRect),
|
||||
targetRect, intersectionRect,
|
||||
intersectionRatio);
|
||||
QueueIntersectionObserverEntry(
|
||||
target, time,
|
||||
origin == BrowsingContextOrigin::Similar ? Some(rootIntersectionRect)
|
||||
: Nothing(),
|
||||
targetRect, intersectionRect, intersectionRatio);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1302,6 +1302,7 @@ Document::Document(const char* aContentType)
|
||||
mTooDeepWriteRecursion(false),
|
||||
mPendingMaybeEditingStateChanged(false),
|
||||
mHasBeenEditable(false),
|
||||
mHasWarnedAboutZoom(false),
|
||||
mPendingFullscreenRequests(0),
|
||||
mXMLDeclarationBits(0),
|
||||
mOnloadBlockCount(0),
|
||||
@ -11214,56 +11215,57 @@ void Document::NotifyLoading(const bool& aCurrentParentIsLoading,
|
||||
}
|
||||
}
|
||||
|
||||
void Document::SetReadyStateInternal(ReadyState rs,
|
||||
bool updateTimingInformation) {
|
||||
if (rs == READYSTATE_UNINITIALIZED) {
|
||||
void Document::SetReadyStateInternal(ReadyState aReadyState,
|
||||
bool aUpdateTimingInformation) {
|
||||
if (aReadyState == READYSTATE_UNINITIALIZED) {
|
||||
// Transition back to uninitialized happens only to keep assertions happy
|
||||
// right before readyState transitions to something else. Make this
|
||||
// transition undetectable by Web content.
|
||||
mReadyState = rs;
|
||||
mReadyState = aReadyState;
|
||||
return;
|
||||
}
|
||||
|
||||
if (IsTopLevelContentDocument()) {
|
||||
if (rs == READYSTATE_LOADING) {
|
||||
if (aReadyState == READYSTATE_LOADING) {
|
||||
AddToplevelLoadingDocument(this);
|
||||
} else if (rs == READYSTATE_COMPLETE) {
|
||||
} else if (aReadyState == READYSTATE_COMPLETE) {
|
||||
RemoveToplevelLoadingDocument(this);
|
||||
}
|
||||
}
|
||||
|
||||
if (updateTimingInformation && READYSTATE_LOADING == rs) {
|
||||
mLoadingTimeStamp = mozilla::TimeStamp::Now();
|
||||
if (aUpdateTimingInformation && READYSTATE_LOADING == aReadyState) {
|
||||
mLoadingTimeStamp = TimeStamp::Now();
|
||||
}
|
||||
NotifyLoading(mAncestorIsLoading, mAncestorIsLoading, mReadyState, rs);
|
||||
mReadyState = rs;
|
||||
if (updateTimingInformation && mTiming) {
|
||||
switch (rs) {
|
||||
NotifyLoading(mAncestorIsLoading, mAncestorIsLoading, mReadyState,
|
||||
aReadyState);
|
||||
mReadyState = aReadyState;
|
||||
if (aUpdateTimingInformation && mTiming) {
|
||||
switch (aReadyState) {
|
||||
case READYSTATE_LOADING:
|
||||
mTiming->NotifyDOMLoading(Document::GetDocumentURI());
|
||||
mTiming->NotifyDOMLoading(GetDocumentURI());
|
||||
break;
|
||||
case READYSTATE_INTERACTIVE:
|
||||
mTiming->NotifyDOMInteractive(Document::GetDocumentURI());
|
||||
mTiming->NotifyDOMInteractive(GetDocumentURI());
|
||||
break;
|
||||
case READYSTATE_COMPLETE:
|
||||
mTiming->NotifyDOMComplete(Document::GetDocumentURI());
|
||||
mTiming->NotifyDOMComplete(GetDocumentURI());
|
||||
break;
|
||||
default:
|
||||
NS_WARNING("Unexpected ReadyState value");
|
||||
MOZ_ASSERT_UNREACHABLE("Unexpected ReadyState value");
|
||||
break;
|
||||
}
|
||||
}
|
||||
// At the time of loading start, we don't have timing object, record time.
|
||||
|
||||
if (READYSTATE_INTERACTIVE == rs) {
|
||||
if (READYSTATE_INTERACTIVE == aReadyState) {
|
||||
if (!mXULPersist && nsContentUtils::IsSystemPrincipal(NodePrincipal())) {
|
||||
mXULPersist = new XULPersist(this);
|
||||
mXULPersist->Init();
|
||||
}
|
||||
}
|
||||
|
||||
if (updateTimingInformation) {
|
||||
RecordNavigationTiming(rs);
|
||||
if (aUpdateTimingInformation) {
|
||||
RecordNavigationTiming(aReadyState);
|
||||
}
|
||||
|
||||
RefPtr<AsyncEventDispatcher> asyncDispatcher =
|
||||
@ -12757,6 +12759,24 @@ already_AddRefed<nsINode> Document::GetTooltipNode() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void Document::MaybeWarnAboutZoom() {
|
||||
if (mHasWarnedAboutZoom) {
|
||||
return;
|
||||
}
|
||||
const bool usedZoom =
|
||||
mStyleUseCounters &&
|
||||
Servo_IsUnknownPropertyRecordedInUseCounter(mStyleUseCounters.get(),
|
||||
CountedUnknownProperty::Zoom);
|
||||
if (!usedZoom) {
|
||||
return;
|
||||
}
|
||||
|
||||
mHasWarnedAboutZoom = true;
|
||||
nsContentUtils::ReportToConsole(
|
||||
nsIScriptError::warningFlag, NS_LITERAL_CSTRING("Layout"), this,
|
||||
nsContentUtils::eLAYOUT_PROPERTIES, "ZoomPropertyWarning");
|
||||
}
|
||||
|
||||
nsIHTMLCollection* Document::Children() {
|
||||
if (!mChildrenCollection) {
|
||||
mChildrenCollection =
|
||||
|
@ -2309,12 +2309,11 @@ class Document : public nsINode,
|
||||
READYSTATE_INTERACTIVE = 3,
|
||||
READYSTATE_COMPLETE = 4
|
||||
};
|
||||
// Set the readystate of the document. If updateTimingInformation is true,
|
||||
// Set the readystate of the document. If aUpdateTimingInformation is true,
|
||||
// this will record relevant timestamps in the document's performance timing.
|
||||
// Some consumers (document.open is the only one right now, actually) don't
|
||||
// want to do that, though.
|
||||
void SetReadyStateInternal(ReadyState rs,
|
||||
bool updateTimingInformation = true);
|
||||
void SetReadyStateInternal(ReadyState, bool aUpdateTimingInformation = true);
|
||||
ReadyState GetReadyStateEnum() { return mReadyState; }
|
||||
|
||||
void SetAncestorLoading(bool aAncestorIsLoading);
|
||||
@ -3788,6 +3787,8 @@ class Document : public nsINode,
|
||||
aDontWarnAboutMutationEventsAndAllowSlowDOMMutations;
|
||||
}
|
||||
|
||||
void MaybeWarnAboutZoom();
|
||||
|
||||
// ParentNode
|
||||
nsIHTMLCollection* Children();
|
||||
uint32_t ChildElementCount();
|
||||
@ -4887,6 +4888,12 @@ class Document : public nsINode,
|
||||
// eDesignMode or eContentEditable.
|
||||
bool mHasBeenEditable : 1;
|
||||
|
||||
// Whether we've warned about the CSS zoom property.
|
||||
//
|
||||
// We don't use the general deprecated operation mechanism for this because we
|
||||
// also record this as a `CountedUnknownProperty`.
|
||||
bool mHasWarnedAboutZoom : 1;
|
||||
|
||||
uint8_t mPendingFullscreenRequests;
|
||||
|
||||
uint8_t mXMLDeclarationBits;
|
||||
|
@ -16,10 +16,16 @@ add_task(async function test_initialize() {
|
||||
gOldParentCanRecord = Telemetry.canRecordExtended;
|
||||
Telemetry.canRecordExtended = true;
|
||||
|
||||
// Because canRecordExtended is a per-process variable, we need to make sure
|
||||
// that all of the pages load in the same content process. Limit the number
|
||||
// of content processes to at most 1 (or 0 if e10s is off entirely).
|
||||
await SpecialPowers.pushPrefEnv({ set: [["dom.ipc.processCount", 1]] });
|
||||
await SpecialPowers.pushPrefEnv({
|
||||
set: [
|
||||
// Because canRecordExtended is a per-process variable, we need to make sure
|
||||
// that all of the pages load in the same content process. Limit the number
|
||||
// of content processes to at most 1 (or 0 if e10s is off entirely).
|
||||
["dom.ipc.processCount", 1],
|
||||
["layout.css.use-counters.enabled", true],
|
||||
["layout.css.use-counters-unimplemented.enabled", true],
|
||||
],
|
||||
});
|
||||
|
||||
gOldContentCanRecord = await ContentTask.spawn(
|
||||
gBrowser.selectedBrowser,
|
||||
|
@ -709,7 +709,6 @@ skip-if = (verify && debug && (os == 'linux'))
|
||||
skip-if = (verify && (os == 'win' || os == 'mac'))
|
||||
[test_integer_attr_with_leading_zero.html]
|
||||
[test_intersectionobservers.html]
|
||||
fail-if = fission
|
||||
[test_link_prefetch.html]
|
||||
skip-if = !e10s # Track Bug 1281415
|
||||
[test_link_preload.html]
|
||||
|
@ -1684,14 +1684,19 @@ IMEContentObserver::IMENotificationSender::Run() {
|
||||
|
||||
// If a text change notification causes another text change again, we should
|
||||
// notify IME of that before sending a selection change notification.
|
||||
// Otherwise, even if the observer hasn't received selection change, let's
|
||||
// try to send selection change notification to IME because selection
|
||||
// start offset may be changed if the previous contents of selection start
|
||||
// are changed. For example, when previous `<p>` element of another `<p>`
|
||||
// element which contains caret is removed by a DOM mutation, selection
|
||||
// change event won't be fired, but selection start offset should be
|
||||
// decreased by the length of removed `<p>` element.
|
||||
if (!observer->mNeedsToNotifyIMEOfTextChange) {
|
||||
// Be aware, PuppetWidget depends on the order of this. A selection change
|
||||
// notification should not be sent before a text change notification because
|
||||
// PuppetWidget shouldn't query new text content every selection change.
|
||||
if (observer->mNeedsToNotifyIMEOfSelectionChange) {
|
||||
observer->mNeedsToNotifyIMEOfSelectionChange = false;
|
||||
SendSelectionChange();
|
||||
}
|
||||
observer->mNeedsToNotifyIMEOfSelectionChange = false;
|
||||
SendSelectionChange();
|
||||
}
|
||||
|
||||
// If a text change notification causes another text change again or a
|
||||
|
@ -20,6 +20,11 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=450876
|
||||
|
||||
/** Test for Bug 450876 **/
|
||||
|
||||
function setTabFocus() {
|
||||
// Override tab focus behavior on Mac */
|
||||
SpecialPowers.pushPrefEnv({ set: [[ "accessibility.tabfocus", 7 ]] }, doTest);
|
||||
}
|
||||
|
||||
function doTest() {
|
||||
is(document.activeElement, document.body, "body element should be focused");
|
||||
document.getElementById('a').focus();
|
||||
@ -33,7 +38,7 @@ function doTest() {
|
||||
}
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
addLoadEvent(doTest);
|
||||
addLoadEvent(setTabFocus);
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
|
@ -23,12 +23,6 @@ proxyResolveFailure=The proxy server you have configured could not be found. Ple
|
||||
proxyConnectFailure=The connection was refused when attempting to contact the proxy server you have configured. Please check your proxy settings and try again.
|
||||
contentEncodingError=The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.
|
||||
unsafeContentType=The page you are trying to view cannot be shown because it is contained in a file type that may not be safe to open. Please contact the website owners to inform them of this problem.
|
||||
externalProtocolTitle=External Protocol Request
|
||||
externalProtocolPrompt=An external application must be launched to handle %1$S: links.\n\n\nRequested link:\n\n%2$S\n\nApplication: %3$S\n\n\nIf you were not expecting this request it may be an attempt to exploit a weakness in that other program. Cancel this request unless you are sure it is not malicious.\n
|
||||
#LOCALIZATION NOTE (externalProtocolUnknown): The following string is shown if the application name can't be determined
|
||||
externalProtocolUnknown=<Unknown>
|
||||
externalProtocolChkMsg=Remember my choice for all links of this type.
|
||||
externalProtocolLaunchBtn=Launch application
|
||||
malwareBlocked=The site at %S has been reported as an attack site and has been blocked based on your security preferences.
|
||||
harmfulBlocked=The site at %S has been reported as a potentially harmful site and has been blocked based on your security preferences.
|
||||
unwantedBlocked=The site at %S has been reported as serving unwanted software and has been blocked based on your security preferences.
|
||||
|
@ -17,16 +17,12 @@ StopScriptButton=Stop script
|
||||
DebugScriptButton=Debug script
|
||||
WaitForScriptButton=Continue
|
||||
DontAskAgain=&Don’t ask me again
|
||||
JSURLLoadBlockedWarning=Attempt to load a javascript: URL from one host\nin a window displaying content from another host\nwas blocked by the security manager.
|
||||
WindowCloseBlockedWarning=Scripts may not close windows that were not opened by script.
|
||||
OnBeforeUnloadTitle=Are you sure?
|
||||
OnBeforeUnloadMessage=This page is asking you to confirm that you want to leave - data you have entered may not be saved.
|
||||
OnBeforeUnloadStayButton=Stay on Page
|
||||
OnBeforeUnloadLeaveButton=Leave Page
|
||||
UnexpectedCanvasVariantStyle=canvas: an attempt to set strokeStyle or fillStyle to a value that is neither a string, a CanvasGradient, or a CanvasPattern was ignored.
|
||||
EmptyGetElementByIdParam=Empty string passed to getElementById().
|
||||
LowMemoryTitle=Warning: Low memory
|
||||
LowMemoryMessage=A script on this page has been stopped due to a low memory condition.
|
||||
SpeculationFailed=An unbalanced tree was written using document.write() causing data from the network to be reparsed. For more information https://developer.mozilla.org/en/Optimizing_Your_Pages_for_Speculative_Parsing
|
||||
DocumentWriteIgnored=A call to document.write() from an asynchronously-loaded external script was ignored.
|
||||
# LOCALIZATION NOTE (EditorFileDropFailed): Do not translate contenteditable, %S is the error message explaining why the drop failed.
|
||||
@ -57,7 +53,6 @@ FormValidationStepMismatch=Please select a valid value. The two nearest valid va
|
||||
# LOCALIZATION NOTE (FormValidationStepMismatchOneValue): %S can be a number, a date or a time. This is called instead of FormValidationStepMismatch when the second value is the same as the first.
|
||||
FormValidationStepMismatchOneValue=Please select a valid value. The nearest valid value is %S.
|
||||
FormValidationBadInputNumber=Please enter a number.
|
||||
EnablePrivilegeWarning=Use of enablePrivilege is deprecated. Please use code that runs with the system principal (e.g. an extension) instead.
|
||||
FullscreenDeniedDisabled=Request for fullscreen was denied because Fullscreen API is disabled by user preference.
|
||||
FullscreenDeniedFocusedPlugin=Request for fullscreen was denied because a windowed plugin is focused.
|
||||
FullscreenDeniedHidden=Request for fullscreen was denied because the document is no longer visible.
|
||||
@ -84,7 +79,6 @@ PointerLockDeniedMovedDocument=Request for pointer lock was denied because the r
|
||||
PointerLockDeniedNotInputDriven=Request for pointer lock was denied because Element.requestPointerLock() was not called from inside a short running user-generated event handler, and the document is not in full screen.
|
||||
PointerLockDeniedFailedToLock=Request for pointer lock was denied because the browser failed to lock the pointer.
|
||||
HTMLSyncXHRWarning=HTML parsing in XMLHttpRequest is not supported in the synchronous mode.
|
||||
InvalidRedirectChannelWarning=Unable to redirect to %S because the channel doesn’t implement nsIWritablePropertyBag2.
|
||||
# LOCALIZATION NOTE: %S is the name of the header in question
|
||||
ForbiddenHeaderWarning=Attempt to set a forbidden header was denied: %S
|
||||
ResponseTypeSyncXHRWarning=Use of XMLHttpRequest’s responseType attribute is no longer supported in the synchronous mode in window context.
|
||||
@ -92,8 +86,6 @@ TimeoutSyncXHRWarning=Use of XMLHttpRequest’s timeout attribute is not support
|
||||
# LOCALIZATION NOTE: Do not translate navigator.sendBeacon, unload, pagehide, or XMLHttpRequest.
|
||||
UseSendBeaconDuringUnloadAndPagehideWarning=Use of navigator.sendBeacon instead of synchronous XMLHttpRequest during unload and pagehide improves user experience.
|
||||
JSONCharsetWarning=An attempt was made to declare a non-UTF-8 encoding for JSON retrieved using XMLHttpRequest. Only UTF-8 is supported for decoding JSON.
|
||||
# LOCALIZATION NOTE: Do not translate AudioBufferSourceNode
|
||||
MediaBufferSourceNodeResampleOutOfMemory=Insufficient memory to resample the AudioBufferSourceNode for playback.
|
||||
# LOCALIZATION NOTE: Do not translate decodeAudioData.
|
||||
MediaDecodeAudioDataUnknownContentType=The buffer passed to decodeAudioData contains an unknown content type.
|
||||
# LOCALIZATION NOTE: Do not translate decodeAudioData.
|
||||
@ -113,8 +105,6 @@ MediaElementAudioCaptureOfMediaStreamError=The captured HTMLMediaElement is play
|
||||
MediaLoadExhaustedCandidates=All candidate resources failed to load. Media load paused.
|
||||
MediaLoadSourceMissingSrc=<source> element has no “src” attribute. Media resource load failed.
|
||||
MediaStreamAudioSourceNodeDifferentRate=Connecting AudioNodes from AudioContexts with different sample-rate is currently not supported.
|
||||
# LOCALIZATION NOTE: Do not translate ConvolverNode
|
||||
ConvolverNodeAllocationError=Out-of-memory error when instantiating a ConvolverNode: the node will output silence.
|
||||
# LOCALIZATION NOTE: %1$S is the Http error code the server returned (e.g. 404, 500, etc), %2$S is the URL of the media resource which failed to load.
|
||||
MediaLoadHttpError=HTTP load failed with status %1$S. Load of media resource %2$S failed.
|
||||
# LOCALIZATION NOTE: %S is the URL of the media resource which failed to load.
|
||||
@ -122,8 +112,6 @@ MediaLoadInvalidURI=Invalid URI. Load of media resource %S failed.
|
||||
# LOCALIZATION NOTE: %1$S is the media resource's format/codec type (basically equivalent to the file type, e.g. MP4,AVI,WMV,MOV etc), %2$S is the URL of the media resource which failed to load.
|
||||
MediaLoadUnsupportedTypeAttribute=Specified “type” attribute of “%1$S” is not supported. Load of media resource %2$S failed.
|
||||
MediaLoadUnsupportedTypeAttributeLoadingNextChild=Specified “type” attribute of “%1$S” is not supported. Load of media resource %2$S failed. Trying to load from next <source> element.
|
||||
# LOCALIZATION NOTE: %1$S is the "media" attribute value of the <source> element. It is a media query. %2$S is the URL of the media resource which failed to load.
|
||||
MediaLoadSourceMediaNotMatched=Specified “media” attribute of “%1$S” does not match the environment. Load of media resource %2$S failed.
|
||||
# LOCALIZATION NOTE: %1$S is the MIME type HTTP header being sent by the web server, %2$S is the URL of the media resource which failed to load.
|
||||
MediaLoadUnsupportedMimeType=HTTP “Content-Type” of “%1$S” is not supported. Load of media resource %2$S failed.
|
||||
# LOCALIZATION NOTE: %S is the URL of the media resource which failed to load because of error in decoding.
|
||||
@ -145,8 +133,6 @@ MediaNoDecoders=No decoders for some of the requested formats: %S
|
||||
MediaCannotInitializePulseAudio=Unable to use PulseAudio
|
||||
# LOCALIZATION NOTE: Do not translate "MediaRecorder".
|
||||
MediaRecorderMultiTracksNotSupported=MediaRecorder does not support recording multiple tracks of the same type at this time.
|
||||
# LOCALIZATION NOTE: %S is the ID of the MediaStreamTrack passed to MediaStream.addTrack(). Do not translate "MediaStreamTrack" and "AudioChannel".
|
||||
MediaStreamAddTrackDifferentAudioChannel=MediaStreamTrack %S could not be added since it belongs to a different AudioChannel.
|
||||
# LOCALIZATION NOTE: %S is the URL of the web page which is not served on HTTPS and thus is not encrypted and considered insecure.
|
||||
MediaEMEInsecureContextDeprecatedWarning=Using Encrypted Media Extensions at %S on an insecure (i.e. non-HTTPS) context is deprecated and will soon be removed. You should consider switching to a secure origin such as HTTPS.
|
||||
# LOCALIZATION NOTE: %S is the URL of the web page which is calling web APIs without passing data (either an audioCapabilities or a videoCapabilities) that will soon be required. See https://bugzilla.mozilla.org/show_bug.cgi?id=1368583#c21 for explanation of this string.
|
||||
@ -179,7 +165,6 @@ UseOfDOM3LoadMethodWarning=Use of document.load() is deprecated. To upgrade your
|
||||
ShowModalDialogWarning=Use of window.showModalDialog() is deprecated. Use window.open() instead. For more help https://developer.mozilla.org/en-US/docs/Web/API/Window.open
|
||||
# LOCALIZATION NOTE: Do not translate "XMLHttpRequest"
|
||||
SyncXMLHttpRequestWarning=Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help http://xhr.spec.whatwg.org/
|
||||
ImplicitMetaViewportTagFallback=No meta-viewport tag found. Please explicitly specify one to prevent unexpected behavioural changes in future versions. For more help https://developer.mozilla.org/en/docs/Mozilla/Mobile/Viewport_meta_tag
|
||||
# LOCALIZATION NOTE: Do not translate "window.controllers/Controllers"
|
||||
Window_Cc_ontrollersWarning=window.controllers/Controllers is deprecated. Do not use it for UA detection.
|
||||
ImportXULIntoContentWarning=Importing XUL nodes into a content document is deprecated. This functionality may be removed soon.
|
||||
@ -314,10 +299,6 @@ PreventDefaultFromPassiveListenerWarning=Ignoring ‘preventDefault()’ call on
|
||||
ImageBitmapRenderingContext_TransferImageBitmapWarning=ImageBitmapRenderingContext.transferImageBitmap is deprecated and will be removed soon. Use ImageBitmapRenderingContext.transferFromImageBitmap instead.
|
||||
IIRFilterChannelCountChangeWarning=IIRFilterNode channel count changes may produce audio glitches.
|
||||
BiquadFilterChannelCountChangeWarning=BiquadFilterNode channel count changes may produce audio glitches.
|
||||
# LOCALIZATION NOTE: Do not translate ".jpeg"
|
||||
GenericImageNameJPEG=image.jpeg
|
||||
# LOCALIZATION NOTE: Do not translate ".gif"
|
||||
GenericImageNameGIF=image.gif
|
||||
# LOCALIZATION NOTE: Do not translate ".png"
|
||||
GenericImageNamePNG=image.png
|
||||
GenericFileName=file
|
||||
|
@ -5,179 +5,40 @@
|
||||
MimeNotCss=The stylesheet %1$S was not loaded because its MIME type, “%2$S”, is not “text/css”.
|
||||
MimeNotCssWarn=The stylesheet %1$S was loaded as CSS even though its MIME type, “%2$S”, is not “text/css”.
|
||||
|
||||
PEUnexpEOF2=Unexpected end of file while searching for %1$S.
|
||||
PEParseRuleWSOnly=Whitespace-only string given to be parsed as rule.
|
||||
PEDeclDropped=Declaration dropped.
|
||||
PEDeclSkipped=Skipped to next declaration.
|
||||
PEUnknownProperty=Unknown property ‘%1$S’.
|
||||
PEValueParsingError=Error in parsing value for ‘%1$S’.
|
||||
PEExpectEndValue=Expected end of value but found ‘%1$S’.
|
||||
PERuleTrailing=Expected end of rule but found ‘%1$S’.
|
||||
PESkipAtRuleEOF2=end of at-rule
|
||||
PEUnknownAtRule=Unrecognized at-rule or error parsing at-rule ‘%1$S’.
|
||||
PECharsetRuleEOF=charset string in @charset rule
|
||||
PECharsetRuleNotString=Expected charset string but found ‘%1$S’.
|
||||
PEGatherMediaEOF=end of media list in @import or @media rule
|
||||
PEMQUnexpectedOperator=Unexpected operator in media list.
|
||||
PEMQUnexpectedToken=Unexpected token ‘%1$S’ in media list.
|
||||
PEGatherMediaNotComma=Expected ‘,’ in media list but found ‘%1$S’.
|
||||
PEGatherMediaNotIdent=Expected identifier in media list but found ‘%1$S’.
|
||||
PEGatherMediaReservedMediaType=Found reserved keyword ‘%1$S’ when looking for media type.
|
||||
PEParseSourceSizeListEOF=length value for matched media condition
|
||||
PEParseSourceSizeListNotComma=Expected ‘,’ after value but found ‘%1$S’
|
||||
PEImportNotURI=Expected URI in @import rule but found ‘%1$S’.
|
||||
PEImportBadURI=Invalid URI in @import rule: ‘%1$S’.
|
||||
PEImportUnexpected=Found unexpected ‘%1$S’ within @import.
|
||||
PEGroupRuleEOF2=end of @media, @supports or @-moz-document rule
|
||||
PEGroupRuleNestedAtRule=%1$S rule not allowed within @media or @-moz-document rule.
|
||||
PEMozDocRuleBadFunc2=Expected url(), url-prefix(), domain() or regexp() in @-moz-document rule but found ‘%1$S’.
|
||||
PEMozDocRuleNotURI=Expected URI in @-moz-document rule but found ‘%1$S’.
|
||||
PEMozDocRuleNotString=Expected string in @-moz-document rule regexp() function but found ‘%1$S’.
|
||||
PEMozDocRuleEOF=next URI in @-moz-document rule
|
||||
PEAtNSPrefixEOF=namespace prefix in @namespace rule
|
||||
PEAtNSURIEOF=namespace URI in @namespace rule
|
||||
PEAtNSUnexpected=Unexpected token within @namespace: ‘%1$S’.
|
||||
PEKeyframeNameEOF=name of @keyframes rule.
|
||||
PEKeyframeBadName=Expected identifier for name of @keyframes rule.
|
||||
PEKeyframeBrace=Expected opening { of @keyframes rule.
|
||||
PESkipDeclBraceEOF=closing } of declaration block
|
||||
PESkipRSBraceEOF=closing } of invalid rule set
|
||||
PEBadSelectorRSIgnored=Ruleset ignored due to bad selector.
|
||||
PEBadSelectorKeyframeRuleIgnored=Keyframe rule ignored due to bad selector.
|
||||
PESelectorListExtraEOF=‘,’ or ‘{’
|
||||
PESelectorListExtra=Expected ‘,’ or ‘{’ but found ‘%1$S’.
|
||||
PESelectorGroupNoSelector=Selector expected.
|
||||
PESelectorGroupExtraCombinator=Dangling combinator.
|
||||
PECounterStyleNotIdent=Expected identifier for name of @counter-style rule.
|
||||
PECounterStyleBadName=Name of @counter-style rule can’t be ‘%1$S’.
|
||||
PECounterStyleBadBlockStart=Expected ‘{’ to begin @counter-style rule but found ‘%1$S’.
|
||||
PECounterStyleEOF=closing ‘}’ of @counter-style block
|
||||
PECounterDescExpected=Expected counter descriptor but found ‘%1$S’.
|
||||
PEUnknownCounterDesc=Unknown descriptor ‘%1$S’ in @counter-style rule.
|
||||
PECounterExtendsNotIdent=Expected identifier for extends system but found ‘%1$S’.
|
||||
PECounterASWeight=Each weight in the additive-symbols descriptor must be smaller than the previous weight.
|
||||
PEClassSelEOF=class name
|
||||
PEClassSelNotIdent=Expected identifier for class selector but found ‘%1$S’.
|
||||
PECoordinatePair=Expected coordinate pair but found ‘%1$S’.
|
||||
PETypeSelEOF=element type
|
||||
PETypeSelNotType=Expected element name or ‘*’ but found ‘%1$S’.
|
||||
PEUnknownNamespacePrefix=Unknown namespace prefix ‘%1$S’.
|
||||
PEAttributeNameEOF=attribute name
|
||||
PEAttributeNameExpected=Expected identifier for attribute name but found ‘%1$S’.
|
||||
PEAttributeNameOrNamespaceExpected=Expected attribute name or namespace but found ‘%1$S’.
|
||||
PEAttSelNoBar=Expected ‘|’ but found ‘%1$S’.
|
||||
PEAttSelInnerEOF=part of attribute selector
|
||||
PEAttSelUnexpected=Unexpected token in attribute selector: ‘%1$S’.
|
||||
PEAttSelValueEOF=attribute value
|
||||
PEAttSelCloseEOF=‘]’ to end attribute selector
|
||||
PEAttSelNoClose=Expected ‘]’ to terminate attribute selector but found ‘%1$S’.
|
||||
PEAttSelBadValue=Expected identifier or string for value in attribute selector but found ‘%1$S’.
|
||||
PEPseudoSelEOF=name of pseudo-class or pseudo-element
|
||||
PEPseudoSelBadName=Expected identifier for pseudo-class or pseudo-element but found ‘%1$S’.
|
||||
PEPseudoSelNonFunc=Function token for non-function pseudo-class or pseudo-element, or the other way around, when reading ‘%1$S’.
|
||||
PEPseudoSelNotPE=Expected pseudo-element but found ‘%1$S’.
|
||||
PEPseudoSelDoubleNot=Negation pseudo-class can’t be negated ‘%1$S’.
|
||||
PEPseudoSelPEInNot=Pseudo-elements can’t be negated ‘%1$S’.
|
||||
PEPseudoSelNewStyleOnly=This pseudo-element must use the “::” form: ‘%1$S’.
|
||||
PEPseudoSelEndOrUserActionPC=Expected end of selector or a user action pseudo-class after pseudo-element but found ‘%1$S’.
|
||||
PEPseudoSelNoUserActionPC=Expected end of selector after pseudo-element that does not support user action pseudo-classes but found ‘%1$S’.
|
||||
PEPseudoSelMultiplePE=Extra pseudo-element ‘%1$S’.
|
||||
PEPseudoSelUnknown=Unknown pseudo-class or pseudo-element ‘%1$S’.
|
||||
PENegationEOF=selector within negation
|
||||
PENegationBadInner=Malformed simple selector as negation pseudo-class argument ‘%1$S’.
|
||||
PENegationNoClose=Missing closing ‘)’ in negation pseudo-class ‘%1$S’.
|
||||
PENegationBadArg=Missing argument in negation pseudo-class ‘%1$S’.
|
||||
PEPseudoClassArgEOF=argument to pseudo-class selector
|
||||
PEPseudoClassArgNotIdent=Expected identifier for pseudo-class parameter but found ‘%1$S’.
|
||||
PEPseudoClassArgNotNth=Expected part of argument to pseudo-class but found ‘%1$S’.
|
||||
PEPseudoClassNoClose=Missing closing ‘)’ in pseudo-class, found ‘%1$S’ instead.
|
||||
PEPseudoClassNoArg=Missing argument in pseudo-class ‘%1$S’.
|
||||
PEPseudoClassNotUserAction=Expected end of selector or a user action pseudo-class after pseudo-element but found pseudo-class ‘%1$S’.
|
||||
PESelectorEOF=selector
|
||||
PEBadDeclBlockStart=Expected ‘{’ to begin declaration block but found ‘%1$S’.
|
||||
PEColorEOF=color
|
||||
PEColorNotColor=Expected color but found ‘%1$S’.
|
||||
PEColorComponentEOF=color component
|
||||
PEExpectedPercent=Expected a percentage but found ‘%1$S’.
|
||||
PEExpectedInt=Expected an integer but found ‘%1$S’.
|
||||
PEExpectedNumberOrAngle=Expected a number or an angle but found ‘%1$S’.
|
||||
PEExpectedNumberOrPercent=Expected a number or a percentage but found ‘%1$S’.
|
||||
PEColorBadRGBContents=Expected number or percentage in rgb() but found ‘%1$S’.
|
||||
PEColorComponentBadTerm=Expected ‘%2$S’ but found ‘%1$S’.
|
||||
PEExpectedComma=Expected ‘,’ but found ‘%1$S’.
|
||||
PEColorSaturationEOF=saturation
|
||||
PEColorLightnessEOF=lightness
|
||||
PEColorOpacityEOF=opacity in color value
|
||||
PEExpectedNumber=Expected a number but found ‘%1$S’.
|
||||
PEPositionEOF=<position>
|
||||
PEExpectedPosition=Expected <position> but found ‘%1$S’.
|
||||
PEExpectedRadius=Expected radius but found ‘%1$S’.
|
||||
PEExpectedCloseParen=Expected ‘)’ but found ‘%1$S’.
|
||||
PEDeclEndEOF=‘;’ or ‘}’ to end declaration
|
||||
PEParseDeclarationNoColon=Expected ‘:’ but found ‘%1$S’.
|
||||
PEParseDeclarationDeclExpected=Expected declaration but found ‘%1$S’.
|
||||
PEEndOfDeclEOF=end of declaration
|
||||
PEImportantEOF=important
|
||||
PEExpectedImportant=Expected ‘important’ but found ‘%1$S’.
|
||||
PEBadDeclEnd=Expected ‘;’ to terminate declaration but found ‘%1$S’.
|
||||
PEBadDeclOrRuleEnd2=Expected ‘;’ or ‘}’ to terminate declaration but found ‘%1$S’.
|
||||
PEInaccessibleProperty2=Cannot specify value for internal property.
|
||||
PECommentEOF=end of comment
|
||||
SEUnterminatedString=Found unclosed string ‘%1$S’.
|
||||
PEFontDescExpected=Expected font descriptor but found ‘%1$S’.
|
||||
PEUnknownFontDesc=Unknown descriptor ‘%1$S’ in @font-face rule.
|
||||
PEMQExpectedExpressionStart=Expected ‘(’ to start media query expression but found ‘%1$S’.
|
||||
PEMQExpressionEOF=contents of media query expression
|
||||
PEMQExpectedFeatureName=Expected media feature name but found ‘%1$S’.
|
||||
PEMQExpectedFeatureNameEnd=Expected ‘:’ or ‘)’ after media feature name but found ‘%1$S’.
|
||||
PEMQNoMinMaxWithoutValue=Media features with min- or max- must have a value.
|
||||
PEMQExpectedFeatureValue=Found invalid value for media feature.
|
||||
PEBadFontBlockStart=Expected ‘{’ to begin @font-face rule but found ‘%1$S’.
|
||||
PEBadFontBlockEnd=Expected ‘}’ to end @font-face rule but found ‘%1$S’.
|
||||
PEAnonBoxNotAlone=Did not expect anonymous box.
|
||||
PEFFVUnexpectedEOF=Unexpected end of @font-feature-values rule.
|
||||
PEFFVBlockStart=Expected opening { of @font-feature-values rule but found ‘%1$S’.
|
||||
PEFFVValueSetStart=Expected opening { of feature value set but found ‘%1$S’.
|
||||
PEFFVNoFamily=Expected font family list for @font-feature-values rule but found ‘%1$S’.
|
||||
PEFFVUnexpectedBlockEnd=Expected ‘}’ to end @font-feature-values rule but found ‘%1$S’.
|
||||
PEFFVUnknownFontVariantPropValue=Unknown font-variant property value ‘%1$S’.
|
||||
PEFFVExpectedIdent=Expected identifier but found ‘%1$S’.
|
||||
PEFFVExpectedValue=Expected non-negative integer value but found ‘%1$S’.
|
||||
PEFFVTooManyValues=Too many values for feature type ‘%1$S’.
|
||||
PEFFVGenericInFamilyList=Family list cannot contain generic font family name.
|
||||
PEFFVValueDefinitionTrailing=Expected end of value definition but found ‘%1$S’.
|
||||
PEBadDirValue=Expected ‘ltr’ or ‘rtl’ in direction selector but found ‘%1$S’.
|
||||
PESupportsConditionStartEOF2=‘not’, ‘(’, or function
|
||||
PESupportsConditionInParensEOF=‘)’
|
||||
PESupportsConditionNotEOF=‘not’
|
||||
PESupportsWhitespaceRequired=Expected whitespace after ‘not’, ‘and’, or ‘or’.
|
||||
PESupportsConditionExpectedOpenParenOrFunction=Expected ‘(’ or function while parsing supports condition but found ‘%1$S’.
|
||||
PESupportsConditionExpectedCloseParen=Expected ‘)’ while parsing supports condition but found ‘%1$S’.
|
||||
PESupportsConditionExpectedStart2=Expected ‘not’, ‘(’, or function while parsing supports condition but found ‘%1$S’.
|
||||
PESupportsConditionExpectedNot=Expected ‘not’ while parsing supports condition but found ‘%1$S’.
|
||||
PESupportsGroupRuleStart=Expected ‘{’ to begin @supports rule but found ‘%1$S’.
|
||||
PEFilterEOF=filter
|
||||
PEExpectedNoneOrURL=Expected ‘none’ or URL but found ‘%1$S’.
|
||||
PEExpectedNoneOrURLOrFilterFunction=Expected ‘none’, URL, or filter function but found ‘%1$S’.
|
||||
PEExpectedNonnegativeNP=Expected non-negative number or percentage.
|
||||
PEFilterFunctionArgumentsParsingError=Error in parsing arguments for filter function.
|
||||
PEVariableEOF=variable
|
||||
PEVariableEmpty=Expected variable value but found ‘%1$S’.
|
||||
# LOCALIZATION NOTE(PEValueWithVariablesParsingErrorInValue): %1$S is replaced
|
||||
# with the property name and %2$S is replaced with the property value.
|
||||
PEValueWithVariablesParsingErrorInValue=Error in parsing value for ‘%1$S’ after substituting variables. Generated value was ‘%2$S’.
|
||||
PEValueWithVariablesFallbackInherit=Falling back to ‘inherit’.
|
||||
PEValueWithVariablesFallbackInitial=Falling back to ‘initial’.
|
||||
PEInvalidVariableReference=Property contained reference to invalid variable.
|
||||
PEInvalidVariableTokenFallback=Found invalid token ‘%1$S’ at top level of variable reference fallback.
|
||||
PEExpectedVariableNameEOF=identifier for variable name
|
||||
PEExpectedVariableName=Expected identifier for variable name but found ‘%1$S’.
|
||||
PEExpectedVariableFallback=Expected variable reference fallback after ‘,’.
|
||||
PEExpectedVariableCommaOrCloseParen=Expected ‘,’ or ‘)’ after variable name in variable reference but found ‘%1$S’.
|
||||
PESubgridNotSupported=Support for the ‘subgrid’ keyword of CSS Grid is not enabled.
|
||||
PEMoreThanOneGridRepeatAutoFillInNameList=Only one repeat(auto-fill, …) is allowed in a name list for a subgrid.
|
||||
PEMoreThanOneGridRepeatAutoFillFitInTrackList=Only one repeat(auto-fill, …) or repeat(auto-fit, …) is allowed in a track list.
|
||||
PEMoreThanOneGridRepeatTrackSize=Only one track size is allowed inside repeat(auto-fit/auto-fill, …).
|
||||
|
||||
TooLargeDashedRadius=Border radius is too large for ‘dashed’ style (the limit is 100000px). Rendering as solid.
|
||||
TooLargeDottedRadius=Border radius is too large for ‘dotted’ style (the limit is 100000px). Rendering as solid.
|
||||
|
@ -39,3 +39,6 @@ CompositorAnimationWarningTransformFrameInactive=Animation cannot be run on the
|
||||
CompositorAnimationWarningTransformIsBlockedByImportantRules=Transform animation cannot be run on the compositor because transform-related properties are overridden by !important rules
|
||||
CompositorAnimationWarningOpacityFrameInactive=Animation cannot be run on the compositor because the frame was not marked active for ‘opacity’ animation
|
||||
CompositorAnimationWarningHasRenderingObserver=Animation cannot be run on the compositor because the element has rendering observers (-moz-element or SVG clipping/masking)
|
||||
|
||||
## LOCALIZATION NOTE: Do not translate zoom, calc(), "transform", "transform-origin: 0 0"
|
||||
ZoomPropertyWarning=This page uses the non standard property “zoom”. Consider using calc() in the relevant property values, or using “transform” along with “transform-origin: 0 0”.
|
||||
|
@ -18,11 +18,7 @@ pagenumber=%1$d
|
||||
# the second %ld will receive the total number of pages
|
||||
pageofpages=%1$d of %2$d
|
||||
|
||||
noprinter=No printers available.
|
||||
PrintToFile=Print To File
|
||||
noPrintFilename.title=Filename is missing
|
||||
noPrintFilename.alert=You have selected “Print To File”, and the filename is empty!
|
||||
fileConfirm.exists=%S already exists.\nDo you want to replace it?
|
||||
print_error_dialog_title=Printer Error
|
||||
printpreview_error_dialog_title=Print Preview Error
|
||||
|
||||
|
@ -11,5 +11,4 @@ CircularExtendsBinding=Extending the XBL binding “%S” with “%S” would le
|
||||
# LOCALIZATION NOTE: do not localize <handler command="…">
|
||||
CommandNotInChrome=Use of <handler command="…"> not allowed outside chrome.
|
||||
MalformedXBL = An XBL file is malformed. Did you forget the XBL namespace on the bindings tag?
|
||||
InvalidExtendsBinding=Extending “%S” is invalid. In general, do not extend tag names.
|
||||
MissingIdAttr = An “id” attribute missing on the binding tag.
|
||||
|
@ -2,7 +2,6 @@
|
||||
# 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/.
|
||||
|
||||
MissingOverlay=Failed to load overlay from %1$S.
|
||||
PINotInProlog=<?%1$S?> processing instruction does not have any effect outside the prolog anymore (see bug 360119).
|
||||
NeededToWrapXUL=XUL box for %1$S element contained an inline %2$S child, forcing all its children to be wrapped in a block.
|
||||
NeededToWrapXULInlineBox=XUL box for %1$S element contained an inline %2$S child, forcing all its children to be wrapped in a block. This can often be fixed by replacing “display: -moz-inline-box” with “display: -moz-inline-box; display: inline-block”.
|
||||
|
@ -3,110 +3,7 @@
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
CheckLoadURIError = Security Error: Content at %S may not load or link to %S.
|
||||
CheckSameOriginError = Security Error: Content at %S may not load data from %S.
|
||||
ExternalDataError = Security Error: Content at %S attempted to load %S, but may not load external data when being used as an image.
|
||||
ExternalDataError = Security Error: Content at %S attempted to load %S, but may not load external data when being used as an image.
|
||||
|
||||
# LOCALIZATION NOTE (GetPropertyDeniedOrigins):
|
||||
# %1$S is the origin of the script which was denied access.
|
||||
# %2$S is the type of object it was.
|
||||
# %3$S is the property of that object that access was denied for.
|
||||
# %4$S is the origin of the object access was denied to.
|
||||
GetPropertyDeniedOrigins = Permission denied for <%1$S> to get property %2$S.%3$S from <%4$S>.
|
||||
# LOCALIZATION NOTE (GetPropertyDeniedOriginsSubjectDomain):
|
||||
# %1$S is the origin of the script which was denied access.
|
||||
# %2$S is the type of object it was.
|
||||
# %3$S is the property of that object that access was denied for.
|
||||
# %4$S is the origin of the object access was denied to.
|
||||
# %5$S is the value of document.domain for the script which was denied access;
|
||||
# don't translate "document.domain".
|
||||
GetPropertyDeniedOriginsSubjectDomain = Permission denied for <%1$S> (document.domain=<%5$S>) to get property %2$S.%3$S from <%4$S> (document.domain has not been set).
|
||||
# LOCALIZATION NOTE (GetPropertyDeniedOriginsObjectDomain):
|
||||
# %1$S is the origin of the script which was denied access.
|
||||
# %2$S is the type of object it was.
|
||||
# %3$S is the property of that object that access was denied for.
|
||||
# %4$S is the origin of the object access was denied to.
|
||||
# %5$S is the value of document.domain for the object being accessed;
|
||||
# don't translate "document.domain".
|
||||
GetPropertyDeniedOriginsObjectDomain = Permission denied for <%1$S> (document.domain has not been set) to get property %2$S.%3$S from <%4$S> (document.domain=<%5$S>).
|
||||
# LOCALIZATION NOTE (GetPropertyDeniedOriginsSubjectDomainObjectDomain):
|
||||
# %1$S is the origin of the script which was denied access.
|
||||
# %2$S is the type of object it was.
|
||||
# %3$S is the property of that object that access was denied for.
|
||||
# %4$S is the origin of the object access was denied to.
|
||||
# %5$S is the value of document.domain for the script which was denied access;
|
||||
# don't translate "document.domain"
|
||||
# %6$S is the value of document.domain for the object being accessed;
|
||||
# don't translate "document.domain".
|
||||
GetPropertyDeniedOriginsSubjectDomainObjectDomain = Permission denied for <%1$S> (document.domain=<%5$S>) to get property %2$S.%3$S from <%4$S> (document.domain=<%6$S>).
|
||||
|
||||
# LOCALIZATION NOTE (SetPropertyDeniedOrigins):
|
||||
# %1$S is the origin of the script which was denied access.
|
||||
# %2$S is the type of object it was.
|
||||
# %3$S is the property of that object that access was denied for.
|
||||
# %4$S is the origin of the object access was denied to.
|
||||
SetPropertyDeniedOrigins = Permission denied for <%1$S> to set property %2$S.%3$S on <%4$S>.
|
||||
# LOCALIZATION NOTE (SetPropertyDeniedOriginsSubjectDomain):
|
||||
# %1$S is the origin of the script which was denied access.
|
||||
# %2$S is the type of object it was.
|
||||
# %3$S is the property of that object that access was denied for.
|
||||
# %4$S is the origin of the object access was denied to.
|
||||
# %5$S is the value of document.domain for the script which was denied access;
|
||||
# don't translate "document.domain".
|
||||
SetPropertyDeniedOriginsSubjectDomain = Permission denied for <%1$S> (document.domain=<%5$S>) to set property %2$S.%3$S on <%4$S> (document.domain has not been set).
|
||||
# LOCALIZATION NOTE (SetPropertyDeniedOriginsObjectDomain):
|
||||
# %1$S is the origin of the script which was denied access.
|
||||
# %2$S is the type of object it was.
|
||||
# %3$S is the property of that object that access was denied for.
|
||||
# %4$S is the origin of the object access was denied to.
|
||||
# %5$S is the value of document.domain for the object being accessed;
|
||||
# don't translate "document.domain".
|
||||
SetPropertyDeniedOriginsObjectDomain = Permission denied for <%1$S> (document.domain has not been set) to set property %2$S.%3$S on <%4$S> (document.domain=<%5$S>).
|
||||
# LOCALIZATION NOTE (SetPropertyDeniedOriginsSubjectDomainObjectDomain):
|
||||
# %1$S is the origin of the script which was denied access.
|
||||
# %2$S is the type of object it was.
|
||||
# %3$S is the property of that object that access was denied for.
|
||||
# %4$S is the origin of the object access was denied to.
|
||||
# %5$S is the value of document.domain for the script which was denied access;
|
||||
# don't translate "document.domain"
|
||||
# %6$S is the value of document.domain for the object being accessed;
|
||||
# don't translate "document.domain".
|
||||
SetPropertyDeniedOriginsSubjectDomainObjectDomain = Permission denied for <%1$S> (document.domain=<%5$S>) to set property %2$S.%3$S on <%4$S> (document.domain=<%6$S>).
|
||||
|
||||
# LOCALIZATION NOTE (CallMethodDeniedOrigins):
|
||||
# %1$S is the origin of the script which was denied access.
|
||||
# %2$S is the type of object it was.
|
||||
# %3$S is the method of that object that access was denied for.
|
||||
# %4$S is the origin of the object access was denied to.
|
||||
CallMethodDeniedOrigins = Permission denied for <%1$S> to call method %2$S.%3$S on <%4$S>.
|
||||
# LOCALIZATION NOTE (CallMethodDeniedOriginsSubjectDomain):
|
||||
# %1$S is the origin of the script which was denied access.
|
||||
# %2$S is the type of object it was.
|
||||
# %3$S is the method of that object that access was denied for.
|
||||
# %4$S is the origin of the object access was denied to.
|
||||
# %5$S is the value of document.domain for the script which was denied access;
|
||||
# don't translate "document.domain".
|
||||
CallMethodDeniedOriginsSubjectDomain = Permission denied for <%1$S> (document.domain=<%5$S>) to call method %2$S.%3$S on <%4$S> (document.domain has not been set).
|
||||
# LOCALIZATION NOTE (CallMethodDeniedOriginsObjectDomain):
|
||||
# %1$S is the origin of the script which was denied access.
|
||||
# %2$S is the type of object it was.
|
||||
# %3$S is the method of that object that access was denied for.
|
||||
# %4$S is the origin of the object access was denied to.
|
||||
# %5$S is the value of document.domain for the object being accessed;
|
||||
# don't translate "document.domain".
|
||||
CallMethodDeniedOriginsObjectDomain = Permission denied for <%1$S> (document.domain has not been set) to call method %2$S.%3$S on <%4$S> (document.domain=<%5$S>).
|
||||
# LOCALIZATION NOTE (CallMethodDeniedOriginsSubjectDomainObjectDomain):
|
||||
# %1$S is the origin of the script which was denied access.
|
||||
# %2$S is the type of object it was.
|
||||
# %3$S is the method of that object that access was denied for.
|
||||
# %4$S is the origin of the object access was denied to.
|
||||
# %5$S is the value of document.domain for the script which was denied access;
|
||||
# don't translate "document.domain"
|
||||
# %6$S is the value of document.domain for the object being accessed;
|
||||
# don't translate "document.domain".
|
||||
CallMethodDeniedOriginsSubjectDomainObjectDomain = Permission denied for <%1$S> (document.domain=<%5$S>) to call method %2$S.%3$S on <%4$S> (document.domain=<%6$S>).
|
||||
|
||||
GetPropertyDeniedOriginsOnlySubject = Permission denied for <%S> to get property %S.%S
|
||||
SetPropertyDeniedOriginsOnlySubject = Permission denied for <%S> to set property %S.%S
|
||||
CallMethodDeniedOriginsOnlySubject = Permission denied for <%S> to call method %S.%S
|
||||
CreateWrapperDenied = Permission denied to create wrapper for object of class %S
|
||||
CreateWrapperDeniedForOrigin = Permission denied for <%2$S> to create wrapper for object of class %1$S
|
||||
ProtocolFlagError = Warning: Protocol handler for ‘%S’ doesn’t advertise a security policy. While loading of such protocols is allowed for now, this is deprecated. Please see the documentation in nsIProtocolHandler.idl.
|
||||
|
@ -59,15 +59,6 @@ reportURInotInReportOnlyHeader = This site (%1$S) has a Report-Only policy witho
|
||||
# LOCALIZATION NOTE (failedToParseUnrecognizedSource):
|
||||
# %1$S is the CSP Source that could not be parsed
|
||||
failedToParseUnrecognizedSource = Failed to parse unrecognized source %1$S
|
||||
# LOCALIZATION NOTE (inlineScriptBlocked):
|
||||
# inline script refers to JavaScript code that is embedded into the HTML document.
|
||||
inlineScriptBlocked = An attempt to execute inline scripts has been blocked
|
||||
# LOCALIZATION NOTE (inlineStyleBlocked):
|
||||
# inline style refers to CSS code that is embedded into the HTML document.
|
||||
inlineStyleBlocked = An attempt to apply inline style sheets has been blocked
|
||||
# LOCALIZATION NOTE (scriptFromStringBlocked):
|
||||
# eval is a name and should not be localized.
|
||||
scriptFromStringBlocked = An attempt to call JavaScript from a string (by calling a function like eval) has been blocked
|
||||
# LOCALIZATION NOTE (upgradeInsecureRequest):
|
||||
# %1$S is the URL of the upgraded request; %2$S is the upgraded scheme.
|
||||
upgradeInsecureRequest = Upgrading insecure request ‘%1$S’ to use ‘%2$S’
|
||||
@ -88,9 +79,6 @@ ignoringDirectiveWithNoValues = Ignoring ‘%1$S’ since it does not contain an
|
||||
# LOCALIZATION NOTE (ignoringReportOnlyDirective):
|
||||
# %1$S is the directive that is ignored in report-only mode.
|
||||
ignoringReportOnlyDirective = Ignoring sandbox directive when delivered in a report-only policy ‘%1$S’
|
||||
# LOCALIZATION NOTE (deprecatedReferrerDirective):
|
||||
# %1$S is the value of the deprecated Referrer Directive.
|
||||
deprecatedReferrerDirective = Referrer Directive ‘%1$S’ has been deprecated. Please use the Referrer-Policy header instead.
|
||||
# LOCALIZATION NOTE (IgnoringSrcBecauseOfDirective):
|
||||
# %1$S is the name of the src that is ignored.
|
||||
# %2$S is the name of the directive that causes the src to be ignored.
|
||||
@ -107,9 +95,6 @@ couldntParseInvalidSource = Couldn’t parse invalid source %1$S
|
||||
# LOCALIZATION NOTE (couldntParseInvalidHost):
|
||||
# %1$S is the host that's invalid
|
||||
couldntParseInvalidHost = Couldn’t parse invalid host %1$S
|
||||
# LOCALIZATION NOTE (couldntParseScheme):
|
||||
# %1$S is the string source
|
||||
couldntParseScheme = Couldn’t parse scheme in %1$S
|
||||
# LOCALIZATION NOTE (couldntParsePort):
|
||||
# %1$S is the string source
|
||||
couldntParsePort = Couldn’t parse port in %1$S
|
||||
|
@ -21,8 +21,8 @@ support-files =
|
||||
file_redirect_handler.sjs
|
||||
|
||||
[test_main.html]
|
||||
skip-if =
|
||||
(toolkit == 'android') || webrender || (verify && !debug && (os == 'linux')) # Android: TIMED_OUT; bug 1402554
|
||||
skip-if = (toolkit == 'android') || webrender || (verify && !debug && (os == 'linux')) # Android: TIMED_OUT; bug 1402554
|
||||
fail-if = fission #Bug 1580771, object did not follow block_active_content pref
|
||||
[test_bug803225.html]
|
||||
skip-if = (os=='linux' && bits==32) || headless # Linux32:bug 1324870; Headless:bug 1405870
|
||||
[test_frameNavigation.html]
|
||||
|
@ -560,6 +560,7 @@ void VRManager::EnumerateVRDisplays() {
|
||||
mFrameStarted = false;
|
||||
mBrowserState.Clear();
|
||||
mLastSensorState.Clear();
|
||||
mEnumerationCompleted = false;
|
||||
mDisplayInfo.mGroupMask = kVRGroupContent;
|
||||
// We must block until enumeration has completed in order
|
||||
// to signal that the WebVR promise should be resolved at the
|
||||
|
66
gfx/webrender_bindings/DCLayerTree.cpp
Normal file
66
gfx/webrender_bindings/DCLayerTree.cpp
Normal file
@ -0,0 +1,66 @@
|
||||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "DCLayerTree.h"
|
||||
|
||||
#include "mozilla/gfx/DeviceManagerDx.h"
|
||||
|
||||
#undef NTDDI_VERSION
|
||||
#define NTDDI_VERSION NTDDI_WIN8
|
||||
|
||||
#include <d3d11.h>
|
||||
#include <dcomp.h>
|
||||
#include <dxgi1_2.h>
|
||||
|
||||
namespace mozilla {
|
||||
namespace wr {
|
||||
|
||||
/* static */
|
||||
UniquePtr<DCLayerTree> DCLayerTree::Create(HWND aHwnd) {
|
||||
RefPtr<IDCompositionDevice> dCompDevice =
|
||||
gfx::DeviceManagerDx::Get()->GetDirectCompositionDevice();
|
||||
if (!dCompDevice) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto layerTree = MakeUnique<DCLayerTree>(dCompDevice);
|
||||
if (!layerTree->Initialize(aHwnd)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return layerTree;
|
||||
}
|
||||
|
||||
DCLayerTree::DCLayerTree(IDCompositionDevice* aCompositionDevice)
|
||||
: mCompositionDevice(aCompositionDevice) {}
|
||||
|
||||
DCLayerTree::~DCLayerTree() {}
|
||||
|
||||
bool DCLayerTree::Initialize(HWND aHwnd) {
|
||||
HRESULT hr = mCompositionDevice->CreateTargetForHwnd(
|
||||
aHwnd, TRUE, getter_AddRefs(mCompositionTarget));
|
||||
if (FAILED(hr)) {
|
||||
gfxCriticalNote << "Could not create DCompositionTarget: " << gfx::hexa(hr);
|
||||
return false;
|
||||
}
|
||||
|
||||
hr = mCompositionDevice->CreateVisual(getter_AddRefs(mRootVisual));
|
||||
if (FAILED(hr)) {
|
||||
gfxCriticalNote << "Could not create DCompositionVisualt: "
|
||||
<< gfx::hexa(hr);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void DCLayerTree::SetDefaultSwapChain(IDXGISwapChain1* aSwapChain) {
|
||||
mRootVisual->SetContent(aSwapChain);
|
||||
mCompositionTarget->SetRoot(mRootVisual);
|
||||
mCompositionDevice->Commit();
|
||||
}
|
||||
|
||||
} // namespace wr
|
||||
} // namespace mozilla
|
47
gfx/webrender_bindings/DCLayerTree.h
Normal file
47
gfx/webrender_bindings/DCLayerTree.h
Normal file
@ -0,0 +1,47 @@
|
||||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef MOZILLA_GFX_DCLAYER_TREE_H
|
||||
#define MOZILLA_GFX_DCLAYER_TREE_H
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#include "mozilla/RefPtr.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
|
||||
struct IDCompositionDevice;
|
||||
struct IDCompositionTarget;
|
||||
struct IDCompositionVisual;
|
||||
struct IDXGISwapChain1;
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
namespace wr {
|
||||
|
||||
/**
|
||||
* DCLayerTree manages direct composition layers.
|
||||
* It does not manage gecko's layers::Layer.
|
||||
*/
|
||||
class DCLayerTree {
|
||||
public:
|
||||
static UniquePtr<DCLayerTree> Create(HWND aHwnd);
|
||||
explicit DCLayerTree(IDCompositionDevice* aCompositionDevice);
|
||||
~DCLayerTree();
|
||||
|
||||
void SetDefaultSwapChain(IDXGISwapChain1* aSwapChain);
|
||||
|
||||
protected:
|
||||
bool Initialize(HWND aHwnd);
|
||||
|
||||
RefPtr<IDCompositionDevice> mCompositionDevice;
|
||||
RefPtr<IDCompositionTarget> mCompositionTarget;
|
||||
RefPtr<IDCompositionVisual> mRootVisual;
|
||||
};
|
||||
|
||||
} // namespace wr
|
||||
} // namespace mozilla
|
||||
|
||||
#endif
|
@ -14,6 +14,7 @@
|
||||
#include "mozilla/gfx/Logging.h"
|
||||
#include "mozilla/layers/HelpersD3D11.h"
|
||||
#include "mozilla/layers/SyncObject.h"
|
||||
#include "mozilla/webrender/DCLayerTree.h"
|
||||
#include "mozilla/webrender/RenderThread.h"
|
||||
#include "mozilla/widget/CompositorWidget.h"
|
||||
#include "mozilla/widget/WinCompositorWidget.h"
|
||||
@ -257,44 +258,19 @@ void RenderCompositorANGLE::CreateSwapChainForDCompIfPossible(
|
||||
return;
|
||||
}
|
||||
|
||||
RefPtr<IDCompositionDevice> dCompDevice =
|
||||
gfx::DeviceManagerDx::Get()->GetDirectCompositionDevice();
|
||||
if (!dCompDevice) {
|
||||
return;
|
||||
}
|
||||
MOZ_ASSERT(XRE_IsGPUProcess());
|
||||
|
||||
RefPtr<IDXGIDevice> dxgiDevice;
|
||||
mDevice->QueryInterface((IDXGIDevice**)getter_AddRefs(dxgiDevice));
|
||||
|
||||
RefPtr<IDXGIFactory> dxgiFactory;
|
||||
{
|
||||
RefPtr<IDXGIAdapter> adapter;
|
||||
dxgiDevice->GetAdapter(getter_AddRefs(adapter));
|
||||
adapter->GetParent(
|
||||
IID_PPV_ARGS((IDXGIFactory**)getter_AddRefs(dxgiFactory)));
|
||||
}
|
||||
|
||||
HWND hwnd = mWidget->AsWindows()->GetCompositorHwnd();
|
||||
if (!hwnd) {
|
||||
gfxCriticalNote << "Compositor window was not created ";
|
||||
return;
|
||||
}
|
||||
|
||||
HRESULT hr = dCompDevice->CreateTargetForHwnd(
|
||||
hwnd, TRUE, getter_AddRefs(mCompositionTarget));
|
||||
if (FAILED(hr)) {
|
||||
gfxCriticalNote << "Could not create DCompositionTarget: " << gfx::hexa(hr);
|
||||
return;
|
||||
}
|
||||
|
||||
hr = dCompDevice->CreateVisual(getter_AddRefs(mVisual));
|
||||
if (FAILED(hr)) {
|
||||
gfxCriticalNote << "Could not create DCompositionVisualt: "
|
||||
<< gfx::hexa(hr);
|
||||
mDCLayerTree = DCLayerTree::Create(hwnd);
|
||||
if (!mDCLayerTree) {
|
||||
return;
|
||||
}
|
||||
MOZ_ASSERT(XRE_IsGPUProcess());
|
||||
|
||||
HRESULT hr;
|
||||
RefPtr<IDXGISwapChain1> swapChain1;
|
||||
bool useTripleBuffering = gfx::gfxVars::UseWebRenderTripleBufferingWin();
|
||||
|
||||
@ -326,11 +302,11 @@ void RenderCompositorANGLE::CreateSwapChainForDCompIfPossible(
|
||||
DXGI_RGBA color = {1.0f, 1.0f, 1.0f, 1.0f};
|
||||
swapChain1->SetBackgroundColor(&color);
|
||||
mSwapChain = swapChain1;
|
||||
mVisual->SetContent(swapChain1);
|
||||
mCompositionTarget->SetRoot(mVisual);
|
||||
mCompositionDevice = dCompDevice;
|
||||
mCompositionDevice->Commit();
|
||||
mDCLayerTree->SetDefaultSwapChain(swapChain1);
|
||||
mUseTripleBuffering = useTripleBuffering;
|
||||
} else {
|
||||
// Clear CLayerTree on falire
|
||||
mDCLayerTree = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -17,9 +17,6 @@
|
||||
struct ID3D11DeviceContext;
|
||||
struct ID3D11Device;
|
||||
struct ID3D11Query;
|
||||
struct IDCompositionDevice;
|
||||
struct IDCompositionTarget;
|
||||
struct IDCompositionVisual;
|
||||
struct IDXGIFactory2;
|
||||
struct IDXGISwapChain;
|
||||
|
||||
@ -30,6 +27,8 @@ class GLLibraryEGL;
|
||||
|
||||
namespace wr {
|
||||
|
||||
class DCLayerTree;
|
||||
|
||||
class RenderCompositorANGLE : public RenderCompositor {
|
||||
public:
|
||||
static UniquePtr<RenderCompositor> Create(
|
||||
@ -51,7 +50,7 @@ class RenderCompositorANGLE : public RenderCompositor {
|
||||
|
||||
bool UseANGLE() const override { return true; }
|
||||
|
||||
bool UseDComp() const override { return !!mCompositionDevice; }
|
||||
bool UseDComp() const override { return !!mDCLayerTree; }
|
||||
|
||||
bool UseTripleBuffering() const override { return mUseTripleBuffering; }
|
||||
|
||||
@ -79,9 +78,7 @@ class RenderCompositorANGLE : public RenderCompositor {
|
||||
RefPtr<ID3D11DeviceContext> mCtx;
|
||||
RefPtr<IDXGISwapChain> mSwapChain;
|
||||
|
||||
RefPtr<IDCompositionDevice> mCompositionDevice;
|
||||
RefPtr<IDCompositionTarget> mCompositionTarget;
|
||||
RefPtr<IDCompositionVisual> mVisual;
|
||||
UniquePtr<DCLayerTree> mDCLayerTree;
|
||||
|
||||
std::queue<RefPtr<ID3D11Query>> mWaitForPresentQueries;
|
||||
RefPtr<ID3D11Query> mRecycledQuery;
|
||||
|
@ -60,6 +60,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
|
||||
if CONFIG['MOZ_ENABLE_D3D10_LAYER']:
|
||||
DEFINES['MOZ_ENABLE_D3D10_LAYER'] = True
|
||||
EXPORTS.mozilla.webrender += [
|
||||
'DCLayerTree.h',
|
||||
'RenderCompositorANGLE.h',
|
||||
'RenderD3D11TextureHostOGL.h',
|
||||
]
|
||||
@ -67,6 +68,7 @@ if CONFIG['MOZ_ENABLE_D3D10_LAYER']:
|
||||
'RenderD3D11TextureHostOGL.cpp',
|
||||
]
|
||||
SOURCES += [
|
||||
'DCLayerTree.cpp',
|
||||
'RenderCompositorANGLE.cpp',
|
||||
]
|
||||
|
||||
|
@ -134,6 +134,18 @@ class JS_PUBLIC_API RealmCreationOptions {
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool getReadableByteStreamsEnabled() const { return readableByteStreams_; }
|
||||
RealmCreationOptions& setReadableByteStreamsEnabled(bool flag) {
|
||||
readableByteStreams_ = flag;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool getBYOBStreamReadersEnabled() const { return byobStreamReaders_; }
|
||||
RealmCreationOptions& setBYOBStreamReadersEnabled(bool enabled) {
|
||||
byobStreamReaders_ = enabled;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool getFieldsEnabled() const { return fields_; }
|
||||
RealmCreationOptions& setFieldsEnabled(bool flag) {
|
||||
fields_ = flag;
|
||||
@ -175,6 +187,8 @@ class JS_PUBLIC_API RealmCreationOptions {
|
||||
bool cloneSingletons_ = false;
|
||||
bool sharedMemoryAndAtomics_ = false;
|
||||
bool streams_ = false;
|
||||
bool readableByteStreams_ = false;
|
||||
bool byobStreamReaders_ = false;
|
||||
bool fields_ = false;
|
||||
bool awaitFix_ = false;
|
||||
bool secureContext_ = false;
|
||||
|
@ -318,6 +318,15 @@ static bool GetBuildConfiguration(JSContext* cx, unsigned argc, Value* vp) {
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef MOZ_UBSAN
|
||||
value = BooleanValue(true);
|
||||
#else
|
||||
value = BooleanValue(false);
|
||||
#endif
|
||||
if (!JS_SetProperty(cx, info, "ubsan", value)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef JS_GC_ZEAL
|
||||
value = BooleanValue(true);
|
||||
#else
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "builtin/Array.h" // js::NewDenseFullyAllocatedArray
|
||||
#include "builtin/streams/ClassSpecMacro.h" // JS_STREAMS_CLASS_SPEC
|
||||
#include "builtin/streams/MiscellaneousOperations.h" // js::MakeSizeAlgorithmFromSizeFunction, js::ValidateAndNormalizeHighWaterMark, js::ReturnPromiseRejectedWithPendingError
|
||||
#include "builtin/streams/ReadableStreamController.h" // js::ReadableStream{,Default}Controller, js::ReadableByteStreamController
|
||||
#include "builtin/streams/ReadableStreamDefaultControllerOperations.h" // js::SetUpReadableStreamDefaultControllerFromUnderlyingSource
|
||||
#include "builtin/streams/ReadableStreamInternals.h" // js::ReadableStreamCancel
|
||||
#include "builtin/streams/ReadableStreamOperations.h" // js::ReadableStreamTee
|
||||
@ -25,7 +26,7 @@
|
||||
#include "js/Class.h" // JSCLASS_PRIVATE_IS_NSISUPPORTS, JSCLASS_HAS_PRIVATE, JS_NULL_CLASS_OPS
|
||||
#include "js/PropertySpec.h" // JS{Function,Property}Spec, JS_FN, JS_PSG, JS_{FS,PS}_END
|
||||
#include "js/RootingAPI.h" // JS::Handle, JS::Rooted, js::CanGC
|
||||
#include "js/Stream.h" // JS::ReadableStreamUnderlyingSource
|
||||
#include "js/Stream.h" // JS::ReadableStream{Mode,UnderlyingSource}
|
||||
#include "js/Value.h" // JS::Value
|
||||
#include "vm/JSContext.h" // JSContext
|
||||
#include "vm/JSObject.h" // js::GetPrototypeFromBuiltinConstructor
|
||||
@ -62,6 +63,16 @@ using JS::Value;
|
||||
|
||||
/*** 3.2. Class ReadableStream **********************************************/
|
||||
|
||||
JS::ReadableStreamMode ReadableStream::mode() const {
|
||||
ReadableStreamController* controller = this->controller();
|
||||
if (controller->is<ReadableStreamDefaultController>()) {
|
||||
return JS::ReadableStreamMode::Default;
|
||||
}
|
||||
return controller->as<ReadableByteStreamController>().hasExternalSource()
|
||||
? JS::ReadableStreamMode::ExternalSource
|
||||
: JS::ReadableStreamMode::Byte;
|
||||
}
|
||||
|
||||
ReadableStream* ReadableStream::createExternalSourceStream(
|
||||
JSContext* cx, JS::ReadableStreamUnderlyingSource* source,
|
||||
void* nsISupportsObject_alreadyAddreffed /* = nullptr */,
|
||||
|
@ -51,16 +51,6 @@ using JS::Rooted;
|
||||
using JS::UndefinedHandleValue;
|
||||
using JS::Value;
|
||||
|
||||
JS::ReadableStreamMode ReadableStream::mode() const {
|
||||
ReadableStreamController* controller = this->controller();
|
||||
if (controller->is<ReadableStreamDefaultController>()) {
|
||||
return JS::ReadableStreamMode::Default;
|
||||
}
|
||||
return controller->as<ReadableByteStreamController>().hasExternalSource()
|
||||
? JS::ReadableStreamMode::ExternalSource
|
||||
: JS::ReadableStreamMode::Byte;
|
||||
}
|
||||
|
||||
/*** 3.5. The interface between readable streams and controllers ************/
|
||||
|
||||
/**
|
||||
|
@ -656,7 +656,8 @@ MSG_DEF(JSMSG_GET_ASYNC_ITER_RETURNED_PRIMITIVE, 0, JSEXN_TYPEERR, "[Symbol.asyn
|
||||
|
||||
// ReadableStream
|
||||
MSG_DEF(JSMSG_READABLESTREAM_UNDERLYINGSOURCE_TYPE_WRONG,0, JSEXN_RANGEERR,"'underlyingSource.type' must be \"bytes\" or undefined.")
|
||||
MSG_DEF(JSMSG_READABLESTREAM_BYTES_TYPE_NOT_IMPLEMENTED, 0, JSEXN_RANGEERR,"'underlyingSource.type' must be \"bytes\" or undefined.")
|
||||
MSG_DEF(JSMSG_READABLESTREAM_BYTES_TYPE_NOT_IMPLEMENTED, 0, JSEXN_RANGEERR,"support for 'new ReadableStream({ type: \"bytes\" })' is not yet implemented")
|
||||
MSG_DEF(JSMSG_READABLESTREAM_BYOB_READERS_NOT_IMPLEMENTED,0,JSEXN_RANGEERR,"support for 'readableStream.getReader({ mode: \"byob\" })' is not yet implemented")
|
||||
MSG_DEF(JSMSG_READABLESTREAM_INVALID_READER_MODE, 0, JSEXN_RANGEERR,"'mode' must be \"byob\" or undefined.")
|
||||
MSG_DEF(JSMSG_NUMBER_MUST_BE_FINITE_NON_NEGATIVE, 1, JSEXN_RANGEERR, "'{0}' must be a finite, non-negative number.")
|
||||
MSG_DEF(JSMSG_READABLEBYTESTREAMCONTROLLER_INVALID_BYTESWRITTEN, 0, JSEXN_RANGEERR, "'bytesWritten' exceeds remaining length.")
|
||||
|
@ -129,7 +129,6 @@ case $cmd in
|
||||
|
||||
${MKDIR} -p ${tgtpath}/.cargo
|
||||
cp -pPR \
|
||||
${TOPSRCDIR}/.cargo/config \
|
||||
${TOPSRCDIR}/.cargo/config.in \
|
||||
${tgtpath}/.cargo/
|
||||
|
||||
|
@ -486,6 +486,8 @@ static bool enableWasmVerbose = false;
|
||||
static bool enableTestWasmAwaitTier2 = false;
|
||||
static bool enableAsyncStacks = false;
|
||||
static bool enableStreams = false;
|
||||
static bool enableReadableByteStreams = false;
|
||||
static bool enableBYOBStreamReaders = false;
|
||||
static bool enableFields = false;
|
||||
static bool enableAwaitFix = false;
|
||||
#ifdef JS_GC_ZEAL
|
||||
@ -3797,6 +3799,8 @@ static void SetStandardRealmOptions(JS::RealmOptions& options) {
|
||||
options.creationOptions()
|
||||
.setSharedMemoryAndAtomicsEnabled(enableSharedMemory)
|
||||
.setStreamsEnabled(enableStreams)
|
||||
.setReadableByteStreamsEnabled(enableReadableByteStreams)
|
||||
.setBYOBStreamReadersEnabled(enableBYOBStreamReaders)
|
||||
.setFieldsEnabled(enableFields)
|
||||
.setAwaitFixEnabled(enableAwaitFix);
|
||||
}
|
||||
@ -10272,6 +10276,8 @@ static bool SetContextOptions(JSContext* cx, const OptionParser& op) {
|
||||
enableTestWasmAwaitTier2 = op.getBoolOption("test-wasm-await-tier2");
|
||||
enableAsyncStacks = !op.getBoolOption("no-async-stacks");
|
||||
enableStreams = !op.getBoolOption("no-streams");
|
||||
enableReadableByteStreams = op.getBoolOption("enable-readable-byte-streams");
|
||||
enableBYOBStreamReaders = op.getBoolOption("enable-byob-stream-readers");
|
||||
enableFields = !op.getBoolOption("disable-experimental-fields");
|
||||
enableAwaitFix = op.getBoolOption("enable-experimental-await-fix");
|
||||
|
||||
@ -11033,6 +11039,12 @@ int main(int argc, char** argv, char** envp) {
|
||||
!op.addBoolOption('\0', "enable-streams",
|
||||
"Enable WHATWG Streams (default)") ||
|
||||
!op.addBoolOption('\0', "no-streams", "Disable WHATWG Streams") ||
|
||||
!op.addBoolOption('\0', "enable-readable-byte-streams",
|
||||
"Enable support for WHATWG ReadableStreams of type "
|
||||
"'bytes'") ||
|
||||
!op.addBoolOption('\0', "enable-byob-stream-readers",
|
||||
"Enable support for getting BYOB readers for WHATWG "
|
||||
"ReadableStreams of type \"bytes\"") ||
|
||||
!op.addBoolOption('\0', "disable-experimental-fields",
|
||||
"Disable public fields in classes") ||
|
||||
!op.addBoolOption('\0', "enable-experimental-await-fix",
|
||||
|
179
js/src/tests/non262/String/utf8-encode.js
Normal file
179
js/src/tests/non262/String/utf8-encode.js
Normal file
@ -0,0 +1,179 @@
|
||||
// |reftest| skip-if(!xulRuntime.shell)
|
||||
|
||||
var BUGNUMBER = 1561567;
|
||||
var summary = 'JS_EncodeStringToUTF8BufferPartial - Encode string as UTF-8 into a byte array';
|
||||
|
||||
print(BUGNUMBER + ": " + summary);
|
||||
|
||||
var concat = [
|
||||
{
|
||||
head: "a",
|
||||
tail: "b",
|
||||
expected: "ab",
|
||||
name: "Latin1 and Latin1",
|
||||
},
|
||||
{
|
||||
head: "α",
|
||||
tail: "β",
|
||||
expected: "αβ",
|
||||
name: "UTF-16 and UTF-16",
|
||||
},
|
||||
{
|
||||
head: "a",
|
||||
tail: "β",
|
||||
expected: "aβ",
|
||||
name: "Latin1 and UTF-16",
|
||||
},
|
||||
{
|
||||
head: "α",
|
||||
tail: "b",
|
||||
expected: "αb",
|
||||
name: "UTF-16 and Latin1",
|
||||
},
|
||||
{
|
||||
head: "\uD83D",
|
||||
tail: "\uDE03",
|
||||
expected: "\uD83D\uDE03",
|
||||
name: "Surrogate pair",
|
||||
},
|
||||
{
|
||||
head: "a\uD83D",
|
||||
tail: "\uDE03b",
|
||||
expected: "a\uD83D\uDE03b",
|
||||
name: "Surrogate pair with prefix and suffix",
|
||||
},
|
||||
{
|
||||
head: "\uD83D",
|
||||
tail: "b",
|
||||
expected: "\uFFFDb",
|
||||
name: "Unpaired high surrogate and Latin1",
|
||||
},
|
||||
{
|
||||
head: "a\uD83D",
|
||||
tail: "b",
|
||||
expected: "a\uFFFDb",
|
||||
name: "Prefixed unpaired high surrogate and Latin1",
|
||||
},
|
||||
{
|
||||
head: "\uD83D",
|
||||
tail: "β",
|
||||
expected: "\uFFFDβ",
|
||||
name: "Unpaired high surrogate and UTF-16",
|
||||
},
|
||||
{
|
||||
head: "a\uD83D",
|
||||
tail: "β",
|
||||
expected: "a\uFFFDβ",
|
||||
name: "Prefixed unpaired high surrogate and UTF-16",
|
||||
},
|
||||
|
||||
{
|
||||
head: "\uDE03",
|
||||
tail: "b",
|
||||
expected: "\uFFFDb",
|
||||
name: "Unpaired low surrogate and Latin1",
|
||||
},
|
||||
{
|
||||
head: "a\uDE03",
|
||||
tail: "b",
|
||||
expected: "a\uFFFDb",
|
||||
name: "Prefixed unpaired low surrogate and Latin1",
|
||||
},
|
||||
{
|
||||
head: "\uDE03",
|
||||
tail: "β",
|
||||
expected: "\uFFFDβ",
|
||||
name: "Unpaired low surrogate and UTF-16",
|
||||
},
|
||||
{
|
||||
head: "a\uDE03",
|
||||
tail: "β",
|
||||
expected: "a\uFFFDβ",
|
||||
name: "Prefixed unpaired low surrogate and UTF-16",
|
||||
},
|
||||
|
||||
{
|
||||
head: "a",
|
||||
tail: "\uDE03",
|
||||
expected: "a\uFFFD",
|
||||
name: "Latin1 and unpaired low surrogate",
|
||||
},
|
||||
{
|
||||
head: "a",
|
||||
tail: "\uDE03b",
|
||||
expected: "a\uFFFDb",
|
||||
name: "Latin1 and suffixed unpaired low surrogate",
|
||||
},
|
||||
{
|
||||
head: "α",
|
||||
tail: "\uDE03",
|
||||
expected: "α\uFFFD",
|
||||
name: "UTF-16 and unpaired low surrogate",
|
||||
},
|
||||
{
|
||||
head: "α",
|
||||
tail: "\uDE03b",
|
||||
expected: "α\uFFFDb",
|
||||
name: "UTF-16 and suffixed unpaired low surrogate",
|
||||
},
|
||||
|
||||
{
|
||||
head: "a",
|
||||
tail: "\uD83D",
|
||||
expected: "a\uFFFD",
|
||||
name: "Latin1 and unpaired high surrogate",
|
||||
},
|
||||
{
|
||||
head: "a",
|
||||
tail: "\uD83Db",
|
||||
expected: "a\uFFFDb",
|
||||
name: "Latin1 and suffixed unpaired high surrogate",
|
||||
},
|
||||
{
|
||||
head: "α",
|
||||
tail: "\uD83D",
|
||||
expected: "α\uFFFD",
|
||||
name: "UTF-16 and unpaired high surrogate",
|
||||
},
|
||||
{
|
||||
head: "α",
|
||||
tail: "\uD83Db",
|
||||
expected: "α\uFFFDb",
|
||||
name: "UTF-16 and suffixed unpaired high surrogate",
|
||||
},
|
||||
];
|
||||
|
||||
assertEq(isSameCompartment(newRope, this), true);
|
||||
|
||||
function checkUtf8Equal(first, second) {
|
||||
var firstBuffer = new Uint8Array(first.length * 3);
|
||||
var secondBuffer = new Uint8Array(second.length * 3);
|
||||
|
||||
var [firstRead, firstWritten] = encodeAsUtf8InBuffer(first, firstBuffer);
|
||||
var [secondRead, secondWritten] = encodeAsUtf8InBuffer(second, secondBuffer);
|
||||
|
||||
assertEq(first.length, firstRead);
|
||||
assertEq(second.length, secondRead);
|
||||
|
||||
assertEq(firstWritten, secondWritten);
|
||||
|
||||
for (var i = 0; i < firstWritten; ++i) {
|
||||
assertEq(firstBuffer[i], secondBuffer[i]);
|
||||
}
|
||||
}
|
||||
|
||||
concat.forEach(function(t) {
|
||||
var rope = newRope(t.head, t.tail);
|
||||
checkUtf8Equal(rope, t.expected);
|
||||
});
|
||||
|
||||
var ab = newRope("a", "b");
|
||||
var abc = newRope(ab, "c");
|
||||
var ef = newRope("e", "f");
|
||||
var def = newRope("d", ef);
|
||||
var abcdef = newRope(abc, def);
|
||||
var abcdefab = newRope(abcdef, ab);
|
||||
checkUtf8Equal(abcdefab, "abcdefab");
|
||||
|
||||
if (typeof reportCompare === "function")
|
||||
reportCompare(true, true);
|
@ -11,11 +11,8 @@ name = "baldrdash"
|
||||
[dependencies]
|
||||
# The build system redirects the versions of cranelift-codegen and
|
||||
# cranelift-wasm to pinned commits. If you want to update Cranelift in Gecko,
|
||||
# you should update the following files:
|
||||
# - $TOP_LEVEL/Cargo.toml, look for the revision (rev) hashes of both cranelift
|
||||
# dependencies (codegen and wasm).
|
||||
# - $TOP_LEVEL/.cargo/config, look for the revision (rev) field of the
|
||||
# Cranelift source.
|
||||
# you should update the following $TOP_LEVEL/Cargo.toml file: look for the
|
||||
# revision (rev) hashes of both cranelift dependencies (codegen and wasm).
|
||||
cranelift-codegen = { version = "0.42", default-features = false }
|
||||
cranelift-wasm = "0.42"
|
||||
log = { version = "0.4.6", default-features = false, features = ["release_max_level_info"] }
|
||||
|
@ -1002,6 +1002,7 @@ void PresShell::Init(Document* aDocument, nsPresContext* aPresContext,
|
||||
os->AddObserver(this, "sessionstore-one-or-no-tab-restored", false);
|
||||
}
|
||||
os->AddObserver(this, "font-info-updated", false);
|
||||
os->AddObserver(this, "look-and-feel-pref-changed", false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1246,6 +1247,7 @@ void PresShell::Destroy() {
|
||||
os->RemoveObserver(this, "sessionstore-one-or-no-tab-restored");
|
||||
}
|
||||
os->RemoveObserver(this, "font-info-updated");
|
||||
os->RemoveObserver(this, "look-and-feel-pref-changed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -9495,6 +9497,11 @@ PresShell::Observe(nsISupports* aSubject, const char* aTopic,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (!nsCRT::strcmp(aTopic, "look-and-feel-pref-changed")) {
|
||||
ThemeChanged();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_WARNING("unrecognized topic in PresShell::Observe");
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ load 331292.html
|
||||
load 334105-1.xhtml
|
||||
load 334107-1.xhtml
|
||||
load 334147-1.xhtml
|
||||
asserts(1-18) load 334148-1.xhtml # XBL interacts poorly with CSS counters.
|
||||
load 334148-1.xhtml
|
||||
load 334602-1.html
|
||||
load 337412-1.html
|
||||
load 337883-1.html
|
||||
|
@ -40,12 +40,55 @@
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
ComputedStyle::ComputedStyle(PseudoStyleType aPseudoType,
|
||||
ServoComputedDataForgotten aComputedValues)
|
||||
: mSource(aComputedValues), mPseudoType(aPseudoType) {}
|
||||
|
||||
// If a struct returned nsChangeHint_UpdateContainingBlock, that means that one
|
||||
// property's influence on whether we're a containing block for abs-pos or
|
||||
// fixed-pos elements has changed.
|
||||
//
|
||||
// However, we only need to return the hint if the overall computation of
|
||||
// whether we establish a containing block has really changed.
|
||||
static bool ContainingBlockMayHaveChanged(const ComputedStyle& aOldStyle,
|
||||
const ComputedStyle& aNewStyle) {
|
||||
auto* oldDisp = aOldStyle.StyleDisplay();
|
||||
auto* newDisp = aNewStyle.StyleDisplay();
|
||||
|
||||
if (oldDisp->IsAbsPosContainingBlockForNonSVGTextFrames() !=
|
||||
newDisp->IsAbsPosContainingBlockForNonSVGTextFrames()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool fixedCB =
|
||||
oldDisp->IsFixedPosContainingBlockForNonSVGTextFrames(aOldStyle);
|
||||
if (fixedCB != newDisp->IsFixedPosContainingBlockForNonSVGTextFrames(aNewStyle)) {
|
||||
return true;
|
||||
}
|
||||
// If we were both before and after a fixed-pos containing-block that means
|
||||
// that everything else doesn't matter, since all the other conditions are a
|
||||
// subset of this.
|
||||
if (fixedCB) {
|
||||
return false;
|
||||
}
|
||||
// Note that neither of these two following sets of frames
|
||||
// (transform-supporting and layout-and-paint-supporting frames) is a subset
|
||||
// of the other, because table frames support contain: layout/paint but not
|
||||
// transforms (which are instead inherited to the table wrapper), and quite a
|
||||
// few frame types support transforms but not contain: layout/paint (e.g.,
|
||||
// table rows and row groups, many SVG frames).
|
||||
if (oldDisp->IsFixedPosContainingBlockForTransformSupportingFrames() !=
|
||||
newDisp->IsFixedPosContainingBlockForTransformSupportingFrames()) {
|
||||
return true;
|
||||
}
|
||||
if (oldDisp->IsFixedPosContainingBlockForContainLayoutAndPaintSupportingFrames() !=
|
||||
newDisp
|
||||
->IsFixedPosContainingBlockForContainLayoutAndPaintSupportingFrames()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
nsChangeHint ComputedStyle::CalcStyleDifference(const ComputedStyle& aNewStyle,
|
||||
uint32_t* aEqualStructs) const {
|
||||
AUTO_PROFILER_LABEL("ComputedStyle::CalcStyleDifference", LAYOUT);
|
||||
@ -192,48 +235,7 @@ nsChangeHint ComputedStyle::CalcStyleDifference(const ComputedStyle& aNewStyle,
|
||||
}
|
||||
|
||||
if (hint & nsChangeHint_UpdateContainingBlock) {
|
||||
// If a struct returned nsChangeHint_UpdateContainingBlock, that
|
||||
// means that one property's influence on whether we're a containing
|
||||
// block for abs-pos or fixed-pos elements has changed. However, we
|
||||
// only need to return the hint if the overall computation of
|
||||
// whether we establish a containing block has changed.
|
||||
|
||||
// This depends on data in nsStyleDisplay and nsStyleEffects, so we do it
|
||||
// here
|
||||
|
||||
// Note that it's perhaps good for this test to be last because it
|
||||
// doesn't use Peek* functions to get the structs on the old
|
||||
// context. But this isn't a big concern because these struct
|
||||
// getters should be called during frame construction anyway.
|
||||
const nsStyleDisplay* oldDisp = StyleDisplay();
|
||||
const nsStyleDisplay* newDisp = aNewStyle.StyleDisplay();
|
||||
bool isFixedCB;
|
||||
if (oldDisp->IsAbsPosContainingBlockForNonSVGTextFrames() ==
|
||||
newDisp->IsAbsPosContainingBlockForNonSVGTextFrames() &&
|
||||
(isFixedCB =
|
||||
oldDisp->IsFixedPosContainingBlockForNonSVGTextFrames(*this)) ==
|
||||
newDisp->IsFixedPosContainingBlockForNonSVGTextFrames(aNewStyle) &&
|
||||
// transform-supporting frames are a subcategory of non-SVG-text
|
||||
// frames, so no need to test this if isFixedCB is true (both
|
||||
// before and after the change)
|
||||
(isFixedCB ||
|
||||
oldDisp->IsFixedPosContainingBlockForTransformSupportingFrames() ==
|
||||
newDisp
|
||||
->IsFixedPosContainingBlockForTransformSupportingFrames()) &&
|
||||
// contain-layout-and-paint-supporting frames are a subset of
|
||||
// non-SVG-text frames, so no need to test this if isFixedCB is true
|
||||
// (both before and after the change).
|
||||
//
|
||||
// Note, however, that neither of these last two sets is a
|
||||
// subset of the other, because table frames support contain:
|
||||
// layout/paint but not transforms (which are instead inherited
|
||||
// to the table wrapper), and quite a few frame types support
|
||||
// transforms but not contain: layout/paint (e.g., table rows
|
||||
// and row groups, many SVG frames).
|
||||
(isFixedCB ||
|
||||
oldDisp->IsFixedPosContainingBlockForContainLayoutAndPaintSupportingFrames() ==
|
||||
newDisp
|
||||
->IsFixedPosContainingBlockForContainLayoutAndPaintSupportingFrames())) {
|
||||
if (!ContainingBlockMayHaveChanged(*this, aNewStyle)) {
|
||||
// While some styles that cause the frame to be a containing block
|
||||
// has changed, the overall result cannot have changed (no matter
|
||||
// what the frame type is).
|
||||
|
@ -1662,8 +1662,7 @@ void Gecko_StyleSheet_FinishAsyncParse(
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
SheetLoadData* data = d->get();
|
||||
if (Document* doc = data->mLoader->GetDocument()) {
|
||||
if (const StyleUseCounters* docCounters =
|
||||
doc->GetStyleUseCounters()) {
|
||||
if (const auto* docCounters = doc->GetStyleUseCounters()) {
|
||||
Servo_UseCounters_Merge(docCounters, counters.get());
|
||||
}
|
||||
}
|
||||
|
@ -1696,6 +1696,10 @@ void Loader::SheetComplete(SheetLoadData& aLoadData, nsresult aStatus) {
|
||||
MarkLoadTreeFailed(aLoadData);
|
||||
}
|
||||
|
||||
if (mDocument) {
|
||||
mDocument->MaybeWarnAboutZoom();
|
||||
}
|
||||
|
||||
// 8 is probably big enough for all our common cases. It's not likely that
|
||||
// imports will nest more than 8 deep, and multiple sheets with the same URI
|
||||
// are rare.
|
||||
|
@ -764,13 +764,21 @@ void nsSVGOuterSVGFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
|
||||
DisplayBorderBackgroundOutline(aBuilder, aLists);
|
||||
|
||||
nsRect visibleRect = aBuilder->GetVisibleRect();
|
||||
nsRect dirtyRect = aBuilder->GetDirtyRect();
|
||||
|
||||
// Per-spec, we always clip root-<svg> even when 'overflow' has its initial
|
||||
// value of 'visible'. See also the "visual overflow" comments in Reflow.
|
||||
DisplayListClipState::AutoSaveRestore autoSR(aBuilder);
|
||||
if (mIsRootContent || StyleDisplay()->IsScrollableOverflow()) {
|
||||
autoSR.ClipContainingBlockDescendantsToContentBox(aBuilder, this);
|
||||
visibleRect = visibleRect.Intersect(GetContentRectRelativeToSelf());
|
||||
dirtyRect = dirtyRect.Intersect(GetContentRectRelativeToSelf());
|
||||
}
|
||||
|
||||
nsDisplayListBuilder::AutoBuildingDisplayList building(
|
||||
aBuilder, this, visibleRect, dirtyRect);
|
||||
|
||||
if ((aBuilder->IsForEventDelivery() &&
|
||||
NS_SVGDisplayListHitTestingEnabled()) ||
|
||||
(!aBuilder->IsForEventDelivery() && NS_SVGDisplayListPaintingEnabled())) {
|
||||
|
@ -339,6 +339,18 @@ class MOZ_MUST_USE_TYPE Result final {
|
||||
MOZ_ASSERT(isErr());
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation detail of MOZ_TRY().
|
||||
* Create an error result from another error result.
|
||||
*/
|
||||
template <typename E2>
|
||||
MOZ_IMPLICIT Result(GenericErrorResult<E2>&& aErrorResult)
|
||||
: mImpl(std::forward<E2>(aErrorResult.mErrorValue)) {
|
||||
static_assert(mozilla::IsConvertible<E2, E>::value,
|
||||
"E2 must be convertible to E");
|
||||
MOZ_ASSERT(isErr());
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation detail of MOZ_TRY().
|
||||
* Create an error result from another error result.
|
||||
@ -470,12 +482,13 @@ class MOZ_MUST_USE_TYPE GenericErrorResult {
|
||||
friend class Result;
|
||||
|
||||
public:
|
||||
explicit GenericErrorResult(E aErrorValue) : mErrorValue(aErrorValue) {}
|
||||
explicit GenericErrorResult(E aErrorValue)
|
||||
: mErrorValue(std::forward<E>(aErrorValue)) {}
|
||||
};
|
||||
|
||||
template <typename E>
|
||||
inline GenericErrorResult<E> Err(E&& aErrorValue) {
|
||||
return GenericErrorResult<E>(aErrorValue);
|
||||
return GenericErrorResult<E>(std::forward<E>(aErrorValue));
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
@ -231,6 +231,16 @@ using UniqueResult = Result<UniquePtr<int>, const char*>;
|
||||
static UniqueResult UniqueTask() { return mozilla::MakeUnique<int>(3); }
|
||||
static UniqueResult UniqueTaskError() { return Err("bad"); }
|
||||
|
||||
using UniqueErrorResult = Result<int, UniquePtr<int>>;
|
||||
static UniqueErrorResult UniqueError() {
|
||||
return Err(mozilla::MakeUnique<int>(4));
|
||||
}
|
||||
|
||||
static Result<Ok, UniquePtr<int>> TryUniqueErrorResult() {
|
||||
MOZ_TRY(UniqueError());
|
||||
return Ok();
|
||||
}
|
||||
|
||||
static void UniquePtrTest() {
|
||||
{
|
||||
auto result = UniqueTask();
|
||||
@ -256,6 +266,28 @@ static void UniquePtrTest() {
|
||||
MOZ_RELEASE_ASSERT(result.isOk());
|
||||
MOZ_RELEASE_ASSERT(result.inspect() && *result.inspect() == 6);
|
||||
}
|
||||
|
||||
{
|
||||
auto result = UniqueError();
|
||||
MOZ_RELEASE_ASSERT(result.isErr());
|
||||
MOZ_RELEASE_ASSERT(result.inspectErr());
|
||||
MOZ_RELEASE_ASSERT(*result.inspectErr() == 4);
|
||||
auto err = result.unwrapErr();
|
||||
MOZ_RELEASE_ASSERT(!result.inspectErr());
|
||||
MOZ_RELEASE_ASSERT(err);
|
||||
MOZ_RELEASE_ASSERT(*err == 4);
|
||||
|
||||
result = UniqueErrorResult(0);
|
||||
MOZ_RELEASE_ASSERT(result.isOk() && result.unwrap() == 0);
|
||||
}
|
||||
|
||||
{
|
||||
auto result = TryUniqueErrorResult();
|
||||
MOZ_RELEASE_ASSERT(result.isErr());
|
||||
auto err = result.unwrapErr();
|
||||
MOZ_RELEASE_ASSERT(err && *err == 4);
|
||||
MOZ_RELEASE_ASSERT(!result.inspectErr());
|
||||
}
|
||||
}
|
||||
|
||||
/* * */
|
||||
|
@ -134,6 +134,7 @@ pref("urlclassifier.downloadAllowTable", "");
|
||||
pref("urlclassifier.downloadBlockTable", "");
|
||||
|
||||
/* these should help performance */
|
||||
pref("layout.reflow.synthMouseMove", false); // Keep false until bug 1582363 is fixed
|
||||
pref("layout.css.report_errors", false);
|
||||
|
||||
/* download manager (don't show the window or alert) */
|
||||
|
@ -2,10 +2,6 @@
|
||||
# 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/.
|
||||
|
||||
addonType.extension=Extension
|
||||
addonType.theme=Theme
|
||||
addonType.locale=Locale
|
||||
|
||||
addonStatus.uninstalled=%S will be uninstalled after restart.
|
||||
|
||||
# Will keep both strings and at runtime will fallback on the old one if the new one is not yet localized
|
||||
|
@ -1,5 +0,0 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
banner.firstrunHomepage.text=Welcome to your Homepage! Get back here every time you open a new tab.
|
@ -21,8 +21,6 @@ editLogin.fallbackTitle=Edit Login
|
||||
editLogin.saved1=Saved login
|
||||
editLogin.couldNotSave=Changes could not be saved
|
||||
|
||||
loginsDetails.age=Age: %S days
|
||||
|
||||
loginsDetails.copyFailed=Copy failed
|
||||
loginsDetails.passwordCopied=Password copied
|
||||
loginsDetails.usernameCopied=Username copied
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user