author | shindli <shindli@mozilla.com> |
Sat, 03 Mar 2018 01:17:14 +0200 | |
changeset 461442 | 8fb0418948834f071dd99f6b8256b746b4a8adce |
parent 461439 | 20d25c640db36e64dfd70eb7db293870e7f3087a (current diff) |
parent 461441 | f4e33c42faa72907453381bc00fe40130c76b86e (diff) |
child 461443 | c174737a9d9b8654afeded5b810b6a3379279a1f |
push id | 1683 |
push user | sfraser@mozilla.com |
push date | Thu, 26 Apr 2018 16:43:40 +0000 |
treeherder | mozilla-release@5af6cb21869d [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | merge |
milestone | 60.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/browser/app/blocklist.xml +++ b/browser/app/blocklist.xml @@ -1,10 +1,10 @@ <?xml version='1.0' encoding='UTF-8'?> -<blocklist lastupdate="1519429178266" xmlns="http://www.mozilla.org/2006/addons-blocklist"> +<blocklist lastupdate="1519826648080" xmlns="http://www.mozilla.org/2006/addons-blocklist"> <emItems> <emItem blockID="i334" id="{0F827075-B026-42F3-885D-98981EE7B1AE}"> <prefs/> <versionRange minVersion="0" maxVersion="*" severity="3"/> </emItem> <emItem blockID="i1211" id="flvto@hotger.com"> <prefs/> <versionRange minVersion="0" maxVersion="*" severity="1"/> @@ -2206,16 +2206,20 @@ <emItem blockID="adfd98ef-cebc-406b-b1e0-61bd4c71e4b1" id="{f3c31b34-862c-4bc8-a98f-910cc6314a86}"> <prefs/> <versionRange minVersion="0" maxVersion="*" severity="3"/> </emItem> <emItem blockID="2447476f-043b-4d0b-9d3c-8e859c97d950" id="{44e4b2cf-77ba-4f76-aca7-f3fcbc2dda2f} "> <prefs/> <versionRange minVersion="0" maxVersion="*" severity="3"/> </emItem> + <emItem blockID="48b14881-5f6b-4e48-afc5-3d9a7fae26a3" id="/{0c9970a2-6874-483b-a486-2296cfe251c2}|{01c9a4a4-06dd-426b-9500-2ea6fe841b88}|{1c981c7c-30e0-4ed2-955d-6b370e0a9d19}|{2aa275f8-fabc-4766-95b2-ecfc73db310b}|{2cac0be1-10a2-4a0d-b8c5-787837ea5955}|{2eb66f6c-94b3-44f5-9de2-22371236ec99}|{2f8aade6-8717-4277-b8b1-55172d364903}|{3c27c34f-8775-491a-a1c9-fcb15beb26d3}|{3f4dea3e-dbfc-428f-a88b-36908c459e20}|{3f4191fa-8f16-47d2-9414-36bfc9e0c2bf}|{4c140bc5-c2ad-41c3-a407-749473530904}|{05a21129-af2a-464c-809f-f2df4addf209}|{5da81d3d-5db1-432a-affc-4a2fe9a70749}|{5f4e63e4-351f-4a21-a8e5-e50dc72b5566}|{7c1df23b-1fd8-42b9-8752-71fff2b979de}|{7d5e24a1-7bef-4d09-a952-b9519ec00d20}|{7d932012-b4dd-42cc-8a78-b15ca82d0e61}|{7f8bc48d-1c7c-41a0-8534-54adc079338f}|{8a61507d-dc2f-4507-a9b7-7e33b8cbc31b}|{09c8fa16-4eec-4f78-b19d-9b24b1b57e1e}|{9ce2a636-0e49-4b8e-ad17-d0c156c963b0}|{11df9391-dba5-4fe2-bd48-37a9182b796d}|{23c65153-c21e-430a-a2dc-0793410a870d}|{36a4269e-4eef-4538-baea-9dafbf6a8e2f}|{37f8e483-c782-40ed-82e9-36f101b9e41f}|{63df223d-51cf-4f76-aad8-bbc94c895ed2}|{72c1ca96-c05d-46a7-bce1-c507ec3db4ea}|{76ce213c-8e57-4a14-b60a-67a5519bd7a7}|{79db6c96-d65a-4a64-a892-3d26bd02d2d9}|{81ac42f3-3d17-4cff-85af-8b7f89c8826b}|{83d38ac3-121b-4f28-bf9c-1220bd3c643b}|{86d98522-5d42-41d5-83c2-fc57f260a3d9}|{0111c475-01e6-42ea-a9b4-27bed9eb6092}|{214cb48a-ce31-4e48-82cf-a55061f1b766}|{216e0bcc-8a23-4069-8b63-d9528b437258}|{226b0fe6-f80f-48f1-9d8d-0b7a1a04e537}|{302ef84b-2feb-460e-85ca-f5397a77aa6a}|{408a506b-2336-4671-a490-83a1094b4097}|{419be4e9-c981-478e-baa0-937cf1eea1e8}|{0432b92a-bfcf-41b9-b5f0-df9629feece1}|{449e185a-dd91-4f7b-a23a-bbf6c1ca9435}|{591d1b73-5eae-47f4-a41f-8081d58d49bf}|{869b5825-e344-4375-839b-085d3c09ab9f}|{919fed43-3961-48d9-b0ef-893054f4f6f1}|{01166e60-d740-440c-b640-6bf964504b3c}|{2134e327-8060-441c-ba68-b167b82ff5bc}|{02328ee7-a82b-4983-a5f7-d0fc353698f0}|{6072a2a8-f1bc-4c9c-b836-7ac53e3f51e4}|{28044ca8-8e90-435e-bc63-a757af2fb6be}|{28092fa3-9c52-4a41-996d-c43e249c5f08}|{31680d42-c80d-4f8a-86d3-cd4930620369}|{92111c8d-0850-4606-904a-783d273a2059}|{446122cd-cd92-4d0c-9426-4ee0d28f6dca}|{829827cd-03be-4fed-af96-dd5997806fb4}|{4479446e-40f3-48af-ab85-7e3bb4468227}|{9263519f-ca57-4178-b743-2553a40a4bf1}|{71639610-9cc3-47e0-86ed-d5b99eaa41d5}|{84406197-6d37-437c-8d82-ae624b857355}|{93017064-dfd4-425e-a700-353f332ede37}|{a0ab16af-3384-4dbe-8722-476ce3947873}|{a0c54bd8-7817-4a40-b657-6dc7d59bd961}|{a2de96bc-e77f-4805-92c0-95c9a2023c6a}|{a3fbc8be-dac2-4971-b76a-908464cfa0e0}|{a42e5d48-6175-49e3-9e40-0188cde9c5c6}|{a893296e-5f54-43f9-a849-f12dcdee2c98}|{ac296b47-7c03-486f-a1d6-c48b24419749}|{b26bf964-7aa6-44f4-a2a9-d55af4b4eec0}|{be981b5e-1d9d-40dc-bd4f-47a7a027611c}|{be37931c-af60-4337-8708-63889f36445d}|{bfd92dfd-b293-4828-90c1-66af2ac688e6}|{c5cf4d08-0a33-4aa3-a40d-d4911bcc1da7}|{c488a8f5-ea3d-408d-809e-44e82c06ad9d}|{c661c2dc-00f9-4dc1-a9f6-bb2b7e1a4f8d}|{cd28aa38-d2f1-45a3-96c3-6cfd4702ef51}|{cd89045b-2e06-46bb-9e34-48e8799e5ef2}|{cf9d96ff-5997-439a-b32b-98214c621eee}|{d14acee6-f32b-4aa3-a802-6616003fc6a8}|{d97223b8-44e5-46c7-8ab5-e1d8986daf44}|{ddae89bd-6793-45d8-8ec9-7f4fb7212378}|{de3b1909-d4da-45e9-8da5-7d36a30e2fc6}|{df09f268-3c92-49db-8c31-6a25a6643896}|{e5bc3951-c837-4c98-9643-3c113fc8cf5e}|{e9ccb1f2-a8ba-4346-b43b-0d5582bce414}|{e341ed12-a703-47fe-b8dd-5948c38070e4}|{e2139287-2b0d-4f54-b3b1-c9a06c597223}|{ed352072-ddf0-4cb4-9cb6-d8aa3741c2de}|{f0b809eb-be22-432f-b26f-b1cadd1755b9}|{f1bce8e4-9936-495b-bf48-52850c7250ab}|{f01c3add-dc6d-4f35-a498-6b4279aa2ffa}|{f9e1ad25-5961-4cc5-8d66-5496c438a125}|{f4262989-6de0-4604-918f-663b85fad605}|{fc0d55bd-3c50-4139-9409-7df7c1114a9d}/"> + <prefs/> + <versionRange minVersion="0" maxVersion="*" severity="3"/> + </emItem> </emItems> <pluginItems> <pluginItem blockID="p332"> <match exp="libflashplayer\.so" name="filename"/> <match exp="^Shockwave Flash 11.(0|1) r[0-9]{1,3}$" name="description"/> <infoURL>https://get.adobe.com/flashplayer/</infoURL> <versionRange severity="0" vulnerabilitystatus="1"> <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
--- a/browser/base/content/tabbrowser.js +++ b/browser/base/content/tabbrowser.js @@ -2479,28 +2479,29 @@ class TabBrowser { Cu.reportError(ex); } } // Move the new tab after another tab if needed. if ((openerTab && Services.prefs.getBoolPref("browser.tabs.insertRelatedAfterCurrent")) || Services.prefs.getBoolPref("browser.tabs.insertAfterCurrent")) { - - let lastRelatedTab = openerTab && this._lastRelatedTabMap.get(openerTab); - let newTabPos = (lastRelatedTab || openerTab || this.mCurrentTab)._tPos + 1; - - if (lastRelatedTab) - lastRelatedTab.owner = null; - else if (openerTab) - t.owner = openerTab; - this.moveTabTo(t, newTabPos, true); - if (openerTab) - this._lastRelatedTabMap.set(openerTab, t); - } + let lastRelatedTab = openerTab && this._lastRelatedTabMap.get(openerTab); + let newTabPos = (lastRelatedTab || openerTab || this.mCurrentTab)._tPos + 1; + + if (lastRelatedTab) { + lastRelatedTab.owner = null; + } else if (openerTab) { + t.owner = openerTab; + } + this.moveTabTo(t, newTabPos, true); + if (openerTab) { + this._lastRelatedTabMap.set(openerTab, t); + } + } // This field is updated regardless if we actually animate // since it's important that we keep this count correct in all cases. this.tabAnimationsInProgress++; if (animate) { requestAnimationFrame(function() { // kick the animation off
--- a/browser/base/content/test/webrtc/browser_devices_get_user_media_in_frame.js +++ b/browser/base/content/test/webrtc/browser_devices_get_user_media_in_frame.js @@ -123,16 +123,77 @@ var gTests = [ await promiseNoPopupNotification("webRTC-shareDevices"); await expectNoObserverCalled(); await checkNotSharing(); } }, { + desc: "getUserMedia audio+video: with two frames sharing at the same time, sharing UI shows all shared devices", + run: async function checkFrameOverridingSharingUI() { + // This tests an edge case discovered in bug 1440356 that works like this + // - Share audio and video in iframe 1. + // - Share only video in iframe 2. + // The WebRTC UI should still show both video and audio indicators. + + let promise = promisePopupNotificationShown("webRTC-shareDevices"); + await promiseRequestDevice(true, true, "frame1"); + await promise; + await expectObserverCalled("getUserMedia:request"); + checkDeviceSelectors(true, true); + + let indicator = promiseIndicatorWindow(); + await promiseMessage("ok", () => { + PopupNotifications.panel.firstChild.button.click(); + }); + await expectObserverCalled("getUserMedia:response:allow"); + await expectObserverCalled("recording-device-events"); + Assert.deepEqual((await getMediaCaptureState()), {audio: true, video: true}, + "expected camera and microphone to be shared"); + + await indicator; + await checkSharingUI({video: true, audio: true}); + await expectNoObserverCalled(); + + // Check that requesting a new device from a different frame + // doesn't override sharing UI. + promise = promisePopupNotificationShown("webRTC-shareDevices"); + await promiseRequestDevice(false, true, "frame2"); + await promise; + await expectObserverCalled("getUserMedia:request"); + checkDeviceSelectors(false, true); + + await promiseMessage("ok", () => { + PopupNotifications.panel.firstChild.button.click(); + }); + await expectObserverCalled("getUserMedia:response:allow"); + await expectObserverCalled("recording-device-events"); + Assert.deepEqual((await getMediaCaptureState()), {audio: true, video: true}, + "expected camera and microphone to be shared"); + + await checkSharingUI({video: true, audio: true}); + + // Check that ending the stream with the other frame + // doesn't override sharing UI. + promise = promiseObserverCalled("recording-device-events"); + await promiseReloadFrame("frame2"); + await promise; + + await expectObserverCalled("recording-window-ended"); + await checkSharingUI({video: true, audio: true}); + await expectNoObserverCalled(); + + await closeStream(false, "frame1"); + await expectNoObserverCalled(); + await checkNotSharing(); + } +}, + +{ desc: "getUserMedia audio+video: reloading a frame updates the sharing UI", run: async function checkUpdateWhenReloading() { // We'll share only the cam in the first frame, then share both in the // second frame, then reload the second frame. After each step, we'll check // the UI is in the correct state. let promise = promisePopupNotificationShown("webRTC-shareDevices"); await promiseRequestDevice(false, true, "frame1");
--- a/browser/components/customizableui/CustomizableUI.jsm +++ b/browser/components/customizableui/CustomizableUI.jsm @@ -4368,17 +4368,20 @@ OverflowableToolbar.prototype = { PanelMultiView.openPopup(this._panel, anchor || this._chevron, { triggerEvent: aEvent, }).catch(Cu.reportError); this._chevron.open = true; this._panel.addEventListener("popupshown", () => { this._panel.addEventListener("dragover", this); this._panel.addEventListener("dragend", this); - resolve(); + // Wait until the next tick to resolve so all popupshown + // handlers have a chance to run before our promise resolution + // handlers do. + Services.tm.dispatchToMainThread(resolve); }, {once: true}); }); }, _onClickChevron(aEvent) { if (this._chevron.open) { this._chevron.open = false; PanelMultiView.hidePopup(this._panel);
--- a/dom/base/nsGlobalWindowInner.h +++ b/dom/base/nsGlobalWindowInner.h @@ -274,17 +274,17 @@ public: void ReallyCloseWindow(); // nsISupports NS_DECL_CYCLE_COLLECTING_ISUPPORTS // nsWrapperCache virtual JSObject *WrapObject(JSContext *cx, JS::Handle<JSObject*> aGivenProto) override { - MOZ_CRASH("We should never get here!"); + return GetWrapper(); } // nsIGlobalJSObjectHolder virtual JSObject* GetGlobalJSObject() override; // nsIScriptGlobalObject JSObject *FastGetGlobalJSObject() const {
--- a/dom/media/ChannelMediaDecoder.cpp +++ b/dom/media/ChannelMediaDecoder.cpp @@ -149,16 +149,39 @@ ChannelMediaDecoder::ResourceCallback::N "principal_changed", true); if (mDecoder) { mDecoder->NotifyPrincipalChanged(); } } void +ChannelMediaDecoder::NotifyPrincipalChanged() +{ + MOZ_ASSERT(NS_IsMainThread()); + MediaDecoder::NotifyPrincipalChanged(); + if (!mInitialChannelPrincipalKnown) { + // We'll receive one notification when the channel's initial principal + // is known, after all HTTP redirects have resolved. This isn't really a + // principal change, so return here to avoid the mSameOriginMedia check + // below. + mInitialChannelPrincipalKnown = true; + return; + } + if (!mSameOriginMedia && + DecoderTraits::CrossOriginRedirectsProhibited(ContainerType())) { + // For some content types we block mid-flight channel redirects to cross + // origin destinations due to security constraints. See bug 1441153. + LOG("ChannnelMediaDecoder prohibited cross origin redirect blocked."); + NetworkError(MediaResult(NS_ERROR_DOM_BAD_URI, + "Prohibited cross origin redirect blocked")); + } +} + +void ChannelMediaDecoder::ResourceCallback::NotifySuspendedStatusChanged( bool aSuspendedByCache) { MOZ_ASSERT(NS_IsMainThread()); DDLOGEX2("ChannelMediaDecoder::ResourceCallback", this, DDLogCategory::Log, "suspended_status_changed",
--- a/dom/media/ChannelMediaDecoder.h +++ b/dom/media/ChannelMediaDecoder.h @@ -61,16 +61,17 @@ class ChannelMediaDecoder }; protected: void OnPlaybackEvent(MediaPlaybackEvent&& aEvent) override; void DurationChanged() override; void MetadataLoaded(UniquePtr<MediaInfo> aInfo, UniquePtr<MetadataTags> aTags, MediaDecoderEventVisibility aEventVisibility) override; + void NotifyPrincipalChanged() override; RefPtr<ResourceCallback> mResourceCallback; RefPtr<BaseMediaResource> mResource; explicit ChannelMediaDecoder(MediaDecoderInit& aInit); nsCString GetDebugInfo() override; @@ -153,13 +154,17 @@ private: // Current playback position in the stream. This is (approximately) // where we're up to playing back the stream. This is not adjusted // during decoder seek operations, but it's updated at the end when we // start playing back again. int64_t mPlaybackPosition = 0; bool mCanPlayThrough = false; + + // True if we've been notified that the ChannelMediaResource has + // a principal. + bool mInitialChannelPrincipalKnown = false; }; } // namespace mozilla #endif // ChannelMediaDecoder_h_
--- a/dom/media/DecoderTraits.cpp +++ b/dom/media/DecoderTraits.cpp @@ -320,9 +320,16 @@ bool DecoderTraits::IsSupportedInVideoDo ADTSDecoder::IsSupportedType(*type) || FlacDecoder::IsSupportedType(*type) || #ifdef MOZ_ANDROID_HLS_SUPPORT HLSDecoder::IsSupportedType(*type) || #endif false; } +/* static */ +bool +DecoderTraits::CrossOriginRedirectsProhibited(const MediaContainerType& aType) +{ + return WaveDecoder::IsSupportedType(aType); +} + } // namespace mozilla
--- a/dom/media/DecoderTraits.h +++ b/dom/media/DecoderTraits.h @@ -52,14 +52,18 @@ public: // Returns true if aType is MIME type of hls. static bool IsHttpLiveStreamingType(const MediaContainerType& aType); // Returns true if aType is matroska type. static bool IsMatroskaType(const MediaContainerType& aType); static bool IsSupportedType(const MediaContainerType& aType); + + // For some content types we block channel redirects to cross origin + // destinations due to security constraints. See bug 1441153. + static bool CrossOriginRedirectsProhibited(const MediaContainerType& aType); }; } // namespace mozilla #endif
--- a/dom/media/MediaDecoder.h +++ b/dom/media/MediaDecoder.h @@ -509,17 +509,17 @@ private: protected: void NotifyReaderDataArrived(); void DiscardOngoingSeekIfExists(); virtual void CallSeek(const SeekTarget& aTarget); // Called by MediaResource when the principal of the resource has // changed. Called on main thread only. - void NotifyPrincipalChanged(); + virtual void NotifyPrincipalChanged(); MozPromiseRequestHolder<SeekPromise> mSeekRequest; const char* PlayStateStr(); void OnMetadataUpdate(TimedMetadata&& aMetadata); // This should only ever be accessed from the main thread.
--- a/dom/media/MediaManager.cpp +++ b/dom/media/MediaManager.cpp @@ -2191,31 +2191,16 @@ int MediaManager::AddDeviceChangeCallbac manager->GetBackend(0); if (fakeDeviceChangeEventOn) manager->GetBackend(0)->SetFakeDeviceChangeEvents(); })); return DeviceChangeCallback::AddDeviceChangeCallback(aCallback); } -static void -StopRawIDCallback(MediaManager *aThis, - uint64_t aWindowID, - GetUserMediaWindowListener *aListener, - void *aData) -{ - if (!aListener || !aData) { - return; - } - - nsString* removedDeviceID = static_cast<nsString*>(aData); - aListener->StopRawID(*removedDeviceID); -} - - void MediaManager::OnDeviceChange() { RefPtr<MediaManager> self(this); NS_DispatchToMainThread(media::NewRunnableFrom([self]() mutable { MOZ_ASSERT(NS_IsMainThread()); if (sHasShutdown) { return NS_OK; } self->DeviceChangeCallback::OnDeviceChange(); @@ -2233,26 +2218,34 @@ void MediaManager::OnDeviceChange() { device->GetId(id); id.ReplaceSubstring(NS_LITERAL_STRING("default: "), NS_LITERAL_STRING("")); if (!deviceIDs.Contains(id)) { deviceIDs.AppendElement(id); } } for (auto& id : self->mDeviceIDs) { - if (!deviceIDs.Contains(id)) { - // Stop the coresponding SourceListener - nsGlobalWindowInner::InnerWindowByIdTable* windowsById = - nsGlobalWindowInner::GetWindowsTable(); - if (windowsById) { - for (auto iter = windowsById->Iter(); !iter.Done(); iter.Next()) { - nsGlobalWindowInner* window = iter.Data(); - self->IterateWindowListeners(window->AsInner(), StopRawIDCallback, &id); - } - } + if (deviceIDs.Contains(id)) { + continue; + } + + // Stop the coresponding SourceListener + nsGlobalWindowInner::InnerWindowByIdTable* windowsById = + nsGlobalWindowInner::GetWindowsTable(); + if (!windowsById) { + continue; + } + + for (auto iter = windowsById->Iter(); !iter.Done(); iter.Next()) { + nsGlobalWindowInner* window = iter.Data(); + self->IterateWindowListeners(window->AsInner(), + [&id](GetUserMediaWindowListener* aListener) + { + aListener->StopRawID(id); + }); } } self->mDeviceIDs = deviceIDs; }, [](MediaStreamError*& reason) {}); return NS_OK; })); } @@ -3089,37 +3082,16 @@ MediaManager::GetBackend(uint64_t aWindo #else mBackend = new MediaEngineDefault(); #endif mBackend->AddDeviceChangeCallback(this); } return mBackend; } -static void -StopSharingCallback(MediaManager *aThis, - uint64_t aWindowID, - GetUserMediaWindowListener *aListener, - void *aData) -{ - MOZ_ASSERT(NS_IsMainThread()); - - // Grab a strong ref since RemoveAll() might destroy the listener mid-way - // when clearing the mActiveWindows reference. - RefPtr<GetUserMediaWindowListener> listener(aListener); - if (!listener) { - return; - } - - listener->Stop(); - listener->RemoveAll(); - MOZ_ASSERT(!aThis->GetWindowListener(aWindowID)); -} - - void MediaManager::OnNavigation(uint64_t aWindowID) { MOZ_ASSERT(NS_IsMainThread()); LOG(("OnNavigation for %" PRIu64, aWindowID)); // Stop the streams for this window. The runnables check this value before // making a call to content. @@ -3131,17 +3103,29 @@ MediaManager::OnNavigation(uint64_t aWin } mCallIds.Remove(aWindowID); } // This is safe since we're on main-thread, and the windowlist can only // be added to from the main-thread auto* window = nsGlobalWindowInner::GetInnerWindowWithId(aWindowID); if (window) { - IterateWindowListeners(window->AsInner(), StopSharingCallback, nullptr); + IterateWindowListeners(window->AsInner(), + [self = RefPtr<MediaManager>(this), + windowID = DebugOnly<decltype(aWindowID)>(aWindowID)] + (GetUserMediaWindowListener* aListener) + { + // Grab a strong ref since RemoveAll() might destroy the listener + // mid-way when clearing the mActiveWindows reference. + RefPtr<GetUserMediaWindowListener> listener(aListener); + + listener->Stop(); + listener->RemoveAll(); + MOZ_ASSERT(!self->GetWindowListener(windowID)); + }); } else { RemoveWindowID(aWindowID); } MOZ_ASSERT(!GetWindowListener(aWindowID)); RemoveMediaDevicesCallback(aWindowID); RefPtr<MediaManager> self = this; @@ -3586,156 +3570,136 @@ struct CaptureWindowStateData { uint16_t* mCamera; uint16_t* mMicrophone; uint16_t* mScreenShare; uint16_t* mWindowShare; uint16_t* mAppShare; uint16_t* mBrowserShare; }; -static void -CaptureWindowStateCallback(MediaManager *aThis, - uint64_t aWindowID, - GetUserMediaWindowListener *aListener, - void *aData) -{ - MOZ_ASSERT(aData); - - auto& data = *static_cast<CaptureWindowStateData*>(aData); - - if (!aListener) { - return; - } - - *data.mCamera = - FromCaptureState(aListener->CapturingSource(MediaSourceEnum::Camera)); - *data.mMicrophone = - FromCaptureState(aListener->CapturingSource(MediaSourceEnum::Microphone)); - *data.mScreenShare = - FromCaptureState(aListener->CapturingSource(MediaSourceEnum::Screen)); - *data.mWindowShare = - FromCaptureState(aListener->CapturingSource(MediaSourceEnum::Window)); - *data.mAppShare = - FromCaptureState(aListener->CapturingSource(MediaSourceEnum::Application)); - *data.mBrowserShare = - FromCaptureState(aListener->CapturingSource(MediaSourceEnum::Browser)); -} - NS_IMETHODIMP -MediaManager::MediaCaptureWindowState(nsIDOMWindow* aWindow, +MediaManager::MediaCaptureWindowState(nsIDOMWindow* aCapturedWindow, uint16_t* aCamera, uint16_t* aMicrophone, - uint16_t* aScreenShare, - uint16_t* aWindowShare, - uint16_t* aAppShare, - uint16_t* aBrowserShare) + uint16_t* aScreen, + uint16_t* aWindow, + uint16_t* aApplication, + uint16_t* aBrowser) { MOZ_ASSERT(NS_IsMainThread()); - struct CaptureWindowStateData data; - data.mCamera = aCamera; - data.mMicrophone = aMicrophone; - data.mScreenShare = aScreenShare; - data.mWindowShare = aWindowShare; - data.mAppShare = aAppShare; - data.mBrowserShare = aBrowserShare; - - *aCamera = nsIMediaManagerService::STATE_NOCAPTURE; - *aMicrophone = nsIMediaManagerService::STATE_NOCAPTURE; - *aScreenShare = nsIMediaManagerService::STATE_NOCAPTURE; - *aWindowShare = nsIMediaManagerService::STATE_NOCAPTURE; - *aAppShare = nsIMediaManagerService::STATE_NOCAPTURE; - *aBrowserShare = nsIMediaManagerService::STATE_NOCAPTURE; - - nsCOMPtr<nsPIDOMWindowInner> piWin = do_QueryInterface(aWindow); + + CaptureState camera = CaptureState::Off; + CaptureState microphone = CaptureState::Off; + CaptureState screen = CaptureState::Off; + CaptureState window = CaptureState::Off; + CaptureState application = CaptureState::Off; + CaptureState browser = CaptureState::Off; + + nsCOMPtr<nsPIDOMWindowInner> piWin = do_QueryInterface(aCapturedWindow); if (piWin) { - IterateWindowListeners(piWin, CaptureWindowStateCallback, &data); + IterateWindowListeners(piWin, + [&camera, µphone, &screen, &window, &application, &browser] + (GetUserMediaWindowListener* aListener) + { + camera = CombineCaptureState( + camera, aListener->CapturingSource(MediaSourceEnum::Camera)); + microphone = CombineCaptureState( + microphone, aListener->CapturingSource(MediaSourceEnum::Microphone)); + screen = CombineCaptureState( + screen, aListener->CapturingSource(MediaSourceEnum::Screen)); + window = CombineCaptureState( + window, aListener->CapturingSource(MediaSourceEnum::Window)); + application = CombineCaptureState( + application, aListener->CapturingSource(MediaSourceEnum::Application)); + browser = CombineCaptureState( + browser, aListener->CapturingSource(MediaSourceEnum::Browser)); + }); } + + *aCamera = FromCaptureState(camera); + *aMicrophone= FromCaptureState(microphone); + *aScreen = FromCaptureState(screen); + *aWindow = FromCaptureState(window); + *aApplication = FromCaptureState(application); + *aBrowser = FromCaptureState(browser); + #ifdef DEBUG LOG(("%s: window %" PRIu64 " capturing %s %s %s %s %s %s", __FUNCTION__, piWin ? piWin->WindowID() : -1, *aCamera == nsIMediaManagerService::STATE_CAPTURE_ENABLED ? "camera (enabled)" : (*aCamera == nsIMediaManagerService::STATE_CAPTURE_DISABLED ? "camera (disabled)" : ""), *aMicrophone == nsIMediaManagerService::STATE_CAPTURE_ENABLED ? "microphone (enabled)" : (*aMicrophone == nsIMediaManagerService::STATE_CAPTURE_DISABLED ? "microphone (disabled)" : ""), - *aScreenShare ? "screenshare" : "", - *aWindowShare ? "windowshare" : "", - *aAppShare ? "appshare" : "", - *aBrowserShare ? "browsershare" : "")); + *aScreen ? "screenshare" : "", + *aWindow ? "windowshare" : "", + *aApplication ? "appshare" : "", + *aBrowser ? "browsershare" : "")); #endif return NS_OK; } NS_IMETHODIMP MediaManager::SanitizeDeviceIds(int64_t aSinceWhen) { MOZ_ASSERT(NS_IsMainThread()); LOG(("%s: sinceWhen = %" PRId64, __FUNCTION__, aSinceWhen)); media::SanitizeOriginKeys(aSinceWhen, false); // we fire and forget return NS_OK; } -static void -StopScreensharingCallback(MediaManager *aThis, - uint64_t aWindowID, - GetUserMediaWindowListener *aListener, - void *aData) -{ - if (!aListener) { - return; - } - - aListener->StopSharing(); -} - void MediaManager::StopScreensharing(uint64_t aWindowID) { // We need to stop window/screensharing for all streams in all innerwindows that // correspond to that outerwindow. auto* window = nsGlobalWindowInner::GetInnerWindowWithId(aWindowID); if (!window) { return; } - IterateWindowListeners(window->AsInner(), &StopScreensharingCallback, nullptr); + IterateWindowListeners(window->AsInner(), + [](GetUserMediaWindowListener* aListener) + { + aListener->StopSharing(); + }); } -// lets us do all sorts of things to the listeners +template<typename FunctionType> void MediaManager::IterateWindowListeners(nsPIDOMWindowInner* aWindow, - WindowListenerCallback aCallback, - void *aData) + const FunctionType& aCallback) { // Iterate the docshell tree to find all the child windows, and for each // invoke the callback if (aWindow) { { uint64_t windowID = aWindow->WindowID(); GetUserMediaWindowListener* listener = GetWindowListener(windowID); - (*aCallback)(this, windowID, listener, aData); + if (listener) { + aCallback(listener); + } // NB: `listener` might have been destroyed. } // iterate any children of *this* window (iframes, etc) nsCOMPtr<nsIDocShell> docShell = aWindow->GetDocShell(); if (docShell) { int32_t i, count; docShell->GetChildCount(&count); for (i = 0; i < count; ++i) { nsCOMPtr<nsIDocShellTreeItem> item; docShell->GetChildAt(i, getter_AddRefs(item)); nsCOMPtr<nsPIDOMWindowOuter> winOuter = item ? item->GetWindow() : nullptr; if (winOuter) { - IterateWindowListeners(winOuter->GetCurrentInnerWindow(), - aCallback, aData); + IterateWindowListeners(winOuter->GetCurrentInnerWindow(), aCallback); } } } } } void
--- a/dom/media/MediaManager.h +++ b/dom/media/MediaManager.h @@ -122,22 +122,16 @@ public: const nsString mType; const nsString mName; const nsString mID; const nsString mRawID; }; typedef nsRefPtrHashtable<nsUint64HashKey, GetUserMediaWindowListener> WindowTable; -// we could add MediaManager if needed -typedef void (*WindowListenerCallback)(MediaManager *aThis, - uint64_t aWindowID, - GetUserMediaWindowListener *aListener, - void *aData); - class MediaManager final : public nsIMediaManagerService, public nsIObserver ,public DeviceChangeCallback { friend SourceListener; public: static already_AddRefed<MediaManager> GetInstance(); @@ -248,19 +242,24 @@ private: // Make private because we want only one instance of this class MediaManager(); ~MediaManager() {} void Shutdown(); void StopScreensharing(uint64_t aWindowID); + + /** + * Calls aCallback with a GetUserMediaWindowListener argument once for + * each window listener associated with aWindow and its child windows. + */ + template<typename FunctionType> void IterateWindowListeners(nsPIDOMWindowInner *aWindow, - WindowListenerCallback aCallback, - void *aData); + const FunctionType& aCallback); void StopMediaStreams(); void RemoveMediaDevicesCallback(uint64_t aWindowID); // ONLY access from MainThread so we don't need to lock WindowTable mActiveWindows; nsRefPtrHashtable<nsStringHashKey, GetUserMediaTask> mActiveCallbacks; nsClassHashtable<nsUint64HashKey, nsTArray<nsString>> mCallIds;
--- a/dom/serviceworkers/ServiceWorkerPrivate.cpp +++ b/dom/serviceworkers/ServiceWorkerPrivate.cpp @@ -1942,17 +1942,17 @@ ServiceWorkerPrivate::SpawnWorkerIfNeede return NS_OK; } void ServiceWorkerPrivate::StoreISupports(nsISupports* aSupports) { MOZ_ASSERT(NS_IsMainThread()); - MOZ_ASSERT(mWorkerPrivate); + MOZ_DIAGNOSTIC_ASSERT(mWorkerPrivate); MOZ_ASSERT(!mSupportsArray.Contains(aSupports)); mSupportsArray.AppendElement(aSupports); } void ServiceWorkerPrivate::RemoveISupports(nsISupports* aSupports) {
--- a/dom/serviceworkers/ServiceWorkerRegistrationImpl.cpp +++ b/dom/serviceworkers/ServiceWorkerRegistrationImpl.cpp @@ -20,16 +20,17 @@ #include "mozilla/dom/WorkerScope.h" #include "mozilla/Services.h" #include "mozilla/Unused.h" #include "nsCycleCollectionParticipant.h" #include "nsNetUtil.h" #include "nsServiceManagerUtils.h" #include "ServiceWorker.h" #include "ServiceWorkerManager.h" +#include "ServiceWorkerPrivate.h" #include "ServiceWorkerRegistration.h" #include "nsIDocument.h" #include "nsIServiceWorkerManager.h" #include "nsISupportsPrimitives.h" #include "nsPIDOMWindow.h" #include "nsContentUtils.h" @@ -128,30 +129,30 @@ ServiceWorkerRegistrationMainThread::Cle StopListeningForEvents(); mOuter = nullptr; } namespace { void UpdateInternal(nsIPrincipal* aPrincipal, - const nsAString& aScope, + const nsACString& aScope, ServiceWorkerUpdateFinishCallback* aCallback) { MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(aPrincipal); MOZ_ASSERT(aCallback); RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance(); if (!swm) { // browser shutdown return; } - swm->Update(aPrincipal, NS_ConvertUTF16toUTF8(aScope), aCallback); + swm->Update(aPrincipal, aScope, aCallback); } class MainThreadUpdateCallback final : public ServiceWorkerUpdateFinishCallback { PromiseWindowProxy mPromise; ~MainThreadUpdateCallback() { } @@ -276,22 +277,62 @@ public: RefPtr<UpdateResultRunnable> r = new UpdateResultRunnable(proxy, aStatus); r->Dispatch(); } }; class SWRUpdateRunnable final : public Runnable { + class TimerCallback final : public nsITimerCallback + { + RefPtr<ServiceWorkerPrivate> mPrivate; + RefPtr<Runnable> mRunnable; + + public: + TimerCallback(ServiceWorkerPrivate* aPrivate, + Runnable* aRunnable) + : mPrivate(aPrivate) + , mRunnable(aRunnable) + { + MOZ_ASSERT(mPrivate); + MOZ_ASSERT(aRunnable); + } + + NS_IMETHOD + Notify(nsITimer *aTimer) override + { + mRunnable->Run(); + mPrivate->RemoveISupports(aTimer); + + return NS_OK; + } + + NS_DECL_THREADSAFE_ISUPPORTS + + private: + ~TimerCallback() + { } + }; + public: - SWRUpdateRunnable(PromiseWorkerProxy* aPromiseProxy, const nsAString& aScope) + explicit SWRUpdateRunnable(PromiseWorkerProxy* aPromiseProxy) : Runnable("dom::SWRUpdateRunnable") , mPromiseProxy(aPromiseProxy) - , mScope(aScope) - {} + , mDescriptor(aPromiseProxy->GetWorkerPrivate()->GetServiceWorkerDescriptor()) + , mDelayed(false) + { + MOZ_ASSERT(mPromiseProxy); + + // This runnable is used for update calls originating from a worker thread, + // which may be delayed in some cases. + MOZ_ASSERT(mPromiseProxy->GetWorkerPrivate()->IsServiceWorker()); + MOZ_ASSERT(mPromiseProxy->GetWorkerPrivate()); + mPromiseProxy->GetWorkerPrivate()->AssertIsOnWorkerThread(); + } NS_IMETHOD Run() override { MOZ_ASSERT(NS_IsMainThread()); ErrorResult result; nsCOMPtr<nsIPrincipal> principal; @@ -302,30 +343,75 @@ public: if (mPromiseProxy->CleanedUp()) { return NS_OK; } principal = mPromiseProxy->GetWorkerPrivate()->GetPrincipal(); } MOZ_ASSERT(principal); + RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance(); + if (NS_WARN_IF(!swm)) { + return NS_OK; + } + + // This will delay update jobs originating from a service worker thread. + // We don't currently handle ServiceWorkerRegistration.update() from other + // worker types. Also, we assume this registration matches self.registration + // on the service worker global. This is ok for now because service worker globals + // are the only worker contexts where we expose ServiceWorkerRegistration. + RefPtr<ServiceWorkerRegistrationInfo> registration = + swm->GetRegistration(principal, mDescriptor.Scope()); + if (NS_WARN_IF(!registration)) { + return NS_OK; + } + + RefPtr<ServiceWorkerInfo> worker = registration->GetByDescriptor(mDescriptor); + uint32_t delay = registration->GetUpdateDelay(); + + // if we have a timer object, it means we've already been delayed once. + if (delay && !mDelayed) { + nsCOMPtr<nsITimerCallback> cb = new TimerCallback(worker->WorkerPrivate(), this); + Result<nsCOMPtr<nsITimer>, nsresult> result = + NS_NewTimerWithCallback(cb, delay, nsITimer::TYPE_ONE_SHOT, + SystemGroup::EventTargetFor(TaskCategory::Other)); + + nsCOMPtr<nsITimer> timer = result.unwrapOr(nullptr); + if (NS_WARN_IF(!timer)) { + return NS_OK; + } + + mDelayed = true; + // We're storing the timer object on the calling service worker's private. + // ServiceWorkerPrivate will drop the reference if the worker terminates, + // which will cancel the timer. + worker->WorkerPrivate()->StoreISupports(timer); + + return NS_OK; + } + RefPtr<WorkerThreadUpdateCallback> cb = new WorkerThreadUpdateCallback(mPromiseProxy); - UpdateInternal(principal, mScope, cb); + UpdateInternal(principal, mDescriptor.Scope(), cb); return NS_OK; } private: ~SWRUpdateRunnable() - {} + { + MOZ_ASSERT(NS_IsMainThread()); + } RefPtr<PromiseWorkerProxy> mPromiseProxy; - const nsString mScope; + const ServiceWorkerDescriptor mDescriptor; + bool mDelayed; }; +NS_IMPL_ISUPPORTS(SWRUpdateRunnable::TimerCallback, nsITimerCallback) + class UnregisterCallback final : public nsIServiceWorkerUnregisterCallback { PromiseWindowProxy mPromise; public: NS_DECL_ISUPPORTS explicit UnregisterCallback(nsPIDOMWindowInner* aWindow, @@ -528,17 +614,17 @@ ServiceWorkerRegistrationMainThread::Upd return nullptr; } nsCOMPtr<nsIDocument> doc = mOuter->GetOwner()->GetExtantDoc(); MOZ_ASSERT(doc); RefPtr<MainThreadUpdateCallback> cb = new MainThreadUpdateCallback(mOuter->GetOwner(), promise); - UpdateInternal(doc->NodePrincipal(), mScope, cb); + UpdateInternal(doc->NodePrincipal(), NS_ConvertUTF16toUTF8(mScope), cb); return promise.forget(); } already_AddRefed<Promise> ServiceWorkerRegistrationMainThread::Unregister(ErrorResult& aRv) { MOZ_ASSERT(NS_IsMainThread()); @@ -843,17 +929,17 @@ ServiceWorkerRegistrationWorkerThread::U } RefPtr<PromiseWorkerProxy> proxy = PromiseWorkerProxy::Create(worker, promise); if (!proxy) { aRv.Throw(NS_ERROR_DOM_ABORT_ERR); return nullptr; } - RefPtr<SWRUpdateRunnable> r = new SWRUpdateRunnable(proxy, mScope); + RefPtr<SWRUpdateRunnable> r = new SWRUpdateRunnable(proxy); MOZ_ALWAYS_SUCCEEDS(worker->DispatchToMainThread(r.forget())); return promise.forget(); } already_AddRefed<Promise> ServiceWorkerRegistrationWorkerThread::Unregister(ErrorResult& aRv) {
--- a/dom/serviceworkers/ServiceWorkerRegistrationInfo.cpp +++ b/dom/serviceworkers/ServiceWorkerRegistrationInfo.cpp @@ -82,16 +82,17 @@ ServiceWorkerRegistrationInfo::Clear() ServiceWorkerRegistrationInfo::ServiceWorkerRegistrationInfo( const nsACString& aScope, nsIPrincipal* aPrincipal, ServiceWorkerUpdateViaCache aUpdateViaCache) : mPrincipal(aPrincipal) , mDescriptor(aPrincipal, aScope, aUpdateViaCache) , mControlledClientsCounter(0) + , mDelayMultiplier(0) , mUpdateState(NoUpdate) , mCreationTime(PR_Now()) , mCreationTimeStamp(TimeStamp::Now()) , mLastUpdateTime(0) , mPendingUninstall(false) {} ServiceWorkerRegistrationInfo::~ServiceWorkerRegistrationInfo() @@ -704,10 +705,30 @@ ServiceWorkerRegistrationInfo::SetLastUp } const ServiceWorkerRegistrationDescriptor& ServiceWorkerRegistrationInfo::Descriptor() const { return mDescriptor; } +uint32_t +ServiceWorkerRegistrationInfo::GetUpdateDelay() +{ + uint32_t delay = Preferences::GetInt("dom.serviceWorkers.update_delay", + 1000); + // This can potentially happen if you spam registration->Update(). We don't + // want to wrap to a lower value. + if (mDelayMultiplier >= INT_MAX / (delay ? delay : 1)) { + return INT_MAX; + } + + delay *= mDelayMultiplier; + + if (!mControlledClientsCounter && mDelayMultiplier < (INT_MAX / 30)) { + mDelayMultiplier = (mDelayMultiplier ? mDelayMultiplier : 1) * 30; + } + + return delay; +} + } // namespace dom } // namespace mozilla
--- a/dom/serviceworkers/ServiceWorkerRegistrationInfo.h +++ b/dom/serviceworkers/ServiceWorkerRegistrationInfo.h @@ -18,16 +18,17 @@ namespace dom { class ServiceWorkerRegistrationInfo final : public nsIServiceWorkerRegistrationInfo { nsCOMPtr<nsIPrincipal> mPrincipal; ServiceWorkerRegistrationDescriptor mDescriptor; nsTArray<nsCOMPtr<nsIServiceWorkerRegistrationInfoListener>> mListeners; uint32_t mControlledClientsCounter; + uint32_t mDelayMultiplier; enum { NoUpdate, NeedTimeCheckAndUpdate, NeedUpdate } mUpdateState; @@ -89,16 +90,17 @@ public: already_AddRefed<ServiceWorkerInfo> GetServiceWorkerInfoById(uint64_t aId); void StartControllingClient() { ++mControlledClientsCounter; + mDelayMultiplier = 0; } void StopControllingClient() { MOZ_ASSERT(mControlledClientsCounter); --mControlledClientsCounter; } @@ -206,16 +208,19 @@ public: GetLastUpdateTime() const; void SetLastUpdateTime(const int64_t aTime); const ServiceWorkerRegistrationDescriptor& Descriptor() const; + uint32_t + GetUpdateDelay(); + private: // Roughly equivalent to [[Update Registration State algorithm]]. Make sure // this is called *before* updating SW instances' state, otherwise they // may get CC-ed. void UpdateRegistrationState(); // Used by devtools to track changes to the properties of *nsIServiceWorkerRegistrationInfo*.
--- a/dom/serviceworkers/test/mochitest.ini +++ b/dom/serviceworkers/test/mochitest.ini @@ -227,16 +227,17 @@ support-files = nofetch_handler_worker.js service_worker.js service_worker_client.html utils.js bug1290951_worker_main.sjs bug1290951_worker_imported.sjs sw_storage_not_allow.js update_worker.sjs + self_update_worker.sjs [test_bug1151916.html] [test_bug1240436.html] [test_bug1408734.html] [test_claim.html] [test_claim_oninstall.html] [test_controller.html] [test_cookie_fetch.html] @@ -343,8 +344,9 @@ tags = openwindow [test_workerupdatefoundevent.html] [test_xslt.html] [test_async_waituntil.html] [test_worker_reference_gc_timeout.html] [test_nofetch_handler.html] [test_bad_script_cache.html] [test_file_upload.html] support-files = script_file_upload.js sw_file_upload.js server_file_upload.sjs +[test_self_update_worker.html]
new file mode 100644 --- /dev/null +++ b/dom/serviceworkers/test/self_update_worker.sjs @@ -0,0 +1,43 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +"use strict"; + +const WORKER_BODY = ` +onactivate = function(event) { + let promise = clients.matchAll({includeUncontrolled: true}).then(function(clients) { + for (i = 0; i < clients.length; i++) { + clients[i].postMessage({version: version}); + } + }).then(function() { + return self.registration.update(); + }); + event.waitUntil(promise); +}; +`; + +function handleRequest(request, response) { + if (request.queryString == 'clearcounter') { + setState('count', "1"); + response.write("ok"); + return; + } + + let count = getState("count"); + if (count === "") { + count = 1; + } else { + count = parseInt(count); + } + + let worker = "var version = " + count + ";\n"; + worker = worker + WORKER_BODY; + + // This header is necessary for making this script able to be loaded. + response.setHeader("Content-Type", "application/javascript"); + + // If this is the first request, return the first source. + response.write(worker); + setState("count", "" + (count + 1)); +} +
new file mode 100644 --- /dev/null +++ b/dom/serviceworkers/test/test_self_update_worker.html @@ -0,0 +1,79 @@ +<!DOCTYPE HTML> +<html> +<!-- + Test that a self updating service worker can't keep running forever when the + script changes. + --> +<head> + <title>Test for Bug 1432846</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <script src="/tests/SimpleTest/SpawnTask.js"></script> + <script src="error_reporting_helpers.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> + <meta http-equiv="Content-type" content="text/html;charset=UTF-8"> +</head> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1432846">Mozilla Bug 1432846</a> +<p id="display"></p> +<div id="content" style="display: none"> + +</div> +<pre id="test"> +</pre> + +<script src="utils.js"></script> +<script class="testbody" type="text/javascript"> +add_task(function setupPrefs() { + return SpecialPowers.pushPrefEnv({"set": [ + ["dom.serviceWorkers.enabled", true], + ["dom.serviceWorkers.testing.enabled", true], + ]}); +}); + +function activateDummyWorker() { + return navigator.serviceWorker.register("empty.js", + { scope: "./empty?random=" + Date.now() }) + .then(function(registration) { + var worker = registration.installing; + return waitForState(worker, 'activated', registration).then(function() { + ok(true, "got dummy!"); + return registration.unregister(); + }); + }); +} + +add_task(async function test_update() { + navigator.serviceWorker.onmessage = function(event) { + ok (event.data.version < 3, "Service worker updated too many times." + event.data.version); + } + + await SpecialPowers.pushPrefEnv({"set": [ + ["dom.serviceWorkers.idle_timeout", 0], + ["dom.serviceWorkers.update_delay", 30000], + ["dom.serviceWorkers.idle_extended_timeout", 299999]]}); + + // clear version counter + await fetch("self_update_worker.sjs?clearcounter"); + + var worker; + let registration = await navigator.serviceWorker.register( + "self_update_worker.sjs", + { scope: "./test_self_update_worker.html?random=" + Date.now()}) + .then(function(registration) { + worker = registration.installing; + return waitForState(worker, 'activated', registration); + }); + + // We need to wait a reasonable time to give the self updating worker a chance + // to change to a newer version. Register and activate an empty worker 5 times. + for (i = 0; i < 5; i++) { + await activateDummyWorker(); + } + + + await registration.unregister(); + await SpecialPowers.popPrefEnv(); + await SpecialPowers.popPrefEnv(); +}); +</script> +</body> +</html>
--- a/dom/webauthn/u2f-hid-rs/README.md +++ b/dom/webauthn/u2f-hid-rs/README.md @@ -14,17 +14,17 @@ support additional protocols and transpo ## Usage There's only a simple example function that tries to register and sign right now. It uses [env_logger](http://rust-lang-nursery.github.io/log/env_logger/) for logging, which you configure with the `RUST_LOG` environment variable: ``` -cargo build +cargo build --example main RUST_LOG=debug cargo run --example main ``` Proper usage should be to call into this library from something else - e.g., Firefox. There are some [C headers exposed for the purpose](u2f-hid-rs/blob/master/src/u2fhid-capi.h). ## Tests @@ -40,11 +40,11 @@ There are fuzzers for the USB protocol r There are not (yet) fuzzers for the C API used by callers (such as Gecko). To fuzz, you will need cargo-fuzz (the latest version from GitHub) as well as Rust Nightly. ``` rustup install nightly cargo install --git https://github.com/rust-fuzz/cargo-fuzz/ -rustup run nightly cargo fuzz run u2f_read -- -max_len=512 -rustup run nightly cargo fuzz run u2f_read_write -- -max_len=512 +cargo +nightly fuzz run u2f_read -- -max_len=512 +cargo +nightly fuzz run u2f_read_write -- -max_len=512 ```
--- a/dom/webauthn/u2f-hid-rs/examples/main.rs +++ b/dom/webauthn/u2f-hid-rs/examples/main.rs @@ -6,18 +6,27 @@ extern crate base64; extern crate crypto; extern crate u2fhid; use crypto::digest::Digest; use crypto::sha2::Sha256; use std::io; use std::sync::mpsc::channel; use u2fhid::{AuthenticatorTransports, KeyHandle, RegisterFlags, SignFlags, U2FManager}; +extern crate env_logger; extern crate log; -extern crate env_logger; + +macro_rules! try_or { + ($val:expr, $or:expr) => { + match $val { + Ok(v) => { v } + Err(e) => { return $or(e); } + } + } +} fn u2f_get_key_handle_from_register_response(register_response: &Vec<u8>) -> io::Result<Vec<u8>> { if register_response[0] != 0x05 { return Err(io::Error::new( io::ErrorKind::InvalidData, "Reserved byte not set correctly", )); } @@ -29,18 +38,17 @@ fn u2f_get_key_handle_from_register_resp Ok(key_handle) } fn main() { env_logger::init().expect("Cannot start logger"); println!("Asking a security key to register now..."); - let challenge_str = - format!("{}{}", + let challenge_str = format!("{}{}", r#"{"challenge": "1vQ9mxionq0ngCnjD-wTsv1zUSrGRtFqG2xP09SbZ70","#, r#" "version": "U2F_V2", "appId": "http://demo.yubico.com"}"#); let mut challenge = Sha256::new(); challenge.input_str(&challenge_str); let mut chall_bytes: Vec<u8> = vec![0; challenge.output_bytes()]; challenge.result(&mut chall_bytes); let mut application = Sha256::new(); @@ -54,23 +62,24 @@ fn main() { let (tx, rx) = channel(); manager .register( flags, 15_000, chall_bytes.clone(), app_bytes.clone(), vec![], - move |rv| { tx.send(rv.unwrap()).unwrap(); }, + move |rv| { + tx.send(rv.unwrap()).unwrap(); + }, ) .unwrap(); let register_data = try_or!(rx.recv(), |_| { panic!("Problem receiving, unable to continue"); - return; }); println!("Register result: {}", base64::encode(®ister_data)); println!("Asking a security key to sign now, with the data from the register..."); let credential = u2f_get_key_handle_from_register_response(®ister_data).unwrap(); let key_handle = KeyHandle { credential, transports: AuthenticatorTransports::empty(), }; @@ -79,18 +88,21 @@ fn main() { let (tx, rx) = channel(); manager .sign( flags, 15_000, chall_bytes, vec![app_bytes], vec![key_handle], - move |rv| { tx.send(rv.unwrap()).unwrap(); }, + move |rv| { + tx.send(rv.unwrap()).unwrap(); + }, ) .unwrap(); - let (_, sign_data) = try_or!(rx.recv(), |_| { + let (_, handle_used, sign_data) = try_or!(rx.recv(), |_| { println!("Problem receiving"); }); println!("Sign result: {}", base64::encode(&sign_data)); + println!("Key handle used: {}", base64::encode(&handle_used)); println!("Done."); }
--- a/dom/webauthn/u2f-hid-rs/src/capi.rs +++ b/dom/webauthn/u2f-hid-rs/src/capi.rs @@ -48,17 +48,17 @@ pub unsafe extern "C" fn rust_u2f_mgr_fr pub unsafe extern "C" fn rust_u2f_app_ids_new() -> *mut U2FAppIds { Box::into_raw(Box::new(vec![])) } #[no_mangle] pub unsafe extern "C" fn rust_u2f_app_ids_add( ids: *mut U2FAppIds, id_ptr: *const u8, - id_len: usize + id_len: usize, ) { (*ids).push(from_raw(id_ptr, id_len)); } #[no_mangle] pub unsafe extern "C" fn rust_u2f_app_ids_free(ids: *mut U2FAppIds) { if !ids.is_null() { Box::from_raw(ids); @@ -172,17 +172,21 @@ pub unsafe extern "C" fn rust_u2f_mgr_re result.insert(RESBUF_ID_REGISTRATION, registration); callback(tid, Box::into_raw(Box::new(result))); } else { callback(tid, ptr::null_mut()); }; }, ); - if res.is_ok() { tid } else { 0 } + if res.is_ok() { + tid + } else { + 0 + } } #[no_mangle] pub unsafe extern "C" fn rust_u2f_mgr_sign( mgr: *mut U2FManager, flags: u64, timeout: u64, callback: U2FCallback, @@ -206,36 +210,33 @@ pub unsafe extern "C" fn rust_u2f_mgr_si } let flags = ::SignFlags::from_bits_truncate(flags); let challenge = from_raw(challenge_ptr, challenge_len); let app_ids = (*app_ids).clone(); let key_handles = (*khs).clone(); let tid = new_tid(); - let res = (*mgr).sign( - flags, - timeout, - challenge, - app_ids, - key_handles, - move |rv| { - if let Ok((app_id, key_handle, signature)) = rv { - let mut result = U2FResult::new(); - result.insert(RESBUF_ID_KEYHANDLE, key_handle); - result.insert(RESBUF_ID_SIGNATURE, signature); - result.insert(RESBUF_ID_APPID, app_id); - callback(tid, Box::into_raw(Box::new(result))); - } else { - callback(tid, ptr::null_mut()); - }; - }, - ); + let res = (*mgr).sign(flags, timeout, challenge, app_ids, key_handles, move |rv| { + if let Ok((app_id, key_handle, signature)) = rv { + let mut result = U2FResult::new(); + result.insert(RESBUF_ID_KEYHANDLE, key_handle); + result.insert(RESBUF_ID_SIGNATURE, signature); + result.insert(RESBUF_ID_APPID, app_id); + callback(tid, Box::into_raw(Box::new(result))); + } else { + callback(tid, ptr::null_mut()); + }; + }); - if res.is_ok() { tid } else { 0 } + if res.is_ok() { + tid + } else { + 0 + } } #[no_mangle] pub unsafe extern "C" fn rust_u2f_mgr_cancel(mgr: *mut U2FManager) -> u64 { if !mgr.is_null() { // Ignore return value. let _ = (*mgr).cancel(); }
--- a/dom/webauthn/u2f-hid-rs/src/lib.rs +++ b/dom/webauthn/u2f-hid-rs/src/lib.rs @@ -22,21 +22,21 @@ pub mod platform; #[cfg(any(target_os = "windows"))] #[path = "windows/mod.rs"] pub mod platform; #[cfg(not(any(target_os = "linux", target_os = "macos", target_os = "windows")))] #[path = "stub/mod.rs"] pub mod platform; +extern crate boxfnonce; +extern crate libc; #[macro_use] extern crate log; extern crate rand; -extern crate libc; -extern crate boxfnonce; extern crate runloop; #[macro_use] extern crate bitflags; mod consts; mod statemachine; mod u2ftypes;
--- a/dom/webauthn/u2f-hid-rs/src/linux/hidraw.rs +++ b/dom/webauthn/u2f-hid-rs/src/linux/hidraw.rs @@ -3,17 +3,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ extern crate libc; use std::io; use std::mem; use std::os::unix::io::RawFd; -use consts::{FIDO_USAGE_PAGE, FIDO_USAGE_U2FHID}; +use consts::{FIDO_USAGE_U2FHID, FIDO_USAGE_PAGE}; use util::{from_unix_result, io_err}; #[allow(non_camel_case_types)] #[repr(C)] pub struct ReportDescriptor { size: ::libc::c_int, value: [u8; 4096], }
--- a/dom/webauthn/u2f-hid-rs/src/linux/monitor.rs +++ b/dom/webauthn/u2f-hid-rs/src/linux/monitor.rs @@ -84,37 +84,40 @@ where // Remove all tracked devices. self.remove_all_devices(); Ok(()) } fn process_event(&mut self, event: libudev::Event) { - let path = event.device().devnode().map( - |dn| dn.to_owned().into_os_string(), - ); + let path = event + .device() + .devnode() + .map(|dn| dn.to_owned().into_os_string()); match (event.event_type(), path) { (EventType::Add, Some(path)) => { self.add_device(path); } (EventType::Remove, Some(path)) => { self.remove_device(path); } _ => { /* ignore other types and failures */ } } } fn add_device(&mut self, path: OsString) { let f = self.new_device_cb.clone(); let key = path.clone(); - let runloop = RunLoop::new(move |alive| if alive() { - f(path, alive); + let runloop = RunLoop::new(move |alive| { + if alive() { + f(path, alive); + } }); if let Ok(runloop) = runloop { self.runloops.insert(key, runloop); } } fn remove_device(&mut self, path: OsString) {
--- a/dom/webauthn/u2f-hid-rs/src/linux/transaction.rs +++ b/dom/webauthn/u2f-hid-rs/src/linux/transaction.rs @@ -28,16 +28,18 @@ impl Transaction { try_or!(monitor.run(alive), |e| callback.call(Err(e))); // Send an error, if the callback wasn't called already. callback.call(Err(io_err("aborted or timed out"))); }, timeout, )?; - Ok(Self { thread: Some(thread) }) + Ok(Self { + thread: Some(thread), + }) } pub fn cancel(&mut self) { // This must never be None. self.thread.take().unwrap().cancel(); } }
--- a/dom/webauthn/u2f-hid-rs/src/macos/iokit.rs +++ b/dom/webauthn/u2f-hid-rs/src/macos/iokit.rs @@ -2,45 +2,49 @@ * 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/. */ #![allow(non_snake_case, non_camel_case_types, non_upper_case_globals)] extern crate core_foundation_sys; extern crate libc; -use consts::{FIDO_USAGE_PAGE, FIDO_USAGE_U2FHID}; +use consts::{FIDO_USAGE_U2FHID, FIDO_USAGE_PAGE}; use core_foundation_sys::base::*; use core_foundation_sys::dictionary::*; use core_foundation_sys::number::*; use core_foundation_sys::runloop::*; use core_foundation_sys::string::*; use libc::c_void; use std::ops::Deref; type IOOptionBits = u32; pub type IOReturn = libc::c_int; pub type IOHIDManagerRef = *mut __IOHIDManager; pub type IOHIDManagerOptions = IOOptionBits; -pub type IOHIDDeviceCallback = extern "C" fn(context: *mut c_void, - result: IOReturn, - sender: *mut c_void, - device: IOHIDDeviceRef); +pub type IOHIDDeviceCallback = extern "C" fn( + context: *mut c_void, + result: IOReturn, + sender: *mut c_void, + device: IOHIDDeviceRef, +); pub type IOHIDReportType = IOOptionBits; -pub type IOHIDReportCallback = extern "C" fn(context: *mut c_void, - result: IOReturn, - sender: IOHIDDeviceRef, - report_type: IOHIDReportType, - report_id: u32, - report: *mut u8, - report_len: CFIndex); +pub type IOHIDReportCallback = extern "C" fn( + context: *mut c_void, + result: IOReturn, + sender: IOHIDDeviceRef, + report_type: IOHIDReportType, + report_id: u32, + report: *mut u8, + report_len: CFIndex, +); pub const kIOHIDManagerOptionNone: IOHIDManagerOptions = 0; pub const kIOHIDReportTypeOutput: IOHIDReportType = 1; #[repr(C)] pub struct __IOHIDManager { __private: c_void,
--- a/dom/webauthn/u2f-hid-rs/src/macos/monitor.rs +++ b/dom/webauthn/u2f-hid-rs/src/macos/monitor.rs @@ -1,14 +1,14 @@ /* 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/. */ +extern crate libc; extern crate log; -extern crate libc; use core_foundation_sys::base::*; use core_foundation_sys::runloop::*; use libc::c_void; use platform::iokit::*; use runloop::RunLoop; use std::{io, slice}; use std::collections::HashMap;
--- a/dom/webauthn/u2f-hid-rs/src/manager.rs +++ b/dom/webauthn/u2f-hid-rs/src/manager.rs @@ -1,14 +1,14 @@ /* 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/. */ use std::io; -use std::sync::mpsc::{channel, Sender, RecvTimeoutError}; +use std::sync::mpsc::{channel, RecvTimeoutError, Sender}; use std::time::Duration; use consts::PARAMETER_SIZE; use statemachine::StateMachine; use runloop::RunLoop; use util::{to_io_err, OnceCallback}; enum QueueAction { @@ -42,50 +42,43 @@ impl U2FManager { // Start a new work queue thread. let queue = RunLoop::new(move |alive| { let mut sm = StateMachine::new(); while alive() { match rx.recv_timeout(Duration::from_millis(50)) { Ok(QueueAction::Register { - flags, - timeout, - challenge, - application, - key_handles, - callback, - }) => { + flags, + timeout, + challenge, + application, + key_handles, + callback, + }) => { // This must not block, otherwise we can't cancel. sm.register( flags, timeout, challenge, application, key_handles, callback, ); } Ok(QueueAction::Sign { - flags, - timeout, - challenge, - app_ids, - key_handles, - callback, - }) => { + flags, + timeout, + challenge, + app_ids, + key_handles, + callback, + }) => { // This must not block, otherwise we can't cancel. - sm.sign( - flags, - timeout, - challenge, - app_ids, - key_handles, - callback, - ); + sm.sign(flags, timeout, challenge, app_ids, key_handles, callback); } Ok(QueueAction::Cancel) => { // Cancelling must block so that we don't start a new // polling thread before the old one has shut down. sm.cancel(); } Err(RecvTimeoutError::Disconnected) => { break; @@ -168,22 +161,22 @@ impl U2FManager { if app_ids.len() < 1 { return Err(io::Error::new( io::ErrorKind::InvalidInput, "No app IDs given", )); } for app_id in &app_ids { - if app_id.len() != PARAMETER_SIZE { - return Err(io::Error::new( - io::ErrorKind::InvalidInput, - "Invalid app_id size", - )); - } + if app_id.len() != PARAMETER_SIZE { + return Err(io::Error::new( + io::ErrorKind::InvalidInput, + "Invalid app_id size", + )); + } } for key_handle in &key_handles { if key_handle.credential.len() > 256 { return Err(io::Error::new( io::ErrorKind::InvalidInput, "Key handle too large", ));
--- a/dom/webauthn/u2f-hid-rs/src/statemachine.rs +++ b/dom/webauthn/u2f-hid-rs/src/statemachine.rs @@ -19,26 +19,26 @@ fn find_valid_key_handles<'a, F>( key_handles: &'a Vec<::KeyHandle>, mut is_valid: F, ) -> (&'a ::AppId, Vec<&'a ::KeyHandle>) where F: FnMut(&Vec<u8>, &::KeyHandle) -> bool, { // Try all given app_ids in order. for app_id in app_ids { - // Find all valid key handles for the current app_id. - let valid_handles = key_handles - .iter() - .filter(|key_handle| is_valid(app_id, key_handle)) - .collect::<Vec<_>>(); + // Find all valid key handles for the current app_id. + let valid_handles = key_handles + .iter() + .filter(|key_handle| is_valid(app_id, key_handle)) + .collect::<Vec<_>>(); - // If there's at least one, stop. - if valid_handles.len() > 0 { - return (app_id, valid_handles); - } + // If there's at least one, stop. + if valid_handles.len() > 0 { + return (app_id, valid_handles); + } } return (&app_ids[0], vec![]); } #[derive(Default)] pub struct StateMachine { transaction: Option<Transaction>, @@ -82,40 +82,46 @@ impl StateMachine { // Technically, this is a ConstraintError because we shouldn't talk // to this authenticator in the first place. But the result is the // same anyway. if !flags.is_empty() { return; } // Iterate the exclude list and see if there are any matches. - // Abort the state machine if we found a valid key handle. - if key_handles.iter().any(|key_handle| { - is_valid_transport(key_handle.transports) && - u2f_is_keyhandle_valid(dev, &challenge, &application, &key_handle.credential) + // If so, we'll keep polling the device anyway to test for user + // consent, to be consistent with CTAP2 device behavior. + let excluded = key_handles.iter().any(|key_handle| { + is_valid_transport(key_handle.transports) + && u2f_is_keyhandle_valid(dev, &challenge, &application, &key_handle.credential) .unwrap_or(false) /* no match on failure */ - }) - { - return; - } + }); while alive() { - if let Ok(bytes) = u2f_register(dev, &challenge, &application) { - callback.call(Ok(bytes)); - break; + if excluded { + let blank = vec![0u8; PARAMETER_SIZE]; + if let Ok(_) = u2f_register(dev, &blank, &blank) { + callback.call(Err(io_err("duplicate registration"))); + break; + } + } else { + if let Ok(bytes) = u2f_register(dev, &challenge, &application) { + callback.call(Ok(bytes)); + break; + } } // Sleep a bit before trying again. thread::sleep(Duration::from_millis(100)); } }); - self.transaction = Some(try_or!(transaction, |_| { - cbc.call(Err(io_err("couldn't create transaction"))) - })); + self.transaction = Some(try_or!(transaction, |_| cbc.call(Err(io_err( + "couldn't create transaction" + ))))); } pub fn sign( &mut self, flags: ::SignFlags, timeout: u64, challenge: Vec<u8>, app_ids: Vec<::AppId>, @@ -148,28 +154,27 @@ impl StateMachine { // same anyway. if !flags.is_empty() { return; } // For each appId, try all key handles. If there's at least one // valid key handle for an appId, we'll use that appId below. let (app_id, valid_handles) = - find_valid_key_handles(&app_ids, &key_handles, - |app_id, key_handle| { - u2f_is_keyhandle_valid(dev, &challenge, app_id, - &key_handle.credential) - .unwrap_or(false) /* no match on failure */ - }); + find_valid_key_handles(&app_ids, &key_handles, |app_id, key_handle| { + u2f_is_keyhandle_valid(dev, &challenge, app_id, &key_handle.credential) + .unwrap_or(false) /* no match on failure */ + }); // Aggregate distinct transports from all given credentials. - let transports = key_handles.iter().fold( - ::AuthenticatorTransports::empty(), - |t, k| t | k.transports, - ); + let transports = key_handles + .iter() + .fold(::AuthenticatorTransports::empty(), |t, k| { + t | k.transports + }); // We currently only support USB. If the RP specifies transports // and doesn't include USB it's probably lying. if !is_valid_transport(transports) { return; } while alive() { @@ -179,39 +184,36 @@ impl StateMachine { let blank = vec![0u8; PARAMETER_SIZE]; if let Ok(_) = u2f_register(dev, &blank, &blank) { callback.call(Err(io_err("invalid key"))); break; } } else { // Otherwise, try to sign. for key_handle in &valid_handles { - if let Ok(bytes) = u2f_sign( - dev, - &challenge, - app_id, - &key_handle.credential, - ) + if let Ok(bytes) = u2f_sign(dev, &challenge, app_id, &key_handle.credential) { - callback.call(Ok((app_id.clone(), - key_handle.credential.clone(), - bytes))); + callback.call(Ok(( + app_id.clone(), + key_handle.credential.clone(), + bytes, + ))); break; } } } // Sleep a bit before trying again. thread::sleep(Duration::from_millis(100)); } }); - self.transaction = Some(try_or!(transaction, |_| { - cbc.call(Err(io_err("couldn't create transaction"))) - })); + self.transaction = Some(try_or!(transaction, |_| cbc.call(Err(io_err( + "couldn't create transaction" + ))))); } // This blocks. pub fn cancel(&mut self) { if let Some(mut transaction) = self.transaction.take() { transaction.cancel(); } }
--- a/dom/webauthn/u2f-hid-rs/src/u2fprotocol.rs +++ b/dom/webauthn/u2f-hid-rs/src/u2fprotocol.rs @@ -230,18 +230,18 @@ where //////////////////////////////////////////////////////////////////////// // Tests //////////////////////////////////////////////////////////////////////// #[cfg(test)] mod tests { use rand::{thread_rng, Rng}; - use super::{U2FDevice, init_device, ping_device, sendrecv, send_apdu}; - use consts::{CID_BROADCAST, U2FHID_INIT, U2FHID_PING, U2FHID_MSG, SW_NO_ERROR}; + use super::{init_device, ping_device, send_apdu, sendrecv, U2FDevice}; + use consts::{U2FHID_INIT, U2FHID_MSG, U2FHID_PING, CID_BROADCAST, SW_NO_ERROR}; mod platform { use std::io; use std::io::{Read, Write}; use consts::{CID_BROADCAST, HID_RPT_SIZE}; use u2ftypes::U2FDevice; @@ -353,31 +353,31 @@ mod tests { fn test_sendrecv_multiple() { let mut device = platform::TestDevice::new(); let cid = [0x01, 0x02, 0x03, 0x04]; device.set_cid(cid.clone()); // init packet let mut msg = cid.to_vec(); msg.extend(vec![U2FHID_PING, 0x00, 0xe4]); // cmd + length = 228 - // write msg, append [1u8; 57], 171 bytes remaining + // write msg, append [1u8; 57], 171 bytes remain device.add_write(&msg, 1); device.add_read(&msg, 1); // cont packet let mut msg = cid.to_vec(); msg.push(0x00); // seq = 0 - // write msg, append [1u8; 59], 112 bytes remaining + // write msg, append [1u8; 59], 112 bytes remaining device.add_write(&msg, 1); device.add_read(&msg, 1); // cont packet let mut msg = cid.to_vec(); msg.push(0x01); // seq = 1 - // write msg, append [1u8; 59], 53 bytes remaining + // write msg, append [1u8; 59], 53 bytes remaining device.add_write(&msg, 1); device.add_read(&msg, 1); // cont packet let mut msg = cid.to_vec(); msg.push(0x02); // seq = 2 msg.extend_from_slice(&[1u8; 53]); // write msg, append remaining 53 bytes. @@ -395,17 +395,17 @@ mod tests { let cid = [0x01, 0x02, 0x03, 0x04]; let data = [0x01, 0x02, 0x03, 0x04, 0x05]; let mut device = platform::TestDevice::new(); device.set_cid(cid.clone()); let mut msg = cid.to_vec(); // sendrecv header msg.extend(vec![U2FHID_MSG, 0x00, 0x0e]); // len = 14 - // apdu header + // apdu header msg.extend(vec![0x00, U2FHID_PING, 0xaa, 0x00, 0x00, 0x00, 0x05]); // apdu data msg.extend_from_slice(&data); device.add_write(&msg, 0); // Send data back let mut msg = cid.to_vec(); msg.extend(vec![U2FHID_MSG, 0x00, 0x07]);
--- a/dom/webauthn/u2f-hid-rs/src/u2ftypes.rs +++ b/dom/webauthn/u2f-hid-rs/src/u2ftypes.rs @@ -130,17 +130,16 @@ impl U2FHIDCont { if dev.write(&frame)? != frame.len() { return Err(io_err("device write failed")); } Ok(count) } } - // Reply sent after initialization command. Contains information about U2F USB // Key versioning, as well as the communication channel to be used for all // further requests. // // https://fidoalliance.org/specs/fido-u2f-v1.0-nfc-bt-amendment-20150514/fido-u2f-hid-protocol. // html#u2fhid_init pub struct U2FHIDInitResp {}
--- a/dom/webauthn/u2f-hid-rs/src/util.rs +++ b/dom/webauthn/u2f-hid-rs/src/util.rs @@ -59,25 +59,29 @@ pub struct OnceCallback<T> { impl<T> OnceCallback<T> { pub fn new<F>(cb: F) -> Self where F: FnOnce(io::Result<T>), F: Send + 'static, { let cb = Some(SendBoxFnOnce::from(cb)); - Self { callback: Arc::new(Mutex::new(cb)) } + Self { + callback: Arc::new(Mutex::new(cb)), + } } pub fn call(&self, rv: io::Result<T>) { if let Ok(mut cb) = self.callback.lock() { if let Some(cb) = cb.take() { cb.call(rv); } } } } impl<T> Clone for OnceCallback<T> { fn clone(&self) -> Self { - Self { callback: self.callback.clone() } + Self { + callback: self.callback.clone(), + } } }
--- a/dom/webauthn/u2f-hid-rs/src/windows/device.rs +++ b/dom/webauthn/u2f-hid-rs/src/windows/device.rs @@ -2,17 +2,17 @@ * 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/. */ use std::fs::{File, OpenOptions}; use std::io; use std::io::{Read, Write}; use std::os::windows::io::AsRawHandle; -use consts::{CID_BROADCAST, HID_RPT_SIZE, FIDO_USAGE_PAGE, FIDO_USAGE_U2FHID}; +use consts::{FIDO_USAGE_U2FHID, CID_BROADCAST, FIDO_USAGE_PAGE, HID_RPT_SIZE}; use super::winapi::DeviceCapabilities; use u2ftypes::U2FDevice; #[derive(Debug)] pub struct Device { path: String, file: File,
--- a/dom/webauthn/u2f-hid-rs/src/windows/monitor.rs +++ b/dom/webauthn/u2f-hid-rs/src/windows/monitor.rs @@ -60,18 +60,20 @@ where Ok(()) } fn add_device(&mut self, path: &String) { let f = self.new_device_cb.clone(); let path = path.clone(); let key = path.clone(); - let runloop = RunLoop::new(move |alive| if alive() { - f(path, alive); + let runloop = RunLoop::new(move |alive| { + if alive() { + f(path, alive); + } }); if let Ok(runloop) = runloop { self.runloops.insert(key, runloop); } } fn remove_device(&mut self, path: &String) {
--- a/dom/webauthn/u2f-hid-rs/src/windows/transaction.rs +++ b/dom/webauthn/u2f-hid-rs/src/windows/transaction.rs @@ -27,16 +27,18 @@ impl Transaction { try_or!(monitor.run(alive), |e| callback.call(Err(e))); // Send an error, if the callback wasn't called already. callback.call(Err(io_err("aborted or timed out"))); }, timeout, )?; - Ok(Self { thread: Some(thread) }) + Ok(Self { + thread: Some(thread), + }) } pub fn cancel(&mut self) { // This must never be None. self.thread.take().unwrap().cancel(); } }
--- a/dom/webidl/WorkerGlobalScope.webidl +++ b/dom/webidl/WorkerGlobalScope.webidl @@ -38,9 +38,12 @@ WorkerGlobalScope implements WindowOrWor // Mozilla extensions partial interface WorkerGlobalScope { void dump(optional DOMString str); // XXXbz no spec for this yet, because the webperf WG is a bit dysfunctional [Constant, Cached] readonly attribute Performance performance; + + [Func="WorkerGlobalScope::IsInAutomation", Throws] + object getJSTestingFunctions(); };
--- a/dom/workers/WorkerPrivate.cpp +++ b/dom/workers/WorkerPrivate.cpp @@ -2612,31 +2612,34 @@ WorkerPrivate::WorkerPrivate(WorkerPriva , mWorkerScriptExecutedSuccessfully(false) , mFetchHandlerWasAdded(false) , mOnLine(false) , mMainThreadObjectsForgotten(false) , mIsChromeWorker(aIsChromeWorker) , mParentFrozen(false) , mIsSecureContext(false) , mDebuggerRegistered(false) + , mIsInAutomation(false) { MOZ_ASSERT_IF(!IsDedicatedWorker(), NS_IsMainThread()); mLoadInfo.StealFrom(aLoadInfo); if (aParent) { aParent->AssertIsOnWorkerThread(); // Note that this copies our parent's secure context state into mJSSettings. aParent->CopyJSSettings(mJSSettings); // And manually set our mIsSecureContext, though it's not really relevant to // dedicated workers... mIsSecureContext = aParent->IsSecureContext(); MOZ_ASSERT_IF(mIsChromeWorker, mIsSecureContext); + mIsInAutomation = aParent->IsInAutomation(); + MOZ_ASSERT(IsDedicatedWorker()); if (aParent->mParentFrozen) { Freeze(nullptr); } mOnLine = aParent->OnLine(); } @@ -2660,16 +2663,18 @@ WorkerPrivate::WorkerPrivate(WorkerPriva if (mIsSecureContext) { mJSSettings.chrome.compartmentOptions .creationOptions().setSecureContext(true); mJSSettings.content.compartmentOptions .creationOptions().setSecureContext(true); } + mIsInAutomation = xpc::IsInAutomation(); + // Our parent can get suspended after it initiates the async creation // of a new worker thread. In this case suspend the new worker as well. if (mLoadInfo.mWindow && mLoadInfo.mWindow->IsSuspended()) { ParentWindowPaused(); } if (mLoadInfo.mWindow && mLoadInfo.mWindow->IsFrozen()) { Freeze(mLoadInfo.mWindow);
--- a/dom/workers/WorkerPrivate.h +++ b/dom/workers/WorkerPrivate.h @@ -628,16 +628,22 @@ public: // compartment of the worker global. The only reason we don't // AssertIsOnParentThread() here is so we can assert that this value matches // the one on the compartment, which has to be done from the worker thread. bool IsSecureContext() const { return mIsSecureContext; } + // Check whether we're running in automation. + bool IsInAutomation() const + { + return mIsInAutomation; + } + TimeStamp CreationTimeStamp() const { return mCreationTimeStamp; } DOMHighResTimeStamp CreationTime() const { return mCreationTimeHighRes; @@ -1474,16 +1480,20 @@ private: // of state (loadinfo, worker type, parent). // // It's a bit unfortunate that we have to have an out-of-band boolean for // this, but we need access to this state from the parent thread, and we can't // use our global object's secure state there. bool mIsSecureContext; bool mDebuggerRegistered; + + // mIsInAutomation is true when we're running in test automation. + // We expose some extra testing functions in that case. + bool mIsInAutomation; }; class AutoSyncLoopHolder { WorkerPrivate* mWorkerPrivate; nsCOMPtr<nsIEventTarget> mTarget; uint32_t mIndex;
--- a/dom/workers/WorkerScope.cpp +++ b/dom/workers/WorkerScope.cpp @@ -2,16 +2,17 @@ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "WorkerScope.h" #include "jsapi.h" +#include "jsfriendapi.h" #include "mozilla/EventListenerManager.h" #include "mozilla/dom/BindingDeclarations.h" #include "mozilla/dom/Clients.h" #include "mozilla/dom/ClientState.h" #include "mozilla/dom/Console.h" #include "mozilla/dom/DedicatedWorkerGlobalScopeBinding.h" #include "mozilla/dom/DOMPrefs.h" #include "mozilla/dom/Fetch.h" @@ -395,16 +396,36 @@ WorkerGlobalScope::GetPerformance() if (!mPerformance) { mPerformance = Performance::CreateForWorker(mWorkerPrivate); } return mPerformance; } +bool +WorkerGlobalScope::IsInAutomation(JSContext* aCx, JSObject* /* unused */) +{ + return GetWorkerPrivateFromContext(aCx)->IsInAutomation(); +} + +void +WorkerGlobalScope::GetJSTestingFunctions(JSContext* aCx, + JS::MutableHandle<JSObject*> aFunctions, + ErrorResult& aRv) +{ + JSObject* obj = js::GetTestingFunctions(aCx); + if (!obj) { + aRv.Throw(NS_ERROR_OUT_OF_MEMORY); + return; + } + + aFunctions.set(obj); +} + already_AddRefed<Promise> WorkerGlobalScope::Fetch(const RequestOrUSVString& aInput, const RequestInit& aInit, CallerType aCallerType, ErrorResult& aRv) { return FetchRequest(this, aInput, aInit, aCallerType, aRv); }
--- a/dom/workers/WorkerScope.h +++ b/dom/workers/WorkerScope.h @@ -156,16 +156,21 @@ public: Performance* GetPerformance(); Performance* GetPerformanceIfExists() const { return mPerformance; } + static bool IsInAutomation(JSContext* aCx, JSObject* /* unused */); + void GetJSTestingFunctions(JSContext* aCx, + JS::MutableHandle<JSObject*> aFunctions, + ErrorResult& aRv); + already_AddRefed<Promise> Fetch(const RequestOrUSVString& aInput, const RequestInit& aInit, CallerType aCallerType, ErrorResult& aRv); already_AddRefed<IDBFactory> GetIndexedDB(ErrorResult& aErrorResult); already_AddRefed<cache::CacheStorage>
--- a/dom/workers/test/test_worker_interfaces.js +++ b/dom/workers/test/test_worker_interfaces.js @@ -71,21 +71,17 @@ var ecmaGlobals = {name: "TypeError", insecureContext: true}, {name: "Uint16Array", insecureContext: true}, {name: "Uint32Array", insecureContext: true}, {name: "Uint8Array", insecureContext: true}, {name: "Uint8ClampedArray", insecureContext: true}, {name: "URIError", insecureContext: true}, {name: "WeakMap", insecureContext: true}, {name: "WeakSet", insecureContext: true}, - // WebAssembly is not supported on some hardware configurations, - // but we have no way to check that from here. Just give up for - // now and don't check for it at all. Do NOT add any other uses - // of "optional"! - {name: "WebAssembly", insecureContext: true, optional: true}, + {name: "WebAssembly", insecureContext: true, disabled: !getJSTestingFunctions().wasmIsSupportedByHardware()}, ]; // IMPORTANT: Do not change the list above without review from // a JavaScript Engine peer! // IMPORTANT: Do not change the list below without review from a DOM peer! var interfaceNamesInGlobalScope = [ // IMPORTANT: Do not change this list without review from a DOM peer! @@ -286,18 +282,16 @@ function createInterfaceMap(version, use // The insecureContext test is very purposefully converting // entry.insecureContext to boolean, so undefined will convert to // false. That way entries without an insecureContext annotation // will get treated as "insecureContext: false", which means exposed // only in secure contexts. (isInsecureContext && !Boolean(entry.insecureContext)) || entry.disabled) { interfaceMap[entry.name] = false; - } else if (entry.optional) { - interfaceMap[entry.name] = "optional"; } else { interfaceMap[entry.name] = true; } } } } addInterfaces(ecmaGlobals); @@ -308,31 +302,27 @@ function createInterfaceMap(version, use function runTest(version, userAgent) { var interfaceMap = createInterfaceMap(version, userAgent); for (var name of Object.getOwnPropertyNames(self)) { // An interface name should start with an upper case character. if (!/^[A-Z]/.test(name)) { continue; } - ok(interfaceMap[name] === "optional" || interfaceMap[name], + ok(interfaceMap[name], "If this is failing: DANGER, are you sure you want to expose the new interface " + name + " to all webpages as a property on the worker? Do not make a change to this file without a " + " review from a DOM peer for that specific change!!! (or a JS peer for changes to ecmaGlobals)"); delete interfaceMap[name]; } for (var name of Object.keys(interfaceMap)) { - if (interfaceMap[name] === "optional") { + ok(name in self === interfaceMap[name], + name + " should " + (interfaceMap[name] ? "" : " NOT") + " be defined on the global scope"); + if (!interfaceMap[name]) { delete interfaceMap[name]; - } else { - ok(name in self === interfaceMap[name], - name + " should " + (interfaceMap[name] ? "" : " NOT") + " be defined on the global scope"); - if (!interfaceMap[name]) { - delete interfaceMap[name]; - } } } is(Object.keys(interfaceMap).length, 0, "The following interface(s) are not enumerated: " + Object.keys(interfaceMap).join(", ")); } workerTestGetVersion(function(version) { workerTestGetUserAgent(function(userAgent) {
--- a/gfx/thebes/gfxPlatform.h +++ b/gfx/thebes/gfxPlatform.h @@ -717,16 +717,17 @@ public: // you probably want to use gfxVars::UseWebRender() instead of this static bool WebRenderEnvvarEnabled(); protected: gfxPlatform(); virtual ~gfxPlatform(); virtual void InitAcceleration(); + virtual void InitWebRenderConfig(); /** * Called immediately before deleting the gfxPlatform object. */ virtual void WillShutdown(); /** * Initialized hardware vsync based on each platform. @@ -834,17 +835,16 @@ private: /** * This uses nsIScreenManager to determine the screen size and color depth */ void PopulateScreenInfo(); void InitCompositorAccelerationPrefs(); void InitGPUProcessPrefs(); - void InitWebRenderConfig(); void InitOMTPConfig(); static bool IsDXInterop2Blocked(); RefPtr<gfxASurface> mScreenReferenceSurface; nsCOMPtr<nsIObserver> mSRGBOverrideObserver; nsCOMPtr<nsIObserver> mFontPrefsObserver; nsCOMPtr<nsIObserver> mMemoryPressureObserver;
--- a/gfx/thebes/gfxWindowsPlatform.cpp +++ b/gfx/thebes/gfxWindowsPlatform.cpp @@ -365,16 +365,26 @@ gfxWindowsPlatform::InitAcceleration() InitDWriteSupport(); } // CanUseHardwareVideoDecoding depends on DeviceManagerDx state, // so update the cached value now. UpdateCanUseHardwareVideoDecoding(); } +void +gfxWindowsPlatform::InitWebRenderConfig() +{ + gfxPlatform::InitWebRenderConfig(); + + if (gfxVars::UseWebRender()) { + UpdateBackendPrefs(); + } +} + bool gfxWindowsPlatform::CanUseHardwareVideoDecoding() { DeviceManagerDx* dm = DeviceManagerDx::Get(); if (!dm) { return false; } if (!dm->TextureSharingWorks()) { @@ -431,17 +441,18 @@ gfxWindowsPlatform::HandleDeviceReset() void gfxWindowsPlatform::UpdateBackendPrefs() { uint32_t canvasMask = BackendTypeBit(BackendType::CAIRO) | BackendTypeBit(BackendType::SKIA); uint32_t contentMask = BackendTypeBit(BackendType::CAIRO) | BackendTypeBit(BackendType::SKIA); BackendType defaultBackend = BackendType::SKIA; - if (gfxConfig::IsEnabled(Feature::DIRECT2D) && Factory::HasD2D1Device()) { + if (gfxConfig::IsEnabled(Feature::DIRECT2D) && + Factory::HasD2D1Device() && !gfxVars::UseWebRender()) { contentMask |= BackendTypeBit(BackendType::DIRECT2D1_1); canvasMask |= BackendTypeBit(BackendType::DIRECT2D1_1); defaultBackend = BackendType::DIRECT2D1_1; } InitBackendPrefs(canvasMask, defaultBackend, contentMask, defaultBackend); } bool
--- a/gfx/thebes/gfxWindowsPlatform.h +++ b/gfx/thebes/gfxWindowsPlatform.h @@ -232,16 +232,17 @@ protected: void BuildContentDeviceData(mozilla::gfx::ContentDeviceData* aOut) override; protected: RenderMode mRenderMode; private: void Init(); void InitAcceleration() override; + void InitWebRenderConfig() override; void InitializeDevices(); void InitializeD3D11(); void InitializeD2D(); bool InitDWriteSupport(); bool InitGPUProcessSupport(); void DisableD2D(mozilla::gfx::FeatureStatus aStatus, const char* aMessage,
--- a/js/src/jit/CodeGenerator.cpp +++ b/js/src/jit/CodeGenerator.cpp @@ -2830,40 +2830,38 @@ CodeGenerator::visitClassConstructor(LCl typedef JSObject* (*LambdaFn)(JSContext*, HandleFunction, HandleObject); static const VMFunction LambdaInfo = FunctionInfo<LambdaFn>(js::Lambda, "Lambda"); void CodeGenerator::visitLambdaForSingleton(LLambdaForSingleton* lir) { pushArg(ToRegister(lir->environmentChain())); - pushArg(ImmGCPtr(lir->mir()->info().fun)); + pushArg(ImmGCPtr(lir->mir()->info().funUnsafe())); callVM(LambdaInfo, lir); } void CodeGenerator::visitLambda(LLambda* lir) { Register envChain = ToRegister(lir->environmentChain()); Register output = ToRegister(lir->output()); Register tempReg = ToRegister(lir->temp()); const LambdaFunctionInfo& info = lir->mir()->info(); - OutOfLineCode* ool = oolCallVM(LambdaInfo, lir, ArgList(ImmGCPtr(info.fun), envChain), + OutOfLineCode* ool = oolCallVM(LambdaInfo, lir, ArgList(ImmGCPtr(info.funUnsafe()), envChain), StoreRegisterTo(output)); MOZ_ASSERT(!info.singletonType); - masm.createGCObject(output, tempReg, info.fun, gc::DefaultHeap, ool->entry()); + masm.createGCObject(output, tempReg, info.funUnsafe(), gc::DefaultHeap, ool->entry()); emitLambdaInit(output, envChain, info); if (info.flags & JSFunction::EXTENDED) { - MOZ_ASSERT(info.fun->allowSuperProperty() || info.fun->isSelfHostedBuiltin() || - info.fun->isAsync()); static_assert(FunctionExtended::NUM_EXTENDED_SLOTS == 2, "All slots must be initialized"); masm.storeValue(UndefinedValue(), Address(output, FunctionExtended::offsetOfExtendedSlot(0))); masm.storeValue(UndefinedValue(), Address(output, FunctionExtended::offsetOfExtendedSlot(1))); } masm.bind(ool->rejoin()); } @@ -2903,17 +2901,17 @@ CodeGenerator::visitOutOfLineLambdaArrow masm.pop(newTarget.scratchReg()); masm.bind(ool->entryNoPop()); saveLive(ool->lir); pushArg(newTarget); pushArg(envChain); - pushArg(ImmGCPtr(info.fun)); + pushArg(ImmGCPtr(info.funUnsafe())); callVM(LambdaArrowInfo, ool->lir); StoreRegisterTo(output).generate(this); restoreLiveIgnore(ool->lir, StoreRegisterTo(output).clobbered()); masm.jump(ool->rejoin()); } @@ -2940,17 +2938,17 @@ CodeGenerator::visitLambdaArrow(LLambdaA } // There's not enough registers on x86 with the profiler enabled to request // a temp. Instead, spill part of one of the values, being prepared to // restore it if necessary on the out of line path. Register tempReg = newTarget.scratchReg(); masm.push(newTarget.scratchReg()); - masm.createGCObject(output, tempReg, info.fun, gc::DefaultHeap, ool->entry()); + masm.createGCObject(output, tempReg, info.funUnsafe(), gc::DefaultHeap, ool->entry()); masm.pop(newTarget.scratchReg()); emitLambdaInit(output, envChain, info); // Initialize extended slots. Lexical |this| is stored in the first one. MOZ_ASSERT(info.flags & JSFunction::EXTENDED); static_assert(FunctionExtended::NUM_EXTENDED_SLOTS == 2, "All slots must be initialized"); @@ -2981,17 +2979,18 @@ CodeGenerator::emitLambdaInit(Register o static_assert(JSFunction::offsetOfFlags() == JSFunction::offsetOfNargs() + 2, "the code below needs to be adapted"); masm.store32(Imm32(u.word), Address(output, JSFunction::offsetOfNargs())); masm.storePtr(ImmGCPtr(info.scriptOrLazyScript), Address(output, JSFunction::offsetOfScriptOrLazyScript())); masm.storePtr(envChain, Address(output, JSFunction::offsetOfEnvironment())); // No post barrier needed because output is guaranteed to be allocated in // the nursery. - masm.storePtr(ImmGCPtr(info.fun->displayAtom()), Address(output, JSFunction::offsetOfAtom())); + masm.storePtr(ImmGCPtr(info.funUnsafe()->displayAtom()), + Address(output, JSFunction::offsetOfAtom())); } typedef bool (*SetFunNameFn)(JSContext*, HandleFunction, HandleValue, FunctionPrefixKind); static const VMFunction SetFunNameInfo = FunctionInfo<SetFunNameFn>(js::SetFunctionNameIfNoOwnName, "SetFunName"); void CodeGenerator::visitSetFunName(LSetFunName* lir)
--- a/js/src/jit/LIR.h +++ b/js/src/jit/LIR.h @@ -729,17 +729,16 @@ class LNode // Returns the number of outputs of this instruction. If an output is // unallocated, it is an LDefinition, defining a virtual register. size_t numDefs() const { return numDefs_; } // Returns information about operands. virtual LAllocation* getOperand(size_t index) = 0; - virtual void setOperand(size_t index, const LAllocation& a) = 0; bool isCall() const { return isCall_; } // Does this call preserve the given register? // By default, it is assumed that all registers are clobbered by a call. inline bool isCallPreserved(AnyRegister reg) const; @@ -825,16 +824,19 @@ class LInstruction } public: inline LDefinition* getDef(size_t index); void setDef(size_t index, const LDefinition& def) { *getDef(index) = def; } + void setOperand(size_t index, const LAllocation& a) { + *getOperand(index) = a; + } // Returns information about temporary registers needed. Each temporary // register is an LDefinition with a fixed or virtual register and // either GENERAL, FLOAT32, or DOUBLE type. size_t numTemps() const { return numTemps_; } inline LDefinition* getTemp(size_t index); @@ -964,17 +966,17 @@ class LPhi final : public LNode } size_t numOperands() const { return mir_->toPhi()->numOperands(); } LAllocation* getOperand(size_t index) override { MOZ_ASSERT(index < numOperands()); return &inputs_[index]; } - void setOperand(size_t index, const LAllocation& a) override { + void setOperand(size_t index, const LAllocation& a) { MOZ_ASSERT(index < numOperands()); inputs_[index] = a; } // Phis don't have temps, so calling numTemps/getTemp is pointless. size_t numTemps() const = delete; LDefinition* getTemp(size_t index) = delete; }; @@ -1161,17 +1163,17 @@ class LInstructionHelper : public detail LInstructionHelper() : details::LInstructionFixedDefsTempsHelper<Defs, Temps>(Operands) {} public: LAllocation* getOperand(size_t index) final { return &operands_[index]; } - void setOperand(size_t index, const LAllocation& a) final { + void setOperand(size_t index, const LAllocation& a) { operands_[index] = a; } void setBoxOperand(size_t index, const LBoxAllocation& alloc) { #ifdef JS_NUNBOX32 operands_[index + TYPE_INDEX] = alloc.type(); operands_[index + PAYLOAD_INDEX] = alloc.payload(); #else operands_[index] = alloc.value(); @@ -1207,17 +1209,17 @@ class LVariadicInstruction : public deta public: MOZ_MUST_USE bool init(TempAllocator& alloc) { return operands_.init(alloc, this->nonPhiNumOperands_); } LAllocation* getOperand(size_t index) final { return &operands_[index]; } - void setOperand(size_t index, const LAllocation& a) final { + void setOperand(size_t index, const LAllocation& a) { operands_[index] = a; } void setBoxOperand(size_t index, const LBoxAllocation& a) { #ifdef JS_NUNBOX32 operands_[index + TYPE_INDEX] = a.type(); operands_[index + PAYLOAD_INDEX] = a.payload(); #else operands_[index] = a.value();
--- a/js/src/jit/MIR.h +++ b/js/src/jit/MIR.h @@ -8793,38 +8793,58 @@ class MClassConstructor : public MNullar } }; struct LambdaFunctionInfo { // The functions used in lambdas are the canonical original function in // the script, and are immutable except for delazification. Record this // information while still on the active thread to avoid races. - CompilerFunction fun; + private: + CompilerFunction fun_; + + public: uint16_t flags; uint16_t nargs; gc::Cell* scriptOrLazyScript; bool singletonType; bool useSingletonForClone; explicit LambdaFunctionInfo(JSFunction* fun) - : fun(fun), flags(fun->flags()), nargs(fun->nargs()), + : fun_(fun), flags(fun->flags()), nargs(fun->nargs()), scriptOrLazyScript(fun->hasScript() ? (gc::Cell*) fun->nonLazyScript() : (gc::Cell*) fun->lazyScript()), singletonType(fun->isSingleton()), useSingletonForClone(ObjectGroup::useSingletonForClone(fun)) - {} + { + // If this assert fails, make sure CodeGenerator::visitLambda does the + // right thing. We can't assert this off-thread in CodeGenerator, + // because fun->isAsync() accesses the script/lazyScript and can race + // with delazification on the main thread. + MOZ_ASSERT_IF(flags & JSFunction::EXTENDED, + fun->isArrow() || + fun->allowSuperProperty() || + fun->isSelfHostedBuiltin() || + fun->isAsync()); + } + + // Be careful when calling this off-thread. Don't call any JSFunction* + // methods that depend on script/lazyScript - this can race with + // delazification on the main thread. + JSFunction* funUnsafe() const { + return fun_; + } bool appendRoots(MRootList& roots) const { - if (!roots.append(fun)) - return false; - if (fun->hasScript()) - return roots.append(fun->nonLazyScript()); - return roots.append(fun->lazyScript()); + if (!roots.append(fun_)) + return false; + if (fun_->hasScript()) + return roots.append(fun_->nonLazyScript()); + return roots.append(fun_->lazyScript()); } private: LambdaFunctionInfo(const LambdaFunctionInfo&) = delete; void operator=(const LambdaFunctionInfo&) = delete; }; class MLambda @@ -8834,18 +8854,19 @@ class MLambda const LambdaFunctionInfo info_; MLambda(TempAllocator& alloc, CompilerConstraintList* constraints, MDefinition* envChain, MConstant* cst) : MBinaryInstruction(classOpcode, envChain, cst), info_(&cst->toObject().as<JSFunction>()) { setResultType(MIRType::Object); - if (!info().fun->isSingleton() && !ObjectGroup::useSingletonForClone(info().fun)) - setResultTypeSet(MakeSingletonTypeSet(alloc, constraints, info().fun)); + JSFunction* fun = info().funUnsafe(); + if (!fun->isSingleton() && !ObjectGroup::useSingletonForClone(fun)) + setResultTypeSet(MakeSingletonTypeSet(alloc, constraints, fun)); } public: INSTRUCTION_HEADER(Lambda) TRIVIAL_NEW_WRAPPERS_WITH_ALLOC NAMED_OPERANDS((0, environmentChain)) MConstant* functionOperand() const { @@ -8870,19 +8891,20 @@ class MLambdaArrow const LambdaFunctionInfo info_; MLambdaArrow(TempAllocator& alloc, CompilerConstraintList* constraints, MDefinition* envChain, MDefinition* newTarget, MConstant* cst) : MTernaryInstruction(classOpcode, envChain, newTarget, cst), info_(&cst->toObject().as<JSFunction>()) { setResultType(MIRType::Object); - MOZ_ASSERT(!ObjectGroup::useSingletonForClone(info().fun)); - if (!info().fun->isSingleton()) - setResultTypeSet(MakeSingletonTypeSet(alloc, constraints, info().fun)); + JSFunction* fun = info().funUnsafe(); + MOZ_ASSERT(!ObjectGroup::useSingletonForClone(fun)); + if (!fun->isSingleton()) + setResultTypeSet(MakeSingletonTypeSet(alloc, constraints, fun)); } public: INSTRUCTION_HEADER(LambdaArrow) TRIVIAL_NEW_WRAPPERS_WITH_ALLOC NAMED_OPERANDS((0, environmentChain), (1, newTargetDef)) MConstant* functionOperand() const {
--- a/js/src/jit/RegisterAllocator.h +++ b/js/src/jit/RegisterAllocator.h @@ -351,22 +351,19 @@ class RegisterAllocator return outputOf(ins); } void dumpInstructions(); public: template<typename TakeableSet> static void takeWasmRegisters(TakeableSet& regs) { -#if defined(JS_CODEGEN_X64) || defined(JS_CODEGEN_ARM) || \ +#if defined(JS_CODEGEN_X64) || defined(JS_CODEGEN_ARM) || defined(JS_CODEGEN_ARM64) || \ defined(JS_CODEGEN_MIPS32) || defined(JS_CODEGEN_MIPS64) regs.take(HeapReg); -#elif defined(JS_CODEGEN_ARM64) - regs.take(HeapReg); - regs.take(HeapLenReg); #endif regs.take(FramePointer); } }; static inline AnyRegister GetFixedRegister(const LDefinition* def, const LUse* use) {
--- a/js/src/jit/Snapshots.cpp +++ b/js/src/jit/Snapshots.cpp @@ -259,17 +259,17 @@ RValueAllocation::layoutFromMode(Mode mo if (mode >= TYPED_REG_MIN && mode <= TYPED_REG_MAX) return regLayout; if (mode >= TYPED_STACK_MIN && mode <= TYPED_STACK_MAX) return stackLayout; } } - MOZ_CRASH("Wrong mode type?"); + MOZ_CRASH_UNSAFE_PRINTF("Unexpected mode: 0x%x", mode); } // Pad serialized RValueAllocations by a multiple of X bytes in the allocation // buffer. By padding serialized value allocations, we are building an // indexable table of elements of X bytes, and thus we can safely divide any // offset within the buffer by X to obtain an index. // // By padding, we are loosing space within the allocation buffer, but we
--- a/js/src/jit/Snapshots.h +++ b/js/src/jit/Snapshots.h @@ -298,16 +298,19 @@ class RValueAllocation } void writeHeader(CompactBufferWriter& writer, JSValueType type, uint32_t regCode) const; public: static RValueAllocation read(CompactBufferReader& reader); void write(CompactBufferWriter& writer) const; public: + bool valid() const { + return mode_ != INVALID; + } Mode mode() const { return Mode(mode_ & MODE_BITS_MASK); } bool needSideEffect() const { return mode_ & RECOVER_SIDE_EFFECT_MASK; } uint32_t index() const {
--- a/js/src/jit/arm64/Architecture-arm64.cpp +++ b/js/src/jit/arm64/Architecture-arm64.cpp @@ -66,10 +66,16 @@ FloatRegister::GetPushSizeInBytes(const uint32_t FloatRegister::getRegisterDumpOffsetInBytes() { // Although registers are 128-bits wide, only the first 64 need saving per ABI. return encoding() * sizeof(double); } +uint32_t +GetARM64Flags() +{ + return 0; +} + } // namespace jit } // namespace js
--- a/js/src/jit/arm64/Architecture-arm64.h +++ b/js/src/jit/arm64/Architecture-arm64.h @@ -486,12 +486,14 @@ hasUnaliasedDouble() // ARM prior to ARMv8 also has doubles that alias multiple floats. // Again, ARMv8 is in the clear. inline bool hasMultiAlias() { return false; } +uint32_t GetARM64Flags(); + } // namespace jit } // namespace js #endif // jit_arm64_Architecture_arm64_h
--- a/js/src/jit/arm64/Assembler-arm64.h +++ b/js/src/jit/arm64/Assembler-arm64.h @@ -82,17 +82,16 @@ static constexpr Register IntArgReg0 { R static constexpr Register IntArgReg1 { Registers::x1 }; static constexpr Register IntArgReg2 { Registers::x2 }; static constexpr Register IntArgReg3 { Registers::x3 }; static constexpr Register IntArgReg4 { Registers::x4 }; static constexpr Register IntArgReg5 { Registers::x5 }; static constexpr Register IntArgReg6 { Registers::x6 }; static constexpr Register IntArgReg7 { Registers::x7 }; static constexpr Register HeapReg { Registers::x21 }; -static constexpr Register HeapLenReg { Registers::x22 }; // Define unsized Registers. #define DEFINE_UNSIZED_REGISTERS(N) \ static constexpr Register r##N { Registers::x##N }; REGISTER_CODE_LIST(DEFINE_UNSIZED_REGISTERS) #undef DEFINE_UNSIZED_REGISTERS static constexpr Register ip0 { Registers::x16 }; static constexpr Register ip1 { Registers::x16 };
new file mode 100644 --- /dev/null +++ b/js/src/jit/arm64/Disassembler-arm64.cpp @@ -0,0 +1,25 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * vim: set ts=8 sts=4 et sw=4 tw=99: + * + * Copyright 2018 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "jit/Disassembler.h" + +MOZ_COLD uint8_t* +js::jit::Disassembler::DisassembleHeapAccess(uint8_t*, js::jit::Disassembler::HeapAccess*) +{ + MOZ_CRASH("NYI - asm.js not supported yet on this platform"); +}
--- a/js/src/jit/arm64/MacroAssembler-arm64.h +++ b/js/src/jit/arm64/MacroAssembler-arm64.h @@ -2022,39 +2022,16 @@ class MacroAssemblerCompat : public vixl const ARMRegister scratch32 = temps.AcquireW(); MOZ_ASSERT(scratch32.asUnsized() != addr.base); load32(addr, scratch32.asUnsized()); Add(scratch32, scratch32, Operand(1)); store32(scratch32.asUnsized(), addr); } - void BoundsCheck(Register ptrReg, Label* onFail, vixl::CPURegister zeroMe = vixl::NoReg) { - // use tst rather than Tst to *ensure* that a single instrution is generated. - Cmp(ARMRegister(ptrReg, 32), ARMRegister(HeapLenReg, 32)); - if (!zeroMe.IsNone()) { - if (zeroMe.IsRegister()) { - Csel(ARMRegister(zeroMe), - ARMRegister(zeroMe), - Operand(zeroMe.Is32Bits() ? vixl::wzr : vixl::xzr), - Assembler::Below); - } else if (zeroMe.Is32Bits()) { - vixl::UseScratchRegisterScope temps(this); - const ARMFPRegister scratchFloat = temps.AcquireS(); - Fmov(scratchFloat, JS::GenericNaN()); - Fcsel(ARMFPRegister(zeroMe), ARMFPRegister(zeroMe), scratchFloat, Assembler::Below); - } else { - vixl::UseScratchRegisterScope temps(this); - const ARMFPRegister scratchDouble = temps.AcquireD(); - Fmov(scratchDouble, JS::GenericNaN()); - Fcsel(ARMFPRegister(zeroMe), ARMFPRegister(zeroMe), scratchDouble, Assembler::Below); - } - } - B(onFail, Assembler::AboveOrEqual); - } void breakpoint(); // Emits a simulator directive to save the current sp on an internal stack. void simulatorMarkSP() { #ifdef JS_SIMULATOR_ARM64 svc(vixl::kMarkStackPointer); #endif }
--- a/js/src/jit/shared/CodeGenerator-shared.cpp +++ b/js/src/jit/shared/CodeGenerator-shared.cpp @@ -447,23 +447,25 @@ CodeGeneratorShared::encodeAllocation(LS masm.propagateOOM(graph.addConstantToPool(constant->toJSValue(), &index)); alloc = RValueAllocation::ConstantPool(index); break; } JSValueType valueType = (type == MIRType::ObjectOrNull) ? JSVAL_TYPE_OBJECT : ValueTypeFromMIRType(type); - MOZ_ASSERT(payload->isMemory() || payload->isRegister()); + MOZ_DIAGNOSTIC_ASSERT(payload->isMemory() || payload->isRegister()); if (payload->isMemory()) alloc = RValueAllocation::Typed(valueType, ToStackIndex(payload)); else if (payload->isGeneralReg()) alloc = RValueAllocation::Typed(valueType, ToRegister(payload)); else if (payload->isFloatReg()) alloc = RValueAllocation::Double(ToFloatRegister(payload)); + else + MOZ_CRASH("Unexpected payload type."); break; } case MIRType::Float32: case MIRType::Int8x16: case MIRType::Int16x8: case MIRType::Int32x4: case MIRType::Float32x4: case MIRType::Bool8x16: @@ -536,16 +538,17 @@ CodeGeneratorShared::encodeAllocation(LS if (payload->isRegister()) alloc = RValueAllocation::Untyped(ToRegister(payload)); else alloc = RValueAllocation::Untyped(ToStackIndex(payload)); #endif break; } } + MOZ_DIAGNOSTIC_ASSERT(alloc.valid()); // This set an extra bit as part of the RValueAllocation, such that we know // that recover instruction have to be executed without wrapping the // instruction in a no-op recover instruction. if (mir->isIncompleteObject()) alloc.setNeedSideEffect(); masm.propagateOOM(snapshots_.add(alloc));
--- a/js/src/jit/shared/LIR-shared.h +++ b/js/src/jit/shared/LIR-shared.h @@ -6934,17 +6934,17 @@ class LGetPropertyPolymorphicV : public setOperand(0, obj); } const LAllocation* obj() { return getOperand(0); } const MGetPropertyPolymorphic* mir() const { return mir_->toGetPropertyPolymorphic(); } - virtual const char* extraName() const { + const char* extraName() const { return PropertyNameToExtraName(mir()->name()); } }; // Emit code to load a typed value from an object's slots if its shape matches // one of the shapes observed by the baseline IC, else bails out. class LGetPropertyPolymorphicT : public LInstructionHelper<1, 1, 1> { @@ -6959,17 +6959,17 @@ class LGetPropertyPolymorphicT : public return getOperand(0); } const LDefinition* temp() { return getTemp(0); } const MGetPropertyPolymorphic* mir() const { return mir_->toGetPropertyPolymorphic(); } - virtual const char* extraName() const { + const char* extraName() const { return PropertyNameToExtraName(mir()->name()); } }; // Emit code to store a boxed value to an object's slots if its shape matches // one of the shapes observed by the baseline IC, else bails out. class LSetPropertyPolymorphicV : public LInstructionHelper<0, 1 + BOX_PIECES, 1> {
--- a/js/src/jit/x86-shared/Assembler-x86-shared.h +++ b/js/src/jit/x86-shared/Assembler-x86-shared.h @@ -3680,19 +3680,19 @@ class AssemblerX86Shared : public Assemb static void PatchWrite_Imm32(CodeLocationLabel dataLabel, Imm32 toWrite) { *((int32_t*) dataLabel.raw() - 1) = toWrite.value; } static void PatchDataWithValueCheck(CodeLocationLabel data, PatchedImmPtr newData, PatchedImmPtr expectedData) { // The pointer given is a pointer to *after* the data. - uintptr_t* ptr = ((uintptr_t*) data.raw()) - 1; - MOZ_ASSERT(*ptr == (uintptr_t)expectedData.value); - *ptr = (uintptr_t)newData.value; + uint8_t* ptr = data.raw() - sizeof(uintptr_t); + MOZ_ASSERT(mozilla::LittleEndian::readUintptr(ptr) == uintptr_t(expectedData.value)); + mozilla::LittleEndian::writeUintptr(ptr, uintptr_t(newData.value)); } static void PatchDataWithValueCheck(CodeLocationLabel data, ImmPtr newData, ImmPtr expectedData) { PatchDataWithValueCheck(data, PatchedImmPtr(newData.value), PatchedImmPtr(expectedData.value)); } static uint32_t NopSize() { return 1; }
--- a/js/src/moz.build +++ b/js/src/moz.build @@ -514,16 +514,17 @@ elif CONFIG['JS_CODEGEN_ARM']: ] elif CONFIG['JS_CODEGEN_ARM64']: UNIFIED_SOURCES += [ 'jit/arm64/Architecture-arm64.cpp', 'jit/arm64/Assembler-arm64.cpp', 'jit/arm64/Bailouts-arm64.cpp', 'jit/arm64/BaselineIC-arm64.cpp', 'jit/arm64/CodeGenerator-arm64.cpp', + 'jit/arm64/Disassembler-arm64.cpp', 'jit/arm64/Lowering-arm64.cpp', 'jit/arm64/MacroAssembler-arm64.cpp', 'jit/arm64/MoveEmitter-arm64.cpp', 'jit/arm64/SharedIC-arm64.cpp', 'jit/arm64/Trampoline-arm64.cpp', 'jit/arm64/vixl/Assembler-vixl.cpp', 'jit/arm64/vixl/Cpu-vixl.cpp', 'jit/arm64/vixl/Decoder-vixl.cpp', @@ -647,21 +648,23 @@ DIRS += [ FINAL_LIBRARY = 'js' if CONFIG['NIGHTLY_BUILD']: DEFINES['ENABLE_BINARYDATA'] = True DEFINES['ENABLE_SIMD'] = True DEFINES['ENABLE_WASM_SATURATING_TRUNC_OPS'] = True DEFINES['ENABLE_WASM_SIGNEXTEND_OPS'] = True DEFINES['ENABLE_WASM_THREAD_OPS'] = True - # An experiment we want to run on Nightly: Can we change the JS - # representation of an exported global from the global's value - # to an instance of WebAssembly.Global without breaking existing - # wasm content? - DEFINES['ENABLE_WASM_GLOBAL'] = True + +# An experiment we want to run on Nightly and early Beta: Can we change the JS +# representation of an exported global from the global's value to an instance +# of WebAssembly.Global without breaking existing wasm content? +# +# Additionally guarded by EARLY_BETA_OR_EARLIER in the code. +DEFINES['ENABLE_WASM_GLOBAL'] = True if CONFIG['JS_BUILD_BINAST']: # Using SOURCES as UNIFIED_SOURCES causes mysterious bugs on 32-bit platforms. # These parts of BinAST are designed only to test evolutions of the # specification. SOURCES += ['frontend/BinTokenReaderTester.cpp'] # These parts of BinAST should eventually move to release. SOURCES += [ @@ -674,17 +677,17 @@ if CONFIG['JS_BUILD_BINAST']: SOURCES['frontend/BinSource.cpp'].flags += ['-fsanitize-coverage=trace-pc-guard'] SOURCES['frontend/BinToken.cpp'].flags += ['-fsanitize-coverage=trace-pc-guard'] SOURCES['frontend/BinTokenReaderTester.cpp'].flags += ['-fsanitize-coverage=trace-pc-guard'] # Wasm code should use WASM_HUGE_MEMORY instead of JS_CODEGEN_X64 # so that it is easy to use the huge-mapping optimization for other # 64-bit platforms in the future. -if CONFIG['JS_CODEGEN_X64']: +if CONFIG['JS_CODEGEN_X64'] or CONFIG['JS_CODEGEN_ARM64']: DEFINES['WASM_HUGE_MEMORY'] = True if CONFIG['MOZ_DEBUG'] or CONFIG['NIGHTLY_BUILD']: DEFINES['JS_CACHEIR_SPEW'] = True # Also set in shell/moz.build DEFINES['ENABLE_SHARED_ARRAY_BUFFER'] = True
--- a/js/src/old-configure.in +++ b/js/src/old-configure.in @@ -1546,16 +1546,17 @@ AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_ dnl ======================================================== dnl = dnl = Misc. Options dnl = dnl ======================================================== MOZ_ARG_HEADER(Misc. Options) if test -z "$SKIP_COMPILER_CHECKS"; then + dnl ======================================================== dnl = dnl = Compiler Options dnl = dnl ======================================================== MOZ_ARG_HEADER(Compiler Options) dnl ======================================================== @@ -1820,16 +1821,29 @@ AC_CHECK_FUNCS(posix_fadvise posix_fallo dnl Set various defines and substitutions dnl ======================================================== AC_SUBST(MOZ_DEV_EDITION) if test -n "$MOZ_DEV_EDITION"; then AC_DEFINE(MOZ_DEV_EDITION) fi +# Allow influencing configure with a defines.sh script. +. "${srcdir}/build/defines.sh" + +# If we're not building a release build, define EARLY_BETA_OR_EARLIER if it is +# set in defines.sh +if test "$BUILDING_RELEASE"; then + # Override value in defines.sh, if any + EARLY_BETA_OR_EARLIER= +elif test "$EARLY_BETA_OR_EARLIER"; then + AC_DEFINE(EARLY_BETA_OR_EARLIER) +fi +AC_SUBST(EARLY_BETA_OR_EARLIER) + dnl ======================================================== dnl JavaScript shell dnl ======================================================== MOZ_CHECK_ALLOCATOR AC_CHECK_FUNCS(localeconv)
--- a/js/src/vm/JSScript-inl.h +++ b/js/src/vm/JSScript-inl.h @@ -106,31 +106,37 @@ JSScript::ensureNonLazyCanonicalFunction JSFunction* fun = function(); if (fun && fun->isInterpretedLazy()) functionDelazifying(); } inline JSFunction* JSScript::getFunction(size_t index) { - JSFunction* fun = &getObject(index)->as<JSFunction>(); + JSObject* obj = getObject(index); + MOZ_RELEASE_ASSERT(obj->is<JSFunction>(), "Script object is not JSFunction"); + JSFunction* fun = &obj->as<JSFunction>(); MOZ_ASSERT_IF(fun->isNative(), IsAsmJSModuleNative(fun->native())); return fun; } inline js::RegExpObject* JSScript::getRegExp(size_t index) { - return &getObject(index)->as<js::RegExpObject>(); + JSObject* obj = getObject(index); + MOZ_RELEASE_ASSERT(obj->is<js::RegExpObject>(), "Script object is not RegExpObject"); + return &obj->as<js::RegExpObject>(); } inline js::RegExpObject* JSScript::getRegExp(jsbytecode* pc) { - return &getObject(pc)->as<js::RegExpObject>(); + JSObject* obj = getObject(pc); + MOZ_RELEASE_ASSERT(obj->is<js::RegExpObject>(), "Script object is not RegExpObject"); + return &obj->as<js::RegExpObject>(); } inline js::GlobalObject& JSScript::global() const { /* * A JSScript always marks its compartment's global (via bindings) so we * can assert that maybeGlobal is non-null here.
--- a/js/src/vm/StructuredClone.cpp +++ b/js/src/vm/StructuredClone.cpp @@ -2370,31 +2370,32 @@ JSStructuredCloneReader::startRead(Mutab bool JSStructuredCloneReader::readHeader() { uint32_t tag, data; if (!in.getPair(&tag, &data)) return in.reportTruncated(); if (tag != SCTAG_HEADER) { - // Old structured clone buffer. We must have read it from disk or - // somewhere, so we can assume it's scope-compatible. + // Old structured clone buffer. We must have read it from disk. + storedScope = JS::StructuredCloneScope::DifferentProcess; return true; } MOZ_ALWAYS_TRUE(in.readPair(&tag, &data)); + storedScope = JS::StructuredCloneScope(data); + if (data != uint32_t(JS::StructuredCloneScope::SameProcessSameThread) && data != uint32_t(JS::StructuredCloneScope::SameProcessDifferentThread) && data != uint32_t(JS::StructuredCloneScope::DifferentProcess)) { JS_ReportErrorNumberASCII(context(), GetErrorMessage, nullptr, JSMSG_SC_BAD_SERIALIZED_DATA, "invalid structured clone scope"); return false; } - storedScope = JS::StructuredCloneScope(data); if (storedScope < allowedScope) { JS_ReportErrorNumberASCII(context(), GetErrorMessage, nullptr, JSMSG_SC_BAD_SERIALIZED_DATA, "incompatible structured clone scope"); return false; } return true; }
--- a/js/src/wasm/WasmJS.cpp +++ b/js/src/wasm/WasmJS.cpp @@ -248,17 +248,17 @@ GetImports(JSContext* cx, break; case DefinitionKind::Global: Val val; const GlobalDesc& global = globals[globalIndex++]; MOZ_ASSERT(global.importIndex() == globalIndex - 1); MOZ_ASSERT(!global.isMutable()); -#ifdef ENABLE_WASM_GLOBAL +#if defined(ENABLE_WASM_GLOBAL) && defined(EARLY_BETA_OR_EARLIER) if (v.isObject() && v.toObject().is<WasmGlobalObject>()) v.set(v.toObject().as<WasmGlobalObject>().value()); #endif if (global.type() == ValType::I64) { JS_ReportErrorNumberUTF8(cx, GetErrorMessage, nullptr, JSMSG_WASM_BAD_I64_LINK); return false; } @@ -1930,17 +1930,17 @@ Table& WasmTableObject::table() const { return *(Table*)getReservedSlot(TABLE_SLOT).toPrivate(); } // ============================================================================ // WebAssembly.global class and methods -#ifdef ENABLE_WASM_GLOBAL +#if defined(ENABLE_WASM_GLOBAL) && defined(EARLY_BETA_OR_EARLIER) const ClassOps WasmGlobalObject::classOps_ = { nullptr, /* addProperty */ nullptr, /* delProperty */ nullptr, /* enumerate */ nullptr, /* newEnumerate */ nullptr, /* resolve */ @@ -2123,17 +2123,17 @@ WasmGlobalObject::isMutable() const } Value WasmGlobalObject::value() const { return getReservedSlot(VALUE_SLOT); } -#endif // ENABLE_WASM_GLOBAL +#endif // ENABLE_WASM_GLOBAL && EARLY_BETA_OR_EARLIER // ============================================================================ // WebAssembly class and static methods static bool WebAssembly_toSource(JSContext* cx, unsigned argc, Value* vp) { CallArgs args = CallArgsFromVp(argc, vp); @@ -2963,28 +2963,28 @@ js::InitWebAssemblyClass(JSContext* cx, RootedObject wasm(cx, NewObjectWithGivenProto(cx, &WebAssemblyClass, proto, SingletonObject)); if (!wasm) return nullptr; if (!JS_DefineFunctions(cx, wasm, WebAssembly_static_methods)) return nullptr; RootedObject moduleProto(cx), instanceProto(cx), memoryProto(cx), tableProto(cx); -#ifdef ENABLE_WASM_GLOBAL +#if defined(ENABLE_WASM_GLOBAL) && defined(EARLY_BETA_OR_EARLIER) RootedObject globalProto(cx); #endif if (!InitConstructor<WasmModuleObject>(cx, wasm, "Module", &moduleProto)) return nullptr; if (!InitConstructor<WasmInstanceObject>(cx, wasm, "Instance", &instanceProto)) return nullptr; if (!InitConstructor<WasmMemoryObject>(cx, wasm, "Memory", &memoryProto)) return nullptr; if (!InitConstructor<WasmTableObject>(cx, wasm, "Table", &tableProto)) return nullptr; -#ifdef ENABLE_WASM_GLOBAL +#if defined(ENABLE_WASM_GLOBAL) && defined(EARLY_BETA_OR_EARLIER) if (!InitConstructor<WasmGlobalObject>(cx, wasm, "Global", &globalProto)) return nullptr; #endif if (!InitErrorClass(cx, wasm, "CompileError", JSEXN_WASMCOMPILEERROR)) return nullptr; if (!InitErrorClass(cx, wasm, "LinkError", JSEXN_WASMLINKERROR)) return nullptr; if (!InitErrorClass(cx, wasm, "RuntimeError", JSEXN_WASMRUNTIMEERROR)) @@ -2997,16 +2997,16 @@ js::InitWebAssemblyClass(JSContext* cx, if (!JS_DefineProperty(cx, global, js_WebAssembly_str, wasm, JSPROP_RESOLVING)) return nullptr; global->setPrototype(JSProto_WasmModule, ObjectValue(*moduleProto)); global->setPrototype(JSProto_WasmInstance, ObjectValue(*instanceProto)); global->setPrototype(JSProto_WasmMemory, ObjectValue(*memoryProto)); global->setPrototype(JSProto_WasmTable, ObjectValue(*tableProto)); -#ifdef ENABLE_WASM_GLOBAL +#if defined(ENABLE_WASM_GLOBAL) && defined(EARLY_BETA_OR_EARLIER) global->setPrototype(JSProto_WasmGlobal, ObjectValue(*globalProto)); #endif global->setConstructor(JSProto_WebAssembly, ObjectValue(*wasm)); MOZ_ASSERT(global->isStandardClassResolved(JSProto_WebAssembly)); return wasm; }
--- a/js/src/wasm/WasmJS.h +++ b/js/src/wasm/WasmJS.h @@ -280,17 +280,17 @@ class WasmTableObject : public NativeObj // Note that, after creation, a WasmTableObject's table() is not initialized // and must be initialized before use. static WasmTableObject* create(JSContext* cx, const wasm::Limits& limits); wasm::Table& table() const; }; -#ifdef ENABLE_WASM_GLOBAL +#if defined(ENABLE_WASM_GLOBAL) && defined(EARLY_BETA_OR_EARLIER) // The class of WebAssembly.Global. A WasmGlobalObject holds either the value // of an immutable wasm global or the cell of a mutable wasm global. class WasmGlobalObject : public NativeObject { static const unsigned TYPE_SLOT = 0; static const unsigned MUTABLE_SLOT = 1; @@ -314,13 +314,13 @@ class WasmGlobalObject : public NativeOb static WasmGlobalObject* create(JSContext* cx, wasm::ValType type, bool isMutable, HandleValue value); wasm::ValType type() const; bool isMutable() const; Value value() const; }; -#endif // ENABLE_WASM_GLOBAL +#endif // ENABLE_WASM_GLOBAL && EARLY_BETA_OR_EARLIER } // namespace js #endif // wasm_js_h
--- a/js/src/wasm/WasmModule.cpp +++ b/js/src/wasm/WasmModule.cpp @@ -1011,17 +1011,17 @@ GetGlobalExport(JSContext* cx, const Glo if (val.type() == ValType::I64) { JS_ReportErrorNumberUTF8(cx, GetErrorMessage, nullptr, JSMSG_WASM_BAD_I64_LINK); return false; } ToJSValue(val, jsval); -#ifdef ENABLE_WASM_GLOBAL +#if defined(ENABLE_WASM_GLOBAL) && defined(EARLY_BETA_OR_EARLIER) Rooted<WasmGlobalObject*> go(cx, WasmGlobalObject::create(cx, ValType::I32, false, jsval)); if (!go) return false; jsval.setObject(*go); #endif return true; }
--- a/js/src/wasm/WasmSignalHandlers.cpp +++ b/js/src/wasm/WasmSignalHandlers.cpp @@ -620,16 +620,17 @@ StoreValueFromGPReg(SharedMem<void*> add MOZ_COLD static void StoreValueFromGPImm(SharedMem<void*> addr, size_t size, int32_t imm) { MOZ_RELEASE_ASSERT(size <= sizeof(imm)); AtomicOperations::memcpySafeWhenRacy(addr, static_cast<void*>(&imm), size); } +#if defined(JS_CODEGEN_X64) # if !defined(XP_DARWIN) MOZ_COLD static void* AddressOfFPRegisterSlot(CONTEXT* context, FloatRegisters::Encoding encoding) { switch (encoding) { case X86Encoding::xmm0: return &XMM_sig(context, 0); case X86Encoding::xmm1: return &XMM_sig(context, 1); case X86Encoding::xmm2: return &XMM_sig(context, 2); @@ -721,16 +722,29 @@ AddressOfGPRegisterSlot(EMULATOR_CONTEXT case X86Encoding::r13: return &context->thread.__r13; case X86Encoding::r14: return &context->thread.__r14; case X86Encoding::r15: return &context->thread.__r15; default: break; } MOZ_CRASH(); } # endif // !XP_DARWIN +#elif defined(JS_CODEGEN_ARM64) +MOZ_COLD static void* +AddressOfFPRegisterSlot(EMULATOR_CONTEXT* context, FloatRegisters::Encoding encoding) +{ + MOZ_CRASH("NYI - asm.js not supported yet on this platform"); +} + +MOZ_COLD static void* +AddressOfGPRegisterSlot(EMULATOR_CONTEXT* context, Registers::Code code) +{ + MOZ_CRASH("NYI - asm.js not supported yet on this platform"); +} +#endif MOZ_COLD static void SetRegisterToCoercedUndefined(EMULATOR_CONTEXT* context, size_t size, const Disassembler::OtherOperand& value) { if (value.kind() == Disassembler::OtherOperand::FPR) SetFPRegToNaN(size, AddressOfFPRegisterSlot(context, value.fpr())); else
--- a/js/src/wasm/WasmTypes.cpp +++ b/js/src/wasm/WasmTypes.cpp @@ -27,21 +27,28 @@ using namespace js; using namespace js::jit; using namespace js::wasm; using mozilla::IsPowerOfTwo; using mozilla::MakeEnumeratedRange; -// A sanity check. We have only tested WASM_HUGE_MEMORY on x64, and only tested -// x64 with WASM_HUGE_MEMORY. +// We have only tested x64 with WASM_HUGE_MEMORY. + +#if defined(JS_CODEGEN_X64) && !defined(WASM_HUGE_MEMORY) +# error "Not an expected configuration" +#endif -#if defined(WASM_HUGE_MEMORY) != defined(JS_CODEGEN_X64) -# error "Not an expected configuration" +// We have only tested WASM_HUGE_MEMORY on x64 and arm64. + +#if defined(WASM_HUGE_MEMORY) +# if !(defined(JS_CODEGEN_X64) || defined(JS_CODEGEN_ARM64)) +# error "Not an expected configuration" +# endif #endif // Another sanity check. static_assert(MaxMemoryInitialPages <= ArrayBufferObject::MaxBufferByteLength / PageSize, "Memory sizing constraint"); void @@ -97,30 +104,32 @@ static uint32_t GetCPUID() { enum Arch { X86 = 0x1, X64 = 0x2, ARM = 0x3, MIPS = 0x4, MIPS64 = 0x5, + ARM64 = 0x6, ARCH_BITS = 3 }; #if defined(JS_CODEGEN_X86) MOZ_ASSERT(uint32_t(jit::CPUInfo::GetSSEVersion()) <= (UINT32_MAX >> ARCH_BITS)); return X86 | (uint32_t(jit::CPUInfo::GetSSEVersion()) << ARCH_BITS); #elif defined(JS_CODEGEN_X64) MOZ_ASSERT(uint32_t(jit::CPUInfo::GetSSEVersion()) <= (UINT32_MAX >> ARCH_BITS)); return X64 | (uint32_t(jit::CPUInfo::GetSSEVersion()) << ARCH_BITS); #elif defined(JS_CODEGEN_ARM) MOZ_ASSERT(jit::GetARMFlags() <= (UINT32_MAX >> ARCH_BITS)); return ARM | (jit::GetARMFlags() << ARCH_BITS); #elif defined(JS_CODEGEN_ARM64) - MOZ_CRASH("not enabled"); + MOZ_ASSERT(jit::GetARM64Flags() <= (UINT32_MAX >> ARCH_BITS)); + return ARM64 | (jit::GetARM64Flags() << ARCH_BITS); #elif defined(JS_CODEGEN_MIPS32) MOZ_ASSERT(jit::GetMIPSFlags() <= (UINT32_MAX >> ARCH_BITS)); return MIPS | (jit::GetMIPSFlags() << ARCH_BITS); #elif defined(JS_CODEGEN_MIPS64) MOZ_ASSERT(jit::GetMIPSFlags() <= (UINT32_MAX >> ARCH_BITS)); return MIPS64 | (jit::GetMIPSFlags() << ARCH_BITS); #elif defined(JS_CODEGEN_NONE) return 0;
--- a/js/xpconnect/src/xpcpublic.h +++ b/js/xpconnect/src/xpcpublic.h @@ -672,20 +672,26 @@ AreNonLocalConnectionsDisabled() } } return disabledForTest; } inline bool IsInAutomation() { - const char* prefName = - "security.turn_off_all_security_so_that_viruses_can_take_over_this_computer"; - return mozilla::Preferences::GetBool(prefName) && - AreNonLocalConnectionsDisabled(); + static bool sAutomationPrefIsSet; + static bool sPrefCacheAdded = false; + if (!sPrefCacheAdded) { + mozilla::Preferences::AddBoolVarCache( + &sAutomationPrefIsSet, + "security.turn_off_all_security_so_that_viruses_can_take_over_this_computer", + false); + sPrefCacheAdded = true; + } + return sAutomationPrefIsSet && AreNonLocalConnectionsDisabled(); } void CreateCooperativeContext(); void DestroyCooperativeContext();
--- a/layout/base/RestyleManager.cpp +++ b/layout/base/RestyleManager.cpp @@ -202,17 +202,17 @@ WhitespaceOnly(const CharT* aBuffer, siz } template<typename CharT> bool WhitespaceOnlyChangedOnAppend(const CharT* aBuffer, size_t aOldLength, size_t aNewLength) { - MOZ_ASSERT(aOldLength < aNewLength); + MOZ_ASSERT(aOldLength <= aNewLength); if (!WhitespaceOnly(aBuffer, aOldLength)) { // The old text was already not whitespace-only. return false; } return !WhitespaceOnly(aBuffer + aOldLength, aNewLength - aOldLength); }
new file mode 100644 --- /dev/null +++ b/layout/base/crashtests/1442506.html @@ -0,0 +1,10 @@ +<script> +function go() { + var b = window.getSelection(); + var c = document.getSelection(); + b.setBaseAndExtent(document.getElementById("a"), 0, document.body.firstChild, 1); + c.deleteFromDocument(); +} +</script> +<body onload=go()> +<p id="a">
--- a/layout/base/crashtests/crashtests.list +++ b/layout/base/crashtests/crashtests.list @@ -520,8 +520,9 @@ load 1420533.html load 1425959.html load 1425893.html load 1428353.html pref(dom.webcomponents.shadowdom.enabled,true) load 1429088.html load 1429961.html load 1435015.html load 1429962.html pref(dom.webcomponents.shadowdom.enabled,true) load 1439016.html +load 1442506.html
--- a/layout/style/nsCSSValue.cpp +++ b/layout/style/nsCSSValue.cpp @@ -2906,17 +2906,17 @@ const nsString& css::URLValueData::GetUTF16String() const { MOZ_ASSERT(NS_IsMainThread()); if (mUsingRustString) { nsDependentCSubstring rust = GetRustString(); nsString converted = NS_ConvertUTF8toUTF16(rust); Servo_ReleaseArcStringData(&mStrings.mRustString); - mStrings.mString = converted; + new (&mStrings) RustOrGeckoString(converted); mUsingRustString = false; } return mStrings.mString; } nsString css::URLValueData::GetUTF16StringForAnyThread() const {
--- a/memory/mozalloc/mozalloc.h +++ b/memory/mozalloc/mozalloc.h @@ -129,25 +129,22 @@ MOZ_END_EXTERN_C * Suppress build warning spam (bug 578546). */ #if _MSC_VER < 1912 #define MOZALLOC_THROW_IF_HAS_EXCEPTIONS #else #define MOZALLOC_THROW_IF_HAS_EXCEPTIONS throw() #endif #define MOZALLOC_THROW_BAD_ALLOC_IF_HAS_EXCEPTIONS -#elif __cplusplus >= 201103 +#else /* * C++11 has deprecated exception-specifications in favour of |noexcept|. */ #define MOZALLOC_THROW_IF_HAS_EXCEPTIONS noexcept(true) #define MOZALLOC_THROW_BAD_ALLOC_IF_HAS_EXCEPTIONS noexcept(false) -#else -#define MOZALLOC_THROW_IF_HAS_EXCEPTIONS throw() -#define MOZALLOC_THROW_BAD_ALLOC_IF_HAS_EXCEPTIONS throw(std::bad_alloc) #endif #define MOZALLOC_THROW_BAD_ALLOC MOZALLOC_THROW_BAD_ALLOC_IF_HAS_EXCEPTIONS MOZALLOC_EXPORT_NEW #if defined(__GNUC__) && !defined(__clang__) && defined(__SANITIZE_ADDRESS__) /* gcc's asan somehow doesn't like always_inline on this function. */ __attribute__((gnu_inline)) inline
--- a/mfbt/EndianUtils.h +++ b/mfbt/EndianUtils.h @@ -4,17 +4,19 @@ * 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/. */ /* Functions for reading and writing integers in various endiannesses. */ /* * The classes LittleEndian and BigEndian expose static methods for * reading and writing 16-, 32-, and 64-bit signed and unsigned integers - * in their respective endianness. The naming scheme is: + * in their respective endianness. The addresses read from or written + * to may be misaligned (although misaligned accesses may incur + * architecture-specific performance costs). The naming scheme is: * * {Little,Big}Endian::{read,write}{Uint,Int}<bitsize> * * For instance, LittleEndian::readInt32 will read a 32-bit signed * integer from memory in little endian format. Similarly, * BigEndian::writeUint16 will write a 16-bit unsigned integer to memory * in big-endian format. * @@ -356,16 +358,22 @@ protected: } /** Read a uint64_t in ThisEndian endianness from |aPtr| and return it. */ static MOZ_MUST_USE uint64_t readUint64(const void* aPtr) { return read<uint64_t>(aPtr); } + /** Read a uintptr_t in ThisEndian endianness from |aPtr| and return it. */ + static MOZ_MUST_USE uintptr_t readUintptr(const void* aPtr) + { + return read<uintptr_t>(aPtr); + } + /** Read an int16_t in ThisEndian endianness from |aPtr| and return it. */ static MOZ_MUST_USE int16_t readInt16(const void* aPtr) { return read<int16_t>(aPtr); } /** Read an int32_t in ThisEndian endianness from |aPtr| and return it. */ static MOZ_MUST_USE int32_t readInt32(const void* aPtr) @@ -374,16 +382,22 @@ protected: } /** Read an int64_t in ThisEndian endianness from |aPtr| and return it. */ static MOZ_MUST_USE int64_t readInt64(const void* aPtr) { return read<int64_t>(aPtr); } + /** Read an intptr_t in ThisEndian endianness from |aPtr| and return it. */ + static MOZ_MUST_USE intptr_t readIntptr(const void* aPtr) + { + return read<intptr_t>(aPtr); + } + /** Write |aValue| to |aPtr| using ThisEndian endianness. */ static void writeUint16(void* aPtr, uint16_t aValue) { write(aPtr, aValue); } /** Write |aValue| to |aPtr| using ThisEndian endianness. */ static void writeUint32(void* aPtr, uint32_t aValue) @@ -393,16 +407,22 @@ protected: /** Write |aValue| to |aPtr| using ThisEndian endianness. */ static void writeUint64(void* aPtr, uint64_t aValue) { write(aPtr, aValue); } /** Write |aValue| to |aPtr| using ThisEndian endianness. */ + static void writeUintptr(void* aPtr, uintptr_t aValue) + { + write(aPtr, aValue); + } + + /** Write |aValue| to |aPtr| using ThisEndian endianness. */ static void writeInt16(void* aPtr, int16_t aValue) { write(aPtr, aValue); } /** Write |aValue| to |aPtr| using ThisEndian endianness. */ static void writeInt32(void* aPtr, int32_t aValue) { @@ -410,16 +430,22 @@ protected: } /** Write |aValue| to |aPtr| using ThisEndian endianness. */ static void writeInt64(void* aPtr, int64_t aValue) { write(aPtr, aValue); } + /** Write |aValue| to |aPtr| using ThisEndian endianness. */ + static void writeIntptr(void* aPtr, intptr_t aValue) + { + write(aPtr, aValue); + } + /* * Converts a value of type T to little-endian format. * * This function is intended for cases where you have data in your * native-endian format and you need it to appear in little-endian * format for transmission. */ template<typename T> @@ -625,25 +651,29 @@ class EndianReadWrite : public Endian<Th { private: typedef Endian<ThisEndian> super; public: using super::readUint16; using super::readUint32; using super::readUint64; + using super::readUintptr; using super::readInt16; using super::readInt32; using super::readInt64; + using super::readIntptr; using super::writeUint16; using super::writeUint32; using super::writeUint64; + using super::writeUintptr; using super::writeInt16; using super::writeInt32; using super::writeInt64; + using super::writeIntptr; }; } /* namespace detail */ class LittleEndian final : public detail::EndianReadWrite<detail::Little> {}; class BigEndian final : public detail::EndianReadWrite<detail::Big>
--- a/mfbt/tests/TestEndian.cpp +++ b/mfbt/tests/TestEndian.cpp @@ -320,94 +320,138 @@ TestBulkInPlaceNoSwap(const T (&aBytes)[ Reader<T>::readBE); #endif } int main() { static const uint8_t unsigned_bytes[16] = { - 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, - 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8 + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }; static const int8_t signed_bytes[16] = { -0x0f, -0x0e, -0x0d, -0x0c, -0x0b, -0x0a, -0x09, -0x08, -0x0f, -0x0e, -0x0d, -0x0c, -0x0b, -0x0a, -0x09, -0x08 }; static const uint16_t uint16_values[8] = { - 0x102, 0x304, 0x506, 0x708, 0x102, 0x304, 0x506, 0x708 + 0x0102, 0x0304, 0x0506, 0x0708, 0x0102, 0x0304, 0x0506, 0x0708 }; static const int16_t int16_values[8] = { int16_t(0xf1f2), int16_t(0xf3f4), int16_t(0xf5f6), int16_t(0xf7f8), int16_t(0xf1f2), int16_t(0xf3f4), int16_t(0xf5f6), int16_t(0xf7f8) }; static const uint32_t uint32_values[4] = { - 0x1020304, 0x5060708, 0x1020304, 0x5060708 + 0x01020304, 0x05060708, 0x01020304, 0x05060708 }; static const int32_t int32_values[4] = { int32_t(0xf1f2f3f4), int32_t(0xf5f6f7f8), int32_t(0xf1f2f3f4), int32_t(0xf5f6f7f8) }; static const uint64_t uint64_values[2] = { - 0x102030405060708, 0x102030405060708 + 0x0102030405060708, 0x0102030405060708 }; static const int64_t int64_values[2] = { int64_t(0xf1f2f3f4f5f6f7f8), int64_t(0xf1f2f3f4f5f6f7f8) }; uint8_t buffer[8]; - MOZ_RELEASE_ASSERT(LittleEndian::readUint16(&unsigned_bytes[0]) == 0x201); - MOZ_RELEASE_ASSERT(BigEndian::readUint16(&unsigned_bytes[0]) == 0x102); + MOZ_RELEASE_ASSERT(LittleEndian::readUint16(&unsigned_bytes[0]) == 0x0201); + MOZ_RELEASE_ASSERT(BigEndian::readUint16(&unsigned_bytes[0]) == 0x0102); MOZ_RELEASE_ASSERT( - LittleEndian::readUint32(&unsigned_bytes[0]) == 0x4030201U); + LittleEndian::readUint32(&unsigned_bytes[0]) == 0x04030201U); MOZ_RELEASE_ASSERT( - BigEndian::readUint32(&unsigned_bytes[0]) == 0x1020304U); + BigEndian::readUint32(&unsigned_bytes[0]) == 0x01020304U); MOZ_RELEASE_ASSERT( - LittleEndian::readUint64(&unsigned_bytes[0]) == 0x807060504030201ULL); + LittleEndian::readUint64(&unsigned_bytes[0]) == 0x0807060504030201ULL); MOZ_RELEASE_ASSERT( - BigEndian::readUint64(&unsigned_bytes[0]) == 0x102030405060708ULL); + BigEndian::readUint64(&unsigned_bytes[0]) == 0x0102030405060708ULL); - LittleEndian::writeUint16(&buffer[0], 0x201); + if (sizeof(uintptr_t) == 8) { + MOZ_RELEASE_ASSERT( + LittleEndian::readUintptr(&unsigned_bytes[0]) == 0x0807060504030201ULL); + MOZ_RELEASE_ASSERT( + BigEndian::readUintptr(&unsigned_bytes[0]) == 0x0102030405060708ULL); + } else { + MOZ_RELEASE_ASSERT( + LittleEndian::readUintptr(&unsigned_bytes[0]) == 0x04030201U); + MOZ_RELEASE_ASSERT( + BigEndian::readUintptr(&unsigned_bytes[0]) == 0x01020304U); + } + + LittleEndian::writeUint16(&buffer[0], 0x0201); MOZ_RELEASE_ASSERT( memcmp(&unsigned_bytes[0], &buffer[0], sizeof(uint16_t)) == 0); - BigEndian::writeUint16(&buffer[0], 0x102); + BigEndian::writeUint16(&buffer[0], 0x0102); MOZ_RELEASE_ASSERT( memcmp(&unsigned_bytes[0], &buffer[0], sizeof(uint16_t)) == 0); - LittleEndian::writeUint32(&buffer[0], 0x4030201U); + LittleEndian::writeUint32(&buffer[0], 0x04030201U); MOZ_RELEASE_ASSERT( memcmp(&unsigned_bytes[0], &buffer[0], sizeof(uint32_t)) == 0); - BigEndian::writeUint32(&buffer[0], 0x1020304U); + BigEndian::writeUint32(&buffer[0], 0x01020304U); MOZ_RELEASE_ASSERT( memcmp(&unsigned_bytes[0], &buffer[0], sizeof(uint32_t)) == 0); - LittleEndian::writeUint64(&buffer[0], 0x807060504030201ULL); + LittleEndian::writeUint64(&buffer[0], 0x0807060504030201ULL); + MOZ_RELEASE_ASSERT( + memcmp(&unsigned_bytes[0], &buffer[0], sizeof(uint64_t)) == 0); + BigEndian::writeUint64(&buffer[0], 0x0102030405060708ULL); MOZ_RELEASE_ASSERT( memcmp(&unsigned_bytes[0], &buffer[0], sizeof(uint64_t)) == 0); - BigEndian::writeUint64(&buffer[0], 0x102030405060708ULL); + + memset(&buffer[0], 0xff, sizeof(buffer)); + LittleEndian::writeUintptr(&buffer[0], uintptr_t(0x0807060504030201ULL)); MOZ_RELEASE_ASSERT( - memcmp(&unsigned_bytes[0], &buffer[0], sizeof(uint64_t)) == 0); + memcmp(&unsigned_bytes[0], &buffer[0], sizeof(uintptr_t)) == 0); + if (sizeof(uintptr_t) == 4) { + MOZ_RELEASE_ASSERT( + LittleEndian::readUint32(&buffer[4]) == 0xffffffffU); + } + + memset(&buffer[0], 0xff, sizeof(buffer)); + if (sizeof(uintptr_t) == 8) { + BigEndian::writeUintptr(&buffer[0], uintptr_t(0x0102030405060708ULL)); + } else { + BigEndian::writeUintptr(&buffer[0], uintptr_t(0x01020304U)); + MOZ_RELEASE_ASSERT( + LittleEndian::readUint32(&buffer[4]) == 0xffffffffU); + } + MOZ_RELEASE_ASSERT( + memcmp(&unsigned_bytes[0], &buffer[0], sizeof(uintptr_t)) == 0); MOZ_RELEASE_ASSERT( LittleEndian::readInt16(&signed_bytes[0]) == int16_t(0xf2f1)); MOZ_RELEASE_ASSERT( BigEndian::readInt16(&signed_bytes[0]) == int16_t(0xf1f2)); MOZ_RELEASE_ASSERT( LittleEndian::readInt32(&signed_bytes[0]) == int32_t(0xf4f3f2f1)); MOZ_RELEASE_ASSERT( BigEndian::readInt32(&signed_bytes[0]) == int32_t(0xf1f2f3f4)); MOZ_RELEASE_ASSERT( LittleEndian::readInt64(&signed_bytes[0]) == int64_t(0xf8f7f6f5f4f3f2f1LL)); MOZ_RELEASE_ASSERT( BigEndian::readInt64(&signed_bytes[0]) == int64_t(0xf1f2f3f4f5f6f7f8LL)); + if (sizeof(uintptr_t) == 8) { + MOZ_RELEASE_ASSERT( + LittleEndian::readIntptr(&signed_bytes[0]) == intptr_t(0xf8f7f6f5f4f3f2f1LL)); + MOZ_RELEASE_ASSERT( + BigEndian::readIntptr(&signed_bytes[0]) == intptr_t(0xf1f2f3f4f5f6f7f8LL)); + } else { + MOZ_RELEASE_ASSERT( + LittleEndian::readIntptr(&signed_bytes[0]) == intptr_t(0xf4f3f2f1)); + MOZ_RELEASE_ASSERT( + BigEndian::readIntptr(&signed_bytes[0]) == intptr_t(0xf1f2f3f4)); + } + LittleEndian::writeInt16(&buffer[0], int16_t(0xf2f1)); MOZ_RELEASE_ASSERT( memcmp(&signed_bytes[0], &buffer[0], sizeof(int16_t)) == 0); BigEndian::writeInt16(&buffer[0], int16_t(0xf1f2)); MOZ_RELEASE_ASSERT( memcmp(&signed_bytes[0], &buffer[0], sizeof(int16_t)) == 0); LittleEndian::writeInt32(&buffer[0], 0xf4f3f2f1); @@ -419,16 +463,36 @@ main() LittleEndian::writeInt64(&buffer[0], 0xf8f7f6f5f4f3f2f1LL); MOZ_RELEASE_ASSERT( memcmp(&signed_bytes[0], &buffer[0], sizeof(int64_t)) == 0); BigEndian::writeInt64(&buffer[0], 0xf1f2f3f4f5f6f7f8LL); MOZ_RELEASE_ASSERT( memcmp(&signed_bytes[0], &buffer[0], sizeof(int64_t)) == 0); + memset(&buffer[0], 0xff, sizeof(buffer)); + LittleEndian::writeIntptr(&buffer[0], intptr_t(0xf8f7f6f5f4f3f2f1LL)); + MOZ_RELEASE_ASSERT( + memcmp(&signed_bytes[0], &buffer[0], sizeof(intptr_t)) == 0); + if (sizeof(intptr_t) == 4) { + MOZ_RELEASE_ASSERT( + LittleEndian::readUint32(&buffer[4]) == 0xffffffffU); + } + + memset(&buffer[0], 0xff, sizeof(buffer)); + if (sizeof(intptr_t) == 8) { + BigEndian::writeIntptr(&buffer[0], intptr_t(0xf1f2f3f4f5f6f7f8LL)); + } else { + BigEndian::writeIntptr(&buffer[0], intptr_t(0xf1f2f3f4)); + MOZ_RELEASE_ASSERT( + LittleEndian::readUint32(&buffer[4]) == 0xffffffffU); + } + MOZ_RELEASE_ASSERT( + memcmp(&signed_bytes[0], &buffer[0], sizeof(intptr_t)) == 0); + TestSingleSwap(uint16_t(0xf2f1), uint16_t(0xf1f2)); TestSingleSwap(uint32_t(0xf4f3f2f1), uint32_t(0xf1f2f3f4)); TestSingleSwap(uint64_t(0xf8f7f6f5f4f3f2f1), uint64_t(0xf1f2f3f4f5f6f7f8)); TestSingleSwap(int16_t(0xf2f1), int16_t(0xf1f2)); TestSingleSwap(int32_t(0xf4f3f2f1), int32_t(0xf1f2f3f4)); TestSingleSwap(int64_t(0xf8f7f6f5f4f3f2f1), int64_t(0xf1f2f3f4f5f6f7f8));
--- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -169,16 +169,20 @@ pref("dom.workers.maxPerDomain", 512); pref("dom.serviceWorkers.enabled", false); // The amount of time (milliseconds) service workers keep running after each event. pref("dom.serviceWorkers.idle_timeout", 30000); // The amount of time (milliseconds) service workers can be kept running using waitUntil promises. pref("dom.serviceWorkers.idle_extended_timeout", 300000); +// The amount of time (milliseconds) an update request is delayed when triggered +// by a service worker that doesn't control any clients. +pref("dom.serviceWorkers.update_delay", 1000); + // Enable test for 24 hours update, service workers will always treat last update check time is over 24 hours pref("dom.serviceWorkers.testUpdateOverOneDay", false); // Whether nonzero values can be returned from performance.timing.* pref("dom.enable_performance", true); // Whether resource timing will be gathered and returned by performance.GetEntries* pref("dom.enable_resource_timing", true);
--- a/security/manager/ssl/StaticHPKPins.h +++ b/security/manager/ssl/StaticHPKPins.h @@ -1003,16 +1003,17 @@ static const TransportSecurityPreload kP { "googletagmanager.com", true, false, false, -1, &kPinset_google_root_pems }, { "googletagservices.com", true, false, false, -1, &kPinset_google_root_pems }, { "googleusercontent.com", true, false, false, -1, &kPinset_google_root_pems }, { "googlevideo.com", true, false, false, -1, &kPinset_google_root_pems }, { "googleweblight.com", true, false, false, -1, &kPinset_google_root_pems }, { "goto.google.com", true, false, false, -1, &kPinset_google_root_pems }, { "gr.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "groups.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "gstatic.cn", true, false, false, -1, &kPinset_google_root_pems }, { "gstatic.com", true, false, false, -1, &kPinset_google_root_pems }, { "gvt1.com", true, false, false, -1, &kPinset_google_root_pems }, { "gvt2.com", true, false, false, -1, &kPinset_google_root_pems }, { "gvt3.com", true, false, false, -1, &kPinset_google_root_pems }, { "hangouts.google.com", true, false, false, -1, &kPinset_google_root_pems }, { "history.google.com", true, false, false, -1, &kPinset_google_root_pems }, { "hk.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "hn.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, @@ -1153,13 +1154,13 @@ static const TransportSecurityPreload kP { "youtu.be", true, false, false, -1, &kPinset_google_root_pems }, { "youtube-nocookie.com", true, false, false, -1, &kPinset_google_root_pems }, { "youtube.com", true, false, false, -1, &kPinset_google_root_pems }, { "ytimg.com", true, false, false, -1, &kPinset_google_root_pems }, { "za.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "zh.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, }; -// Pinning Preload List Length = 484; +// Pinning Preload List Length = 485; static const int32_t kUnknownId = -1; -static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1528401564528000); +static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1528491279168000);
--- a/security/manager/ssl/nsSTSPreloadList.errors +++ b/security/manager/ssl/nsSTSPreloadList.errors @@ -88,31 +88,32 @@ africanimpact.com: could not connect to afterstack.net: could not connect to host agingstop.net: could not connect to host agoravm.tk: could not connect to host agowa.eu: could not connect to host agowa338.de: could not connect to host ahelos.tk: could not connect to host ahlz.sk: could not connect to host aiicy.org: could not connect to host +aiida.se: could not connect to host aikenorganics.com: could not connect to host aim-consultants.com: could not connect to host ajetaci.cz: could not connect to host akiba-server.info: could not connect to host akita-stream.com: could not connect to host -akoch.net: could not connect to host akoww.de: could not connect to host akul.co.in: could not connect to host al-f.net: could not connect to host alasta.info: could not connect to host alauda-home.de: could not connect to host albertify.xyz: could not connect to host alcatraz.online: could not connect to host alexandernorth.ch: could not connect to host alexandros.io: could not connect to host +alexberts.ch: could not connect to host alexey-shamara.ru: could not connect to host alexmol.tk: could not connect to host alexperry.io: could not connect to host alignrs.com: could not connect to host alilialili.ga: could not connect to host alldm.ru: could not connect to host alloutatl.com: could not connect to host allscammers.exposed: could not connect to host @@ -120,17 +121,16 @@ allthingsfpl.com: could not connect to h alocato.com: could not connect to host alohapartyevents.co.uk: could not connect to host alphabrock.cn: could not connect to host altahrim.net: could not connect to host amdouglas.uk: could not connect to host ameho.me: could not connect to host americandistribuidora.com: could not connect to host amilum.org: could not connect to host -ams.co.rs: could not connect to host amua.fr: could not connect to host amunoz.org: could not connect to host analyzemyfriends.com: could not connect to host anastasia-shamara.ru: could not connect to host andiplusben.com: could not connect to host andreamcnett.com: could not connect to host andreas-kluge.eu: could not connect to host andreaskluge.eu: could not connect to host @@ -139,48 +139,43 @@ andrewdaws.co: could not connect to host andrewdaws.info: could not connect to host andrewdaws.me: could not connect to host andrewdaws.tv: could not connect to host andrewrdaws.com: could not connect to host andronika.net: could not connect to host anecuni-club.com: could not connect to host anecuni-rec.com: could not connect to host angrydragonproductions.com: could not connect to host -anitaalbersen.nl: could not connect to host anitube-nocookie.ch: could not connect to host annetaan.fi: could not connect to host anshumanbiswas.com: could not connect to host antimatiere.space: could not connect to host anyways.at: could not connect to host aojiao.org: could not connect to host apkoyunlar.club: could not connect to host -apn-einstellungen.de: could not connect to host appdrinks.com: could not connect to host apple.ax: could not connect to host apponline.com: could not connect to host apps4all.sytes.net: could not connect to host appzoojoo.be: could not connect to host aquaundine.net: could not connect to host -ardor.noip.me: could not connect to host area3.org: could not connect to host arent.kz: could not connect to host arenzanaphotography.com: could not connect to host argh.io: could not connect to host arknodejs.com: could not connect to host arksan.com.tr: could not connect to host armenians.online: could not connect to host arresttracker.com: could not connect to host arsenal.ru: could not connect to host artea.ga: could not connect to host articaexports.com: could not connect to host artisense.de: could not connect to host artisticedgegranite.net: could not connect to host artofeyes.nl: could not connect to host -as200753.com: could not connect to host -as200753.net: could not connect to host ashleyadum.com: could not connect to host askmagicconch.com: could not connect to host asphaltfruehling.de: could not connect to host asphyxia.su: could not connect to host aspisdata.com: could not connect to host asral7.com: could not connect to host assdecoeur.org: could not connect to host assindia.nl: could not connect to host @@ -188,28 +183,28 @@ asthon.cn: could not connect to host astrath.net: could not connect to host astrea-voetbal-groningen.nl: could not connect to host asuhe.xyz: could not connect to host async.be: could not connect to host at1.co: could not connect to host athi.pl: could not connect to host atigerseye.com: could not connect to host atlas-5.site: could not connect to host +atraining.ru: could not connect to host aufmerksamkeitsstudie.com: could not connect to host ausec.ch: could not connect to host austinsutphin.com: could not connect to host australiancattle.dog: could not connect to host authint.com: could not connect to host authland.com: could not connect to host authsrv.nl.eu.org: could not connect to host autosearch.me: could not connect to host autostock.me: could not connect to host autostop-occasions.be: could not connect to host avdelivers.com: could not connect to host -avi9526.pp.ua: could not connect to host avonlearningcampus.com: could not connect to host awan.tech: could not connect to host awei.pub: could not connect to host awf0.xyz: could not connect to host axel-fischer.science: could not connect to host b9winner.com: could not connect to host babelfisch.eu: could not connect to host bacimg.com: could not connect to host @@ -254,16 +249,17 @@ bestfitnesswatchreview.info: could not c besthotsales.com: could not connect to host betonmoney.com: could not connect to host bey.io: could not connect to host bezoomnyville.com: could not connect to host bfrailwayclub.cf: could not connect to host bianinapiccanovias.com: could not connect to host bichonmaltes.com.br: could not connect to host bigerbio.com: could not connect to host +billaud.eu.org: could not connect to host binam.center: could not connect to host bingcheung.com: could not connect to host binimo.com: could not connect to host biou.me: could not connect to host bip.gov.sa: could not connect to host biscuits-rec.com: could not connect to host biscuits-shop.com: could not connect to host biswas.me: could not connect to host @@ -292,33 +288,32 @@ blueblou.com: could not connect to host blumen-garage.de: could not connect to host bm-i.ch: could not connect to host bolivarfm.com.ve: could not connect to host bomberus.de: could not connect to host bombsquad.studio: could not connect to host bonesserver.com: could not connect to host bonobo.cz: could not connect to host bookreport.ga: could not connect to host +booter.es: could not connect to host borchers-media.de: could not connect to host borisbesemer.com: could not connect to host -bosabosa.org: could not connect to host -botserver.de: could not connect to host bouah.net: could not connect to host bouncing-bugs.co.uk: could not connect to host boxdevigneron.fr: could not connect to host bpadvisors.eu: could not connect to host bqcp.net: could not connect to host +bragaweb.com.br: could not connect to host brage.info: could not connect to host braintensive.com: could not connect to host brandontaylor-black.com: could not connect to host bratteng.me: could not connect to host bratteng.xyz: could not connect to host breathingblanket.com: could not connect to host bressier.fr: could not connect to host -brettabel.com: could not connect to host brianmwaters.net: could not connect to host brideandgroomdirect.ie: could not connect to host brio-ukraine.store: could not connect to host broerweb.nl: could not connect to host brookframework.org: could not connect to host brrr.fr: could not connect to host brynnan.nl: could not connect to host bsalyzer.com: could not connect to host @@ -378,32 +373,33 @@ cctld.com: could not connect to host cdmon.tech: could not connect to host cdnk39.com: could not connect to host cee.io: could not connect to host cegfw.com: could not connect to host celuliteonline.com: could not connect to host cencalvia.org: could not connect to host centos.pub: could not connect to host centrallead.net: could not connect to host -cfan.space: could not connect to host cgtx.us: could not connect to host challengeskins.com: could not connect to host championnat-romand-cuisiniers-amateurs.ch: could not connect to host +chancat.blog: could not connect to host channellife.asia: could not connect to host chaouby.com: could not connect to host charmyadesara.com: could not connect to host -checkmateshoes.com: could not connect to host cheesefusion.com: could not connect to host chez-janine.de: could not connect to host china-line.org: could not connect to host +chinatrademarkoffice.com: could not connect to host chinternet.xyz: could not connect to host chloe.re: could not connect to host chocolat-suisse.ch: could not connect to host chrisebert.net: could not connect to host christianhoffmann.info: could not connect to host +christianpusch.de: could not connect to host christiansayswords.com: could not connect to host chromaryu.net: could not connect to host chziyue.com: could not connect to host cipher.land: could not connect to host cipherli.st: could not connect to host citywalkr.com: could not connect to host ciuciucadou.ro: could not connect to host cjtkfan.club: could not connect to host @@ -412,17 +408,16 @@ clashersrepublic.com: could not connect clearchatsandbox.com: could not connect to host clearviewwealthprojector.com.au: could not connect to host clic-music.com: could not connect to host clickclock.cc: could not connect to host clintonbloodworth.com: could not connect to host cloudberlin.goip.de: could not connect to host cloudbleed.info: could not connect to host cloudimproved.com: could not connect to host -cloudimprovedtest.com: could not connect to host cloudkit.pro: could not connect to host cloudwarez.xyz: could not connect to host clownish.co.il: could not connect to host clycat.ru: could not connect to host cmrss.com: could not connect to host cms-weble.jp: could not connect to host cmweller.com: could not connect to host cnetw.xyz: could not connect to host @@ -451,33 +446,30 @@ comicrelief.com: could not connect to ho communityflow.info: could not connect to host complex-organization.com: could not connect to host complt.xyz: could not connect to host comprehensiveihc.com: could not connect to host conception.sk: could not connect to host conniesacademy.com: could not connect to host conrad.am: could not connect to host constructive.men: could not connect to host -consultorcr.net: could not connect to host conve.eu: could not connect to host -cookicons.co: could not connect to host coreapm.com: could not connect to host coreapm.org: could not connect to host corecdn.org: could not connect to host corinnanese.de: could not connect to host correct.horse: could not connect to host cosmeticosdelivery.com.br: could not connect to host cosmiatria.pe: could not connect to host cosplayer.com: could not connect to host cotta.dk: could not connect to host coumoul.fr: could not connect to host cpaneltips.com: could not connect to host crackslut.eu: could not connect to host crashsec.com: could not connect to host -creativefreedom.ca: could not connect to host creato.top: could not connect to host crestasantos.com: could not connect to host cristianhares.com: could not connect to host criticalaim.com: could not connect to host crox.co: could not connect to host cryptoki.fr: could not connect to host cryptolosophy.io: could not connect to host cryptoparty.dk: could not connect to host @@ -489,17 +481,16 @@ csgo77.com: could not connect to host csilies.de: could not connect to host cspeti.hu: could not connect to host cunha.be: could not connect to host cuni-cuni-club.com: could not connect to host cuni-rec.com: could not connect to host cuonic.com: could not connect to host curacao-license.com: could not connect to host customfilmworks.com: could not connect to host -cutelariafiveladeouro.com.br: could not connect to host cybbh.space: could not connect to host cyber-computer.club: could not connect to host cyberpeace.nl: could not connect to host cyberstatus.de: could not connect to host cype.dedyn.io: could not connect to host cypherpunk.ws: could not connect to host czlx.co: could not connect to host d-bood.site: could not connect to host @@ -528,28 +519,28 @@ dawnson.is: could not connect to host dawnsonb.com: could not connect to host day-peak.com: could not connect to host days.one: could not connect to host dbox.ga: could not connect to host dcc.cat: could not connect to host dcc.moe: could not connect to host dden.website: could not connect to host dden.xyz: could not connect to host +ddepot.us: could not connect to host de-servers.de: could not connect to host deborahmarinelli.eu: could not connect to host decoyrouting.com: could not connect to host dedietrich-asia.com: could not connect to host deepcreampie.com: could not connect to host deeps.cat: could not connect to host deloittequant.com: could not connect to host depedtayo.ph: could not connect to host derchris.me: could not connect to host derivativeshub.pro: could not connect to host dermacarecomplex.com: could not connect to host -destileria.net.br: could not connect to host detecte-fuite.ch: could not connect to host detecte.ch: could not connect to host detectefuite.ch: could not connect to host devdesco.com: could not connect to host developersclub.website: could not connect to host devh.net: could not connect to host devops.moe: could not connect to host dhl-smart.ch: could not connect to host @@ -593,28 +584,28 @@ dmdre.com: could not connect to host dnfc.rocks: could not connect to host do-it.cz: could not connect to host dobrisan.ro: could not connect to host doctafit.com: could not connect to host does.one: could not connect to host doesmycodehavebugs.today: could not connect to host dogcratereview.info: could not connect to host dojifish.space: could not connect to host +dokan-e.com: could not connect to host dokuboard.com: could not connect to host dolphin-hosting.com: could not connect to host domengrad.ru: could not connect to host domfee.com: could not connect to host dongkexue.com: could not connect to host doopdidoop.com: could not connect to host dopesoft.de: could not connect to host dougferris.id.au: could not connect to host doyoulyft.com: could not connect to host doze-cloud.tech: could not connect to host dragonwork.me: could not connect to host -dranek.com: could not connect to host dreamaholic.club: could not connect to host dreaming.solutions: could not connect to host dreizwosechs.de: could not connect to host driving-lessons.co.uk: could not connect to host drivinghorror.com: could not connect to host drixn.cn: could not connect to host drixn.info: could not connect to host drixn.net: could not connect to host @@ -644,51 +635,51 @@ earth-people.org: could not connect to h eatfitoutlet.com.br: could not connect to host eatry.io: could not connect to host ebonyriddle.com: could not connect to host ebrowz.com: could not connect to host eccux.com: could not connect to host ectora.com: could not connect to host edgecustomersportal.com: could not connect to host educatoys.com.br: could not connect to host +eductf.org: could not connect to host eduif.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 116" data: no] eeb98.com: could not connect to host eeetrust.org: could not connect to host -effdocs.com: could not connect to host effectiveosgi.com: could not connect to host ehrlichesbier.de: could not connect to host ehuber.info: could not connect to host einhorn.space: could not connect to host einsatzstiefel.info: could not connect to host ekobudisantoso.net: could not connect to host elbetech.net: could not connect to host electricalcontrolpanels.co.uk: could not connect to host elektronring.com: could not connect to host elenorsmadness.org: could not connect to host elevateandprosper.com: could not connect to host elitesensual.com.br: could not connect to host +elnan.do: could not connect to host elonbase.com: could not connect to host elpo.net: could not connect to host elsword.moe: could not connect to host eltransportquevolem.org: could not connect to host elytronsecurity.com: could not connect to host emanuelemazzotta.com: could not connect to host embellir-aroma.com: could not connect to host embellir-kyujin.com: could not connect to host embracethedarkness.co.uk: could not connect to host emilyjohnson.ga: could not connect to host eminhuseynov.com: could not connect to host +emperor.blog: could not connect to host emrenovation.com: could not connect to host endohaus.us: could not connect to host endspamwith.us: could not connect to host -englishstudio.com: could not connect to host enoou.com: could not connect to host enpalmademallorca.info: could not connect to host envelope.co.nz: could not connect to host -epsilon.dk: could not connect to host er-music.com: could not connect to host erad.fr: could not connect to host erspro.net: could not connect to host erwinwensveen.nl: could not connect to host es888999.com: could not connect to host esoterik.link: could not connect to host esseriumani.com: could not connect to host eswap.cz: could not connect to host @@ -779,28 +770,27 @@ fragnic.com: could not connect to host franckyz.com: could not connect to host frank.fyi: could not connect to host franklinhua.com: could not connect to host franzt.ovh: could not connect to host fredliang.cn: could not connect to host fredtec.ru: could not connect to host free8.xyz: could not connect to host freeassangenow.org: could not connect to host -freeboson.org: could not connect to host freejidi.com: could not connect to host freeshkre.li: could not connect to host freshcode.nl: could not connect to host frickenate.com: could not connect to host friedhelm-wolf.de: could not connect to host -friller.com.au: could not connect to host frolov.net: could not connect to host fromlemaytoz.com: could not connect to host frosty-gaming.xyz: could not connect to host frp-roleplay.de: could not connect to host frusky.net: could not connect to host +frydrychit.cz: could not connect to host fsfi.is: could not connect to host ftgho.com: could not connect to host fuckcf.cf: could not connect to host fugle.de: could not connect to host fuitedeau.ch: could not connect to host fukuko.biz: could not connect to host fukuko.xyz: could not connect to host fun9.cc: could not connect to host @@ -830,16 +820,17 @@ gasbarkenora.com: could not connect to h gasnews.net: could not connect to host gautham.pro: could not connect to host gayforgenji.com: could not connect to host gaygeeks.de: could not connect to host gc.net: could not connect to host gchoic.com: could not connect to host gdevpenze.ru: could not connect to host gdhzcgs.com: could not connect to host +gdiary.net: could not connect to host gdz-otvety.com: could not connect to host ge1.me: could not connect to host geeks.berlin: could not connect to host gehrke.nrw: could not connect to host geigr.de: could not connect to host generationnext.pl: could not connect to host geneve.guide: could not connect to host genia-life.de: could not connect to host @@ -867,65 +858,66 @@ gglks.com: could not connect to host ggss.cf: could not connect to host gh16.com.ar: could not connect to host gifzilla.net: could not connect to host gigawattz.com: could not connect to host gina-architektur.design: could not connect to host girlsforum.com: could not connect to host git.co: could not connect to host gix.net.pl: could not connect to host +gladystudio.com: could not connect to host globalnewsdaily.cf: could not connect to host globalvisions-events.ch: could not connect to host glutenfreelife.co.nz: could not connect to host gmanukyan.com: could not connect to host gnom.me: could not connect to host gnosticjade.net: could not connect to host godrealms.com: could not connect to host goiaspropaganda.com.br: could not connect to host goldfelt.com: could not connect to host gongjuhao.com: could not connect to host goodyearsotn.co.uk: could not connect to host google.ax: could not connect to host goranrango.ch: could not connect to host gottfridsberg.org: could not connect to host +gouthro-goteborg.se: could not connect to host gozadentro.com: could not connect to host gradsm-ci.net: could not connect to host granth.io: could not connect to host gratisonlinesex.com: could not connect to host greggsfoundation.org.uk: could not connect to host gregmartyn.com: could not connect to host greuel.online: could not connect to host greyhash.se: could not connect to host gritte.net: could not connect to host grossell.ru: could not connect to host grossmisconduct.news: could not connect to host grusenmeyer.be: could not connect to host -gta5voice.net: could not connect to host gugaltika-ipb.org: could not connect to host guinea-pig.co: could not connect to host gumannp.de: could not connect to host gunhunter.com: could not connect to host gus.moe: could not connect to host gutuia.blue: could not connect to host gvchannel.xyz: could not connect to host gxgx.org: could not connect to host gzpblog.com: could not connect to host h2cdn.cloud: could not connect to host h3artbl33d.nl: could not connect to host habeo.si: could not connect to host hackbubble.me: could not connect to host -hackingsafe.com: could not connect to host hackmeplz.com: could not connect to host haktec.de: could not connect to host hakugin.me: could not connect to host halcyonsbastion.com: could not connect to host half-logic.eu.org: could not connect to host halta.info: could not connect to host hamking.tk: could not connect to host hamu.blue: could not connect to host +happyagain.de: could not connect to host happyagain.se: could not connect to host happytiger.eu: could not connect to host hapsfordmill.co.uk: could not connect to host hapvm.com: could not connect to host hardeman.nu: could not connect to host harrypottereditor.net: could not connect to host has-no-email-set.de: could not connect to host hasabig.wang: could not connect to host @@ -944,39 +936,40 @@ heavenlyseals.com: could not connect to heavenlysmokenc.com: could not connect to host heisenberg.co: could not connect to host hejsupport.se: could not connect to host hellofilters.com: could not connect to host hellomouse.tk: could not connect to host helpantiaging.com: could not connect to host helpekwendenihospital.com: could not connect to host helsingfors.guide: could not connect to host +hemdal.se: could not connect to host henhenlu.com: could not connect to host henriknoerr.com: could not connect to host hentai.design: could not connect to host hentaimaster.net: could not connect to host heptner24.de: could not connect to host here.ml: could not connect to host heribe-maruo.com: could not connect to host -hermes-net.de: could not connect to host hermes-servizi.it: could not connect to host hetmeisjeachterpauw.nl: could not connect to host hexobind.com: could not connect to host hfu.io: could not connect to host hg881.com: could not connect to host hialatv.com: could not connect to host hill.selfip.net: could not connect to host hintermeier-rae.at: could not connect to host hirte-digital.de: could not connect to host history.pe: could not connect to host hitchunion.org: could not connect to host hjes.com.ve: could not connect to host hoffens.se: could not connect to host hohm.in: could not connect to host holidayincotswolds.co.uk: could not connect to host +homesfordinner.ca: could not connect to host homoglyph.net: could not connect to host hondenoppasfraneker.nl: could not connect to host honeyhaw.com: could not connect to host honeytracks.com: could not connect to host hoodoo.io: could not connect to host hoodoo.tech: could not connect to host hopewellproperties.co.uk: could not connect to host hopglass.eu: could not connect to host @@ -997,17 +990,16 @@ hukkatavara.com: could not connect to ho hunger.im: could not connect to host huongquynh.com: could not connect to host huwjones.me: could not connect to host huzurmetal.net: could not connect to host hwaddress.com: could not connect to host hydrante.ch: could not connect to host hyper-matrix.org: could not connect to host hypotheques24.ch: could not connect to host -hzh.pub: could not connect to host i-stats.net: could not connect to host i95.me: could not connect to host iadttaveras.com: could not connect to host iamsoareyou.se: could not connect to host ibron.co: could not connect to host ibsafrica.co.za: could not connect to host ibsglobal.co.za: could not connect to host iceloch.com: could not connect to host @@ -1025,17 +1017,16 @@ ifxnet.com: could not connect to host ihatethissh.it: could not connect to host iideaz.org: could not connect to host iilin.com: could not connect to host ikenmeyer.com: could not connect to host ikenmeyer.eu: could not connect to host ikzoekeengoedkopeauto.nl: could not connect to host ileat.com: could not connect to host imaginarymakings.me: could not connect to host -imanolbarba.net: could not connect to host img.ovh: could not connect to host imgencrypt.com: could not connect to host imgul.net: could not connect to host imguoguo.com: could not connect to host imlinan.cn: could not connect to host imlinan.info: could not connect to host imlinan.net: could not connect to host imoner.ga: could not connect to host @@ -1083,17 +1074,16 @@ its-schindler.de: could not connect to h itsatrap.nl: could not connect to host ivanilla.org: could not connect to host ivanpolchenko.com: could not connect to host ivyshop.com.br: could not connect to host ivystech.com: could not connect to host iwex.swiss: could not connect to host ixio.cz: could not connect to host j0ng.xyz: could not connect to host -jabbari.io: could not connect to host jaimechanaga.com: could not connect to host jaion.ml: could not connect to host jakincode.army: could not connect to host jaksel.id: could not connect to host jaksi.io: could not connect to host jamesachambers.com: could not connect to host jamesheald.com: could not connect to host jan-bucher.ch: could not connect to host @@ -1124,32 +1114,30 @@ joecod.es: could not connect to host joetyson.io: could not connect to host johnrockefeller.net: could not connect to host johntomasowa.com: could not connect to host jonas-wenk.de: could not connect to host jonathansanchez.pro: could not connect to host jonfor.net: could not connect to host jooto.com: could not connect to host jorovik.com: could not connect to host -joshharkema.com: could not connect to host jpod.cc: could not connect to host js88.sg: could not connect to host jsc7776.com: could not connect to host jsjyhzy.cc: could not connect to host juliaoantiguidades.com.br: could not connect to host juliawebber.co.za: could not connect to host jumbopan.com: could not connect to host jumbopan.net: could not connect to host jump.wtf: could not connect to host just-pools.co.za: could not connect to host justinharrison.ca: could not connect to host justzz.xyz: could not connect to host juventusmania1897.com: could not connect to host k33k00.com: could not connect to host -kabus.org: could not connect to host kaika-facilitymanagement.de: could not connect to host kainz.be: could not connect to host kakolightingmuseum.or.jp: could not connect to host kaloix.de: could not connect to host kamalame.co: could not connect to host kamitech.ch: could not connect to host kandalife.com: could not connect to host kanganer.com: could not connect to host @@ -1164,29 +1152,29 @@ kaydan.io: could not connect to host kearney.io: could not connect to host kela.jp: could not connect to host kellyandantony.com: could not connect to host kelm.me: could not connect to host kermadec.com: could not connect to host kerus.net: could not connect to host keshausconsulting.com: could not connect to host kevinbowers.me: could not connect to host -kevinbusse.de: could not connect to host kevindekoninck.com: could not connect to host kevinfoley.cc: could not connect to host kevinfoley.org: could not connect to host keyserver.sexy: could not connect to host kgb.us: could not connect to host kidbacker.com: could not connect to host kieranweightman.me: could not connect to host kievradio.com: could not connect to host kigmbh.com: could not connect to host kikuzuki.org: could not connect to host kimamass.com: could not connect to host kinepolis-studio.ga: could not connect to host +kingbird.me: could not connect to host kingclass.cn: could not connect to host kirill.ws: could not connect to host kj1396.net: could not connect to host kjoglum.me: could not connect to host kleinblogje.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 116" data: no] klingeletest.de: could not connect to host knep.me: could not connect to host kngk-azs.ru: could not connect to host @@ -1216,24 +1204,25 @@ kyle.place: could not connect to host kylling.io: could not connect to host kyujin-office.net: could not connect to host l18.io: could not connect to host laboutiquemarocaineduconvoyeur.com: could not connect to host laboutiquemarocaineduconvoyeur.ma: could not connect to host lacasa.fr: could not connect to host lacasabelucci.com: could not connect to host lacasseroy.com: could not connect to host +lacicloud.net: could not connect to host ladylikeit.com: could not connect to host laforetenchantee.ch: could not connect to host lafr4nc3.net: could not connect to host lafr4nc3.xyz: could not connect to host +lakehavasuhouserentals.com: could not connect to host landell.ml: could not connect to host langendorf-ernaehrung-training.de: could not connect to host lanonfire.com: could not connect to host -lantian.pub: could not connect to host lateliercantaldeco.fr: could not connect to host lathamlabs.com: could not connect to host lathamlabs.net: could not connect to host lathamlabs.org: could not connect to host lazulu.com: could not connect to host lbarrios.es: could not connect to host lbrls.tk: could not connect to host lclarkpdx.com: could not connect to host @@ -1245,18 +1234,20 @@ lebal.se: could not connect to host leebiblestudycentre.net: could not connect to host leebiblestudycentre.org: could not connect to host leefindlow.com: could not connect to host leelou.wedding: could not connect to host leerkotte.eu: could not connect to host legal.farm: could not connect to host legaltip.eu: could not connect to host leifdreizler.com: could not connect to host +lenkunz.me: could not connect to host leolana.com: could not connect to host leonardcamacho.me: could not connect to host +leonhooijer.nl: could not connect to host lerlivros.online: could not connect to host lescomptoirsdepierrot.com: could not connect to host lesdouceursdeliyana.com: could not connect to host letsgetintouch.com: could not connect to host leveredge.net: could not connect to host lezdomsm.com: could not connect to host lfaz.org: could not connect to host lheinrich.org: could not connect to host @@ -1269,42 +1260,42 @@ librebox.de: could not connect to host libscode.com: could not connect to host liceserv.com: could not connect to host likenosis.com: could not connect to host lingting.vip: could not connect to host linkages.org: could not connect to host linksanitizer.com: could not connect to host linksextremist.at: could not connect to host linley.de: could not connect to host -linostassi.net: could not connect to host linux-admin-california.com: could not connect to host linux.sb: could not connect to host linuxcode.net: could not connect to host linvx.org: could not connect to host liquidcomm.net: could not connect to host lisieuxarquitetura.com.br: could not connect to host lissabon.guide: could not connect to host litcomphonors.com: could not connect to host littlelundgrenladies.com: could not connect to host liukang.tech: could not connect to host llvm.us: could not connect to host loanstreet.be: could not connect to host lobosdomain.no-ip.info: could not connect to host -locker3.com: could not connect to host locksport.org.nz: could not connect to host logcat.info: could not connect to host logic8.ml: could not connect to host logicchen.com: could not connect to host logimagine.com: could not connect to host +loket.nl: could not connect to host loli.net: could not connect to host loopower.com: could not connect to host loothole.com: could not connect to host loqyu.co: could not connect to host losebellyfat.pro: could not connect to host loveandloyalty.se: could not connect to host +lovingearth.co: could not connect to host lowt.us: could not connect to host loyaltech.ch: could not connect to host lstma.com: could not connect to host lszj.com: could not connect to host ltransferts.com: could not connect to host luav.org: could not connect to host lubot.net: could not connect to host lucascodes.com: could not connect to host @@ -1320,20 +1311,22 @@ luxonetwork.com: could not connect to ho lycly.me: could not connect to host m-generator.com: could not connect to host m4570.xyz: could not connect to host m4g.ru: could not connect to host maartenterpstra.xyz: could not connect to host madeintucson.org: could not connect to host madnetwork.org: could not connect to host madusecurity.com: could not connect to host +magicball.co: could not connect to host magnacumlaude.co: could not connect to host mahansexcavating.com: could not connect to host maik-mahlow.de: could not connect to host mailon.ga: could not connect to host +majkassab.com: could not connect to host makeit-so.de: could not connect to host makeuplove.nl: could not connect to host malamutedoalasca.com.br: could not connect to host malesbdsm.com: could not connect to host malgraph.net: could not connect to host mamastore.eu: could not connect to host manova.cz: could not connect to host marcelmarnitz.com: could not connect to host @@ -1344,17 +1337,16 @@ mariusschulte.de: could not connect to h mark-armstrong-gaming.com: could not connect to host marketingdesignu.cz: could not connect to host markllego.com: could not connect to host marko-fenster24.de: could not connect to host markrego.com: could not connect to host martin-mattel.com: could not connect to host martins.im: could not connect to host marxist.party: could not connect to host -mashandco.it: could not connect to host mastodon.expert: could not connect to host mastodon.my: could not connect to host matarrosabierzo.com: could not connect to host mathijskingma.nl: could not connect to host matrix.ac: could not connect to host matthewtester.com: could not connect to host matthey.nl: could not connect to host maybeul.com: could not connect to host @@ -1362,16 +1354,17 @@ maynardnetworks.com: could not connect t mazternet.ru: could not connect to host mazzotta.me: could not connect to host mb-is.info: could not connect to host mbdrogenbos-usedcars.be: could not connect to host mbsec.net: could not connect to host mbwemmel-usedcars.be: could not connect to host mcdanieldevelopmentservices.com: could not connect to host mcideas.tk: could not connect to host +mcjackk77.com: could not connect to host mckinley1.com: could not connect to host mcsa-usa.org: could not connect to host mcsnovatamabayan.com: could not connect to host me-dc.com: could not connect to host meanevo.com: could not connect to host meathealth.com: could not connect to host mecanicadom.com: could not connect to host mediadandy.com: could not connect to host @@ -1392,32 +1385,33 @@ menzaijia.com: could not connect to host mercanix.co.uk: could not connect to host mes10doigts.ovh: could not connect to host metaether.net: could not connect to host metrix-money-ptc.com: could not connect to host metrix.design: could not connect to host mexior.nl: could not connect to host meyeraviation.com: could not connect to host mhjuma.com: could not connect to host +micaiahparker.com: could not connect to host michaelcullen.name: could not connect to host michaelkuchta.me: could not connect to host michaelsulzer.com: could not connect to host michaelsulzer.eu: could not connect to host microblading.pe: could not connect to host mieterschutzkartei.de: could not connect to host mikeybot.com: could not connect to host millionairessecrets.com: could not connect to host mingy.ddns.net: could not connect to host mingyueli.com: could not connect to host minimaliston.com: could not connect to host minitruckin.net: could not connect to host minor.news: could not connect to host misconfigured.io: could not connect to host missycosmeticos.com.br: could not connect to host -mjmnagy.info: could not connect to host +mkacg.com: could not connect to host mkfs.fr: could not connect to host mkhsoft.eu: could not connect to host mkplay.io: could not connect to host mmilog.hu: could not connect to host mmstick.tk: could not connect to host mneeb.de: could not connect to host mobile.eti.br: could not connect to host mobileritelushi.com: could not connect to host @@ -1441,17 +1435,16 @@ mooselook.de: could not connect to host moparcraft.com: could not connect to host moparcraft.org: could not connect to host mordrum.com: could not connect to host morepopcorn.co.nz: could not connect to host morfitronik.pl: could not connect to host morz.org: could not connect to host mosaique-lachenaie.fr: could not connect to host moskva.guide: could not connect to host -mostlyinfinite.com: could not connect to host motomorgen.com: could not connect to host motorbiketourhanoi.com: could not connect to host mountainadventureseminars.com: could not connect to host moving-pixtures.de: could not connect to host mowalls.net: could not connect to host mozzilla.cz: could not connect to host mpserver12.org: could not connect to host mrafrohead.com: could not connect to host @@ -1499,116 +1492,112 @@ natuterra.com.br: could not connect to h ncdesigns-studio.com: could not connect to host ndtblog.com: could not connect to host necesitodinero.org: could not connect to host neer.io: could not connect to host nerdjokes.de: could not connect to host nerfroute.com: could not connect to host nestone.ru: could not connect to host net4visions.at: could not connect to host +netbuzz.ru: could not connect to host netica.fr: could not connect to host netscaler.expert: could not connect to host nevadafiber.net: could not connect to host newcityinfo.info: could not connect to host newfacialbeautycream.com: could not connect to host newtnote.com: could not connect to host newtonhaus.com: could not connect to host nexusbyte.de: could not connect to host nexuscorporation.in: could not connect to host nfluence.org: could not connect to host ngiemboon.net: could not connect to host +nginxyii.tk: could not connect to host nienfun.com: could not connect to host nikksno.io: could not connect to host -niklas.pw: could not connect to host nikobradshaw.com: could not connect to host nikolasbradshaw.com: could not connect to host -ninofink.com: could not connect to host -ninreiei.jp: could not connect to host ninux.ch: could not connect to host niouininon.eu: could not connect to host +nipe-systems.de: could not connect to host nirada.info: could not connect to host nishikino-maki.com: could not connect to host niva.synology.me: could not connect to host nkadvertising.online: could not connect to host nodeselect.com: could not connect to host noelblog.ga: could not connect to host noisebridge.social: could not connect to host nolimits.net.nz: could not connect to host nonemu.ninja: could not connect to host norad.sytes.net: could not connect to host northwoodsfish.com: could not connect to host nosbenevolesontdutalent.com: could not connect to host not-a.link: could not connect to host note7forever.com: could not connect to host notesforpebble.com: could not connect to host notevencode.com: could not connect to host +novascan.net: could not connect to host nowremindme.com: could not connect to host nsbfalconacademy.org: could not connect to host nsdev.cn: could not connect to host nsmail.cn: could not connect to host nudel.ninja: could not connect to host nyanpasu.tv: could not connect to host -o8b.club: could not connect to host oaksbloom.com: could not connect to host obdolbacca.ru: could not connect to host oberam.de: could not connect to host oberhof.co: could not connect to host observatory.se: could not connect to host ocsr.nl: could not connect to host oducs.org: could not connect to host off-the-clock.us: could not connect to host offgames.pro: could not connect to host office-ruru.com: could not connect to host oinky.ddns.net: could not connect to host oldtimer-trifft-flugplatz.de: could not connect to host -olgui.net: could not connect to host oliverspringer.eu: could not connect to host -ollies.cloud: could not connect to host olliespage.com: could not connect to host olliespage.net: could not connect to host olliespage.uk: could not connect to host omnibot.tv: could not connect to host onewebdev.info: could not connect to host onsite4u.de: could not connect to host onstud.com: could not connect to host onthe.network: could not connect to host onviga.de: could not connect to host onwie.fr: could not connect to host ooeste.com: could not connect to host open-desk.org: could not connect to host openconnect.com.au: could not connect to host opinion8td.com: could not connect to host -opticaltest.com: could not connect to host oranges.tokyo: could not connect to host oricejoc.com: could not connect to host -orimex-mebel.ru: could not connect to host osacrypt.studio: could not connect to host oscarmashauri.com: could not connect to host oscsdp.cz: could not connect to host oshell.me: could not connect to host oshinagaki.jp: could not connect to host osmanlitorunu.com: could not connect to host ospree.me: could not connect to host +otellio.com: could not connect to host +otellio.de: could not connect to host +otellio.it: could not connect to host otinane.eu: could not connect to host ourchoice2016.com: could not connect to host owlscrap.ru: could not connect to host oxynux.xyz: could not connect to host pabloartea.ga: could not connect to host packetcrash.net: could not connect to host paichai.space: could not connect to host painosso.org: could not connect to host paio2-rec.com: could not connect to host paio2.com: could not connect to host palationtrade.com: could not connect to host panascais.io: could not connect to host pandapsy.com: could not connect to host pardnoy.com: could not connect to host -pascalmathis.com: could not connect to host -pascalmathis.me: could not connect to host -pascalmathis.net: could not connect to host pastie.se: could not connect to host patrickbusch.net: could not connect to host patrickneuro.de: could not connect to host paulshir.com: could not connect to host paulshir.is: could not connect to host pavelstriz.cz: could not connect to host pay.ubuntu.com: could not connect to host paymon.tj: could not connect to host @@ -1622,16 +1611,17 @@ peirong.me: could not connect to host pemagrid.org: could not connect to host pengisatelier.net: could not connect to host pepper.dog: could not connect to host persjrp.ca: could not connect to host persoform.ch: could not connect to host petlife.od.ua: could not connect to host peuf.shop: could not connect to host peykezamin.ir: could not connect to host +pfudor.tk: could not connect to host pgmsource.com: could not connect to host pharmaboard.org: could not connect to host phdwuda.com: could not connect to host philippa.cool: could not connect to host phillipgoldfarb.com: could not connect to host photographyforchange.com: could not connect to host photographyforchange.org: could not connect to host photops.fr: could not connect to host @@ -1645,16 +1635,17 @@ pierrejeansuau.fr: could not connect to pieterhordijk.com: could not connect to host pimspage.nl: could not connect to host pinebaylibrary.org: could not connect to host pinkhq.com: could not connect to host pinkinked.com: could not connect to host pipenny.net: could not connect to host pitfire.io: could not connect to host pitot-rs.org: could not connect to host +piwko.co: could not connect to host pixelgliders.de: could not connect to host plaasprodukte.com: could not connect to host planbox.info: could not connect to host please-deny.me: could not connect to host plussizereviews.com: could not connect to host pmbremer.de: could not connect to host pogs.us: could not connect to host polit.im: could not connect to host @@ -1671,18 +1662,16 @@ portalisapres.cl: could not connect to h post.com.ar: could not connect to host posters.win: could not connect to host potbar.com: could not connect to host potlytics.com: could not connect to host pouets.ovh: could not connect to host poupatempo.org: could not connect to host powerentertainment.tv: could not connect to host poy-tech.com: could not connect to host -ppmathis.ch: could not connect to host -ppmathis.com: could not connect to host ppoozl.com: could not connect to host prettytunesapp.com: could not connect to host prifo.se: could not connect to host princessbackpack.de: could not connect to host printsos.com: could not connect to host prism-communication.com: could not connect to host privacymanatee.com: could not connect to host privcloud.org: could not connect to host @@ -1738,16 +1727,17 @@ railgun.ac: could not connect to host rainbin.com: could not connect to host ranos.org: could not connect to host rathorian.fr: could not connect to host ravengergaming.net: could not connect to host ravse.dk: could not connect to host raycarruthersphotography.co.uk: could not connect to host rb-china.net: could not connect to host rbxcatalog.com: could not connect to host +rchrdsn.uk: could not connect to host rcoliveira.com: could not connect to host rdfz.tech: could not connect to host re-wilding.com: could not connect to host reaiaer.com: could not connect to host real-compare.com: could not connect to host realcli.com: could not connect to host realnewhomes.com: could not connect to host realraghavgupta.com: could not connect to host @@ -1757,25 +1747,28 @@ reeson.de: could not connect to host reeson.info: could not connect to host reeson.org: could not connect to host reevu.net: could not connect to host reflecton.io: could not connect to host regar42.fr: could not connect to host regendevices.eu: could not connect to host regio-salland.nl: could not connect to host reignsphere.net: could not connect to host +reinierjonker.nl: could not connect to host reismil.ch: could not connect to host +relax.hn: could not connect to host renemayrhofer.com: could not connect to host rentbrowser.com: could not connect to host report-incident.de: could not connect to host reposaarenkuva.fi: could not connect to host reqognize.com: could not connect to host research.md: could not connect to host resoundpro.ca: could not connect to host reth.ch: could not connect to host +retro.rocks: could not connect to host retube.ga: could not connect to host reykjavik.guide: could not connect to host ribopierre.fr: could not connect to host riceglue.com: could not connect to host richardb.me: could not connect to host richeza.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 116" data: no] righteousendeavour.com: could not connect to host riversideauto.net: could not connect to host @@ -1783,17 +1776,16 @@ rms.sexy: could not connect to host robi-net.it: could not connect to host robomonkey.org: could not connect to host robust.ga: could not connect to host rodehutskors.net: could not connect to host rodzina-kupiec.eu.org: could not connect to host roelf.org: could not connect to host rofrank.space: could not connect to host rolandszabo.com: could not connect to host -romanticschemermovie.com: could not connect to host romanticvillas.com.au: could not connect to host rondreis-planner.nl: could not connect to host ronghexx.com: could not connect to host roolevoi.ru: could not connect to host rootbsd.at: could not connect to host rospa100.com: could not connect to host roten.email: could not connect to host rotterdamjazz.info: could not connect to host @@ -1884,16 +1876,17 @@ shanxiapark.com: could not connect to ho shareoine.com: could not connect to host sharvey.ca: could not connect to host shavingks.com: could not connect to host shentengtu.idv.tw: could not connect to host sheying.tm: could not connect to host shh.sh: could not connect to host shinko-osaka.jp: could not connect to host shirakaba-cc.com: could not connect to host +shorten.ninja: could not connect to host shortr.li: could not connect to host shred.ch: could not connect to host shredoptics.ch: could not connect to host shurita.org: could not connect to host shuzicai.cn: could not connect to host shymeck.pw: could not connect to host siamega.com: could not connect to host siebens.net: could not connect to host @@ -1919,30 +1912,31 @@ skontorp-enterprise.no: could not connec sky-aroma.com: could not connect to host skylocker.net: could not connect to host skylocker.nl: could not connect to host skyvault.io: could not connect to host sl1pkn07.wtf: could not connect to host slaps.be: could not connect to host slytech.ch: could not connect to host smallchat.nl: could not connect to host +smallpath.me: could not connect to host smartbiz.vn: could not connect to host smith.is: could not connect to host sml.lc: could not connect to host smuhelper.cn: could not connect to host -snapserv.net: could not connect to host sneed.company: could not connect to host snowdy.eu: could not connect to host soboleva-pr.com.ua: could not connect to host soc.net: could not connect to host socialworkout.com: could not connect to host socialworkout.net: could not connect to host socialworkout.org: could not connect to host socialworkout.tv: could not connect to host socketize.com: could not connect to host +softrobot.se: could not connect to host sogravatas.net.br: could not connect to host sojingle.net: could not connect to host solymar.co: could not connect to host sonafe.info: could not connect to host sonja-kowa.de: could not connect to host sorenam.com: could not connect to host sortaweird.net: could not connect to host soulema.com: could not connect to host @@ -2025,16 +2019,17 @@ sysert.tv: could not connect to host szunia.com: could not connect to host t3rror.net: could not connect to host tab.watch: could not connect to host tacoma-games.com: could not connect to host tadu.de: could not connect to host taidu.news: could not connect to host takusan.ru: could not connect to host talado.gr: could not connect to host +tanak3n.xyz: could not connect to host tangyue.date: could not connect to host tangzhao.net: could not connect to host tapestries.tk: could not connect to host tardybaker.com: could not connect to host tarek.link: could not connect to host tazemama.biz: could not connect to host tcpweb.net: could not connect to host tdelmas.eu: could not connect to host @@ -2116,32 +2111,38 @@ topanlage.de: could not connect to host topdetoxcleanse.com: could not connect to host topnotchendings.com: could not connect to host tor2web.org: could not connect to host tosteberg.se: could not connect to host totallynotaserver.com: could not connect to host totch.de: could not connect to host totot.net: could not connect to host touch-up-net.com: could not connect to host +towaway.ru: could not connect to host toxicboot.com: could not connect to host toxicip.com: could not connect to host tpblist.xyz: could not connect to host tpolemis.com: could not connect to host +tracfinancialservices.com: could not connect to host +tradingrooms.com: could not connect to host traforet.win: could not connect to host trainhornforums.com: could not connect to host trainline.io: could not connect to host transcendmotor.sg: could not connect to host transmithe.net: could not connect to host travotion.com: could not connect to host treker.us: could not connect to host triageo.com.au: could not connect to host tristanfarkas.one: could not connect to host +tryfm.net: could not connect to host trynowrinkleseyeserum.com: could not connect to host +tryti.me: could not connect to host tsaro.io: could not connect to host tsdom.net: could not connect to host +tsugi.fr: could not connect to host tsurezurematome.ga: could not connect to host tucidi.net: could not connect to host tupizm.com: could not connect to host turismo.cl: could not connect to host turkiet.guide: could not connect to host turn-sticks.com: could not connect to host tutiendaroja.com: could not connect to host tutiendarosa.com: could not connect to host @@ -2183,20 +2184,21 @@ uwesander.de: [Exception... "Component r uwimonacs.org.jm: could not connect to host uygindir.ml: could not connect to host vaaddress.co: could not connect to host vacationfund.co: could not connect to host vadik.me: could not connect to host valecnatechnika.cz: could not connect to host valenhub.com: could not connect to host valenhub.es: could not connect to host +valesdev.com: could not connect to host +valesdigital.com: could not connect to host valis.sx: could not connect to host vamosfalardesaude.pt: could not connect to host vanderstraeten.dynv6.net: could not connect to host -vanmalland.com: could not connect to host vapemania.eu: could not connect to host varela-electricite.fr: could not connect to host vayaport.com: could not connect to host vconcept.ch: could not connect to host vconcept.me: could not connect to host vectro.me: could not connect to host vekenz.com: could not connect to host velasense.com: could not connect to host @@ -2236,16 +2238,17 @@ vorderklier.de: could not connect to hos vorlif.org: could not connect to host votresiteweb.ch: could not connect to host vow.vn: could not connect to host vranjske.co.rs: could not connect to host vucdn.com: could not connect to host vxapps.com: could not connect to host w10club.com: could not connect to host wabifoggynuts.com: could not connect to host +wadidi.com: could not connect to host waixingrenfuli.vip: could not connect to host wanashi.com: could not connect to host wanda76.com: could not connect to host wanda78.com: could not connect to host wanda79.com: could not connect to host wanda96.com: could not connect to host wanda97.com: could not connect to host wanda98.com: could not connect to host @@ -2255,17 +2258,16 @@ warlions.info: could not connect to host warp-radio.com: could not connect to host wassim.is: could not connect to host watashi.bid: could not connect to host watchtv-online.pw: could not connect to host watchweasel.com: could not connect to host waxdramatic.com: could not connect to host we.serveftp.net: could not connect to host weareincognito.org: could not connect to host -wearepapermill.co: could not connect to host web-adminy.co.uk: could not connect to host webambacht.nl: could not connect to host webart-factory.de: could not connect to host webbson.net: could not connect to host webhackspro.com: could not connect to host webproject.rocks: could not connect to host webspotter.nl: could not connect to host webtar.info: could not connect to host @@ -2326,17 +2328,16 @@ www-8887999.com: could not connect to ho www.history.pe: could not connect to host wxrlab.com: could not connect to host xatr0z.org: could not connect to host xbc.nz: could not connect to host xeonlab.com: could not connect to host xeonlab.de: could not connect to host xia100.xyz: could not connect to host xianguocy.com: could not connect to host -xiaoyu.net: could not connect to host xing.ml: could not connect to host xiqi.us: could not connect to host xlboo.com: could not connect to host xmiui.com: could not connect to host xn--6x6a.life: could not connect to host xn--80aocgsfei.xn--p1ai: could not connect to host xn--8mr166hf6s.xn--fiqs8s: could not connect to host xn--c5w27q.ml: could not connect to host @@ -2364,69 +2365,70 @@ yemalu.com: could not connect to host yemekbaz.az: could not connect to host yepbitcoin.com: could not connect to host yesfone.com.br: could not connect to host yggdar.ga: could not connect to host yhori.xyz: could not connect to host yibin0831.com: could not connect to host ying299.com: could not connect to host ying299.net: could not connect to host +yinga.ga: could not connect to host ylk.io: could not connect to host yobbelwobbel.de: could not connect to host yobst.tk: could not connect to host yoga.is-an-engineer.com: could not connect to host yoticonnections.com: could not connect to host yotilabs.com: could not connect to host youruseragent.info: could not connect to host yourznc.com: could not connect to host yousite.by: could not connect to host yude.ml: could not connect to host yum.beer: could not connect to host yux.fr: could not connect to host -yzcloud.me: could not connect to host +z-coder.com: could not connect to host z0rro.net: could not connect to host zachbolinger.com: could not connect to host zajazd.biz: could not connect to host zalohovaniburian.cz: could not connect to host zaoext.com: could not connect to host zbchen.com: could not connect to host zeitzer-turngala.de: could not connect to host zeloz.xyz: could not connect to host zenghx.tk: could not connect to host zero-x-baadf00d.com: could not connect to host +zerocool.io: could not connect to host zerosource.net: could not connect to host zeug.co: could not connect to host zhangfangzhou.com: could not connect to host zhangsir.net: could not connect to host zhaochen.xyz: could not connect to host zhenmeish.com: could not connect to host zhikin.com: could not connect to host zhoujiashu.com: could not connect to host zikirakhirzaman.com: could not connect to host zmk.fr: could not connect to host zobraz.cz: could not connect to host zohar.shop: could not connect to host zokster.net: could not connect to host zolokar.xyz: could not connect to host -zoological-gardens.eu: could not connect to host zorz.info: could not connect to host zudomc.me: could not connect to host zuehlcke.de: could not connect to host zulu7.com: could not connect to host zuviel.space: could not connect to host zypr.pw: could not connect to host zyx.im: could not connect to host zzw.ca: could not connect to host 00001.am: did not receive HSTS header 00002.am: did not receive HSTS header 0005.com: could not connect to host 0005aa.com: could not connect to host 007sascha.de: did not receive HSTS header 020wifi.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116" data: no] -0222aa.com: could not connect to host +0222aa.com: did not receive HSTS header 040fit.nl: did not receive HSTS header 048.ag: could not connect to host 050508.com: could not connect to host 066928.com: could not connect to host 066938.com: could not connect to host 0f.io: could not connect to host 0fl.com: did not receive HSTS header 0g.org.uk: could not connect to host @@ -2538,30 +2540,30 @@ 420dongstorm.com: could not connect to h 42ms.org: could not connect to host 440hz-radio.de: did not receive HSTS header 4455software.com: could not connect to host 44957.com: could not connect to host 4679.space: could not connect to host 49889.com: could not connect to host 4azino777.ru: did not receive HSTS header 4cclothing.com: could not connect to host -4elements.com: max-age too low: 0 4eyes.ch: did not receive HSTS header 4miners.net: could not connect to host 4mybaby.ch: did not receive HSTS header 4ourty2.org: could not connect to host 4sqsu.eu: could not connect to host 4w-performers.link: could not connect to host 50millionablaze.org: could not connect to host 513vpn.net: did not receive HSTS header 518maicai.com: did not receive HSTS header 540.co: did not receive HSTS header 54bf.com: could not connect to host 555fl.com: did not receive HSTS header 56ct.com: could not connect to host +57aromas.com: did not receive HSTS header 5piecesofadvice.com: could not connect to host 605508.cc: did not receive HSTS header 605508.com: did not receive HSTS header 60ych.net: did not receive HSTS header 6120.eu: did not receive HSTS header 64616e.xyz: could not connect to host 660011.com: max-age too low: 0 69square.com: could not connect to host @@ -2793,16 +2795,17 @@ alittlebitcheeky.com: did not receive HS aljmz.com: could not connect to host alkami.com: max-age too low: 0 alkamitech.com: max-age too low: 0 all-subtitles.com: could not connect to host all.tf: could not connect to host all4os.com: did not receive HSTS header alldaymonitoring.com: could not connect to host allegro-inc.com: did not receive HSTS header +allfreelancers.su: did not receive HSTS header allgrass.es: did not receive HSTS header alliance-compacts.com: did not receive HSTS header allinnote.com: could not connect to host allkindzabeats.com: did not receive HSTS header allmbw.com: could not connect to host allmystery.de: did not receive HSTS header allo-symo.fr: did not receive HSTS header allods-zone.ru: could not connect to host @@ -2875,17 +2878,17 @@ andrew.fi: did not receive HSTS header andrew.london: did not receive HSTS header andrewbroekman.com: did not receive HSTS header andrewmichaud.beer: could not connect to host andrewregan.me: could not connect to host andrewsun.com: did not receive HSTS header andrewvoce.com: did not receive HSTS header andrewx.net: could not connect to host andrewyg.net: could not connect to host -andreypopp.com: did not receive HSTS header +andreypopp.com: could not connect to host androidprosmart.com: could not connect to host androled.fr: max-age too low: 5184000 androoz.se: could not connect to host andyclark.io: could not connect to host andymartin.cc: could not connect to host andyuk.org: could not connect to host anfsanchezo.co: could not connect to host anfsanchezo.me: could not connect to host @@ -2910,17 +2913,16 @@ ankakaak.com: could not connect to host ankaraprofesyonelnakliyat.com: did not receive HSTS header ankaraprofesyonelnakliyat.com.tr: did not receive HSTS header ankarayilmaznakliyat.com: did not receive HSTS header ankarayucelnakliyat.com: did not receive HSTS header annabellaw.com: did not receive HSTS header annahmeschluss.de: did not receive HSTS header annarbor.group: did not receive HSTS header anomaly.ws: did not receive HSTS header -anonboards.com: did not receive HSTS header anonymo.co.uk: could not connect to host anonymo.uk: could not connect to host anonymousstatecollegelulzsec.com: could not connect to host anook.com: max-age too low: 0 ansdell.info: could not connect to host anshuman-chatterjee.com: did not receive HSTS header ansibeast.net: could not connect to host anstoncs.com.au: max-age too low: 86400 @@ -2946,17 +2948,17 @@ aozora.moe: could not connect to host apachelounge.com: did not receive HSTS header apadrinaunolivo.org: did not receive HSTS header apaginastore.com.br: could not connect to host apeasternpower.com: could not connect to host aperture-laboratories.science: could not connect to host api.mega.co.nz: could not connect to host apibot.de: could not connect to host apis.world: could not connect to host -apm.com.tw: did not receive HSTS header +apkriver.com: did not receive HSTS header apmg-certified.com: did not receive HSTS header apmg-cyber.com: did not receive HSTS header apnakliyat.com: did not receive HSTS header apolloyl.com: could not connect to host aponkral.site: could not connect to host aponkralsunucu.com: could not connect to host aponow.de: did not receive HSTS header app-arena.com: did not receive HSTS header @@ -3128,22 +3130,19 @@ avantmfg.com: did not receive HSTS heade avastantivirus.ro: did not receive HSTS header avec-ou-sans-ordonnance.fr: could not connect to host aveling-adventure.co.uk: did not receive HSTS header avepol.cz: did not receive HSTS header avepol.eu: did not receive HSTS header aviacao.pt: did not receive HSTS header avidcruiser.com: did not receive HSTS header aviodeals.com: could not connect to host -avmo.pw: did not receive HSTS header avqueen.cn: did not receive HSTS header -avso.pw: did not receive HSTS header avtosept.by: did not receive HSTS header avus-automobile.com: did not receive HSTS header -avxo.pw: did not receive HSTS header awanderlustadventure.com: did not receive HSTS header awg-mode.de: did not receive HSTS header aww.moe: did not receive HSTS header axado.com.br: did not receive HSTS header axelchv.fr: did not receive HSTS header axeny.com: did not receive HSTS header axolsoft.com: max-age too low: 10540800 ayahuascaadvisor.com: could not connect to host @@ -3155,16 +3154,17 @@ azamra.com: did not receive HSTS header azazy.net: max-age too low: 2592000 azirevpn.com: did not receive HSTS header azlo.com: did not receive HSTS header azprep.us: could not connect to host b-rickroll-e.pw: could not connect to host b-space.de: did not receive HSTS header b2bpromoteit.com: did not receive HSTS header b3orion.com: max-age too low: 0 +b8a.me: did not receive HSTS header baby-click.de: could not connect to host babybee.ie: could not connect to host babybic.hu: did not receive HSTS header babycs.house: could not connect to host babyhouse.xyz: could not connect to host babyliss-pro.com: could not connect to host babymasaze.cz: did not receive HSTS header babysaying.me: could not connect to host @@ -3243,17 +3243,17 @@ bbwfacesitting.xyz: could not connect to bbwfight.xyz: could not connect to host bcbsmagentprofile.com: could not connect to host bcchack.com: could not connect to host bccx.com: could not connect to host bcheng.cf: did not receive HSTS header bchep.com: could not connect to host bckp.de: could not connect to host bcm.com.au: did not receive HSTS header -bcnx.de: could not connect to host +bcnx.de: max-age too low: 0 bcsytv.com: could not connect to host bcweightlifting.ca: could not connect to host bddemir.com: could not connect to host bde-epitech.fr: could not connect to host be-real.life: 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 @@ -3365,17 +3365,17 @@ bikermusic.net: could not connect to hos bildiri.ci: did not receive HSTS header biletua.de: could not connect to host biletyplus.ru: did not receive HSTS header billigssl.dk: did not receive HSTS header billin.net: did not receive HSTS header billkiss.com: could not connect to host billninja.com: did not receive HSTS header billrusling.com: could not connect to host -bimbo.com: did not receive HSTS header +bimbo.com: max-age too low: 86400 bimbo.com.ar: max-age too low: 86400 bimbobakeriesusa.com: max-age too low: 86400 binaryfigments.com: max-age too low: 86400 binderapp.net: could not connect to host bingcheung.org: did not receive HSTS header bioespuna.eu: did not receive HSTS header biofam.ru: did not receive HSTS header bioknowme.com: did not receive HSTS header @@ -3439,17 +3439,16 @@ blog.coffee: could not connect to host blog.cyveillance.com: did not receive HSTS header blog.torproject.org: max-age too low: 1000 bloglife-bb.com: did not receive HSTS header bloglikepro.com: could not connect to host blognone.com: did not receive HSTS header blogonblogspot.com: did not receive HSTS header blok56.nl: did not receive HSTS header blokuhaka.fr: did not receive HSTS header -bloom-avenue.com: did not receive HSTS header bloomnbud.com: did not receive HSTS header bloomzoomy.ru: max-age too low: 172800 blowjs.com: could not connect to host bls-fiduciaire.be: did not receive HSTS header bltc.co: could not connect to host blubbablasen.de: could not connect to host blucas.org: did not receive HSTS header blue17.co.uk: did not receive HSTS header @@ -3538,16 +3537,17 @@ brandon.so: could not connect to host brandons.site: did not receive HSTS header brandred.net: could not connect to host brandspray.com: could not connect to host brasilien.guide: could not connect to host brasilmorar.com: could not connect to host bravz.de: could not connect to host brenden.net.au: could not connect to host bress.cloud: could not connect to host +brettabel.com: did not receive HSTS header brettpemberton.xyz: did not receive HSTS header brianpcurran.com: did not receive HSTS header brickoo.com: could not connect to host brickyardbuffalo.com: did not receive HSTS header bridholm.se: could not connect to host brightstarkids.co.uk: did not receive HSTS header brightstarkids.com.au: did not receive HSTS header brightstarkids.net: did not receive HSTS header @@ -3567,17 +3567,16 @@ brunoonline.co.uk: could not connect to bryanshearer.accountant: did not receive HSTS header bryn.xyz: could not connect to host bs12v.ru: did not receive HSTS header bsdtips.com: could not connect to host bsklabels.com: did not receive HSTS header btc-e.com: did not receive HSTS header btcdlc.com: could not connect to host btcpot.ltd: did not receive HSTS header -btio.pw: did not receive HSTS header btxiaobai.com: did not receive HSTS header buben.tech: did not receive HSTS header bubulazi.com: did not receive HSTS header bubulazy.com: did not receive HSTS header buch-cuber.de: max-age too low: 0 buchheld.at: did not receive HSTS header bucket.tk: could not connect to host budgetthostels.nl: did not receive HSTS header @@ -3614,16 +3613,17 @@ burningcrash.de: max-age too low: 600000 burpsuite.site: could not connect to host burrow.ovh: could not connect to host burrowingsec.com: could not connect to host burtrum.top: could not connect to host buryat-mongol.cf: could not connect to host bush41.org: did not receive HSTS header business.lookout.com: could not connect to host business.medbank.com.mt: did not receive HSTS header +businessadviceperth.com.au: did not receive HSTS header businesshosting.nl: did not receive HSTS header businessloanconnection.org: did not receive HSTS header busold.ws: could not connect to host bustimes.org.uk: did not receive HSTS header butchersworkshop.com: did not receive HSTS header butian518.com: did not receive HSTS header buttercoin.com: could not connect to host butterfieldstraining.com: could not connect to host @@ -3673,17 +3673,17 @@ c3b.info: could not connect to host cabsites.com: could not connect to host cabusar.fr: did not receive HSTS header caconnect.org: could not connect to host cadao.me: did not receive HSTS header cadenadg.gr: did not receive HSTS header caesreon.com: could not connect to host cafe-murr.de: could not connect to host cafe-scientifique.org.ec: could not connect to host -cafe-service.ru: could not connect to host +cafe-service.ru: did not receive HSTS header caim.cz: did not receive HSTS header cajapopcorn.com: did not receive HSTS header cake.care: could not connect to host calcularpagerank.com.br: could not connect to host calgaryconstructionjobs.com: did not receive HSTS header calix.com: max-age too low: 0 calltrackingreports.com: could not connect to host calomel.org: max-age too low: 2764800 @@ -3749,16 +3749,17 @@ casinolegal.pt: did not receive HSTS hea casinostest.com: could not connect to host casioshop.eu: did not receive HSTS header casjay.cloud: did not receive HSTS header casovi.cf: could not connect to host castagnonavocats.com: did not receive HSTS header cata.ga: could not connect to host catalin.pw: could not connect to host catarsisvr.com: could not connect to host +catchers.cc: did not receive HSTS header catinmay.com: did not receive HSTS header catnapstudios.com: could not connect to host cavaleria.ro: did not receive HSTS header caveclan.org: did not receive HSTS header cavedevs.de: could not connect to host cavedroid.xyz: could not connect to host cavern.tv: did not receive HSTS header cayafashion.de: did not receive HSTS header @@ -4110,16 +4111,17 @@ corporatesubscriptions.com.au: did not r correctpaardbatterijnietje.nl: did not receive HSTS header corruption-mc.net: could not connect to host corruption-rsps.net: could not connect to host corruption-server.net: could not connect to host costow.club: could not connect to host coughlan.de: did not receive HSTS header count.sh: could not connect to host couponcodeq.com: could not connect to host +courageousparentsnetwork.org: did not receive HSTS header couragewhispers.ca: could not connect to host coursdeprogrammation.com: could not connect to host coursella.com: did not receive HSTS header cove.sh: did not receive HSTS header covenantbank.net: could not connect to host coverdat.com: did not receive HSTS header coverduck.ru: could not connect to host cpuvinf.eu.org: could not connect to host @@ -4138,17 +4140,16 @@ crazycen.com: did not receive HSTS heade crazycraftland.de: could not connect to host crazycraftland.net: did not receive HSTS header crazyhotseeds.com: did not receive HSTS header crazyker.com: did not receive HSTS header creaescola.com: did not receive HSTS header create-test-publish.co.uk: could not connect to host creativeapple.ltd: did not receive HSTS header creativeartifice.com: did not receive HSTS header -creativecommons.gr: did not receive HSTS header creativephysics.ml: could not connect to host creativeplayuk.com: did not receive HSTS header crecket.me: could not connect to host creditclear.com.au: did not receive HSTS header crendontech.com: could not connect to host crestoncottage.com: could not connect to host crimewatch.net.za: could not connect to host crisissurvivalspecialists.com: could not connect to host @@ -4184,17 +4185,17 @@ cs-ubladego.pl: could not connect to hos csapak.com: did not receive HSTS header csawctf.poly.edu: could not connect to host csfs.org.uk: could not connect to host csgf.ru: did not receive HSTS header csgodicegame.com: did not receive HSTS header csgoelemental.com: could not connect to host csgokings.eu: could not connect to host csgoshifter.com: could not connect to host -csohack.tk: could not connect to host +csohack.tk: did not receive HSTS header cspbuilder.info: could not connect to host cssps.org: could not connect to host cssu.in: did not receive HSTS header csvape.com: did not receive HSTS header ct-status.org: could not connect to host ct-watches.dk: did not receive HSTS header cthulhuden.com: could not connect to host ctrl.blog: did not receive HSTS header @@ -4216,16 +4217,17 @@ cuongquach.com: did not receive HSTS hea cuongthach.com: did not receive HSTS header curlyroots.com: did not receive HSTS header curroapp.com: could not connect to host cursosdnc.cl: max-age too low: 0 curveweb.co.uk: did not receive HSTS header cusfit.com: did not receive HSTS header custe.rs: could not connect to host customadesign.com: did not receive HSTS header +cutelariafiveladeouro.com.br: did not receive HSTS header cutorrent.com: could not connect to host cuvva.insure: did not receive HSTS header cvjm-memmingen.de: did not receive HSTS header cvtparking.co.uk: did not receive HSTS header cwage.com: could not connect to host cyanogenmod.xxx: could not connect to host cyber-konzept.de: did not receive HSTS header cybercecurity.com: did not receive HSTS header @@ -4324,20 +4326,20 @@ davidhunter.scot: did not receive HSTS h davidnoren.com: did not receive HSTS header davidreinhardt.de: could not connect to host day.vip: did not receive HSTS header daylightcompany.com: did not receive HSTS header daytonaseaside.com: did not receive HSTS header db.gy: could not connect to host dbx.ovh: could not connect to host dcaracing.nl: could not connect to host +dcbouncycastles.co.uk: did not receive HSTS header dccode.gov: could not connect to host dccoffeeproducts.com: did not receive HSTS header dccraft.net: could not connect to host -dcpower.eu: max-age too low: 600 dctxf.com: did not receive HSTS header dcuofriends.net: could not connect to host dcurt.is: did not receive HSTS header dcw.io: did not receive HSTS header ddatsh.com: did not receive HSTS header deadsoul.net: max-age too low: 0 debank.tv: did not receive HSTS header debatch.se: could not connect to host @@ -4649,16 +4651,17 @@ dudesunderwear.com.br: could not connect duelysthub.com: could not connect to host dukec.me: did not receive HSTS header dullsir.com: did not receive HSTS header dune.io: did not receive HSTS header dunea.nl: did not receive HSTS header duole30.com: did not receive HSTS header duongpho.com: did not receive HSTS header duskopy.top: could not connect to host +dutchessuganda.com: did not receive HSTS header dutchrank.com: did not receive HSTS header duuu.ch: could not connect to host duyao.de: max-age too low: 86400 dv189.com: did not receive HSTS header dycem-ns.com: did not receive HSTS header dycontrol.de: could not connect to host dylanscott.com.au: did not receive HSTS header dymersion.com: did not receive HSTS header @@ -4735,17 +4738,16 @@ edited.de: did not receive HSTS header edix.ru: could not connect to host edk.com.tr: did not receive HSTS header edmodo.com: did not receive HSTS header edpubs.gov: did not receive HSTS header edsh.de: did not receive HSTS header educatio.tech: could not connect to host educourse.ga: could not connect to host eduvance.in: did not receive HSTS header -eellak.gr: did not receive HSTS header eengezinswoning-in-alphen-aan-den-rijn-kopen.nl: could not connect to host eengezinswoning-in-de-friese-meren-kopen.nl: could not connect to host eengezinswoning-in-friesland-kopen.nl: could not connect to host eengezinswoning-in-leeuwarden-kopen.nl: could not connect to host eengezinswoning-in-pekela-kopen.nl: could not connect to host eengezinswoning-in-rijnwaarden-kopen.nl: could not connect to host eengezinswoning-in-sudwest-fryslan-kopen.nl: could not connect to host eengezinswoning-in-zeeland-kopen.nl: could not connect to host @@ -4766,16 +4768,17 @@ ehealthcounselor.com: could not connect ehipaadev.com: could not connect to host ehito.ovh: could not connect to host ehrenamt-skpfcw.de: could not connect to host eicfood.com: could not connect to host eidolonhost.com: did not receive HSTS header eifelindex.de: did not receive HSTS header eigo.work: could not connect to host eimanavicius.lt: did not receive HSTS header +ejusu.com: did not receive HSTS header ekbanden.nl: could not connect to host eksik.com: did not receive HSTS header el-soul.com: did not receive HSTS header elaintehtaat.fi: could not connect to host elan-organics.com: did not receive HSTS header elanguest.pl: could not connect to host elanguest.ro: could not connect to host elanguest.ru: could not connect to host @@ -4843,17 +4846,17 @@ endlesstone.com: did not receive HSTS he endohaus.ca: could not connect to host endohaus.com: could not connect to host endohaus.eu: could not connect to host enecoshop.nl: did not receive HSTS header enefan.jp: could not connect to host engelwerbung.com: did not receive HSTS header enginsight.com: did not receive HSTS header englishyamal.ru: did not receive HSTS header -enigmacpt.com: could not connect to host +enigmacpt.com: did not receive HSTS header enigmail.net: did not receive HSTS header enjen.net: did not receive HSTS header enjoymayfield.com: max-age too low: 0 ensemble-vos-idees.fr: did not receive HSTS header enteente.club: could not connect to host enteente.space: could not connect to host enteente.xyz: could not connect to host enterdev.co: did not receive HSTS header @@ -5130,17 +5133,17 @@ filey.co.uk: did not receive HSTS header filmesubtitrate2017.online: could not connect to host filo.xyz: did not receive HSTS header filoitoupediou.gr: did not receive HSTS header finalgear.com: did not receive HSTS header finalvpn.com: could not connect to host financieringsportaal.nl: did not receive HSTS header finanzkontor.net: could not connect to host findigo.fish: could not connect to host -findingmyname.com: did not receive HSTS header +findingmyname.com: max-age too low: 2629746 findtutorsnearme.com: did not receive HSTS header finer04.pw: did not receive HSTS header fingent.com: did not receive HSTS header finiteheap.com: did not receive HSTS header finn.io: did not receive HSTS header finpt.com: did not receive HSTS header finsterlebnis.de: did not receive HSTS header fintechnics.com: did not receive HSTS header @@ -5288,16 +5291,17 @@ frasys.io: did not receive HSTS header fraudempire.com: could not connect to host freeasinlliure.org: did not receive HSTS header freeflow.tv: could not connect to host freekdevries.nl: did not receive HSTS header freelanced.co.za: could not connect to host freelandinnovation.com: did not receive HSTS header freelo.cz: did not receive HSTS header freematthale.net: did not receive HSTS header +freend.me: did not receive HSTS header freesoftwaredriver.com: could not connect to host freethought.org.au: could not connect to host freeutopia.org: did not receive HSTS header freqlabs.com: did not receive HSTS header freshfind.xyz: could not connect to host freshlymind.com: did not receive HSTS header frezbo.com: could not connect to host frforms.com: did not receive HSTS header @@ -5668,16 +5672,17 @@ grow-shop.lv: could not connect to host grozip.com: did not receive HSTS header grunex.com: did not receive HSTS header grupopgn.com.br: could not connect to host gryffin.ga: could not connect to host gryffin.ml: could not connect to host gryffin.tk: could not connect to host gsm-map.com: could not connect to host gsnort.com: did not receive HSTS header +gta5voice.net: did not receive HSTS header gtamodshop.org: could not connect to host gtanda.tk: could not connect to host gtech.work: did not receive HSTS header gtldna.com: could not connect to host gtlfsonlinepay.com: did not receive HSTS header gtraxapp.com: could not connect to host gts-schulsoftware.de: did not receive HSTS header guarajubaimoveis.com.br: did not receive HSTS header @@ -5931,17 +5936,16 @@ hoekwoningverkopen.nl: could not connect hoerbuecher-und-hoerspiele.de: could not connect to host hofiprojekt.cz: did not receive HSTS header hogar123.es: could not connect to host hoiku-map.tokyo: could not connect to host hoiku-navi.com: did not receive HSTS header holgerlehner.com: 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 homads.com: did not receive HSTS header home-coaching.be: did not receive HSTS header homeandyarddetailing.com: could not connect to host homeclouding.de: could not connect to host homedna.com: did not receive HSTS header homeexx.com: did not receive HSTS header homeownersassociationmanagementla.com: could not connect to host homeremodelingcontractorsca.com: did not receive HSTS header @@ -6513,17 +6517,16 @@ johners.me: could not connect to host johngaltgroup.com: did not receive HSTS header johnhgaunt.com: did not receive HSTS header johnrom.com: could not connect to host johnverkerk.com: could not connect to host jointoweb.com: could not connect to host jonas-keidel.de: did not receive HSTS header jonasgroth.se: did not receive HSTS header jonathan.ir: could not connect to host -jonathanj.nl: did not receive HSTS header jonathanreyes.com: did not receive HSTS header jondarby.com: did not receive HSTS header jongha.me: could not connect to host jonirrings.com: did not receive HSTS header jonn.me: could not connect to host jonnichols.info: could not connect to host jonsno.ws: could not connect to host joostbovee.nl: could not connect to host @@ -6641,17 +6644,16 @@ katproxy.site: could not connect to host katproxy.tech: could not connect to host katproxy.top: could not connect to host katzen.me: did not receive HSTS header kaufkraftkiel.de: could not connect to host kauplusprofesional.com: did not receive HSTS header kausch.at: could not connect to host kavinvin.me: could not connect to host kazenojiyu.fr: did not receive HSTS header -kb3.net: did not receive HSTS header kcluster.io: could not connect to host kd-plus.pp.ua: could not connect to host kdata.it: did not receive HSTS header kdbx.online: could not connect to host kdm-online.de: did not receive HSTS header keeley.gq: could not connect to host keeley.ml: could not connect to host keeleysam.me: could not connect to host @@ -6664,16 +6666,17 @@ ken-electric.com.br: could not connect t kenkoelectric.com: did not receive HSTS header kentacademiestrust.org.uk: did not receive HSTS header kerangalam.com: could not connect to host kerksanders.nl: did not receive HSTS header kermadec.blog: could not connect to host kermadec.net: could not connect to host kernl.us: did not receive HSTS header keskeces.com: did not receive HSTS header +kevinbusse.de: did not receive HSTS header kevinroebert.de: did not receive HSTS header keymaster.lookout.com: did not receive HSTS header kfbrussels.be: could not connect to host kg-rating.com: could not connect to host kgxtech.com: max-age too low: 2592000 khaganat.net: did not receive HSTS header ki-on.net: did not receive HSTS header kialo.com: did not receive HSTS header @@ -6875,16 +6878,17 @@ lagalerievirtuelle.fr: did not receive H lagier.xyz: could not connect to host lagoza.name: could not connect to host lainchan.org: did not receive HSTS header laisashop.com.br: could not connect to host lamaland.ru: did not receive HSTS header lamarieealhonneur.com: did not receive HSTS header lambda-complex.org: could not connect to host lambdafive.co.uk: could not connect to host +lamereabizix.com: did not receive HSTS header lamomebijou.paris: did not receive HSTS header lampl.info: did not receive HSTS header lana.swedbank.se: did not receive HSTS header lanauzedesigns.com: did not receive HSTS header lanboll.com: could not connect to host lancehoteis.com: did not receive HSTS header lancehoteis.com.br: did not receive HSTS header land-links.org: did not receive HSTS header @@ -6942,17 +6946,17 @@ learningorder.com: could not connect to lebrun.org: could not connect to host lecourtier.fr: did not receive HSTS header leddruckalarm.de: did not receive HSTS header ledgerscope.net: could not connect to host leen.io: did not receive HSTS header leetsaber.com: did not receive HSTS header legarage.org: did not receive HSTS header legavenue.com.br: did not receive HSTS header -legitaxi.com: could not connect to host +legitaxi.com: did not receive HSTS header legymnase.eu: did not receive HSTS header lehtinen.xyz: did not receive HSTS header leighneithardt.com: could not connect to host leinir.dk: did not receive HSTS header leitner.com.au: did not receive HSTS header leiyun.me: did not receive HSTS header lellyboi.ml: could not connect to host lelongbank.com: did not receive HSTS header @@ -6983,32 +6987,32 @@ letitfly.me: could not connect to host letras.mus.br: did not receive HSTS header letsmultiplayerplay.com: did not receive HSTS header letstox.com: could not connect to host letustravel.tk: could not connect to host levatc.tk: did not receive HSTS header level-10.net: could not connect to host levelum.com: did not receive HSTS header levert.ch: could not connect to host -lewisjuggins.co.uk: did not receive HSTS header +lewisjuggins.co.uk: could not connect to host lexpierce.social: could not connect to host lez-cuties.com: could not connect to host lfullerdesign.com: could not connect to host lg21.co: could not connect to host lgiswa.com.au: did not receive HSTS header lgrs.com.au: did not receive HSTS header lgts.se: could not connect to host liaillustr.at: did not receive HSTS header liam-w.com: could not connect to host liamjack.fr: could not connect to host lianye.in: could not connect to host lianyexiuchang.in: could not connect to host liaoshuma.com: could not connect to host libanco.com: could not connect to host -libdeer.so: could not connect to host +libdeer.so: did not receive HSTS header libertyrp.org: did not receive HSTS header libfte.org: did not receive HSTS header library.linode.com: did not receive HSTS header librechan.net: could not connect to host libreduca.com: could not connect to host lichess4545.com: did not receive HSTS header lichess4545.tv: did not receive HSTS header liebach.me: did not receive HSTS header @@ -7276,17 +7280,16 @@ malwaretips.com: did not receive HSTS he malwre.io: could not connect to host malya.fr: could not connect to host mamaison.io: could not connect to host mamaxi.org: did not receive HSTS header mammothmail.com: could not connect to host mammothmail.net: could not connect to host mammothmail.org: could not connect to host mammut.space: could not connect to host -mamospienas.lt: did not receive HSTS header manaboutahor.se: did not receive HSTS header manage.zenpayroll.com: did not receive HSTS header manage4all.com: could not connect to host manageall.de: could not connect to host manageforall.com: could not connect to host manageforall.de: could not connect to host managemynetsuite.com: did not receive HSTS header manantial.mx: could not connect to host @@ -7433,16 +7436,17 @@ mecenat-cassous.com: did not receive HST mechmk1.me: did not receive HSTS header medallia.io: could not connect to host media-access.online: did not receive HSTS header mediacru.sh: could not connect to host mediafinancelab.org: did not receive HSTS header mediamag.am: max-age too low: 0 mediawikicn.org: could not connect to host medienservice-fritz.de: did not receive HSTS header +medifab.online: did not receive HSTS header medirich.co: could not connect to host meditek-dv.ru: could not connect to host mediterenopmaandag.nl: did not receive HSTS header medm-test.com: could not connect to host medzinenews.com: did not receive HSTS header meedoennoordkop.nl: did not receive HSTS header meedoenzaanstad.nl: did not receive HSTS header meetfinch.com: could not connect to host @@ -7714,22 +7718,22 @@ morganestes.com: max-age too low: 0 morningcalculation.com: could not connect to host morninglory.com: max-age too low: 2592000 mornings.com: did not receive HSTS header morotech.com.br: could not connect to host morpheusx.at: could not connect to host morpheusxaut.net: could not connect to host morpork.xyz: could not connect to host mortgagecentersmo.com: did not receive HSTS header +moso.io: did not receive HSTS header mostwuat.com: could not connect to host motherbase.io: could not connect to host motionfreight.com: could not connect to host motionpicturesolutions.com: did not receive HSTS header motorcheck.ie: did not receive HSTS header -motorsportdiesel.com: did not receive HSTS header mottvd.com: could not connect to host moudicat.com: max-age too low: 6307200 moula.com.au: did not receive HSTS header mountainmusicpromotions.com: did not receive HSTS header movabletype.net: max-age too low: 3600 moviedollars.com: did not receive HSTS header moviesabout.net: could not connect to host movio.ga: did not receive HSTS header @@ -7745,16 +7749,17 @@ mqas.net: could not connect to host mr-hosting.com: could not connect to host mrawe.com: could not connect to host mrdani.net: could not connect to host mredsanders.net: did not receive HSTS header mrettich.org: did not receive HSTS header mrhee.com: did not receive HSTS header mrning.com: did not receive HSTS header mrnonz.com: max-age too low: 0 +mrparker.pw: did not receive HSTS header mrpopat.in: did not receive HSTS header mrs-shop.com: did not receive HSTS header mrsbairds.com: max-age too low: 86400 msc-seereisen.net: max-age too low: 0 mstd.tokyo: did not receive HSTS header mstdn-tech.jp: could not connect to host mszaki.com: did not receive HSTS header mt.me.uk: could not connect to host @@ -7773,17 +7778,17 @@ munich-rage.de: could not connect to hos munkiepus.com: did not receive HSTS header munuc.org: did not receive HSTS header munzee.com: did not receive HSTS header muonium.ch: could not connect to host muriburi.land: could not connect to host muriburiland.com: could not connect to host murodese.org: could not connect to host murrayrun.com: did not receive HSTS header -museminder2.com: could not connect to host +museminder2.com: did not receive HSTS header musewearflipflops.com: could not connect to host mushroomandfern.com: could not connect to host musi.cx: could not connect to host musicalbim.com.br: max-age too low: 0 musikkfondene.no: did not receive HSTS header musikzug-bookholzberg.de: did not receive HSTS header mustardking.me: did not receive HSTS header mustika.cf: could not connect to host @@ -7809,17 +7814,16 @@ mychocolateweightloss.com: could not con myclientsplus.com: did not receive HSTS header mycollab.net: could not connect to host mycoted.com: did not receive HSTS header mydeos.com: could not connect to host mydigipass.com: did not receive HSTS header mydnaresults.com: could not connect to host mydnatest.com: did not receive HSTS header mydriversedge.com: did not receive HSTS header -myeffect.today: did not receive HSTS header mygate.at: could not connect to host mygivingcircle.org: did not receive HSTS header mygooder.com: did not receive HSTS header mygov.scot: did not receive HSTS header myhair.asia: did not receive HSTS header myicare.org: did not receive HSTS header myiocc.org: could not connect to host myip.tech: max-age too low: 2592000 @@ -7834,16 +7838,17 @@ mynewselfbariatrics.com: did not receive myni.io: could not connect to host mynigma.org: did not receive HSTS header mypagella.com: could not connect to host mypagella.eu: could not connect to host mypagella.it: could not connect to host mypanier.com: max-age too low: 7889238 mypension.ca: could not connect to host myphonebox.de: could not connect to host +myqdu.cn: did not receive HSTS header myraytech.net: did not receive HSTS header myrig.net: could not connect to host myrsa.in: did not receive HSTS header mysecretrewards.com: could not connect to host myspa.asia: did not receive HSTS header mystery-science-theater-3000.de: did not receive HSTS header mysteryblog.de: did not receive HSTS header mythlogic.com: did not receive HSTS header @@ -7875,16 +7880,17 @@ namacindia.com: did not receive HSTS hea namaho.com: could not connect to host named.ga: could not connect to host nametaken-cloud.duckdns.org: could not connect to host namethatbone.com: could not connect to host namorico.me: could not connect to host nan.ci: did not receive HSTS header nan.zone: could not connect to host nandex.org: could not connect to host +nani.io: did not receive HSTS header naniki.co.uk: did not receive HSTS header nanogeneinc.com: could not connect to host nanokamo.com: did not receive HSTS header nanrenba.net: could not connect to host nansay.cn: could not connect to host nanto.eu: could not connect to host narodniki.com: did not receive HSTS header narviz.com: did not receive HSTS header @@ -8023,17 +8029,17 @@ ninjan.co: did not receive HSTS header ninjaspiders.com: did not receive HSTS header nippler.org: could not connect to host nippombashi.net: did not receive HSTS header nipponcareers.com: did not receive HSTS header nirna.io: did not receive HSTS header nitropur.de: max-age too low: 0 nixien.fr: could not connect to host nixmag.net: could not connect to host -nkautoservice.nl: could not connect to host +nkautoservice.nl: did not receive HSTS header nkb.in.th: could not connect to host nll.fi: could not connect to host nmadda.com: could not connect to host nmctest.net: could not connect to host nmueller.at: could not connect to host nnote.net: did not receive HSTS header nnya.cat: could not connect to host no-ip.cz: did not receive HSTS header @@ -8052,16 +8058,17 @@ nofrillsdns.com: did not receive HSTS he noima.com: did not receive HSTS header nolag.host: could not connect to host nolberg.net: did not receive HSTS header nolimitsbook.de: did not receive HSTS header nolte.work: could not connect to host nomorebytes.de: could not connect to host noodlesandwich.com: did not receive HSTS header nootropicsource.com: did not receive HSTS header +nopaste.xyz: did not receive HSTS header nope.website: could not connect to host 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 nordiccasinocommunity.com: did not receive HSTS header nordlicht.photography: did not receive HSTS header norge.guide: could not connect to host @@ -8202,16 +8209,17 @@ omacostudio.com: could not connect to ho omgaanmetidealen.com: could not connect to host ominto.com: did not receive HSTS header ommahpost.com: did not receive HSTS header omniti.com: max-age too low: 1 omquote.gq: could not connect to host omskit.ru: did not receive HSTS header omyogarishikesh.com: did not receive HSTS header on-te.ch: did not receive HSTS header +ona.io: did not receive HSTS header one-pe.com: did not receive HSTS header onearth.one: did not receive HSTS header oneb4nk.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 onehourloan.sg: did not receive HSTS header @@ -8256,35 +8264,35 @@ onyxwall.link: could not connect to host onyxwall.net: could not connect to host oo.edu.rs: did not receive HSTS header ookjesprookje.nl: could not connect to host ooonja.de: did not receive HSTS header ooooush.co.uk: could not connect to host oopsmycase.com: could not connect to host oopsorup.com: could not connect to host oost.io: could not connect to host +opcaobolsas.com.br: did not receive HSTS header open-mx.de: could not connect to host -open-source.gr: did not receive HSTS header open-to-repair.fr: max-age too low: 86400 openas.org: could not connect to host openconcept.no: did not receive HSTS header opendesk.cc: did not receive HSTS header opengateway.fr: did not receive HSTS header openmind-shop.de: did not receive HSTS header openmtbmap.org: did not receive HSTS header openpriv.pw: could not connect to host openprovider.nl: did not receive HSTS header openshift.redhat.com: did not receive HSTS header opensourcedmind.eu: max-age too low: 172800 opensourcehouse.net: could not connect to host openspace.xxx: did not receive HSTS header opensrd.com: could not connect to host openssf.org: did not receive HSTS header -openwifi.gr: did not receive HSTS header openxmpp.com: could not connect to host +opiates.net: did not receive HSTS header opim.ca: did not receive HSTS header opperwall.net: could not connect to host opportunitycorps.org: max-age too low: 43200 opsafewinter.net: could not connect to host opsbears.com: did not receive HSTS header opstacks.com: did not receive HSTS header optenhoefel.de: could not connect to host optimal-e.com: did not receive HSTS header @@ -8433,16 +8441,17 @@ pastdream.xyz: 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: did not receive HSTS header pataua.kiwi: did not receive HSTS header paternitydnatest.com: could not connect to host patfs.com: did not receive HSTS header patientinsight.net: did not receive HSTS header +patrick.dark.name: did not receive HSTS header patt.us: did not receive HSTS header patterson.mp: could not connect to host paul-kerebel.pro: could not connect to host paulbunyanmls.com: did not receive HSTS header paulerhof.com: did not receive HSTS header paulproell.at: did not receive HSTS header paulyang.cn: did not receive HSTS header pavelfojt.cz: did not receive HSTS header @@ -8515,16 +8524,17 @@ personaldatabasen.no: could not connect personalinjurylist.com: could not connect to host personalizedtouch.co: could not connect to host perthdevicelab.com: did not receive HSTS header pestalozzishop.com.br: could not connect to host pet-nsk.ru: could not connect to host petbooking.it: did not receive HSTS header petchart.net: could not connect to host peterkshultz.com: did not receive HSTS header +peternagy.ie: did not receive HSTS header petersmark.com: did not receive HSTS header pethub.com: did not receive HSTS header petit.site: could not connect to host petplum.com: could not connect to host petravdbos.nl: did not receive HSTS header petrkrapek.cz: did not receive HSTS header petrolplus.ru: max-age too low: 7776000 petrovsky.pro: could not connect to host @@ -8641,16 +8651,17 @@ plus-digital.net: did not receive HSTS h plus-u.com.au: did not receive HSTS header plut.org: did not receive HSTS header plymouthsoftplay.co.uk: could not connect to host pm.me: did not receive HSTS header pm13-media.cz: could not connect to host pmac.pt: could not connect to host pmemanager.fr: did not receive HSTS header pmnts.io: could not connect to host +pneusgppremium.com.br: did not receive HSTS header pnukee.com: did not receive HSTS header po.gl: did not receive HSTS header pocakdrops.com: did not receive HSTS header pocketsix.com: could not connect to host pocloud.homelinux.net: could not connect to host podiumsdiskussion.org: did not receive HSTS header poiema.com.sg: did not receive HSTS header poinsot.beer: could not connect to host @@ -8739,16 +8750,17 @@ prettyphotoart.de: did not receive HSTS pretzlaff.info: did not receive HSTS header preworkout.me: could not connect to host prgslab.net: could not connect to host pridoc.se: did not receive HSTS header prilock.com: did not receive HSTS header primecaplending.com: could not connect to host primotiles.co.uk: did not receive HSTS header prinbanat.ngo: did not receive HSTS header +princesparktouch.com: did not receive HSTS header printerest.io: could not connect to host printersonline.be: did not receive HSTS header printery.be: could not connect to host priolkar.com: did not receive HSTS header privacylabs.io: did not receive HSTS header privacyrup.net: could not connect to host privytime.com: could not connect to host prnt.li: did not receive HSTS header @@ -8849,16 +8861,17 @@ pzgreni.ch: did not receive HSTS header pzme.me: could not connect to host q-rickroll-u.pw: could not connect to host q2.si: did not receive HSTS header q8mp3.me: did not receive HSTS header qbik.de: did not receive HSTS header qbnt.ca: could not connect to host qccqld.org.au: could not connect to host qiannews.net: could not connect to host +qimiao.io: did not receive HSTS header qingxuan.info: could not connect to host qinxi1992.com: could not connect to host qionglu.pw: did not receive HSTS header qipp.com: did not receive HSTS header qixxit.de: did not receive HSTS header qldconservation.org: could not connect to host qonqa.de: did not receive HSTS header qop.io: could not connect to host @@ -9033,42 +9046,39 @@ remedioskaseros.com: did not receive HST remedium.de: did not receive HSTS header rememberthis.co.za: could not connect to host remitatm.com: did not receive HSTS header remodela.com.ve: could not connect to host remonttitekniikka.fi: could not connect to host remoteham.com: could not connect to host remotestance.com: did not receive HSTS header rencaijia.com: did not receive HSTS header -renem.net: did not receive HSTS header rengarenkblog.com: could not connect to host renideo.fr: could not connect to host renkhosting.com: could not connect to host renlong.org: did not receive HSTS header renrenss.com: could not connect to host renscreations.com: did not receive HSTS header rentacarcluj.xyz: could not connect to host rentbrowsertrain.me: could not connect to host rentcarassist.com: could not connect to host renteater.com: could not connect to host rentex.com: did not receive HSTS header -renuo.ch: did not receive HSTS header renyiyou.com: could not connect to host repex.co.il: did not receive HSTS header replacemychina.com: could not connect to host report-to.com: did not receive HSTS header report-to.io: did not receive HSTS header report-uri.io: did not receive HSTS header report-url.com: did not receive HSTS header report-url.io: did not receive HSTS header reported.ly: did not receive HSTS header reporturl.com: did not receive HSTS header reporturl.io: did not receive HSTS header reprolife.co.uk: could not connect to host -republic.gr: did not receive HSTS header res-rheingau.de: did not receive HSTS header res42.com: did not receive HSTS header reserve-online.net: did not receive HSTS header residentsinsurance.co.uk: did not receive HSTS header resl20.servehttp.com: could not connect to host respice.xyz: could not connect to host restaurace-klokocka.cz: did not receive HSTS header restchart.com: did not receive HSTS header @@ -9076,16 +9086,17 @@ returnofwar.com: could not connect to ho revapost.ch: could not connect to host revealdata.com: did not receive HSTS header revelaciones.tv: could not connect to host revello.org: did not receive HSTS header reverie.pw: could not connect to host review.info: did not receive HSTS header reviewbestseller.com: did not receive HSTS header reviewjust.com: did not receive HSTS header +revistapequenosolhares.com.br: did not receive HSTS header revtut.net: could not connect to host rewardstock.com: max-age too low: 0 rewopit.net: 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 rhodosdreef.nl: could not connect to host riaucybersolution.net: did not receive HSTS header @@ -9139,17 +9150,16 @@ rocketnet.ml: could not connect to host rockeyscrivo.com: did not receive HSTS header rocksberg.net: could not connect to host rockz.io: did not receive HSTS header rodney.id.au: did not receive HSTS header rodneybrooksjr.com: did not receive HSTS header rodosto.com: did not receive HSTS header roeper.party: could not connect to host roesemann.email: could not connect to host -roffe.nu: did not receive HSTS header roguelikecenter.fr: did not receive HSTS header rohlik.cz: did not receive HSTS header roketix.co.uk: could not connect to host rolandreed.cn: did not receive HSTS header rolandslate.com: did not receive HSTS header rolemaster.net: could not connect to host rolroer.co.za: could not connect to host romaimperator.com: did not receive HSTS header @@ -9201,16 +9211,17 @@ rubyshop.nl: max-age too low: 604800 rudeotter.com: did not receive HSTS header rue-de-la-vieille.fr: max-age too low: 0 ruflay.ru: did not receive HSTS header rugirlfriend.com: could not connect to host rugs.ca: did not receive HSTS header rugstorene.co.uk: did not receive HSTS header ruig.jp: could not connect to host ruitershoponline.nl: did not receive HSTS header +rumlager.de: max-age too low: 600000 rumoterra.com.br: could not connect to host runawebinar.nl: could not connect to host runhardt.eu: did not receive HSTS header runtl.com: did not receive HSTS header runtondev.com: did not receive HSTS header ruqu.nl: could not connect to host rusadmin.biz: did not receive HSTS header ruska-modra.cz: did not receive HSTS header @@ -9239,17 +9250,17 @@ safetyrisk.net: did not receive HSTS hea safewings-nh.nl: could not connect to host safing.me: did not receive HSTS header sagarhandicraft.com: could not connect to host sageth.com: could not connect to host sah3.net: could not connect to host saharalondon.com: max-age too low: 0 saigonstar.de: did not receive HSTS header sail-nyc.com: did not receive HSTS header -saint-astier-triathlon.com: did not receive HSTS header +saint-astier-triathlon.com: could not connect to host saintjohnlutheran.church: did not receive HSTS header sairai.bid: could not connect to host sakaserver.com: did not receive HSTS header sakib.ninja: did not receive HSTS header sakurabuff.com: could not connect to host saleslift.pl: did not receive HSTS header salserocafe.com: did not receive HSTS header salserototal.com: could not connect to host @@ -9361,17 +9372,16 @@ scrapings.net: could not connect to host screencaster.io: did not receive HSTS header screenresolution.space: could not connect to host screensaversplanet.com: did not receive HSTS header scribbleserver.com: could not connect to host scribe.systems: could not connect to host scrion.com: could not connect to host scriptenforcer.net: did not receive HSTS header scriptict.nl: could not connect to host -scriptum.gr: did not receive HSTS header scrollstory.com: did not receive HSTS header sdhmanagementgroup.com: could not connect to host sdia.ru: could not connect to host sdmoscow.ru: could not connect to host sdrobs.com: did not receive HSTS header sdsl-speedtest.de: could not connect to host se7ensins.com: did not receive HSTS header seans.cc: did not receive HSTS header @@ -9409,17 +9419,16 @@ securita.eu: did not receive HSTS header security-carpet.com: could not connect to host security-thoughts.org: could not connect to host securityarena.com: could not connect to host securitybsides.pl: did not receive HSTS header securityglance.com: could not connect to host securityinet.biz: did not receive HSTS header securityinet.net: did not receive HSTS header securityinet.org.il: could not connect to host -securityprimes.in: did not receive HSTS header securiviera.ch: did not receive HSTS header sedoexpert.nl: could not connect to host sedoexperts.nl: could not connect to host sedrubal.de: could not connect to host sedziapilkarski.pl: did not receive HSTS header seedboxers.net: could not connect to host seefunk.net: did not receive HSTS header seele.ca: could not connect to host @@ -9494,18 +9503,18 @@ shadowmorph.info: did not receive HSTS h shadowroket.com: did not receive HSTS header shadowshocks.net: could not connect to host shadowsocks.gift: did not receive HSTS header shadowsocks.net: could not connect to host shadowsocks.vc: could not connect to host shadowsocks.wiki: did not receive HSTS header shadowsocksvpn.com: did not receive HSTS header shadowsoks.com: could not connect to host -shadowsu.info: could not connect to host -shadowsu.top: could not connect to host +shadowsu.info: did not receive HSTS header +shadowsu.top: did not receive HSTS header shagi29.ru: did not receive HSTS header shahbeat.com: did not receive HSTS header shakebox.de: could not connect to host shanesage.com: could not connect to host shapesedinburgh.co.uk: did not receive HSTS header shardsoft.com: could not connect to host shareeri.com: did not receive HSTS header shareimg.xyz: could not connect to host @@ -9695,16 +9704,17 @@ smexpt.com: did not receive HSTS header smileawei.com: did not receive HSTS header smimea.com: could not connect to host smirkingwhorefromhighgarden.pro: could not connect to host smittix.co.uk: did not receive HSTS header smkn1lengkong.sch.id: did not receive HSTS header smksi2.com: could not connect to host smksultanismail2.com: could not connect to host smkw.com: did not receive HSTS header +smm.im: did not receive HSTS header smol.cat: did not receive HSTS header smove.sg: did not receive HSTS header smplix.com: could not connect to host smspodmena.ru: did not receive HSTS header smtp.bz: did not receive HSTS header smusg.com: did not receive HSTS header smzsq.com: could not connect to host snailing.org: could not connect to host @@ -9720,16 +9730,17 @@ snoozedds.com: max-age too low: 600 snoqualmiefiber.org: could not connect to host sobabox.ru: could not connect to host sobinski.pl: did not receive HSTS header soccergif.com: could not connect to host social-journey.com: could not connect to host socialbillboard.com: could not connect to host socialcs.xyz: could not connect to host socialgrowing.cl: did not receive HSTS header +socialhams.net: did not receive HSTS header socialhead.io: could not connect to host socialhub.com: did not receive HSTS header socializam.com: did not receive HSTS header socialprize.com: could not connect to host socialspirit.com.br: did not receive HSTS header sockeye.cc: could not connect to host socomponents.co.uk: could not connect to host sodacore.com: could not connect to host @@ -9828,17 +9839,16 @@ sportchirp-internal.azurewebsites.net: d sporthit.ru: did not receive HSTS header sportifik.com: did not receive HSTS header sportingoods.com.br: could not connect to host sportscollection.com.br: could not connect to host sportwette.eu: did not receive HSTS header spot-events.com: could not connect to host spotifyripper.tk: could not connect to host spotlightsrule.ddns.net: could not connect to host -spr.id.au: did not receive HSTS header spresso.me: did not receive HSTS header sprint.ml: did not receive HSTS header sprk.fitness: did not receive HSTS header sproutconnections.com: could not connect to host sprutech.de: could not connect to host sqetsa.com: did not receive HSTS header squaddraft.com: did not receive HSTS header square.gs: could not connect to host @@ -9983,17 +9993,16 @@ suian.or.jp: max-age too low: 86400 suite73.org: could not connect to host summitbankofkc.com: did not receive HSTS header summitmasters.net: did not receive HSTS header sumoatm.com: did not receive HSTS header sumoscout.de: could not connect to host sun-wellness-online.com.vn: did not receive HSTS header suncountrymarine.com: did not receive HSTS header sundaycooks.com: max-age too low: 2592000 -sunflyer.cn: did not receive HSTS header sunlandsg.vn: did not receive HSTS header sunnyfruit.ru: could not connect to host sunshinepress.org: could not connect to host sunyanzi.tk: could not connect to host suos.io: could not connect to host supcro.com: could not connect to host super-erotica.ru: could not connect to host super-garciniaslim.com: could not connect to host @@ -10018,31 +10027,30 @@ superwally.org: could not connect to hos supes.io: did not receive HSTS header support4server.de: did not receive HSTS header suprlink.net: could not connect to host supweb.ovh: did not receive HSTS header surasak.xyz: could not connect to host surfeasy.com: did not receive HSTS header surfone-leucate.com: did not receive HSTS header survivalistplanet.com: could not connect to host -sussexwebdesigns.com: did not receive HSTS header +sussexwebdesigns.com: could not connect to host sussexwebdesigns.info: did not receive HSTS header sussexwebsites.info: did not receive HSTS header sustainability.gov: did not receive HSTS header suzukikenichi.com: did not receive HSTS header svadobkajuvi.sk: did not receive HSTS header svatba-frantovi.cz: could not connect to host svenluijten.com: did not receive HSTS header svenskacasino.com: did not receive HSTS header svenskaservern.se: could not connect to host svetjakonadlani.cz: did not receive HSTS header swaleacademiestrust.org.uk: max-age too low: 2592000 swanseapartyhire.co.uk: did not receive HSTS header swdatlantico.pt: could not connect to host -sweets-mimatsu.com: did not receive HSTS header sweetstreats.ca: could not connect to host swiftconf.com: did not receive HSTS header swiggy.com: did not receive HSTS header swimming.ca: did not receive HSTS header swisstranslate.ch: did not receive HSTS header swisstranslate.fr: did not receive HSTS header swite.com: did not receive HSTS header swmd5c.org: could not connect to host @@ -10128,16 +10136,17 @@ tasta.ro: did not receive HSTS header tastyyy.co: could not connect to host tatilbus.com: did not receive HSTS header tatt.io: could not connect to host tattvaayoga.com: did not receive HSTS header tauchkater.de: could not connect to host tavoittaja.fi: did not receive HSTS header tavopica.lt: did not receive HSTS header taxbench.com: could not connect to host +taxi-24std.de: did not receive HSTS header taxsnaps.co.nz: did not receive HSTS header tazj.in: did not receive HSTS header tazz.in: could not connect to host tbspace.de: did not receive HSTS header tc-bonito.de: did not receive HSTS header tcao.info: could not connect to host tcby45.xyz: could not connect to host tcdw.net: did not receive HSTS header @@ -10369,17 +10378,16 @@ thomasnet.fr: could not connect to host 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: did not receive HSTS header throughthelookingglasslens.co.uk: could not connect to host thumbtack.com: did not receive HSTS header thundercampaign.com: could not connect to host thyrex.fr: did not receive HSTS header -thzone.net: did not receive HSTS header ti.blog.br: could not connect to host tianxing.pro: did not receive HSTS header tianxingvpn.pro: could not connect to host ticketoplichting.nl: did not receive HSTS header tickopa.co.uk: could not connect to host tickreport.com: did not receive HSTS header ticktock.today: did not receive HSTS header tictactux.de: could not connect to host @@ -10455,17 +10463,16 @@ tobias-bielefeld.de: did not receive HST tobiasmathes.com: could not connect to host tobiasmathes.name: could not connect to host tobiasofficial.at: could not connect to host tobiassachs.cf: could not connect to host tobiassachs.tk: could not connect to host todesschaf.org: could not connect to host todo.is: did not receive HSTS header todobazar.es: could not connect to host -todoscomciro.com: did not receive HSTS header tofu.im: could not connect to host togelonlinecommunity.com: did not receive HSTS header toka.sg: did not receive HSTS header tokenloan.com: could not connect to host tokobungaasryflorist.com: did not receive HSTS header tokobungadipadangflorist.com: did not receive HSTS header tokoone.com: did not receive HSTS header tokotamz.net: could not connect to host @@ -10553,16 +10560,17 @@ tranceheal.me: did not receive HSTS head tranos.de: did not receive HSTS header transcriptionwave.com: did not receive HSTS header transdirect.com.au: did not receive HSTS header transformify.org: did not receive HSTS header transl8.eu: did not receive HSTS header transportal.sk: did not receive HSTS header traumhuetten.de: did not receive HSTS header travality.ru: could not connect to host +travel-dealz.de: did not receive HSTS header travel-kuban.ru: did not receive HSTS header travelinsightswriter.com: could not connect to host travelinsurance.co.nz: did not receive HSTS header trazosdearte.com: did not receive HSTS header treatprostatewithhifu.com: could not connect to host treeby.net: could not connect to host treeremovaljohannesburg.co.za: could not connect to host treino.blog.br: could not connect to host @@ -10853,27 +10861,28 @@ vasanth.org: could not connect to host vbest.net: could not connect to host vbhelp.org: did not receive HSTS header vbulletin-russia.com: could not connect to host vbulletinrussia.com: could not connect to host vcdove.com: could not connect to host vcr.re: could not connect to host vdhco.be: did not receive HSTS header veblen.com: did not receive HSTS header -vechkasov.ru: did not receive HSTS header +vechkasov.ru: could not connect to host vedatkamer.com: did not receive HSTS header vega-motor.com.ua: did not receive HSTS header vega.dyndns.info: could not connect to host vegalengd.com: did not receive HSTS header veganosonline.com: could not connect to host veggiefasting.com: could not connect to host veggiesbourg.fr: did not receive HSTS header vegis.ro: did not receive HSTS header vehent.org: did not receive HSTS header vehicleuplift.co.uk: did not receive HSTS header +velotyretz.fr: did not receive HSTS header vemokin.net: could not connect to host venixplays-stream.ml: could not connect to host venmos.com: could not connect to host vennet.fr: max-age too low: 0 venninvestorplatform.com: did not receive HSTS header venoom.eu: did not receive HSTS header venturepro.com: did not receive HSTS header ventzke.com: did not receive HSTS header @@ -10902,21 +10911,21 @@ vicianovi.cz: could not connect to host victorenxovais.com.br: could not connect to host victoriapemberton.com: did not receive HSTS header vid.me: did not receive HSTS header vidbuchanan.co.uk: did not receive HSTS header viddiaz.com: did not receive HSTS header videnskabsklubben.dk: did not receive HSTS header videomail.io: did not receive HSTS header videomuz.com: could not connect to host -videotogel.net: did not receive HSTS header +videotogel.net: could not connect to host videoueberwachung-set.de: did not receive HSTS header vider.ga: could not connect to host vidid.net: did not receive HSTS header -vidiproject.com: could not connect to host +vidiproject.com: did not receive HSTS header vidz.ga: could not connect to host vietnamchevrolet.net: did not receive HSTS header vietnamphotographytours.com: could not connect to host vigilo.cf: could not connect to host vigilo.ga: could not connect to host vijos.org: did not receive HSTS header viktor-machnik.de: could not connect to host viktorsvantesson.net: did not receive HSTS header @@ -11060,30 +11069,31 @@ warsh.moe: did not receive HSTS header warumsuchen.at: did not receive HSTS header wasatchcrest.com: did not receive HSTS header wasi-net.de: did not receive HSTS header watchium.com: did not receive HSTS header waterforlife.net.au: did not receive HSTS header waterpoint.com.br: could not connect to host watersportmarkt.net: did not receive HSTS header watsonhall.uk: could not connect to host +wattechweb.com: did not receive HSTS header wavefloatrooms.com: did not receive HSTS header wavefrontsystemstech.com: could not connect to host waylee.net: did not receive HSTS header wbit.co.il: did not receive HSTS header wear2work.nl: did not receive HSTS header wearedisneyland.com: did not receive HSTS header weaverhairextensions.nl: could not connect to host web-industry.fr: could not connect to host web-insider.net: did not receive HSTS header web-vision.de: did not receive HSTS header web4all.fr: did not receive HSTS header web4pro.fr: could not connect to host webandwords.com.au: could not connect to host -webanker.sh: could not connect to host +webanker.sh: did not receive HSTS header webapps.directory: could not connect to host webassadors.com: could not connect to host webbx.se: max-age too low: 2592000 webchat.domains: did not receive HSTS header webdeflect.com: did not receive HSTS header webdesign-kronberg.de: did not receive HSTS header webdesignssussex.co.uk: did not receive HSTS header webdev.mobi: could not connect to host @@ -11192,16 +11202,17 @@ wikisports.eu: could not connect to host wildbee.org: could not connect to host wilddog.com: did not receive HSTS header wilf1rst.com: could not connect to host willcipriano.com: could not connect to host willemsjort.be: did not receive HSTS header william.si: did not receive HSTS header williamsapiens.com: could not connect to host willosagiede.com: did not receive HSTS header +willywangstory.org: did not receive HSTS header winaes.com: did not receive HSTS header winclient.cn: could not connect to host windowsforum.com: max-age too low: 0 winds.cf: could not connect to host winecodeavocado.com: could not connect to host winfield.me.uk: did not receive HSTS header winged.io: could not connect to host wingos.net: could not connect to host @@ -11283,17 +11294,17 @@ wrwg.ca: could not connect to host wscbiolo.id: did not receive HSTS header wsor.group: did not receive HSTS header wsscompany.com.ve: could not connect to host wsup.social: could not connect to host wubocong.com: could not connect to host wubthecaptain.eu: could not connect to host wuetix.de: max-age too low: 0 wuhengmin.com: could not connect to host -wulpi.it: could not connect to host +wulpi.it: did not receive HSTS header wundtherapie-schulung.de: could not connect to host wurzelzwerg.net: could not connect to host wusx.club: could not connect to host wvr-law.de: did not receive HSTS header ww2onlineshop.com: did not receive HSTS header www-001133.com: could not connect to host www-0385.com: could not connect to host www-1116.com: did not receive HSTS header @@ -11301,17 +11312,17 @@ www-1117.com: could not connect to host www-39988.com: did not receive HSTS header www-507.net: could not connect to host www-746.com: could not connect to host www-771122.com: did not receive HSTS header www-8003.com: did not receive HSTS header www-88599.com: did not receive HSTS header www-9995.com: did not receive HSTS header www-djbet.com: did not receive HSTS header -www-jinshavip.com: could not connect to host +www-jinshavip.com: did not receive HSTS header www.cueup.com: could not connect to host www.cyveillance.com: did not receive HSTS header www.developer.mydigipass.com: could not connect to host www.elanex.biz: did not receive HSTS header www.gamesdepartment.co.uk: did not receive HSTS header www.gpo.gov: did not receive HSTS header www.greplin.com: could not connect to host www.jitsi.org: did not receive HSTS header @@ -11405,16 +11416,17 @@ xn--lgb3a8bcpn.ml: could not connect to xn--lnakuten-9za.com: did not receive HSTS header xn--ls8hi7a.tk: could not connect to host xn--milchaufschumer-test-lzb.de: could not connect to host xn--n8jubz39q0g0afpa985c.com: could not connect to host xn--neb-tma3u8u.xyz: could not connect to host xn--p8jskj.jp: did not receive HSTS header xn--pck4e3a2ex597b4ml.xyz: did not receive HSTS header xn--qckqc0nxbyc4cdb4527err7c.biz: did not receive HSTS header +xn--t8j4aa4nyhxa7duezbl49aqg5546e264d.net: did not receive HSTS header xn--u9jy16ncfao19mo8i.nagoya: did not receive HSTS header xn--uist1idrju3i.jp: did not receive HSTS header xn--w22a.jp: did not receive HSTS header xn--wmq.jp: did not receive HSTS header xn--xdtx3pfzbiw3ar8e7yedqrhui.com: could not connect to host xn--y8j5gq14rbdd.net: did not receive HSTS header xn--yoamomisuasbcn-ynb.com: could not connect to host xn--zck9a4b352yuua.jp: did not receive HSTS header @@ -11499,16 +11511,17 @@ youfencun.com: did not receive HSTS head youlog.net: could not connect to host youngandunited.nl: did not receive HSTS header youon.tokyo: could not connect to host yourbapp.ch: could not connect to host yourcomputer.expert: did not receive HSTS header yourgame.co.il: did not receive HSTS header yoursecondphone.co: could not connect to host yourstrongbox.com: could not connect to host +youtubeviews.ml: did not receive HSTS header youyoulemon.com: could not connect to host ytcuber.xyz: could not connect to host ytvwld.de: did not receive HSTS header yu.vc: max-age too low: 2592000 yu7.jp: did not receive HSTS header yudan.com.br: could not connect to host yufan.me: did not receive HSTS header yuhen.ru: did not receive HSTS header @@ -11556,17 +11569,17 @@ zehntner.ch: max-age too low: 3600 zelfmoord.ga: could not connect to host zelfstandigemakelaars.net: could not connect to host zenhaiku.com: did not receive HSTS header zenpayroll.com: did not receive HSTS header zentience.dk: did not receive HSTS header zentience.net: did not receive HSTS header zentience.org: could not connect to host zentraler-kreditausschuss.de: did not receive HSTS header -zentralwolke.de: did not receive HSTS header +zentralwolke.de: could not connect to host zenwears.com: could not connect to host zera.com.au: could not connect to host zerekin.net: did not receive HSTS header zeroday.sk: did not receive HSTS header zerofox.gq: could not connect to host zeroml.ml: could not connect to host zerudi.com: did not receive HSTS header zeto365.pl: did not receive HSTS header @@ -11617,16 +11630,17 @@ zoners.si: did not receive HSTS header zonky.io: could not connect to host zoo24.de: did not receive HSTS header zoofaeth.de: did not receive HSTS header zoomingin.net: max-age too low: 5184000 zoommailing.com: did not receive HSTS header zoorigin.com: did not receive HSTS header zorasvobodova.cz: did not receive HSTS header zortium.report: could not connect to host +zotero.org: did not receive HSTS header zoznamrealit.sk: did not receive HSTS header zqhong.com: could not connect to host zqjs.tk: could not connect to host ztan.tk: could not connect to host ztcaoll222.cn: did not receive HSTS header ztytian.com: could not connect to host zubel.it: did not receive HSTS header zuckerfloh.de: did not receive HSTS header @@ -11637,8 +11651,9 @@ zwollemagazine.nl: did not receive HSTS zyf.pw: could not connect to host zymbit.com: did not receive HSTS header zync.ca: did not receive HSTS header zypgr.com: could not connect to host zyso.org: could not connect to host zzb510.com: could not connect to host zzb6688.com: could not connect to host zzb8899.com: could not connect to host +zzpd.nl: did not receive HSTS header
--- a/security/manager/ssl/nsSTSPreloadList.inc +++ b/security/manager/ssl/nsSTSPreloadList.inc @@ -3,17 +3,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /*****************************************************************************/ /* This is an automatically generated file. If you're not */ /* nsSiteSecurityService.cpp, you shouldn't be #including it. */ /*****************************************************************************/ #include <stdint.h> -const PRTime gPreloadListExpirationTime = INT64_C(1530820751850000); +const PRTime gPreloadListExpirationTime = INT64_C(1530910464714000); %% 0-1.party, 1 0.me.uk, 1 0005pay.com, 1 00100010.net, 1 0010100.net, 1 00120012.net, 1 00130013.net, 1 @@ -485,17 +485,16 @@ 5364c.com, 1 53ningen.com, 1 5432.cc, 1 546802.com, 1 54below.com, 1 5533445.com, 1 555xl.com, 1 558da.com, 1 55scc.com, 1 -57aromas.com, 1 57he.com, 1 598598598.net, 1 5apps.com, 1 5c1fd0f31022cbc40af9f785847baaf9.space, 1 5chat.it, 1 5crowd.com, 1 5ece.de, 1 5francs.com, 1 @@ -1548,17 +1547,16 @@ allemobieleproviders.nl, 1 allenosgood.com, 1 allenscaravans.co.uk, 1 allensun.org, 1 allerbestefreunde.de, 1 allesisonline.nl, 1 alleskomtgoed.org, 1 allesrocknroll.de, 1 allforyou.at, 1 -allfreelancers.su, 1 allgrass.net, 1 allgreenturf.com.au, 1 alliances-faq.de, 1 alliances-globalsolutions.com, 1 alliedfrozenstorage.com, 1 allinagency.com, 1 allincoin.shop, 1 allinone-ranking150.com, 1 @@ -2032,16 +2030,17 @@ annotate.software, 1 annoyingasfuk.com, 1 annrusnak.com, 1 annsbouncycastles.com, 1 annuaire-jcb.com, 1 annuaire-photographe.fr, 0 anohana.org, 1 anojan.com, 1 anon-next.de, 1 +anonboards.com, 1 anoncom.net, 1 anoneko.com, 1 anongoth.pl, 1 anonrea.ch, 1 anons.fr, 1 anonukradio.org, 1 anonym-surfen.de, 1 anonyme-spieler.at, 1 @@ -2182,22 +2181,22 @@ apination.com, 1 apio.systems, 1 apis.blue, 1 apis.google.com, 1 apis.moe, 1 apisyouwonthate.com, 1 apk.li, 1 apk4fun.com, 1 apkoyunlar.club, 1 -apkriver.com, 1 apl2bits.net, 1 aplikaceproandroid.cz, 1 aplis-online.de, 0 aplpackaging.co.uk, 1 aplu.fr, 1 +apm.com.tw, 1 apmpproject.org, 1 apn-dz.org, 1 apn-einstellungen.de, 1 apoil.org, 1 apollyon.work, 1 apoly.de, 1 aporia.io, 1 aposke.com, 1 @@ -2903,30 +2902,33 @@ avi9526.pp.ua, 1 avia-krasnoyarsk.ru, 1 avia-ufa.ru, 1 aviapoisk.kz, 1 aviationstrategy.aero, 1 avid.blue, 1 avietech.com, 1 aviv.nyc, 1 avmemo.com, 1 +avmo.pw, 1 avmoo.com, 1 avnet.ws, 1 avocode.com, 1 avonlearningcampus.com, 1 avotoma.com, 1 avova.de, 1 avpres.net, 1 +avso.pw, 1 avsox.com, 1 avspot.net, 1 avticket.ru, 0 avtoforex.ru, 1 avtogara-isperih.com, 1 avtovokzaly.ru, 1 avvcorda.com, 1 +avxo.pw, 1 awan.tech, 1 awaremi-tai.com, 1 awaro.net, 1 awbouncycastlehire.com, 1 awccanadianpharmacy.com, 1 awei.pub, 1 awen.me, 1 awesomebouncycastles.co.uk, 1 @@ -3031,17 +3033,16 @@ b5989.com, 1 b5989.net, 1 b61688.com, 1 b64.club, 1 b72.net, 1 b8591.com, 1 b8591.net, 1 b8979.com, 1 b8979.net, 1 -b8a.me, 1 b9018.com, 1 b9018.net, 1 b9108.com, 1 b9108.net, 1 b9110.com, 1 b9110.net, 1 b9112.com, 1 b9112.net, 1 @@ -4398,16 +4399,17 @@ bloggingwithchildren.com, 1 bloggytalky.com, 1 bloginbeeld.nl, 1 blogom.at, 1 blogpentrusuflet.ro, 1 blogreen.org, 1 blogtroterzy.pl, 1 bloodsports.org, 1 bloodyexcellent.com, 1 +bloom-avenue.com, 1 bltc.co.uk, 1 bltc.com, 1 bltc.net, 1 bltc.org, 1 bltc.org.uk, 1 blubberladen.de, 1 bludnykoren.ml, 1 blue-leaf81.net, 1 @@ -4938,17 +4940,16 @@ brejoc.com, 1 bremen-restaurants.de, 1 bremensaki.com, 1 bremerfriedensforum.de, 1 brendanscherer.com, 1 brentacampbell.com, 1 brentnewbury.com, 1 bressier.fr, 1 bretcarmichael.com, 1 -brettabel.com, 1 brettcornwall.com, 1 brettelliff.com, 1 bretz-hufer.de, 1 bretzner.fr, 1 brevboxar.se, 1 brewsouth.com, 1 brewtrackr.com, 1 brfvh24.se, 1 @@ -5090,16 +5091,17 @@ bt123.xyz, 1 bta.lv, 0 btc2secure.com, 1 btcarmory.com, 1 btcgo.nl, 1 btcontract.com, 1 btcp.space, 1 btcpop.co, 1 btcycle.org, 1 +btio.pw, 1 btku.org, 1 btmstore.com.br, 1 btnissanparts.com, 1 btorrent.xyz, 1 btrb.ml, 1 btserv.de, 1 btsoft.eu, 1 btsow.com, 1 @@ -5227,17 +5229,16 @@ burtrum.org, 1 buryit.net, 1 burzmali.com, 1 buserror.cn, 1 bushbaby.com, 1 bushcraftfriends.com, 1 busindre.com, 1 business-garden.com, 1 business.facebook.com, 0 -businessadviceperth.com.au, 1 businessamongus.com, 1 businesscentermarin.ch, 1 businessesdirectory.eu, 1 businessetmarketing.com, 1 businessfactors.de, 1 businessfurs.info, 1 businesshub.cz, 0 businessimmigration-eu.com, 1 @@ -5769,17 +5770,16 @@ cat-blum.com, 1 cat-box.de, 1 cat.net, 1 catalog.beer, 1 catalogoreina.com, 1 catalyst-ecommerce.com, 0 catbold.space, 1 catbull.com, 1 catburton.co.uk, 1 -catchers.cc, 1 catchersgear.com, 1 catchfotografie.nl, 1 catchief.com, 1 catcontent.cloud, 1 catdecor.ru, 1 catenacondos.com, 1 catfooddispensersreviews.com, 1 catgirl.me, 1 @@ -6479,17 +6479,17 @@ circulatedigital.com, 1 cirfi.com, 1 ciri.com.co, 1 cirope.com, 1 cirrus0.de, 1 cirugiasplasticas.com.mx, 1 cirujanooral.com, 1 cirurgicagervasio.com.br, 1 cirurgicalucena.com.br, 1 -ciscodude.net, 1 +ciscodude.net, 0 cisoaid.com, 1 ciss.ltd, 1 cisy.me, 1 citationgurus.com, 1 citcuit.in, 1 citimarinestore.com, 1 citizen-cam.de, 1 citizensbankal.com, 1 @@ -7360,17 +7360,16 @@ countryhouseresort.com, 1 countryoutlaws.ca, 1 countybankdel.com, 1 countyjailinmatesearch.com, 1 coup-dun-soir.ch, 1 coupe-bordure.com, 1 couponcodesme.com, 1 cour4g3.me, 1 couragefound.org, 1 -courageousparentsnetwork.org, 1 course.pp.ua, 1 coursera.org, 1 courses.nl, 1 courseworkbank.info, 1 courtlistener.com, 1 couscous.recipes, 1 cousincouples.com, 1 covbounce.co.uk, 1 @@ -7464,16 +7463,17 @@ createursdefilms.com, 1 creatieven.com, 1 creation-contemporaine.com, 1 creations-edita.com, 1 creative-coder.de, 0 creative-wave.fr, 1 creativebites.de, 1 creativecaptiv.es, 1 creativecommons.cl, 1 +creativecommons.gr, 1 creativecommons.org, 1 creativecommonscatpictures.com, 1 creativeconceptsvernon.com, 1 creativedigital.co.nz, 1 creativefolks.co.uk, 1 creativefreedom.ca, 1 creativeink.de, 1 creativekkids.com, 1 @@ -7772,17 +7772,16 @@ customgear.com.au, 1 customizeyourshower.com, 1 customizeyoursink.com, 1 custompapers.com, 1 customromlist.com, 1 customshort.link, 1 customwritings.com, 1 customwritingservice.com, 1 customwritten.com, 1 -cutelariafiveladeouro.com.br, 1 cutephil.com, 1 cutimbo.ovh, 1 cutner.co, 1 cuvva.co, 1 cuvva.co.uk, 1 cuvva.com, 1 cuvva.eu, 1 cuvva.io, 1 @@ -8275,26 +8274,26 @@ dbq.com, 1 dbrgn.ch, 1 dbtsai.com, 1 dbyz.co.uk, 1 dc-occasies.be, 1 dc562.org, 1 dc585.info, 1 dcards.in.th, 1 dcautomacao.com.br, 1 -dcbouncycastles.co.uk, 1 dcc.cat, 1 dcc.moe, 1 dcepler.net, 1 dchatelain.ch, 1 dchest.org, 1 dckd.nl, 1 dcl.re, 1 dclaisse.fr, 1 dcmt.co, 1 +dcpower.eu, 1 dcrdev.com, 1 dd.art.pl, 1 ddel.de, 1 dden.ca, 0 dden.website, 1 dden.xyz, 1 ddepot.us, 1 ddfreedish.site, 0 @@ -9657,17 +9656,16 @@ dusmomente.com, 1 dusnan.com, 1 dustplanet.de, 1 dustri.org, 1 dustycloth.com, 1 dustygroove.com, 1 dustyspokesbnb.ca, 1 dutch.desi, 1 dutch1.nl, 1 -dutchessuganda.com, 1 dutchrank.nl, 1 dutchwanderers.nl, 1 dutchweballiance.nl, 1 dutyfreeonboard.com, 1 dvbris.co.uk, 1 dvbris.com, 1 dvdland.com.au, 1 dvhosting.be, 1 @@ -9998,16 +9996,17 @@ edwardspeyer.com, 1 edwardwall.me, 1 edxg.de, 0 edxn.de, 1 edyou.eu, 1 edzilla.info, 1 ee-terminals.com, 1 eeb98.com, 1 eeetrust.org, 1 +eellak.gr, 1 eelsden.net, 1 eelzak.nl, 1 eeqj.com, 1 eer.io, 1 eerlijktransport.nl, 1 eerstejaarsweekend.nl, 1 eery.de, 1 eewna.org, 1 @@ -10100,17 +10099,16 @@ eirastudios.co.uk, 0 eisaev.ru, 1 eit-web.de, 0 eitler.cx, 1 eiyoushi-shigoto.com, 1 ejdv-anmeldung.de, 1 ejeff.org, 1 ejgconsultancy.co.uk, 1 ejuicelab.co.uk, 1 -ejusu.com, 1 ek-networks.de, 1 ek.network, 1 ekaigotenshoku.com, 1 ekati.ru, 1 ekb-avia.ru, 1 ekd.de, 1 ekedc.com, 1 ekedp.com, 1 @@ -12388,17 +12386,16 @@ freelancehunt.com, 1 freelanceshipping.com, 1 freelansir.com, 1 freelauri.com, 1 freelifer.jp, 1 freemanning.de, 1 freemans.com, 1 freemedforms.com, 1 freemyipod.org, 1 -freend.me, 0 freenetproject.org, 1 freeonplate.com, 1 freepnglogos.com, 1 freergform.org, 1 freeshell.de, 1 freeshkre.li, 1 freesitemapgenerator.com, 1 freeslots.guru, 1 @@ -13843,17 +13840,16 @@ gsmkungen.com, 1 gsmsecurity.net, 1 gsoc.se, 1 gsrc.io, 1 gst.name, 1 gst.priv.at, 1 gt-mp.net, 1 gt-network.de, 1 gta-arabs.com, 1 -gta5voice.net, 1 gtaforum.nl, 1 gtalife.net, 1 gtchipsi.org, 1 gtcprojects.com, 1 gtdgo.com, 1 gtlaun.ch, 1 gtmasterclub.it, 0 gtmetrix.com, 1 @@ -14860,16 +14856,17 @@ holytransaction.com, 1 holywhite.com, 1 holz.nu, 1 holzheizer-forum.de, 1 holzheizerforum.de, 1 holzschutz-holzbearbeitung.de, 1 holzspielzeug-shop.ch, 1 holzundgarten.de, 1 holzvergaser-forum.de, 1 +homa.website, 0 homatism.com, 1 home-cloud.online, 1 home-v.ind.in, 1 home-work-jobs.com, 1 homeautomated.com, 1 homebasedsalons.com.au, 1 homebodyalberta.com, 1 homecareassociatespa.com, 1 @@ -17090,16 +17087,17 @@ jonas-thelemann.de, 1 jonas-wenk.de, 1 jonaskjodt.com, 1 jonaswitmer.ch, 1 jonathan-apps.com, 1 jonathancarter.org, 1 jonathandowning.uk, 1 jonathandupree.com, 1 jonathanha.as, 1 +jonathanj.nl, 1 jonathanmassacand.ch, 1 jonathansanchez.pro, 1 jonathanschle.de, 1 jonathanwisdom.com, 1 jondevin.com, 1 jondowdle.com, 1 jonesborostatebank.com, 0 jonespayne.com, 1 @@ -17633,16 +17631,17 @@ kayscs.com, 1 kaysis.gov.tr, 1 kazamasion.com, 1 kazand.lt, 1 kazandaemon.ru, 1 kazu.click, 1 kazuhirohigashi.com, 1 kazumi.ro, 1 kazy111.info, 1 +kb3.net, 1 kba-online.de, 1 kbb-ev.de, 1 kbbouncycastlehire.co.uk, 1 kbcequitas.hu, 1 kbfl.org, 1 kbit.dk, 1 kbjorklu.com, 1 kbleventhire.co.uk, 1 @@ -17758,17 +17757,16 @@ kesslerwine.com, 1 kesteren.com, 1 kesteren.org, 1 ketamine.co.uk, 1 ketosecology.co.uk, 1 kettner.com, 1 ketty-voyance.com, 1 kevinapease.com, 1 kevinbowers.me, 1 -kevinbusse.de, 1 kevincox.ca, 0 kevindekoninck.com, 0 kevinfoley.cc, 1 kevinfoley.org, 1 kevinhill.nl, 1 kevinkla.es, 1 kevinlocke.name, 1 kevinmeijer.nl, 1 @@ -18603,17 +18601,16 @@ laled.ch, 1 laltroweb.it, 1 lalunecreative.com, 1 lalyre-corcelles.ch, 1 lamaisondelatransformationculturelle.com, 1 lamakat.de, 1 lamapoll.de, 1 lambauer.com, 1 lamboo.be, 1 -lamereabizix.com, 1 lamiaposta.email, 0 laminine.info, 1 lampegiganten.dk, 1 lampegiganten.no, 1 lampen24.be, 1 lampenwelt.at, 1 lampenwelt.ch, 1 lan2k.org, 1 @@ -20218,16 +20215,17 @@ mamafit.club, 1 mamanecesitaungintonic.com, 1 mamastore.eu, 1 mamiecouscous.com, 1 mammals.net, 1 mammaw.com, 1 mammeitalianeavienna.com, 1 mammooc.org, 1 mamochka.org.ua, 1 +mamospienas.lt, 1 mamot.fr, 0 mamout.xyz, 1 mamuko.nl, 1 man3s.jp, 1 manach.net, 1 manage.cm, 1 manage4all.de, 1 manageathome.co.uk, 1 @@ -20824,17 +20822,16 @@ mediawiki.org, 1 mediawin.pl, 1 medic-world.com, 1 medicalcountermeasures.gov, 1 medicinesfast.com, 0 medicinia.com.br, 1 medicinskavranje.edu.rs, 1 medicocompetente.it, 1 medicoresponde.com.br, 1 -medifab.online, 1 medifi.com, 1 medinside.ch, 1 medinside.li, 1 medinsider.ch, 1 medinsider.li, 1 medireport.fr, 1 medium.com, 1 mediumraw.org, 1 @@ -21805,17 +21802,16 @@ mosaic-design.ru, 1 mosaicadvisors.com, 1 mosaique-lachenaie.fr, 1 moscow.dating, 1 mosfet.cz, 1 moshwire.com, 1 mosin.org, 1 moskeedieren.nl, 1 moskva.guide, 1 -moso.io, 1 mosos.de, 1 mosscade.com, 1 mosstier.com, 1 mostlyharmless.at, 1 mostlyinfinite.com, 1 mostlyoverhead.com, 1 motd.ch, 1 motekforcelink.com, 1 @@ -21830,16 +21826,17 @@ motohell.com, 1 motojato.com.br, 1 motomorgen.com, 1 motonauticaibiza.com, 1 motorbiketourhanoi.com, 1 motoroilinfo.com, 1 motorpointarenacardiff.co.uk, 1 motorring.ru, 1 motorsplus.com, 0 +motorsportdiesel.com, 1 motoryachtclub-radolfzell.de, 1 motosikletevi.com, 1 motostorie.blog, 0 motovated.co.nz, 1 motowilliams.com, 1 motransportinfo.com, 1 mottomortgage.com, 1 moube.fr, 1 @@ -21932,17 +21929,16 @@ mrkapowski.com, 1 mrketolocksmith.com, 1 mrknee.gr, 1 mrksk.com, 1 mrleonardo.com, 1 mrliu.me, 1 mrmoregame.de, 1 mrnh.de, 1 mrnh.tk, 1 -mrparker.pw, 1 mrpropop.com, 1 mrs-labo.jp, 1 mrserge.lv, 1 mrsk.me, 1 mrstat.co.uk, 1 mrx.one, 1 ms-alternativ.de, 1 ms-host.fr, 1 @@ -22228,16 +22224,17 @@ mydevolo.com, 1 mydevolo.de, 1 mydigitalweek.com, 1 mydjsongbook.com, 1 mydmdi.com, 1 mydna.bio, 1 mydocserve.com, 1 mydreamlifelab.com, 1 myeberspaecher.com, 1 +myeffect.today, 1 myepass.bg, 1 myepass.de, 1 myessaygeek.com, 1 myfantasysportstalk.com, 1 myfappening.org, 1 myfdic.gov, 1 myfedloan.org, 1 myfirenet.com, 1 @@ -22327,24 +22324,23 @@ myperfecthome.ca, 1 myperfumecollection.com, 1 mypillcard.com, 1 myplaceonline.com, 1 mypress.mx, 1 myprintcard.de, 1 myproblog.com, 1 myptsite.com, 1 mypup.nl, 1 -myqdu.cn, 1 myrandomtips.com, 1 myranicol.com, 1 myrealestatemate.com.au, 1 myref.net, 1 myrekber.co.id, 1 myrent.quebec, 1 -myrepublic.co.id, 0 +myrepublic.co.id, 1 myresearchapp.com, 1 myrewardspoints.com, 1 myriadof.com, 1 myrig.com, 1 myrig.com.ua, 1 myrig.io, 1 myrig.ru, 1 myrotvorets.center, 1 @@ -22499,17 +22495,16 @@ namskra.is, 1 namu.live, 1 namu.moe, 1 namu.wiki, 1 nanami.moe, 1 nanarose.ch, 1 nanch.com, 1 nanderson.me, 1 nanfangstone.com, 1 -nani.io, 1 nankiseamansclub.com, 1 nanogi.ga, 1 nanotechnologist.com, 1 nanovolt.nl, 1 nanpuyue.com, 1 nanubo.com, 1 nanubo.de, 1 naoar.com, 1 @@ -23296,17 +23291,16 @@ noodleyum.com, 1 noodplan.co.za, 1 noodweer.be, 1 noon-entertainments.com, 1 noop.ch, 1 noordsee.de, 1 noorsolidarity.com, 1 nootropic.com, 1 noovell.com, 1 -nopaste.xyz, 1 nopaynocure.com, 1 norad.sytes.net, 1 nord-sud.be, 1 nordakademie.de, 1 nordic-survival.de, 1 nordicirc.com, 1 nordinfo.fi, 1 nordlichter-brv.de, 1 @@ -23832,17 +23826,16 @@ omnisiens.se, 1 omnitrack.org, 1 omniverse.ru, 1 omorashi.org, 1 omoteura.com, 1 omranic.com, 1 omronwellness.com, 1 omsdieppe.fr, 1 on-tech.co.uk, 1 -ona.io, 1 onaboat.se, 1 onahonavi.com, 1 onarto.com, 1 onceuponarainbow.co.uk, 1 oncf.asso.fr, 1 oncodedesign.com, 1 ond-inc.com, 1 ondcp.gov, 1 @@ -23959,28 +23952,28 @@ oogami.name, 1 oogartsennet.nl, 1 ooharttemplates.com, 1 oopsis.com, 1 ooyo.be, 1 op11.co.uk, 0 opalesurfcasting.net, 1 oparl.org, 1 opatut.de, 1 -opcaobolsas.com.br, 1 opcenter.de, 1 ope.ee, 1 open-bs.com, 1 open-bs.ru, 1 open-desk.org, 1 open-freax.fr, 1 open-future.be, 1 open-infrastructure.net, 1 open-letters.de, 1 open-mesh.org, 1 open-sauce-recipes.co.uk, 1 +open-source.gr, 1 open.gl, 1 openacademies.com, 1 openacte.ch, 1 openblox.org, 1 openbsd.id, 1 opencad.io, 1 opencircuit.nl, 1 openclima.com, 1 @@ -24018,22 +24011,22 @@ openstem.com.au, 1 openstreetmap.is, 1 opentexon.com, 1 opentrack.info, 1 opentrash.org, 1 opentuition.com, 1 openverse.com, 1 openvz.org, 1 openwaveguide.de, 1 +openwifi.gr, 1 openwireless.org, 1 operad.fr, 1 operationforever.com, 1 opfin.com, 1 opiates.ca, 1 -opiates.net, 1 opic.gov, 1 opin.me, 1 opinion8td.com, 1 opinionicentrifuga.it, 1 opinionipannolini.it, 1 opioids.co.uk, 1 opioids.com, 1 opioids.gov, 1 @@ -24625,17 +24618,16 @@ pathwaytofaith.com, 1 patika-biztositas.hu, 1 patikabiztositas.hu, 1 patouille-et-gribouille.fr, 1 patralos.at, 0 patriaco.net, 1 patric-lenhart.de, 1 patrick-othmer.de, 1 patrick-robrecht.de, 1 -patrick.dark.name, 1 patrickaudley.ca, 1 patrickaudley.com, 1 patrickbrosi.de, 1 patrickbusch.net, 1 patrickneuro.de, 1 patrickschneider.me, 1 patrikgarten.de, 1 patriksima.cz, 1 @@ -24933,17 +24925,16 @@ peterandjoelle.co.uk, 1 peterboers.info, 1 peterdavehello.org, 1 peterfiorella.com, 1 peterfolta.net, 1 peterhuetz.at, 1 peterhuetz.com, 1 peterjohnson.io, 1 peterlew.is, 1 -peternagy.ie, 1 petersontoscano.com, 1 pethelpers.org, 1 petit-archer.com, 1 petite-maison.ch, 1 petitsfrenchies.com, 1 petja.me, 0 petko.me, 1 petlife.od.ua, 1 @@ -25472,17 +25463,16 @@ pmp-art.com, 1 pmponline.de, 1 pmsacorp.com, 1 pmsf.eu, 1 pmt-documenten.nl, 1 pn.id.lv, 1 pneu01.fr, 1 pneu74.fr, 1 pneuhaus-lemp.ch, 1 -pneusgppremium.com.br, 1 pnimmobilier.ch, 1 pnmhomecheckup.com, 1 pnona.cz, 1 pnsc.is, 1 pnut.io, 0 poba.fr, 1 pocakking.tk, 1 pocatellonissanparts.com, 1 @@ -25872,17 +25862,16 @@ primaconsulting.net, 1 primalinea.pro, 1 primates.com, 1 primewho.org, 1 primordialsnooze.com, 1 primorus.lt, 1 primotilesandbathrooms.co.uk, 1 princeagency.com, 1 princeofwhales.com, 1 -princesparktouch.com, 1 princessbackpack.de, 1 princessmargaretlotto.com, 1 principalstest.com, 1 principaltoolbox.com, 1 principia-journal.de, 1 principia-magazin.de, 1 principia-online.de, 1 princovi.cz, 1 @@ -26359,17 +26348,16 @@ qewc.com, 1 qforum.org, 1 qgustavor.tk, 1 qhse-professionals.nl, 1 qianalysis.com, 1 qifu.me, 1 qifu.org.cn, 1 qikan.net, 1 qiliang.wang, 1 -qimiao.io, 1 qingpat.com, 1 qingpei.me, 1 qionouu.cn, 1 qirinus.com, 1 qitarabutrans.com, 1 qits.de, 0 qivonline.pt, 1 qiwi.be, 1 @@ -27029,16 +27017,17 @@ remoteutilities.com, 1 removedrepo.com, 1 renascentia.asia, 1 renaultclubticino.ch, 1 renderloop.com, 1 rene-schwarz.com, 1 rene-stolp.de, 1 renearends.nl, 1 reneleu.ch, 1 +renem.net, 0 renemayrhofer.com, 1 renerehelse.no, 0 reneschmidt.de, 1 renewablefreedom.org, 1 renewmedispa.com, 1 renezuo.com, 1 renkenlaw.com, 1 renlen.nl, 1 @@ -27047,16 +27036,17 @@ renov8sa.co.za, 1 renrenche.com, 0 rens.nu, 1 rent-a-coder.de, 1 rentacaramerica.com, 1 rentasweb.gob.ar, 1 rentbrowser.com, 1 rentinsingapore.com.sg, 1 rentourhomeinprovence.com, 1 +renuo.ch, 1 reorz.com, 1 reox.at, 0 repaik.com, 1 repair.by, 1 repaper.org, 1 repaxan.com, 1 replaceits.me, 1 replicagunsswords.com, 0 @@ -27070,16 +27060,17 @@ reposaarenkuva.fi, 1 reproduciblescience.org, 1 reproductive-revolution.com, 1 reproductiverevolution.com, 1 reprogramming-predators.com, 1 reprogrammingpredators.com, 1 reprozip.org, 1 repsomelt.com, 1 reptrax.com, 1 +republic.gr, 1 republique.org, 1 repugnant-conclusion.com, 1 repugnantconclusion.com, 1 repustate.com, 1 reputationweaver.com, 1 reqognize.com, 1 reqrut.net, 1 request-trent.com, 1 @@ -27169,17 +27160,16 @@ reverseaustralia.com, 1 reversecanada.com, 1 reverseloansolutions.com, 1 reversesouthafrica.com, 1 review.jp, 1 reviewninja.net, 1 reviews.anime.my, 0 revision.co.zw, 1 revisionnotes.xyz, 1 -revistapequenosolhares.com.br, 1 revivalinhisword.com, 1 revivingtheredeemed.org, 1 revlect.com, 1 revolt.tv, 1 revthefox.co.uk, 1 rewardingexcellence.com, 1 rewrite3.com, 1 rex.st, 1 @@ -27458,16 +27448,17 @@ roelbazuin.com, 1 roeldevries.me, 1 roelf.org, 1 roelhollander.eu, 1 roelof.io, 1 roelsworld.eu, 1 roemhild.de, 1 roerstaafjes.nl, 1 roessner-network-solutions.com, 0 +roffe.nu, 1 rofl.com.ua, 1 roflcopter.fr, 1 rofrank.space, 1 rogagym.com, 1 rogeiro.net, 1 roger101.com, 1 rogerdat.ovh, 1 rogerhub.com, 1 @@ -27737,17 +27728,16 @@ ruigomes.me, 1 ruiming.me, 0 ruja.dk, 1 ruk.ca, 1 rukhaiyar.com, 1 rullzer.com, 1 rulu.co, 1 rulu.tv, 1 rulutv.com, 1 -rumlager.de, 1 rummel-platz.de, 1 rumplesinflatables.co.uk, 1 rumtaste.com, 1 rumtaste.de, 1 run-forrest.run, 1 runagain.ch, 1 runcarina.com, 1 rundumcolumn.xyz, 1 @@ -28412,16 +28402,17 @@ screen64.tk, 1 screenlight.tv, 1 screenmachine.com, 1 screenparadigm.com, 1 scripo-bay.com, 1 script.google.com, 1 scriptgates.ru, 1 scripthost.org, 1 scriptjunkie.us, 1 +scriptum.gr, 1 scrisulfacebine.ro, 1 scruffymen.com, 0 scrumbleship.com, 1 scrumstack.co.uk, 1 scryfall.com, 1 scs-simulatoren.de, 1 scsd.si, 1 scswam.com, 1 @@ -28586,16 +28577,17 @@ securitybrief.com.au, 1 securitybrief.eu, 1 securityfest.com, 1 securityheaders.com, 1 securityheaders.io, 1 securityinet.com, 0 securitykey.co, 1 securitymap.wiki, 1 securitypluspro.com, 1 +securityprimes.in, 1 securitysnobs.com, 0 securitysoapbox.com, 1 securitystrata.com, 1 securitystreak.com, 1 securitytalk.pl, 1 securitytestfan.gov, 1 securitywatch.co.nz, 1 securitywithnick.com, 1 @@ -29708,17 +29700,16 @@ smilingmiao.com, 1 smime.io, 1 smimea.info, 1 smipty.cn, 1 smipty.com, 1 smit.com.ua, 1 smith.is, 1 smithandcanova.co.uk, 0 sml.lc, 1 -smm.im, 1 smoo.st, 1 smoothgesturesplus.com, 1 smoothics.at, 1 smoothics.com, 1 smoothics.eu, 1 smoothics.mobi, 1 smoothics.net, 1 smorgasblog.ie, 1 @@ -29819,17 +29810,16 @@ socal-babes.com, 1 soccersavings.com, 1 soccorso-stradale.org, 1 sochi-sochno.ru, 1 soci.ml, 1 social-events.net, 0 social-media-strategies.it, 1 socialdevelop.biz, 0 socialdj.de, 1 -socialhams.net, 1 socialmedia.ro, 1 socialnitro.com, 1 socialnous.co, 1 socialrank.com, 1 socialsecurity.gov, 0 socialtrends.pl, 1 socialweblearning.com, 1 socialworkout.com, 1 @@ -30219,16 +30209,17 @@ sportstraineradvisor.com, 1 sporttrampen.de, 0 sportugalia.ru, 1 sportxt.ru, 1 spot-lumiere-led.com, 1 spotlightsrule.com, 1 spotrebitelskecentrum.sk, 1 spottedpenguin.co.uk, 1 spotupload.com, 1 +spr.id.au, 1 sprachfreudehoch3.de, 1 spreadsheets.google.com, 1 spreadthenews.eu, 1 spree.co.za, 1 spreed.me, 1 spricknet.de, 1 sprigings.com, 1 springerundpartner.de, 1 @@ -30886,16 +30877,17 @@ sumthing.com, 1 sunboxstore.jp, 1 sunbritetv.com, 1 sunchasercats.com, 1 sundanceusa.com, 1 sundayfundayjapan.com, 1 suneilpatel.com, 1 sunfeathers.net, 1 sunfireshop.com.br, 1 +sunflyer.cn, 0 sunfox.cz, 1 sunfulong.blog, 1 sunfulong.me, 1 sunjaydhama.com, 1 sunn.ie, 1 sunriseafricarelief.com, 1 sunsetwx.com, 1 sunshinesf.org, 1 @@ -31048,16 +31040,17 @@ swedishhost.se, 1 sweep-me.net, 1 sweep.cards, 1 sweepay.ch, 1 sweet-orr.com, 1 sweetair.com, 1 sweetgood.de, 1 sweetlegs.jp, 1 sweetll.me, 0 +sweets-mimatsu.com, 1 sweetvanilla.jp, 1 swehack.org, 1 sweharris.org, 1 swfloshatraining.com, 1 swfmax.com, 1 swift-devedge.de, 1 swiftqueue.com, 1 swilly.org, 1 @@ -31369,17 +31362,16 @@ tatiloley.com, 1 tatort-fanpage.de, 1 tatsidou.gr, 1 tattoo.dating, 1 taunhanh.us, 1 tavolaquadrada.com.br, 1 tavsys.net, 1 taxaroo.com, 1 taxaudit.com, 1 -taxi-24std.de, 1 taxi-chamonix.fr, 1 taxi-collectif.ch, 1 taxicollectif.ch, 1 taxiindenbosch.nl, 1 taxis-collectifs.ch, 1 taxisafmatosinhos.pt, 1 taxiscollectifs.ch, 1 taxlab.co.nz, 1 @@ -32197,16 +32189,17 @@ thunraz.com, 1 thusoy.com, 0 thuthuatios.com, 1 thuviensoft.com, 1 thuviensoft.net, 1 thw-bernburg.de, 1 thxandbye.de, 1 thyngster.com, 1 thynx.io, 1 +thzone.net, 1 ti-js.com, 1 ti-pla.net, 1 ti-planet.org, 1 tiacollection.com, 1 tiagonunes.pt, 1 tiaki.org, 1 tianeptine.com, 1 tianshili.me, 1 @@ -32464,16 +32457,17 @@ todacarreira.com, 1 todaciencia.com, 1 todamateria.com.br, 1 todapolitica.com, 1 todaymeow.com, 1 todocracy.com, 1 todoescine.com, 1 todoist.com, 1 todon.fr, 1 +todoscomciro.com, 1 todosrv.com, 1 toeglhofer.at, 1 toeightycountries.com, 1 toekomstperspectief.be, 1 toerclub-ing-arnhem.nl, 1 toetsplatform.be, 1 tofa-koeln.de, 1 tofe.io, 1 @@ -32897,17 +32891,16 @@ transsexualpantyhose.com, 1 transverify.com, 1 trashnothing.com, 1 trask.no, 1 traslocare.roma.it, 1 trauertexte.info, 1 traut.cloud, 1 travador.com, 1 travaux-toiture-idf.fr, 1 -travel-dealz.de, 1 travel-to-nature.ch, 1 travel1x1.com, 1 travel365.it, 1 travelarmenia.org, 1 traveling-thailand.info, 1 travellers.dating, 1 travelling.expert, 1 travellovers.fr, 1 @@ -33943,17 +33936,16 @@ vehicletax.service.gov.uk, 1 veii.de, 1 veil-framework.com, 1 veit.zone, 1 veke.fi, 1 vekenz.com, 1 velasense.com, 1 velen.io, 1 velonustraduction.com, 1 -velotyretz.fr, 1 venalytics.com, 1 venclave.com, 1 vendigital.com, 1 vendorconnect.nyc, 1 vendserve.eu, 1 venicecomputerrepair.com, 1 venicefloridawebsitedesign.com, 1 venicerealdeal.com, 1 @@ -34617,17 +34609,16 @@ waterfedpole.com, 1 waterleeftinbeek.nl, 1 watermonitor.gov, 1 watersb.org, 1 waterschaplimburg.nl, 1 watertrails.io, 1 waterworkscondos.com, 1 watoo.tech, 1 watsonwork.me, 1 -wattechweb.com, 1 wave-ola.es, 1 wave.is, 1 wavesboardshop.com, 1 wavesoftime.com, 1 waveum.com, 1 wawak.pl, 1 waxdramatic.com, 1 waylaydesign.com, 1 @@ -35199,17 +35190,16 @@ willkommen-fuerstenberg.de, 1 willnorris.com, 1 willow.technology, 1 willowdalechurch.ca, 1 willowtree.school, 1 wills.co.tt, 1 willstamper.name, 1 willywangstory.com, 1 willywangstory.com.tw, 1 -willywangstory.org, 1 wiloca.it, 1 wilseyrealty.com, 1 wilsonovi.com, 1 wimachtendienk.com, 1 wimbo.nl, 1 wimpernforyou.de, 1 win7stylebuilder.com, 0 winbuzzer.com, 1 @@ -35914,17 +35904,16 @@ xn--s-1gaa.fi, 1 xn--sdkwa9azd389v01ya.com, 1 xn--seelenwchter-mcb.eu, 1 xn--spenijmazania-yhc.pl, 1 xn--srenpind-54a.dk, 1 xn--sz8h.ml, 1 xn--t-oha.lv, 1 xn--t8j2a3042d.xyz, 1 xn--t8j4aa4nkg1h9bwcvud.com, 1 -xn--t8j4aa4nyhxa7duezbl49aqg5546e264d.net, 1 xn--t8j4aa4nzg3a5euoxcwee.xyz, 1 xn--tda.ml, 1 xn--thorme-6uaf.ca, 1 xn--tigreray-i1a.org, 1 xn--u9j0ia6hb7347cg8wavz0avb0e.com, 1 xn--u9jv84l7ea468b.com, 1 xn--uort9oqoaj00bv04d.biz, 1 xn--uorz58b8p0bpwa.biz, 1 @@ -36273,17 +36262,16 @@ yousei.ne.jp, 1 yousite.by, 1 yout.com, 1 youth.gov, 1 youth2009.org, 1 youtous.me, 1 youtsuu-raku.com, 1 youtube.com, 1 youtubedownloader.com, 1 -youtubeviews.ml, 1 youwatchporn.com, 1 yoxall.me.uk, 1 yoyoost.duckdns.org, 1 ypart.eu, 1 ypcs.fi, 1 ypid.de, 1 ypiresia.fr, 0 yplanapp.com, 1 @@ -36682,17 +36670,16 @@ zooxdata.com, 1 zopy.com.br, 1 zopyx.com, 1 zor.com, 1 zorgclustertool.nl, 1 zorium.org, 1 zorki.nl, 1 zorntt.fr, 1 zorz.info, 1 -zotero.org, 1 zouk.info, 1 zouyaoji.top, 1 zravypapir.cz, 1 zrn.in, 0 zrniecka-pre-sny.sk, 1 zrnieckapresny.sk, 1 zrt.io, 1 zscales.com, 1 @@ -36757,12 +36744,11 @@ zylai.com, 1 zymmm.com, 1 zypern-firma.com, 1 zypr.pw, 1 zyria.de, 1 zyrillezuno.com, 1 zyul.ddns.net, 1 zyx.im, 0 zyzardx.com, 1 -zzpd.nl, 1 zzsec.org, 1 zzw.ca, 1 %%
--- a/taskcluster/ci/release-generate-checksums-beetmover/kind.yml +++ b/taskcluster/ci/release-generate-checksums-beetmover/kind.yml @@ -9,8 +9,14 @@ transforms: - taskgraph.transforms.release_notifications:transforms - taskgraph.transforms.task:transforms kind-dependencies: - release-generate-checksums-signing job-template: shipping-phase: promote + worker-type: + by-project: + mozilla-central: scriptworker-prov-v1/beetmoverworker-v1 + mozilla-beta: scriptworker-prov-v1/beetmoverworker-v1 + mozilla-release: scriptworker-prov-v1/beetmoverworker-v1 + default: scriptworker-prov-v1/beetmoverworker-dev
--- a/taskcluster/ci/test/talos.yml +++ b/taskcluster/ci/test/talos.yml @@ -197,17 +197,17 @@ talos-g4: try-name: g4 treeherder-symbol: T(g4) run-on-projects: by-test-platform: .*-qr/.*: ['mozilla-central', 'try'] default: ['mozilla-beta', 'mozilla-central', 'mozilla-inbound', 'autoland', 'try'] max-run-time: by-test-platform: - linux64.*: 900 + linux64.*: 1500 default: 1800 mozharness: extra-options: - --suite=g4 - --add-option - --webServer,localhost talos-g4-profiling: @@ -218,17 +218,17 @@ talos-g4-profiling: mozharness: extra-options: - --suite=g4 - --geckoProfile - --add-option - --webServer,localhost max-run-time: by-test-platform: - linux64.*: 900 + linux64.*: 1500 default: 1800 talos-g5: description: "Talos g5" try-name: g5 treeherder-symbol: T(g5) run-on-projects: by-test-platform:
--- a/taskcluster/taskgraph/transforms/job/mozharness_test.py +++ b/taskcluster/taskgraph/transforms/job/mozharness_test.py @@ -363,16 +363,19 @@ def mozharness_test_on_native_engine(con ("public/logs/", "workspace/build/upload/logs/"), ("public/test", "artifacts/"), ("public/test_info/", "workspace/build/blobber_upload_dir/"), ]] if test['reboot']: worker['reboot'] = test['reboot'] + if test['max-run-time']: + worker['max-run-time'] = test['max-run-time'] + worker['env'] = env = { 'GECKO_HEAD_REPOSITORY': config.params['head_repository'], 'GECKO_HEAD_REV': config.params['head_rev'], 'MOZHARNESS_CONFIG': ' '.join(mozharness['config']), 'MOZHARNESS_SCRIPT': mozharness['script'], 'MOZHARNESS_URL': {'task-reference': mozharness_url}, 'MOZILLA_BUILD_URL': {'task-reference': installer_url}, "MOZ_NO_REMOTE": '1',
--- a/taskcluster/taskgraph/transforms/release_generate_checksums_beetmover.py +++ b/taskcluster/taskgraph/transforms/release_generate_checksums_beetmover.py @@ -3,17 +3,17 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. """ Transform the `release-generate-checksums-beetmover` task to also append `build` as dependency """ from __future__ import absolute_import, print_function, unicode_literals from taskgraph.transforms.base import TransformSequence from taskgraph.util.attributes import copy_attributes_from_dependent_job -from taskgraph.util.schema import validate_schema, Schema +from taskgraph.util.schema import validate_schema, Schema, resolve_keyed_by, optionally_keyed_by from taskgraph.util.scriptworker import (get_beetmover_bucket_scope, get_beetmover_action_scope, get_phase) from taskgraph.transforms.beetmover import craft_release_properties from taskgraph.transforms.task import task_description_schema from voluptuous import Required, Optional transforms = TransformSequence() @@ -49,16 +49,17 @@ release_generate_checksums_beetmover_sch # treeherder is allowed here to override any defaults we use for beetmover. See # taskcluster/taskgraph/transforms/task.py for the schema details, and the # below transforms for defaults of various values. Optional('treeherder'): task_description_schema['treeherder'], Optional('shipping-phase'): task_description_schema['shipping-phase'], Optional('shipping-product'): task_description_schema['shipping-product'], + Required('worker-type'): optionally_keyed_by('project', basestring), }) @transforms.add def validate(config, jobs): for job in jobs: label = job.get('dependent-task', object).__dict__.get('label', '?no-label?') validate_schema( @@ -97,20 +98,24 @@ def make_task_description(config, jobs): "Can't beetmove a signing task with multiple dependencies") # update the dependencies with the dependencies of the signing task dependencies.update(dep_job.dependencies) bucket_scope = get_beetmover_bucket_scope(config) action_scope = get_beetmover_action_scope(config) phase = get_phase(config) + resolve_keyed_by( + job, 'worker-type', item_name=label, project=config.params['project'] + ) + task = { 'label': label, 'description': description, - 'worker-type': 'scriptworker-prov-v1/beetmoverworker-dev', + 'worker-type': job['worker-type'], 'scopes': [bucket_scope, action_scope], 'dependencies': dependencies, 'attributes': attributes, 'run-on-projects': dep_job.attributes.get('run_on_projects'), 'treeherder': treeherder, 'shipping-phase': phase, }
--- a/taskcluster/taskgraph/transforms/release_generate_checksums_signing.py +++ b/taskcluster/taskgraph/transforms/release_generate_checksums_signing.py @@ -72,18 +72,16 @@ def make_release_generate_checksums_sign "paths": [ "public/build/SHA256SUMS", "public/build/SHA512SUMS", ], "formats": ["gpg"] }] signing_cert_scope = get_signing_cert_scope(config) - # XXX hardcode on maple to get a green graph. DO NOT UPLIFT - signing_cert_scope = 'project:releng:signing:cert:dep-signing' task = { 'label': label, 'description': description, 'worker-type': get_worker_type_for_scope(config, signing_cert_scope), 'worker': {'implementation': 'scriptworker-signing', 'upstream-artifacts': upstream_artifacts, 'max-run-time': 3600},
--- a/taskcluster/taskgraph/transforms/task.py +++ b/taskcluster/taskgraph/transforms/task.py @@ -444,16 +444,19 @@ task_description_schema = Schema({ Optional('tuxedo_server_url'): optionally_keyed_by('project', basestring), Optional('release_eta'): basestring, Extra: taskref_or_string, # additional properties are allowed }, }, { Required('implementation'): 'native-engine', Required('os'): Any('macosx', 'linux'), + # the maximum time to run, in seconds + Required('max-run-time'): int, + # A link for an executable to download Optional('context'): basestring, # Tells the worker whether machine should reboot # after the task is finished. Optional('reboot'): Any('always', 'on-exception', 'on-failure'), @@ -1216,16 +1219,17 @@ def build_macosx_engine_payload(config, 'expires': task_def['expires'], }, worker.get('artifacts', [])) task_def['payload'] = { 'context': worker['context'], 'command': worker['command'], 'env': worker['env'], 'artifacts': artifacts, + 'maxRunTime': worker['max-run-time'], } if worker.get('reboot'): task_def['payload'] = worker['reboot'] if task.get('needs-sccache'): raise Exception('needs-sccache not supported in native-engine')
--- a/testing/mozharness/mozharness/mozilla/building/buildbase.py +++ b/testing/mozharness/mozharness/mozilla/building/buildbase.py @@ -1576,56 +1576,55 @@ or run without that action (ie: --no-{ac for ext in ['apk', 'dmg', 'tar.bz2', 'zip']: name = 'target.' + ext if os.path.exists(os.path.join(dist_dir, name)): packageName = name break else: self.fatal("could not determine packageName") - interests = ['libxul.so', 'classes.dex', 'omni.ja'] - installer = os.path.join(dirs['abs_obj_dir'], 'dist', packageName) + interests = ['libxul.so', 'classes.dex', 'omni.ja', 'xul.dll'] + installer = os.path.join(dist_dir, packageName) installer_size = 0 size_measurements = [] + def paths_with_sizes(installer): + if zipfile.is_zipfile(installer): + with zipfile.ZipFile(installer, 'r') as zf: + for zi in zf.infolist(): + yield zi.filename, zi.file_size + elif tarfile.is_tarfile(installer): + with tarfile.open(installer, 'r:*') as tf: + for ti in tf: + yield ti.name, ti.size + if os.path.exists(installer): installer_size = self.query_filesize(installer) self.info('Size of %s: %s bytes' % (packageName, installer_size)) try: subtests = {} - if zipfile.is_zipfile(installer): - with zipfile.ZipFile(installer, 'r') as zf: - for zi in zf.infolist(): - name = os.path.basename(zi.filename) - size = zi.file_size - if name in interests: - if name in subtests: - # File seen twice in same archive; - # ignore to avoid confusion. - subtests[name] = None - else: - subtests[name] = size - elif tarfile.is_tarfile(installer): - with tarfile.open(installer, 'r:*') as tf: - for ti in tf: - name = os.path.basename(ti.name) - size = ti.size - if name in interests: - if name in subtests: - # File seen twice in same archive; - # ignore to avoid confusion. - subtests[name] = None - else: - subtests[name] = size + for path, size in paths_with_sizes(installer): + name = os.path.basename(path) + if name in interests: + # We have to be careful here: desktop Firefox installers + # contain two omni.ja files: one for the general runtime, + # and one for the browser proper. + if name == 'omni.ja': + containing_dir = os.path.basename(os.path.dirname(path)) + if containing_dir == 'browser': + name = 'browser-omni.ja' + if name in subtests: + self.fatal('should not see %s (%s) multiple times!' + % (name, path)) + subtests[name] = size for name in subtests: - if subtests[name] is not None: - self.info('Size of %s: %s bytes' % (name, - subtests[name])) - size_measurements.append( - {'name': name, 'value': subtests[name]}) + self.info('Size of %s: %s bytes' % (name, + subtests[name])) + size_measurements.append( + {'name': name, 'value': subtests[name]}) except: self.info('Unable to search %s for component sizes.' % installer) size_measurements = [] if not installer_size and not size_measurements: return # We want to always collect metrics. But alerts for installer size are
--- a/testing/web-platform/meta/MANIFEST.json +++ b/testing/web-platform/meta/MANIFEST.json @@ -147404,16 +147404,52 @@ [ "/css/css-ui/text-overflow-026-ref.html", "==" ] ], {} ] ], + "css/css-ui/text-overflow-027.html": [ + [ + "/css/css-ui/text-overflow-027.html", + [ + [ + "/css/css-ui/reference/text-overflow-027-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-ui/text-overflow-028.html": [ + [ + "/css/css-ui/text-overflow-028.html", + [ + [ + "/css/css-ui/reference/text-overflow-028-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-ui/text-overflow-029.html": [ + [ + "/css/css-ui/text-overflow-029.html", + [ + [ + "/css/css-ui/reference/text-overflow-029-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-values/attr-color-invalid-cast.html": [ [ "/css/css-values/attr-color-invalid-cast.html", [ [ "/css/css-values/reference/200-200-green.html", "==" ] @@ -254364,16 +254400,21 @@ {} ] ], "css/css-typed-om/stylevalue-subclasses/numeric-objects/resources/testhelper.js": [ [ {} ] ], + "css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js": [ + [ + {} + ] + ], "css/css-ui/OWNERS": [ [ {} ] ], "css/css-ui/reference/box-sizing-001-ref.html": [ [ {} @@ -254504,16 +254545,31 @@ {} ] ], "css/css-ui/reference/text-overflow-022-ref.html": [ [ {} ] ], + "css/css-ui/reference/text-overflow-027-ref.html": [ + [ + {} + ] + ], + "css/css-ui/reference/text-overflow-028-ref.html": [ + [ + {} + ] + ], + "css/css-ui/reference/text-overflow-029-ref.html": [ + [ + {} + ] + ], "css/css-ui/support/1x1-red.png": [ [ {} ] ], "css/css-ui/support/PTS/PngSuite.LICENSE": [ [ {} @@ -291309,16 +291365,31 @@ {} ] ], "webaudio/resources/audit.js": [ [ {} ] ], + "webaudio/resources/distance-model-testing.js": [ + [ + {} + ] + ], + "webaudio/resources/panner-formulas.js": [ + [ + {} + ] + ], + "webaudio/resources/panner-model-testing.js": [ + [ + {} + ] + ], "webaudio/resources/sin_440Hz_-6dBFS_1s.wav": [ [ {} ] ], "webaudio/resources/start-stop-exceptions.js": [ [ {} @@ -312573,16 +312644,22 @@ ] ], "css/css-typed-om/stylevalue-subclasses/cssSkew.tentative.html": [ [ "/css/css-typed-om/stylevalue-subclasses/cssSkew.tentative.html", {} ] ], + "css/css-typed-om/stylevalue-subclasses/cssSkewX.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssSkewX.tentative.html", + {} + ] + ], "css/css-typed-om/stylevalue-subclasses/cssTransformValue.tentative.html": [ [ "/css/css-typed-om/stylevalue-subclasses/cssTransformValue.tentative.html", {} ] ], "css/css-typed-om/stylevalue-subclasses/cssTranslate.tentative.html": [ [ @@ -312879,16 +312956,28 @@ ] ], "css/css-typed-om/the-stylepropertymap/inline/update.tentative.html": [ [ "/css/css-typed-om/the-stylepropertymap/inline/update.tentative.html", {} ] ], + "css/css-typed-om/the-stylepropertymap/properties/display.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/display.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/properties/margin-top.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/properties/margin-top.html", + {} + ] + ], "css/css-ui/box-sizing-027.html": [ [ "/css/css-ui/box-sizing-027.html", {} ] ], "css/css-ui/caret-color-009.html": [ [ @@ -315057,16 +315146,22 @@ ] ], "custom-elements/parser/parser-uses-registry-of-owner-document.html": [ [ "/custom-elements/parser/parser-uses-registry-of-owner-document.html", {} ] ], + "custom-elements/pseudo-class-defined.html": [ + [ + "/custom-elements/pseudo-class-defined.html", + {} + ] + ], "custom-elements/reaction-timing.html": [ [ "/custom-elements/reaction-timing.html", {} ] ], "custom-elements/reactions/Attr.html": [ [ @@ -359355,16 +359450,82 @@ ] ], "webaudio/the-audio-api/the-offlineaudiocontext-interface/current-time-block-size.html": [ [ "/webaudio/the-audio-api/the-offlineaudiocontext-interface/current-time-block-size.html", {} ] ], + "webaudio/the-audio-api/the-pannernode-interface/distance-exponential.html": [ + [ + "/webaudio/the-audio-api/the-pannernode-interface/distance-exponential.html", + {} + ] + ], + "webaudio/the-audio-api/the-pannernode-interface/distance-inverse.html": [ + [ + "/webaudio/the-audio-api/the-pannernode-interface/distance-inverse.html", + {} + ] + ], + "webaudio/the-audio-api/the-pannernode-interface/distance-linear.html": [ + [ + "/webaudio/the-audio-api/the-pannernode-interface/distance-linear.html", + {} + ] + ], + "webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic.html": [ + [ + "/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic.html", + {} + ] + ], + "webaudio/the-audio-api/the-pannernode-interface/panner-automation-equalpower-stereo.html": [ + [ + "/webaudio/the-audio-api/the-pannernode-interface/panner-automation-equalpower-stereo.html", + {} + ] + ], + "webaudio/the-audio-api/the-pannernode-interface/panner-automation-position.html": [ + [ + "/webaudio/the-audio-api/the-pannernode-interface/panner-automation-position.html", + {} + ] + ], + "webaudio/the-audio-api/the-pannernode-interface/panner-distance-clamping.html": [ + [ + "/webaudio/the-audio-api/the-pannernode-interface/panner-distance-clamping.html", + {} + ] + ], + "webaudio/the-audio-api/the-pannernode-interface/panner-equalpower-stereo.html": [ + [ + "/webaudio/the-audio-api/the-pannernode-interface/panner-equalpower-stereo.html", + {} + ] + ], + "webaudio/the-audio-api/the-pannernode-interface/panner-equalpower.html": [ + [ + "/webaudio/the-audio-api/the-pannernode-interface/panner-equalpower.html", + {} + ] + ], + "webaudio/the-audio-api/the-pannernode-interface/panner-rolloff-clamping.html": [ + [ + "/webaudio/the-audio-api/the-pannernode-interface/panner-rolloff-clamping.html", + {} + ] + ], + "webaudio/the-audio-api/the-pannernode-interface/pannernode-basic.html": [ + [ + "/webaudio/the-audio-api/the-pannernode-interface/pannernode-basic.html", + {} + ] + ], "webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html": [ [ "/webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html", {} ] ], "webaudio/the-audio-api/the-stereopanner-interface/no-dezippering.html": [ [ @@ -514741,17 +514902,17 @@ "b594b1907b2ca95278b8fc643b97480d693bab9f", "testharness" ], "css/css-typed-om/resources/1x1-green.png": [ "51e7b6974a09eda6cb31337717c5eaeb9c44b443", "support" ], "css/css-typed-om/resources/testhelper.js": [ - "62fc510703d52cd0894359c29d975920e26b594f", + "6bfe0c7b10e47c2f6acb95596ea11b8290b196ac", "support" ], "css/css-typed-om/styleMap-update-function.html": [ "a1dee75d914b68753af742ce8e6dbbac0397a9a6", "testharness" ], "css/css-typed-om/stylevalue-normalization/normalize-ident.tentative.html": [ "162ce70613e78bb007ea24ea525ec78ef17cd3bd", @@ -514769,17 +514930,17 @@ "4bc704fca50d3a114fe0fde76b6030516662d43a", "visual" ], "css/css-typed-om/stylevalue-normalization/positionvalue-normalization.tentative.html": [ "9334ee684f4a2897f6a191d9217e63af5630cc0d", "testharness" ], "css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative.html": [ - "1b1af8a14ed0a1751ef3899e574e263c842440fd", + "a4c39f9ea72acba74027e6ffb26e221606dcd9ac", "testharness" ], "css/css-typed-om/stylevalue-objects/interface.html": [ "5c9086db5b7f3a9d6e3109f1ce47385ad345f474", "testharness" ], "css/css-typed-om/stylevalue-objects/parse-invalid.html": [ "d46bda9e4f7c50d27c9f1e18c643e2b1a8570896", @@ -514805,17 +514966,17 @@ "a71f7f5afdd97a55eeef2adc89914194ad5ecb0a", "testharness" ], "css/css-typed-om/stylevalue-serialization/cssPositionValue.html": [ "155be052f2810afb0560b72e7c223293c02e61a8", "testharness" ], "css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html": [ - "71591a5fdc7f90841dcc204c70f1a3e611024edc", + "5bb6823ff35152e1a55f573d568e29b7edfcf2d7", "testharness" ], "css/css-typed-om/stylevalue-serialization/cssUnitValue.tentative.html": [ "e1c27e0baa33d990c83ee3d562a3eeae3106b833", "testharness" ], "css/css-typed-om/stylevalue-serialization/cssUnparsedValue.html": [ "7ba0e1c9db3799bad925036de1da7c51fd102610", @@ -514856,16 +515017,20 @@ "css/css-typed-om/stylevalue-subclasses/cssScale.tentative.html": [ "779c99a24057f5a2c33fcda77f5897c142659518", "testharness" ], "css/css-typed-om/stylevalue-subclasses/cssSkew.tentative.html": [ "91ff825d12373156b3c3b23d23bf866220ef1386", "testharness" ], + "css/css-typed-om/stylevalue-subclasses/cssSkewX.tentative.html": [ + "be786095d55df3e6d9d4b10d8ef7c9da95beb1f6", + "testharness" + ], "css/css-typed-om/stylevalue-subclasses/cssTransformValue.tentative.html": [ "c1ee0153bd654f64b64f74bf00b6b0709c7cb9ed", "testharness" ], "css/css-typed-om/stylevalue-subclasses/cssTranslate.tentative.html": [ "700fae462f258404f3d0b8fad290613fc1929e1d", "testharness" ], @@ -515064,16 +515229,28 @@ "css/css-typed-om/the-stylepropertymap/inline/set.tentative.html": [ "00d06230cd8f21d522ab895c853201f9910d0d90", "testharness" ], "css/css-typed-om/the-stylepropertymap/inline/update.tentative.html": [ "30ee6179d77f18692867217c18852db94b1d10bb", "testharness" ], + "css/css-typed-om/the-stylepropertymap/properties/display.html": [ + "344c75e256cf3284d6582c2cd3c9f726d6d7f443", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/margin-top.html": [ + "3a6cb963dd8ff07522ade6839f8de5493fd49414", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js": [ + "b0099e66215cc2631bbcb5b2b0c87d16b6f60e21", + "support" + ], "css/css-ui/OWNERS": [ "beeb8a77d396e48731fd1e69a922b6e2c84c2caa", "support" ], "css/css-ui/box-sizing-001.html": [ "5e913f2edc75ae0369eb59f67f320ec552472160", "reftest" ], @@ -516220,16 +516397,28 @@ "css/css-ui/reference/text-overflow-021-ref.html": [ "317e02ebc1fb90e7d91bed1fd982d2bf81a10cfc", "support" ], "css/css-ui/reference/text-overflow-022-ref.html": [ "a223e8c0151a7ffc350466dd3b13f766f67425e8", "support" ], + "css/css-ui/reference/text-overflow-027-ref.html": [ + "2ead9e9af4a591a5bf450f8449e9b658a24a8154", + "support" + ], + "css/css-ui/reference/text-overflow-028-ref.html": [ + "86673d6286a6676157d19f000fa3b29b74f592b8", + "support" + ], + "css/css-ui/reference/text-overflow-029-ref.html": [ + "4a01c40b4137a40b316be134899d33202b934850", + "support" + ], "css/css-ui/resize-001.html": [ "cee9af6bf866dc360a2f6e8a8a8b29376205dfde", "manual" ], "css/css-ui/resize-002.html": [ "6bac967ea52ac21e91e2360aadb98e8811a08174", "manual" ], @@ -517356,16 +517545,28 @@ "css/css-ui/text-overflow-026-ref.html": [ "03c0337af58ba7bada64ab36721d9f1fe2f9a2f3", "support" ], "css/css-ui/text-overflow-026.html": [ "5087fe90cb3ef8e340be316f1534cb6dba3e0d17", "reftest" ], + "css/css-ui/text-overflow-027.html": [ + "3a3c0bc49087b5ae18c62fa2c50003f9ca8dccc2", + "reftest" + ], + "css/css-ui/text-overflow-028.html": [ + "62dbaef147720aedb50e1ed682a72becee07f58d", + "reftest" + ], + "css/css-ui/text-overflow-029.html": [ + "213162b8e95c0bf4f61a8fc01cc034310c87f6c9", + "reftest" + ], "css/css-ui/text-overflow-ref.html": [ "db55b0b95a7406e9c4f00081b3e2cbe6b07363f7", "support" ], "css/css-ui/text-overflow.html": [ "d3a6c835c23b82a85398e7981461a0cd3a75b861", "manual" ], @@ -520409,73 +520610,73 @@ "4cbcdb79cf6f1359855fd4c9668327bdbd15859b", "reftest" ], "css/css-writing-modes/float-lft-orthog-htb-in-vlr-002-ref.xht": [ "3a6acd515d3631525965d274582b81f7df575a2d", "support" ], "css/css-writing-modes/float-lft-orthog-htb-in-vlr-002.xht": [ - "f3e8f14fcaaa56c34406b30649f0587e49e74fb4", + "9f5089a9d34072d66d5be282abc2b4bda24717e0", "reftest" ], "css/css-writing-modes/float-lft-orthog-htb-in-vrl-002-ref.xht": [ "83bbc497ac7e9124f1c1814a8867e46f33d84ccf", "support" ], "css/css-writing-modes/float-lft-orthog-htb-in-vrl-002.xht": [ - "f87b363d913724d318af7424e624a0be494ec7a4", + "2c48926c21590e741a9cc0b895d9f3cc6839b345", "reftest" ], "css/css-writing-modes/float-lft-orthog-vlr-in-htb-002-ref.xht": [ "cca786380598b2395ef041ade525cbb97bc063ac", "support" ], "css/css-writing-modes/float-lft-orthog-vlr-in-htb-002.xht": [ - "66d49b63ea24b308023beef7fe0c572b13139110", + "a17d200553e582b65cb86a929f5c2d3d39274726", "reftest" ], "css/css-writing-modes/float-lft-orthog-vrl-in-htb-002-ref.xht": [ "4d57c8be55869f0426185834f2d6cbbbe532027a", "support" ], "css/css-writing-modes/float-lft-orthog-vrl-in-htb-002.xht": [ - "2644d7e8399b29cc6f8162c9962ee69a173c898e", + "f6ca89bfcb6e674bfdabe1c9537db0bafadbb032", "reftest" ], "css/css-writing-modes/float-rgt-orthog-htb-in-vlr-003-ref.xht": [ "f55089e3f99e9316526460e31f975333b111d2ed", "support" ], "css/css-writing-modes/float-rgt-orthog-htb-in-vlr-003.xht": [ - "0909fd3ad8e36dd2e18a2b29c2c0452854884a09", + "bfdcdbc8282ee66e17b1cae353302ea9b4f62937", "reftest" ], "css/css-writing-modes/float-rgt-orthog-htb-in-vrl-003-ref.xht": [ "091209669a60176b10b508113938eff57dd9e09c", "support" ], "css/css-writing-modes/float-rgt-orthog-htb-in-vrl-003.xht": [ - "a619d760c7c1c4ebd7e276fe8d9593cb89664e6b", + "b6c9bda1aeb5d641a3e316e3ddd2617ff0686b7b", "reftest" ], "css/css-writing-modes/float-rgt-orthog-vlr-in-htb-003-ref.xht": [ "17ee3d60ef94c8b1939486a4149d635e677a49f4", "support" ], "css/css-writing-modes/float-rgt-orthog-vlr-in-htb-003.xht": [ - "c1db3af5d5de4ab629dd51d843a5be33664fdfdb", + "794149a1b1bb8fe88e0ae451f544aeba5bdf8138", "reftest" ], "css/css-writing-modes/float-rgt-orthog-vrl-in-htb-003-ref.xht": [ "2905ecba6a26413323a19b294fe0f848ff8a7314", "support" ], "css/css-writing-modes/float-rgt-orthog-vrl-in-htb-003.xht": [ - "9912c24db61e65b88a4234466647bcafd1b30a88", + "03fce90ab3383410f008e868defeda95eec2518c", "reftest" ], "css/css-writing-modes/float-shrink-to-fit-vlr-003.xht": [ "0d474ef72c50647a7a182abac0d661b73ec9c9f4", "reftest" ], "css/css-writing-modes/float-shrink-to-fit-vlr-005.xht": [ "1c05ebcc852d6a31b9dde9609e7c73dfcedf86c9", @@ -522025,289 +522226,289 @@ "252c877b6b62e93b69b97a9dcc99498c5f56db65", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-001-ref.xht": [ "31223eeb2b9b8e7077fd90fc18d29221c63cdb6b", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-001.xht": [ - "062fa49d4917baad19d00f5b91a29424c8dde79d", + "901e425aec84a8b0d56cfc8e8a3b40131d1a954e", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-003-ref.xht": [ "1fbb431cff566cb5215613c1b9b7f728869449ef", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-003.xht": [ - "1c9e187e9ae9b0cd94067cb06b7dca1e7267ad62", + "05143b4edb1df38ef6c8e62a1889fac8b9cdf2ea", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-004-ref.xht": [ "1c243c95bd30d7bf3fc90d8e9fa5aed68b6f80f7", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-004.xht": [ - "e908a3973be90ed7f6e002e95dc32d488762a9fb", + "dd35913cd65c1afe305a1a7e1ff66286de6e6835", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-006-ref.xht": [ "709241f95c6f7fa95020e05010bbfd0b1de4725d", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-006.xht": [ - "0b678f8bf6b69e94a18d70b41a5c004eb3618b15", + "d8fdd3eb77926a78a3321d61347f3bfc8a1901d9", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-007-ref.xht": [ "3b76e682dd6e169d459e458d587b6fea5dc71ac7", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-007.xht": [ - "5a1443cd05c42ef1913b3286c954001ead7e4de0", + "14120c2ebd4c08b767b93a1edb7d267ab4f16941", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-008-ref.xht": [ "53c323c3e644c0e561d89fd9e64bf0482e188427", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-008.xht": [ - "3a77f22047e22a067cd1e5e73eee94b31fa5618a", + "b1a4db27c694fa023d6b309a3b54f2fd2b71dceb", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-009.xht": [ - "2d4f8e5e439ca4f7ab20950cb80d34a2761b6569", + "40a12c005d3a2c4b509e0fbda3a7249b0df70562", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-010-ref.xht": [ "7616fc5b8e0f7668aaf63cc29efdac03ec6ee6be", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-010.xht": [ - "b9998ffdb4744fe6d1d71016552b166056773d6b", + "2859517023f8eb400a34fe92c72a9271ea66b902", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-011-ref.xht": [ "b0735e7b25ee70a786a870ad2405e6f8c9c1b737", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-011.xht": [ - "d49dc741995575554327d7dc51a8de7addecc61c", + "b9b49fa21f1bdd06f7e041fa0dace8de79ea5c53", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-012.xht": [ - "ceb86c4d1018105f7323c52cd566ede0993dc57a", + "045640a233a5cbb2ea1986dda6e01f507a1ee52f", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-013-ref.xht": [ "d30b49445cf2ca371c055e80addbb9fadb555ef3", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-013.xht": [ - "786e589dfd035b20e20cd3095583f192f65166f3", + "26bdaabbeb5642186a4452122714d900f1f597fe", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-015-ref.xht": [ "7b896cfd0e378a3b10b3dd4076d230d76506b37c", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-015.xht": [ - "9e8449f6b72a4b18d1c020a3aa6a8232ae0efa4d", + "45eb0ef69a56268116f03430a0421b0e489797fb", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-016-ref.xht": [ "54558796716648716b1ec507177972a1e5d4c9eb", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-016.xht": [ - "85e1704703ff89d0d873a9054e1dba06d20149f8", + "f302fcfd9506a3bcd924afe1a6cd2ec4d9a2569c", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-018-ref.xht": [ "9e84251c0996327b4e7b783a662ce07bcecd2447", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-018.xht": [ - "bfbb7f84203ebb733d3c8ad527a80c9de3df0aa3", + "7ea64c9467f39293d4da4ce04f09d33c06143d4b", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-019-ref.xht": [ "e61715ead3ca3c9e5e95643f14a5376bcb1e2b3a", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-019.xht": [ - "f2b5731dd499062713db36d7d34312cb7f8888c7", + "7a4d00311194f62ddad5487ecf7c3a529330a14e", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-020-ref.xht": [ "8c7ddc2be2595d97bdc96cf2f182ff3f8133e528", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-020.xht": [ - "74e46119562afb3a4cb289e561c7da33ffadb0d4", + "ffc5650d73d9491bc9ea87c888566b7c07a43784", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-021.xht": [ - "e137ac2cf9bcb1c49b5c9cd0846ea721c8c3c864", + "ec343d85e1ff79e81d222bf0de15a926a8898ac2", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-022-ref.xht": [ "382ce632865ab6b2f7e3fe45c6f44037d1c0ea5e", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-022.xht": [ - "260cde729a1c749fc557d5c0877eca2eb93e4693", + "207d9b8288bb77b047e485d65f94960374110228", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-023-ref.xht": [ "865cba963a52939c284976fa080ca94b31a390ea", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-023.xht": [ - "6d2f4be5557a52e649b9c37140c248e3409fa6b5", + "8267b122163cbd1159d53bd46e70eabe54cda7d7", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vlr-024.xht": [ - "ea5fc6d5713fd925dd61f0c1329a13cc2c6abeca", + "ba77e91c9fb816a870cf61683c2277e4fe1658d4", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-001-ref.xht": [ "3395ea2eff2432ec27e9c5442180d8fbfd72fe71", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-001.xht": [ - "56c614672c8af64ba8bdd19325479be07c29deec", + "e476bf16eaaddbaf7d73bb6689bf410d0af92d14", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-003-ref.xht": [ "8f6bb55295fbd5098f4926d881d867741db72d19", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-003.xht": [ - "a5faf8b2fd80d158afabf4719dc11233bea63c21", + "bebce317cde666a913e6d6c654efd93f3aa0c46d", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-004.xht": [ - "c007527fd14a528dfb28cb4c16b36e1bf248d9f3", + "9bea5e2666bf14be2d6b0d3588a400351a9f158a", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-006-ref.xht": [ "6e1b0e5b60c86c845225df52c47c146266bdfc6a", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-006.xht": [ - "3378a514319ee9987c519b9a535fec88258248d7", + "848c09a400cd57d16084ddee42c4fde05eb5f5bb", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-007-ref.xht": [ "4febcb6ab14d38a073b749f00ebedb2562bde1b1", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-007.xht": [ - "b8deeede88e4b6662aa993111fa8b3371fe1aec4", + "90cafa81f1c1224d7bc940c558dafce4a77b2e8d", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-008-ref.xht": [ "207d331cc97a52b75d86d53473a872b8965c270e", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-008.xht": [ - "ce09d940b2648fac1459aa2bb2c1a6025e135ebc", + "8fd1eca8e34927e478fcebfa954dbfab1a3f54df", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-009.xht": [ - "87faddc35a193b61b70cd4448fa54b82dbb56563", + "aa41835735ad65ae75209c460c09b66467cf5a62", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-010-ref.xht": [ "5401aa0f83edf64ae6f62ea242dab693b9d500bd", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-010.xht": [ - "c601018b690eb8fe31a990630a4eb78f70cb9ef8", + "cc7e3b465ab5610c9db0e93981ef68b82f15177e", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-011-ref.xht": [ "43d4b8c4c97279999db4146a17c4ce7652741701", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-011.xht": [ - "6626f2e3624dc8bba52894b85a672dc052f11775", + "7961f9e20605e59318b836b091eacbcd02f49292", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-012.xht": [ - "580d740a994fa7e4ed5f1f796221cb532a065418", + "1c5f31b836afa6a2e3a65abef90c0ccf346effbc", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-013-ref.xht": [ "e249c388687e85456d84bd9db4b619dd1a8686e5", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-013.xht": [ - "c84e96a87de1a3e53dd0abf7da31bf44ee2a8cf4", + "24c9838701a55a2b4635b945e1fa6123df1bdb8a", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-015-ref.xht": [ "8f72220cc50b410b1d42e8b15a37b313cf17a363", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-015.xht": [ - "69b1438ea40979c31fc58f4b9895155e2193de6e", + "f8b5a81827b4c514762148fdf7ae1ff779f81dd8", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-016.xht": [ - "bbb293297011d12a4f0b65a4531cc4f344582414", + "472102eb4c09e1cdae7234f32ae3761372e24271", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-018-ref.xht": [ "b8239a66ac9569b3f47a5e37c44443292c78d40c", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-018.xht": [ - "633d56d95065490256404ba0b6af4d42e08dd172", + "6d006bee854cc4eb666fda1ee7e8a377e2fe3ae0", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-019-ref.xht": [ "9d348a5c9d7e8661f7c23429a23da54e4d909add", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-019.xht": [ - "b4190272dcc03dd6cf4805f99d025035e6e53666", + "abfc982953a9a4eb022c88c9ba832b3ed6ac22da", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-020-ref.xht": [ "d65db617493cd491135bed7034b3b1a7f68a21a9", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-020.xht": [ - "cbcc15795b61c0fb0115332799bd1451205e8570", + "575344cec5208daa1a897bfe5383a6bd4b6ceed0", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-021.xht": [ - "7b5286b1a85f309d32ea7e79c99db59fe648c236", + "126c8c038a6911840d2c3b142933eac9a7814027", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-022-ref.xht": [ "93c74e1f4edd9a972bd961d5e0fe6c58754dc7b6", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-022.xht": [ - "9d75adf153d34f9f64c03a3b6a6df7a41aeead96", + "1f4331ecd50a115856e04633aca222e688e13af2", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-023-ref.xht": [ "8f98562ad7c5caabe40b4280681abf82f73c4c3f", "support" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-023.xht": [ - "5a6b6fd245a48de4f9aec4914f6191c453ca3648", + "47e92d37e1c39bc207017b8fdbc313bc1fc3c8d5", "reftest" ], "css/css-writing-modes/sizing-orthog-htb-in-vrl-024.xht": [ - "1d4fa6791fee2e7dac011966f27a23043181f08c", + "1ff60ed2d3504b206ce72a982e3c64a69f000ba9", "reftest" ], "css/css-writing-modes/sizing-orthog-prct-htb-in-vlr-001-ref.xht": [ "15c27a50ebfc4f08ced0889b1ff63027593351e5", "support" ], "css/css-writing-modes/sizing-orthog-prct-htb-in-vlr-001.xht": [ "54c034ffb25652897b9e29fa8327607caed57302", @@ -522561,313 +522762,313 @@ "592e40eff9a9b6f5a71d97eeed5b9873939b7f07", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-001-ref.xht": [ "8241a375d6aab302ac3c3511b30c9b188b9e160f", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-001.xht": [ - "a503274698e73601e160644439b9149c72dee0cf", + "0b98049173e4484d1feebe93dddaf7dfce2effca", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-003-ref.xht": [ "028f3950b8fbf622d33b071522dc4661d0d24554", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-003.xht": [ - "78ce838ba7870ef13f303d403a710052313ba5b7", + "e6d0c165a5082440cdb06538e6dab433a8fe42d9", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-004-ref.xht": [ "05c0d7b2dd2aa47932312b4ab00bc5cf5be2dafa", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-004.xht": [ - "6fce6cce59fd755d910dcf20cbc6ffa1150bc115", + "9775f488216af71fa8ef7b0e48bd9747bc21b09b", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-006-ref.xht": [ "b845c6296e8d1b486f35040371de40d5b61fc7f2", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-006.xht": [ - "cd6bf42940756a11bced234b08db2d34ed02e848", + "66fe7dbd070d2314bbbace86945adbec55f83478", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-007-ref.xht": [ "586b50b58d770c8946f4aef9ec7f63863992db76", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-007.xht": [ - "a1d52ce7cdc8f7c265c8f31337ab11d59b8d3289", + "b7962676e2a809a865f07b70eb457fd85c794706", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-008-ref.xht": [ "9e36d2c0769b18f9ef227827f6376feb3b78bf07", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-008.xht": [ - "ee9669997069ba792ea54b9e461c36b2de5df3bc", + "9d65e04e301dd1635daa24a1999131114dc84634", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-009-ref.xht": [ "2296abf2111e6512bfb632c931917eeacde45031", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-009.xht": [ - "c3363ddf411902cd7948cdba03dde2ba466801d6", + "25fd39a18025c51c28a7b73d1346e2e2fec505d4", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-010-ref.xht": [ "f48e6cdd98a5343cb245887bfbc4ef5199b84e69", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-010.xht": [ - "0d797c8456474b287533cc76cb3a82f16f0bf0a2", + "a5ff5ac0a5f198465a2ed6bbb75b4826e7fd1b0e", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-011-ref.xht": [ "d488abc088bed258b10494cc8f58397145f1d717", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-011.xht": [ - "10737fc5d803033123dff2339c63326103f29c37", + "551b986ea9094c7402993373dbae6e60038d0ebb", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-012-ref.xht": [ "7befc64b3f9a4abdc9c1826128dcffb853fec093", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-012.xht": [ - "63c626891651ce57f25e0f5ff02f3b399c4f54fe", + "4623a6952246c5d551420eee8d270fad765da16e", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-013-ref.xht": [ "9b6b9b2868cc234e3e7ed8998177f3a441e21e32", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-013.xht": [ - "9074ceab5bfd80cdbf9a20122aa4a4e714ccea1f", + "22266483e39f2224ad823cdd88a90daec0abe5e0", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-015-ref.xht": [ "42dc6d420aae2938fb10a41394d18b3fbb3178ce", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-015.xht": [ - "3422d57d67971aa4b3a4e89bfed9261ad9ab907f", + "5b777c91d90f461e746f7ca500b7383ff37346b0", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-016-ref.xht": [ "0e3e920223575f9f9e441e97e3155f00282b9c6d", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-016.xht": [ - "ec3d006c52ae738553545b5113a43cbb45941fb4", + "23b0b1e8e60077c7a308f78a9d501e994aac1970", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-018-ref.xht": [ "5f3d41ab46b03fcd2d08ae55fd3d64b4df36441e", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-018.xht": [ - "10903528f0d5fce57222066579a9849e22ebbe31", + "560cf570e9b5a9669f6c2d9496a6d4dca4c1624f", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-019-ref.xht": [ "0cef155326ec219fb3b9922fc75191ace4131bc4", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-019.xht": [ - "9e6bd5dc41e1d52cef3707e3536f9a72aa3ce0bd", + "f7d84c71be0494df9d8feb44711f6197bd1712d0", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-020-ref.xht": [ "a723fd3992bda407bcee9f8ca2b8712bea6023d3", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-020.xht": [ - "c9604dfbe57ec804862fca7d1679c92251179bf7", + "448a501ac157bbe1e385c3d24d04563d69dbc67a", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-021.xht": [ - "0fd5dcddba4846687b72309675d795a4dcd332ef", + "39a7c6a43fc8ab5d3d8d06dc96d37759574f5dbf", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-022-ref.xht": [ "8d2bc25abb24afc286b614265ebe60921adcdf0a", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-022.xht": [ - "f625da38b3a590b3e86bde764f29d0ca3f96a311", + "1e5cd3518f89413d49c79b87a3e9e1b174f90cc0", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-023-ref.xht": [ "34d6b9f280983490cba3567c71c5c11164306481", "support" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-023.xht": [ - "f05105575e7f4b433bb7cfc78242e73422e14211", + "148bc23619af19f5f46aba4c510104bd83ecce96", "reftest" ], "css/css-writing-modes/sizing-orthog-vlr-in-htb-024.xht": [ - "e8d83d586a0388aa20f76487f9573ab83a671f51", + "8734d242aff6d745f31590885b04959a01e56575", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-001-ref.xht": [ "a5af7fb66abfcc055659f1f7297889b3f1a5a418", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-001.xht": [ - "e734439a240603c66a2026d2f29b30b7b9c19380", + "f7528e5128ec256893239bbfe17e34b968b1f6a3", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-003-ref.xht": [ "bbe9d3ec9bcd9ce5c8d55bb3b1115bb61aa2c07c", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-003.xht": [ - "1399708a98eb73fa58846153afb366c95abf9e60", + "752f53a16758fe90656b93a245c4c88b4e9d7251", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-004-ref.xht": [ "b32e4c8ca10c6715ef0794cbe1c34cd98e1af35a", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-004.xht": [ - "6b3f40fdf1109e896260af19415665a4990235ae", + "72fb45c82e9ef4beb5b7c7a48c41b72fbc6dc27d", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-006-ref.xht": [ "1960b3ca876ca764bae07e827a659f4ab1609925", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-006.xht": [ - "d2921ce48fd18d470c7a9832e8efcfb1cfe3ddee", + "5896ee59ab55c09f6b6d4d41873152b53b1d1255", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-007-ref.xht": [ "a6a7cb5b5d9b66f8e164b768b4febe9cba916abb", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-007.xht": [ - "3a9e1291085511838539c1d660191f52983ea9d5", + "42e5de9da46adb6fffdc9a9901d2996305bf7d7f", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-008-ref.xht": [ "650381805263bc7570564044cc16047513a7a5cd", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-008.xht": [ - "8ffd5250ca99768e52b70466837185136cc5cb03", + "03825c7965f99db672b1bb255a0b50b8a2a374ea", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-009-ref.xht": [ "67b482ca2bba31b822e4d291c5dd1e4e6a36a61c", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-009.xht": [ - "82466fdc317cb3571af93da0a7afc977d7acd587", + "5692884df8c2402c729d0ee09ba74e62247c62ee", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-010-ref.xht": [ "50dafd70a50970bca0019ebb6ad54d20005d8528", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-010.xht": [ - "6da1576e5b89d01f685f173350022026f33abe4a", + "97390eb81ba0f0b694f1858313702c8ff88c30b6", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-011-ref.xht": [ "cd77fe75ef0beafbd7d593b360197cc72ff265da", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-011.xht": [ - "fd684bf6abf99a3b1aa54d179659645cc4a2fdea", + "1f8530d1738f1890876bf569bd2588312f31f367", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-012-ref.xht": [ "4c7b503f89562a3827e307c1fcdc8da5b3e3ab95", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-012.xht": [ - "6e0c7bfc9a2dd850226ed5e2337be1660c58cb2b", + "0c8601a96ec72775ccb9ae52edd617aba6f609d9", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-013-ref.xht": [ "0118d2f7b8297dd6a6d10759ca029aef9db1cc33", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-013.xht": [ - "c28d87a65f6a5218f4ed7915a422a5ecc82c3f68", + "b6ab9350512058ca1c209382f66ceac2a2ceef3d", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-015-ref.xht": [ "176a57b8b1ca386428c385c6b1f5c8ce918b597e", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-015.xht": [ - "8b5784b22d09a53f594fd658d56de338ae6fd8e9", + "c87df0ba948b61fd91e61ddbbacbe1c8d8a7e56a", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-016-ref.xht": [ "598be8711537b9e293ccd4ebdc3dba30e9cfa7c5", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-016.xht": [ - "46c21a215a48e884142b52a54ba34bfd02e19a4b", + "d273e6c00c4fa8cd37a6326f43fff8ae28720851", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-018-ref.xht": [ "be5951266b80edf3b27e29384875dfb107a020fa", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-018.xht": [ - "255802f531cbf3cc9e02cd47dc52c0052a607494", + "623381f2b77421b5d7846bbe5852da2a2e45f566", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-019-ref.xht": [ "798d0be68512f0c59f403857b6e523266121b2a6", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-019.xht": [ - "ef30488fa45a543d1c12c60868e9cada1a5d9cee", + "65ef8912d1681c0b72246f6dd26547704bae55ae", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-020-ref.xht": [ "cf47bdbf58e4ffccbbb05cd71e3387cf3c901791", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-020.xht": [ - "2883e0047361b95e3176e84fe0fee27d31e32f5e", + "1b65ce90afe50637dda87568855027bc48d3949b", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-021.xht": [ - "871795a6d8e31bbab05ceb9965f8234aa115cf43", + "953ccfc3d0c9069f34146da22b5621f0d7356ed6", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-022-ref.xht": [ "abc45262786f76c5d82ab19a6e697ea7a0781042", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-022.xht": [ - "9832a45c218ebe19e611130f00247f07a27788f5", + "7b7d75785df63a55945ddc3c2887bc9af6d73bba", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-023-ref.xht": [ "eb077b86b6f0a95ce3cf7e4c4019a3f91b1c210f", "support" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-023.xht": [ - "1dea70c22f83b26e4bee4f0658a4236559a19d74", + "5faf4ab2bdb4f36cc51e499b90bac966763bbdbf", "reftest" ], "css/css-writing-modes/sizing-orthog-vrl-in-htb-024.xht": [ - "82f45245816a1ecb4de68f919e88bd7cd96057c5", + "770cfe7939de94e221926b65bccfa057ee7711f2", "reftest" ], "css/css-writing-modes/support/100x100-lime.png": [ "b02fc2d0ad1d95a2aeb6011022e63928841b183f", "support" ], "css/css-writing-modes/support/100x100-red.png": [ "6fdfe9cdb3f6aca4564a08e443784e3abd952b52", @@ -525005,17 +525206,17 @@ "f0d47464da9d30e70733f09af78f3e9f982c4406", "testharness" ], "css/cssom/GetBoundingRect.html": [ "7e5a8b25753ac970c2d192376c9dd93943b3dbb5", "testharness" ], "css/cssom/MediaList.html": [ - "784bc428e8e65a0784dcf89c6e3e27305781cc72", + "0357bff95fc870624d13ad3bf61cdfff5b2ad1cf", "testharness" ], "css/cssom/MediaList2.xhtml": [ "c7481f3c0fe943abb6d67004d6c4aaff12180e34", "testharness" ], "css/cssom/OWNERS": [ "f131f271cb2f747e845584abcc445348e8c86521", @@ -525033,33 +525234,33 @@ "9199534f3b6cc473832562b1701ade3a05dde172", "testharness" ], "css/cssom/css-style-declaration-modifications.html": [ "c169d758c1d91b75697b04cf72750f8ac1650e1a", "testharness" ], "css/cssom/cssimportrule.html": [ - "da36c32a7ecad7542c73572917709ee394dc843c", + "f8a110a236529e78b528117b25866015d67568d9", "testharness" ], "css/cssom/cssom-cssText-serialize.html": [ "66ad91da39c1e1da9021f6443e9b6d34baf57dcb", "testharness" ], "css/cssom/cssom-cssstyledeclaration-set.html": [ "12f5dce3d37a718ac5c872f662cc9f3d9cf09179", "testharness" ], "css/cssom/cssom-fontfacerule-constructors.html": [ "c064661df74571d374f49a693f3263fcf138e670", "testharness" ], "css/cssom/cssom-fontfacerule.html": [ - "965a8f6289fa5c6e34bfd447de3b8ef86573fea1", + "ca5e2f162a4a0dd02f3c46e72b9e43e1b61d621a", "testharness" ], "css/cssom/cssom-ruleTypeAndOrder.html": [ "3940c95b6c5664b0efee76cc90ffc466c218366f", "testharness" ], "css/cssom/cssom-setProperty-shorthand.html": [ "14c752e5dbeab2d58983d53aceab08519379bf0f", @@ -536961,17 +537162,17 @@ "3eaf4dbfe67edd892c9a950c20a87c9b9ed565fa", "testharness" ], "custom-elements/attribute-changed-callback.html": [ "320fb2bb26e7495d0829c39c113df3ea7ec1f4ef", "testharness" ], "custom-elements/builtin-coverage.html": [ - "9163c06e2bf06b67e5ddf16a6b6d95ca7d64fb4d", + "47f6021a5d55b9fb0bd435cd42ceb022ef2b7f6e", "testharness" ], "custom-elements/connected-callbacks.html": [ "615db12371d6f1f0ed6763abee3a84af9f87c0b2", "testharness" ], "custom-elements/custom-element-reaction-queue.html": [ "68b226d776736e6044f842c440b42606b63c7175", @@ -537032,16 +537233,20 @@ "custom-elements/parser/parser-uses-create-an-element-for-a-token-svg.svg": [ "51ecc75f42124e8071a767ef908ecc915cbf0fc1", "testharness" ], "custom-elements/parser/parser-uses-registry-of-owner-document.html": [ "a62669ffcc75d54df38b65e33463566238c8644c", "testharness" ], + "custom-elements/pseudo-class-defined.html": [ + "cf29756830dc12e60390c08486bbb3170c9c9c71", + "testharness" + ], "custom-elements/reaction-timing.html": [ "2e390d9b3f4b725cfcaf02e4a5b088a2b7ca7f4d", "testharness" ], "custom-elements/reactions/Attr.html": [ "f16c4bfdb097fbcaa4a039eaa25bc83ed72b2081", "testharness" ], @@ -573589,17 +573794,17 @@ "c2c952d562f601f2104014f6236368a7f6b84801", "testharness" ], "pointerevents/pointerlock/pointerevent_movementxy-manual.html": [ "09da177c312d4112bc0177221cccaf787455db7e", "manual" ], "pointerevents/pointerlock/pointerevent_pointerlock_after_pointercapture-manual.html": [ - "c3f3e1ed9ed8b404e4d6c68b9b518047ed87002f", + "272fc056c5a31a70d17fcde39fa99c27cde695b3", "manual" ], "pointerevents/pointerlock/pointerevent_pointerlock_supercedes_capture-manual.html": [ "1968369ffe9917377fe3bb8801f8543aa9c0a9cf", "manual" ], "pointerevents/pointerlock/resources/pointerevent_movementxy-iframe.html": [ "829b27c2a0f9281d65f7e2d760c7204781c71660", @@ -583533,17 +583738,17 @@ "b854db3540539d20aa0bef0f869edabd0b8b4d47", "testharness" ], "service-workers/service-worker/fetch-request-no-freshness-headers.https.html": [ "9631947d3cec78547bd4666b8ca970d037648cc8", "testharness" ], "service-workers/service-worker/fetch-request-redirect.https.html": [ - "e1ea127e72573e97a4d175c1780bfaae6f537972", + "d9df49b76012233e0aeb92f50a0613f90e8b3ee1", "testharness" ], "service-workers/service-worker/fetch-request-resources.https.html": [ "d21ef5a4263e26cd3053a89171e2597424eaad82", "testharness" ], "service-workers/service-worker/fetch-request-xhr-sync.https.html": [ "4aaa0b1995643f4e18c47d1947476a1a67fe997d", @@ -583569,17 +583774,17 @@ "989c30567eb1dd650dc7e2bf807e18961c991087", "testharness" ], "service-workers/service-worker/getregistrations.https.html": [ "15c2be991ec5b02a0aecf54e6c7bb455f240141d", "testharness" ], "service-workers/service-worker/http-to-https-redirect-and-register.https.html": [ - "95aee5b0d561467fb5da27f62210be9808539706", + "d9e1cc801c3ee075ceb5a5e68ce662cfb2432965", "testharness" ], "service-workers/service-worker/immutable-prototype-serviceworker.https.html": [ "5c17042fa54cd1fdba6f7aae513412d4a223b432", "testharness" ], "service-workers/service-worker/import-scripts-redirect.https.html": [ "ad5ca174b55222c41d1dc1a21fe0bc070357062b", @@ -584945,17 +585150,17 @@ "14d79d1008193c96f0eadaf3e47ef321a429b905", "testharness" ], "service-workers/service-worker/update-after-oneday.https.html": [ "9f43ba359c4d564f75d4ce4b6a040aac6ba50d5b", "testharness" ], "service-workers/service-worker/update-bytecheck.https.html": [ - "ab13a5489f964de56db2fe25c5895a8a55ab7d88", + "a39aa4877c3e47c8379b84f8520b6a726936867e", "testharness" ], "service-workers/service-worker/update-recovery.https.html": [ "aac5705d6844e4a33200418504adb57053a45be2", "testharness" ], "service-workers/service-worker/update.https.html": [ "d55da98b05b5885084474ebdbabdf6c0998f8bca", @@ -592212,16 +592417,28 @@ "webaudio/resources/audit-util.js": [ "4405458b8f8bdc621c95c1d9ec1c1ad4e6002f1e", "support" ], "webaudio/resources/audit.js": [ "1e7c1c4169bc54bd2046ff5b3392f846c6b7b40f", "support" ], + "webaudio/resources/distance-model-testing.js": [ + "0be27d8bddd91a2c4c6e54d3b52af58bff2ed023", + "support" + ], + "webaudio/resources/panner-formulas.js": [ + "872d9aa271558ee3e7aa293c8e3e44fd525461c0", + "support" + ], + "webaudio/resources/panner-model-testing.js": [ + "4aa047ffeb14b216d1c329c8959f21e580e33b17", + "support" + ], "webaudio/resources/sin_440Hz_-6dBFS_1s.wav": [ "09c866126524e4fc0d0fae84de8d34419b1a823b", "support" ], "webaudio/resources/start-stop-exceptions.js": [ "70e0f890a721786f8afa4cd032e75ef85b5fc6bb", "support" ], @@ -592420,16 +592637,60 @@ "webaudio/the-audio-api/the-oscillatornode-interface/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], "webaudio/the-audio-api/the-pannernode-interface/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], + "webaudio/the-audio-api/the-pannernode-interface/distance-exponential.html": [ + "c1c94753ebcd1930e326d73c085e6c3197967cd5", + "testharness" + ], + "webaudio/the-audio-api/the-pannernode-interface/distance-inverse.html": [ + "400d2a373de3e4255279930fca2ec559aed19688", + "testharness" + ], + "webaudio/the-audio-api/the-pannernode-interface/distance-linear.html": [ + "8e5d7d23f893b7e79446a82f46807b6106ea5643", + "testharness" + ], + "webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic.html": [ + "2916ba8f03b18c8da0aa71ea37d57bd604b1de81", + "testharness" + ], + "webaudio/the-audio-api/the-pannernode-interface/panner-automation-equalpower-stereo.html": [ + "43edf7a7bef1f4e9989b048c571659c83ad234f2", + "testharness" + ], + "webaudio/the-audio-api/the-pannernode-interface/panner-automation-position.html": [ + "81123665ad1f8201907251ddb0bb2707b14925e1", + "testharness" + ], + "webaudio/the-audio-api/the-pannernode-interface/panner-distance-clamping.html": [ + "820c902b9bcfeed9611ec9c3cba3ee2179a8cee7", + "testharness" + ], + "webaudio/the-audio-api/the-pannernode-interface/panner-equalpower-stereo.html": [ + "ebe3d2622a8bdc3802159fa0809c1aea28053b09", + "testharness" + ], + "webaudio/the-audio-api/the-pannernode-interface/panner-equalpower.html": [ + "28120d05419bb478f49f6bb2449fdf282af6624e", + "testharness" + ], + "webaudio/the-audio-api/the-pannernode-interface/panner-rolloff-clamping.html": [ + "60a763393acf1470fff8b7670b381e28ae6f9270", + "testharness" + ], + "webaudio/the-audio-api/the-pannernode-interface/pannernode-basic.html": [ + "074d64146ad36b989d783bf93fe295846287538f", + "testharness" + ], "webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html": [ "09241a8acbc3a556ac4fb24c0ae4de8c8f70c2ed", "testharness" ], "webaudio/the-audio-api/the-periodicwave-interface/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ],
new file mode 100644 --- /dev/null +++ b/testing/web-platform/meta/css/css-typed-om/stylevalue-subclasses/cssSkewX.tentative.html.ini @@ -0,0 +1,4 @@ +[cssSkewX.tentative.html] + [CSSSkewX tests] + expected: FAIL +
new file mode 100644 --- /dev/null +++ b/testing/web-platform/meta/css/css-typed-om/the-stylepropertymap/properties/display.html.ini @@ -0,0 +1,4 @@ +[display.html] + ['display' property] + expected: FAIL +
new file mode 100644 --- /dev/null +++ b/testing/web-platform/meta/css/css-typed-om/the-stylepropertymap/properties/margin-top.html.ini @@ -0,0 +1,4 @@ +[margin-top.html] + ['margin-top' property] + expected: FAIL +
new file mode 100644 --- /dev/null +++ b/testing/web-platform/meta/custom-elements/pseudo-class-defined.html.ini @@ -0,0 +1,97 @@ +[pseudo-class-defined.html] + [<div> should be :defined] + expected: FAIL + + [createElement("div") should be :defined] + expected: FAIL + + [createElementNS("http://www.w3.org/1999/xhtml", "div") should be :defined] + expected: FAIL + + [createElementNS("http://www.w3.org/2000/svg", "div") should be :defined] + expected: FAIL + + [Without browsing context: createElement("div") should be :defined] + expected: FAIL + + [Without browsing context: createElementNS("http://www.w3.org/1999/xhtml", "div") should be :defined] + expected: FAIL + + [Without browsing context: createElementNS("http://www.w3.org/2000/svg", "div") should be :defined] + expected: FAIL + + [<a-a> should not be :defined] + expected: FAIL + + [createElement("a-a") should not be :defined] + expected: FAIL + + [createElementNS("http://www.w3.org/1999/xhtml", "a-a") should not be :defined] + expected: FAIL + + [createElementNS("http://www.w3.org/2000/svg", "a-a") should be :defined] + expected: FAIL + + [Upgraded createElement("a-a") should be :defined] + expected: FAIL + + [Upgraded createElementNS("http://www.w3.org/1999/xhtml", "a-a") should be :defined] + expected: FAIL + + [Without browsing context: createElement("a-a") should not be :defined] + expected: FAIL + + [Without browsing context: createElementNS("http://www.w3.org/1999/xhtml", "a-a") should not be :defined] + expected: FAIL + + [Without browsing context: createElementNS("http://www.w3.org/2000/svg", "a-a") should be :defined] + expected: FAIL + + [<font-face> should be :defined] + expected: FAIL + + [createElement("font-face") should be :defined] + expected: FAIL + + [createElementNS("http://www.w3.org/1999/xhtml", "font-face") should be :defined] + expected: FAIL + + [createElementNS("http://www.w3.org/2000/svg", "font-face") should be :defined] + expected: FAIL + + [Without browsing context: createElement("font-face") should be :defined] + expected: FAIL + + [Without browsing context: createElementNS("http://www.w3.org/1999/xhtml", "font-face") should be :defined] + expected: FAIL + + [Without browsing context: createElementNS("http://www.w3.org/2000/svg", "font-face") should be :defined] + expected: FAIL + + [<abbr is=my-abbr> should not be :defined] + expected: FAIL + + [createElement("abbr", { is: "my-abbr" }) should not be :defined] + expected: FAIL + + [createElementNS("http://www.w3.org/1999/xhtml", "abbr", { is: "my-abbr" }) should not be :defined] + expected: FAIL + + [createElementNS("http://www.w3.org/2000/svg", "abbr", { is: "my-abbr" }) should be :defined] + expected: FAIL + + [Upgraded createElement("abbr", { is: "my-abbr" }) should be :defined] + expected: FAIL + + [Upgraded createElementNS("http://www.w3.org/1999/xhtml", "abbr", { is: "my-abbr" }) should be :defined] + expected: FAIL + + [Without browsing context: createElement("abbr", { is: "my-abbr" }) should not be :defined] + expected: FAIL + + [Without browsing context: createElementNS("http://www.w3.org/1999/xhtml", "abbr", { is: "my-abbr" }) should not be :defined] + expected: FAIL + + [Without browsing context: createElementNS("http://www.w3.org/2000/svg", "abbr", { is: "my-abbr" }) should be :defined] + expected: FAIL +
--- a/testing/web-platform/meta/custom-elements/reactions/Element.html.ini +++ b/testing/web-platform/meta/custom-elements/reactions/Element.html.ini @@ -1,13 +1,12 @@ [Element.html] prefs: [dom.webcomponents.shadowdom.enabled:true] disabled: if not stylo: Shadow DOM is stylo only. - [removeAttribute on Element must not enqueue an attributeChanged reaction when removing an attribute that does not exist] expected: FAIL [removeAttributeNS on Element must not enqueue an attributeChanged reaction when removing an attribute that does not exist] expected: FAIL [removeAttributeNode on Element must not enqueue an attributeChanged reaction when removing an attribute that does not exist] expected: FAIL
--- a/testing/web-platform/meta/mozilla-sync +++ b/testing/web-platform/meta/mozilla-sync @@ -1,2 +1,2 @@ -local: c32b6b173c0008be57ce56cc78878c2e29ef5472 -upstream: bb1f35100ad0aedeeb6897dd640b360f80498027 +local: 001cf1ba27c3446ae6e4650a773a7022f4ce48b9 +upstream: 3197bbb8a67f73a36230d3c2deab7f70cd660727
new file mode 100644 --- /dev/null +++ b/testing/web-platform/meta/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic.html.ini @@ -0,0 +1,2 @@ +[panner-automation-basic.html] + expected: ERROR
new file mode 100644 --- /dev/null +++ b/testing/web-platform/meta/webaudio/the-audio-api/the-pannernode-interface/panner-automation-position.html.ini @@ -0,0 +1,2 @@ +[panner-automation-position.html] + expected: TIMEOUT
new file mode 100644 --- /dev/null +++ b/testing/web-platform/meta/webaudio/the-audio-api/the-pannernode-interface/panner-distance-clamping.html.ini @@ -0,0 +1,28 @@ +[panner-distance-clamping.html] + [X new PannerNode(c, {refDistance: -1}) did not throw an exception.] + expected: FAIL + + [X panner.refDistance = -1 did not throw an exception.] + expected: FAIL + + [< [ref-distance-error\] 2 out of 6 assertions were failed.] + expected: FAIL + + [X new PannerNode(c, {maxDistance: -1}) did not throw an exception.] + expected: FAIL + + [X new PannerNode(c, {maxDistance: 0}) did not throw an exception.] + expected: FAIL + + [X panner.maxDistance = -1 did not throw an exception.] + expected: FAIL + + [X panner.maxDistance = 0 did not throw an exception.] + expected: FAIL + + [< [max-distance-error\] 4 out of 6 assertions were failed.] + expected: FAIL + + [# AUDIT TASK RUNNER FINISHED: 2 out of 4 tasks were failed.] + expected: FAIL +
new file mode 100644 --- /dev/null +++ b/testing/web-platform/meta/webaudio/the-audio-api/the-pannernode-interface/panner-rolloff-clamping.html.ini @@ -0,0 +1,40 @@ +[panner-rolloff-clamping.html] + [X Panner distanceModel: "linear", rolloffFactor: -1 expected to be equal to the array [0,0.018875712528824806,0.05621177703142166,0.06847958266735077,0.09856243431568146,0.12242205440998077,0.1495940238237381,0.16251686215400696,0.20651382207870483,0.21217726171016693,0.2435699999332428,0.2771494388580322,0.28300273418426514,0.32210540771484375,0.344368577003479,0.36553990840911865...\] but differs in 2047 places:\n\tIndex\tActual\t\t\tExpected\n\t[1\]\t2.8312625363469124e-2\t1.8875712528824806e-2\n\t[2\]\t8.4314860403537750e-2\t5.6211777031421661e-2\n\t[3\]\t1.0271595418453217e-1\t6.8479582667350769e-2\n\t[4\]\t1.4783872663974762e-1\t9.8562434315681458e-2\n\t...and 2043 more errors.] + expected: FAIL + + [< [linear-clamp-low\] 1 out of 1 assertions were failed.] + expected: FAIL + + [X Panner distanceModel: "linear", rolloffFactor: 2 expected to be equal to the array [0,0.009438800625503063,0.02810869924724102,0.03424321487545967,0.049286145716905594,0.06121714785695076,0.07480449229478836,0.08126655966043472,0.10326723754405975,0.10609924048185349,0.12179718166589737,0.1385885775089264,0.14151552319526672,0.16106881201267242,0.1722015142440796,0.18278823792934418...\] but differs in 2047 places:\n\tIndex\tActual\t\t\tExpected\n\t[1\]\t1.8877600496125524e-6\t9.4388006255030632e-3\n\t[2\]\t5.6217400015157182e-6\t2.8108699247241020e-2\n\t[3\]\t6.8486433519865386e-6\t3.4243214875459671e-2\n\t[4\]\t9.8572290880838409e-6\t4.9286145716905594e-2\n\t...and 2043 more errors.] + expected: FAIL + + [< [linear-clamp-high\] 1 out of 1 assertions were failed.] + expected: FAIL + + [X Panner distanceModel: "inverse", rolloffFactor: -1 expected to be equal to the array [0,0.018875712528824806,0.05621177703142166,0.06847958266735077,0.09856243431568146,0.12242205440998077,0.1495940238237381,0.16251686215400696,0.20651382207870483,0.21217726171016693,0.2435699999332428,0.2771494388580322,0.28300273418426514,0.32210540771484375,0.344368577003479,0.36553990840911865...\] but differs in 2047 places:\n\tIndex\tActual\t\t\tExpected\n\t[1\]\t0.0000000000000000e+0\t1.8875712528824806e-2\n\t[2\]\t0.0000000000000000e+0\t5.6211777031421661e-2\n\t[3\]\t0.0000000000000000e+0\t6.8479582667350769e-2\n\t[4\]\t0.0000000000000000e+0\t9.8562434315681458e-2\n\t...and 2043 more errors.] + expected: FAIL + + [< [inverse-clamp\] 1 out of 1 assertions were failed.] + expected: FAIL + + [X Panner distanceModel: "exponential", rolloffFactor: -2 expected to be equal to the array [0,0.018875712528824806,0.05621177703142166,0.06847958266735077,0.09856243431568146,0.12242205440998077,0.1495940238237381,0.16251686215400696,0.20651382207870483,0.21217726171016693,0.2435699999332428,0.2771494388580322,0.28300273418426514,0.32210540771484375,0.344368577003479,0.36553990840911865...\] but differs in 2047 places:\n\tIndex\tActual\t\t\tExpected\n\t[1\]\t4.7189281250000000e+5\t1.8875712528824806e-2\n\t[2\]\t1.4052943750000000e+6\t5.6211777031421661e-2\n\t[3\]\t1.7119896250000000e+6\t6.8479582667350769e-2\n\t[4\]\t2.4640607500000000e+6\t9.8562434315681458e-2\n\t...and 2043 more errors.] + expected: FAIL + + [< [exponential-clamp\] 1 out of 1 assertions were failed.] + expected: FAIL + + [# AUDIT TASK RUNNER FINISHED: 4 out of 4 tasks were failed.] + expected: FAIL + + [X Panner distanceModel: "linear", rolloffFactor: -1 expected to be equal to the array [0,0.0188757237046957,0.056211769580841064,0.06847962737083435,0.09856244176626205,0.12242206931114197,0.1495940387248993,0.16251686215400696,0.2065138816833496,0.21217726171016693,0.24357002973556519,0.2771494686603546,0.2830027937889099,0.3221054673194885,0.344368577003479,0.36553993821144104...\] but differs in 2047 places:\n\tIndex\tActual\t\t\tExpected\n\t[1\]\t2.8312642127275467e-2\t1.8875723704695702e-2\n\t[2\]\t8.4314845502376556e-2\t5.6211769580841064e-2\n\t[3\]\t1.0271602123975754e-1\t6.8479627370834351e-2\n\t[4\]\t1.4783874154090881e-1\t9.8562441766262054e-2\n\t...and 2043 more errors.] + expected: FAIL + + [X Panner distanceModel: "linear", rolloffFactor: 2 expected to be equal to the array [0,0.009438806213438511,0.028108695521950722,0.03424323722720146,0.04928614944219589,0.06121715530753136,0.07480449974536896,0.08126655966043472,0.10326726734638214,0.10609924048185349,0.12179719656705856,0.13858859241008759,0.1415155529975891,0.1610688418149948,0.1722015142440796,0.18278825283050537...\] but differs in 2047 places:\n\tIndex\tActual\t\t\tExpected\n\t[1\]\t1.8877611864809296e-6\t9.4388062134385109e-3\n\t[2\]\t5.6217390920210164e-6\t2.8108695521950722e-2\n\t[3\]\t6.8486474447126966e-6\t3.4243237227201462e-2\n\t[4\]\t9.8572299975785427e-6\t4.9286149442195892e-2\n\t...and 2043 more errors.] + expected: FAIL + + [X Panner distanceModel: "inverse", rolloffFactor: -1 expected to be equal to the array [0,0.0188757237046957,0.056211769580841064,0.06847962737083435,0.09856244176626205,0.12242206931114197,0.1495940387248993,0.16251686215400696,0.2065138816833496,0.21217726171016693,0.24357002973556519,0.2771494686603546,0.2830027937889099,0.3221054673194885,0.344368577003479,0.36553993821144104...\] but differs in 2047 places:\n\tIndex\tActual\t\t\tExpected\n\t[1\]\t0.0000000000000000e+0\t1.8875723704695702e-2\n\t[2\]\t0.0000000000000000e+0\t5.6211769580841064e-2\n\t[3\]\t0.0000000000000000e+0\t6.8479627370834351e-2\n\t[4\]\t0.0000000000000000e+0\t9.8562441766262054e-2\n\t...and 2043 more errors.] + expected: FAIL + + [X Panner distanceModel: "exponential", rolloffFactor: -2 expected to be equal to the array [0,0.0188757237046957,0.056211769580841064,0.06847962737083435,0.09856244176626205,0.12242206931114197,0.1495940387248993,0.16251686215400696,0.2065138816833496,0.21217726171016693,0.24357002973556519,0.2771494686603546,0.2830027937889099,0.3221054673194885,0.344368577003479,0.36553993821144104...\] but differs in 2047 places:\n\tIndex\tActual\t\t\tExpected\n\t[1\]\t4.7189309375000000e+5\t1.8875723704695702e-2\n\t[2\]\t1.4052942500000000e+6\t5.6211769580841064e-2\n\t[3\]\t1.7119906250000000e+6\t6.8479627370834351e-2\n\t[4\]\t2.4640610000000000e+6\t9.8562441766262054e-2\n\t...and 2043 more errors.] + expected: FAIL +
new file mode 100644 --- /dev/null +++ b/testing/web-platform/meta/webaudio/the-audio-api/the-pannernode-interface/pannernode-basic.html.ini @@ -0,0 +1,2 @@ +[pannernode-basic.html] + expected: ERROR
--- a/testing/web-platform/tests/css/css-typed-om/resources/testhelper.js +++ b/testing/web-platform/tests/css/css-typed-om/resources/testhelper.js @@ -49,16 +49,19 @@ function assert_style_value_equals(a, b) assert_style_value_equals(a.y, b.y); assert_style_value_equals(a.z, b.z); assert_style_value_equals(a.is2D, b.is2D); break; case 'CSSSkew': assert_style_value_equals(a.ax, b.ax); assert_style_value_equals(a.ay, b.ay); break; + case 'CSSSkewX': + assert_style_value_equals(a.ax, b.ax); + break; case 'CSSPerspective': assert_style_value_equals(a.length, b.length); break; case 'CSSMatrixComponent': assert_matrix_approx_equals(a.matrix, b.matrix, 1e-6); break; case 'CSSURLImageValue': assert_equals(a.instrinsicWidth, b.instrinsicWidth);
--- a/testing/web-platform/tests/css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative.html +++ b/testing/web-platform/tests/css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative.html @@ -119,23 +119,28 @@ const gTestCases = [ desc: 'rotateZ()' }, { cssText: 'skew(90deg)', expected: new CSSSkew(CSS.deg(90), CSS.deg(0)), desc: 'skew() with only X' }, { + cssText: 'skew(90deg, 0deg)', + expected: new CSSSkew(CSS.deg(90), CSS.deg(0)), + desc: 'skew() with X and Y which is 0 value' + }, + { cssText: 'skew(90deg, 45deg)', expected: new CSSSkew(CSS.deg(90), CSS.deg(45)), desc: 'skew() with X and Y' }, { cssText: 'skewX(90deg)', - expected: new CSSSkew(CSS.deg(90), CSS.deg(0)), + expected: new CSSSkewX(CSS.deg(90)), desc: 'skewX()' }, { cssText: 'skewY(90deg)', expected: new CSSSkew(CSS.deg(0), CSS.deg(90)), desc: 'skewY()' }, { @@ -148,22 +153,23 @@ const gTestCases = [ for (const {cssText, expected, desc} of gTestCases) { test(t => { test_transform_normalization(t, cssText, new CSSTransformValue([expected])); }, 'Normalizing a ' + desc + ' returns a ' + expected.constructor.name); } test(t => { test_transform_normalization(t, - 'translate(1px) rotateX(90deg) perspective(1px) skew(90deg) scale3d(1, 2, 3)', + 'translate(1px) rotateX(90deg) perspective(1px) skew(90deg) skewX(20deg) scale3d(1, 2, 3)', new CSSTransformValue([ new CSSTranslate(CSS.px(1), CSS.px(0)), new CSSRotate(CSS.number(1), CSS.number(0), CSS.number(0), CSS.deg(90)), new CSSPerspective(CSS.px(1)), new CSSSkew(CSS.deg(90), CSS.deg(0)), + new CSSSkewX(CSS.deg(20)), new CSSScale(CSS.number(1), CSS.number(2), CSS.number(3)), ])); }, 'Normalizing a <transform-list> returns a CSSTransformValue containing all the transforms'); test(t => { test_transform_normalization(t, 'translate(calc(1px + 1em)) perspective(calc(1px + 1em))', new CSSTransformValue([
--- a/testing/web-platform/tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html +++ b/testing/web-platform/tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html @@ -45,16 +45,21 @@ const gTestCases = [ desc: 'CSSSkew' }, { value: new CSSSkew(CSS.deg(90), CSS.turn(0)), cssText: 'skew(90deg)', desc: 'CSSSkew with Y which is 0 value' }, { + value: new CSSSkewX(CSS.deg(90)), + cssText: 'skewX(90deg)', + desc: 'CSSSkewX' + }, + { value: new CSSPerspective(CSS.px(1)), cssText: 'perspective(1px)', desc: 'CSSPerspective' }, { value: new CSSTransformValue([new CSSPerspective(CSS.px(1))]), cssText: 'perspective(1px)', desc: 'CSSTransformValue with a single transform'
new file mode 100644 --- /dev/null +++ b/testing/web-platform/tests/css/css-typed-om/stylevalue-subclasses/cssSkewX.tentative.html @@ -0,0 +1,62 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSSSkewX tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#cssskewx"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/testhelper.js"></script> +<script> +'use strict'; + +const gInvalidTestCases = [ + { value: 'auto', desc: 'a keyword'}, + { value: 3.14, desc: 'a double'}, + { value: 0, desc: 'a unitless zero'}, + { value: '10deg', desc: 'a string angle'}, + { value: CSS.number(10), desc: 'a number CSSUnitValue'}, + { value: CSS.s(10), desc: 'a time dimension CSSUnitValue'}, + { value: new CSSMathSum(CSS.px(1)), desc: 'a CSSMathValue of length type' }, +]; + +for (const {value, desc} of gInvalidTestCases) { + test(() => { + assert_throws(new TypeError(), () => new CSSSkewX(value)); + }, 'Constructing a CSSSkewX with ' + desc + ' throws a TypeError'); +} + +for (const {value, desc} of gInvalidTestCases) { + test(() => { + let skewX = new CSSSkewX(CSS.deg(0)); + assert_throws(new TypeError(), () => skewX.ax = value); + assert_style_value_equals(skewX.ax, CSS.deg(0)); + }, 'Updating CSSSkewX.ax with ' + desc + ' throws a TypeError'); +} + +const gValidTestCases = [ + { value: CSS.deg(-3.14), desc: 'an angle CSSUnitValue' }, + { value: new CSSMathSum(CSS.deg(1)), desc: 'a CSSMathValue of angle type' }, +]; + +for (const {value: ax, desc: axDesc} of gValidTestCases) { + test(() => { + const skewX = new CSSSkewX(ax); + assert_equals(skewX.ax, ax); + assert_true(skewX.is2D); + }, 'CSSSkewX can be constructed from ' + axDesc); +} + +for (const {value, desc} of gValidTestCases) { + test(() => { + let skewX = new CSSSkewX(CSS.deg(0)); + skewX.ax = value; + assert_style_value_equals(skewX.ax, value); + }, 'CSSSkew.ax can be updated to ' + desc); +} + +test(() => { + let skewX = new CSSSkewX(CSS.deg(0)); + skewX.is2D = false; + assert_true(skewX.is2D); +}, 'Modifying skewX.is2D is a no-op'); + +</script>
new file mode 100644 --- /dev/null +++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/display.html @@ -0,0 +1,23 @@ +<!doctype html> +<meta charset="utf-8"> +<title>'display' property</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get"> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set"> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<script src="resources/testsuite.js"></script> +<body> +<div id="log"> +<script> +'use strict'; + +runPropertyTests('display', [ + { + specified: '<ident>', + examples: [new CSSKeywordValue('none'), new CSSKeywordValue('block')] + }, +]); + +</script>
new file mode 100644 --- /dev/null +++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/margin-top.html @@ -0,0 +1,23 @@ +<!doctype html> +<meta charset="utf-8"> +<title>'margin-top' property</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get"> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set"> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<script src="resources/testsuite.js"></script> +<body> +<div id="log"> +<script> +'use strict'; + +runPropertyTests('margin-top', [ + { specified: '0' }, + { specified: '<ident>', examples: [new CSSKeywordValue('auto')] }, + { specified: '<percentage>' }, + { specified: '<length>' }, +]); + +</script>
new file mode 100644 --- /dev/null +++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js @@ -0,0 +1,62 @@ +function testGet(propertyName, values, description) { + test(t => { + let element = createDivWithStyle(t); + let styleMap = element.attributeStyleMap; + + for (const styleValue of values) { + element.style[propertyName] = styleValue.toString(); + + getComputedStyle(element); // Force a style recalc. + const result = styleMap.get(propertyName); + assert_style_value_equals(result, styleValue); + } + }, `Can get ${description} from '${propertyName}'`); +} + +function testSet(propertyName, values, description) { + test(t => { + let element = createDivWithStyle(t); + let styleMap = element.attributeStyleMap; + + for (const styleValue of values) { + styleMap.set(propertyName, styleValue); + + getComputedStyle(element); // Force a style recalc. + assert_equals(element.style[propertyName], styleValue.toString()); + } + }, `Can set '${propertyName}' to ${description}`); +} + +function testGetSet(propertyName, values, description) { + testGet(propertyName, values, description); + testSet(propertyName, values, description); +} + +function runPropertyTests(propertyName, testCases) { + for (const testCase of testCases) { + if (testCase.specified == '0') { + testSet(propertyName, [ + new CSSUnitValue(0, 'number'), + ], 'unitless zero'); + } else if (testCase.specified === '<length>') { + testGetSet(propertyName, [ + new CSSUnitValue(0, 'px'), + new CSSUnitValue(-3.14, 'em'), + new CSSUnitValue(3.14, 'cm'), + ], 'a length CSSUnitValue'); + } else if (testCase.specified == '<percentage>') { + testGetSet(propertyName, [ + new CSSUnitValue(0, 'percent'), + new CSSUnitValue(-3.14, 'percent'), + new CSSUnitValue(3.14, 'percent'), + ], 'a percent CSSUnitValue'); + } else if (testCase.specified == '<ident>') { + if (!testCase.examples) { + throw new Error('<ident> tests require examples'); + } + + testGetSet(propertyName, testCase.examples, + 'a CSSKeywordValue'); + } + } +}
new file mode 100644 --- /dev/null +++ b/testing/web-platform/tests/css/css-ui/reference/text-overflow-027-ref.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test Reference</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/"> +<style> +div { font-family: monospace; } +</style> + +<p>The test passes if the following text is visible below: 123456 FE…</p> +<div>123456 FE…</bdo></div>
new file mode 100644 --- /dev/null +++ b/testing/web-platform/tests/css/css-ui/reference/text-overflow-028-ref.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test Reference</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/"> +<style> +div { font-family: monospace; } +</style> + +<p>The test passes if the following text is visible below: …56 FEDCBA</p> +<div>…56 FEDCBA</div>
new file mode 100644 --- /dev/null +++ b/testing/web-platform/tests/css/css-ui/reference/text-overflow-029-ref.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<html lang="en"> +<meta charset="utf-8"> +<title>CSS Basic User Interface Reference</title> +<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/"> +<style> +div { font: 20px monospace; } +</style> + +<div>Test passed…</div>
new file mode 100644 --- /dev/null +++ b/testing/web-platform/tests/css/css-ui/text-overflow-027.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: text-overflow applies visually to bidi</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/"> +<link rel="help" href="http://www.w3.org/TR/css-ui-3/#text-overflow"> +<link rel="help" href="http://www.w3.org/TR/css-ui-4/#text-overflow"> +<link rel="match" href="reference/text-overflow-027-ref.html"> +<meta name="flags" content=""> +<meta name="assert" content="text-overflow is a visual operation that occurs after layout, and therfore ellides text from the visual end of the line, even in bidi situations"> +<style> +div { + font-family: monospace; + width: 10ch; + overflow: hidden; + text-overflow: ellipsis; + white-space: pre; +} +</style> + +<p>The test passes if the following text is visible below: 123456 FE…</p> +<div>123456 <bdo dir=rtl>ABCDEF</bdo></div>
new file mode 100644 --- /dev/null +++ b/testing/web-platform/tests/css/css-ui/text-overflow-028.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: text-overflow applies visually to bidi</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/"> +<link rel="help" href="http://www.w3.org/TR/css-ui-3/#text-overflow"> +<link rel="help" href="http://www.w3.org/TR/css-ui-4/#text-overflow"> +<link rel="match" href="reference/text-overflow-028-ref.html"> +<meta name="flags" content=""> +<meta name="assert" content="text-overflow is a visual operation that occurs after layout, and therfore ellides text from the visual end of the line, even in bidi situations"> +<style> +div { + font-family: monospace; + width: 10ch; + overflow: hidden; + text-overflow: ellipsis; + white-space: pre; +} +</style> + +<p>The test passes if the following text is visible below: …56 FEDCBA</p> +<div dir=rtl><bdo dir=rtl>ABCDEF</bdo> 123456</div>
new file mode 100644 --- /dev/null +++ b/testing/web-platform/tests/css/css-ui/text-overflow-029.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html lang="en"> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: text-overflow and bidi interaction</title> +<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/"> +<link rel="help" href="http://www.w3.org/TR/css-ui-3/#text-overflow"> +<link rel="help" href="http://www.w3.org/TR/css-ui-4/#text-overflow"> +<link rel="match" href="reference/text-overflow-029-ref.html"> +<meta name="assert" content="When there's content of mixed directionality, text-overflow ellides the characters at the physical end of the line."> +<meta name="flags" content=""> +<style> +div { + font: 20px monospace; + width: 12.3ch; /* slightly more than 12ch because in some browsers (safari) the ellipsis is slightly large than other characters, even in monospace fonts. */ + text-overflow: ellip