This commit is contained in:
Wes Kocher 2017-04-10 16:55:21 -07:00
Родитель 199899047a 05965b79a9
Коммит 5eabc03c18
71 изменённых файлов: 17372 добавлений и 17110 удалений

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

@ -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;
};

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

@ -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;
}

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

@ -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

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

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

@ -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;

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

@ -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