Merge m-c to autoland on a CLOSED TREE. a=merge

This commit is contained in:
Ryan VanderMeulen 2016-11-30 13:27:46 -05:00
Родитель 8204752c66 474dbc7f10
Коммит 7af8f38714
96 изменённых файлов: 13950 добавлений и 13557 удалений

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

@ -207,7 +207,7 @@ function getTabId(tab) {
if (tab.browser) // fennec
return tab.id
return String.split(tab.linkedPanel, 'panel').pop();
return String(tab.linkedPanel).split('panel').pop();
}
exports.getTabId = getTabId;

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

@ -336,7 +336,7 @@ var isValidURI = exports.isValidURI = function (uri) {
}
function isLocalURL(url) {
if (String.indexOf(url, './') === 0)
if (String(url).indexOf('./') === 0)
return true;
try {

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

@ -303,9 +303,9 @@ let gDecoderDoctorHandler = {
histogram.add(decoderDoctorReportId, TELEMETRY_DDSTAT_SHOWN_FIRST);
} else {
// Split existing formats into an array of strings.
let existing = formatsInPref.split(",").map(String.trim);
let existing = formatsInPref.split(",").map(x => x.trim());
// Keep given formats that were not already recorded.
let newbies = formats.split(",").map(String.trim)
let newbies = formats.split(",").map(x => x.trim())
.filter(x => !existing.includes(x));
// And rewrite pref with the added new formats (if any).
if (newbies.length) {

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

@ -320,7 +320,9 @@ class BasePopup {
this.viewNode.style.maxHeight = `${height}px`;
} else {
this.browser.style.width = `${width}px`;
this.browser.style.minWidth = `${width}px`;
this.browser.style.height = `${height}px`;
this.browser.style.minHeight = `${height}px`;
}
let event = new this.window.CustomEvent("WebExtPopupResized", {detail});
@ -488,11 +490,12 @@ class ViewPopup extends BasePopup {
let browser = this.browser;
yield this.createBrowser(this.viewNode);
this.ignoreResizes = false;
this.browser.swapDocShells(browser);
this.destroyBrowser(browser);
this.ignoreResizes = false;
if (this.dimensions) {
if (this.dimensions && !this.fixedWidth) {
this.resizeBrowser(this.dimensions);
}

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

@ -46,6 +46,7 @@ support-files =
[browser_ext_incognito_views.js]
[browser_ext_incognito_popup.js]
[browser_ext_lastError.js]
[browser_ext_omnibox.js]
[browser_ext_optionsPage_privileges.js]
[browser_ext_pageAction_context.js]
[browser_ext_pageAction_popup.js]
@ -97,12 +98,14 @@ support-files =
[browser_ext_webRequest.js]
[browser_ext_webNavigation_frameId0.js]
[browser_ext_webNavigation_getFrames.js]
[browser_ext_webNavigation_urlbar_transitions.js]
[browser_ext_windows.js]
[browser_ext_windows_create.js]
tags = fullscreen
[browser_ext_windows_create_params.js]
[browser_ext_windows_create_tabId.js]
[browser_ext_windows_create_url.js]
[browser_ext_windows_events.js]
[browser_ext_windows_size.js]
skip-if = os == 'mac' # Fails when windows are randomly opened in fullscreen mode
[browser_ext_windows_update.js]

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

@ -2,10 +2,7 @@
tags = webextensions in-process-webextensions
[browser_ext_legacy_extension_context_contentscript.js]
[browser_ext_omnibox.js]
[browser_ext_webNavigation_urlbar_transitions.js]
[browser_ext_windows_allowScriptsToClose.js]
[browser_ext_windows_events.js]
[include:browser-common.ini]
[parent:browser-common.ini]

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

@ -180,7 +180,7 @@ function* testPopupSize(standardsMode, browserWin = window, arrowSide = "top") {
// Wait long enough to make sure the initial resize debouncing timer has
// expired.
yield new Promise(resolve => setTimeout(resolve, 100));
yield delay(100);
let dims = yield promiseContentDimensions(browser);
@ -295,9 +295,11 @@ add_task(function* testBrowserActionMenuResizeBottomArrow() {
break;
}
yield new Promise(resolve => setTimeout(resolve, 100));
yield delay(100);
}
yield SimpleTest.promiseFocus(win);
yield testPopupSize(true, win, "bottom");
yield BrowserTestUtils.closeWindow(win);

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

@ -73,6 +73,8 @@ function* testExecuteBrowserActionWithOptions(options = {}) {
yield extension.startup();
yield SimpleTest.promiseFocus(window);
if (options.inArea) {
let widget = getBrowserActionWidget(extension);
CustomizableUI.addWidgetToArea(widget.id, options.inArea);

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

@ -228,6 +228,8 @@ add_task(function* () {
yield setup();
yield extension.startup();
yield SimpleTest.promiseFocus(window);
yield testInputEvents();
// Test the heuristic result with default suggestions.

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

@ -2,10 +2,6 @@
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
let delay = ms => new Promise(resolve => {
setTimeout(resolve, ms);
});
add_task(function* testPageActionPopupResize() {
let browser;
@ -39,17 +35,8 @@ add_task(function* testPageActionPopupResize() {
browser = yield awaitExtensionPanel(extension);
function* waitForSize(size) {
let dims = yield promiseContentDimensions(browser);
for (let i = 0; i < 100 && dims.window.innerWidth != size; i++) {
yield delay(50);
dims = yield promiseContentDimensions(browser);
}
return dims;
}
function* checkSize(expected) {
let dims = yield waitForSize(expected);
let dims = yield promiseContentDimensions(browser);
let {body, root} = dims;
is(dims.window.innerHeight, expected, `Panel window should be ${expected}px tall`);
@ -83,9 +70,7 @@ add_task(function* testPageActionPopupResize() {
yield checkSize(size);
}
yield alterContent(browser, setSize, 1400);
let dims = yield waitForSize(800);
let dims = yield alterContent(browser, setSize, 1400);
let {body, root} = dims;
is(dims.window.innerWidth, 800, "Panel window width");
@ -147,13 +132,6 @@ add_task(function* testPageActionPopupReflow() {
let dims = yield alterContent(browser, setSize, 18);
if (AppConstants.platform == "win") {
while (dims.window.innerWidth < 800) {
yield delay(50);
dims = yield promiseContentDimensions(browser);
}
}
is(dims.window.innerWidth, 800, "Panel window should be 800px wide");
is(dims.body.clientWidth, 800, "Panel body should be 800px wide");
is(dims.body.clientWidth, dims.body.scrollWidth,

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

@ -105,6 +105,7 @@ add_task(function* test_webnavigation_urlbar_typed_transitions() {
});
yield extension.startup();
yield SimpleTest.promiseFocus(window);
yield extension.awaitMessage("ready");
@ -150,6 +151,7 @@ add_task(function* test_webnavigation_urlbar_bookmark_transitions() {
});
yield extension.startup();
yield SimpleTest.promiseFocus(window);
yield extension.awaitMessage("ready");
@ -195,6 +197,7 @@ add_task(function* test_webnavigation_urlbar_keyword_transition() {
});
yield extension.startup();
yield SimpleTest.promiseFocus(window);
yield extension.awaitMessage("ready");
@ -235,6 +238,7 @@ add_task(function* test_webnavigation_urlbar_search_transitions() {
});
yield extension.startup();
yield SimpleTest.promiseFocus(window);
yield extension.awaitMessage("ready");

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

@ -104,6 +104,8 @@ add_task(function* testWindowsEvents() {
info(`Close browser window 1`);
yield BrowserTestUtils.closeWindow(win1);
currentWindow.focus();
winId = yield extension.awaitMessage(`window-removed`);
is(winId, win1Id, "Got removed event for the correct window ID.");

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

@ -97,7 +97,7 @@ function promisePopupHidden(popup) {
});
}
function promiseContentDimensions(browser) {
function promisePossiblyInaccurateContentDimensions(browser) {
return ContentTask.spawn(browser, null, function* () {
function copyProps(obj, props) {
let res = {};
@ -121,18 +121,39 @@ function promiseContentDimensions(browser) {
});
}
function* awaitPopupResize(browser) {
return BrowserTestUtils.waitForEvent(browser, "WebExtPopupResized",
event => event.detail === "delayed");
function delay(ms = 0) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function promiseContentDimensions(browser) {
// For remote browsers, each resize operation requires an asynchronous
// round-trip to resize the content window. Since there's a certain amount of
// unpredictability in the timing, mainly due to the unpredictability of
// reflows, we need to wait until the content window dimensions match the
// <browser> dimensions before returning data.
let dims = await promisePossiblyInaccurateContentDimensions(browser);
while (browser.clientWidth !== dims.window.innerWidth ||
browser.clientHeight !== dims.window.innerHeight) {
await delay(50);
dims = await promisePossiblyInaccurateContentDimensions(browser);
}
return dims;
}
async function awaitPopupResize(browser) {
await BrowserTestUtils.waitForEvent(browser, "WebExtPopupResized",
event => event.detail === "delayed");
return promiseContentDimensions(browser);
}
function alterContent(browser, task, arg = null) {
return Promise.all([
ContentTask.spawn(browser, arg, task),
awaitPopupResize(browser),
]).then(() => {
return promiseContentDimensions(browser);
});
]).then(([, dims]) => dims);
}
function getPanelForNode(node) {

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

@ -15,13 +15,15 @@ add_task(function() {
try {
// Setup a public tab and a private tab
info("Setting up public tab");
tab1 = yield BrowserTestUtils.openNewForegroundTab(gBrowser, URL_PUBLIC);
tab1 = gBrowser.addTab(URL_PUBLIC);
yield promiseBrowserLoaded(tab1.linkedBrowser);
info("Setting up private tab");
tab2 = yield BrowserTestUtils.openNewForegroundTab(gBrowser);
tab2 = gBrowser.addTab();
yield promiseBrowserLoaded(tab2.linkedBrowser);
yield setUsePrivateBrowsing(tab2.linkedBrowser, true);
tab2.linkedBrowser.loadURI(URL_PRIVATE);
yield BrowserTestUtils.browserLoaded(tab2.linkedBrowser, false, URL_PRIVATE);
yield promiseBrowserLoaded(tab2.linkedBrowser);
info("Flush to make sure chrome received all data.");
yield TabStateFlusher.flush(tab1.linkedBrowser);
@ -30,15 +32,16 @@ add_task(function() {
info("Checking out state");
let state = yield promiseRecoveryFileContents();
info("State: " + state);
// Ensure that sessionstore.js only knows about the public tab
ok(state.indexOf(URL_PUBLIC) != -1, "State contains public tab");
ok(state.indexOf(URL_PRIVATE) == -1, "State does not contain private tab");
// Ensure that we can close and undo close the public tab but not the private tab
yield BrowserTestUtils.removeTab(tab2);
gBrowser.removeTab(tab2);
tab2 = null;
yield BrowserTestUtils.removeTab(tab1);
gBrowser.removeTab(tab1);
tab1 = null;
tab1 = ss.undoCloseTab(window, 0);
@ -48,10 +51,10 @@ add_task(function() {
} finally {
if (tab1) {
yield BrowserTestUtils.removeTab(tab1);
gBrowser.removeTab(tab1);
}
if (tab2) {
yield BrowserTestUtils.removeTab(tab2);
gBrowser.removeTab(tab2);
}
}
});
@ -64,13 +67,14 @@ add_task(function () {
forgetClosedWindows();
// Create a new window to attach our frame script to.
let win = yield BrowserTestUtils.openNewBrowserWindow();
let win = yield promiseNewWindowLoaded();
let mm = win.getGroupMessageManager("browsers");
mm.loadFrameScript(FRAME_SCRIPT, true);
// Create a new tab in the new window that will load the frame script.
let tab = yield BrowserTestUtils.openNewForegroundTab(win.gBrowser, "about:mozilla");
let tab = win.gBrowser.addTab("about:mozilla");
let browser = tab.linkedBrowser;
yield promiseBrowserLoaded(browser);
yield TabStateFlusher.flush(browser);
// Check that we consider the tab as private.
@ -78,12 +82,13 @@ add_task(function () {
ok(state.isPrivate, "tab considered private");
// Ensure we don't allow restoring closed private tabs in non-private windows.
yield BrowserTestUtils.removeTab(tab);
win.gBrowser.removeTab(tab);
is(ss.getClosedTabCount(win), 0, "no tabs to restore");
// Create a new tab in the new window that will load the frame script.
tab = yield BrowserTestUtils.openNewForegroundTab(win.gBrowser, "about:mozilla");
tab = win.gBrowser.addTab("about:mozilla");
browser = tab.linkedBrowser;
yield promiseBrowserLoaded(browser);
yield TabStateFlusher.flush(browser);
// Check that we consider the tab as private.
@ -101,11 +106,12 @@ add_task(function () {
forgetClosedWindows();
// Create a new window to attach our frame script to.
let win = yield BrowserTestUtils.openNewBrowserWindow({private: true});
let win = yield promiseNewWindowLoaded({private: true});
// Create a new tab in the new window that will load the frame script.
let tab = yield BrowserTestUtils.openNewForegroundTab(win.gBrowser, "about:mozilla");
let tab = win.gBrowser.addTab("about:mozilla");
let browser = tab.linkedBrowser;
yield promiseBrowserLoaded(browser);
yield TabStateFlusher.flush(browser);
// Check that we consider the tab as private.
@ -113,7 +119,7 @@ add_task(function () {
ok(state.isPrivate, "tab considered private");
// Ensure that closed tabs in a private windows can be restored.
yield BrowserTestUtils.removeTab(tab);
win.gBrowser.removeTab(tab);
is(ss.getClosedTabCount(win), 1, "there is a single tab to restore");
// Ensure that closed private windows can never be restored.

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

@ -23,10 +23,6 @@ registerCleanupFunction(() => {
for (let script of FRAME_SCRIPTS) {
mm.removeDelayedFrameScript(script, true);
}
// Force a garbage collect after the end of each test run, to make sure that it
// won't interfere with the timing of the next test to be run from the suite.
window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils).garbageCollect();
});
const {Promise} = Cu.import("resource://gre/modules/Promise.jsm", {});

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

@ -34,7 +34,7 @@ function test() {
// the epoch.
// This is not the correct value of the timestamp, but good enough for
// comparison.
return Date.parse("T" + String.trim(value.textContent));
return Date.parse("T" + String(value.textContent).trim());
});
let minTimestamp = Math.min.apply(null, aTimestampMilliseconds);

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

@ -176,7 +176,7 @@ var items = [
});
function compareAddonNames(nameA, nameB) {
return String.localeCompare(nameA.name, nameB.name);
return String(nameA.name).localeCompare(nameB.name);
}
enabledAddons.sort(compareAddonNames);
disabledAddons.sort(compareAddonNames);

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

@ -20,7 +20,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=742156
/** Test for Bug 742156 **/
var nativeToString = ("" + String.replace).replace("replace", "EventTarget");
var nativeToString = ("" + String).replace("String", "EventTarget");
try {
var eventTargetToString = "" + EventTarget;
is(eventTargetToString, nativeToString,

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

@ -182,7 +182,7 @@ function testStreamingOptions()
}
function arrayFromString(s) {
return s.split('').map(function(c){return String.charCodeAt(c)});
return s.split('').map(function(c){return c.charCodeAt(0)});
}
function testArrayOfStrings(test)

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

@ -2906,12 +2906,14 @@ EventStateManager::PostHandleEvent(nsPresContext* aPresContext,
NS_ENSURE_ARG(aPresContext);
NS_ENSURE_ARG_POINTER(aStatus);
bool dispatchedToContentProcess = HandleCrossProcessEvent(aEvent,
aStatus);
mCurrentTarget = aTargetFrame;
mCurrentTargetContent = nullptr;
bool dispatchedToContentProcess = HandleCrossProcessEvent(aEvent, aStatus);
// NOTE: the above call may have destroyed aTargetFrame, please use
// mCurrentTarget henceforth. This is to avoid using it accidentally:
aTargetFrame = nullptr;
// Most of the events we handle below require a frame.
// Add special cases here.
if (!mCurrentTarget && aEvent->mMessage != eMouseUp &&
@ -3168,7 +3170,7 @@ EventStateManager::PostHandleEvent(nsPresContext* aPresContext,
ScrollbarsForWheel::MayInactivate();
WidgetWheelEvent* wheelEvent = aEvent->AsWheelEvent();
nsIScrollableFrame* scrollTarget =
do_QueryFrame(ComputeScrollTarget(aTargetFrame, wheelEvent,
do_QueryFrame(ComputeScrollTarget(mCurrentTarget, wheelEvent,
COMPUTE_DEFAULT_ACTION_TARGET));
if (scrollTarget) {
scrollTarget->ScrollSnap();
@ -3191,7 +3193,7 @@ EventStateManager::PostHandleEvent(nsPresContext* aPresContext,
// because if the scroll target is a plugin, the default action should be
// chosen by the plugin rather than by our prefs.
nsIFrame* frameToScroll =
ComputeScrollTarget(aTargetFrame, wheelEvent,
ComputeScrollTarget(mCurrentTarget, wheelEvent,
COMPUTE_DEFAULT_ACTION_TARGET);
nsPluginFrame* pluginFrame = do_QueryFrame(frameToScroll);
@ -3211,7 +3213,7 @@ EventStateManager::PostHandleEvent(nsPresContext* aPresContext,
// For scrolling of default action, we should honor the mouse wheel
// transaction.
ScrollbarsForWheel::PrepareToScrollText(this, aTargetFrame, wheelEvent);
ScrollbarsForWheel::PrepareToScrollText(this, mCurrentTarget, wheelEvent);
if (aEvent->mMessage != eWheel ||
(!wheelEvent->mDeltaX && !wheelEvent->mDeltaY)) {
@ -3221,8 +3223,8 @@ EventStateManager::PostHandleEvent(nsPresContext* aPresContext,
nsIScrollableFrame* scrollTarget = do_QueryFrame(frameToScroll);
ScrollbarsForWheel::SetActiveScrollTarget(scrollTarget);
nsIFrame* rootScrollFrame = !aTargetFrame ? nullptr :
aTargetFrame->PresContext()->PresShell()->GetRootScrollFrame();
nsIFrame* rootScrollFrame = !mCurrentTarget ? nullptr :
mCurrentTarget->PresContext()->PresShell()->GetRootScrollFrame();
nsIScrollableFrame* rootScrollableFrame = nullptr;
if (rootScrollFrame) {
rootScrollableFrame = do_QueryFrame(rootScrollFrame);
@ -3259,7 +3261,7 @@ EventStateManager::PostHandleEvent(nsPresContext* aPresContext,
if (!intDelta) {
break;
}
DoScrollZoom(aTargetFrame, intDelta);
DoScrollZoom(mCurrentTarget, intDelta);
break;
}
case WheelPrefs::ACTION_SEND_TO_PLUGIN:
@ -3289,7 +3291,7 @@ EventStateManager::PostHandleEvent(nsPresContext* aPresContext,
// by looking at the scroll overflow values on mCanTriggerSwipe
// events after they have been processed.
allDeltaOverflown =
!ComputeScrollTarget(aTargetFrame, wheelEvent,
!ComputeScrollTarget(mCurrentTarget, wheelEvent,
COMPUTE_DEFAULT_ACTION_TARGET);
}
} else {

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

@ -57,8 +57,11 @@ SafeOptionListMutation::SafeOptionListMutation(nsIContent* aSelect,
: mSelect(HTMLSelectElement::FromContentOrNull(aSelect))
, mTopLevelMutation(false)
, mNeedsRebuild(false)
, mNotify(aNotify)
, mInitialSelectedIndex(-1)
{
if (mSelect) {
mInitialSelectedIndex = mSelect->SelectedIndex();
mTopLevelMutation = !mSelect->mMutating;
if (mTopLevelMutation) {
mSelect->mMutating = true;
@ -67,13 +70,13 @@ SafeOptionListMutation::SafeOptionListMutation(nsIContent* aSelect,
// option list must be up-to-date before inserting or removing options.
// Fortunately this is called only if mutation event listener
// adds or removes options.
mSelect->RebuildOptionsArray(aNotify);
mSelect->RebuildOptionsArray(mNotify);
}
nsresult rv;
if (aKid) {
rv = mSelect->WillAddOptions(aKid, aParent, aIndex, aNotify);
rv = mSelect->WillAddOptions(aKid, aParent, aIndex, mNotify);
} else {
rv = mSelect->WillRemoveOptions(aParent, aIndex, aNotify);
rv = mSelect->WillRemoveOptions(aParent, aIndex, mNotify);
}
mNeedsRebuild = NS_FAILED(rv);
}
@ -88,6 +91,16 @@ SafeOptionListMutation::~SafeOptionListMutation()
if (mTopLevelMutation) {
mSelect->mMutating = false;
}
if (mSelect->SelectedIndex() != mInitialSelectedIndex) {
// We must have triggered the SelectSomething() codepath, which can cause
// our validity to change. Unfortunately, our attempt to update validity
// in that case may not have worked correctly, because we actually call it
// before we have inserted the new <option>s into the DOM! Go ahead and
// update validity here as needed, because by now we know our <option>s
// are where they should be.
mSelect->UpdateValueMissingValidityState();
mSelect->UpdateState(mNotify);
}
#ifdef DEBUG
mSelect->VerifyOptionsArray();
#endif
@ -1774,6 +1787,15 @@ HTMLSelectElement::IsValueMissing()
for (uint32_t i = 0; i < length; ++i) {
RefPtr<HTMLOptionElement> option = Item(i);
// Check for a placeholder label option, don't count it as a valid value.
if (i == 0 && !Multiple() && Size() <= 1 && option->GetParent() == this) {
nsAutoString value;
MOZ_ALWAYS_SUCCEEDS(option->GetValue(value));
if (value.IsEmpty()) {
continue;
}
}
if (!option->Selected()) {
continue;
}
@ -1782,11 +1804,7 @@ HTMLSelectElement::IsValueMissing()
continue;
}
nsAutoString value;
MOZ_ALWAYS_SUCCEEDS(option->GetValue(value));
if (!value.IsEmpty()) {
return false;
}
return false;
}
return true;

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

@ -106,6 +106,11 @@ private:
bool mTopLevelMutation;
/** true if it is known that the option list must be recreated. */
bool mNeedsRebuild;
/** Whether we should be notifying when we make various method calls on
mSelect */
const bool mNotify;
/** The selected index at mutation start. */
int32_t mInitialSelectedIndex;
/** Option list must be recreated if more than one mutation is detected. */
nsMutationGuard mGuard;
};

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

@ -143,16 +143,18 @@ function checkInvalidWhenValueMissing(element)
select.add(new Option(), null);
checkNotSufferingFromBeingMissing(select);
// The placeholder label can only be the first option, so a selected empty second option is valid
select.options[1].selected = true;
checkSufferingFromBeingMissing(select);
checkNotSufferingFromBeingMissing(select);
select.selectedIndex = 0;
checkNotSufferingFromBeingMissing(select);
select.selectedIndex = 1;
select.add(select.options[0]);
select.selectedIndex = 0;
checkSufferingFromBeingMissing(select);
select.remove(1);
select.remove(0);
checkNotSufferingFromBeingMissing(select);
select.options[0].disabled = true;
@ -182,8 +184,13 @@ function checkInvalidWhenValueMissing(element)
select.size = 4;
checkSufferingFromBeingMissing(select);
// Setting defaultSelected to true should not make the option selected
select.add(new Option("", "", true), null);
checkSufferingFromBeingMissing(select);
checkSufferingFromBeingMissing(select, true);
select.remove(0);
select.add(new Option("", "", true, true), null);
checkNotSufferingFromBeingMissing(select);
select.add(new Option("foo", "foo"), null);
select.remove(0);
@ -203,13 +210,13 @@ function checkInvalidWhenValueMissing(element)
checkSufferingFromBeingMissing(select);
select.add(new Option("", "", true), null);
checkSufferingFromBeingMissing(select);
checkSufferingFromBeingMissing(select, true);
select.add(new Option("", "", true), null);
checkSufferingFromBeingMissing(select);
checkSufferingFromBeingMissing(select, true);
select.add(new Option("foo"), null);
checkSufferingFromBeingMissing(select);
checkSufferingFromBeingMissing(select, true);
select.options[2].selected = true;
checkNotSufferingFromBeingMissing(select);

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

@ -88,17 +88,17 @@ function checkSelectElement(aElement)
checkPseudoClass(aElement, false);
aElement.blur();
checkPseudoClass(aElement, true);
checkPseudoClass(aElement, !aElement.multiple);
// Focusing while :-moz-ui-invalid applies,
// the pseudo-class should apply while changing selection if appropriate.
aElement.focus();
checkPseudoClass(aElement, true);
checkPseudoClass(aElement, !aElement.multiple);
aElement.selectedIndex = 1;
checkPseudoClass(aElement, false);
aElement.selectedIndex = 0;
checkPseudoClass(aElement, true);
checkPseudoClass(aElement, !aElement.multiple);
}
checkElement(document.getElementsByTagName('input')[0]);

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

@ -121,6 +121,10 @@ function checkSelectElement(aElement)
aElement.blur();
aElement.required = true;
// select set with multiple is only invalid if no option is selected
if (aElement.multiple) {
aElement.selectedIndex = -1;
}
checkPseudoClass(aElement, false);
// Focusing while :-moz-ui-invalid applies,
@ -131,7 +135,7 @@ function checkSelectElement(aElement)
aElement.selectedIndex = 1;
checkPseudoClass(aElement, true);
aElement.selectedIndex = 0;
checkPseudoClass(aElement, false);
checkPseudoClass(aElement, aElement.multiple);
}
checkElement(document.getElementsByTagName('input')[0]);

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

@ -34,10 +34,10 @@ function runTest()
isnot(select.selectedIndex, -1, "Something should have been selected");
ok(!select.matches(":-moz-ui-valid"),
":-moz-ui-valid should not apply");
todo(!select.matches(":-moz-ui-invalid"),
":-moz-ui-invalid should not apply");
ok(!select.matches(":-moz-ui-invalid"),
":-moz-ui-invalid should not apply");
todo(!select.matches(":-moz-ui-valid"),
":-moz-ui-valid should not apply");
SimpleTest.finish();
}, false);

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

@ -16,7 +16,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=622597
<form>
<input required>
<textarea required></textarea>
<select required><option>foo</option><option value="">bar</option></select>
<select required><option value="">foo</option><option selected>bar</option></select>
<button>submit</button>
</form>
</div>
@ -65,7 +65,7 @@ textarea.addEventListener("focus", function() {
SimpleTest.executeSoon(function() {
checkPseudoClasses(textarea, false, true);
form.noValidate = true;
select.selectedIndex = 1;
select.selectedIndex = 0;
select.focus();
});
});

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

@ -80,14 +80,18 @@ MediaDecoderReader::MediaDecoderReader(AbstractMediaDecoder* aDecoder)
{
MOZ_COUNT_CTOR(MediaDecoderReader);
MOZ_ASSERT(NS_IsMainThread());
}
nsresult
MediaDecoderReader::Init()
{
if (mDecoder && mDecoder->DataArrivedEvent()) {
mDataArrivedListener = mDecoder->DataArrivedEvent()->Connect(
mTaskQueue, this, &MediaDecoderReader::NotifyDataArrived);
}
// Dispatch initialization that needs to happen on that task queue.
mTaskQueue->Dispatch(NewRunnableMethod(this, &MediaDecoderReader::InitializationTask));
return InitInternal();
}
void

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

@ -87,7 +87,7 @@ public:
// Initializes the reader, returns NS_OK on success, or NS_ERROR_FAILURE
// on failure.
virtual nsresult Init() { return NS_OK; }
nsresult Init();
// Called by MDSM in dormant state to release resources allocated by this
// reader. The reader can resume decoding by calling Seek() to a specific
@ -325,6 +325,8 @@ protected:
MediaEventProducer<void> mOnMediaNotSeekable;
private:
virtual nsresult InitInternal() { return NS_OK; }
// Does any spinup that needs to happen on this task queue. This runs on a
// different thread than Init, and there should not be ordering dependencies
// between the two (even though in practice, Init will always run first right

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

@ -558,7 +558,7 @@ MediaFormatReader::InitLayersBackendType()
}
nsresult
MediaFormatReader::Init()
MediaFormatReader::InitInternal()
{
MOZ_ASSERT(NS_IsMainThread(), "Must be on main thread.");

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

@ -33,8 +33,6 @@ public:
virtual ~MediaFormatReader();
nsresult Init() override;
size_t SizeOfVideoQueueInFrames() override;
size_t SizeOfAudioQueueInFrames() override;
@ -86,6 +84,7 @@ public:
void SetVideoBlankDecode(bool aIsBlankDecode) override;
private:
nsresult InitInternal() override;
bool HasVideo() const { return mVideo.mTrackDemuxer; }
bool HasAudio() const { return mAudio.mTrackDemuxer; }

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

@ -673,7 +673,7 @@ function runTest() {
reqHeaders =
escape(Object.keys(test.headers)
.filter(isUnsafeHeader)
.map(String.toLowerCase)
.map(s => s.toLowerCase())
.sort()
.join(","));
req.url += reqHeaders ? "&requestHeaders=" + reqHeaders : "";

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

@ -759,7 +759,7 @@ function testModeCors() {
reqHeaders =
escape(Object.keys(test.headers)
.filter(isUnsafeHeader)
.map(String.toLowerCase)
.map(s => s.toLowerCase())
.sort()
.join(","));
req.url += reqHeaders ? "&requestHeaders=" + reqHeaders : "";

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

@ -3235,6 +3235,27 @@ HTMLEditor::ContentInserted(nsIDocument* aDocument,
eInserted);
}
bool
HTMLEditor::IsInObservedSubtree(nsIDocument* aDocument,
nsIContent* aContainer,
nsIContent* aChild)
{
if (!aChild) {
return false;
}
Element* root = GetRoot();
// To be super safe here, check both ChromeOnlyAccess and GetBindingParent.
// That catches (also unbound) native anonymous content, XBL and ShadowDOM.
if (root &&
(root->ChromeOnlyAccess() != aChild->ChromeOnlyAccess() ||
root->GetBindingParent() != aChild->GetBindingParent())) {
return false;
}
return !aChild->ChromeOnlyAccess() && !aChild->GetBindingParent();
}
void
HTMLEditor::DoContentInserted(nsIDocument* aDocument,
nsIContent* aContainer,
@ -3242,7 +3263,7 @@ HTMLEditor::DoContentInserted(nsIDocument* aDocument,
int32_t aIndexInContainer,
InsertedOrAppended aInsertedOrAppended)
{
if (!aChild) {
if (!IsInObservedSubtree(aDocument, aContainer, aChild)) {
return;
}
@ -3290,6 +3311,10 @@ HTMLEditor::ContentRemoved(nsIDocument* aDocument,
int32_t aIndexInContainer,
nsIContent* aPreviousSibling)
{
if (!IsInObservedSubtree(aDocument, aContainer, aChild)) {
return;
}
nsCOMPtr<nsIHTMLEditor> kungFuDeathGrip(this);
if (SameCOMIdentity(aChild, mRootElement)) {

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

@ -940,6 +940,10 @@ protected:
int32_t& aMarginLeft,
int32_t& aMarginTop);
bool IsInObservedSubtree(nsIDocument* aDocument,
nsIContent* aContainer,
nsIContent* aChild);
// resizing
bool mIsObjectResizingEnabled;
bool mIsResizing;

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

@ -25,7 +25,6 @@
#include "nsError.h"
#include "nsGkAtoms.h"
#include "nsIContent.h"
#include "nsIDOMCharacterData.h"
#include "nsIDOMDocument.h"
#include "nsIDOMElement.h"
#include "nsIDOMNode.h"
@ -482,26 +481,24 @@ TextEditRules::CollapseSelectionToTrailingBRIfNeeded(Selection* aSelection)
return NS_OK;
}
static inline already_AddRefed<nsIDOMNode>
GetTextNode(Selection* selection,
EditorBase* editor)
static inline already_AddRefed<nsINode>
GetTextNode(Selection* selection)
{
int32_t selOffset;
nsCOMPtr<nsIDOMNode> selNode;
nsCOMPtr<nsINode> selNode;
nsresult rv =
editor->GetStartNodeAndOffset(selection,
getter_AddRefs(selNode), &selOffset);
EditorBase::GetStartNodeAndOffset(selection,
getter_AddRefs(selNode), &selOffset);
NS_ENSURE_SUCCESS(rv, nullptr);
if (!editor->IsTextNode(selNode)) {
// Get an nsINode from the nsIDOMNode
nsCOMPtr<nsINode> node = do_QueryInterface(selNode);
// if node is null, return it to indicate there's no text
NS_ENSURE_TRUE(node, nullptr);
if (!EditorBase::IsTextNode(selNode)) {
// This should be the root node, walk the tree looking for text nodes
RefPtr<NodeIterator> iter =
new NodeIterator(node, nsIDOMNodeFilter::SHOW_TEXT, NodeFilterHolder());
while (!editor->IsTextNode(selNode)) {
if (NS_FAILED(iter->NextNode(getter_AddRefs(selNode))) || !selNode) {
new NodeIterator(selNode, nsIDOMNodeFilter::SHOW_TEXT,
NodeFilterHolder());
while (!EditorBase::IsTextNode(selNode)) {
IgnoredErrorResult rv;
selNode = iter->NextNode(rv);
if (!selNode) {
return nullptr;
}
}
@ -1385,13 +1382,10 @@ TextEditRules::HideLastPWInput()
nsContentUtils::GetSelectionInTextControl(selection, mTextEditor->GetRoot(),
start, end);
nsCOMPtr<nsIDOMNode> selNode = GetTextNode(selection, mTextEditor);
nsCOMPtr<nsINode> selNode = GetTextNode(selection);
NS_ENSURE_TRUE(selNode, NS_OK);
nsCOMPtr<nsIDOMCharacterData> nodeAsText(do_QueryInterface(selNode));
NS_ENSURE_TRUE(nodeAsText, NS_OK);
nodeAsText->ReplaceData(mLastStart, mLastLength, hiddenText);
selNode->GetAsText()->ReplaceData(mLastStart, mLastLength, hiddenText);
selection->Collapse(selNode, start);
if (start != end) {
selection->Extend(selNode, end);

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

@ -400,7 +400,7 @@ Factory::CreateDrawTargetForData(BackendType aBackend,
}
if (!retVal) {
gfxCriticalNote << "Failed to create DrawTarget, Type: " << int(aBackend) << " Size: " << aSize << ", Data: " << hexa(aData) << ", Stride: " << aStride;
gfxCriticalNote << "Failed to create DrawTarget, Type: " << int(aBackend) << " Size: " << aSize << ", Data: " << hexa((void *)aData) << ", Stride: " << aStride;
}
return retVal.forget();

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

@ -13,6 +13,7 @@
#include "ReadbackManagerD3D11.h"
#include "mozilla/gfx/DeviceManagerDx.h"
#include "mozilla/gfx/Logging.h"
#include "mozilla/layers/CompositorBridgeChild.h"
namespace mozilla {
@ -1194,11 +1195,42 @@ CompositingRenderTargetD3D11::GetSize() const
return TextureSourceD3D11::GetSize();
}
SyncObjectD3D11::SyncObjectD3D11(SyncHandle aHandle)
SyncObjectD3D11::SyncObjectD3D11(SyncHandle aSyncHandle)
: mSyncHandle(aSyncHandle)
{
MOZ_ASSERT(aHandle);
}
mHandle = aHandle;
bool
SyncObjectD3D11::Init()
{
if (mKeyedMutex) {
return true;
}
RefPtr<ID3D11Device> device = DeviceManagerDx::Get()->GetContentDevice();
HRESULT hr = device->OpenSharedResource(
mSyncHandle,
__uuidof(ID3D11Texture2D),
(void**)(ID3D11Texture2D**)getter_AddRefs(mD3D11Texture));
if (FAILED(hr) || !mD3D11Texture) {
gfxCriticalNote << "Failed to OpenSharedResource for SyncObjectD3D11: " << hexa(hr);
if (!CompositorBridgeChild::CompositorIsInGPUProcess() &&
!DeviceManagerDx::Get()->HasDeviceReset())
{
gfxDevCrash(LogReason::D3D11FinalizeFrame) << "Without device reset: " << hexa(hr);
}
}
hr = mD3D11Texture->QueryInterface(__uuidof(IDXGIKeyedMutex), getter_AddRefs(mKeyedMutex));
if (FAILED(hr) || !mKeyedMutex) {
// Leave both the critical error and MOZ_CRASH for now; the critical error lets
// us "save" the hr value. We will probably eventuall replace this with gfxDevCrash.
gfxCriticalError() << "Failed to get KeyedMutex (2): " << hexa(hr);
MOZ_CRASH("GFX: Cannot get D3D11 KeyedMutex");
}
return true;
}
void
@ -1210,71 +1242,44 @@ SyncObjectD3D11::RegisterTexture(ID3D11Texture2D* aTexture)
void
SyncObjectD3D11::FinalizeFrame()
{
if (!mD3D11SyncedTextures.size()) {
return;
}
if (!Init()) {
return;
}
HRESULT hr;
AutoTextureLock lock(mKeyedMutex, hr, 20000);
if (!mD3D11Texture && mD3D11SyncedTextures.size()) {
RefPtr<ID3D11Device> device = DeviceManagerDx::Get()->GetContentDevice();
hr = device->OpenSharedResource(mHandle, __uuidof(ID3D11Texture2D), (void**)(ID3D11Texture2D**)getter_AddRefs(mD3D11Texture));
if (FAILED(hr) || !mD3D11Texture) {
gfxCriticalError() << "Failed to D3D11 OpenSharedResource for frame finalization: " << hexa(hr);
if (DeviceManagerDx::Get()->HasDeviceReset()) {
return;
}
gfxDevCrash(LogReason::D3D11FinalizeFrame) << "Without device reset: " << hexa(hr);
}
// test QI
RefPtr<IDXGIKeyedMutex> mutex;
hr = mD3D11Texture->QueryInterface((IDXGIKeyedMutex**)getter_AddRefs(mutex));
if (FAILED(hr) || !mutex) {
// Leave both the critical error and MOZ_CRASH for now; the critical error lets
// us "save" the hr value. We will probably eventuall replace this with gfxDevCrash.
gfxCriticalError() << "Failed to get KeyedMutex (2): " << hexa(hr);
MOZ_CRASH("GFX: Cannot get D3D11 KeyedMutex");
if (hr == WAIT_TIMEOUT) {
if (DeviceManagerDx::Get()->HasDeviceReset()) {
gfxWarning() << "AcquireSync timed out because of device reset.";
return;
}
gfxDevCrash(LogReason::D3D11SyncLock) << "Timeout on the D3D11 sync lock";
}
if (mD3D11SyncedTextures.size()) {
RefPtr<IDXGIKeyedMutex> mutex;
hr = mD3D11Texture->QueryInterface((IDXGIKeyedMutex**)getter_AddRefs(mutex));
{
AutoTextureLock lock(mutex, hr, 20000);
D3D11_BOX box;
box.front = box.top = box.left = 0;
box.back = box.bottom = box.right = 1;
if (hr == WAIT_TIMEOUT) {
if (DeviceManagerDx::Get()->HasDeviceReset()) {
gfxWarning() << "AcquireSync timed out because of device reset.";
return;
}
gfxDevCrash(LogReason::D3D11SyncLock) << "Timeout on the D3D11 sync lock";
}
D3D11_BOX box;
box.front = box.top = box.left = 0;
box.back = box.bottom = box.right = 1;
RefPtr<ID3D11Device> dev = DeviceManagerDx::Get()->GetContentDevice();
if (!dev) {
if (DeviceManagerDx::Get()->HasDeviceReset()) {
return;
}
MOZ_CRASH("GFX: Invalid D3D11 content device");
}
RefPtr<ID3D11DeviceContext> ctx;
dev->GetImmediateContext(getter_AddRefs(ctx));
for (auto iter = mD3D11SyncedTextures.begin(); iter != mD3D11SyncedTextures.end(); iter++) {
ctx->CopySubresourceRegion(mD3D11Texture, 0, 0, 0, 0, *iter, 0, &box);
}
RefPtr<ID3D11Device> dev = DeviceManagerDx::Get()->GetContentDevice();
if (!dev) {
if (DeviceManagerDx::Get()->HasDeviceReset()) {
return;
}
mD3D11SyncedTextures.clear();
MOZ_CRASH("GFX: Invalid D3D11 content device");
}
RefPtr<ID3D11DeviceContext> ctx;
dev->GetImmediateContext(getter_AddRefs(ctx));
for (auto iter = mD3D11SyncedTextures.begin(); iter != mD3D11SyncedTextures.end(); iter++) {
ctx->CopySubresourceRegion(mD3D11Texture, 0, 0, 0, 0, *iter, 0, &box);
}
mD3D11SyncedTextures.clear();
}
}

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

@ -421,9 +421,13 @@ public:
void RegisterTexture(ID3D11Texture2D* aTexture);
private:
bool Init();
private:
SyncHandle mSyncHandle;
RefPtr<ID3D11Texture2D> mD3D11Texture;
RefPtr<IDXGIKeyedMutex> mKeyedMutex;
std::vector<ID3D11Texture2D*> mD3D11SyncedTextures;
SyncHandle mHandle;
};
inline uint32_t GetMaxTextureSizeForFeatureLevel(D3D_FEATURE_LEVEL aFeatureLevel)

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

@ -296,6 +296,24 @@ CompositorBridgeChild::ChildProcessHasCompositorBridge()
return sCompositorBridge != nullptr;
}
/* static */ bool
CompositorBridgeChild::CompositorIsInGPUProcess()
{
MOZ_ASSERT(NS_IsMainThread());
if (XRE_IsParentProcess()) {
return !!GPUProcessManager::Get()->GetGPUChild();
}
MOZ_ASSERT(XRE_IsContentProcess());
CompositorBridgeChild* bridge = CompositorBridgeChild::Get();
if (!bridge) {
return false;
}
return bridge->OtherPid() != dom::ContentChild::GetSingleton()->OtherPid();
}
PLayerTransactionChild*
CompositorBridgeChild::AllocPLayerTransactionChild(const nsTArray<LayersBackend>& aBackendHints,
const uint64_t& aId,

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

@ -88,6 +88,10 @@ public:
static bool ChildProcessHasCompositorBridge();
// Returns whether the compositor is in the GPU process (false if in the UI
// process). This may only be called on the main thread.
static bool CompositorIsInGPUProcess();
void AddOverfillObserver(ClientLayerManager* aLayerManager);
virtual mozilla::ipc::IPCResult

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

@ -23,7 +23,7 @@ load 370967.html
load 373586-1.xhtml
load 375299.html
load 378369.html
asserts(4-10) load 378413-1.xhtml # bug 424225, bug 402850?
load 378413-1.xhtml
load 380116-1.xhtml
load 382212-1.xhtml
load 382610-1.html

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

@ -110,6 +110,7 @@ public:
virtual void ComputeInvalidationRegion(nsDisplayListBuilder* aBuilder,
const nsDisplayItemGeometry* aGeometry,
nsRegion *aInvalidRegion) override;
virtual nsRect GetBounds(nsDisplayListBuilder* aBuilder, bool* aSnap) override;
NS_DISPLAY_DECL_NAME("FieldSetBorderBackground", TYPE_FIELDSET_BORDER_BACKGROUND)
};
@ -155,6 +156,19 @@ nsDisplayFieldSetBorderBackground::ComputeInvalidationRegion(nsDisplayListBuilde
nsDisplayItem::ComputeInvalidationRegion(aBuilder, aGeometry, aInvalidRegion);
}
nsRect
nsDisplayFieldSetBorderBackground::GetBounds(nsDisplayListBuilder* aBuilder,
bool* aSnap)
{
// Just go ahead and claim our frame's overflow rect as the bounds, because we
// may have border-image-outset or other features that cause borders to extend
// outside the border rect. We could try to duplicate all the complexity
// nsDisplayBorder has here, but keeping things in sync would be a pain, and
// this code is not typically performance-sensitive.
*aSnap = false;
return Frame()->GetVisualOverflowRectRelativeToSelf() + ToReferenceFrame();
}
void
nsFieldSetFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
const nsRect& aDirtyRect,
@ -217,14 +231,12 @@ nsFieldSetFrame::PaintBorder(
nsPoint aPt,
const nsRect& aDirtyRect)
{
// if the border is smaller than the legend. Move the border down
// to be centered on the legend.
// If the border is smaller than the legend, move the border down
// to be centered on the legend. We call VisualBorderRectRelativeToSelf() to
// compute the border positioning.
// FIXME: This means border-radius clamping is incorrect; we should
// override nsIFrame::GetBorderRadii.
WritingMode wm = GetWritingMode();
nsRect rect = VisualBorderRectRelativeToSelf();
nscoord off = wm.IsVertical() ? rect.x : rect.y;
rect += aPt;
nsRect rect = VisualBorderRectRelativeToSelf() + aPt;
nsPresContext* presContext = PresContext();
PaintBorderFlags borderFlags = aBuilder->ShouldSyncDecodeImages()
@ -237,55 +249,39 @@ nsFieldSetFrame::PaintBorder(
this, rect);
if (nsIFrame* legend = GetLegend()) {
Side legendSide = wm.PhysicalSide(eLogicalSideBStart);
nscoord legendBorderWidth =
StyleBorder()->GetComputedBorderWidth(legendSide);
// We want to avoid drawing our border under the legend, so clip out the
// legend while drawing our border. We don't want to use mLegendRect here,
// because we do want to draw our border under the legend's inline-start and
// -end margins. And we use GetNormalRect(), not GetRect(), because we do
// not want relative positioning applied to the legend to change how our
// border looks.
nsRect legendRect = legend->GetNormalRect() + aPt;
// Use the rect of the legend frame, not mLegendRect, so we draw our
// border under the legend's inline-start and -end margins.
LogicalRect legendRect(wm, legend->GetRect() + aPt, rect.Size());
// Compute clipRect using logical coordinates, so that the legend space
// will be clipped out of the appropriate physical side depending on mode.
LogicalRect clipRect = LogicalRect(wm, rect, rect.Size());
DrawTarget* drawTarget = aRenderingContext.GetDrawTarget();
gfxContext* gfx = aRenderingContext.ThebesContext();
// We set up a clip path which has our rect clockwise and the legend rect
// counterclockwise, with FILL_WINDING as the fill rule. That will allow us
// to paint within our rect but outside the legend rect. For "our rect" we
// use our visual overflow rect (relative to ourselves, so it's not affected
// by transforms), because we can have borders sticking outside our border
// box (e.g. due to border-image-outset).
RefPtr<PathBuilder> pathBuilder =
drawTarget->CreatePathBuilder(FillRule::FILL_WINDING);
int32_t appUnitsPerDevPixel = presContext->AppUnitsPerDevPixel();
AppendRectToPath(pathBuilder,
NSRectToSnappedRect(GetVisualOverflowRectRelativeToSelf() + aPt,
appUnitsPerDevPixel,
*drawTarget),
true);
AppendRectToPath(pathBuilder,
NSRectToSnappedRect(legendRect, appUnitsPerDevPixel,
*drawTarget),
false);
RefPtr<Path> clipPath = pathBuilder->Finish();
// draw inline-start portion of the block-start side of the border
clipRect.ISize(wm) = legendRect.IStart(wm) - clipRect.IStart(wm);
clipRect.BSize(wm) = legendBorderWidth;
gfxContext* gfx = aRenderingContext.ThebesContext();
gfx->Save();
gfx->Clip(NSRectToSnappedRect(clipRect.GetPhysicalRect(wm, rect.Size()),
appUnitsPerDevPixel, *drawTarget));
result &=
nsCSSRendering::PaintBorder(presContext, aRenderingContext, this,
aDirtyRect, rect, mStyleContext, borderFlags);
gfx->Restore();
// draw inline-end portion of the block-start side of the border
clipRect = LogicalRect(wm, rect, rect.Size());
clipRect.ISize(wm) = clipRect.IEnd(wm) - legendRect.IEnd(wm);
clipRect.IStart(wm) = legendRect.IEnd(wm);
clipRect.BSize(wm) = legendBorderWidth;
gfx->Save();
gfx->Clip(NSRectToSnappedRect(clipRect.GetPhysicalRect(wm, rect.Size()),
appUnitsPerDevPixel, *drawTarget));
result &=
nsCSSRendering::PaintBorder(presContext, aRenderingContext, this,
aDirtyRect, rect, mStyleContext, borderFlags);
gfx->Restore();
// draw remainder of the border (omitting the block-start side)
clipRect = LogicalRect(wm, rect, rect.Size());
clipRect.BStart(wm) += legendBorderWidth;
clipRect.BSize(wm) = BSize(wm) - (off + legendBorderWidth);
gfx->Save();
gfx->Clip(NSRectToSnappedRect(clipRect.GetPhysicalRect(wm, rect.Size()),
appUnitsPerDevPixel, *drawTarget));
gfx->Clip(clipPath);
result &=
nsCSSRendering::PaintBorder(presContext, aRenderingContext, this,
aDirtyRect, rect, mStyleContext, borderFlags);
@ -345,42 +341,6 @@ nsFieldSetFrame::GetPrefISize(nsRenderingContext* aRenderingContext)
}
/* virtual */
LogicalSize
nsFieldSetFrame::ComputeSize(nsRenderingContext *aRenderingContext,
WritingMode aWM,
const LogicalSize& aCBSize,
nscoord aAvailableISize,
const LogicalSize& aMargin,
const LogicalSize& aBorder,
const LogicalSize& aPadding,
ComputeSizeFlags aFlags)
{
LogicalSize result =
nsContainerFrame::ComputeSize(aRenderingContext, aWM,
aCBSize, aAvailableISize,
aMargin, aBorder, aPadding, aFlags);
// XXX The code below doesn't make sense if the caller's writing mode
// is orthogonal to this frame's. Not sure yet what should happen then;
// for now, just bail out.
if (aWM.IsVertical() != GetWritingMode().IsVertical()) {
return result;
}
// Fieldsets never shrink below their min width.
// If we're a container for font size inflation, then shrink
// wrapping inside of us should not apply font size inflation.
AutoMaybeDisableFontInflation an(this);
nscoord minISize = GetMinISize(aRenderingContext);
if (minISize > result.ISize(aWM)) {
result.ISize(aWM) = minISize;
}
return result;
}
void
nsFieldSetFrame::Reflow(nsPresContext* aPresContext,
ReflowOutput& aDesiredSize,
@ -428,18 +388,6 @@ nsFieldSetFrame::Reflow(nsPresContext* aPresContext,
LogicalSize legendAvailSize = aReflowInput.ComputedSizeWithPadding(legendWM);
innerAvailSize.BSize(innerWM) = legendAvailSize.BSize(legendWM) =
NS_UNCONSTRAINEDSIZE;
NS_ASSERTION(!inner ||
nsLayoutUtils::IntrinsicForContainer(aReflowInput.mRenderingContext,
inner,
nsLayoutUtils::MIN_ISIZE) <=
innerAvailSize.ISize(innerWM),
"Bogus availSize.ISize; should be bigger");
NS_ASSERTION(!legend ||
nsLayoutUtils::IntrinsicForContainer(aReflowInput.mRenderingContext,
legend,
nsLayoutUtils::MIN_ISIZE) <=
legendAvailSize.ISize(legendWM),
"Bogus availSize.ISize; should be bigger");
// get our border and padding
LogicalMargin border = aReflowInput.ComputedLogicalBorderPadding() -
@ -603,11 +551,8 @@ nsFieldSetFrame::Reflow(nsPresContext* aPresContext,
MOZ_ASSERT_UNREACHABLE("unexpected GetLogicalAlign value");
}
} else {
// otherwise make place for the legend
// otherwise just start-align it.
mLegendRect.IStart(wm) = innerContentRect.IStart(wm);
innerContentRect.ISize(wm) = mLegendRect.ISize(wm);
contentRect.ISize(wm) = mLegendRect.ISize(wm) +
aReflowInput.ComputedLogicalPadding().IStartEnd(wm);
}
// place the legend

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

@ -24,15 +24,6 @@ public:
nsLayoutUtils::IntrinsicISizeType);
virtual nscoord GetMinISize(nsRenderingContext* aRenderingContext) override;
virtual nscoord GetPrefISize(nsRenderingContext* aRenderingContext) override;
virtual mozilla::LogicalSize
ComputeSize(nsRenderingContext *aRenderingContext,
mozilla::WritingMode aWritingMode,
const mozilla::LogicalSize& aCBSize,
nscoord aAvailableISize,
const mozilla::LogicalSize& aMargin,
const mozilla::LogicalSize& aBorder,
const mozilla::LogicalSize& aPadding,
ComputeSizeFlags aFlags) override;
virtual nscoord GetLogicalBaseline(mozilla::WritingMode aWritingMode) const override;
/**

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

@ -47,22 +47,3 @@ nsGfxCheckboxControlFrame::AccessibleType()
return a11y::eHTMLCheckboxType;
}
#endif
//------------------------------------------------------------
bool
nsGfxCheckboxControlFrame::IsChecked()
{
nsCOMPtr<nsIDOMHTMLInputElement> elem(do_QueryInterface(mContent));
bool retval = false;
elem->GetChecked(&retval);
return retval;
}
bool
nsGfxCheckboxControlFrame::IsIndeterminate()
{
nsCOMPtr<nsIDOMHTMLInputElement> elem(do_QueryInterface(mContent));
bool retval = false;
elem->GetIndeterminate(&retval);
return retval;
}

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

@ -25,11 +25,6 @@ public:
#ifdef ACCESSIBILITY
virtual mozilla::a11y::AccType AccessibleType() override;
#endif
protected:
bool IsChecked();
bool IsIndeterminate();
};
#endif

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

@ -26,7 +26,10 @@ fieldset { border-right:7px solid blue; font-size: 16px; }
#test5 { position:fixed; top:12em; width:200px; }
#test5 fieldset { background:lime;}
#test5 .legend { margin-left: 193px; background:pink; }
/* Percentage margins don't get counted in intrinsic width, so make sure that
our fixed-size margins sum to 0, so they also do not affect intrinsic width
either. */
#test5 .legend { margin-left: 193px; background:pink; margin-right: -193px; }
#test6 { position:fixed; left:20px; top:15em; width:400px; }
#test6 fieldset { width:300px; }

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

@ -5,7 +5,7 @@ fuzzy-if(skiaContent,2,6) needs-focus == select-dyn-disabled.html select-disable
fuzzy-if(skiaContent,1,3) needs-focus == select-dyn-not-disabled.html select-ref.html
needs-focus == select-required-invalid.html select-required-ref.html
needs-focus == select-required-valid.html select-required-ref.html
needs-focus == select-required-multiple-invalid.html select-required-multiple-ref.html
needs-focus == select-required-multiple-still-valid.html select-required-multiple-ref.html
fuzzy-if(skiaContent,1,250) needs-focus == select-required-multiple-valid.html select-required-multiple-ref.html
fails-if(Android) fuzzy-if(skiaContent&&!Android,1,3) needs-focus == select-disabled-fieldset-1.html select-fieldset-ref.html
fails-if(Android) fuzzy-if(skiaContent&&!Android,2,3) needs-focus == select-disabled-fieldset-2.html select-fieldset-ref.html

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

@ -1,10 +1,10 @@
<!DOCTYPE html>
<html>
<!-- Test: if select is required and has all selected option value set to the
string string, :valid should not apply. -->
<!-- Test: if select is required and has all selected option values set to the
empty string, :invalid should still not apply. -->
<link rel='stylesheet' type='text/css' href='style.css'>
<body>
<select class='notvalid' required multiple>
<select class='notinvalid' required multiple>
<option selected></option>
<option selected value="">foo</option>
</select>

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

@ -5,7 +5,7 @@ fuzzy-if(skiaContent,1,5) needs-focus == select-dyn-disabled.html select-disable
fuzzy-if(skiaContent,2,5) needs-focus == select-dyn-not-disabled.html select-ref.html
needs-focus == select-required-invalid.html select-required-ref.html
needs-focus == select-required-valid.html select-required-ref.html
needs-focus == select-required-multiple-invalid.html select-required-multiple-ref.html
needs-focus == select-required-multiple-still-valid.html select-required-multiple-ref.html
fuzzy-if(skiaContent,1,250) needs-focus == select-required-multiple-valid.html select-required-multiple-ref.html
fails-if(Android) needs-focus == select-disabled-fieldset-1.html select-fieldset-ref.html
fails-if(Android) fuzzy-if(skiaContent&&!Android,1,3) needs-focus == select-disabled-fieldset-2.html select-fieldset-ref.html

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

@ -1,10 +1,10 @@
<!DOCTYPE html>
<html>
<!-- Test: if select is required and has all selected option value set to the
string string, :invalid should apply. -->
empty string, :valid should still apply. -->
<link rel='stylesheet' type='text/css' href='style.css'>
<body>
<select class='invalid' required multiple>
<select class='valid' required multiple>
<option selected></option>
<option selected value="">foo</option>
</select>

Двоичные данные
layout/reftests/forms/fieldset/blue-1x1.png Normal file

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

После

Ширина:  |  Высота:  |  Размер: 69 B

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

@ -0,0 +1,13 @@
<!DOCTYPE html>
<style>
div {
padding: 0;
margin: 10px;
height: 100px;
width: 100px;
border: 10px solid;
border-image-source: url(blue-1x1.png);
border-image-outset: 10px;
}
</style>
<div></div>

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

@ -0,0 +1,13 @@
<!DOCTYPE html>
<style>
fieldset {
padding: 0;
margin: 10px;
height: 100px;
width: 100px;
border: 10px solid;
border-image-source: url(blue-1x1.png);
border-image-outset: 10px;
}
</style>
<fieldset></fieldset>

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

@ -0,0 +1,13 @@
<!DOCTYPE html>
<style>
fieldset {
padding: 0;
margin: 10px;
height: 100px;
width: 100px;
border: 10px solid;
border-image-source: url(blue-1x1.png);
border-image-outset: 10px;
}
</style>
<fieldset><legend></legend></fieldset>

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

@ -0,0 +1,14 @@
<!DOCTYPE html>
<style>
div {
padding: 0;
margin: 10px;
height: 100px;
width: 100px;
border: 10px solid;
border-image-source: url(blue-1x1.png);
border-image-outset: 10px;
transform: scale(0.5);
}
</style>
<div></div>

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

@ -0,0 +1,14 @@
<!DOCTYPE html>
<style>
fieldset {
padding: 0;
margin: 10px;
height: 100px;
width: 100px;
border: 10px solid;
border-image-source: url(blue-1x1.png);
border-image-outset: 10px;
transform: scale(0.5);
}
</style>
<fieldset></fieldset>

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

@ -0,0 +1,14 @@
<!DOCTYPE html>
<style>
fieldset {
padding: 0;
margin: 10px;
height: 100px;
width: 100px;
border: 10px solid;
border-image-source: url(blue-1x1.png);
border-image-outset: 10px;
transform: scale(0.5);
}
</style>
<fieldset><legend></legend></fieldset>

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

@ -0,0 +1,4 @@
<!DOCTYPE html>
<fieldset style="width: -moz-fit-content">
Longwordgoeshere
</fieldset>

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

@ -0,0 +1,4 @@
<!DOCTYPE html>
<fieldset style="width: 0">
Longwordgoeshere
</fieldset>

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

@ -0,0 +1,6 @@
<!DOCTYPE html>
<body style="width: 0">
<fieldset style="width: 0">
Longwordgoeshere
</fieldset>
</body>

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

@ -0,0 +1,2 @@
<!DOCTYPE html>
<fieldset style="width: -moz-fit-content">&zwnj;<!-- To give us the right height --></fieldset>

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

@ -0,0 +1,4 @@
<!DOCTYPE html>
<fieldset style="width: 0; min-width: 0">
<div style="visibility: hidden">Longwordgoeshere</div>
</fieldset>

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

@ -0,0 +1,6 @@
<!DOCTYPE html>
<body style="width: 0">
<fieldset style="min-width: 0">
<div style="visibility: hidden">Longwordgoeshere</div>
</fieldset>
</body>

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

@ -0,0 +1,15 @@
<!DOCTYPE html>
<style>
fieldset {
min-width: 0;
width: 0;
}
legend {
width: 100px;
height: 20px;
background: white;
}
</style>
<fieldset>
<legend></legend>
</fieldset>

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

@ -0,0 +1,14 @@
<!DOCTYPE html>
<style>
fieldset {
min-width: 0;
width: 0;
}
legend {
width: 100px;
height: 20px;
}
</style>
<fieldset>
<legend></legend>
</fieldset>

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

@ -8,9 +8,20 @@ fuzzy-if(skiaContent,2,13) == dynamic-legend-scroll-1.html dynamic-legend-scroll
fuzzy-if(winWidget&&!layersGPUAccelerated,121,276) == positioned-container-1.html positioned-container-1-ref.html
== relpos-legend-1.html relpos-legend-1-ref.html
== relpos-legend-2.html relpos-legend-2-ref.html
== relpos-legend-3.html relpos-legend-3-ref.html
== relpos-legend-4.html relpos-legend-4-ref.html
== sticky-legend-1.html sticky-legend-1-ref.html
fuzzy-if(skiaContent,1,40768) == abs-pos-child-sizing.html abs-pos-child-sizing-ref.html
== overflow-hidden.html overflow-hidden-ref.html
== legend-rtl.html legend-rtl-ref.html
== fieldset-grid-001.html fieldset-grid-001-ref.html
== fieldset-flexbox-001.html fieldset-flexbox-001-ref.html
== fieldset-min-width-1a.html fieldset-min-width-1-ref.html
== fieldset-min-width-1b.html fieldset-min-width-1-ref.html
== fieldset-min-width-2a.html fieldset-min-width-2-ref.html
== fieldset-min-width-2b.html fieldset-min-width-2-ref.html
== legend-overlapping-right-border-1.html legend-overlapping-right-border-1-ref.html
== fieldset-border-image-1a.html fieldset-border-image-1-ref.html
== fieldset-border-image-1b.html fieldset-border-image-1-ref.html
== fieldset-border-image-2a.html fieldset-border-image-2-ref.html
== fieldset-border-image-2b.html fieldset-border-image-2-ref.html

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

@ -0,0 +1,8 @@
<!DOCTYPE HTML>
<html>
<body>
<fieldset>
<legend><div style="position:relative; left:20px">Legend</div></legend>
</fieldset>
</body>
</html>

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

@ -0,0 +1,8 @@
<!DOCTYPE HTML>
<html>
<body>
<fieldset>
<legend style="position:relative; left:20px">Legend</legend>
</fieldset>
</body>
</html>

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

@ -0,0 +1,8 @@
<!DOCTYPE HTML>
<html>
<body>
<fieldset>
<legend><span style="position:relative; left:20px">Legend</span></legend>
</fieldset>
</body>
</html>

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

@ -0,0 +1,8 @@
<!DOCTYPE HTML>
<html>
<body>
<fieldset>
<legend style="display:inline; position:relative; left:20px">Legend</legend>
</fieldset>
</body>
</html>

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

@ -97,7 +97,7 @@ ServoCSSRuleList::InsertRule(const nsAString& aRule, uint32_t aIndex)
nsresult rv = Servo_CssRules_InsertRule(mRawRules, mStyleSheet->RawSheet(),
&rule, aIndex, nested, &type);
if (!NS_FAILED(rv)) {
mRules.InsertElementAt(type);
mRules.InsertElementAt(aIndex, type);
}
return rv;
}

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

@ -443,6 +443,11 @@ static nsSize CalcViewportUnitsScale(nsPresContext* aPresContext)
return viewportSize;
}
// If |aStyleFont| is nullptr, aStyleContext->StyleFont() is used.
//
// In case that |aValue| is rem unit, if |aStyleContext| is null, callers must
// specify a valid |aStyleFont| and |aUseProvidedRootEmSize| must be true so
// that we can get the length from |aStyleFont|.
static nscoord CalcLengthWith(const nsCSSValue& aValue,
nscoord aFontSize,
const nsStyleFont* aStyleFont,
@ -459,8 +464,8 @@ static nscoord CalcLengthWith(const nsCSSValue& aValue,
"not a length or calc unit");
NS_ASSERTION(aStyleFont || aStyleContext,
"Must have style data");
NS_ASSERTION(!aStyleFont || !aStyleContext,
"Duplicate sources of data");
NS_ASSERTION(aStyleContext || aUseProvidedRootEmSize,
"Must have style context or specify aUseProvidedRootEmSize");
NS_ASSERTION(aPresContext, "Must have prescontext");
if (aValue.IsFixedLengthUnit()) {
@ -555,21 +560,12 @@ static nscoord CalcLengthWith(const nsCSSValue& aValue,
} else {
// This is not the root element or we are calculating something other
// than font size, so rem is relative to the root element's font size.
RefPtr<nsStyleContext> rootStyle;
const nsStyleFont *rootStyleFont = styleFont;
Element* docElement = aPresContext->Document()->GetRootElement();
if (docElement) {
nsIFrame* rootFrame = docElement->GetPrimaryFrame();
if (rootFrame) {
rootStyle = rootFrame->StyleContext();
} else {
rootStyle = aPresContext->StyleSet()->AsGecko()->ResolveStyleFor(docElement,
nullptr);
}
rootStyleFont = rootStyle->StyleFont();
// Find the root style context by walking up the style context tree.
nsStyleContext* rootStyle = aStyleContext;
while (rootStyle->GetParent()) {
rootStyle = rootStyle->GetParent();
}
const nsStyleFont *rootStyleFont = rootStyle->StyleFont();
rootFontSize = rootStyleFont->mFont.size;
}
@ -3364,15 +3360,19 @@ struct SetFontSizeCalcOps : public css::BasicCoordCalcOps,
const nscoord mParentSize;
const nsStyleFont* const mParentFont;
nsPresContext* const mPresContext;
nsStyleContext* const mStyleContext;
const bool mAtRoot;
RuleNodeCacheConditions& mConditions;
SetFontSizeCalcOps(nscoord aParentSize, const nsStyleFont* aParentFont,
nsPresContext* aPresContext, bool aAtRoot,
nsPresContext* aPresContext,
nsStyleContext* aStyleContext,
bool aAtRoot,
RuleNodeCacheConditions& aConditions)
: mParentSize(aParentSize),
mParentFont(aParentFont),
mPresContext(aPresContext),
mStyleContext(aStyleContext),
mAtRoot(aAtRoot),
mConditions(aConditions)
{
@ -3387,7 +3387,7 @@ struct SetFontSizeCalcOps : public css::BasicCoordCalcOps,
// between us and the parent is simply ignored.
size = CalcLengthWith(aValue, mParentSize,
mParentFont,
nullptr, mPresContext, mAtRoot,
mStyleContext, mPresContext, mAtRoot,
true, mConditions);
if (!aValue.IsRelativeLengthUnit() && mParentFont->mAllowZoom) {
size = nsStyleFont::ZoomText(mPresContext, size);
@ -3411,6 +3411,7 @@ struct SetFontSizeCalcOps : public css::BasicCoordCalcOps,
/* static */ void
nsRuleNode::SetFontSize(nsPresContext* aPresContext,
nsStyleContext* aContext,
const nsRuleData* aRuleData,
const nsStyleFont* aFont,
const nsStyleFont* aParentFont,
@ -3477,7 +3478,8 @@ nsRuleNode::SetFontSize(nsPresContext* aPresContext,
sizeValue->GetUnit() == eCSSUnit_Percent ||
sizeValue->IsCalcUnit()) {
SetFontSizeCalcOps ops(aParentSize, aParentFont,
aPresContext, aAtRoot,
aPresContext, aContext,
aAtRoot,
aConditions);
*aSize = css::ComputeCalc(*sizeValue, ops);
if (*aSize < 0) {
@ -3823,7 +3825,7 @@ nsRuleNode::SetFont(nsPresContext* aPresContext, nsStyleContext* aContext,
aFont->mScriptMinSize =
CalcLengthWith(*scriptMinSizeValue, aParentFont->mSize,
aParentFont,
nullptr, aPresContext, atRoot, true,
aContext, aPresContext, atRoot, true /* aUseUserFontSet */,
aConditions);
}
@ -4065,7 +4067,8 @@ nsRuleNode::SetFont(nsPresContext* aPresContext, nsStyleContext* aContext,
scriptLevelAdjustedParentSize !=
scriptLevelAdjustedUnconstrainedParentSize;
SetFontSize(aPresContext, aRuleData, aFont, aParentFont,
SetFontSize(aPresContext, aContext,
aRuleData, aFont, aParentFont,
&aFont->mSize,
systemFont, aParentFont->mSize, scriptLevelAdjustedParentSize,
aUsedStartStruct, atRoot, aConditions);
@ -4095,7 +4098,8 @@ nsRuleNode::SetFont(nsPresContext* aPresContext, nsStyleContext* aContext,
// already called SetUncacheable.
RuleNodeCacheConditions unconstrainedConditions;
SetFontSize(aPresContext, aRuleData, aFont, aParentFont,
SetFontSize(aPresContext, aContext,
aRuleData, aFont, aParentFont,
&aFont->mScriptUnconstrainedSize,
systemFont, aParentFont->mScriptUnconstrainedSize,
scriptLevelAdjustedUnconstrainedParentSize,

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

@ -755,6 +755,7 @@ protected:
// helpers for |ComputeFontData| that need access to |mNoneBits|:
static void SetFontSize(nsPresContext* aPresContext,
nsStyleContext* aContext,
const nsRuleData* aRuleData,
const nsStyleFont* aFont,
const nsStyleFont* aParentFont,

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

@ -71,6 +71,7 @@ fieldset {
padding-inline-start: 0.625em;
padding-inline-end: 0.625em;
border: 2px groove ThreeDLightShadow;
min-width: -moz-min-content;
}
label {

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

@ -586,7 +586,7 @@ public class SearchEngineManager implements SharedPreferences.OnSharedPreference
}
}
}
} catch (Exception e) {
} catch (Throwable e) {
Log.e(LOG_TAG, "Error creating shipped search engine from name: " + name, e);
} finally {
try {

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

@ -2040,7 +2040,7 @@ var BrowserApp = {
// intl.accept_languages is a comma-separated list, with no q-value params. Those
// are added when the header is generated.
chosen = defaultAccept.split(",")
.map(String.trim)
.map((x) => x.trim())
.filter((x) => (x != appLocale && x != osLocale));
} else {
chosen = [];

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

@ -1235,6 +1235,16 @@ nsHttpChannelAuthProvider::PromptForIdentity(uint32_t level,
if (!proxyAuth)
mSuppressDefensiveAuth = true;
if (mConnectionBased) {
// Connection can be reset by the server in the meantime user is entering
// the credentials. Result would be just a "Connection was reset" error.
// Hence, we drop the current regardless if the user would make it on time
// to provide credentials.
// It's OK to send the NTLM type 1 message (response to the plain "NTLM"
// challenge) on a new connection.
mAuthChannel->CloseStickyConnection();
}
return rv;
}

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

@ -11,8 +11,6 @@ Can't find hash in builtin certs for Chrome nickname GoDaddySecure, inserting GO
Can't find hash in builtin certs for Chrome nickname ThawtePremiumServer, inserting GOOGLE_PIN_ThawtePremiumServer
Can't find hash in builtin certs for Chrome nickname SymantecClass3EVG3, inserting GOOGLE_PIN_SymantecClass3EVG3
Can't find hash in builtin certs for Chrome nickname DigiCertECCSecureServerCA, inserting GOOGLE_PIN_DigiCertECCSecureServerCA
Can't find hash in builtin certs for Chrome nickname LetsEncryptAuthorityPrimary_X1_X3, inserting GOOGLE_PIN_LetsEncryptAuthorityPrimary_X1_X3
Can't find hash in builtin certs for Chrome nickname LetsEncryptAuthorityBackup_X2_X4, inserting GOOGLE_PIN_LetsEncryptAuthorityBackup_X2_X4
Can't find hash in builtin certs for Chrome nickname COMODORSADomainValidationSecureServerCA, inserting GOOGLE_PIN_COMODORSADomainValidationSecureServerCA
Writing pinset test
Writing pinset google

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

@ -155,14 +155,6 @@ static const char kGOOGLE_PIN_GoDaddySecureFingerprint[] =
static const char kGOOGLE_PIN_GoogleG2Fingerprint[] =
"7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=";
/* GOOGLE_PIN_LetsEncryptAuthorityBackup_X2_X4 */
static const char kGOOGLE_PIN_LetsEncryptAuthorityBackup_X2_X4Fingerprint[] =
"sRHdihwgkaib1P1gxX8HFszlD+7/gTfNvuAybgLPNis=";
/* GOOGLE_PIN_LetsEncryptAuthorityPrimary_X1_X3 */
static const char kGOOGLE_PIN_LetsEncryptAuthorityPrimary_X1_X3Fingerprint[] =
"YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=";
/* GOOGLE_PIN_RapidSSL */
static const char kGOOGLE_PIN_RapidSSLFingerprint[] =
"lT09gPUeQfbYrlxRtpsHrjDblj9Rpz+u7ajfCrg4qDM=";
@ -255,6 +247,14 @@ static const char kGo_Daddy_Root_Certificate_Authority___G2Fingerprint[] =
static const char kGoogleBackup2048Fingerprint[] =
"IPMbDAjLVSGntGO3WP53X/zilCVndez5YJ2+vJvhJsA=";
/* Let's Encrypt Authority X3 */
static const char kLet_s_Encrypt_Authority_X3Fingerprint[] =
"YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=";
/* Let's Encrypt Authority X4 */
static const char kLet_s_Encrypt_Authority_X4Fingerprint[] =
"sRHdihwgkaib1P1gxX8HFszlD+7/gTfNvuAybgLPNis=";
/* SpiderOak2 */
static const char kSpiderOak2Fingerprint[] =
"7Y3UnxbffL8aFPXsOJBpGasgpDmngpIhAxGKdQRklQQ=";
@ -431,35 +431,11 @@ static const StaticFingerprints kPinset_google_root_pems = {
kPinset_google_root_pems_Data
};
static const char* const kPinset_mozilla_Data[] = {
kGeoTrust_Global_CA_2Fingerprint,
kthawte_Primary_Root_CA___G3Fingerprint,
kthawte_Primary_Root_CAFingerprint,
kDigiCert_Assured_ID_Root_CAFingerprint,
kVerisign_Class_1_Public_Primary_Certification_Authority___G3Fingerprint,
kVeriSign_Class_3_Public_Primary_Certification_Authority___G5Fingerprint,
kGeoTrust_Primary_Certification_AuthorityFingerprint,
kVerisign_Class_3_Public_Primary_Certification_Authority___G3Fingerprint,
kVeriSign_Class_3_Public_Primary_Certification_Authority___G4Fingerprint,
kDigiCert_High_Assurance_EV_Root_CAFingerprint,
kBaltimore_CyberTrust_RootFingerprint,
kthawte_Primary_Root_CA___G2Fingerprint,
kVerisign_Class_2_Public_Primary_Certification_Authority___G3Fingerprint,
kGeoTrust_Universal_CA_2Fingerprint,
kGeoTrust_Global_CAFingerprint,
kVeriSign_Universal_Root_Certification_AuthorityFingerprint,
kGeoTrust_Universal_CAFingerprint,
kGeoTrust_Primary_Certification_Authority___G3Fingerprint,
kDigiCert_Global_Root_CAFingerprint,
kGeoTrust_Primary_Certification_Authority___G2Fingerprint,
};
static const StaticFingerprints kPinset_mozilla = {
sizeof(kPinset_mozilla_Data) / sizeof(const char*),
kPinset_mozilla_Data
};
static const char* const kPinset_mozilla_services_Data[] = {
kDigiCert_High_Assurance_EV_Root_CAFingerprint,
kLet_s_Encrypt_Authority_X3Fingerprint,
kDigiCert_Global_Root_CAFingerprint,
kLet_s_Encrypt_Authority_X4Fingerprint,
};
static const StaticFingerprints kPinset_mozilla_services = {
sizeof(kPinset_mozilla_services_Data) / sizeof(const char*),
@ -496,10 +472,10 @@ static const StaticFingerprints kPinset_google = {
static const char* const kPinset_tor_Data[] = {
kTor3Fingerprint,
kDigiCert_High_Assurance_EV_Root_CAFingerprint,
kGOOGLE_PIN_LetsEncryptAuthorityPrimary_X1_X3Fingerprint,
kLet_s_Encrypt_Authority_X3Fingerprint,
kTor1Fingerprint,
kGOOGLE_PIN_RapidSSLFingerprint,
kGOOGLE_PIN_LetsEncryptAuthorityBackup_X2_X4Fingerprint,
kLet_s_Encrypt_Authority_X4Fingerprint,
kTor2Fingerprint,
};
static const StaticFingerprints kPinset_tor = {
@ -656,9 +632,9 @@ static const StaticFingerprints kPinset_yahoo = {
static const char* const kPinset_swehackCom_Data[] = {
kSwehackFingerprint,
kDST_Root_CA_X3Fingerprint,
kGOOGLE_PIN_LetsEncryptAuthorityPrimary_X1_X3Fingerprint,
kLet_s_Encrypt_Authority_X3Fingerprint,
kGOOGLE_PIN_COMODORSADomainValidationSecureServerCAFingerprint,
kGOOGLE_PIN_LetsEncryptAuthorityBackup_X2_X4Fingerprint,
kLet_s_Encrypt_Authority_X4Fingerprint,
kSwehackBackupFingerprint,
};
static const StaticFingerprints kPinset_swehackCom = {
@ -672,11 +648,11 @@ static const char* const kPinset_nightx_Data[] = {
kVeriSign_Class_3_Public_Primary_Certification_Authority___G5Fingerprint,
kVeriSign_Class_3_Public_Primary_Certification_Authority___G4Fingerprint,
kDigiCert_High_Assurance_EV_Root_CAFingerprint,
kGOOGLE_PIN_LetsEncryptAuthorityPrimary_X1_X3Fingerprint,
kLet_s_Encrypt_Authority_X3Fingerprint,
kAddTrust_External_RootFingerprint,
kVeriSign_Universal_Root_Certification_AuthorityFingerprint,
kDigiCert_Global_Root_CAFingerprint,
kGOOGLE_PIN_LetsEncryptAuthorityBackup_X2_X4Fingerprint,
kLet_s_Encrypt_Authority_X4Fingerprint,
};
static const StaticFingerprints kPinset_nightx = {
sizeof(kPinset_nightx_Data) / sizeof(const char*),
@ -698,8 +674,8 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
{ "2mdn.net", true, false, false, -1, &kPinset_google_root_pems },
{ "accounts.firefox.com", true, false, true, 4, &kPinset_mozilla_services },
{ "accounts.google.com", true, false, false, -1, &kPinset_google_root_pems },
{ "addons.mozilla.net", true, false, true, 2, &kPinset_mozilla },
{ "addons.mozilla.org", true, false, true, 1, &kPinset_mozilla },
{ "addons.mozilla.net", true, false, true, 2, &kPinset_mozilla_services },
{ "addons.mozilla.org", true, false, true, 1, &kPinset_mozilla_services },
{ "admin.google.com", true, false, false, -1, &kPinset_google_root_pems },
{ "android.com", true, false, false, -1, &kPinset_google_root_pems },
{ "api.accounts.firefox.com", true, false, true, 5, &kPinset_mozilla_services },
@ -710,8 +686,8 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
{ "appspot.com", true, false, false, -1, &kPinset_google_root_pems },
{ "at.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
{ "au.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
{ "aus4.mozilla.org", true, true, true, 3, &kPinset_mozilla },
{ "aus5.mozilla.org", true, true, true, 7, &kPinset_mozilla },
{ "aus4.mozilla.org", true, true, true, 3, &kPinset_mozilla_services },
{ "aus5.mozilla.org", true, true, true, 7, &kPinset_mozilla_services },
{ "az.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
{ "be.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
{ "bi.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
@ -725,8 +701,8 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
{ "business.twitter.com", true, false, false, -1, &kPinset_twitterCom },
{ "ca.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
{ "cd.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
{ "cdn.mozilla.net", true, false, true, -1, &kPinset_mozilla },
{ "cdn.mozilla.org", true, false, true, -1, &kPinset_mozilla },
{ "cdn.mozilla.net", true, false, true, -1, &kPinset_mozilla_services },
{ "cdn.mozilla.org", true, false, true, -1, &kPinset_mozilla_services },
{ "cg.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
{ "ch.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
{ "chart.apis.google.com", true, false, false, -1, &kPinset_google_root_pems },
@ -749,6 +725,9 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
{ "codereview.chromium.org", true, false, false, -1, &kPinset_google_root_pems },
{ "contributor.google.com", true, false, false, -1, &kPinset_google_root_pems },
{ "cr.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
{ "crash-reports-xpsp2.mozilla.com", false, false, true, 11, &kPinset_mozilla_services },
{ "crash-reports.mozilla.com", false, false, true, 10, &kPinset_mozilla_services },
{ "crash-stats.mozilla.com", false, false, true, 12, &kPinset_mozilla_services },
{ "ct.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
{ "de.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
{ "dev.twitter.com", true, false, false, -1, &kPinset_twitterCom },
@ -761,6 +740,7 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
{ "docs.google.com", true, false, false, -1, &kPinset_google_root_pems },
{ "domains.google.com", true, false, false, -1, &kPinset_google_root_pems },
{ "doubleclick.net", true, false, false, -1, &kPinset_google_root_pems },
{ "download.mozilla.org", false, false, true, 14, &kPinset_mozilla_services },
{ "drive.google.com", true, false, false, -1, &kPinset_google_root_pems },
{ "dropbox.com", true, false, false, -1, &kPinset_dropbox },
{ "dropboxstatic.com", false, true, false, -1, &kPinset_dropbox },
@ -1104,11 +1084,14 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
{ "stats.g.doubleclick.net", true, false, false, -1, &kPinset_google_root_pems },
{ "sv.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
{ "swehack.org", true, true, false, -1, &kPinset_swehackCom },
{ "sync.services.mozilla.com", true, false, true, 13, &kPinset_mozilla_services },
{ "t.facebook.com", true, false, false, -1, &kPinset_facebook },
{ "tablet.facebook.com", true, false, false, -1, &kPinset_facebook },
{ "talk.google.com", true, false, false, -1, &kPinset_google_root_pems },
{ "talkgadget.google.com", true, false, false, -1, &kPinset_google_root_pems },
{ "telemetry.mozilla.org", true, true, true, 8, &kPinset_mozilla_services },
{ "test-mode.pinning.example.com", true, true, false, -1, &kPinset_mozilla_test },
{ "testpilot.firefox.com", false, false, true, 9, &kPinset_mozilla_services },
{ "th.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
{ "torproject.org", false, false, false, -1, &kPinset_tor },
{ "touch.facebook.com", true, false, false, -1, &kPinset_facebook },
@ -1161,8 +1144,8 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
{ "zh.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
};
// Pinning Preload List Length = 464;
// Pinning Preload List Length = 471;
static const int32_t kUnknownId = -1;
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1488896689084000);
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1488984302204000);

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

@ -1,4 +1,4 @@
0.me.uk: could not connect to host
0.me.uk: did not receive HSTS header
020wifi.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
0p.no: did not receive HSTS header
0x.sk: could not connect to host
@ -57,6 +57,7 @@ abearofsoap.com: did not receive HSTS header
abecodes.net: did not receive HSTS header
abilitylist.org: did not receive HSTS header
abioniere.de: could not connect to host
abloop.com: could not connect to host
about.ge: could not connect to host
aboutmyip.info: did not receive HSTS header
aboutyou-deals.de: did not receive HSTS header
@ -102,11 +103,10 @@ adver.top: could not connect to host
adviespuntklokkenluiders.nl: did not receive HSTS header
aemoria.com: could not connect to host
aerialmediapro.net: could not connect to host
aes256.ru: did not receive HSTS header
aes256.ru: could not connect to host
aether.pw: could not connect to host
aevpn.net: could not connect to host
affinitysync.com: could not connect to host
aficionados.com.br: did not receive HSTS header
aficotroceni.ro: did not receive HSTS header
afp548.tk: could not connect to host
afrodigital.uk: could not connect to host
@ -145,7 +145,6 @@ alcazaar.com: could not connect to host
alecvannoten.be: did not receive HSTS header
alenan.org: could not connect to host
alessandro.pw: did not receive HSTS header
alessandroz.pro: could not connect to host
alethearose.com: did not receive HSTS header
alexandre.sh: did not receive HSTS header
alexhaydock.co.uk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
@ -256,11 +255,11 @@ ars.toscana.it: max-age too low: 0
artistnetwork.nl: did not receive HSTS header
arturkohut.com: could not connect to host
as.se: could not connect to host
asandu.eu: could not connect to host
asasuou.pw: could not connect to host
asc16.com: could not connect to host
asdpress.cn: could not connect to host
aserver.co: could not connect to host
ashleymedway.com: could not connect to host
asianodor.com: could not connect to host
askfit.cz: did not receive HSTS header
asmui.ga: could not connect to host
@ -280,12 +279,14 @@ atbeckett.com: did not receive HSTS header
athaliasoft.com: did not receive HSTS header
athenelive.com: could not connect to host
athul.xyz: did not receive HSTS header
atlantischild.hu: could not connect to host
atlex.nl: did not receive HSTS header
atomik.pro: could not connect to host
atop.io: could not connect to host
attimidesigns.com: did not receive HSTS header
au.search.yahoo.com: max-age too low: 172800
aubiosales.com: did not receive HSTS header
aucubin.moe: could not connect to host
aufmerksamkeitsstudie.com: could not connect to host
aujapan.ru: could not connect to host
aurainfosec.com.au: could not connect to host
@ -339,6 +340,7 @@ bckp.de: could not connect to host
bcm.com.au: max-age too low: 0
bcnx.de: max-age too low: 0
bcsytv.com: could not connect to host
bdikaros-network.net: could not connect to host
be.search.yahoo.com: did not receive HSTS header
beach-inspector.com: did not receive HSTS header
beachi.es: could not connect to host
@ -374,7 +376,7 @@ bettween.com: could not connect to host
betz.ro: did not receive HSTS header
beulahtabernacle.com: could not connect to host
bevapehappy.com: did not receive HSTS header
bezorg.ninja: could not connect to host
bezorg.ninja: did not receive HSTS header
bf.am: max-age too low: 0
bgcparkstad.nl: did not receive HSTS header
bgmn.net: could not connect to host
@ -395,7 +397,6 @@ binderapp.net: could not connect to host
biofam.ru: did not receive HSTS header
biophysik-ssl.de: did not receive HSTS header
bioshome.de: could not connect to host
birkhoff.me: could not connect to host
birkman.com: did not receive HSTS header
bismarck.moe: did not receive HSTS header
bitchan.it: could not connect to host
@ -438,6 +439,7 @@ blucas.org: did not receive HSTS header
blueliv.com: did not receive HSTS header
bluetenmeer.com: did not receive HSTS header
bm-trading.nl: did not receive HSTS header
bmone.net: could not connect to host
bngsecure.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
bobiji.com: did not receive HSTS header
bodyblog.nl: did not receive HSTS header
@ -459,12 +461,10 @@ bootjp.me: did not receive HSTS header
boringsecurity.net: could not connect to host
boris.one: did not receive HSTS header
botox.bz: did not receive HSTS header
bougeret.fr: could not connect to host
bouwbedrijfpurmerend.nl: did not receive HSTS header
bowlroll.net: max-age too low: 0
boxcryptor.com: did not receive HSTS header
br3in.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
brage.info: could not connect to host
brain-e.co: could not connect to host
braineet.com: did not receive HSTS header
brainfork.ml: could not connect to host
@ -490,6 +490,7 @@ browserid.org: did not receive HSTS header
brunix.net: did not receive HSTS header
bsagan.fr: could not connect to host
bsdtips.com: could not connect to host
bsquared.org: could not connect to host
btcdlc.com: could not connect to host
buchheld.at: did not receive HSTS header
budgetthostels.nl: did not receive HSTS header
@ -526,7 +527,6 @@ cabarave.com: could not connect to host
cabusar.fr: could not connect to host
caconnect.org: could not connect to host
cadao.me: did not receive HSTS header
cadmail.nl: could not connect to host
cadusilva.com: did not receive HSTS header
cafe-scientifique.org.ec: could not connect to host
caim.cz: did not receive HSTS header
@ -549,6 +549,7 @@ cannyfoxx.me: could not connect to host
canyonshoa.com: did not receive HSTS header
capecycles.co.za: did not receive HSTS header
captchatheprize.com: could not connect to host
capturethepen.co.uk: could not connect to host
car-navi.ph: did not receive HSTS header
carano-service.de: did not receive HSTS header
caraudio69.cz: could not connect to host
@ -608,7 +609,6 @@ chateauconstellation.ch: did not receive HSTS header
chatup.cf: could not connect to host
chaulootz.com: could not connect to host
chcemvediet.sk: max-age too low: 1555200
cheapgeekts.com: could not connect to host
chebedara.com: could not connect to host
checkout.google.com: did not receive HSTS header (error ignored - included regardless)
cheerflow.com: could not connect to host
@ -706,6 +706,7 @@ compalytics.com: could not connect to host
comparejewelleryprices.co.uk: could not connect to host
completionist.audio: could not connect to host
computeremergency.com.au: did not receive HSTS header
computersystems.guru: could not connect to host
concord-group.co.jp: did not receive HSTS header
condesaelectronics.com: max-age too low: 0
confirm365.com: could not connect to host
@ -733,6 +734,7 @@ corruption-rsps.net: could not connect to host
corruption-server.net: could not connect to host
corzntin.fr: could not connect to host
count.sh: could not connect to host
couragefound.org: could not connect to host
couragewhispers.ca: did not receive HSTS header
coursdeprogrammation.com: could not connect to host
coursella.com: did not receive HSTS header
@ -751,7 +753,6 @@ crazyhotseeds.com: did not receive HSTS header
creativephysics.ml: could not connect to host
creativeplayuk.com: did not receive HSTS header
crendontech.com: could not connect to host
crestasantos.com: could not connect to host
crestoncottage.com: could not connect to host
criena.net: could not connect to host
critical.today: could not connect to host
@ -797,7 +798,7 @@ cybershambles.com: could not connect to host
cycleluxembourg.lu: did not receive HSTS header
cydia-search.io: could not connect to host
cyphertite.com: could not connect to host
cysec.biz: could not connect to host
d3xt3r01.tk: could not connect to host
dad256.tk: could not connect to host
dah5.com: did not receive HSTS header
dailystormerpodcasts.com: did not receive HSTS header
@ -808,7 +809,6 @@ daniel-steuer.de: did not receive HSTS header
danieldk.eu: did not receive HSTS header
danielworthy.com: did not receive HSTS header
danijobs.com: could not connect to host
dannyrohde.de: could not connect to host
danpiel.net: could not connect to host
danrl.de: did not receive HSTS header
daolerp.xyz: could not connect to host
@ -837,8 +837,10 @@ datenreiter.gq: could not connect to host
datenreiter.ml: could not connect to host
datenreiter.tk: could not connect to host
datewon.net: did not receive HSTS header
davescomputertips.com: did not receive HSTS header
davidglidden.eu: could not connect to host
davidhunter.scot: did not receive HSTS header
davidmcevoy.org.uk: could not connect to host
davidmessenger.co.uk: could not connect to host
davidreinhardt.de: could not connect to host
davidscherzer.at: could not connect to host
@ -907,7 +909,6 @@ discovery.lookout.com: did not receive HSTS header
dislocated.de: did not receive HSTS header
dissimulo.me: could not connect to host
dittvertshus.no: could not connect to host
diycc.org: could not connect to host
dizihocasi.com: did not receive HSTS header
dizorg.net: could not connect to host
dj4et.de: did not receive HSTS header
@ -941,6 +942,7 @@ doridian.net: did not receive HSTS header
doridian.org: could not connect to host
dossplumbing.co.za: did not receive HSTS header
dotadata.me: could not connect to host
doublefun.net: could not connect to host
dougferris.id.au: could not connect to host
download.jitsi.org: did not receive HSTS header
downsouthweddings.com.au: did not receive HSTS header
@ -970,7 +972,6 @@ duch.cloud: could not connect to host
duesee.org: could not connect to host
dullsir.com: did not receive HSTS header
duria.de: max-age too low: 3600
dustri.org: could not connect to host
dwhd.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
dxa.io: could not connect to host
dycontrol.de: could not connect to host
@ -1007,6 +1008,7 @@ edk.com.tr: did not receive HSTS header
edmodo.com: did not receive HSTS header
edp-collaborative.com: max-age too low: 2500
eduvance.in: did not receive HSTS header
edwardsnowden.com: could not connect to host
eeqj.com: could not connect to host
efficienthealth.com: did not receive HSTS header
effortlesshr.com: did not receive HSTS header
@ -1023,7 +1025,6 @@ elaintehtaat.fi: did not receive HSTS header
elanguest.pl: could not connect to host
elars.de: could not connect to host
elbetech.net: could not connect to host
eldinhadzic.com: could not connect to host
electricianforum.co.uk: could not connect to host
electromc.com: could not connect to host
elemprendedor.com.ve: could not connect to host
@ -1049,10 +1050,6 @@ enargia.jp: max-age too low: 0
encode.space: did not receive HSTS header
encoder.pw: could not connect to host
encrypted.google.com: did not receive HSTS header (error ignored - included regardless)
endohaus.ca: could not connect to host
endohaus.com: could not connect to host
endohaus.eu: could not connect to host
endohaus.us: could not connect to host
endzeit-architekten.com: did not receive HSTS header
engelwerbung.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
englishforums.com: could not connect to host
@ -1072,7 +1069,6 @@ eol34.com: did not receive HSTS header
epanurse.com: could not connect to host
ephry.com: could not connect to host
epoxate.com: did not receive HSTS header
epublibre.org: could not connect to host
eq8.net.au: could not connect to host
equate.net.au: max-age too low: 3600
equatetechnologies.com.au: max-age too low: 3600
@ -1140,6 +1136,7 @@ fabhub.io: could not connect to host
fabianfischer.de: did not receive HSTS header
factorable.net: did not receive HSTS header
factorygw.com: did not receive HSTS header
fadednet.com: could not connect to host
fadilus.com: did not receive HSTS header
faesser.com: did not receive HSTS header
fail4free.de: did not receive HSTS header
@ -1195,8 +1192,10 @@ first-time-offender.com: could not connect to host
firstforex.co.uk: did not receive HSTS header
fish2.me: did not receive HSTS header
fit4medien.de: did not receive HSTS header
fitiapp.com: could not connect to host
fitnesswerk.de: could not connect to host
fivestarsitters.com: did not receive HSTS header
fixate.ru: could not connect to host
fixatom.com: did not receive HSTS header
fixingdns.com: did not receive HSTS header
fizz.buzz: could not connect to host
@ -1204,7 +1203,6 @@ fj.search.yahoo.com: did not receive HSTS header
flags.ninja: could not connect to host
flamewall.net: could not connect to host
flawcheck.com: did not receive HSTS header
fleximus.org: could not connect to host
fliexer.com: did not receive HSTS header
floless.co.uk: did not receive HSTS header
florian-lillpopp.de: max-age too low: 10
@ -1247,7 +1245,6 @@ franta.biz: did not receive HSTS header
franta.email: did not receive HSTS header
franzt.de: could not connect to host
frasys.io: max-age too low: 7776000
fraurichter.net: could not connect to host
freeflow.tv: could not connect to host
freekdevries.nl: could not connect to host
freematthale.net: did not receive HSTS header
@ -1308,6 +1305,7 @@ gamerslair.org: did not receive HSTS header
gamesdepartment.co.uk: max-age too low: 0
gamingmedia.eu: did not receive HSTS header
gampenhof.de: did not receive HSTS header
gancedo.com.es: could not connect to host
gaptek.id: did not receive HSTS header
garciamartin.me: could not connect to host
gatilagata.com.br: did not receive HSTS header
@ -1320,7 +1318,6 @@ geli-graphics.com: did not receive HSTS header
gem-indonesia.net: could not connect to host
genuu.com: could not connect to host
genuxation.com: could not connect to host
genuxtsg.com: could not connect to host
genyaa.com: could not connect to host
gerencianet.com.br: did not receive HSTS header
get.zenpayroll.com: did not receive HSTS header
@ -1345,7 +1342,7 @@ gh16.com.ar: could not connect to host
gheorghesarcov.ga: could not connect to host
gheorghesarcov.tk: could not connect to host
gietvloergarant.nl: did not receive HSTS header
gigacloud.org: did not receive HSTS header
gigacloud.org: max-age too low: 0
gilgaz.com: did not receive HSTS header
gilly.berlin: did not receive HSTS header
gingali.de: did not receive HSTS header
@ -1376,7 +1373,7 @@ goabonga.com: could not connect to host
goaltree.ch: did not receive HSTS header
goarmy.eu: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
goat.chat: did not receive HSTS header
goat.xyz: did not receive HSTS header
goat.xyz: could not connect to host
goben.ch: could not connect to host
goerner.me: did not receive HSTS header
goge.site: could not connect to host
@ -1406,7 +1403,6 @@ gracesofgrief.com: max-age too low: 86400
grandmascookieblog.com: did not receive HSTS header
graph.no: did not receive HSTS header
gravity-net.de: could not connect to host
graycell.net: could not connect to host
grazetech.com: could not connect to host
greboid.co.uk: could not connect to host
greboid.com: could not connect to host
@ -1420,7 +1416,6 @@ grigalanzsoftware.com: could not connect to host
grossmann.gr: could not connect to host
groups.google.com: did not receive HSTS header (error ignored - included regardless)
grunex.com: did not receive HSTS header
grunwasser.fr: could not connect to host
gryffin.ga: could not connect to host
gryffin.ml: could not connect to host
gryffin.tk: could not connect to host
@ -1451,7 +1446,6 @@ hack.li: did not receive HSTS header
hacker.one: could not connect to host
hackerforever.com: did not receive HSTS header
hackerone-ext-adroll.com: could not connect to host
hackerspace-ntnu.no: could not connect to host
hackit.im: could not connect to host
hadzic.co: could not connect to host
hahayidu.org: could not connect to host
@ -1507,7 +1501,7 @@ helpmebuild.com: did not receive HSTS header
hemdal.se: could not connect to host
hencagon.com: could not connect to host
henriknoerr.com: could not connect to host
hepteract.us: did not receive HSTS header
heritagedentistry.ca: could not connect to host
hermes-net.de: did not receive HSTS header
herpaderp.net: did not receive HSTS header
herzbotschaft.de: did not receive HSTS header
@ -1524,7 +1518,6 @@ hiphopconvention.nl: could not connect to host
hitoy.org: did not receive HSTS header
hittipps.com: did not receive HSTS header
hlyue.com: could not connect to host
hm1ch.com: could not connect to host
hmm.nyc: could not connect to host
hn.search.yahoo.com: did not receive HSTS header
hodne.io: could not connect to host
@ -1534,6 +1527,7 @@ hohm.in: could not connect to host
holifestival-freyung.de: could not connect to host
holymoly.lu: did not receive HSTS header
homa.website: could not connect to host
homads.com: could not connect to host
honeytracks.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
hongzhaxiaofendui.com: could not connect to host
honoo.com: could not connect to host
@ -1541,8 +1535,8 @@ hookandloom.com: did not receive HSTS header
horosho.in: could not connect to host
horseboners.xxx: did not receive HSTS header
hortifarm.ro: did not receive HSTS header
hosted-service.com: could not connect to host
hostedbgp.net: could not connect to host
hosmussynergie.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
hosted-service.com: did not receive HSTS header
hostedtalkgadget.google.com: did not receive HSTS header (error ignored - included regardless)
hostgarou.com: did not receive HSTS header
hostinaus.com.au: could not connect to host
@ -1555,6 +1549,7 @@ housemaadiah.org: did not receive HSTS header
housingstudents.org.uk: could not connect to host
howbigismybuilding.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
howrandom.org: could not connect to host
howtocuremysciatica.com: did not receive HSTS header
hr-intranet.com: did not receive HSTS header
hsir.me: could not connect to host
hsts.date: could not connect to host
@ -1616,7 +1611,6 @@ ilikerainbows.co.uk: could not connect to host
ilmconpm.de: did not receive HSTS header
ilona.graphics: max-age too low: 3600
iluvscotland.co.uk: did not receive HSTS header
imanolbarba.net: could not connect to host
ime.moe: could not connect to host
imguoguo.com: did not receive HSTS header
imim.pw: did not receive HSTS header
@ -1661,7 +1655,6 @@ inspiroinc.com: could not connect to host
instacart.com: did not receive HSTS header
instantdev.io: could not connect to host
institutoflordelavida.com: could not connect to host
integraelchen.de: could not connect to host
intel.li: could not connect to host
intelldynamics.com: could not connect to host
interference.io: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
@ -1710,7 +1703,6 @@ itsadog.co.uk: did not receive HSTS header
itsamurai.ru: max-age too low: 2592000
itsecurityassurance.pw: did not receive HSTS header
itshost.ru: could not connect to host
ivancacic.com: could not connect to host
ivi-fertility.com: max-age too low: 0
ivi.es: max-age too low: 0
ivk.website: could not connect to host
@ -1761,6 +1753,7 @@ jbfp.dk: could not connect to host
jbn.mx: could not connect to host
jbradaric.me: could not connect to host
jcch.de: could not connect to host
jccrew.org: could not connect to host
jcor.me: did not receive HSTS header
jctf.io: could not connect to host
jeff393.com: could not connect to host
@ -1791,6 +1784,7 @@ jkb.pics: could not connect to host
jkbuster.com: could not connect to host
jmdekker.it: could not connect to host
joakimalgroy.com: could not connect to host
jobbkk.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
jobmedic.com: did not receive HSTS header
joedavison.me: could not connect to host
jogi-server.de: did not receive HSTS header
@ -1833,13 +1827,13 @@ jwilsson.me: could not connect to host
jxm.in: could not connect to host
k-dev.de: could not connect to host
ka-clan.com: could not connect to host
kab-s.de: did not receive HSTS header
kabuabc.com: did not receive HSTS header
kadioglumakina.com.tr: did not receive HSTS header
kahopoon.net: could not connect to host
kaisers.de: did not receive HSTS header
kalami.nl: did not receive HSTS header
kamikano.com: could not connect to host
kamikatse.net: could not connect to host
kaplatz.is: could not connect to host
kapucini.si: max-age too low: 0
karaoketonight.com: could not connect to host
@ -1859,13 +1853,13 @@ keeley.gq: could not connect to host
keeley.ml: could not connect to host
keeleysam.me: could not connect to host
keepclean.me: could not connect to host
kenoschwalb.com: did not receive HSTS header
kerangalam.com: did not receive HSTS header
kerksanders.nl: did not receive HSTS header
kermadec.net: could not connect to host
kernl.us: did not receive HSTS header
kevinapease.com: could not connect to host
keymaster.lookout.com: did not receive HSTS header
kfz-hantschel.de: did not receive HSTS header
kg-rating.com: did not receive HSTS header
kgxtech.com: max-age too low: 2592000
kickass.al: could not connect to host
@ -1925,6 +1919,7 @@ kropkait.pl: could not connect to host
krouzkyliduska.cz: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
krunut.com: did not receive HSTS header
krypteia.org: could not connect to host
kryptomech.com: could not connect to host
ksfh-mail.de: could not connect to host
kstan.me: could not connect to host
kucom.it: did not receive HSTS header
@ -2050,7 +2045,6 @@ loafbox.com: could not connect to host
locktheirphone.com: could not connect to host
locomotive.ca: did not receive HSTS header
login.corp.google.com: max-age too low: 7776000 (error ignored - included regardless)
login.gov: could not connect to host
loginseite.com: could not connect to host
loli.bz: could not connect to host
lolicore.ch: could not connect to host
@ -2073,7 +2067,6 @@ lotsencafe.de: did not receive HSTS header
lovelifelovelive.com: could not connect to host
lovelycorral.com: did not receive HSTS header
loveto.at: could not connect to host
loveyounastya.com: could not connect to host
lowhangingfruitgrabber.com: could not connect to host
lpak.nl: could not connect to host
lrhsclubs.com: could not connect to host
@ -2116,11 +2109,16 @@ macbolo.com: could not connect to host
macchaberrycream.com: could not connect to host
macchedil.com: did not receive HSTS header
macgeneral.de: did not receive HSTS header
machbach.com: could not connect to host
machbach.net: could not connect to host
machon.biz: could not connect to host
maco.org.uk: could not connect to host
macosxfilerecovery.com: did not receive HSTS header
madars.org: did not receive HSTS header
maddin.ga: could not connect to host
madebymagnitude.com: did not receive HSTS header
maderwin.com: did not receive HSTS header
madreacqua.org: could not connect to host
madusecurity.com: could not connect to host
mafamane.com: could not connect to host
mafiareturns.com: max-age too low: 2592000
@ -2143,7 +2141,6 @@ mannsolutions.co.uk: did not receive HSTS header
mansion-note.com: could not connect to host
marchagen.nl: did not receive HSTS header
marcontrol.com: did not receive HSTS header
marcush.de: could not connect to host
marcuskoh.com: could not connect to host
mariannematthew.com: could not connect to host
marie-curie.fr: could not connect to host
@ -2179,6 +2176,7 @@ mavisang.cf: did not receive HSTS header
maya.mg: did not receive HSTS header
mbinformatik.de: could not connect to host
mca2017.org: did not receive HSTS header
mcard.vn: could not connect to host
mcc.re: could not connect to host
mcdonalds.ru: did not receive HSTS header
mclab.su: could not connect to host
@ -2224,11 +2222,12 @@ metin2blog.de: did not receive HSTS header
metis.pw: could not connect to host
meuemail.pro: could not connect to host
mexbt.com: could not connect to host
meyercloud.de: could not connect to host
mfcatalin.com: could not connect to host
mfiles.pl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
mhealthdemocamp.com: could not connect to host
mhict.nl: max-age too low: 0
mia.to: could not connect to host
michaelcullen.name: could not connect to host
michaelfitzpatrickruth.com: could not connect to host
michal-kral.cz: could not connect to host
michalborka.cz: could not connect to host
@ -2250,7 +2249,6 @@ mikonmaa.fi: could not connect to host
miku.be: could not connect to host
miku.hatsune.my: max-age too low: 5184000
milesgeek.com: did not receive HSTS header
mind-moves.es: could not connect to host
mindoktor.se: did not receive HSTS header
minecraftserverz.com: could not connect to host
minecraftvoter.com: could not connect to host
@ -2281,16 +2279,17 @@ mobilethreatnetwork.net: could not connect to host
mobilpass.no: could not connect to host
mocloud.eu: could not connect to host
modemagazines.co.uk: could not connect to host
modydev.club: could not connect to host
moebel-nagel.de: did not receive HSTS header
moelord.org: could not connect to host
moen.io: did not receive HSTS header
mogry.net: did not receive HSTS header
momozeit.de: could not connect to host
mona.lu: did not receive HSTS header
monarca.systems: could not connect to host
monasterialis.eu: could not connect to host
mondar.io: could not connect to host
mondopoint.com: could not connect to host
moneycrownmedia.com: did not receive HSTS header
monitman.com: could not connect to host
moon.lc: could not connect to host
moparisthebest.biz: could not connect to host
@ -2299,13 +2298,12 @@ moparscape.org: did not receive HSTS header
mor.gl: could not connect to host
morbitzer.de: did not receive HSTS header
morethanadream.lv: could not connect to host
morganino.eu: could not connect to host
morganino.it: could not connect to host
moriz.net: could not connect to host
morningcalculation.com: could not connect to host
morotech.com.br: max-age too low: 2592000
morpork.xyz: could not connect to host
mortgagecentersmo.com: did not receive HSTS header
morz.org: did not receive HSTS header
mostwuat.com: could not connect to host
motherbase.io: could not connect to host
motionpicturesolutions.com: could not connect to host
@ -2321,7 +2319,6 @@ mqas.net: could not connect to host
mrnonz.com: max-age too low: 0
mrpopat.in: did not receive HSTS header
mrs-shop.com: did not receive HSTS header
ms-alternativ.de: could not connect to host
msc-seereisen.net: could not connect to host
mszaki.com: did not receive HSTS header
mt.me.uk: could not connect to host
@ -2378,6 +2375,7 @@ nalifornia.com: did not receive HSTS header
namacindia.com: did not receive HSTS header
nametaken-cloud.duckdns.org: could not connect to host
nanogeneinc.com: could not connect to host
nanto.eu: could not connect to host
nargileh.nl: could not connect to host
natalia.io: could not connect to host
natalt.org: did not receive HSTS header
@ -2441,7 +2439,6 @@ ni.search.yahoo.com: did not receive HSTS header
nibiisclaim.com: could not connect to host
nicestresser.fr: could not connect to host
nicky.io: did not receive HSTS header
nicolas-hoizey.com: could not connect to host
nicolasbettag.me: could not connect to host
niconiconi.xyz: could not connect to host
niconode.com: could not connect to host
@ -2455,6 +2452,7 @@ ninhs.org: could not connect to host
nippler.org: did not receive HSTS header
nippombashi.net: did not receive HSTS header
nipponcareers.com: did not receive HSTS header
nixmag.net: could not connect to host
nkinka.de: did not receive HSTS header
nmctest.net: could not connect to host
nnya.cat: did not receive HSTS header
@ -2479,6 +2477,7 @@ norandom.com: could not connect to host
norb.at: could not connect to host
nosecretshop.com: did not receive HSTS header
nossasenhoradaconceicao.com.br: could not connect to host
notadd.com: did not receive HSTS header
notnl.com: could not connect to host
nottheonion.net: did not receive HSTS header
nouvelle-vague-saint-cast.fr: did not receive HSTS header
@ -2488,7 +2487,6 @@ nowak.ninja: did not receive HSTS header
noworrywp.com: could not connect to host
np.search.yahoo.com: did not receive HSTS header
npol.de: did not receive HSTS header
nspeaks.com: could not connect to host
ntbs.pro: could not connect to host
nu3.at: did not receive HSTS header
nu3.ch: did not receive HSTS header
@ -2514,7 +2512,7 @@ nutrienti.eu: did not receive HSTS header
nutritionculture.com: could not connect to host
nutsandboltsmedia.com: did not receive HSTS header
nwgh.org: max-age too low: 86400
nwork.media: did not receive HSTS header
nwork.media: could not connect to host
nyantec.com: did not receive HSTS header
nysepho.pw: could not connect to host
nystart.no: could not connect to host
@ -2523,7 +2521,6 @@ nzb.cat: max-age too low: 7776000
o0o.one: did not receive HSTS header
oasis.mobi: did not receive HSTS header
oasisim.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
obscuredfiles.com: could not connect to host
obsydian.org: could not connect to host
occentus.net: did not receive HSTS header
ochaken.cf: could not connect to host
@ -2546,7 +2543,6 @@ omgaanmetidealen.com: could not connect to host
ominto.com: max-age too low: 0
omniti.com: max-age too low: 1
omquote.gq: could not connect to host
omskit.ru: could not connect to host
oneb4nk.com: could not connect to host
onefour.co: could not connect to host
oneminute.io: did not receive HSTS header
@ -2637,7 +2633,6 @@ pants-off.xyz: could not connect to host
pantsu.cat: did not receive HSTS header
papeda.net: could not connect to host
papercard.co.uk: did not receive HSTS header
paperwork.co.za: could not connect to host
papierniak.net: could not connect to host
parent5446.us: could not connect to host
parentmail.co.uk: did not receive HSTS header
@ -2658,7 +2653,6 @@ paste.linode.com: could not connect to host
pastebin.linode.com: could not connect to host
pastenib.com: could not connect to host
paster.li: did not receive HSTS header
pastie.se: did not receive HSTS header
patientinsight.net: could not connect to host
patt.us: did not receive HSTS header
patterson.mp: could not connect to host
@ -2698,7 +2692,6 @@ petrolplus.ru: did not receive HSTS header
pettsy.com: could not connect to host
pewboards.com: could not connect to host
pgpm.io: could not connect to host
phantasie.cc: could not connect to host
phillprice.com: could not connect to host
phonenumberinfo.co.uk: could not connect to host
phongmay24h.com: could not connect to host
@ -2710,11 +2703,12 @@ pierre-denoblens.net: could not connect to host
pijuice.com: could not connect to host
piligrimname.com: could not connect to host
pinesandneedles.com: did not receive HSTS header
pinkhq.com: could not connect to host
pippen.io: could not connect to host
pir9.com: max-age too low: 2592000
piratedb.com: could not connect to host
piratedot.com: could not connect to host
piratelist.online: did not receive HSTS header
piratelist.online: could not connect to host
piratenlogin.de: could not connect to host
pirati.cz: max-age too low: 604800
pirlitu.com: did not receive HSTS header
@ -2737,7 +2731,7 @@ playkh.com: did not receive HSTS header
playmaker.io: could not connect to host
playnation.io: did not receive HSTS header
playsoundevents.be: could not connect to host
pleasure.forsale: could not connect to host
plhdb.org: could not connect to host
plixer.com: did not receive HSTS header
plogable.co: could not connect to host
plothost.com: did not receive HSTS header
@ -2746,7 +2740,6 @@ pmnts.io: could not connect to host
po.gl: did not receive HSTS header
poiema.com.sg: did not receive HSTS header
pol.in.th: could not connect to host
polaire.org: did not receive HSTS header
pole.net.nz: did not receive HSTS header
poleartschool.com: could not connect to host
polimat.org: could not connect to host
@ -2769,7 +2762,7 @@ poussinooz.fr: could not connect to host
povitria.net: could not connect to host
power-of-interest.com: did not receive HSTS header
power99press.com: did not receive HSTS header
powerplannerapp.com: did not receive HSTS header
powerplannerapp.com: could not connect to host
powerxequality.com: could not connect to host
ppr-truby.ru: could not connect to host
ppy3.com: did not receive HSTS header
@ -2797,6 +2790,7 @@ progg.no: could not connect to host
prohostonline.fi: could not connect to host
promecon-gmbh.de: did not receive HSTS header
prontolight.com: did not receive HSTS header
proposalonline.com: could not connect to host
prosocialmachines.com: could not connect to host
prosoft.sk: max-age too low: 0
prosperident.com: did not receive HSTS header
@ -2805,7 +2799,8 @@ proximato.com: could not connect to host
proxybay.al: could not connect to host
proxybay.club: could not connect to host
proxybay.info: did not receive HSTS header
prxio.site: could not connect to host
prxio.date: could not connect to host
prxio.site: did not receive HSTS header
prytkov.com: did not receive HSTS header
psw.academy: did not receive HSTS header
psw.consulting: did not receive HSTS header
@ -2834,7 +2829,6 @@ qorm.co.uk: did not receive HSTS header
qrara.net: did not receive HSTS header
qrlending.com: did not receive HSTS header
quail.solutions: could not connect to host
qualityology.com: could not connect to host
quantacloud.ch: could not connect to host
quantenteranik.eu: could not connect to host
quantumcourse.org: did not receive HSTS header
@ -2864,7 +2858,11 @@ ratajczak.fr: could not connect to host
raulfraile.net: could not connect to host
rawet.se: did not receive HSTS header
rawstorieslondon.com: could not connect to host
ray-home.de: could not connect to host
ray-works.de: could not connect to host
raydobe.me: could not connect to host
raymd.de: could not connect to host
rayworks.de: could not connect to host
rc4.io: did not receive HSTS header
rcafox.com: could not connect to host
rcpcbd.com: did not receive HSTS header
@ -2899,6 +2897,7 @@ renrenss.com: did not receive HSTS header
rent-a-coder.de: did not receive HSTS header
rentcarassist.com: could not connect to host
renteater.com: could not connect to host
repaxan.com: could not connect to host
replacemychina.com: did not receive HSTS header
reprolife.co.uk: max-age too low: 0
res-rheingau.de: did not receive HSTS header
@ -2950,7 +2949,6 @@ ronvandordt.info: did not receive HSTS header
ronwo.de: max-age too low: 1
room-checkin24.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
rootforum.org: did not receive HSTS header
roots-example-project.com: could not connect to host
rootservice.org: did not receive HSTS header
rootwpn.com: could not connect to host
rotterdamjazz.info: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
@ -2958,6 +2956,7 @@ roundtheme.com: did not receive HSTS header
rous.se: could not connect to host
rout0r.org: did not receive HSTS header
rouvray.org: could not connect to host
royalhop.co: could not connect to host
rr.in.th: could not connect to host
rrke.cc: did not receive HSTS header
rsajeey.info: could not connect to host
@ -2974,6 +2973,7 @@ rubyshop.nl: max-age too low: 604800
rudeotter.com: did not receive HSTS header
rudloff.pro: did not receive HSTS header
rugirlfriend.com: could not connect to host
ruh-veit.de: could not connect to host
ruiming.me: could not connect to host
runawebinar.nl: could not connect to host
runementors.com: could not connect to host
@ -3022,7 +3022,6 @@ saveaward.gov: could not connect to host
saveyour.biz: did not receive HSTS header
sawamura-rental.com: did not receive HSTS header
sb-group.dk: did not receive HSTS header
sbiewald.de: could not connect to host
sbox-archives.com: could not connect to host
sby.de: did not receive HSTS header
sc4le.com: could not connect to host
@ -3078,7 +3077,7 @@ semen3325.xyz: could not connect to host
semenkovich.com: did not receive HSTS header
semps-servers.de: could not connect to host
semps.de: did not receive HSTS header
senedirect.com: did not receive HSTS header
senedirect.com: could not connect to host
sensibus.com: did not receive HSTS header
seo.consulting: did not receive HSTS header
seomobo.com: could not connect to host
@ -3086,12 +3085,12 @@ seon.me: did not receive HSTS header
seowarp.net: did not receive HSTS header
sep23.ru: could not connect to host
seq.tf: did not receive HSTS header
serathius.ovh: could not connect to host
serfdom.io: did not receive HSTS header
serized.pw: could not connect to host
servercode.ca: did not receive HSTS header
serverdensity.io: did not receive HSTS header
servergno.me: did not receive HSTS header
serverstuff.info: could not connect to host
seryo.moe: could not connect to host
setphaserstostun.org: could not connect to host
setuid.de: could not connect to host
@ -3107,7 +3106,7 @@ shanewadleigh.com: could not connect to host
shaobin.wang: could not connect to host
sharepass.pw: could not connect to host
sharescope.co.uk: max-age too low: 14400
sharevari.com: did not receive HSTS header
sharevari.com: could not connect to host
shareworx.net: could not connect to host
shauncrowley.co.uk: could not connect to host
shaunwheelhou.se: could not connect to host
@ -3132,6 +3131,7 @@ shwongacc.com: could not connect to host
siammedia.co: did not receive HSTS header
siddhant.me: could not connect to host
siebens.net: could not connect to host
siebeve.be: could not connect to host
sifls.com: could not connect to host
silentcircle.org: could not connect to host
silicagelpackets.ca: did not receive HSTS header
@ -3173,15 +3173,16 @@ sluitkampzeist.nl: [Exception... "Component returned failure code: 0x80004005 (N
slycurity.de: did not receive HSTS header
smart-mirror.de: did not receive HSTS header
smart-ov.nl: could not connect to host
smartairkey.com: could not connect to host
smartcoin.com.br: could not connect to host
smartofficesandsmarthomes.com: did not receive HSTS header
smartrak.co.nz: did not receive HSTS header
smatch.com: did not receive HSTS header
smet.us: could not connect to host
smimea.com: could not connect to host
smirkingwhorefromhighgarden.pro: could not connect to host
smkn1lengkong.sch.id: did not receive HSTS header
smksi2.com: max-age too low: 0
sms1.ro: could not connect to host
smusg.com: did not receive HSTS header
snailing.org: could not connect to host
snapappointments.com: did not receive HSTS header
@ -3191,7 +3192,6 @@ sneberger.cz: [Exception... "Component returned failure code: 0x80004005 (NS_ERR
snel4u.nl: could not connect to host
snelwerk.be: did not receive HSTS header
sng.my: could not connect to host
sniderman.eu.org: could not connect to host
snille.com: could not connect to host
snoqualmiefiber.org: did not receive HSTS header
sobabox.ru: could not connect to host
@ -3207,6 +3207,7 @@ socialspirit.com.br: did not receive HSTS header
sockeye.cc: could not connect to host
socomponents.co.uk: did not receive HSTS header
sogeek.me: did not receive HSTS header
sokche.com: could not connect to host
solidfuelappliancespares.co.uk: did not receive HSTS header
solinter.com.br: did not receive HSTS header
soll-i.ch: did not receive HSTS header
@ -3264,6 +3265,7 @@ square.gs: could not connect to host
squatldf.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
sqzryang.com: did not receive HSTS header
srevilak.net: did not receive HSTS header
sritest.io: did not receive HSTS header
srna.sk: could not connect to host
srrr.ca: could not connect to host
ss.wtf: did not receive HSTS header
@ -3334,6 +3336,8 @@ suksit.com: could not connect to host
sumoatm.com: did not receive HSTS header
sumoscout.de: did not receive HSTS header
suncountrymarine.com: did not receive HSTS header
sunflyer.cn: did not receive HSTS header
sunnyfruit.ru: did not receive HSTS header
sunshinepress.org: could not connect to host
superbabysitting.ch: could not connect to host
supereight.net: did not receive HSTS header
@ -3360,6 +3364,7 @@ syncer.jp: did not receive HSTS header
syncserve.net: did not receive HSTS header
syneic.com: did not receive HSTS header
syno.gq: could not connect to host
syntheticmotoroil.org: did not receive HSTS header
sysadmin.xyz: could not connect to host
syso.name: could not connect to host
szaszm.tk: max-age too low: 0
@ -3371,10 +3376,12 @@ tadigitalstore.com: could not connect to host
tafoma.com: did not receive HSTS header
tageau.com: could not connect to host
taglondon.org: did not receive HSTS header
tails.com.ar: did not receive HSTS header
talk.google.com: did not receive HSTS header (error ignored - included regardless)
talktwincities.com: could not connect to host
tallr.se: could not connect to host
tallshoe.com: could not connect to host
talsi.eu: could not connect to host
tandarts-haarlem.nl: did not receive HSTS header
tanzhijun.com: did not receive HSTS header
tapfinder.ca: could not connect to host
@ -3407,6 +3414,7 @@ techmatehq.com: could not connect to host
technosavvyport.com: did not receive HSTS header
techpointed.com: could not connect to host
techvalue.gr: did not receive HSTS header
tedovo.com: did not receive HSTS header
tegelsensanitaironline.nl: did not receive HSTS header
tekshrek.com: max-age too low: 0
telefonnummer.online: could not connect to host
@ -3420,7 +3428,7 @@ terra.by: could not connect to host
terrax.berlin: could not connect to host
terrax.info: could not connect to host
testandroid.xyz: could not connect to host
testbawks.com: could not connect to host
testbawks.com: did not receive HSTS header
testnode.xyz: could not connect to host
texter-linz.at: did not receive HSTS header
textoplano.xyz: could not connect to host
@ -3440,7 +3448,6 @@ thecharlestonwaldorf.com: could not connect to host
theclementinebutchers.com: could not connect to host
thecoffeehouse.xyz: could not connect to host
thediaryofadam.com: did not receive HSTS header
thedisc.nl: could not connect to host
theendofzion.com: did not receive HSTS header
thefootballanalyst.com: could not connect to host
thehiddenbay.me: could not connect to host
@ -3510,6 +3517,7 @@ todo.is: did not receive HSTS header
todobazar.es: could not connect to host
tokyopopline.com: did not receive HSTS header
tollmanz.com: did not receive HSTS header
tomatenaufdenaugen.de: could not connect to host
tomberek.info: could not connect to host
tomeara.net: could not connect to host
tomharling.co.uk: max-age too low: 86400
@ -3560,6 +3568,7 @@ tuingereedschappen.net: could not connect to host
tunai.id: could not connect to host
tuningblog.eu: did not receive HSTS header
turnik-67.ru: could not connect to host
turtleduckstudios.com: could not connect to host
tuturulianda.com: could not connect to host
tuvalie.com: could not connect to host
tuxcall.de: could not connect to host
@ -3619,7 +3628,7 @@ university4industry.com: did not receive HSTS header
univz.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
unknownphenomena.net: could not connect to host
unplugg3r.dk: could not connect to host
unravel.ie: did not receive HSTS header
unravel.ie: could not connect to host
unterschicht.tv: could not connect to host
unwiredbrain.com: could not connect to host
uonstaffhub.com: could not connect to host
@ -3804,7 +3813,6 @@ whyworldhot.com: could not connect to host
wienholding.at: max-age too low: 0
wieninternational.at: could not connect to host
wiire.me: could not connect to host
wiktoriaslife.com: could not connect to host
wilf1rst.com: could not connect to host
william.si: did not receive HSTS header
willosagiede.com: did not receive HSTS header
@ -3849,9 +3857,7 @@ wsscompany.com.ve: could not connect to host
wufu.org: did not receive HSTS header
wuhengmin.com: did not receive HSTS header
wurzelzwerg.net: could not connect to host
wvg.myds.me: could not connect to host
ww2onlineshop.com: did not receive HSTS header
www.amazon.com.au: did not receive HSTS header
www.apollo-auto.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
www.braintreepayments.com: did not receive HSTS header
www.calyxinstitute.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
@ -3888,7 +3894,7 @@ xendo.net: did not receive HSTS header
xenesisziarovky.sk: could not connect to host
xett.com: did not receive HSTS header
xf-liam.com: could not connect to host
xfive.de: did not receive HSTS header
xfive.de: could not connect to host
xiaody.me: could not connect to host
xiaolvmu.me: could not connect to host
xiaoxiao.im: could not connect to host
@ -3932,7 +3938,6 @@ y-o-w.com: did not receive HSTS header
y-s.pw: did not receive HSTS header
yabrt.cn: could not connect to host
yahvehyireh.com: did not receive HSTS header
yalook.com: did not receive HSTS header
yamaken.jp: did not receive HSTS header
yamamo10.com: could not connect to host
yaporn.tv: did not receive HSTS header
@ -3945,6 +3950,7 @@ yenniferallulli.de: could not connect to host
yenniferallulli.es: did not receive HSTS header
yenniferallulli.moda: could not connect to host
yenniferallulli.nl: could not connect to host
yestees.com: did not receive HSTS header
yetcore.io: could not connect to host
yingyj.com: could not connect to host
yjsoft.me: did not receive HSTS header
@ -3966,7 +3972,6 @@ yuko.moe: could not connect to host
yukontec.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
yunzhu.li: did not receive HSTS header
yunzhu.org: could not connect to host
yutabon.com: could not connect to host
yux.io: did not receive HSTS header
yzal.io: could not connect to host
z33.ch: did not receive HSTS header
@ -4003,6 +4008,7 @@ ziyuanabc.xyz: could not connect to host
zking.ga: could not connect to host
zocken.com: could not connect to host
zomerschoen.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
zomiac.pp.ua: could not connect to host
zoneminder.com: did not receive HSTS header
zoo24.de: did not receive HSTS header
zoomingin.net: max-age too low: 2592000
@ -4013,6 +4019,7 @@ zqhong.com: could not connect to host
zrn.in: did not receive HSTS header
ztan.tk: could not connect to host
zten.org: could not connect to host
zulu7.com: could not connect to host
zvncloud.com: did not receive HSTS header
zwy.me: did not receive HSTS header
zyf.pw: could not connect to host

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

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

@ -332,7 +332,7 @@ add_task(async function test_telemetry_integration() {
ok(bme.validation.problems)
equal(bme.validation.checked, server.length);
equal(bme.validation.took, duration);
bme.validation.problems.sort((a, b) => String.localeCompare(a.name, b.name));
bme.validation.problems.sort((a, b) => String(a.name).localeCompare(b.name));
equal(bme.validation.version, new BookmarkValidator().version);
deepEqual(bme.validation.problems, [
{ name: "badClientRoots", count: 3 },

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

@ -39540,6 +39540,12 @@
"url": "/html/semantics/embedded-content/the-img-element/update-src-complete.html"
}
],
"html/semantics/forms/the-select-element/select-validity.html": [
{
"path": "html/semantics/forms/the-select-element/select-validity.html",
"url": "/html/semantics/forms/the-select-element/select-validity.html"
}
],
"uievents/order-of-events/focus-events/focus-automated-blink-webkit.html": [
{
"path": "uievents/order-of-events/focus-events/focus-automated-blink-webkit.html",

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

@ -1,3 +0,0 @@
[min-width-not-important.html]
type: reftest
expected: FAIL

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

@ -0,0 +1,95 @@
<!doctype html>
<meta charset=utf-8>
<title>HTMLSelectElement.checkValidity</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/forms.html#the-select-element:attr-select-required-4">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id=log></div>
<script>
test(function() {
var select = document.createElement('select');
assert_true(select.willValidate, "A select element is a submittable element that is a candidate for constraint validation.");
var placeholder = document.createElement('option');
select.appendChild(placeholder);
assert_true(select.checkValidity(), "Always valid when the select isn't a required value.");
select.required = true;
assert_true(placeholder.selected, "If display size is 1, multiple is absent and no options have selectedness true, the first option is selected.");
assert_equals(select.value, "", "The placeholder's value should be the select's value right now");
assert_false(select.checkValidity(), "A selected placeholder option should invalidate the select.");
var emptyOption = document.createElement('option');
select.appendChild(emptyOption);
emptyOption.selected = true;
assert_equals(select.value, "", "The empty value should be set.");
assert_true(select.checkValidity(), "An empty non-placeholder option should be a valid choice.");
var filledOption = document.createElement('option');
filledOption.value = "test";
select.appendChild(filledOption);
filledOption.selected = true;
assert_equals(select.value, "test", "The non-empty value should be set.");
assert_true(select.checkValidity(), "A non-empty non-placeholder option should be a valid choice.");
select.removeChild(placeholder);
select.appendChild(emptyOption); // move emptyOption to second place
emptyOption.selected = true;
assert_equals(select.value, "", "The empty value should be set.");
assert_true(select.checkValidity(), "Only the first option can be seen as a placeholder.");
placeholder.disabled = true;
select.insertBefore(placeholder, filledOption);
placeholder.selected = true;
assert_equals(select.value, "", "A disabled first placeholder option should result in an empty value.");
assert_false(select.checkValidity(), "A disabled first placeholder option should invalidate the select.");
}, "Placeholder label options within a select");
test(function() {
var select = document.createElement('select');
select.required = true;
var optgroup = document.createElement('optgroup');
var emptyOption = document.createElement('option');
optgroup.appendChild(emptyOption);
select.appendChild(optgroup);
emptyOption.selected = true;
assert_equals(select.value, "", "The empty value should be set.");
assert_true(select.checkValidity(), "The first option is not considered a placeholder if it is located within an optgroup.");
var otherEmptyOption = document.createElement('option');
otherEmptyOption.value = "";
select.appendChild(otherEmptyOption);
otherEmptyOption.selected = true;
assert_equals(select.value, "", "The empty value should be set.");
assert_true(select.checkValidity(), "The empty option should be accepted as it is not the first option in the tree ordered list.");
}, "Placeholder label-like options within optgroup");
test(function() {
var select = document.createElement('select');
select.required = true;
select.size = 2;
var emptyOption = document.createElement('option');
select.appendChild(emptyOption);
assert_false(emptyOption.selected, "Display size is not 1, so the first option should not be selected.");
assert_false(select.checkValidity(), "If no options are selected the select must be seen as invalid.");
emptyOption.selected = true;
assert_true(select.checkValidity(), "If one option is selected, the select should be considered valid.");
var otherEmptyOption = document.createElement('option');
otherEmptyOption.value = "";
select.appendChild(otherEmptyOption);
otherEmptyOption.selected = true;
assert_false(emptyOption.selected, "Whenever an option has its selectiveness set to true, the other options must be set to false.");
otherEmptyOption.selected = false;
assert_false(otherEmptyOption.selected, "It should be possible to set the selectiveness to false with a display size more than one.");
assert_false(select.checkValidity(), "If no options are selected the select must be seen as invalid.");
}, "Validation on selects with display size set as more than one");
test(function() {
var select = document.createElement('select');
select.required = true;
select.multiple = true;
var emptyOption = document.createElement('option');
select.appendChild(emptyOption);
assert_false(select.checkValidity(), "If no options are selected the select must be seen as invalid.");
emptyOption.selected = true;
assert_true(select.checkValidity(), "If one option is selected, the select should be considered valid.");
var optgroup = document.createElement('optgroup');
optgroup.appendChild(emptyOption); // Move option to optgroup
select.appendChild(optgroup);
assert_true(select.checkValidity(), "If one option within an optgroup or not is selected, the select should be considered valid.");
}, "Validation on selects with multiple set");
</script>

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

@ -474,7 +474,7 @@ this.ExtensionData = class {
// Gecko-compatible variant. Currently, this means simply
// replacing underscores with hyphens.
normalizeLocaleCode(locale) {
return String.replace(locale, /_/g, "-");
return locale.replace(/_/g, "-");
}
// Reads the locale file for the given Gecko-compatible locale code, and

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

@ -122,7 +122,7 @@ function* testCookies(options) {
while (enum_.hasMoreElements()) {
cookies.push(enum_.getNext().QueryInterface(SpecialPowers.Ci.nsICookie2));
}
return cookies.sort((a, b) => String.localeCompare(a.name, b.name));
return cookies.sort((a, b) => a.name.localeCompare(b.name));
}
let cookies = getCookies(options.domain);

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

@ -1510,6 +1510,13 @@ extends="chrome://global/content/bindings/popup.xml#popup">
</xul:description>
</xul:hbox>
</content>
<implementation>
<constructor><![CDATA[
// Unlike other autocomplete items, the height of the insecure warning
// increases by wrapping.
this._handleOverflow();
]]></constructor>
</implementation>
</binding>
<binding id="autocomplete-richlistitem" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">

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

@ -4,9 +4,7 @@
this.EXPORTED_SYMBOLS = ["PrivateBrowsingUtils"];
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
Cu.import("resource://gre/modules/Services.jsm");
Components.utils.import("resource://gre/modules/Services.jsm");
const kAutoStartPref = "browser.privatebrowsing.autostart";
@ -14,11 +12,14 @@ const kAutoStartPref = "browser.privatebrowsing.autostart";
// line for the current session.
var gTemporaryAutoStartMode = false;
const Cc = Components.classes;
const Ci = Components.interfaces;
this.PrivateBrowsingUtils = {
// Rather than passing content windows to this function, please use
// isBrowserPrivate since it works with e10s.
isWindowPrivate: function pbu_isWindowPrivate(aWindow) {
if (!(aWindow instanceof Ci.nsIDOMChromeWindow)) {
if (!(aWindow instanceof Components.interfaces.nsIDOMChromeWindow)) {
dump("WARNING: content window passed to PrivateBrowsingUtils.isWindowPrivate. " +
"Use isContentWindowPrivate instead (but only for frame scripts).\n"
+ new Error().stack);
@ -44,15 +45,9 @@ this.PrivateBrowsingUtils = {
},
privacyContextFromWindow: function pbu_privacyContextFromWindow(aWindow) {
let context = { usePrivateBrowsing: false };
try {
context = aWindow.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebNavigation)
.QueryInterface(Ci.nsILoadContext);
} catch (ex) {
Cu.reportError(ex);
}
return context;
return aWindow.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebNavigation)
.QueryInterface(Ci.nsILoadContext);
},
addToTrackingAllowlist(aURI) {
@ -86,7 +81,7 @@ this.PrivateBrowsingUtils = {
},
whenHiddenPrivateWindowReady: function pbu_whenHiddenPrivateWindowReady(cb) {
Cu.import("resource://gre/modules/Timer.jsm");
Components.utils.import("resource://gre/modules/Timer.jsm");
let win = Services.appShell.hiddenPrivateDOMWindow;
function isNotLoaded() {

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

@ -28,7 +28,7 @@ function init() {
var richlist = document.getElementById("addonList");
var list = gArgs.list;
list.sort(function(a, b) { return String.localeCompare(a.name, b.name); });
list.sort((a, b) => String(a.name).localeCompare(b.name));
for (let listItem of list) {
let item = document.createElement("richlistitem");
item.setAttribute("name", listItem.name);

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

@ -1894,7 +1894,7 @@ var gCategories = {
continue;
// If the priorities are equal and the new type's name is earlier
// alphabetically then this is the insertion point
if (String.localeCompare(aName, node.getAttribute("name")) < 0)
if (String(aName).localeCompare(node.getAttribute("name")) < 0)
break;
}

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

@ -15,10 +15,19 @@
#include "nsINativeMenuService.h"
#include "nsString.h"
class nsMenuBarX;
class nsMenuX;
class nsIWidget;
class nsIContent;
// ApplicationMenuDelegate is used to receive Cocoa notifications.
@interface ApplicationMenuDelegate : NSObject<NSMenuDelegate>
{
nsMenuBarX* mApplicationMenu; // weak ref
}
- (id)initWithApplicationMenu:(nsMenuBarX*)aApplicationMenu;
@end
// The native menu service for creating native menu bars.
class nsNativeMenuServiceX : public nsINativeMenuService
{
@ -108,6 +117,8 @@ public:
void ForceNativeMenuReload(); // used for testing
static char GetLocalizedAccelKey(const char *shortcutID);
static void ResetNativeApplicationMenu();
void SetNeedsRebuild();
void ApplicationMenuOpened();
protected:
void ConstructNativeMenus();
@ -123,6 +134,8 @@ protected:
nsTArray<mozilla::UniquePtr<nsMenuX>> mMenuArray;
nsIWidget* mParentWindow; // [weak]
GeckoNSMenu* mNativeMenu; // root menu, representing entire menu bar
bool mNeedsRebuild;
ApplicationMenuDelegate* mApplicationMenuDelegate;
};
#endif // nsMenuBarX_h_

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

@ -55,8 +55,38 @@ NS_IMETHODIMP nsNativeMenuServiceX::CreateNativeMenuBar(nsIWidget* aParent, nsIC
return mb->Create(aParent, aMenuBarNode);
}
//
// ApplicationMenuDelegate Objective-C class
//
@implementation ApplicationMenuDelegate
- (id)initWithApplicationMenu:(nsMenuBarX*)aApplicationMenu
{
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
if ((self = [super init])) {
mApplicationMenu = aApplicationMenu;
}
return self;
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
}
- (void)menuWillOpen:(NSMenu*)menu
{
mApplicationMenu->ApplicationMenuOpened();
}
- (void)menuDidClose:(NSMenu*)menu
{
}
@end
nsMenuBarX::nsMenuBarX()
: nsMenuGroupOwnerX(), mParentWindow(nullptr)
: nsMenuGroupOwnerX(), mParentWindow(nullptr), mNeedsRebuild(false),
mApplicationMenuDelegate(nil)
{
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
@ -92,6 +122,10 @@ nsMenuBarX::~nsMenuBarX()
// before the registration hash table is destroyed.
mMenuArray.Clear();
if (mApplicationMenuDelegate) {
[mApplicationMenuDelegate release];
}
[mNativeMenu release];
NS_OBJC_END_TRY_ABORT_BLOCK;
@ -178,6 +212,11 @@ void nsMenuBarX::ConstructFallbackNativeMenus()
}
sApplicationMenu = [[[[NSApp mainMenu] itemAtIndex:0] submenu] retain];
if (!mApplicationMenuDelegate) {
mApplicationMenuDelegate =
[[ApplicationMenuDelegate alloc] initWithApplicationMenu:this];
}
[sApplicationMenu setDelegate:mApplicationMenuDelegate];
NSMenuItem* quitMenuItem = [[[NSMenuItem alloc] initWithTitle:labelStr
action:@selector(menuItemHit:)
keyEquivalent:keyStr] autorelease];
@ -472,6 +511,22 @@ void nsMenuBarX::ResetNativeApplicationMenu()
sApplicationMenuIsFallback = NO;
}
void nsMenuBarX::SetNeedsRebuild()
{
mNeedsRebuild = true;
}
void nsMenuBarX::ApplicationMenuOpened()
{
if (mNeedsRebuild) {
if (!mMenuArray.IsEmpty()) {
ResetNativeApplicationMenu();
CreateApplicationMenu(mMenuArray[0].get());
}
mNeedsRebuild = false;
}
}
// Hide the item in the menu by setting the 'hidden' attribute. Returns it in |outHiddenNode| so
// the caller can hang onto it if they so choose. It is acceptable to pass nsull
// for |outHiddenNode| if the caller doesn't care about the hidden node.
@ -644,6 +699,12 @@ nsresult nsMenuBarX::CreateApplicationMenu(nsMenuX* inMenu)
*/
if (sApplicationMenu) {
if (!mApplicationMenuDelegate) {
mApplicationMenuDelegate =
[[ApplicationMenuDelegate alloc] initWithApplicationMenu:this];
}
[sApplicationMenu setDelegate:mApplicationMenuDelegate];
// This code reads attributes we are going to care about from the DOM elements
NSMenuItem *itemBeingAdded = nil;

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

@ -450,8 +450,13 @@ void nsMenuX::MenuConstruct()
void nsMenuX::SetRebuild(bool aNeedsRebuild)
{
if (!gConstructingMenu)
if (!gConstructingMenu) {
mNeedsRebuild = aNeedsRebuild;
if (mParent->MenuObjectType() == eMenuBarObjectType) {
nsMenuBarX* mb = static_cast<nsMenuBarX*>(mParent);
mb->SetNeedsRebuild();
}
}
}
nsresult nsMenuX::SetEnabled(bool aIsEnabled)

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

@ -611,3 +611,22 @@ STUB(gdk_x11_window_get_drawable_impl)
STUB(gdkx_visual_get)
STUB(gtk_object_get_type)
#endif
#ifndef GTK3_SYMBOLS
// Only define the following workaround when using GTK3, which we detect
// by checking if GTK3 stubs are not provided.
#include <X11/Xlib.h>
// Bug 1271100
// We need to trick system Cairo into not using the XShm extension due to
// a race condition in it that results in frequent BadAccess errors. Cairo
// relies upon XShmQueryExtension to initially detect if XShm is available.
// So we define our own stub that always indicates XShm not being present.
// mozgtk loads before libXext/libcairo and so this stub will take priority.
// Our tree usage goes through xcb and remains unaffected by this.
MOZ_EXPORT Bool
XShmQueryExtension(Display* aDisplay)
{
return False;
}
#endif