mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 02:14:43 +00:00
Merge m-c to autoland a=merge
This commit is contained in:
commit
5eabc03c18
@ -23,6 +23,11 @@ var gBrowserThumbnails = {
|
||||
*/
|
||||
_timeouts: null,
|
||||
|
||||
/**
|
||||
* Top site URLs refresh timer.
|
||||
*/
|
||||
_topSiteURLsRefreshTimer: null,
|
||||
|
||||
/**
|
||||
* List of tab events we want to listen for.
|
||||
*/
|
||||
@ -47,6 +52,10 @@ var gBrowserThumbnails = {
|
||||
PageThumbs.removeExpirationFilter(this);
|
||||
gBrowser.removeTabsProgressListener(this);
|
||||
Services.prefs.removeObserver(this.PREF_DISK_CACHE_SSL, this);
|
||||
if (this._topSiteURLsRefreshTimer) {
|
||||
this._topSiteURLsRefreshTimer.cancel();
|
||||
this._topSiteURLsRefreshTimer = null;
|
||||
}
|
||||
|
||||
this._tabEvents.forEach(function(aEvent) {
|
||||
gBrowser.tabContainer.removeEventListener(aEvent, this);
|
||||
@ -75,6 +84,22 @@ var gBrowserThumbnails = {
|
||||
Services.prefs.getBoolPref(this.PREF_DISK_CACHE_SSL);
|
||||
},
|
||||
|
||||
clearTopSiteURLCache: function Thumbnails_clearTopSiteURLCache() {
|
||||
if (this._topSiteURLsRefreshTimer) {
|
||||
this._topSiteURLsRefreshTimer.cancel();
|
||||
this._topSiteURLsRefreshTimer = null;
|
||||
}
|
||||
// Delete the defined property
|
||||
delete this._topSiteURLs;
|
||||
XPCOMUtils.defineLazyGetter(this, "_topSiteURLs",
|
||||
Thumbnails_getTopSiteURLs);
|
||||
},
|
||||
|
||||
notify: function Thumbnails_notify(timer) {
|
||||
gBrowserThumbnails._topSiteURLsRefreshTimer = null;
|
||||
gBrowserThumbnails.clearTopSiteURLCache();
|
||||
},
|
||||
|
||||
filterForThumbnailExpiration:
|
||||
function Thumbnails_filterForThumbnailExpiration(aCallback) {
|
||||
aCallback(this._topSiteURLs);
|
||||
@ -125,14 +150,6 @@ var gBrowserThumbnails = {
|
||||
PageThumbs.shouldStoreThumbnail(aBrowser, aCallback);
|
||||
},
|
||||
|
||||
get _topSiteURLs() {
|
||||
return NewTabUtils.links.getLinks().reduce((urls, link) => {
|
||||
if (link)
|
||||
urls.push(link.url);
|
||||
return urls;
|
||||
}, []);
|
||||
},
|
||||
|
||||
_clearTimeout: function Thumbnails_clearTimeout(aBrowser) {
|
||||
if (this._timeouts.has(aBrowser)) {
|
||||
aBrowser.removeEventListener("scroll", this);
|
||||
@ -141,3 +158,22 @@ var gBrowserThumbnails = {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function Thumbnails_getTopSiteURLs() {
|
||||
// The _topSiteURLs getter can be expensive to run, but its return value can
|
||||
// change frequently on new profiles, so as a compromise we cache its return
|
||||
// value as a lazy getter for 1 minute every time it's called.
|
||||
gBrowserThumbnails._topSiteURLsRefreshTimer =
|
||||
Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
|
||||
gBrowserThumbnails._topSiteURLsRefreshTimer.initWithCallback(gBrowserThumbnails,
|
||||
60 * 1000,
|
||||
Ci.nsITimer.TYPE_ONE_SHOT);
|
||||
return NewTabUtils.links.getLinks().reduce((urls, link) => {
|
||||
if (link)
|
||||
urls.push(link.url);
|
||||
return urls;
|
||||
}, []);
|
||||
}
|
||||
|
||||
XPCOMUtils.defineLazyGetter(gBrowserThumbnails, "_topSiteURLs",
|
||||
Thumbnails_getTopSiteURLs);
|
||||
|
@ -163,7 +163,6 @@ PluginContent.prototype = {
|
||||
return;
|
||||
}
|
||||
|
||||
this._finishRecordingFlashPluginTelemetry();
|
||||
this.clearPluginCaches();
|
||||
this.haveShownNotification = false;
|
||||
},
|
||||
@ -548,10 +547,6 @@ PluginContent.prototype = {
|
||||
break;
|
||||
}
|
||||
|
||||
if (this._getPluginInfo(plugin).mimetype === FLASH_MIME_TYPE) {
|
||||
this._recordFlashPluginTelemetry(eventType, plugin);
|
||||
}
|
||||
|
||||
// Show the in-content UI if it's not too big. The crashed plugin handler already did this.
|
||||
let overlay = this.getPluginUI(plugin, "main");
|
||||
if (eventType != "PluginCrashed") {
|
||||
@ -583,49 +578,6 @@ PluginContent.prototype = {
|
||||
}
|
||||
},
|
||||
|
||||
_recordFlashPluginTelemetry(eventType, plugin) {
|
||||
if (!Services.telemetry.canRecordExtended) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.flashPluginStats) {
|
||||
this.flashPluginStats = {
|
||||
instancesCount: 0,
|
||||
plugins: new WeakSet()
|
||||
};
|
||||
}
|
||||
|
||||
if (!this.flashPluginStats.plugins.has(plugin)) {
|
||||
// Reporting plugin instance and its dimensions only once.
|
||||
this.flashPluginStats.plugins.add(plugin);
|
||||
|
||||
this.flashPluginStats.instancesCount++;
|
||||
|
||||
let pluginRect = plugin.getBoundingClientRect();
|
||||
Services.telemetry.getHistogramById("FLASH_PLUGIN_WIDTH")
|
||||
.add(pluginRect.width);
|
||||
Services.telemetry.getHistogramById("FLASH_PLUGIN_HEIGHT")
|
||||
.add(pluginRect.height);
|
||||
Services.telemetry.getHistogramById("FLASH_PLUGIN_AREA")
|
||||
.add(pluginRect.width * pluginRect.height);
|
||||
|
||||
let state = this._getPluginInfo(plugin).fallbackType;
|
||||
if (state === null) {
|
||||
state = Ci.nsIObjectLoadingContent.PLUGIN_UNSUPPORTED;
|
||||
}
|
||||
Services.telemetry.getHistogramById("FLASH_PLUGIN_STATES")
|
||||
.add(state);
|
||||
}
|
||||
},
|
||||
|
||||
_finishRecordingFlashPluginTelemetry() {
|
||||
if (this.flashPluginStats) {
|
||||
Services.telemetry.getHistogramById("FLASH_PLUGIN_INSTANCES_ON_PAGE")
|
||||
.add(this.flashPluginStats.instancesCount);
|
||||
delete this.flashPluginStats;
|
||||
}
|
||||
},
|
||||
|
||||
isKnownPlugin(objLoadingContent) {
|
||||
return (objLoadingContent.getContentTypeForMIMEType(objLoadingContent.actualType) ==
|
||||
Ci.nsIObjectLoadingContent.TYPE_PLUGIN);
|
||||
|
@ -127,29 +127,6 @@ ContentPrincipal::GetScriptLocation(nsACString &aStr)
|
||||
return mCodebase->GetSpec(aStr);
|
||||
}
|
||||
|
||||
static nsresult
|
||||
AssignFullSpecToOriginNoSuffix(nsIURI* aURI, nsACString& aOriginNoSuffix)
|
||||
{
|
||||
nsresult rv = aURI->GetAsciiSpec(aOriginNoSuffix);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// The origin, when taken from the spec, should not contain the ref part of
|
||||
// the URL.
|
||||
|
||||
int32_t pos = aOriginNoSuffix.FindChar('?');
|
||||
int32_t hashPos = aOriginNoSuffix.FindChar('#');
|
||||
|
||||
if (hashPos != kNotFound && (pos == kNotFound || hashPos < pos)) {
|
||||
pos = hashPos;
|
||||
}
|
||||
|
||||
if (pos != kNotFound) {
|
||||
aOriginNoSuffix.Truncate(pos);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* static */ nsresult
|
||||
ContentPrincipal::GenerateOriginNoSuffixFromURI(nsIURI* aURI,
|
||||
nsACString& aOriginNoSuffix)
|
||||
@ -183,7 +160,7 @@ ContentPrincipal::GenerateOriginNoSuffixFromURI(nsIURI* aURI,
|
||||
rv = NS_URIChainHasFlags(origin, nsIProtocolHandler::ORIGIN_IS_FULL_SPEC, &fullSpec);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (fullSpec) {
|
||||
return AssignFullSpecToOriginNoSuffix(origin, aOriginNoSuffix);
|
||||
return origin->GetAsciiSpec(aOriginNoSuffix);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -258,8 +235,24 @@ ContentPrincipal::GenerateOriginNoSuffixFromURI(nsIURI* aURI,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// Use the full spec.
|
||||
return AssignFullSpecToOriginNoSuffix(origin, aOriginNoSuffix);
|
||||
rv = aURI->GetAsciiSpec(aOriginNoSuffix);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// The origin, when taken from the spec, should not contain the ref part of
|
||||
// the URL.
|
||||
|
||||
int32_t pos = aOriginNoSuffix.FindChar('?');
|
||||
int32_t hashPos = aOriginNoSuffix.FindChar('#');
|
||||
|
||||
if (hashPos != kNotFound && (pos == kNotFound || hashPos < pos)) {
|
||||
pos = hashPos;
|
||||
}
|
||||
|
||||
if (pos != kNotFound) {
|
||||
aOriginNoSuffix.Truncate(pos);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -63,6 +63,11 @@
|
||||
#include "nsProxyRelease.h"
|
||||
#include "nsWeakReference.h"
|
||||
|
||||
#define OPEN_EVENT_STRING NS_LITERAL_STRING("open")
|
||||
#define MESSAGE_EVENT_STRING NS_LITERAL_STRING("message")
|
||||
#define ERROR_EVENT_STRING NS_LITERAL_STRING("error")
|
||||
#define CLOSE_EVENT_STRING NS_LITERAL_STRING("close")
|
||||
|
||||
using namespace mozilla::net;
|
||||
using namespace mozilla::dom::workers;
|
||||
|
||||
@ -781,7 +786,7 @@ WebSocketImpl::OnStart(nsISupports* aContext)
|
||||
RefPtr<WebSocket> webSocket = mWebSocket;
|
||||
|
||||
// Call 'onopen'
|
||||
rv = webSocket->CreateAndDispatchSimpleEvent(NS_LITERAL_STRING("open"));
|
||||
rv = webSocket->CreateAndDispatchSimpleEvent(OPEN_EVENT_STRING);
|
||||
if (NS_FAILED(rv)) {
|
||||
NS_WARNING("Failed to dispatch the open event");
|
||||
}
|
||||
@ -1881,7 +1886,7 @@ WebSocketImpl::DispatchConnectionCloseEvents()
|
||||
// Call 'onerror' if needed
|
||||
if (mFailed) {
|
||||
nsresult rv =
|
||||
webSocket->CreateAndDispatchSimpleEvent(NS_LITERAL_STRING("error"));
|
||||
webSocket->CreateAndDispatchSimpleEvent(ERROR_EVENT_STRING);
|
||||
if (NS_FAILED(rv)) {
|
||||
NS_WARNING("Failed to dispatch the error event");
|
||||
}
|
||||
@ -1993,7 +1998,7 @@ WebSocket::CreateAndDispatchMessageEvent(const nsACString& aData,
|
||||
|
||||
RefPtr<MessageEvent> event = new MessageEvent(this, nullptr, nullptr);
|
||||
|
||||
event->InitMessageEvent(nullptr, NS_LITERAL_STRING("message"), false, false,
|
||||
event->InitMessageEvent(nullptr, MESSAGE_EVENT_STRING, false, false,
|
||||
jsData, mImpl->mUTF16Origin, EmptyString(), nullptr,
|
||||
Sequence<OwningNonNull<MessagePort>>());
|
||||
event->SetTrusted(true);
|
||||
@ -2030,7 +2035,7 @@ WebSocket::CreateAndDispatchCloseEvent(bool aWasClean,
|
||||
init.mReason = aReason;
|
||||
|
||||
RefPtr<CloseEvent> event =
|
||||
CloseEvent::Constructor(this, NS_LITERAL_STRING("close"), init);
|
||||
CloseEvent::Constructor(this, CLOSE_EVENT_STRING, init);
|
||||
event->SetTrusted(true);
|
||||
|
||||
return DispatchDOMEvent(nullptr, event, nullptr, nullptr);
|
||||
@ -2150,10 +2155,10 @@ WebSocket::UpdateMustKeepAlive()
|
||||
{
|
||||
case CONNECTING:
|
||||
{
|
||||
if (mListenerManager->HasListenersFor(nsGkAtoms::onopen) ||
|
||||
mListenerManager->HasListenersFor(nsGkAtoms::onmessage) ||
|
||||
mListenerManager->HasListenersFor(nsGkAtoms::onerror) ||
|
||||
mListenerManager->HasListenersFor(nsGkAtoms::onclose)) {
|
||||
if (mListenerManager->HasListenersFor(OPEN_EVENT_STRING) ||
|
||||
mListenerManager->HasListenersFor(MESSAGE_EVENT_STRING) ||
|
||||
mListenerManager->HasListenersFor(ERROR_EVENT_STRING) ||
|
||||
mListenerManager->HasListenersFor(CLOSE_EVENT_STRING)) {
|
||||
shouldKeepAlive = true;
|
||||
}
|
||||
}
|
||||
@ -2162,9 +2167,9 @@ WebSocket::UpdateMustKeepAlive()
|
||||
case OPEN:
|
||||
case CLOSING:
|
||||
{
|
||||
if (mListenerManager->HasListenersFor(nsGkAtoms::onmessage) ||
|
||||
mListenerManager->HasListenersFor(nsGkAtoms::onerror) ||
|
||||
mListenerManager->HasListenersFor(nsGkAtoms::onclose) ||
|
||||
if (mListenerManager->HasListenersFor(MESSAGE_EVENT_STRING) ||
|
||||
mListenerManager->HasListenersFor(ERROR_EVENT_STRING) ||
|
||||
mListenerManager->HasListenersFor(CLOSE_EVENT_STRING) ||
|
||||
mOutgoingBufferedAmount != 0) {
|
||||
shouldKeepAlive = true;
|
||||
}
|
||||
|
@ -1961,7 +1961,7 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsDocument)
|
||||
l != &tmp->mDOMMediaQueryLists; ) {
|
||||
PRCList *next = PR_NEXT_LINK(l);
|
||||
MediaQueryList *mql = static_cast<MediaQueryList*>(l);
|
||||
mql->RemoveAllListeners();
|
||||
mql->Disconnect();
|
||||
l = next;
|
||||
}
|
||||
|
||||
|
@ -194,6 +194,10 @@ const kEventConstructors = {
|
||||
});
|
||||
},
|
||||
},
|
||||
MediaQueryListEvent: { create: function (aName, aProps) {
|
||||
return new MediaQueryListEvent(aName, aProps);
|
||||
},
|
||||
},
|
||||
MediaStreamEvent: { create: function (aName, aProps) {
|
||||
return new MediaStreamEvent(aName, aProps);
|
||||
},
|
||||
|
@ -637,6 +637,8 @@ var interfaceNamesInGlobalScope =
|
||||
"MediaList",
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
"MediaQueryList",
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
"MediaQueryListEvent",
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
"MediaRecorder",
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
|
@ -4,17 +4,21 @@
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* The origin of this IDL file is
|
||||
* http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface
|
||||
* https://drafts.csswg.org/cssom-view/#mediaquerylist
|
||||
*
|
||||
* Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C
|
||||
* liability, trademark and document use rules apply.
|
||||
*/
|
||||
|
||||
interface MediaQueryList {
|
||||
interface MediaQueryList : EventTarget {
|
||||
readonly attribute DOMString media;
|
||||
readonly attribute boolean matches;
|
||||
void addListener(MediaQueryListListener listener);
|
||||
void removeListener(MediaQueryListListener listener);
|
||||
};
|
||||
|
||||
callback MediaQueryListListener = void (MediaQueryList list);
|
||||
[Throws]
|
||||
void addListener(EventListener? listener);
|
||||
|
||||
[Throws]
|
||||
void removeListener(EventListener? listener);
|
||||
|
||||
attribute EventHandler onchange;
|
||||
};
|
||||
|
18
dom/webidl/MediaQueryListEvent.webidl
Normal file
18
dom/webidl/MediaQueryListEvent.webidl
Normal file
@ -0,0 +1,18 @@
|
||||
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* https://drafts.csswg.org/cssom-view/#mediaquerylistevent
|
||||
*/
|
||||
|
||||
[Constructor(DOMString type, optional MediaQueryListEventInit eventInitDict)]
|
||||
interface MediaQueryListEvent : Event {
|
||||
readonly attribute DOMString media;
|
||||
readonly attribute boolean matches;
|
||||
};
|
||||
|
||||
dictionary MediaQueryListEventInit : EventInit {
|
||||
DOMString media = "";
|
||||
boolean matches = false;
|
||||
};
|
@ -1077,6 +1077,7 @@ GENERATED_EVENTS_WEBIDL_FILES = [
|
||||
'HashChangeEvent.webidl',
|
||||
'HiddenPluginEvent.webidl',
|
||||
'ImageCaptureErrorEvent.webidl',
|
||||
'MediaQueryListEvent.webidl',
|
||||
'MediaStreamEvent.webidl',
|
||||
'MediaStreamTrackEvent.webidl',
|
||||
'OfflineAudioCompletionEvent.webidl',
|
||||
|
@ -1225,22 +1225,19 @@ function GetOption(options, property, type, values, fallback) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts a property value from the provided options object, converts it to a
|
||||
* Number value, checks whether it is in the allowed range, and fills in a
|
||||
* fallback value if necessary.
|
||||
* The abstract operation DefaultNumberOption converts value to a Number value,
|
||||
* checks whether it is in the allowed range, and fills in a fallback value if
|
||||
* necessary.
|
||||
*
|
||||
* Spec: ECMAScript Internationalization API Specification, 9.2.10.
|
||||
* Spec: ECMAScript Internationalization API Specification, 9.2.11.
|
||||
*/
|
||||
function GetNumberOption(options, property, minimum, maximum, fallback) {
|
||||
assert(typeof minimum === "number" && (minimum | 0) === minimum, "GetNumberOption");
|
||||
assert(typeof maximum === "number" && (maximum | 0) === maximum, "GetNumberOption");
|
||||
assert(typeof fallback === "number" && (fallback | 0) === fallback, "GetNumberOption");
|
||||
assert(minimum <= fallback && fallback <= maximum, "GetNumberOption");
|
||||
function DefaultNumberOption(value, minimum, maximum, fallback) {
|
||||
assert(typeof minimum === "number" && (minimum | 0) === minimum, "DefaultNumberOption");
|
||||
assert(typeof maximum === "number" && (maximum | 0) === maximum, "DefaultNumberOption");
|
||||
assert(typeof fallback === "number" && (fallback | 0) === fallback, "DefaultNumberOption");
|
||||
assert(minimum <= fallback && fallback <= maximum, "DefaultNumberOption");
|
||||
|
||||
// Step 1.
|
||||
var value = options[property];
|
||||
|
||||
// Step 2.
|
||||
if (value !== undefined) {
|
||||
value = ToNumber(value);
|
||||
if (Number_isNaN(value) || value < minimum || value > maximum)
|
||||
@ -1251,10 +1248,22 @@ function GetNumberOption(options, property, minimum, maximum, fallback) {
|
||||
return std_Math_floor(value) | 0;
|
||||
}
|
||||
|
||||
// Step 3.
|
||||
// Step 2.
|
||||
return fallback;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts a property value from the provided options object, converts it to a
|
||||
* Number value, checks whether it is in the allowed range, and fills in a
|
||||
* fallback value if necessary.
|
||||
*
|
||||
* Spec: ECMAScript Internationalization API Specification, 9.2.12.
|
||||
*/
|
||||
function GetNumberOption(options, property, minimum, maximum, fallback) {
|
||||
// Steps 1-3.
|
||||
return DefaultNumberOption(options[property], minimum, maximum, fallback);
|
||||
}
|
||||
|
||||
|
||||
/********** Property access for Intl objects **********/
|
||||
|
||||
@ -1939,25 +1948,25 @@ function SetNumberFormatDigitOptions(lazyData, options, mnfdDefault, mxfdDefault
|
||||
assert(typeof mxfdDefault === "number", "SetNumberFormatDigitOptions");
|
||||
assert(mnfdDefault <= mxfdDefault, "SetNumberFormatDigitOptions");
|
||||
|
||||
// Steps 4-6.
|
||||
// Steps 4-8.
|
||||
const mnid = GetNumberOption(options, "minimumIntegerDigits", 1, 21, 1);
|
||||
const mnfd = GetNumberOption(options, "minimumFractionDigits", 0, 20, mnfdDefault);
|
||||
const mxfdActualDefault = std_Math_max(mnfd, mxfdDefault);
|
||||
const mxfd = GetNumberOption(options, "maximumFractionDigits", mnfd, 20, mxfdActualDefault);
|
||||
|
||||
// Steps 7-8.
|
||||
// Steps 9-10.
|
||||
let mnsd = options.minimumSignificantDigits;
|
||||
let mxsd = options.maximumSignificantDigits;
|
||||
|
||||
// Steps 9-11.
|
||||
// Steps 11-13.
|
||||
lazyData.minimumIntegerDigits = mnid;
|
||||
lazyData.minimumFractionDigits = mnfd;
|
||||
lazyData.maximumFractionDigits = mxfd;
|
||||
|
||||
// Step 12.
|
||||
// Step 14.
|
||||
if (mnsd !== undefined || mxsd !== undefined) {
|
||||
mnsd = GetNumberOption(options, "minimumSignificantDigits", 1, 21, 1);
|
||||
mxsd = GetNumberOption(options, "maximumSignificantDigits", mnsd, 21, 21);
|
||||
mnsd = DefaultNumberOption(mnsd, 1, 21, 1);
|
||||
mxsd = DefaultNumberOption(mxsd, mnsd, 21, 21);
|
||||
lazyData.minimumSignificantDigits = mnsd;
|
||||
lazyData.maximumSignificantDigits = mxsd;
|
||||
}
|
||||
|
55
js/src/jit-test/tests/cacheir/add-function-prototype.js
Normal file
55
js/src/jit-test/tests/cacheir/add-function-prototype.js
Normal file
@ -0,0 +1,55 @@
|
||||
function checkPrototype(fun, proto, resolvesPrototype) {
|
||||
var desc = Object.getOwnPropertyDescriptor(fun, "prototype");
|
||||
assertEq(desc.value, proto);
|
||||
assertEq(desc.configurable, !resolvesPrototype);
|
||||
assertEq(desc.enumerable, !resolvesPrototype);
|
||||
assertEq(desc.writable, true);
|
||||
}
|
||||
function addPrototype(fun, proto, resolvesPrototype) {
|
||||
fun.prototype = proto;
|
||||
checkPrototype(fun, proto, resolvesPrototype);
|
||||
}
|
||||
function test() {
|
||||
for (var i=0; i<50; i++) {
|
||||
addPrototype(function() {}, i, true);
|
||||
addPrototype(function*() {}, i, true);
|
||||
addPrototype(function async() {}, i, true);
|
||||
// Builtins, arrow functions, bound functions don't have a default
|
||||
// prototype property.
|
||||
addPrototype(Math.abs, i, false);
|
||||
addPrototype(Array.prototype.map, i, false);
|
||||
addPrototype(() => 1, i, false);
|
||||
addPrototype((function() {}).bind(null), i, false);
|
||||
}
|
||||
|
||||
// Now test this with a different IC for each function type.
|
||||
for (var i=0; i<50; i++) {
|
||||
var f = function() {};
|
||||
f.prototype = i;
|
||||
checkPrototype(f, i, true);
|
||||
|
||||
f = function*() {};
|
||||
f.prototype = i;
|
||||
checkPrototype(f, i, true);
|
||||
|
||||
f = function async() {};
|
||||
f.prototype = i;
|
||||
checkPrototype(f, i, true);
|
||||
|
||||
Math.sin.prototype = i;
|
||||
checkPrototype(Math.sin, i, false);
|
||||
|
||||
Array.prototype.filter.prototype = i;
|
||||
checkPrototype(Array.prototype.filter, i, false);
|
||||
|
||||
f = () => 1;
|
||||
f.prototype = i;
|
||||
checkPrototype(f, i, false);
|
||||
|
||||
f = (function() {}).bind(null);
|
||||
f.prototype = i;
|
||||
checkPrototype(f, i, false);
|
||||
}
|
||||
|
||||
}
|
||||
test();
|
@ -3092,8 +3092,26 @@ SetPropIRGenerator::tryAttachAddSlotStub(HandleObjectGroup oldGroup, HandleShape
|
||||
}
|
||||
|
||||
// Watch out for resolve hooks.
|
||||
if (ClassMayResolveId(cx_->names(), obj->getClass(), id, obj))
|
||||
return false;
|
||||
if (ClassMayResolveId(cx_->names(), obj->getClass(), id, obj)) {
|
||||
// The JSFunction resolve hook defines a (non-configurable and
|
||||
// non-enumerable) |prototype| property on certain functions. Scripts
|
||||
// often assign a custom |prototype| object and we want to optimize
|
||||
// this |prototype| set and eliminate the default object allocation.
|
||||
//
|
||||
// We check group->maybeInterpretedFunction() here and guard on the
|
||||
// group. The group is unique for a particular function so this ensures
|
||||
// we don't add the default prototype property to functions that don't
|
||||
// have it.
|
||||
if (!obj->is<JSFunction>() ||
|
||||
!JSID_IS_ATOM(id, cx_->names().prototype) ||
|
||||
!oldGroup->maybeInterpretedFunction() ||
|
||||
!obj->as<JSFunction>().needsPrototypeProperty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
MOZ_ASSERT(!propShape->configurable());
|
||||
MOZ_ASSERT(!propShape->enumerable());
|
||||
}
|
||||
|
||||
// Also watch out for addProperty hooks. Ignore the Array addProperty hook,
|
||||
// because it doesn't do anything for non-index properties.
|
||||
@ -3115,9 +3133,14 @@ SetPropIRGenerator::tryAttachAddSlotStub(HandleObjectGroup oldGroup, HandleShape
|
||||
|
||||
// Otherwise, if there's no such property, watch out for a resolve hook
|
||||
// that would need to be invoked and thus prevent inlining of property
|
||||
// addition.
|
||||
if (ClassMayResolveId(cx_->names(), proto->getClass(), id, proto))
|
||||
// addition. Allow the JSFunction resolve hook as it only defines plain
|
||||
// data properties and we don't need to invoke it for objects on the
|
||||
// proto chain.
|
||||
if (ClassMayResolveId(cx_->names(), proto->getClass(), id, proto) &&
|
||||
!proto->is<JSFunction>())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Don't attach if we are adding a property to an object which the new
|
||||
|
@ -454,6 +454,33 @@ ResolveInterpretedFunctionPrototype(JSContext* cx, HandleFunction fun, HandleId
|
||||
JSPROP_PERMANENT | JSPROP_RESOLVING);
|
||||
}
|
||||
|
||||
bool
|
||||
JSFunction::needsPrototypeProperty()
|
||||
{
|
||||
/*
|
||||
* Built-in functions do not have a .prototype property per ECMA-262,
|
||||
* or (Object.prototype, Function.prototype, etc.) have that property
|
||||
* created eagerly.
|
||||
*
|
||||
* ES5 15.3.4.5: bound functions don't have a prototype property. The
|
||||
* isBuiltin() test covers this case because bound functions are native
|
||||
* (and thus built-in) functions by definition/construction.
|
||||
*
|
||||
* ES6 9.2.8 MakeConstructor defines the .prototype property on constructors.
|
||||
* Generators are not constructors, but they have a .prototype property anyway,
|
||||
* according to errata to ES6. See bug 1191486.
|
||||
*
|
||||
* Thus all of the following don't get a .prototype property:
|
||||
* - Methods (that are not class-constructors or generators)
|
||||
* - Arrow functions
|
||||
* - Function.prototype
|
||||
*/
|
||||
if (isBuiltin())
|
||||
return IsWrappedAsyncGenerator(this);
|
||||
|
||||
return isConstructor() || isStarGenerator() || isLegacyGenerator() || isAsync();
|
||||
}
|
||||
|
||||
static bool
|
||||
fun_mayResolve(const JSAtomState& names, jsid id, JSObject*)
|
||||
{
|
||||
@ -473,32 +500,8 @@ fun_resolve(JSContext* cx, HandleObject obj, HandleId id, bool* resolvedp)
|
||||
RootedFunction fun(cx, &obj->as<JSFunction>());
|
||||
|
||||
if (JSID_IS_ATOM(id, cx->names().prototype)) {
|
||||
/*
|
||||
* Built-in functions do not have a .prototype property per ECMA-262,
|
||||
* or (Object.prototype, Function.prototype, etc.) have that property
|
||||
* created eagerly.
|
||||
*
|
||||
* ES5 15.3.4.5: bound functions don't have a prototype property. The
|
||||
* isBuiltin() test covers this case because bound functions are native
|
||||
* (and thus built-in) functions by definition/construction.
|
||||
*
|
||||
* ES6 9.2.8 MakeConstructor defines the .prototype property on constructors.
|
||||
* Generators are not constructors, but they have a .prototype property anyway,
|
||||
* according to errata to ES6. See bug 1191486.
|
||||
*
|
||||
* Thus all of the following don't get a .prototype property:
|
||||
* - Methods (that are not class-constructors or generators)
|
||||
* - Arrow functions
|
||||
* - Function.prototype
|
||||
*/
|
||||
if (!IsWrappedAsyncGenerator(fun)) {
|
||||
if (fun->isBuiltin())
|
||||
return true;
|
||||
if (!fun->isConstructor()) {
|
||||
if (!fun->isStarGenerator() && !fun->isLegacyGenerator() && !fun->isAsync())
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (!fun->needsPrototypeProperty())
|
||||
return true;
|
||||
|
||||
if (!ResolveInterpretedFunctionPrototype(cx, fun, id))
|
||||
return false;
|
||||
|
@ -237,6 +237,7 @@ class JSFunction : public js::NativeObject
|
||||
}
|
||||
|
||||
bool isBuiltinFunctionConstructor();
|
||||
bool needsPrototypeProperty();
|
||||
|
||||
/* Returns the strictness of this function, which must be interpreted. */
|
||||
bool strict() const {
|
||||
|
@ -867,6 +867,9 @@ skip script test262/language/statements/async-generator/yield-star-async-next.js
|
||||
skip script test262/language/statements/async-generator/yield-star-async-return.js
|
||||
skip script test262/language/statements/async-generator/yield-star-async-throw.js
|
||||
|
||||
# https://github.com/tc39/test262/pull/947
|
||||
skip script test262/intl402/NumberFormat/11.1.1_32.js
|
||||
|
||||
# https://github.com/tc39/test262/pull/947
|
||||
skip script test262/intl402/DateTimeFormat/prototype/formatToParts/length.js
|
||||
|
||||
|
@ -10993,8 +10993,10 @@ PresShell::AddSizeOfIncludingThis(MallocSizeOf aMallocSizeOf,
|
||||
|
||||
if (nsStyleSet* styleSet = StyleSet()->GetAsGecko()) {
|
||||
*aStyleSetsSize += styleSet->SizeOfIncludingThis(aMallocSizeOf);
|
||||
} else if (ServoStyleSet* styleSet = StyleSet()->GetAsServo()) {
|
||||
*aStyleSetsSize += styleSet->SizeOfIncludingThis(aMallocSizeOf);
|
||||
} else {
|
||||
NS_WARNING("ServoStyleSets do not support memory measurements yet");
|
||||
MOZ_CRASH();
|
||||
}
|
||||
|
||||
*aTextRunsSize += SizeOfTextRuns(aMallocSizeOf);
|
||||
|
@ -2094,33 +2094,13 @@ nsPresContext::MediaFeatureValuesChanged(nsRestyleHint aRestyleHint,
|
||||
|
||||
if (!PR_CLIST_IS_EMPTY(mDocument->MediaQueryLists())) {
|
||||
// We build a list of all the notifications we're going to send
|
||||
// before we send any of them. (The spec says the notifications
|
||||
// should be a queued task, so any removals that happen during the
|
||||
// notifications shouldn't affect what gets notified.) Furthermore,
|
||||
// we hold strong pointers to everything we're going to make
|
||||
// notification calls to, since each notification involves calling
|
||||
// arbitrary script that might otherwise destroy these objects, or,
|
||||
// for that matter, |this|.
|
||||
//
|
||||
// Note that we intentionally send the notifications to media query
|
||||
// list in the order they were created and, for each list, to the
|
||||
// listeners in the order added.
|
||||
nsTArray<MediaQueryList::HandleChangeData> notifyList;
|
||||
// before we send any of them.
|
||||
for (PRCList *l = PR_LIST_HEAD(mDocument->MediaQueryLists());
|
||||
l != mDocument->MediaQueryLists(); l = PR_NEXT_LINK(l)) {
|
||||
nsAutoMicroTask mt;
|
||||
MediaQueryList *mql = static_cast<MediaQueryList*>(l);
|
||||
mql->MediumFeaturesChanged(notifyList);
|
||||
mql->MaybeNotify();
|
||||
}
|
||||
|
||||
if (!notifyList.IsEmpty()) {
|
||||
for (uint32_t i = 0, i_end = notifyList.Length(); i != i_end; ++i) {
|
||||
nsAutoMicroTask mt;
|
||||
MediaQueryList::HandleChangeData &d = notifyList[i];
|
||||
d.callback->Call(*d.mql);
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE: When |notifyList| goes out of scope, our destructor could run.
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -9976,15 +9976,11 @@ nsFrame::BoxReflow(nsBoxLayoutState& aState,
|
||||
parentSize.width += margin.LeftRight();
|
||||
|
||||
nsIFrame *parentFrame = GetParent();
|
||||
nsFrameState savedState = parentFrame->GetStateBits();
|
||||
WritingMode parentWM = parentFrame->GetWritingMode();
|
||||
ReflowInput
|
||||
parentReflowInput(aPresContext, parentFrame, aRenderingContext,
|
||||
LogicalSize(parentWM, parentSize),
|
||||
ReflowInput::DUMMY_PARENT_REFLOW_STATE);
|
||||
const nsFrameState bitsToLeaveUntouched = NS_FRAME_HAS_PROPERTIES;
|
||||
parentFrame->RemoveStateBits(~bitsToLeaveUntouched);
|
||||
parentFrame->AddStateBits(savedState & ~bitsToLeaveUntouched);
|
||||
|
||||
// This may not do very much useful, but it's probably worth trying.
|
||||
if (parentSize.width != NS_INTRINSICSIZE)
|
||||
|
@ -192,9 +192,11 @@ CSSStyleSheet::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
|
||||
// is worthwhile:
|
||||
// - s->mRuleCollection
|
||||
// - s->mRuleProcessors
|
||||
// - s->mStyleSets
|
||||
//
|
||||
// The following members are not measured:
|
||||
// - s->mOwnerRule, because it's non-owning
|
||||
// - s->mScopeElement, because it's non-owning
|
||||
|
||||
s = s->mNext ? s->mNext->AsGecko() : nullptr;
|
||||
}
|
||||
|
@ -7,19 +7,25 @@
|
||||
/* implements DOM interface for querying and observing media queries */
|
||||
|
||||
#include "mozilla/dom/MediaQueryList.h"
|
||||
#include "mozilla/dom/MediaQueryListEvent.h"
|
||||
#include "mozilla/dom/EventTarget.h"
|
||||
#include "mozilla/dom/EventTargetBinding.h"
|
||||
#include "nsPresContext.h"
|
||||
#include "nsMediaList.h"
|
||||
#include "nsCSSParser.h"
|
||||
#include "nsIDocument.h"
|
||||
|
||||
#define ONCHANGE_STRING NS_LITERAL_STRING("change")
|
||||
|
||||
namespace mozilla {
|
||||
namespace dom {
|
||||
|
||||
MediaQueryList::MediaQueryList(nsIDocument *aDocument,
|
||||
const nsAString &aMediaQueryList)
|
||||
: mDocument(aDocument),
|
||||
mMediaList(new nsMediaList),
|
||||
mMatchesValid(false)
|
||||
: mDocument(aDocument)
|
||||
, mMediaList(new nsMediaList)
|
||||
, mMatchesValid(false)
|
||||
, mIsKeptAlive(false)
|
||||
{
|
||||
PR_INIT_CLIST(this);
|
||||
|
||||
@ -36,30 +42,26 @@ MediaQueryList::~MediaQueryList()
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_CLASS(MediaQueryList)
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(MediaQueryList)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(MediaQueryList,
|
||||
DOMEventTargetHelper)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDocument)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCallbacks)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(MediaQueryList)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(MediaQueryList,
|
||||
DOMEventTargetHelper)
|
||||
if (tmp->mDocument) {
|
||||
PR_REMOVE_LINK(tmp);
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK(mDocument)
|
||||
}
|
||||
tmp->RemoveAllListeners();
|
||||
tmp->Disconnect();
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_TRACE_WRAPPERCACHE(MediaQueryList)
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(MediaQueryList)
|
||||
NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN(MediaQueryList)
|
||||
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
|
||||
NS_INTERFACE_MAP_ENTRY(nsISupports)
|
||||
NS_INTERFACE_MAP_ENTRIES_CYCLE_COLLECTION(MediaQueryList)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(MediaQueryList)
|
||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(MediaQueryList)
|
||||
NS_IMPL_ADDREF_INHERITED(MediaQueryList, DOMEventTargetHelper)
|
||||
NS_IMPL_RELEASE_INHERITED(MediaQueryList, DOMEventTargetHelper)
|
||||
|
||||
void
|
||||
MediaQueryList::GetMedia(nsAString &aMedia)
|
||||
@ -80,57 +82,124 @@ MediaQueryList::Matches()
|
||||
}
|
||||
|
||||
void
|
||||
MediaQueryList::AddListener(MediaQueryListListener& aListener)
|
||||
MediaQueryList::AddListener(EventListener* aListener, ErrorResult& aRv)
|
||||
{
|
||||
if (!HasListeners()) {
|
||||
// When we have listeners, the pres context owns a reference to
|
||||
// this. This is a cyclic reference that can only be broken by
|
||||
// cycle collection.
|
||||
NS_ADDREF_THIS();
|
||||
if (!aListener) {
|
||||
return;
|
||||
}
|
||||
|
||||
AddEventListenerOptionsOrBoolean options;
|
||||
options.SetAsBoolean() = false;
|
||||
|
||||
AddEventListener(ONCHANGE_STRING, aListener, options, false, aRv);
|
||||
}
|
||||
|
||||
void
|
||||
MediaQueryList::AddEventListener(const nsAString& aType,
|
||||
EventListener* aCallback,
|
||||
const AddEventListenerOptionsOrBoolean& aOptions,
|
||||
const dom::Nullable<bool>& aWantsUntrusted,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
if (!mMatchesValid) {
|
||||
MOZ_ASSERT(!HasListeners(),
|
||||
"when listeners present, must keep mMatches current");
|
||||
RecomputeMatches();
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < mCallbacks.Length(); ++i) {
|
||||
if (aListener == *mCallbacks[i]) {
|
||||
// Already registered
|
||||
return;
|
||||
}
|
||||
DOMEventTargetHelper::AddEventListener(aType, aCallback, aOptions,
|
||||
aWantsUntrusted, aRv);
|
||||
|
||||
if (aRv.Failed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mCallbacks.AppendElement(&aListener, fallible)) {
|
||||
if (!HasListeners()) {
|
||||
// Append failed; undo the AddRef above.
|
||||
NS_RELEASE_THIS();
|
||||
}
|
||||
}
|
||||
UpdateMustKeepAlive();
|
||||
}
|
||||
|
||||
void
|
||||
MediaQueryList::RemoveListener(MediaQueryListListener& aListener)
|
||||
MediaQueryList::RemoveListener(EventListener* aListener, ErrorResult& aRv)
|
||||
{
|
||||
for (uint32_t i = 0; i < mCallbacks.Length(); ++i) {
|
||||
if (aListener == *mCallbacks[i]) {
|
||||
mCallbacks.RemoveElementAt(i);
|
||||
if (!HasListeners()) {
|
||||
// See NS_ADDREF_THIS() in AddListener.
|
||||
NS_RELEASE_THIS();
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (!aListener) {
|
||||
return;
|
||||
}
|
||||
|
||||
EventListenerOptionsOrBoolean options;
|
||||
options.SetAsBoolean() = false;
|
||||
|
||||
RemoveEventListener(ONCHANGE_STRING, aListener, options, aRv);
|
||||
}
|
||||
|
||||
void
|
||||
MediaQueryList::RemoveAllListeners()
|
||||
MediaQueryList::RemoveEventListener(const nsAString& aType,
|
||||
EventListener* aCallback,
|
||||
const EventListenerOptionsOrBoolean& aOptions,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
bool hadListeners = HasListeners();
|
||||
mCallbacks.Clear();
|
||||
if (hadListeners) {
|
||||
DOMEventTargetHelper::RemoveEventListener(aType, aCallback, aOptions, aRv);
|
||||
|
||||
if (aRv.Failed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
UpdateMustKeepAlive();
|
||||
}
|
||||
|
||||
EventHandlerNonNull*
|
||||
MediaQueryList::GetOnchange()
|
||||
{
|
||||
if (NS_IsMainThread()) {
|
||||
return GetEventHandler(nsGkAtoms::onchange, EmptyString());
|
||||
}
|
||||
return GetEventHandler(nullptr, ONCHANGE_STRING);
|
||||
}
|
||||
|
||||
void
|
||||
MediaQueryList::SetOnchange(EventHandlerNonNull* aCallback)
|
||||
{
|
||||
if (NS_IsMainThread()) {
|
||||
SetEventHandler(nsGkAtoms::onchange, EmptyString(), aCallback);
|
||||
} else {
|
||||
SetEventHandler(nullptr, ONCHANGE_STRING, aCallback);
|
||||
}
|
||||
|
||||
UpdateMustKeepAlive();
|
||||
}
|
||||
|
||||
void
|
||||
MediaQueryList::UpdateMustKeepAlive()
|
||||
{
|
||||
bool toKeepAlive = HasListeners();
|
||||
if (toKeepAlive == mIsKeptAlive) {
|
||||
return;
|
||||
}
|
||||
|
||||
// When we have listeners, the pres context owns a reference to
|
||||
// this. This is a cyclic reference that can only be broken by
|
||||
// cycle collection.
|
||||
|
||||
mIsKeptAlive = toKeepAlive;
|
||||
|
||||
if (toKeepAlive) {
|
||||
NS_ADDREF_THIS();
|
||||
} else {
|
||||
NS_RELEASE_THIS();
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
MediaQueryList::HasListeners()
|
||||
{
|
||||
return HasListenersFor(ONCHANGE_STRING);
|
||||
}
|
||||
|
||||
void
|
||||
MediaQueryList::Disconnect()
|
||||
{
|
||||
DisconnectFromOwner();
|
||||
|
||||
if (mIsKeptAlive) {
|
||||
mIsKeptAlive = false;
|
||||
// See NS_ADDREF_THIS() in AddListener.
|
||||
NS_RELEASE_THIS();
|
||||
}
|
||||
@ -169,27 +238,6 @@ MediaQueryList::RecomputeMatches()
|
||||
mMatchesValid = true;
|
||||
}
|
||||
|
||||
void
|
||||
MediaQueryList::MediumFeaturesChanged(
|
||||
nsTArray<HandleChangeData>& aListenersToNotify)
|
||||
{
|
||||
mMatchesValid = false;
|
||||
|
||||
if (HasListeners()) {
|
||||
bool oldMatches = mMatches;
|
||||
RecomputeMatches();
|
||||
if (mMatches != oldMatches) {
|
||||
for (uint32_t i = 0, i_end = mCallbacks.Length(); i != i_end; ++i) {
|
||||
HandleChangeData *d = aListenersToNotify.AppendElement(fallible);
|
||||
if (d) {
|
||||
d->mql = this;
|
||||
d->callback = mCallbacks[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nsISupports*
|
||||
MediaQueryList::GetParentObject() const
|
||||
{
|
||||
@ -202,5 +250,36 @@ MediaQueryList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
|
||||
return MediaQueryListBinding::Wrap(aCx, this, aGivenProto);
|
||||
}
|
||||
|
||||
void
|
||||
MediaQueryList::MaybeNotify()
|
||||
{
|
||||
mMatchesValid = false;
|
||||
|
||||
if (!HasListeners()) {
|
||||
return;
|
||||
}
|
||||
|
||||
bool oldMatches = mMatches;
|
||||
RecomputeMatches();
|
||||
|
||||
// No need to notify the change.
|
||||
if (mMatches == oldMatches) {
|
||||
return;
|
||||
}
|
||||
|
||||
MediaQueryListEventInit init;
|
||||
init.mBubbles = false;
|
||||
init.mCancelable = false;
|
||||
init.mMatches = mMatches;
|
||||
mMediaList->GetText(init.mMedia);
|
||||
|
||||
RefPtr<MediaQueryListEvent> event =
|
||||
MediaQueryListEvent::Constructor(this, ONCHANGE_STRING, init);
|
||||
event->SetTrusted(true);
|
||||
|
||||
bool dummy;
|
||||
DispatchEvent(event, &dummy);
|
||||
}
|
||||
|
||||
} // namespace dom
|
||||
} // namespace mozilla
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "prclist.h"
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "nsWrapperCache.h"
|
||||
#include "mozilla/DOMEventTargetHelper.h"
|
||||
#include "mozilla/dom/MediaQueryListBinding.h"
|
||||
|
||||
class nsIDocument;
|
||||
@ -24,8 +25,7 @@ class nsMediaList;
|
||||
namespace mozilla {
|
||||
namespace dom {
|
||||
|
||||
class MediaQueryList final : public nsISupports,
|
||||
public nsWrapperCache,
|
||||
class MediaQueryList final : public DOMEventTargetHelper,
|
||||
public PRCList
|
||||
{
|
||||
public:
|
||||
@ -37,34 +37,46 @@ private:
|
||||
~MediaQueryList();
|
||||
|
||||
public:
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(MediaQueryList)
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MediaQueryList, DOMEventTargetHelper)
|
||||
|
||||
nsISupports* GetParentObject() const;
|
||||
|
||||
struct HandleChangeData {
|
||||
RefPtr<MediaQueryList> mql;
|
||||
RefPtr<mozilla::dom::MediaQueryListListener> callback;
|
||||
};
|
||||
|
||||
// Appends listeners that need notification to aListenersToNotify
|
||||
void MediumFeaturesChanged(nsTArray<HandleChangeData>& aListenersToNotify);
|
||||
|
||||
bool HasListeners() const { return !mCallbacks.IsEmpty(); }
|
||||
|
||||
void RemoveAllListeners();
|
||||
void MaybeNotify();
|
||||
|
||||
JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
// WebIDL methods
|
||||
void GetMedia(nsAString& aMedia);
|
||||
bool Matches();
|
||||
void AddListener(mozilla::dom::MediaQueryListListener& aListener);
|
||||
void RemoveListener(mozilla::dom::MediaQueryListListener& aListener);
|
||||
void AddListener(EventListener* aListener, ErrorResult& aRv);
|
||||
void RemoveListener(EventListener* aListener, ErrorResult& aRv);
|
||||
|
||||
EventHandlerNonNull* GetOnchange();
|
||||
void SetOnchange(EventHandlerNonNull* aCallback);
|
||||
|
||||
using nsIDOMEventTarget::AddEventListener;
|
||||
using nsIDOMEventTarget::RemoveEventListener;
|
||||
|
||||
virtual void AddEventListener(const nsAString& aType,
|
||||
EventListener* aCallback,
|
||||
const AddEventListenerOptionsOrBoolean& aOptions,
|
||||
const Nullable<bool>& aWantsUntrusted,
|
||||
ErrorResult& aRv) override;
|
||||
virtual void RemoveEventListener(const nsAString& aType,
|
||||
EventListener* aCallback,
|
||||
const EventListenerOptionsOrBoolean& aOptions,
|
||||
ErrorResult& aRv) override;
|
||||
|
||||
bool HasListeners();
|
||||
|
||||
void Disconnect();
|
||||
|
||||
private:
|
||||
void RecomputeMatches();
|
||||
|
||||
void UpdateMustKeepAlive();
|
||||
|
||||
// We only need a pointer to the document to support lazy
|
||||
// reevaluation following dynamic changes. However, this lazy
|
||||
// reevaluation is perhaps somewhat important, since some usage
|
||||
@ -84,7 +96,7 @@ private:
|
||||
RefPtr<nsMediaList> mMediaList;
|
||||
bool mMatches;
|
||||
bool mMatchesValid;
|
||||
nsTArray<RefPtr<mozilla::dom::MediaQueryListListener>> mCallbacks;
|
||||
bool mIsKeptAlive;
|
||||
};
|
||||
|
||||
} // namespace dom
|
||||
|
@ -171,8 +171,14 @@ ServoStyleRule::Clone() const
|
||||
size_t
|
||||
ServoStyleRule::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
|
||||
{
|
||||
// TODO Implement this!
|
||||
return aMallocSizeOf(this);
|
||||
size_t n = aMallocSizeOf(this);
|
||||
|
||||
// Measurement of the following members may be added later if DMD finds it is
|
||||
// worthwhile:
|
||||
// - mRawRule
|
||||
// - mDecls
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -104,6 +104,23 @@ ServoStyleSet::Shutdown()
|
||||
mRawSet = nullptr;
|
||||
}
|
||||
|
||||
size_t
|
||||
ServoStyleSet::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
|
||||
{
|
||||
size_t n = aMallocSizeOf(this);
|
||||
|
||||
// Measurement of the following members may be added later if DMD finds it is
|
||||
// worthwhile:
|
||||
// - mRawSet
|
||||
// - mSheets
|
||||
// - mNonInheritingStyleContexts
|
||||
//
|
||||
// The following members are not measured:
|
||||
// - mPresContext, because it a non-owning pointer
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
bool
|
||||
ServoStyleSet::GetAuthorStyleDisabled() const
|
||||
{
|
||||
|
@ -92,6 +92,8 @@ public:
|
||||
void BeginShutdown();
|
||||
void Shutdown();
|
||||
|
||||
size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
|
||||
|
||||
bool GetAuthorStyleDisabled() const;
|
||||
nsresult SetAuthorStyleDisabled(bool aStyleDisabled);
|
||||
|
||||
|
@ -30,6 +30,16 @@ ServoStyleSheetInner::ServoStyleSheetInner(CORSMode aCORSMode,
|
||||
{
|
||||
}
|
||||
|
||||
size_t
|
||||
ServoStyleSheetInner::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
|
||||
{
|
||||
size_t n = aMallocSizeOf(this);
|
||||
|
||||
// XXX: need to measure mSheet
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
ServoStyleSheet::ServoStyleSheet(css::SheetParsingMode aParsingMode,
|
||||
CORSMode aCORSMode,
|
||||
net::ReferrerPolicy aReferrerPolicy,
|
||||
@ -233,4 +243,25 @@ ServoStyleSheet::InsertRuleIntoGroupInternal(const nsAString& aRule,
|
||||
return rules->InsertRule(aRule, aIndex);
|
||||
}
|
||||
|
||||
size_t
|
||||
ServoStyleSheet::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
|
||||
{
|
||||
size_t n = StyleSheet::SizeOfIncludingThis(aMallocSizeOf);
|
||||
const ServoStyleSheet* s = this;
|
||||
while (s) {
|
||||
// See the comment in CSSStyleSheet::SizeOfIncludingThis() for an
|
||||
// explanation of this.
|
||||
if (s->Inner()->mSheets.LastElement() == s) {
|
||||
n += s->Inner()->SizeOfIncludingThis(aMallocSizeOf);
|
||||
}
|
||||
|
||||
// Measurement of the following members may be added later if DMD finds it
|
||||
// is worthwhile:
|
||||
// - s->mRuleList
|
||||
|
||||
s = s->mNext ? s->mNext->AsServo() : nullptr;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
@ -33,6 +33,8 @@ struct ServoStyleSheetInner : public StyleSheetInfo
|
||||
ReferrerPolicy aReferrerPolicy,
|
||||
const dom::SRIMetadata& aIntegrity);
|
||||
|
||||
size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const;
|
||||
|
||||
RefPtr<const RawServoStyleSheet> mSheet;
|
||||
// XXX StyleSheetInfo already has mSheetURI, mBaseURI, and mPrincipal.
|
||||
// Can we somehow replace them with URLExtraData directly? The issue
|
||||
@ -123,6 +125,8 @@ protected:
|
||||
|
||||
void EnabledStateChangedInternal() {}
|
||||
|
||||
size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const override;
|
||||
|
||||
private:
|
||||
ServoStyleSheet(const ServoStyleSheet& aCopy,
|
||||
ServoStyleSheet* aParentToUse,
|
||||
|
@ -41,14 +41,18 @@ function run() {
|
||||
str: str,
|
||||
mql: subwin.matchMedia(str),
|
||||
notifyCount: 0,
|
||||
listener: function(mql) {
|
||||
is(mql, obj.mql,
|
||||
listener: function(event) {
|
||||
ok(event instanceof MediaQueryListEvent,
|
||||
"correct argument to listener: " + obj.str);
|
||||
is(event.media, obj.mql.media,
|
||||
"correct media in the event: " + obj.str);
|
||||
is(event.target, obj.mql,
|
||||
"correct target in the event: " + obj.str);
|
||||
++obj.notifyCount;
|
||||
// Test the last match result only on odd
|
||||
// notifications.
|
||||
if (obj.notifyCount & 1) {
|
||||
obj.lastOddMatchResult = mql.matches;
|
||||
obj.lastOddMatchResult = event.target.matches;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -151,13 +155,13 @@ function run() {
|
||||
(function() {
|
||||
var received = [];
|
||||
var received_mql = [];
|
||||
function listener1(mql) {
|
||||
function listener1(event) {
|
||||
received.push(1);
|
||||
received_mql.push(mql);
|
||||
received_mql.push(event.target);
|
||||
}
|
||||
function listener2(mql) {
|
||||
function listener2(event) {
|
||||
received.push(2);
|
||||
received_mql.push(mql);
|
||||
received_mql.push(event.target);
|
||||
}
|
||||
|
||||
iframe.style.width = "200px";
|
||||
@ -224,10 +228,10 @@ function run() {
|
||||
received = [];
|
||||
received_mql = [];
|
||||
|
||||
function removing_listener(mql) {
|
||||
function removing_listener(event) {
|
||||
received.push(3);
|
||||
received_mql.push(mql);
|
||||
mql.removeListener(listener2);
|
||||
received_mql.push(event.target);
|
||||
event.target.removeListener(listener2);
|
||||
mql2.removeListener(listener1);
|
||||
}
|
||||
|
||||
@ -238,17 +242,13 @@ function run() {
|
||||
iframe.style.width = "100px";
|
||||
subroot.offsetWidth; // flush layout
|
||||
|
||||
// mql(1, 3, 2) mql2(1)
|
||||
is(JSON.stringify(received), "[1,3,2,1]",
|
||||
// mql(1, 3)
|
||||
is(JSON.stringify(received), "[1,3]",
|
||||
"listeners still notified after removed if change was before");
|
||||
is(received_mql[0], mql,
|
||||
"notification order (removal tests)");
|
||||
is(received_mql[1], mql,
|
||||
"notification order (removal tests)");
|
||||
is(received_mql[2], mql,
|
||||
"notification order (removal tests)");
|
||||
is(received_mql[3], mql2,
|
||||
"notification order (removal tests)");
|
||||
received = [];
|
||||
received_mql = [];
|
||||
|
||||
@ -264,28 +264,6 @@ function run() {
|
||||
"notification order (removal tests)");
|
||||
})();
|
||||
|
||||
/* Bug 716751: null-dereference crash */
|
||||
(function() {
|
||||
iframe.style.width = "200px";
|
||||
subroot.offsetWidth; // flush layout
|
||||
|
||||
var mql = subwin.matchMedia("(min-width: 150px)");
|
||||
SimpleTest.doesThrow(function() {
|
||||
mql.addListener(null);
|
||||
}, "expected an exception");
|
||||
|
||||
iframe.style.width = "100px";
|
||||
subroot.offsetWidth; // flush layout
|
||||
// With the bug, we crash here. No need for test assertions.
|
||||
|
||||
SimpleTest.doesThrow(function() {
|
||||
mql.removeListener(null);
|
||||
}, "expected an exception");
|
||||
SimpleTest.doesThrow(function() {
|
||||
mql.removeListener(null);
|
||||
}, "expected an exception");
|
||||
})();
|
||||
|
||||
/* Bug 753777: test that things work in a freshly-created iframe */
|
||||
(function() {
|
||||
var iframe = document.createElement("iframe");
|
||||
@ -303,7 +281,7 @@ function run() {
|
||||
var gc_received = [];
|
||||
(function() {
|
||||
var received = [];
|
||||
var listener1 = function(mql) {
|
||||
var listener1 = function(event) {
|
||||
gc_received.push(1);
|
||||
}
|
||||
|
||||
@ -337,7 +315,7 @@ function run() {
|
||||
|
||||
/* Bug 1270626: listeners that throw exceptions */
|
||||
function bug1270626() {
|
||||
var throwingListener = function(mql) {
|
||||
var throwingListener = function(event) {
|
||||
throw "error";
|
||||
}
|
||||
|
||||
|
@ -2307,8 +2307,7 @@ audiounit_setup_stream(cubeb_stream * stm)
|
||||
|
||||
AudioDeviceID in_dev = stm->input_device;
|
||||
AudioDeviceID out_dev = stm->output_device;
|
||||
if (has_input(stm) && has_output(stm) &&
|
||||
!getenv("CUBEB_AUDIOUNIT_DISABLE_AGGREGATE_DEVICE")) {
|
||||
if (has_input(stm) && has_output(stm)) {
|
||||
r = audiounit_create_aggregate_device(stm);
|
||||
if (r != CUBEB_OK) {
|
||||
stm->aggregate_device_id = 0;
|
||||
@ -2319,7 +2318,6 @@ audiounit_setup_stream(cubeb_stream * stm)
|
||||
// it after a couple of weeks.
|
||||
return r;
|
||||
} else {
|
||||
LOG("(%p) Using aggregate device", stm);
|
||||
in_dev = out_dev = stm->aggregate_device_id;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,6 @@
|
||||
#include "cubeb-speex-resampler.h"
|
||||
#include "cubeb_resampler_internal.h"
|
||||
#include "cubeb_utils.h"
|
||||
#include "cubeb_log.h"
|
||||
|
||||
int
|
||||
to_speex_quality(cubeb_resampler_quality q)
|
||||
@ -75,9 +74,6 @@ long passthrough_resampler<T>::fill(void * input_buffer, long * input_frames_cou
|
||||
*input_frames_count = output_frames;
|
||||
}
|
||||
|
||||
ALOGV("passthrough: after callback, internal input buffer length: %zu",
|
||||
internal_input_buffer.length());
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
@ -239,16 +235,6 @@ cubeb_resampler_speex<T, InputProcessor, OutputProcessor>
|
||||
resampled_input, out_unprocessed,
|
||||
output_frames_before_processing);
|
||||
|
||||
size_t input_processor_buffer_sizes[2];
|
||||
size_t output_processor_buffer_sizes[2];
|
||||
input_processor->internal_buffer_sizes(input_processor_buffer_sizes);
|
||||
output_processor->internal_buffer_sizes(output_processor_buffer_sizes);
|
||||
ALOGV("duplex resampler: after callback, resampling buffer state:"
|
||||
"input_processor(input: %zu, output: %zu) "
|
||||
"output_processor(input: %zu, output: %zu) ",
|
||||
input_processor_buffer_sizes[0], input_processor_buffer_sizes[1],
|
||||
output_processor_buffer_sizes[0], output_processor_buffer_sizes[1]);
|
||||
|
||||
if (got < 0) {
|
||||
return got;
|
||||
}
|
||||
|
@ -179,12 +179,6 @@ public:
|
||||
speex_resampler_destroy(speex_resampler);
|
||||
}
|
||||
|
||||
void internal_buffer_sizes(size_t buf_sizes[2])
|
||||
{
|
||||
buf_sizes[0] = resampling_in_buffer.length();
|
||||
buf_sizes[1] = resampling_out_buffer.length();
|
||||
}
|
||||
|
||||
/** Sometimes, it is necessary to add latency on one way of a two-way
|
||||
* resampler so that the stream are synchronized. This must be called only on
|
||||
* a fresh resampler, otherwise, silent samples will be inserted in the
|
||||
@ -372,11 +366,6 @@ public:
|
||||
length += frames;
|
||||
delay_input_buffer.push_silence(frames_to_samples(frames));
|
||||
}
|
||||
void internal_buffer_sizes(size_t buf_sizes[2])
|
||||
{
|
||||
buf_sizes[0] = delay_input_buffer.length();
|
||||
buf_sizes[1] = delay_output_buffer.length();
|
||||
}
|
||||
/** Push some frames into the delay line.
|
||||
* @parameter buffer the frames to push.
|
||||
* @parameter frame_count the number of frames in #buffer. */
|
||||
|
@ -1,150 +0,0 @@
|
||||
diff --git a/media/libcubeb/src/cubeb_audiounit.cpp b/media/libcubeb/src/cubeb_audiounit.cpp
|
||||
--- a/media/libcubeb/src/cubeb_audiounit.cpp
|
||||
+++ b/media/libcubeb/src/cubeb_audiounit.cpp
|
||||
@@ -2302,27 +2302,29 @@ static int
|
||||
audiounit_setup_stream(cubeb_stream * stm)
|
||||
{
|
||||
stm->mutex.assert_current_thread_owns();
|
||||
|
||||
int r = 0;
|
||||
|
||||
AudioDeviceID in_dev = stm->input_device;
|
||||
AudioDeviceID out_dev = stm->output_device;
|
||||
- if (has_input(stm) && has_output(stm)) {
|
||||
+ if (has_input(stm) && has_output(stm) &&
|
||||
+ !getenv("CUBEB_AUDIOUNIT_DISABLE_AGGREGATE_DEVICE")) {
|
||||
r = audiounit_create_aggregate_device(stm);
|
||||
if (r != CUBEB_OK) {
|
||||
stm->aggregate_device_id = 0;
|
||||
LOG("(%p) Create aggregate devices failed.", stm);
|
||||
// !!!NOTE: It is not necessary to return here. If it does not
|
||||
// return it will fallback to the old implementation. The intention
|
||||
// is to investigate how often it fails. I plan to remove
|
||||
// it after a couple of weeks.
|
||||
return r;
|
||||
} else {
|
||||
+ LOG("(%p) Using aggregate device", stm);
|
||||
in_dev = out_dev = stm->aggregate_device_id;
|
||||
}
|
||||
}
|
||||
|
||||
if (has_input(stm)) {
|
||||
r = audiounit_create_unit(&stm->input_unit,
|
||||
INPUT,
|
||||
in_dev);
|
||||
diff --git a/media/libcubeb/src/cubeb_resampler.cpp b/media/libcubeb/src/cubeb_resampler.cpp
|
||||
--- a/media/libcubeb/src/cubeb_resampler.cpp
|
||||
+++ b/media/libcubeb/src/cubeb_resampler.cpp
|
||||
@@ -13,16 +13,17 @@
|
||||
#include <cassert>
|
||||
#include <cstring>
|
||||
#include <cstddef>
|
||||
#include <cstdio>
|
||||
#include "cubeb_resampler.h"
|
||||
#include "cubeb-speex-resampler.h"
|
||||
#include "cubeb_resampler_internal.h"
|
||||
#include "cubeb_utils.h"
|
||||
+#include "cubeb_log.h"
|
||||
|
||||
int
|
||||
to_speex_quality(cubeb_resampler_quality q)
|
||||
{
|
||||
switch(q) {
|
||||
case CUBEB_RESAMPLER_QUALITY_VOIP:
|
||||
return SPEEX_RESAMPLER_QUALITY_VOIP;
|
||||
case CUBEB_RESAMPLER_QUALITY_DEFAULT:
|
||||
@@ -70,16 +71,19 @@ long passthrough_resampler<T>::fill(void
|
||||
long rv = data_callback(stream, user_ptr, internal_input_buffer.data(),
|
||||
output_buffer, output_frames);
|
||||
|
||||
if (input_buffer) {
|
||||
internal_input_buffer.pop(nullptr, frames_to_samples(output_frames));
|
||||
*input_frames_count = output_frames;
|
||||
}
|
||||
|
||||
+ ALOGV("passthrough: after callback, internal input buffer length: %zu",
|
||||
+ internal_input_buffer.length());
|
||||
+
|
||||
return rv;
|
||||
}
|
||||
|
||||
template<typename T, typename InputProcessor, typename OutputProcessor>
|
||||
cubeb_resampler_speex<T, InputProcessor, OutputProcessor>
|
||||
::cubeb_resampler_speex(InputProcessor * input_processor,
|
||||
OutputProcessor * output_processor,
|
||||
cubeb_stream * s,
|
||||
@@ -231,16 +235,26 @@ cubeb_resampler_speex<T, InputProcessor,
|
||||
} else {
|
||||
resampled_input = nullptr;
|
||||
}
|
||||
|
||||
got = data_callback(stream, user_ptr,
|
||||
resampled_input, out_unprocessed,
|
||||
output_frames_before_processing);
|
||||
|
||||
+ size_t input_processor_buffer_sizes[2];
|
||||
+ size_t output_processor_buffer_sizes[2];
|
||||
+ input_processor->internal_buffer_sizes(input_processor_buffer_sizes);
|
||||
+ output_processor->internal_buffer_sizes(output_processor_buffer_sizes);
|
||||
+ ALOGV("duplex resampler: after callback, resampling buffer state:"
|
||||
+ "input_processor(input: %zu, output: %zu) "
|
||||
+ "output_processor(input: %zu, output: %zu) ",
|
||||
+ input_processor_buffer_sizes[0], input_processor_buffer_sizes[1],
|
||||
+ output_processor_buffer_sizes[0], output_processor_buffer_sizes[1]);
|
||||
+
|
||||
if (got < 0) {
|
||||
return got;
|
||||
}
|
||||
|
||||
output_processor->written(got);
|
||||
|
||||
/* Process the output. If not enough frames have been returned from the
|
||||
* callback, drain the processors. */
|
||||
diff --git a/media/libcubeb/src/cubeb_resampler_internal.h b/media/libcubeb/src/cubeb_resampler_internal.h
|
||||
--- a/media/libcubeb/src/cubeb_resampler_internal.h
|
||||
+++ b/media/libcubeb/src/cubeb_resampler_internal.h
|
||||
@@ -174,16 +174,22 @@ public:
|
||||
}
|
||||
|
||||
/** Destructor, deallocate the resampler */
|
||||
virtual ~cubeb_resampler_speex_one_way()
|
||||
{
|
||||
speex_resampler_destroy(speex_resampler);
|
||||
}
|
||||
|
||||
+ void internal_buffer_sizes(size_t buf_sizes[2])
|
||||
+ {
|
||||
+ buf_sizes[0] = resampling_in_buffer.length();
|
||||
+ buf_sizes[1] = resampling_out_buffer.length();
|
||||
+ }
|
||||
+
|
||||
/** Sometimes, it is necessary to add latency on one way of a two-way
|
||||
* resampler so that the stream are synchronized. This must be called only on
|
||||
* a fresh resampler, otherwise, silent samples will be inserted in the
|
||||
* stream.
|
||||
* @param frames the number of frames of latency to add. */
|
||||
void add_latency(size_t frames)
|
||||
{
|
||||
additional_latency += frames;
|
||||
@@ -361,16 +367,21 @@ public:
|
||||
}
|
||||
/* Add some latency to the delay line.
|
||||
* @param frames the number of frames of latency to add. */
|
||||
void add_latency(size_t frames)
|
||||
{
|
||||
length += frames;
|
||||
delay_input_buffer.push_silence(frames_to_samples(frames));
|
||||
}
|
||||
+ void internal_buffer_sizes(size_t buf_sizes[2])
|
||||
+ {
|
||||
+ buf_sizes[0] = delay_input_buffer.length();
|
||||
+ buf_sizes[1] = delay_output_buffer.length();
|
||||
+ }
|
||||
/** Push some frames into the delay line.
|
||||
* @parameter buffer the frames to push.
|
||||
* @parameter frame_count the number of frames in #buffer. */
|
||||
void input(T * buffer, uint32_t frame_count)
|
||||
{
|
||||
delay_input_buffer.push(buffer, frames_to_samples(frame_count));
|
||||
}
|
||||
/** Pop some frames from the internal buffer, into a internal output buffer.
|
@ -67,8 +67,5 @@ else
|
||||
echo "Remember to update README_MOZILLA with the version details."
|
||||
fi
|
||||
|
||||
echo "Applying a patch on top of $rev"
|
||||
patch -p3 < temp-patch-debug-drift.patch
|
||||
|
||||
echo "Applying a patch on top of $rev"
|
||||
patch -p3 < disable-assert.patch
|
||||
|
@ -108,6 +108,10 @@ pref("network.http.max-persistent-connections-per-proxy", 20);
|
||||
pref("network.http.spdy.push-allowance", 32768);
|
||||
pref("network.http.spdy.default-hpack-buffer", 4096); // 4k
|
||||
|
||||
// Racing the cache with the network should be disabled to prevent accidental
|
||||
// data usage.
|
||||
pref("network.http.rcwn.enabled", false);
|
||||
|
||||
// See bug 545869 for details on why these are set the way they are
|
||||
pref("network.buffer.cache.count", 24);
|
||||
pref("network.buffer.cache.size", 16384);
|
||||
|
@ -4501,6 +4501,9 @@ Tab.prototype = {
|
||||
ExternalApps.updatePageActionUri(fixedURI);
|
||||
}
|
||||
|
||||
// Strip reader mode URI and also make it exposable if needed
|
||||
fixedURI = this._stripAboutReaderURL(fixedURI);
|
||||
|
||||
let message = {
|
||||
type: "Content:LocationChange",
|
||||
tabID: this.id,
|
||||
@ -4529,8 +4532,15 @@ Tab.prototype = {
|
||||
}
|
||||
},
|
||||
|
||||
_stripAboutReaderURL: function (url) {
|
||||
return ReaderMode.getOriginalUrl(url) || url;
|
||||
_stripAboutReaderURL: function (originalURI) {
|
||||
try {
|
||||
let strippedURL = ReaderMode.getOriginalUrl(originalURI.spec);
|
||||
if(strippedURL){
|
||||
// Continue to create exposable uri if original uri is stripped.
|
||||
originalURI = URIFixup.createExposableURI(Services.io.newURI(strippedURL));
|
||||
}
|
||||
} catch (ex) { }
|
||||
return originalURI;
|
||||
},
|
||||
|
||||
// Properties used to cache security state used to update the UI
|
||||
|
@ -1640,6 +1640,14 @@ pref("network.http.keep_empty_response_headers_as_empty_string", true);
|
||||
// Max size, in bytes, for received HTTP response header.
|
||||
pref("network.http.max_response_header_size", 393216);
|
||||
|
||||
// If we should attempt to race the cache and network
|
||||
pref("network.http.rcwn.enabled", false);
|
||||
pref("network.http.rcwn.cache_queue_normal_threshold", 50);
|
||||
pref("network.http.rcwn.cache_queue_priority_threshold", 10);
|
||||
// We might attempt to race the cache with the network only if a resource
|
||||
// is smaller than this size.
|
||||
pref("network.http.rcwn.small_resource_size_kb", 256);
|
||||
|
||||
// The ratio of the transaction count for the focused window and the count of
|
||||
// all available active connections.
|
||||
pref("network.http.focused_window_transaction_ratio", "0.9");
|
||||
|
@ -613,8 +613,11 @@ CacheFileContextEvictor::EvictEntries()
|
||||
}
|
||||
|
||||
CacheIndex::EntryStatus status;
|
||||
bool pinned;
|
||||
rv = CacheIndex::HasEntry(hash, &status, &pinned);
|
||||
bool pinned = false;
|
||||
auto callback = [&pinned](const CacheIndexEntry * aEntry) {
|
||||
pinned = aEntry->IsPinned();
|
||||
};
|
||||
rv = CacheIndex::HasEntry(hash, &status, callback);
|
||||
// This must never fail, since eviction (this code) happens only when the index
|
||||
// is up-to-date and thus the informatin is known.
|
||||
MOZ_ASSERT(NS_SUCCEEDED(rv));
|
||||
|
@ -1144,7 +1144,8 @@ CacheIndex::RemoveAll()
|
||||
|
||||
// static
|
||||
nsresult
|
||||
CacheIndex::HasEntry(const nsACString &aKey, EntryStatus *_retval, bool *_pinned)
|
||||
CacheIndex::HasEntry(const nsACString &aKey, EntryStatus *_retval,
|
||||
const std::function<void(const CacheIndexEntry*)> &aCB)
|
||||
{
|
||||
LOG(("CacheIndex::HasEntry() [key=%s]", PromiseFlatCString(aKey).get()));
|
||||
|
||||
@ -1153,12 +1154,13 @@ CacheIndex::HasEntry(const nsACString &aKey, EntryStatus *_retval, bool *_pinned
|
||||
sum.update(aKey.BeginReading(), aKey.Length());
|
||||
sum.finish(hash);
|
||||
|
||||
return HasEntry(hash, _retval, _pinned);
|
||||
return HasEntry(hash, _retval, aCB);
|
||||
}
|
||||
|
||||
// static
|
||||
nsresult
|
||||
CacheIndex::HasEntry(const SHA1Sum::Hash &hash, EntryStatus *_retval, bool *_pinned)
|
||||
CacheIndex::HasEntry(const SHA1Sum::Hash &hash, EntryStatus *_retval,
|
||||
const std::function<void(const CacheIndexEntry*)> &aCB)
|
||||
{
|
||||
StaticMutexAutoLock lock(sLock);
|
||||
|
||||
@ -1172,10 +1174,6 @@ CacheIndex::HasEntry(const SHA1Sum::Hash &hash, EntryStatus *_retval, bool *_pin
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
}
|
||||
|
||||
if (_pinned) {
|
||||
*_pinned = false;
|
||||
}
|
||||
|
||||
const CacheIndexEntry *entry = nullptr;
|
||||
|
||||
switch (index->mState) {
|
||||
@ -1210,8 +1208,8 @@ CacheIndex::HasEntry(const SHA1Sum::Hash &hash, EntryStatus *_retval, bool *_pin
|
||||
}
|
||||
} else {
|
||||
*_retval = EXISTS;
|
||||
if (_pinned && entry->IsPinned()) {
|
||||
*_pinned = true;
|
||||
if (aCB) {
|
||||
aCB(entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -727,11 +727,12 @@ public:
|
||||
|
||||
// Returns status of the entry in index for the given key. It can be called
|
||||
// on any thread.
|
||||
// If _pinned is non-null, it's filled with pinning status of the entry.
|
||||
// If the optional aCB callback is given, the it will be called with a
|
||||
// CacheIndexEntry only if _retval is EXISTS when the method returns.
|
||||
static nsresult HasEntry(const nsACString &aKey, EntryStatus *_retval,
|
||||
bool *_pinned = nullptr);
|
||||
const std::function<void(const CacheIndexEntry*)> &aCB = nullptr);
|
||||
static nsresult HasEntry(const SHA1Sum::Hash &hash, EntryStatus *_retval,
|
||||
bool *_pinned = nullptr);
|
||||
const std::function<void(const CacheIndexEntry*)> &aCB = nullptr);
|
||||
|
||||
// Returns a hash of the least important entry that should be evicted if the
|
||||
// cache size is over limit and also returns a total number of all entries in
|
||||
|
@ -171,6 +171,33 @@ NS_IMETHODIMP CacheStorage::Exists(nsIURI *aURI, const nsACString & aIdExtension
|
||||
this, asciiSpec, aIdExtension, aResult);
|
||||
}
|
||||
|
||||
nsresult
|
||||
CacheStorage::GetCacheIndexEntryAttrs(nsIURI *aURI,
|
||||
const nsACString &aIdExtension,
|
||||
bool *aHasAltData,
|
||||
uint32_t *aSizeInKB)
|
||||
{
|
||||
NS_ENSURE_ARG(aURI);
|
||||
NS_ENSURE_ARG(aHasAltData);
|
||||
NS_ENSURE_ARG(aSizeInKB);
|
||||
if (!CacheStorageService::Self()) {
|
||||
return NS_ERROR_NOT_INITIALIZED;
|
||||
}
|
||||
|
||||
nsresult rv;
|
||||
|
||||
nsCOMPtr<nsIURI> noRefURI;
|
||||
rv = aURI->CloneIgnoringRef(getter_AddRefs(noRefURI));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsAutoCString asciiSpec;
|
||||
rv = noRefURI->GetAsciiSpec(asciiSpec);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return CacheStorageService::Self()->GetCacheIndexEntryAttrs(
|
||||
this, asciiSpec, aIdExtension, aHasAltData, aSizeInKB);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP CacheStorage::AsyncDoomURI(nsIURI *aURI, const nsACString & aIdExtension,
|
||||
nsICacheEntryDoomCallback* aCallback)
|
||||
{
|
||||
|
@ -73,6 +73,9 @@ public:
|
||||
bool LookupAppCache() const { return mLookupAppCache; }
|
||||
bool SkipSizeCheck() const { return mSkipSizeCheck; }
|
||||
bool Pinning() const { return mPinning; }
|
||||
virtual nsresult GetCacheIndexEntryAttrs(
|
||||
nsIURI *aURI, const nsACString &aIdExtension,
|
||||
bool *aHasAltData, uint32_t *aSizeInKB) override;
|
||||
};
|
||||
|
||||
} // namespace net
|
||||
|
@ -1635,6 +1635,48 @@ CacheStorageService::CheckStorageEntry(CacheStorage const* aStorage,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
CacheStorageService::GetCacheIndexEntryAttrs(CacheStorage const* aStorage,
|
||||
const nsACString &aURI,
|
||||
const nsACString &aIdExtension,
|
||||
bool *aHasAltData,
|
||||
uint32_t *aFileSizeKb)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
nsAutoCString contextKey;
|
||||
CacheFileUtils::AppendKeyPrefix(aStorage->LoadInfo(), contextKey);
|
||||
|
||||
LOG(("CacheStorageService::GetCacheIndexEntryAttrs [uri=%s, eid=%s, contextKey=%s]",
|
||||
aURI.BeginReading(), aIdExtension.BeginReading(), contextKey.get()));
|
||||
|
||||
nsAutoCString fileKey;
|
||||
rv = CacheEntry::HashingKey(contextKey, aIdExtension, aURI, fileKey);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
*aHasAltData = false;
|
||||
*aFileSizeKb = 0;
|
||||
auto closure = [&aHasAltData, &aFileSizeKb](const CacheIndexEntry *entry) {
|
||||
*aHasAltData = entry->GetHasAltData();
|
||||
*aFileSizeKb = entry->GetFileSize();
|
||||
};
|
||||
|
||||
CacheIndex::EntryStatus status;
|
||||
rv = CacheIndex::HasEntry(fileKey, &status, closure);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
if (status != CacheIndex::EXISTS) {
|
||||
return NS_ERROR_CACHE_KEY_NOT_FOUND;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class CacheEntryDoomByKeyCallback : public CacheFileIOListener
|
||||
|
@ -111,6 +111,12 @@ public:
|
||||
// Invokes OnEntryInfo for the given aEntry, synchronously.
|
||||
static void GetCacheEntryInfo(CacheEntry* aEntry, EntryInfoCallback *aVisitor);
|
||||
|
||||
nsresult GetCacheIndexEntryAttrs(CacheStorage const* aStorage,
|
||||
const nsACString &aURI,
|
||||
const nsACString &aIdExtension,
|
||||
bool *aHasAltData,
|
||||
uint32_t *aFileSizeKb);
|
||||
|
||||
static uint32_t CacheQueueSize(bool highPriority);
|
||||
|
||||
// Memory reporting
|
||||
|
@ -131,4 +131,12 @@ interface nsICacheStorage : nsISupports
|
||||
*/
|
||||
void asyncVisitStorage(in nsICacheStorageVisitor aVisitor,
|
||||
in boolean aVisitEntries);
|
||||
|
||||
%{C++
|
||||
virtual nsresult GetCacheIndexEntryAttrs(
|
||||
nsIURI *aURI, const nsACString &aIdExtension,
|
||||
bool *aHasAltData, uint32_t *aSizeInKB) {
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
%}
|
||||
};
|
||||
|
@ -119,6 +119,10 @@ namespace {
|
||||
// Monotonically increasing ID for generating unique cache entries per
|
||||
// intercepted channel.
|
||||
static uint64_t gNumIntercepted = 0;
|
||||
static bool sRCWNEnabled = false;
|
||||
static uint32_t sRCWNQueueSizeNormal = 50;
|
||||
static uint32_t sRCWNQueueSizePriority = 10;
|
||||
static uint32_t sRCWNSmallResourceSizeKB = 256;
|
||||
|
||||
// True if the local cache should be bypassed when processing a request.
|
||||
#define BYPASS_LOCAL_CACHE(loadFlags) \
|
||||
@ -2048,7 +2052,9 @@ nsHttpChannel::ProcessResponse()
|
||||
MOZ_ASSERT(NS_SUCCEEDED(rv), "ProcessSTSHeader failed, continuing load.");
|
||||
}
|
||||
|
||||
MOZ_ASSERT(!mCachedContentIsValid);
|
||||
MOZ_ASSERT(!mCachedContentIsValid || mRacingNetAndCache,
|
||||
"We should not be hitting the network if we have valid cached "
|
||||
"content unless we are racing the network and cache");
|
||||
|
||||
ProcessSSLInformation();
|
||||
|
||||
@ -3607,6 +3613,19 @@ nsHttpChannel::OpenCacheEntry(bool isHttps)
|
||||
mCacheOpenWithPriority = cacheEntryOpenFlags & nsICacheStorage::OPEN_PRIORITY;
|
||||
mCacheQueueSizeWhenOpen = CacheStorageService::CacheQueueSize(mCacheOpenWithPriority);
|
||||
|
||||
bool hasAltData = false;
|
||||
uint32_t sizeInKb = 0;
|
||||
rv = cacheStorage->GetCacheIndexEntryAttrs(openURI, extension,
|
||||
&hasAltData, &sizeInKb);
|
||||
|
||||
// We will attempt to race the network vs the cache if we've found this
|
||||
// entry in the cache index, and it has appropriate
|
||||
// attributes (doesn't have alt-data, and has a small size)
|
||||
if (sRCWNEnabled && mInterceptCache != INTERCEPTED &&
|
||||
NS_SUCCEEDED(rv) && !hasAltData && sizeInKb < sRCWNSmallResourceSizeKB) {
|
||||
MaybeRaceNetworkWithCache();
|
||||
}
|
||||
|
||||
if (!mCacheOpenDelay) {
|
||||
rv = cacheStorage->AsyncOpenURI(openURI, extension, cacheEntryOpenFlags, this);
|
||||
} else {
|
||||
@ -5151,7 +5170,7 @@ nsHttpChannel::InstallCacheListener(int64_t offset)
|
||||
LOG(("Preparing to write data into the cache [uri=%s]\n", mSpec.get()));
|
||||
|
||||
MOZ_ASSERT(mCacheEntry);
|
||||
MOZ_ASSERT(mCacheEntryIsWriteOnly || mCachedContentIsPartial);
|
||||
MOZ_ASSERT(mCacheEntryIsWriteOnly || mCachedContentIsPartial || mRacingNetAndCache);
|
||||
MOZ_ASSERT(mListener);
|
||||
|
||||
nsAutoCString contentEncoding, contentType;
|
||||
@ -5807,6 +5826,15 @@ nsHttpChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *context)
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
}
|
||||
|
||||
static bool sRCWNInited = false;
|
||||
if (!sRCWNInited) {
|
||||
sRCWNInited = true;
|
||||
Preferences::AddBoolVarCache(&sRCWNEnabled, "network.http.rcwn.enabled");
|
||||
Preferences::AddUintVarCache(&sRCWNQueueSizeNormal, "network.http.rcwn.cache_queue_normal_threshold");
|
||||
Preferences::AddUintVarCache(&sRCWNQueueSizePriority, "network.http.rcwn.cache_queue_priority_threshold");
|
||||
Preferences::AddUintVarCache(&sRCWNSmallResourceSizeKB, "network.http.rcwn.small_resource_size_kb");
|
||||
}
|
||||
|
||||
rv = NS_CheckPortSafety(mURI);
|
||||
if (NS_FAILED(rv)) {
|
||||
ReleaseListeners();
|
||||
@ -7165,23 +7193,24 @@ nsHttpChannel::OnDataAvailable(nsIRequest *request, nsISupports *ctxt,
|
||||
" count=%" PRIu32 "]\n",
|
||||
this, request, offset, count));
|
||||
|
||||
LOG(("OnDataAvailable %p requestFromCache: %d mFirstResponseSource: %d\n", this, request == mCachePump, mFirstResponseSource));
|
||||
LOG((" requestFromCache: %d mFirstResponseSource: %d\n",
|
||||
request == mCachePump, mFirstResponseSource));
|
||||
|
||||
// don't send out OnDataAvailable notifications if we've been canceled.
|
||||
if (mCanceled)
|
||||
return mStatus;
|
||||
|
||||
MOZ_ASSERT(mResponseHead, "No response head in ODA!!");
|
||||
|
||||
MOZ_ASSERT(!(mCachedContentIsPartial && (request == mTransactionPump)),
|
||||
"transaction pump not suspended");
|
||||
|
||||
if (mAuthRetryPending || WRONG_RACING_RESPONSE_SOURCE(request) ||
|
||||
(request == mTransactionPump && mTransactionReplaced)) {
|
||||
uint32_t n;
|
||||
return input->ReadSegments(NS_DiscardSegment, nullptr, count, &n);
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mResponseHead, "No response head in ODA!!");
|
||||
|
||||
MOZ_ASSERT(!(mCachedContentIsPartial && (request == mTransactionPump)),
|
||||
"transaction pump not suspended");
|
||||
|
||||
mIsReadingFromCache = (request == mCachePump);
|
||||
|
||||
if (mListener) {
|
||||
@ -8717,7 +8746,9 @@ nsHttpChannel::TriggerNetwork(int32_t aTimeout)
|
||||
MOZ_ASSERT(NS_IsMainThread(), "Must be called on the main thread");
|
||||
// If a network request has already gone out, there is no point in
|
||||
// doing this again.
|
||||
LOG(("nsHttpChannel::TriggerNetwork [this=%p]\n", this));
|
||||
if (mNetworkTriggered) {
|
||||
LOG((" network already triggered. Returning.\n"));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -8740,18 +8771,43 @@ nsHttpChannel::TriggerNetwork(int32_t aTimeout)
|
||||
// BeginConnect, and Connect will call TryHSTSPriming even if it's
|
||||
// for the cache callbacks.
|
||||
if (mProxyRequest) {
|
||||
LOG((" proxy request in progress. Delaying network trigger.\n"));
|
||||
mWaitingForProxy = true;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
LOG((" triggering network\n"));
|
||||
return TryHSTSPriming();
|
||||
}
|
||||
|
||||
LOG((" setting timer to trigger network: %d ms\n", aTimeout));
|
||||
mNetworkTriggerTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
|
||||
mNetworkTriggerTimer->InitWithCallback(this, aTimeout, nsITimer::TYPE_ONE_SHOT);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsHttpChannel::MaybeRaceNetworkWithCache()
|
||||
{
|
||||
// Don't trigger the network if the load flags say so.
|
||||
if (mLoadFlags & (LOAD_ONLY_FROM_CACHE | LOAD_NO_NETWORK_IO)) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
uint32_t threshold = mCacheOpenWithPriority ? sRCWNQueueSizePriority
|
||||
: sRCWNQueueSizeNormal;
|
||||
// No need to trigger to trigger the racing, since most likely the cache
|
||||
// will be faster.
|
||||
if (mCacheQueueSizeWhenOpen < threshold) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(sRCWNEnabled, "The pref must be truned on.");
|
||||
LOG(("nsHttpChannel::MaybeRaceNetworkWithCache [this=%p]\n", this));
|
||||
return TriggerNetwork(0);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHttpChannel::Test_triggerNetwork(int32_t aTimeout)
|
||||
{
|
||||
|
@ -660,6 +660,10 @@ private:
|
||||
RESPONSE_FROM_NETWORK, // response coming from the network
|
||||
} mFirstResponseSource = RESPONSE_PENDING;
|
||||
|
||||
// Determines if it's possible and advisable to race the network request
|
||||
// with the cache fetch, and proceeds to do so.
|
||||
nsresult MaybeRaceNetworkWithCache();
|
||||
|
||||
nsresult TriggerNetwork(int32_t aTimeout);
|
||||
void CancelNetworkRequest(nsresult aStatus);
|
||||
// Timer used to delay the network request, or to trigger the network
|
||||
|
@ -1157,4 +1157,4 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
|
||||
|
||||
static const int32_t kUnknownId = -1;
|
||||
|
||||
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1500219850303000);
|
||||
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1500302305342000);
|
||||
|
@ -207,6 +207,7 @@ alexismeza.com.mx: could not connect to host
|
||||
alexismeza.dk: could not connect to host
|
||||
alexismeza.es: could not connect to host
|
||||
alexismeza.nl: could not connect to host
|
||||
alexpavel.com: could not connect to host
|
||||
alfa24.pro: could not connect to host
|
||||
alittlebitcheeky.com: did not receive HSTS header
|
||||
aljaspod.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 118" data: no]
|
||||
@ -273,8 +274,6 @@ andrewmichaud.beer: could not connect to host
|
||||
andrewregan.me: could not connect to host
|
||||
andreypopp.com: could not connect to host
|
||||
androoz.se: did not receive HSTS header
|
||||
anduril.de: could not connect to host
|
||||
anduril.eu: could not connect to host
|
||||
andymartin.cc: did not receive HSTS header
|
||||
anfsanchezo.co: did not receive HSTS header
|
||||
anfsanchezo.me: could not connect to host
|
||||
@ -306,7 +305,7 @@ antocom.com: did not receive HSTS header
|
||||
antoinedeschenes.com: could not connect to host
|
||||
antoniomarques.eu: did not receive HSTS header
|
||||
antoniorequena.com.ve: could not connect to host
|
||||
antscript.com: could not connect to host
|
||||
antscript.com: did not receive HSTS header
|
||||
anycoin.me: could not connect to host
|
||||
aocast.info: could not connect to host
|
||||
aosc.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 118" data: no]
|
||||
@ -495,7 +494,6 @@ be.search.yahoo.com: did not receive HSTS header
|
||||
beach-inspector.com: did not receive HSTS header
|
||||
beachi.es: could not connect to host
|
||||
beaglewatch.com: could not connect to host
|
||||
beamitapp.com: could not connect to host
|
||||
beardydave.com: did not receive HSTS header
|
||||
beastowner.com: did not receive HSTS header
|
||||
beavers.io: could not connect to host
|
||||
@ -540,7 +538,6 @@ beyuna.eu: did not receive HSTS header
|
||||
beyuna.nl: did not receive HSTS header
|
||||
bezorg.ninja: could not connect to host
|
||||
bf.am: max-age too low: 0
|
||||
bffm.biz: could not connect to host
|
||||
bgcparkstad.nl: did not receive HSTS header
|
||||
bgmn.net: could not connect to host
|
||||
bhatia.at: [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 118" data: no]
|
||||
@ -555,7 +552,6 @@ bigdinosaur.org: could not connect to host
|
||||
bigshinylock.minazo.net: could not connect to host
|
||||
bildiri.ci: did not receive HSTS header
|
||||
bildschirmflackern.de: did not receive HSTS header
|
||||
billaud.eu.org: could not connect to host
|
||||
billin.net: did not receive HSTS header
|
||||
billkiss.com: max-age too low: 300
|
||||
billninja.com: did not receive HSTS header
|
||||
@ -615,7 +611,6 @@ bluetenmeer.com: did not receive HSTS header
|
||||
blupig.net: did not receive HSTS header
|
||||
bluserv.net: did not receive HSTS header
|
||||
bm-trading.nl: did not receive HSTS header
|
||||
bmoattachments.org: did not receive HSTS header
|
||||
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 118" data: no]
|
||||
bnhlibrary.com: did not receive HSTS header
|
||||
bobiji.com: did not receive HSTS header
|
||||
@ -642,7 +637,6 @@ boomshelf.org: could not connect to host
|
||||
boosterlearnpro.com: did not receive HSTS header
|
||||
bootjp.me: did not receive HSTS header
|
||||
borchers-media.de: did not receive HSTS header
|
||||
borderlinegroup.com: could not connect to host
|
||||
boringsecurity.net: could not connect to host
|
||||
boris.one: did not receive HSTS header
|
||||
borisbesemer.com: could not connect to host
|
||||
@ -784,10 +778,9 @@ cashmojo.com: could not connect to host
|
||||
cashmyphone.ch: could not connect to host
|
||||
casino-cashflow.ru: did not receive HSTS header
|
||||
casinostest.com: did not receive HSTS header
|
||||
casioshop.eu: could not connect to host
|
||||
casioshop.eu: did not receive HSTS header
|
||||
casovi.cf: could not connect to host
|
||||
catarsisvr.com: could not connect to host
|
||||
catgirl.pics: could not connect to host
|
||||
catinmay.com: did not receive HSTS header
|
||||
catnapstudios.com: could not connect to host
|
||||
catsmagic.pp.ua: did not receive HSTS header
|
||||
@ -858,6 +851,7 @@ chinawhale.com: did not receive HSTS header
|
||||
chirgui.eu: could not connect to host
|
||||
chm.vn: did not receive HSTS header
|
||||
chontalpa.pw: could not connect to host
|
||||
chosenplaintext.org: could not connect to host
|
||||
chotu.net: could not connect to host
|
||||
chris-web.info: could not connect to host
|
||||
chrisandsarahinasia.com: did not receive HSTS header
|
||||
@ -901,6 +895,7 @@ clemovementlaw.com: could not connect to host
|
||||
clerkendweller.uk: could not connect to host
|
||||
clickandgo.com: did not receive HSTS header
|
||||
clickandshoot.nl: did not receive HSTS header
|
||||
clickgram.biz: did not receive HSTS header
|
||||
clicn.bio: could not connect to host
|
||||
clientsecure.me: could not connect to host
|
||||
clint.id.au: max-age too low: 0
|
||||
@ -915,7 +910,6 @@ cloudcy.net: could not connect to host
|
||||
clouddesktop.co.nz: could not connect to host
|
||||
cloudey.net: did not receive HSTS header
|
||||
cloudflare.com: did not receive HSTS header
|
||||
cloudily.com: could not connect to host
|
||||
cloudimag.es: could not connect to host
|
||||
cloudlink.club: could not connect to host
|
||||
cloudns.com.au: could not connect to host
|
||||
@ -969,7 +963,6 @@ colmexpro.com: did not receive HSTS header
|
||||
colognegaming.net: could not connect to host
|
||||
coloradocomputernetworking.net: could not connect to host
|
||||
colorlib.com: did not receive HSTS header
|
||||
combron.nl: did not receive HSTS header
|
||||
comfortdom.ua: did not receive HSTS header
|
||||
comfortticket.de: did not receive HSTS header
|
||||
comicspines.com: could not connect to host
|
||||
@ -982,6 +975,7 @@ compraneta.com: could not connect to host
|
||||
compucorner.com.mx: could not connect to host
|
||||
computeremergency.com.au: did not receive HSTS header
|
||||
computersystems.guru: did not receive HSTS header
|
||||
comssa.org.au: could not connect to host
|
||||
concord-group.co.jp: did not receive HSTS header
|
||||
confirm365.com: could not connect to host
|
||||
conformal.com: could not connect to host
|
||||
@ -1044,7 +1038,6 @@ crimewatch.net.za: could not connect to host
|
||||
crizk.com: could not connect to host
|
||||
crosscom.ch: could not connect to host
|
||||
crosssec.com: did not receive HSTS header
|
||||
crow.tw: could not connect to host
|
||||
crowd.supply: could not connect to host
|
||||
crowdcurity.com: did not receive HSTS header
|
||||
crowdjuris.com: could not connect to host
|
||||
@ -1069,7 +1062,6 @@ csfs.org.uk: could not connect to host
|
||||
csgf.ru: did not receive HSTS header
|
||||
csgodicegame.com: did not receive HSTS header
|
||||
csgokings.eu: could not connect to host
|
||||
csmainframe.com: could not connect to host
|
||||
csohack.tk: could not connect to host
|
||||
cspbuilder.info: could not connect to host
|
||||
csvape.com: did not receive HSTS header
|
||||
@ -1167,7 +1159,6 @@ ddatsh.com: could not connect to host
|
||||
dden.ca: could not connect to host
|
||||
dden.website: could not connect to host
|
||||
dden.xyz: could not connect to host
|
||||
deaktualisierung.org: could not connect to host
|
||||
debank.tv: did not receive HSTS header
|
||||
debatch.se: could not connect to host
|
||||
debian-vhost.de: did not receive HSTS header
|
||||
@ -1252,7 +1243,6 @@ digitalriver.tk: could not connect to host
|
||||
digitalskillswap.com: could not connect to host
|
||||
dim.lighting: could not connect to host
|
||||
dinamoelektrik.com: max-age too low: 0
|
||||
dinepont.fr: did not receive HSTS header
|
||||
dinkum.online: could not connect to host
|
||||
directorinegocis.cat: could not connect to host
|
||||
discovery.lookout.com: did not receive HSTS header
|
||||
@ -1273,6 +1263,7 @@ dkravchenko.su: could not connect to host
|
||||
dl.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
dlc.viasinc.com: could not connect to host
|
||||
dlemper.de: did not receive HSTS header
|
||||
dlitz.net: could not connect to host
|
||||
dlscomputers.com.au: did not receive HSTS header
|
||||
dmcibulldog.com: did not receive HSTS header
|
||||
dmtry.me: did not receive HSTS header
|
||||
@ -1314,7 +1305,6 @@ doridian.com: could not connect to host
|
||||
doridian.de: could not connect to host
|
||||
doridian.net: did not receive HSTS header
|
||||
doridian.org: could not connect to host
|
||||
dossplumbing.co.za: did not receive HSTS header
|
||||
dot42.no: could not connect to host
|
||||
dotacni-parazit.cz: did not receive HSTS header
|
||||
dotadata.me: could not connect to host
|
||||
@ -1349,6 +1339,7 @@ dubrovskiy.net: could not connect to host
|
||||
dubrovskiy.pro: could not connect to host
|
||||
duesee.org: could not connect to host
|
||||
dullsir.com: did not receive HSTS header
|
||||
dutchessuganda.com: did not receive HSTS header
|
||||
dutchrank.com: 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 118" data: no]
|
||||
dycontrol.de: could not connect to host
|
||||
@ -1360,7 +1351,6 @@ dzndk.org: could not connect to host
|
||||
e-aut.net: did not receive HSTS header
|
||||
e-biografias.net: did not receive HSTS header
|
||||
e-deca2.org: did not receive HSTS header
|
||||
e-isfa.eu: could not connect to host
|
||||
e-rickroll-r.pw: could not connect to host
|
||||
e-sa.com: did not receive HSTS header
|
||||
e3amn2l.com: could not connect to host
|
||||
@ -1432,7 +1422,6 @@ elemprendedor.com.ve: could not connect to host
|
||||
elenag.ga: could not connect to host
|
||||
elenoon.ir: did not receive HSTS header
|
||||
elgacien.de: could not connect to host
|
||||
elhall.ru: did not receive HSTS header
|
||||
elimdengelen.com: did not receive HSTS header
|
||||
elitefishtank.com: could not connect to host
|
||||
elnutricionista.es: did not receive HSTS header
|
||||
@ -1466,10 +1455,12 @@ endlesstone.com: did not receive HSTS header
|
||||
enefan.jp: could not connect to host
|
||||
enersec.co.uk: could not connect to host
|
||||
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 118" data: no]
|
||||
engg.ca: could not connect to host
|
||||
enginsight.com: did not receive HSTS header
|
||||
enigmacpt.com: did not receive HSTS header
|
||||
enigmail.net: did not receive HSTS header
|
||||
enjoy-nepal.de: max-age too low: 0
|
||||
enriquepiraces.com: could not connect to host
|
||||
enskat.de: could not connect to host
|
||||
enskatson-sippe.de: could not connect to host
|
||||
enteente.club: could not connect to host
|
||||
@ -1522,7 +1513,6 @@ essexghosthunters.co.uk: did not receive HSTS header
|
||||
estateczech-eu.ru: did not receive HSTS header
|
||||
estilosapeca.com: could not connect to host
|
||||
et-buchholz.de: could not connect to host
|
||||
etaxi.tn: could not connect to host
|
||||
etdonline.co.uk: could not connect to host
|
||||
eternitylove.us: could not connect to host
|
||||
eth9.net: max-age too low: 0
|
||||
@ -1585,6 +1575,7 @@ fadilus.com: did not receive HSTS header
|
||||
faesser.com: did not receive HSTS header
|
||||
fail4free.de: did not receive HSTS header
|
||||
failforward.org: did not receive HSTS header
|
||||
faircom.co.za: did not receive HSTS header
|
||||
fairkey.dk: did not receive HSTS header
|
||||
fairlyoddtreasures.com: did not receive HSTS header
|
||||
faizan.net: did not receive HSTS header
|
||||
@ -1631,7 +1622,6 @@ ffmradio.de: did not receive HSTS header
|
||||
fhdhelp.de: could not connect to host
|
||||
fhdhilft.de: could not connect to host
|
||||
fics-twosigma.com: did not receive HSTS header
|
||||
fierman.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 118" data: no]
|
||||
fiftyshadesofluca.ml: could not connect to host
|
||||
fig.co: did not receive HSTS header
|
||||
fightr.co: could not connect to host
|
||||
@ -1684,6 +1674,7 @@ flow.pe: could not connect to host
|
||||
flow.su: could not connect to host
|
||||
flowersandclouds.com: could not connect to host
|
||||
flowlo.me: could not connect to host
|
||||
fluidojobs.com: could not connect to host
|
||||
flukethoughts.com: could not connect to host
|
||||
flushstudios.com: did not receive HSTS header
|
||||
flyaces.com: did not receive HSTS header
|
||||
@ -1706,6 +1697,7 @@ forex-dan.com: did not receive HSTS header
|
||||
forgix.com: could not connect to host
|
||||
formazioneopen.it: could not connect to host
|
||||
formbetter.com: could not connect to host
|
||||
formini.dz: could not connect to host
|
||||
formula.cf: could not connect to host
|
||||
forschbach-janssen.de: could not connect to host
|
||||
fotiu.com: could not connect to host
|
||||
@ -1771,6 +1763,7 @@ fusionmate.com: could not connect to host
|
||||
futbol11.com: did not receive HSTS header
|
||||
futuretechnologi.es: could not connect to host
|
||||
futureyouhealth.com: did not receive HSTS header
|
||||
fuxwerk.de: did not receive HSTS header
|
||||
fx-rk.com: did not receive HSTS header
|
||||
fysiohaenraets.nl: did not receive HSTS header
|
||||
fzn.io: could not connect to host
|
||||
@ -1800,10 +1793,11 @@ gamechasm.com: could not connect to host
|
||||
gamefund.me: did not receive HSTS header
|
||||
gamehacks.me: could not connect to host
|
||||
gameink.net: max-age too low: 0
|
||||
gamek.es: could not connect to host
|
||||
gamek.es: did not receive HSTS header
|
||||
gamenected.com: could not connect to host
|
||||
gamenected.de: could not connect to host
|
||||
gameofpwnz.com: did not receive HSTS header
|
||||
gamepad.vg: could not connect to host
|
||||
gamepader.com: could not connect to host
|
||||
gameparade.de: could not connect to host
|
||||
gamepiece.com: could not connect to host
|
||||
@ -1815,7 +1809,6 @@ gamingmedia.eu: did not receive HSTS header
|
||||
gampenhof.de: did not receive HSTS header
|
||||
gaptek.id: did not receive HSTS header
|
||||
garciamartin.me: could not connect to host
|
||||
garden.trade: could not connect to host
|
||||
gatapro.net: could not connect to host
|
||||
gatilagata.com.br: did not receive HSTS header
|
||||
gatorsa.es: could not connect to host
|
||||
@ -1938,7 +1931,6 @@ gpstuner.com: did not receive HSTS header
|
||||
grabi.ga: could not connect to host
|
||||
gracesofgrief.com: max-age too low: 86400
|
||||
gradienthosting.co.uk: did not receive HSTS header
|
||||
grafmurr.de: could not connect to host
|
||||
grandmascookieblog.com: did not receive HSTS header
|
||||
grantedby.me: max-age too low: 0
|
||||
graph.no: did not receive HSTS header
|
||||
@ -1992,7 +1984,6 @@ guso.ml: could not connect to host
|
||||
guso.site: could not connect to host
|
||||
guso.tech: could not connect to host
|
||||
gussi.is: did not receive HSTS header
|
||||
guts.me: could not connect to host
|
||||
gvt2.com: could not connect to host (error ignored - included regardless)
|
||||
gvt3.com: could not connect to host (error ignored - included regardless)
|
||||
gw2reload.eu: could not connect to host
|
||||
@ -2071,7 +2062,6 @@ hcie.pl: could not connect to host
|
||||
hcs-company.com: did not receive HSTS header
|
||||
hcs-company.nl: did not receive HSTS header
|
||||
hd-offensive.at: could not connect to host
|
||||
hdc.cz: could not connect to host
|
||||
hdm.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 118" data: no]
|
||||
hdrboundless.com: could not connect to host
|
||||
hdsmigrationtool.com: could not connect to host
|
||||
@ -2127,6 +2117,7 @@ hogar123.es: could not connect to host
|
||||
holifestival-freyung.de: could not connect to host
|
||||
holymoly.lu: could not connect to host
|
||||
homa.website: could not connect to host
|
||||
hometownmall.com: did not receive HSTS header
|
||||
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 118" data: no]
|
||||
hongzhaxiaofendui.com: could not connect to host
|
||||
honoo.com: could not connect to host
|
||||
@ -2145,6 +2136,7 @@ hostgarou.com: did not receive HSTS header
|
||||
hostinaus.com.au: did not receive HSTS header
|
||||
hostisan.com: did not receive HSTS header
|
||||
hotartup.com: could not connect to host
|
||||
hotchillibox.co.za: could not connect to host
|
||||
hotchillibox.com: max-age too low: 0
|
||||
hotchoc.io: did not receive HSTS header
|
||||
houkago-step.com: did not receive HSTS header
|
||||
@ -2231,7 +2223,7 @@ ihuanmeng.com: did not receive HSTS header
|
||||
iispeed.com: did not receive HSTS header
|
||||
ikujii.com: max-age too low: 0
|
||||
ikwilguidobellen.nl: did not receive HSTS header
|
||||
ilbuongiorno.it: did not receive HSTS header
|
||||
ilbuongiorno.it: could not connect to host
|
||||
ilhadocaranguejo.com.br: max-age too low: 0
|
||||
ilikerainbows.co: could not connect to host
|
||||
ilikerainbows.co.uk: could not connect to host
|
||||
@ -2261,7 +2253,7 @@ imrejonk.nl: could not connect to host
|
||||
imu.li: did not receive HSTS header
|
||||
imusic.dk: did not receive HSTS header
|
||||
inb4.us: could not connect to host
|
||||
inbox.li: could not connect to host
|
||||
inbox.li: did not receive HSTS header
|
||||
incendiary-arts.com: could not connect to host
|
||||
inche-ali.com: could not connect to host
|
||||
inchomatic.com: did not receive HSTS header
|
||||
@ -2324,7 +2316,7 @@ iora.fr: could not connect to host
|
||||
iosmods.com: did not receive HSTS header
|
||||
iostips.ru: could not connect to host
|
||||
iotsms.io: could not connect to host
|
||||
ip6.im: could not connect to host
|
||||
ip6.im: did not receive HSTS header
|
||||
ipmimagazine.com: did not receive HSTS header
|
||||
iprice.co.id: did not receive HSTS header
|
||||
iprice.hk: did not receive HSTS header
|
||||
@ -2373,7 +2365,6 @@ itriskltd.com: could not connect to host
|
||||
itsadog.co.uk: did not receive HSTS header
|
||||
itsagadget.com: did not receive HSTS header
|
||||
itsamurai.ru: max-age too low: 2592000
|
||||
itsatrap.nl: could not connect to host
|
||||
itsecurityassurance.pw: could not connect to host
|
||||
itsg-faq.de: could not connect to host
|
||||
itshost.ru: could not connect to host
|
||||
@ -2381,6 +2372,7 @@ ivi-fertility.com: max-age too low: 0
|
||||
ivi.es: max-age too low: 0
|
||||
ivk.website: could not connect to host
|
||||
ivo.co.za: could not connect to host
|
||||
iwannarefill.com: could not connect to host
|
||||
ix8.ru: [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 118" data: no]
|
||||
ixec2.tk: could not connect to host
|
||||
izdiwho.com: could not connect to host
|
||||
@ -2409,7 +2401,6 @@ jamesf.xyz: could not connect to host
|
||||
jamesmaurer.com: did not receive HSTS header
|
||||
jamesmorrison.me: did not receive HSTS header
|
||||
jamourtney.com: could not connect to host
|
||||
jan-and-maaret.de: could not connect to host
|
||||
jan-roenspies.de: could not connect to host
|
||||
jan27.org: did not receive HSTS header
|
||||
janario.me: could not connect to host
|
||||
@ -2434,7 +2425,6 @@ jaylen.com.ar: did not receive HSTS header
|
||||
jayschulman.com: could not connect to host
|
||||
jayscoaching.com: did not receive HSTS header
|
||||
jayshao.com: did not receive HSTS header
|
||||
jazzncheese.com: could not connect to host
|
||||
jbn.mx: could not connect to host
|
||||
jcch.de: could not connect to host
|
||||
jcor.me: did not receive HSTS header
|
||||
@ -2480,7 +2470,6 @@ johannes-sprink.de: could not connect to host
|
||||
johnbrownphotography.ch: did not receive HSTS header
|
||||
johners.me: could not connect to host
|
||||
johnrom.com: did not receive HSTS header
|
||||
jokescoff.com: did not receive HSTS header
|
||||
jonas-keidel.de: did not receive HSTS header
|
||||
jonasgroth.se: did not receive HSTS header
|
||||
jonathan.ir: could not connect to host
|
||||
@ -2505,7 +2494,6 @@ jualautoclave.com: did not receive HSTS header
|
||||
jualssh.com: could not connect to host
|
||||
juliamweber.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 118" data: no]
|
||||
julian-kipka.de: could not connect to host
|
||||
juliangonggrijp.com: could not connect to host
|
||||
julido.de: did not receive HSTS header
|
||||
jumbox.xyz: could not connect to host
|
||||
junaos.xyz: did not receive HSTS header
|
||||
@ -2527,7 +2515,6 @@ k-rickroll-g.pw: could not connect to host
|
||||
ka-clan.com: could not connect to host
|
||||
kabinapp.com: could not connect to host
|
||||
kabuabc.com: did not receive HSTS header
|
||||
kabus.org: could not connect to host
|
||||
kadioglumakina.com.tr: did not receive HSTS header
|
||||
kaela.design: could not connect to host
|
||||
kahopoon.net: could not connect to host
|
||||
@ -2540,6 +2527,7 @@ kany.me: did not receive HSTS header
|
||||
kaplatz.is: could not connect to host
|
||||
kapucini.si: max-age too low: 0
|
||||
karaoketonight.com: could not connect to host
|
||||
karguine.in: could not connect to host
|
||||
kasilag.me: did not receive HSTS header
|
||||
katiaetdavid.fr: could not connect to host
|
||||
katproxy.online: could not connect to host
|
||||
@ -2593,7 +2581,6 @@ kirkforsenate.com: could not connect to host
|
||||
kirkpatrickdavis.com: could not connect to host
|
||||
kisa.io: could not connect to host
|
||||
kisalt.im: did not receive HSTS header
|
||||
kiss-register.org: could not connect to host
|
||||
kissart.net: could not connect to host
|
||||
kisun.co.jp: could not connect to host
|
||||
kita.id: could not connect to host
|
||||
@ -2614,7 +2601,6 @@ kletterkater.com: did not receive HSTS header
|
||||
klicktojob.de: could not connect to host
|
||||
kmartin.io: did not receive HSTS header
|
||||
knccloud.com: could not connect to host
|
||||
kngkng.com: could not connect to host
|
||||
knightsbridgegroup.org: could not connect to host
|
||||
knowledgesnapsites.com: could not connect to host
|
||||
kodexplorer.ml: could not connect to host
|
||||
@ -2650,7 +2636,6 @@ krayx.com: could not connect to host
|
||||
kreavis.com: did not receive HSTS header
|
||||
kredite.sale: could not connect to host
|
||||
kriegt.es: did not receive HSTS header
|
||||
kristikala.nl: could not connect to host
|
||||
krizevci.info: did not receive HSTS header
|
||||
kroetenfuchs.de: could not connect to host
|
||||
kropkait.pl: could not connect to host
|
||||
@ -2710,6 +2695,7 @@ langendries.eu: could not connect to host
|
||||
langhun.me: did not receive HSTS header
|
||||
laobox.fr: could not connect to host
|
||||
laozhu.me: could not connect to host
|
||||
laplaceduvillage.net: could not connect to host
|
||||
laquack.com: could not connect to host
|
||||
laredsemanario.com: did not receive HSTS header
|
||||
laserfuchs.de: did not receive HSTS header
|
||||
@ -2748,7 +2734,6 @@ lenovogaming.com: did not receive HSTS header
|
||||
lentri.com: did not receive HSTS header
|
||||
leob.in: did not receive HSTS header
|
||||
leon-jaekel.com: could not connect to host
|
||||
leonhooijer.nl: could not connect to host
|
||||
leopold.email: could not connect to host
|
||||
leopoldina.net: could not connect to host
|
||||
leopotamgroup.com: could not connect to host
|
||||
@ -2762,6 +2747,7 @@ letras.mus.br: did not receive HSTS header
|
||||
letsmultiplayerplay.com: did not receive HSTS header
|
||||
letustravel.tk: could not connect to host
|
||||
levelum.com: did not receive HSTS header
|
||||
lewis.li: could not connect to host
|
||||
lfullerdesign.com: did not receive HSTS header
|
||||
lg21.co: could not connect to host
|
||||
lgiswa.com.au: did not receive HSTS header
|
||||
@ -2777,8 +2763,8 @@ lianye3.cc: could not connect to host
|
||||
lianye4.cc: could not connect to host
|
||||
lianye5.cc: could not connect to host
|
||||
lianye6.cc: could not connect to host
|
||||
lianyexiuchang.in: could not connect to host
|
||||
liaoshuma.com: could not connect to host
|
||||
liaronce.win: could not connect to host
|
||||
libanco.com: could not connect to host
|
||||
libertyrp.org: could not connect to host
|
||||
library.linode.com: did not receive HSTS header
|
||||
@ -2824,6 +2810,8 @@ lisaco.de: could not connect to host
|
||||
listafirmelor.com: could not connect to host
|
||||
litespeed.io: could not connect to host
|
||||
little.pw: could not connect to host
|
||||
litz.ca: could not connect to host
|
||||
litzenberger.ca: could not connect to host
|
||||
livedemo.io: could not connect to host
|
||||
livej.am: could not connect to host
|
||||
livi.co: did not receive HSTS header
|
||||
@ -2843,6 +2831,7 @@ loginseite.com: could not connect to host
|
||||
lognot.net: could not connect to host
|
||||
lolicore.ch: could not connect to host
|
||||
lolidunno.com: could not connect to host
|
||||
lolmegafroi.de: could not connect to host
|
||||
londonlanguageexchange.com: could not connect to host
|
||||
lonerwolf.com: did not receive HSTS header
|
||||
look-at-my.site: could not connect to host
|
||||
@ -2855,6 +2844,7 @@ lostinweb.eu: could not connect to host
|
||||
lothai.re: did not receive HSTS header
|
||||
lothuytinhsi.com: could not connect to host
|
||||
lotsencafe.de: did not receive HSTS header
|
||||
louiewatch.com: could not connect to host
|
||||
loveable.de: could not connect to host
|
||||
loveandadoreboutique.com: could not connect to host
|
||||
lovelifelovelive.com: could not connect to host
|
||||
@ -2910,6 +2900,7 @@ maarten.nyc: did not receive HSTS header
|
||||
maartenvandekamp.nl: did not receive HSTS header
|
||||
mac-torrents.me: did not receive HSTS header
|
||||
macchaberrycream.com: could not connect to host
|
||||
macchedil.com: did not receive HSTS header
|
||||
macdj.tk: could not connect to host
|
||||
macgeneral.de: did not receive HSTS header
|
||||
macsandcheesedreams.com: could not connect to host
|
||||
@ -2922,6 +2913,8 @@ mafamane.com: could not connect to host
|
||||
mafiareturns.com: max-age too low: 2592000
|
||||
magenx.com: did not receive HSTS header
|
||||
mahamed91.pw: could not connect to host
|
||||
mahefa.co.uk: could not connect to host
|
||||
mahfouzadedimeji.com: did not receive HSTS header
|
||||
mail-settings.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
mail.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
maildragon.com: could not connect to host
|
||||
@ -3040,6 +3033,7 @@ meincloudspeicher.de: could not connect to host
|
||||
meinebo.it: could not connect to host
|
||||
melted.pw: could not connect to host
|
||||
members.mayfirst.org: did not receive HSTS header
|
||||
meme.institute: could not connect to host
|
||||
memory-plus-180.com: could not connect to host
|
||||
mensmaximus.de: did not receive HSTS header
|
||||
menthix.net: could not connect to host
|
||||
@ -3063,6 +3057,7 @@ mexbt.com: could not connect to host
|
||||
mexicanbusinessweb.mx: did not receive HSTS header
|
||||
mexicansbook.ru: could not connect to host
|
||||
mfcatalin.com: could not connect to host
|
||||
mfedderke.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 118" data: no]
|
||||
mh-bloemen.co.jp: could not connect to host
|
||||
mhdsyarif.com: did not receive HSTS header
|
||||
@ -3118,12 +3113,9 @@ mirrorx.com: did not receive HSTS header
|
||||
missrain.tw: could not connect to host
|
||||
mister.hosting: could not connect to host
|
||||
misterl.net: did not receive HSTS header
|
||||
mita.me: could not connect to host
|
||||
mitarbeiter-pc.de: could not connect to host
|
||||
mitchellrenouf.ca: could not connect to host
|
||||
mitsign.com: could not connect to host
|
||||
mittenhacks.com: could not connect to host
|
||||
miui-germany.de: did not receive HSTS header
|
||||
mivcon.net: could not connect to host
|
||||
mixtape.moe: [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 118" data: no]
|
||||
miyoshi-kikaku.co.jp: did not receive HSTS header
|
||||
@ -3144,7 +3136,6 @@ mobilethreat.net: could not connect to host
|
||||
mobilethreatnetwork.net: could not connect to host
|
||||
mobilpass.no: could not connect to host
|
||||
mobix5.com: did not receive HSTS header
|
||||
mobsender.com: could not connect to host
|
||||
mockmyapp.com: could not connect to host
|
||||
mocloud.eu: could not connect to host
|
||||
moddedark.com: could not connect to host
|
||||
@ -3155,6 +3146,7 @@ moebel-nagel.de: did not receive HSTS header
|
||||
moefi.xyz: did not receive HSTS header
|
||||
moelord.org: could not connect to host
|
||||
moen.io: did not receive HSTS header
|
||||
moeyi.xyz: could not connect to host
|
||||
mogry.net: did not receive HSTS header
|
||||
moho.kr: could not connect to host
|
||||
mona.lu: did not receive HSTS header
|
||||
@ -3172,7 +3164,6 @@ monsieurbureau.com: did not receive HSTS header
|
||||
montanacures.org: could not connect to host
|
||||
montenero.pl: could not connect to host
|
||||
montonicms.com: could not connect to host
|
||||
moobo.co.jp: could not connect to host
|
||||
moon.lc: could not connect to host
|
||||
moov.is: could not connect to host
|
||||
moparisthebest.biz: could not connect to host
|
||||
@ -3262,6 +3253,7 @@ myphonebox.de: could not connect to host
|
||||
mysecretrewards.com: did not receive HSTS header
|
||||
mysocrat.com: could not connect to host
|
||||
mystery-science-theater-3000.de: did not receive HSTS header
|
||||
mythlogic.com: did not receive HSTS header
|
||||
mytweeps.com: could not connect to host
|
||||
myweb360.de: did not receive HSTS header
|
||||
myzone.com: did not receive HSTS header
|
||||
@ -3285,7 +3277,6 @@ named.ga: could not connect to host
|
||||
nametaken-cloud.duckdns.org: could not connect to host
|
||||
namorico.me: did not receive HSTS header
|
||||
nan.zone: could not connect to host
|
||||
nanderson.me: could not connect to host
|
||||
naniki.co.uk: did not receive HSTS header
|
||||
nanogeneinc.com: could not connect to host
|
||||
nanogi.ga: could not connect to host
|
||||
@ -3299,7 +3290,6 @@ nathanmfarrugia.com: did not receive HSTS header
|
||||
natural-progesterone.net: did not receive HSTS header
|
||||
naturesystems.cz: max-age too low: 0
|
||||
natuurbehangnederland.nl: could not connect to host
|
||||
nauck.org: did not receive HSTS header
|
||||
nav.jobs: could not connect to host
|
||||
naval.tf: could not connect to host
|
||||
navenlle.com: did not receive HSTS header
|
||||
@ -3331,7 +3321,7 @@ netherwind.eu: did not receive HSTS header
|
||||
netlilo.com: could not connect to host
|
||||
netloanusa.com: could not connect to host
|
||||
netmagik.com: did not receive HSTS header
|
||||
netresourcedesign.com: could not connect to host
|
||||
netresourcedesign.com: did not receive HSTS header
|
||||
nettefoundation.com: could not connect to host
|
||||
networx-online.de: could not connect to host
|
||||
netzbit.de: could not connect to host
|
||||
@ -3383,6 +3373,7 @@ nightx.uk: could not connect to host
|
||||
niho.jp: did not receive HSTS header
|
||||
nikcub.com: could not connect to host
|
||||
niklaslindblad.se: did not receive HSTS header
|
||||
nikobradshaw.com: did not receive HSTS header
|
||||
nikomo.fi: could not connect to host
|
||||
ninchisho-online.com: did not receive HSTS header
|
||||
ninhs.org: did not receive HSTS header
|
||||
@ -3416,10 +3407,8 @@ nopex.no: could not connect to host
|
||||
nopol.de: could not connect to host
|
||||
norandom.com: could not connect to host
|
||||
norb.at: could not connect to host
|
||||
nordseeblicke.de: could not connect to host
|
||||
nosecretshop.com: did not receive HSTS header
|
||||
notadd.com: did not receive HSTS header
|
||||
notenoughtime.de: could not connect to host
|
||||
nottheonion.net: did not receive HSTS header
|
||||
nouvelle-vague-saint-cast.fr: did not receive HSTS header
|
||||
novacoast.com: did not receive HSTS header
|
||||
@ -3475,6 +3464,7 @@ o-rickroll-y.pw: could not connect to host
|
||||
o0o.one: could not connect to host
|
||||
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 118" data: no]
|
||||
obermeiers.eu: 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
|
||||
@ -3505,10 +3495,9 @@ ominto.com: max-age too low: 0
|
||||
omniti.com: max-age too low: 1
|
||||
omquote.gq: could not connect to host
|
||||
omskit.ru: did not receive HSTS header
|
||||
onaboat.se: could not connect to host
|
||||
oneb4nk.com: could not connect to host
|
||||
oneclickloan.com: could not connect to host
|
||||
onecycling.my: could not connect to host
|
||||
onecycling.world: could not connect to host
|
||||
onefour.co: could not connect to host
|
||||
onehourloan.com: could not connect to host
|
||||
oneminute.io: did not receive HSTS header
|
||||
@ -3588,7 +3577,7 @@ otakuworld.de: could not connect to host
|
||||
othercode.nl: could not connect to host
|
||||
othermedia.cc: [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 118" data: no]
|
||||
otherstuff.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 118" data: no]
|
||||
otichi.com: could not connect to host
|
||||
otichi.com: did not receive HSTS header
|
||||
ottospora.nl: could not connect to host
|
||||
ourbank.com: did not receive HSTS header
|
||||
outdoorproducts.com: did not receive HSTS header
|
||||
@ -3638,7 +3627,6 @@ papercard.co.uk: did not receive HSTS header
|
||||
paperturn.com: did not receive HSTS header
|
||||
papierniak.net: could not connect to host
|
||||
papygeek.com: could not connect to host
|
||||
paradiselost.com: could not connect to host
|
||||
parent5446.us: could not connect to host
|
||||
parentmail.co.uk: did not receive HSTS header
|
||||
parithy.net: could not connect to host
|
||||
@ -3661,13 +3649,14 @@ pastaf.com: could not connect to host
|
||||
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: could not connect to host
|
||||
paster.li: did not receive HSTS header
|
||||
pataua.kiwi: did not receive HSTS header
|
||||
paternitydnatest.com: could not connect to host
|
||||
patientinsight.net: could not connect to host
|
||||
patt.us: did not receive HSTS header
|
||||
paul-kerebel.pro: could not connect to host
|
||||
paulchen.at: could not connect to host
|
||||
paulewen.ca: could not connect to host
|
||||
paulyang.cn: did not receive HSTS header
|
||||
pavelfojt.cz: did not receive HSTS header
|
||||
paxwinkel.nl: did not receive HSTS header
|
||||
@ -3687,7 +3676,6 @@ pdf.yt: could not connect to host
|
||||
peakapp.nl: could not connect to host
|
||||
pebblesdemo.com: could not connect to host
|
||||
peerherrmann.de: could not connect to host
|
||||
peetah.com: could not connect to host
|
||||
peissen.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 118" data: no]
|
||||
pekkapikkarainen.fi: did not receive HSTS header
|
||||
pekkarik.ru: could not connect to host
|
||||
@ -3756,6 +3744,7 @@ pittonpreschool.com: did not receive HSTS header
|
||||
pixdigital.net: could not connect to host
|
||||
pixel.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
pixelcode.com.au: could not connect to host
|
||||
pixelcubed.com: could not connect to host
|
||||
pixelhero.co.uk: did not receive HSTS header
|
||||
pixelminers.net: could not connect to host
|
||||
pixi.me: could not connect to host
|
||||
@ -3855,7 +3844,6 @@ production.vn: did not receive HSTS header
|
||||
professionalboundaries.com: did not receive HSTS header
|
||||
profi-durchgangsmelder.de: did not receive HSTS header
|
||||
profivps.com: could not connect to host
|
||||
profpay.com: could not connect to host
|
||||
profundr.com: could not connect to host
|
||||
profusion.io: could not connect to host
|
||||
progblog.net: could not connect to host
|
||||
@ -3899,6 +3887,7 @@ pushapp.org: did not receive HSTS header
|
||||
pwd.ovh: could not connect to host
|
||||
pwnies.dk: could not connect to host
|
||||
py.search.yahoo.com: did not receive HSTS header
|
||||
pycrypto.org: could not connect to host
|
||||
pyol.org: could not connect to host
|
||||
pypi-status.org: could not connect to host
|
||||
pyplo.org: did not receive HSTS header
|
||||
@ -3977,7 +3966,7 @@ rcafox.com: could not connect to host
|
||||
rcorporation.be: did not receive HSTS header
|
||||
rcpcbd.com: did not receive HSTS header
|
||||
rdh.asia: could not connect to host
|
||||
rdns.im: could not connect to host
|
||||
rdns.im: did not receive HSTS header
|
||||
re-customer.net: did not receive HSTS header
|
||||
reachr.com: could not connect to host
|
||||
reader.ga: could not connect to host
|
||||
@ -3990,7 +3979,7 @@ rebekaesgabor.online: could not connect to host
|
||||
recommended.reviews: could not connect to host
|
||||
redable.hosting: could not connect to host
|
||||
redar.xyz: could not connect to host
|
||||
reddiseals.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 118" data: no]
|
||||
reddiseals.com: did not receive HSTS header
|
||||
reddit.com: did not receive HSTS header
|
||||
rede.ca: did not receive HSTS header
|
||||
redicabo.de: could not connect to host
|
||||
@ -4005,6 +3994,7 @@ regenerescence.com: did not receive HSTS header
|
||||
reggae-cdmx.com: did not receive HSTS header
|
||||
rei.ki: could not connect to host
|
||||
reic.me: could not connect to host
|
||||
reinaldudras.ee: did not receive HSTS header
|
||||
reisyukaku.org: did not receive HSTS header
|
||||
rejo.in: could not connect to host
|
||||
rejuvemedspa.com: did not receive HSTS header
|
||||
@ -4047,7 +4037,6 @@ revtut.net: did not receive HSTS header
|
||||
rewardstock.com: max-age too low: 0
|
||||
rewrite3.com: could not connect to host
|
||||
rex.st: could not connect to host
|
||||
rezept-planer.de: could not connect to host
|
||||
rhapsodhy.hu: could not connect to host
|
||||
rhdigital.pro: could not connect to host
|
||||
rhering.de: could not connect to host
|
||||
@ -4116,6 +4105,7 @@ royalpub.net: did not receive HSTS header
|
||||
royalvisiongroup.com: could not connect to host
|
||||
rprimas.duckdns.org: could not connect to host
|
||||
rr.in.th: could not connect to host
|
||||
rring.me: could not connect to host
|
||||
rrke.cc: did not receive HSTS header
|
||||
rsajeey.info: could not connect to host
|
||||
rsf.io: could not connect to host
|
||||
@ -4159,7 +4149,6 @@ sairai.bid: did not receive HSTS header
|
||||
sakaki.anime.my: max-age too low: 5184000
|
||||
sakaserver.com: did not receive HSTS header
|
||||
sakurabuff.com: did not receive HSTS header
|
||||
salesmachine.io: did not receive HSTS header
|
||||
salserocafe.com: did not receive HSTS header
|
||||
salserototal.com: could not connect to host
|
||||
saltedskies.com: could not connect to host
|
||||
@ -4189,16 +4178,14 @@ satsukii.moe: could not connect to host
|
||||
saturne.tk: could not connect to host
|
||||
saturngames.co.uk: did not receive HSTS header
|
||||
saucyfox.net: did not receive HSTS header
|
||||
sauerbrey.eu: could not connect to host
|
||||
saunasandstuff.ca: did not receive HSTS header
|
||||
saunasandstuff.com: did not receive HSTS header
|
||||
savannahtasteexperience.com: did not receive HSTS header
|
||||
saveyour.biz: did not receive HSTS header
|
||||
sawamura-rental.com: did not receive HSTS header
|
||||
say-hanabi.com: did not receive HSTS header
|
||||
sazima.ru: did not receive HSTS header
|
||||
sbox-archives.com: could not connect to host
|
||||
sby.de: could not connect to host
|
||||
sby.de: did not receive HSTS header
|
||||
sc4le.com: could not connect to host
|
||||
schadegarant.net: could not connect to host
|
||||
schnell-gold.com: could not connect to host
|
||||
@ -4310,7 +4297,6 @@ shareimg.xyz: could not connect to host
|
||||
sharepass.pw: could not connect to host
|
||||
shauncrowley.co.uk: could not connect to host
|
||||
shaunwheelhou.se: could not connect to host
|
||||
shav.it: could not connect to host
|
||||
shawnh.net: could not connect to host
|
||||
shellj.me: max-age too low: 86400
|
||||
shellsec.pw: did not receive HSTS header
|
||||
@ -4462,7 +4448,7 @@ sonic.network: did not receive HSTS header
|
||||
sonicrainboom.rocks: did not receive HSTS header
|
||||
soobi.org: did not receive HSTS header
|
||||
soondy.com: did not receive HSTS header
|
||||
sortaweird.net: could not connect to host
|
||||
sosaka.ml: could not connect to host
|
||||
sotor.de: did not receive HSTS header
|
||||
soulema.com: could not connect to host
|
||||
soulfulglamour.uk: could not connect to host
|
||||
@ -4519,6 +4505,7 @@ srevilak.net: did not receive HSTS header
|
||||
srna.sk: could not connect to host
|
||||
srrr.ca: could not connect to host
|
||||
ss.wtf: could not connect to host
|
||||
sscd.no: could not connect to host
|
||||
ssdax.com: did not receive HSTS header
|
||||
ssl.panoramio.com: did not receive HSTS header
|
||||
ssl.rip: could not connect to host
|
||||
@ -4545,7 +4532,7 @@ stash.ai: did not receive HSTS header
|
||||
state-sponsored-actors.net: could not connect to host
|
||||
statementinsertsforless.com: did not receive HSTS header
|
||||
stateofexception.io: could not connect to host
|
||||
static.or.at: could not connect to host
|
||||
static.or.at: did not receive HSTS header
|
||||
staticanime.net: could not connect to host
|
||||
stationaryjourney.com: did not receive HSTS header
|
||||
stationcharlie.co.za: did not receive HSTS header
|
||||
@ -4585,7 +4572,7 @@ storeden.com: did not receive HSTS header
|
||||
storefrontify.com: did not receive HSTS header
|
||||
stormhub.org: could not connect to host
|
||||
stqry.com: did not receive HSTS header
|
||||
str0.at: could not connect to host
|
||||
str0.at: did not receive HSTS header
|
||||
strasweb.fr: did not receive HSTS header
|
||||
strbt.de: could not connect to host
|
||||
streamingeverywhere.com: did not receive HSTS header
|
||||
@ -4655,7 +4642,6 @@ swimbee.nl: did not receive HSTS header
|
||||
swimming.ca: did not receive HSTS header
|
||||
swmd5c.org: did not receive HSTS header
|
||||
sxbk.pw: could not connect to host
|
||||
sy-anduril.de: could not connect to host
|
||||
syam.cc: could not connect to host
|
||||
sydgrabber.tk: could not connect to host
|
||||
sykl.us: could not connect to host
|
||||
@ -4670,7 +4656,6 @@ syntheticmotoroil.org: did not receive HSTS header
|
||||
syriatalk.biz: could not connect to host
|
||||
syriatalk.org: could not connect to host
|
||||
syrocon.ch: could not connect to host
|
||||
sysadmin.pm: did not receive HSTS header
|
||||
sysadmin.xyz: [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 118" data: no]
|
||||
syso.name: could not connect to host
|
||||
szaszm.tk: max-age too low: 0
|
||||
@ -4693,6 +4678,7 @@ tandarts-haarlem.nl: did not receive HSTS header
|
||||
tangel.me: could not connect to host
|
||||
tangibilizing.com: could not connect to host
|
||||
tante-bugil.net: did not receive HSTS header
|
||||
tanze-jetzt.de: did not receive HSTS header
|
||||
tapfinder.ca: could not connect to host
|
||||
tapka.cz: did not receive HSTS header
|
||||
tappublisher.com: did not receive HSTS header
|
||||
@ -4739,6 +4725,7 @@ tegelsensanitaironline.nl: did not receive HSTS header
|
||||
teknologi.or.id: could not connect to host
|
||||
teknotes.co.uk: could not connect to host
|
||||
tekshrek.com: did not receive HSTS header
|
||||
tel-dithmarschen.de: did not receive HSTS header
|
||||
telefonnummer.online: could not connect to host
|
||||
telefoonnummerinfo.nl: could not connect to host
|
||||
telescam.com: could not connect to host
|
||||
@ -4836,9 +4823,9 @@ thomasschweizer.net: could not connect to host
|
||||
thorncreek.net: did not receive HSTS header
|
||||
thriveapproach.co.uk: did not receive HSTS header
|
||||
thrivewellnesshub.co.za: could not connect to host
|
||||
thrx.net: could not connect to host
|
||||
thumbtack.com: did not receive HSTS header
|
||||
thusoy.com: did not receive HSTS header
|
||||
ti.blog.br: could not connect to host
|
||||
tickettoaster.de: max-age too low: 0
|
||||
tickopa.co.uk: could not connect to host
|
||||
tickreport.com: did not receive HSTS header
|
||||
@ -4862,7 +4849,6 @@ timotrans.eu: did not receive HSTS header
|
||||
timowi.de: could not connect to host
|
||||
timowi.net: could not connect to host
|
||||
timwittenberg.com: could not connect to host
|
||||
tinyvpn.net: could not connect to host
|
||||
tipsyk.ru: could not connect to host
|
||||
tirex.media: did not receive HSTS header
|
||||
titanleaf.com: could not connect to host
|
||||
@ -4871,7 +4857,6 @@ tittelbach.at: did not receive HSTS header
|
||||
titties.ml: could not connect to host
|
||||
tjc.wiki: could not connect to host
|
||||
tkappertjedemetamorfose.nl: could not connect to host
|
||||
tlach.cz: did not receive HSTS header
|
||||
tlo.hosting: could not connect to host
|
||||
tlo.link: did not receive HSTS header
|
||||
tlo.network: could not connect to host
|
||||
@ -4932,7 +4917,7 @@ tradinews.fr: could not connect to host
|
||||
tradingcentre.com.au: did not receive HSTS header
|
||||
tradinghope.com: could not connect to host
|
||||
traindb.nl: did not receive HSTS header
|
||||
trainut.com: could not connect to host
|
||||
trainut.com: did not receive HSTS header
|
||||
transitownplaza.com: could not connect to host
|
||||
translate.googleapis.com: did not receive HSTS header (error ignored - included regardless)
|
||||
transportal.sk: did not receive HSTS header
|
||||
@ -4947,7 +4932,6 @@ trinitycore.org: max-age too low: 2592000
|
||||
tripdelta.com: did not receive HSTS header
|
||||
trixies-wish.nz: could not connect to host
|
||||
trollme.me: could not connect to host
|
||||
trondelan.no: did not receive HSTS header
|
||||
trunkjunk.co: could not connect to host
|
||||
trusitio.com: did not receive HSTS header
|
||||
trusteecar.com: could not connect to host
|
||||
@ -4974,12 +4958,12 @@ turtlementors.com: could not connect to host
|
||||
tuturulianda.com: did not receive HSTS header
|
||||
tuvalie.com: could not connect to host
|
||||
tuxcall.de: could not connect to host
|
||||
tuxcloud.net: could not connect to host
|
||||
tuxz.net: did not receive HSTS header
|
||||
tv.search.yahoo.com: could not connect to host
|
||||
tvtubeflix.com: did not receive HSTS header
|
||||
tvz-materijali.com: could not connect to host
|
||||
twarog.cc: could not connect to host
|
||||
twillionmas.com: could not connect to host
|
||||
twinkseason.ca: could not connect to host
|
||||
twinkseason.co: could not connect to host
|
||||
twinkseason.co.uk: did not receive HSTS header
|
||||
@ -4990,6 +4974,7 @@ twinkseason.xyz: could not connect to host
|
||||
twist.party: could not connect to host
|
||||
twogo.com: did not receive HSTS header
|
||||
twolinepassbrewing.com: could not connect to host
|
||||
twotube.ie: could not connect to host
|
||||
tx041cap.org: did not receive HSTS header
|
||||
txclimbers.com: could not connect to host
|
||||
txf.pw: could not connect to host
|
||||
@ -5007,7 +4992,7 @@ uadp.pw: did not receive HSTS header
|
||||
uber.com.au: did not receive HSTS header
|
||||
uberfunction.com: did not receive HSTS header
|
||||
ubicloud.de: could not connect to host
|
||||
ubicv.com: could not connect to host
|
||||
ubicv.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 118" data: no]
|
||||
ublox.com: did not receive HSTS header
|
||||
ubuntuhot.com: did not receive HSTS header
|
||||
uega.net: did not receive HSTS header
|
||||
@ -5050,7 +5035,6 @@ unfuddle.cn: could not connect to host
|
||||
uni-games.com: could not connect to host
|
||||
unicooo.com: did not receive HSTS header
|
||||
unikitty-on-tour.com: could not connect to host
|
||||
unionstationapp.com: could not connect to host
|
||||
unison.com: did not receive HSTS header
|
||||
unisyssecurity.com: did not receive HSTS header
|
||||
unitedcyberdevelopment.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 118" data: no]
|
||||
@ -5146,7 +5130,7 @@ vglimg.com: could not connect to host
|
||||
vhost.co.id: could not connect to host
|
||||
viadeux.com: could not connect to host
|
||||
videnskabsklubben.dk: did not receive HSTS header
|
||||
videomuz.com: could not connect to host
|
||||
videomuz.com: did not receive HSTS header
|
||||
videotogel.net: did not receive HSTS header
|
||||
vidid.net: did not receive HSTS header
|
||||
vidz.ga: could not connect to host
|
||||
@ -5172,14 +5156,12 @@ visage.ch: max-age too low: 0
|
||||
visiontree-beta.eu: could not connect to host
|
||||
visitbroadstairs.com: could not connect to host
|
||||
vissanum.com: did not receive HSTS header
|
||||
vistarait.com: could not connect to host
|
||||
vistarait.com: did not receive HSTS header
|
||||
vitagenda.nl: could not connect to host
|
||||
vitalita.cz: did not receive HSTS header
|
||||
vitalorange.com: did not receive HSTS header
|
||||
vitta.me: did not receive HSTS header
|
||||
viva-french.com: did not receive HSTS header
|
||||
vivocloud.com: did not receive HSTS header
|
||||
vizional.com: could not connect to host
|
||||
vlastimilburian.cz: did not receive HSTS header
|
||||
vlora.city: could not connect to host
|
||||
vm0.eu: did not receive HSTS header
|
||||
@ -5208,7 +5190,6 @@ vsestiralnie.com: did not receive HSTS header
|
||||
vvl.me: did not receive HSTS header
|
||||
vxstream-sandbox.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 118" data: no]
|
||||
vyncke.org: max-age too low: 2678400
|
||||
vyskocil.eu: could not connect to host
|
||||
vzk.io: could not connect to host
|
||||
w.wiki: could not connect to host
|
||||
w4a.fr: did not receive HSTS header
|
||||
@ -5284,7 +5265,6 @@ weltverschwoerung.de: did not receive HSTS header
|
||||
weme.eu: could not connect to host
|
||||
werdeeintimo.de: did not receive HSTS header
|
||||
werkenbijkfc.nl: did not receive HSTS header
|
||||
werkplaatsoost.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 118" data: no]
|
||||
werkruimtebottendaal.nl: did not receive HSTS header
|
||||
wesleyharris.ca: did not receive HSTS header
|
||||
westendzone.com: max-age too low: 0
|
||||
@ -5317,7 +5297,7 @@ wikiclash.info: could not connect to host
|
||||
wikisports.eu: could not connect to host
|
||||
wilf1rst.com: could not connect to host
|
||||
willcipriano.com: could not connect to host
|
||||
william.si: could not connect to host
|
||||
william.si: did not receive HSTS header
|
||||
willosagiede.com: did not receive HSTS header
|
||||
winaes.com: did not receive HSTS header
|
||||
winclient.cn: could not connect to host
|
||||
@ -5334,7 +5314,6 @@ wirc.gr: could not connect to host
|
||||
wiretrip.io: could not connect to host
|
||||
wiseloan.com: did not receive HSTS header
|
||||
wishcert.com: could not connect to host
|
||||
wit.ai: did not receive HSTS header
|
||||
withgoogle.com: did not receive HSTS header (error ignored - included regardless)
|
||||
withmy.beer: could not connect to host
|
||||
withustrading.com: could not connect to host
|
||||
@ -5372,7 +5351,6 @@ writeapp.me: could not connect to host
|
||||
wsscompany.com.ve: could not connect to host
|
||||
wufu.org: could not connect to host
|
||||
wuhengmin.com: did not receive HSTS header
|
||||
wukongmusic.us: [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 118" data: no]
|
||||
wurzelzwerg.net: could not connect to host
|
||||
wusx.club: could not connect to host
|
||||
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 118" data: no]
|
||||
@ -5399,7 +5377,6 @@ www.surfeasy.com: did not receive HSTS header
|
||||
www.zenpayroll.com: did not receive HSTS header
|
||||
www3.info: did not receive HSTS header
|
||||
wxukang.cn: could not connect to host
|
||||
wybmabiity.com: could not connect to host
|
||||
wyzphoto.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 118" data: no]
|
||||
x-power-detox.com: could not connect to host
|
||||
x2w.io: could not connect to host
|
||||
@ -5419,6 +5396,7 @@ xenesisziarovky.sk: could not connect to host
|
||||
xett.com: did not receive HSTS header
|
||||
xf-liam.com: did not receive HSTS header
|
||||
xfive.de: did not receive HSTS header
|
||||
xia100.xyz: could not connect to host
|
||||
xiaody.me: could not connect to host
|
||||
xiaolvmu.com: could not connect to host
|
||||
xiaolvmu.me: could not connect to host
|
||||
@ -5439,7 +5417,6 @@ xn--7rvz7ku3ppnr.jp: did not receive HSTS header
|
||||
xn--80aaihqncaejjobbu6v.xn--p1ai: max-age too low: 10000
|
||||
xn--9pr52k0p5a.com: did not receive HSTS header
|
||||
xn--datenrettung-mnchen-jbc.com: did not receive HSTS header
|
||||
xn--dmonenjger-q5ag.net: could not connect to host
|
||||
xn--lgb3a8bcpn.cf: could not connect to host
|
||||
xn--lgb3a8bcpn.ga: could not connect to host
|
||||
xn--lgb3a8bcpn.gq: could not connect to host
|
||||
@ -5494,6 +5471,7 @@ yippie.nl: did not receive HSTS header
|
||||
yjsoft.me: did not receive HSTS header
|
||||
ynode.co: did not receive HSTS header
|
||||
ynsn.nl: did not receive HSTS header
|
||||
yoga.is-an-engineer.com: could not connect to host
|
||||
yokeepo.com: max-age too low: 0
|
||||
yoloboatrentals.com: did not receive HSTS header
|
||||
yoloprod.fr: could not connect to host
|
||||
@ -5514,7 +5492,7 @@ yuko.moe: could not connect to host
|
||||
yunzhu.li: did not receive HSTS header
|
||||
yunzhu.org: could not connect to host
|
||||
yutabon.com: could not connect to host
|
||||
yuushou.com: could not connect to host
|
||||
yutangyun.com: could not connect to host
|
||||
yux.io: did not receive HSTS header
|
||||
ywei.org: could not connect to host
|
||||
yzal.io: did not receive HSTS header
|
||||
@ -5525,6 +5503,7 @@ za.search.yahoo.com: did not receive HSTS header
|
||||
zachgibbens.org: could not connect to host
|
||||
zadieheimlich.com: did not receive HSTS header
|
||||
zakmccrac.de: did not receive HSTS header
|
||||
zamis.net: did not receive HSTS header
|
||||
zamorano.edu: could not connect to host
|
||||
zao.fi: could not connect to host
|
||||
zap.yt: could not connect to host
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -212,16 +212,10 @@ function* createTempFile() {
|
||||
let browser = gBrowser.selectedBrowser;
|
||||
let path = fileInTempDir().path;
|
||||
let fileCreated = yield ContentTask.spawn(browser, path, createFile);
|
||||
if (!fileCreated && isWin()) {
|
||||
// TODO: fix 1329294 and enable this test for Windows.
|
||||
// Not using todo() because this only fails on automation.
|
||||
info("ignoring failure to write to content temp due to 1329294\n");
|
||||
} else {
|
||||
ok(fileCreated == true, "creating a file in content temp is permitted");
|
||||
// now delete the file
|
||||
let fileDeleted = yield ContentTask.spawn(browser, path, deleteFile);
|
||||
ok(fileDeleted == true, "deleting a file in content temp is permitted");
|
||||
}
|
||||
ok(fileCreated == true, "creating a file in content temp is permitted");
|
||||
// now delete the file
|
||||
let fileDeleted = yield ContentTask.spawn(browser, path, deleteFile);
|
||||
ok(fileDeleted == true, "deleting a file in content temp is permitted");
|
||||
}
|
||||
|
||||
// Test reading files and dirs from web and file content processes.
|
||||
|
@ -21,8 +21,8 @@ config = {
|
||||
] + [
|
||||
# File, from, to
|
||||
("{}/{}".format(d, f),
|
||||
"ac_add_options --with-l10n-base=../../mozilla-aurora",
|
||||
"ac_add_options --with-l10n-base=../../mozilla-beta")
|
||||
"ac_add_options --with-l10n-base=../../mozilla-beta",
|
||||
"ac_add_options --with-l10n-base=../../mozilla-release")
|
||||
for d in ["mobile/android/config/mozconfigs/android-api-15/",
|
||||
"mobile/android/config/mozconfigs/android-x86/"]
|
||||
for f in ["l10n-nightly", "l10n-release"]
|
||||
|
@ -147,7 +147,8 @@ class WebPlatformTest(TestingMixin, MercurialScript, BlobUploadMixin, CodeCovera
|
||||
"--binary=%s" % self.binary_path,
|
||||
"--symbols-path=%s" % self.query_symbols_url(),
|
||||
"--stackwalk-binary=%s" % self.query_minidump_stackwalk(),
|
||||
"--stackfix-dir=%s" % os.path.join(dirs["abs_test_install_dir"], "bin")]
|
||||
"--stackfix-dir=%s" % os.path.join(dirs["abs_test_install_dir"], "bin"),
|
||||
"--run-by-dir=3"]
|
||||
|
||||
for test_type in c.get("test_type", []):
|
||||
cmd.append("--test-type=%s" % test_type)
|
||||
|
@ -627,7 +627,6 @@ class PathGroupedSource(TestSource):
|
||||
self.current_queue.put(item)
|
||||
except Empty:
|
||||
return None
|
||||
|
||||
return self.current_queue
|
||||
|
||||
def requeue_test(self, test):
|
||||
|
@ -511,9 +511,10 @@ class TestRunnerManager(threading.Thread):
|
||||
return None, None
|
||||
try:
|
||||
# Need to block here just to allow for contention with other processes
|
||||
test = test_queue.get(block=True, timeout=1)
|
||||
test = test_queue.get(block=True, timeout=2)
|
||||
except Empty:
|
||||
pass
|
||||
if test_queue.empty():
|
||||
test_queue = None
|
||||
return test, test_queue
|
||||
|
||||
def run_test(self):
|
||||
|
@ -0,0 +1,4 @@
|
||||
[EventListener-invoke-legacy.html]
|
||||
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1351409
|
||||
|
||||
|
@ -0,0 +1,4 @@
|
||||
[resume-timer-on-history-back.html]
|
||||
type: testharness
|
||||
disabled:
|
||||
if (os == "win"): https://bugzilla.mozilla.org/show_bug.cgi?id=1321179
|
@ -1,6 +1,5 @@
|
||||
[scroll-restoration-fragment-scrolling-cross-origin.html]
|
||||
type: testharness
|
||||
expected: ERROR
|
||||
[Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
@ -47,12 +47,11 @@
|
||||
}, function() {
|
||||
// coming back from history, scrollRestoration should be set to manual and respected
|
||||
assert_equals(iframe.contentWindow.location.href, baseURL + '/resources/page-with-fragment.html#fragment', 'should be back on page-with-fragment page');
|
||||
iframe.contentWindow.requestAnimationFrame(function() {
|
||||
iframe.contentWindow.requestAnimationFrame(t.step_func_done(function() {
|
||||
assert_equals(iframe.contentWindow.history.scrollRestoration, 'manual', 'navigating back should retain scrollRestoration value');
|
||||
assert_equals(iframe.contentWindow.scrollX, 0, 'should not scroll to fragment');
|
||||
assert_equals(iframe.contentWindow.scrollY, 0, 'should not scroll to fragment');
|
||||
t.done();
|
||||
});
|
||||
}));
|
||||
}
|
||||
];
|
||||
|
||||
@ -64,4 +63,4 @@
|
||||
iframe.onload = next;
|
||||
next();
|
||||
}, 'Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation');
|
||||
</script>
|
||||
</script>
|
||||
|
@ -3816,42 +3816,6 @@
|
||||
"n_buckets": 20,
|
||||
"description": "Time spent shutting down plugins (ms)"
|
||||
},
|
||||
"FLASH_PLUGIN_STATES": {
|
||||
"expires_in_version": "50",
|
||||
"kind": "enumerated",
|
||||
"n_values": 20,
|
||||
"description": "A flash object's initialization state"
|
||||
},
|
||||
"FLASH_PLUGIN_AREA": {
|
||||
"expires_in_version": "50",
|
||||
"kind": "exponential",
|
||||
"low": 256,
|
||||
"high": 16777216,
|
||||
"n_buckets": 50,
|
||||
"description": "Flash object area (width * height)"
|
||||
},
|
||||
"FLASH_PLUGIN_WIDTH": {
|
||||
"expires_in_version": "50",
|
||||
"kind": "linear",
|
||||
"low": 1,
|
||||
"high": 2000,
|
||||
"n_buckets": 50,
|
||||
"description": "Flash object width"
|
||||
},
|
||||
"FLASH_PLUGIN_HEIGHT": {
|
||||
"expires_in_version": "50",
|
||||
"kind": "linear",
|
||||
"low": 1,
|
||||
"high": 2000,
|
||||
"n_buckets": 50,
|
||||
"description": "Flash object height"
|
||||
},
|
||||
"FLASH_PLUGIN_INSTANCES_ON_PAGE": {
|
||||
"expires_in_version": "50",
|
||||
"kind": "enumerated",
|
||||
"n_values": 30,
|
||||
"description": "Flash object instances count on page"
|
||||
},
|
||||
"MOZ_SQLITE_OPEN_MS": {
|
||||
"expires_in_version": "default",
|
||||
"kind": "exponential",
|
||||
|
@ -247,11 +247,6 @@
|
||||
"FENNEC_TOPSITES_LOADER_TIME_MS",
|
||||
"FENNEC_WAS_KILLED",
|
||||
"FETCH_IS_MAINTHREAD",
|
||||
"FLASH_PLUGIN_AREA",
|
||||
"FLASH_PLUGIN_HEIGHT",
|
||||
"FLASH_PLUGIN_INSTANCES_ON_PAGE",
|
||||
"FLASH_PLUGIN_STATES",
|
||||
"FLASH_PLUGIN_WIDTH",
|
||||
"FONTLIST_INITFACENAMELISTS",
|
||||
"FONTLIST_INITOTHERFAMILYNAMES",
|
||||
"FONT_CACHE_HIT",
|
||||
@ -957,11 +952,6 @@
|
||||
"FENNEC_WAS_KILLED",
|
||||
"FETCH_IS_MAINTHREAD",
|
||||
"FIND_PLUGINS",
|
||||
"FLASH_PLUGIN_AREA",
|
||||
"FLASH_PLUGIN_HEIGHT",
|
||||
"FLASH_PLUGIN_INSTANCES_ON_PAGE",
|
||||
"FLASH_PLUGIN_STATES",
|
||||
"FLASH_PLUGIN_WIDTH",
|
||||
"FONTLIST_INITFACENAMELISTS",
|
||||
"FONTLIST_INITOTHERFAMILYNAMES",
|
||||
"FONT_CACHE_HIT",
|
||||
|
@ -23,6 +23,7 @@ function* runTests() {
|
||||
|
||||
function createThumbnail(aURL) {
|
||||
addTab(aURL, function() {
|
||||
gBrowserThumbnails.clearTopSiteURLCache();
|
||||
whenFileExists(aURL, function() {
|
||||
gBrowser.removeTab(gBrowser.selectedTab);
|
||||
next();
|
||||
|
@ -103,6 +103,7 @@ function promiseClearHistory(aUseRange) {
|
||||
function promiseCreateThumbnail() {
|
||||
return new Promise(resolve => {
|
||||
addTab(URL, function() {
|
||||
gBrowserThumbnails.clearTopSiteURLCache();
|
||||
whenFileExists(URL, function() {
|
||||
gBrowser.removeTab(gBrowser.selectedTab);
|
||||
resolve();
|
||||
|
@ -746,7 +746,14 @@ GetContentProcessTempBaseDirKey()
|
||||
nsresult
|
||||
nsXREDirProvider::LoadContentProcessTempDir()
|
||||
{
|
||||
mContentTempDir = GetContentProcessSandboxTempDir();
|
||||
// The parent is responsible for creating the sandbox temp dir.
|
||||
if (XRE_IsParentProcess()) {
|
||||
mContentProcessSandboxTempDir = CreateContentProcessSandboxTempDir();
|
||||
mContentTempDir = mContentProcessSandboxTempDir;
|
||||
} else {
|
||||
mContentTempDir = GetContentProcessSandboxTempDir();
|
||||
}
|
||||
|
||||
if (mContentTempDir) {
|
||||
return NS_OK;
|
||||
} else {
|
||||
@ -1202,10 +1209,11 @@ nsXREDirProvider::DoStartup()
|
||||
obsSvc->NotifyObservers(nullptr, "profile-initial-state", nullptr);
|
||||
|
||||
#if (defined(XP_WIN) || defined(XP_MACOSX)) && defined(MOZ_CONTENT_SANDBOX)
|
||||
// The parent is responsible for creating the sandbox temp dir
|
||||
if (XRE_IsParentProcess()) {
|
||||
mContentProcessSandboxTempDir = CreateContentProcessSandboxTempDir();
|
||||
mContentTempDir = mContentProcessSandboxTempDir;
|
||||
// Makes sure the content temp dir has been loaded if it hasn't been
|
||||
// already. In the parent this ensures it has been created before we attempt
|
||||
// to start any content processes.
|
||||
if (!mContentTempDir) {
|
||||
mozilla::Unused << NS_WARN_IF(NS_FAILED(LoadContentProcessTempDir()));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include "nsCRT.h"
|
||||
#include "mozilla/BasicEvents.h"
|
||||
#include "mozilla/Services.h"
|
||||
#include "mozilla/ClearOnShutdown.h"
|
||||
|
||||
#include "gfxXlibSurface.h"
|
||||
#include "gfxContext.h"
|
||||
@ -151,13 +152,20 @@ nsDragService::~nsDragService()
|
||||
|
||||
NS_IMPL_ISUPPORTS_INHERITED(nsDragService, nsBaseDragService, nsIObserver)
|
||||
|
||||
/* static */ nsDragService*
|
||||
mozilla::StaticRefPtr<nsDragService> sDragServiceInstance;
|
||||
/* static */ already_AddRefed<nsDragService>
|
||||
nsDragService::GetInstance()
|
||||
{
|
||||
static const nsIID iid = NS_DRAGSERVICE_CID;
|
||||
nsCOMPtr<nsIDragService> dragService = do_GetService(iid);
|
||||
return static_cast<nsDragService*>(dragService.get());
|
||||
// We rely on XPCOM keeping a reference to the service.
|
||||
if (gfxPlatform::IsHeadless()) {
|
||||
return nullptr;
|
||||
}
|
||||
if (!sDragServiceInstance) {
|
||||
sDragServiceInstance = new nsDragService();
|
||||
ClearOnShutdown(&sDragServiceInstance);
|
||||
}
|
||||
|
||||
RefPtr<nsDragService> service = sDragServiceInstance.get();
|
||||
return service.forget();
|
||||
}
|
||||
|
||||
// nsIObserver
|
||||
|
@ -85,7 +85,7 @@ public:
|
||||
// Methods called from nsWindow to handle responding to GTK drag
|
||||
// destination signals
|
||||
|
||||
static nsDragService* GetInstance();
|
||||
static already_AddRefed<nsDragService> GetInstance();
|
||||
|
||||
void TargetDataReceived (GtkWidget *aWidget,
|
||||
GdkDragContext *aContext,
|
||||
|
@ -74,7 +74,7 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLFormatConverter)
|
||||
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIdleServiceGTK, nsIdleServiceGTK::GetInstance)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboardHelper)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsClipboard, Init)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDragService)
|
||||
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsDragService, nsDragService::GetInstance)
|
||||
#endif
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSound)
|
||||
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(ScreenManager, ScreenManager::GetAddRefedSingleton)
|
||||
|
@ -735,7 +735,7 @@ nsWindow::Destroy()
|
||||
}
|
||||
|
||||
// dragService will be null after shutdown of the service manager.
|
||||
nsDragService *dragService = nsDragService::GetInstance();
|
||||
RefPtr<nsDragService> dragService = nsDragService::GetInstance();
|
||||
if (dragService && this == dragService->GetMostRecentDestWindow()) {
|
||||
dragService->ScheduleLeaveEvent();
|
||||
}
|
||||
@ -3397,7 +3397,8 @@ nsWindow::OnDragDataReceivedEvent(GtkWidget *aWidget,
|
||||
{
|
||||
LOGDRAG(("nsWindow::OnDragDataReceived(%p)\n", (void*)this));
|
||||
|
||||
nsDragService::GetInstance()->
|
||||
RefPtr<nsDragService> dragService = nsDragService::GetInstance();
|
||||
dragService->
|
||||
TargetDataReceived(aWidget, aDragContext, aX, aY,
|
||||
aSelectionData, aInfo, aTime);
|
||||
}
|
||||
@ -5911,7 +5912,8 @@ drag_motion_event_cb(GtkWidget *aWidget,
|
||||
|
||||
LayoutDeviceIntPoint point = window->GdkPointToDevicePixels({ retx, rety });
|
||||
|
||||
return nsDragService::GetInstance()->
|
||||
RefPtr<nsDragService> dragService = nsDragService::GetInstance();
|
||||
return dragService->
|
||||
ScheduleMotionEvent(innerMostWindow, aDragContext,
|
||||
point, aTime);
|
||||
}
|
||||
@ -5926,7 +5928,7 @@ drag_leave_event_cb(GtkWidget *aWidget,
|
||||
if (!window)
|
||||
return;
|
||||
|
||||
nsDragService *dragService = nsDragService::GetInstance();
|
||||
RefPtr<nsDragService> dragService = nsDragService::GetInstance();
|
||||
|
||||
nsWindow *mostRecentDragWindow = dragService->GetMostRecentDestWindow();
|
||||
if (!mostRecentDragWindow) {
|
||||
@ -5983,7 +5985,8 @@ drag_drop_event_cb(GtkWidget *aWidget,
|
||||
|
||||
LayoutDeviceIntPoint point = window->GdkPointToDevicePixels({ retx, rety });
|
||||
|
||||
return nsDragService::GetInstance()->
|
||||
RefPtr<nsDragService> dragService = nsDragService::GetInstance();
|
||||
return dragService->
|
||||
ScheduleDropEvent(innerMostWindow, aDragContext,
|
||||
point, aTime);
|
||||
}
|
||||
|
@ -126,6 +126,8 @@ HeadlessWidget::DispatchEvent(WidgetGUIEvent* aEvent, nsEventStatus& aStatus)
|
||||
|
||||
if (mAttachedWidgetListener) {
|
||||
aStatus = mAttachedWidgetListener->HandleEvent(aEvent, mUseAttachedEvents);
|
||||
} else if (mWidgetListener) {
|
||||
aStatus = mWidgetListener->HandleEvent(aEvent, mUseAttachedEvents);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
6
widget/headless/tests/headless_button.html
Normal file
6
widget/headless/tests/headless_button.html
Normal file
@ -0,0 +1,6 @@
|
||||
<html>
|
||||
<head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></head>
|
||||
<body>
|
||||
<button id="btn">button</button>
|
||||
</body>
|
||||
</html>
|
@ -12,6 +12,8 @@ server.start(-1);
|
||||
const ROOT = `http://localhost:${server.identity.primaryPort}`;
|
||||
const BASE = `${ROOT}/`;
|
||||
const HEADLESS_URL = `${BASE}/headless.html`;
|
||||
const HEADLESS_BUTTON_URL = `${BASE}/headless_button.html`;
|
||||
do_register_cleanup(() => { server.stop(() => {})});
|
||||
|
||||
function loadContentWindow(webNavigation, uri) {
|
||||
return new Promise((resolve, reject) => {
|
||||
@ -88,7 +90,52 @@ add_task(function* test_snapshot() {
|
||||
ok(found, "Found blue text on page.");
|
||||
|
||||
webNavigation.close();
|
||||
yield new Promise((resolve) => {
|
||||
server.stop(resolve);
|
||||
});
|
||||
});
|
||||
|
||||
// Ensure keydown events are triggered on the windowless browser.
|
||||
add_task(function* test_keydown() {
|
||||
let windowlessBrowser = Services.appShell.createWindowlessBrowser(false);
|
||||
let webNavigation = windowlessBrowser.QueryInterface(Ci.nsIWebNavigation);
|
||||
let contentWindow = yield loadContentWindow(webNavigation, HEADLESS_URL);
|
||||
|
||||
let utils = contentWindow.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils);
|
||||
let keydown = new Promise((resolve) => {
|
||||
contentWindow.addEventListener("keydown", () => {
|
||||
resolve();
|
||||
}, { once: true });
|
||||
})
|
||||
utils.sendKeyEvent("keydown", 65, 65, 0);
|
||||
|
||||
yield keydown;
|
||||
ok(true, "Send keydown didn't crash");
|
||||
|
||||
webNavigation.close();
|
||||
});
|
||||
|
||||
// Test dragging the mouse on a button to ensure the creation of the drag
|
||||
// service doesn't crash in headless.
|
||||
add_task(function* test_mouse_drag() {
|
||||
let windowlessBrowser = Services.appShell.createWindowlessBrowser(false);
|
||||
let webNavigation = windowlessBrowser.QueryInterface(Ci.nsIWebNavigation);
|
||||
let contentWindow = yield loadContentWindow(webNavigation, HEADLESS_BUTTON_URL);
|
||||
contentWindow.resizeTo(400, 400);
|
||||
|
||||
let target = contentWindow.document.getElementById('btn');
|
||||
let rect = target.getBoundingClientRect();
|
||||
let left = rect.left;
|
||||
let top = rect.top;
|
||||
|
||||
let utils = contentWindow.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils);
|
||||
utils.sendMouseEvent("mousedown", left, top, 0, 1, 0, false, 0, 0);
|
||||
utils.sendMouseEvent("mousemove", left, top, 0, 1, 0, false, 0, 0);
|
||||
// Wait for a turn of the event loop since the synthetic mouse event
|
||||
// that creates the drag service is processed during the refresh driver.
|
||||
yield new Promise((r) => {do_execute_soon(r)});
|
||||
utils.sendMouseEvent("mouseup", left, top, 0, 1, 0, false, 0, 0);
|
||||
|
||||
ok(true, "Send mouse event didn't crash");
|
||||
|
||||
webNavigation.close();
|
||||
});
|
||||
|
@ -1,4 +1,6 @@
|
||||
[test_headless.js]
|
||||
skip-if = os != "linux"
|
||||
headless = true
|
||||
support-files = headless.html
|
||||
support-files =
|
||||
headless.html
|
||||
headless_button.html
|
||||
|
Loading…
Reference in New Issue
Block a user