From bfeac5c28ddb60531f25d7d99d0299a5161b9a8e Mon Sep 17 00:00:00 2001 From: janekptacijarabaci Date: Thu, 5 Jul 2018 13:08:32 +0200 Subject: Bug 1298823 - Fix Request constructor - with "mode: navigate" --- dom/fetch/Request.cpp | 18 ++++++----------- dom/tests/mochitest/fetch/test_request.js | 9 +++------ .../test/serviceworkers/fetch_event_worker.js | 23 ++++++++-------------- 3 files changed, 17 insertions(+), 33 deletions(-) diff --git a/dom/fetch/Request.cpp b/dom/fetch/Request.cpp index d3836cda1..7ca5b43c4 100644 --- a/dom/fetch/Request.cpp +++ b/dom/fetch/Request.cpp @@ -338,8 +338,7 @@ Request::Constructor(const GlobalObject& aGlobal, if (mode == RequestMode::Navigate || (aInit.IsAnyMemberPresent() && request->Mode() == RequestMode::Navigate)) { - aRv.ThrowTypeError(NS_LITERAL_STRING("navigate")); - return nullptr; + mode = RequestMode::Same_origin; } if (aInit.IsAnyMemberPresent()) { @@ -374,11 +373,7 @@ Request::Constructor(const GlobalObject& aGlobal, nsresult rv = principal->CheckMayLoad(uri, /* report */ false, /* allowIfInheritsPrincipal */ false); if (NS_FAILED(rv)) { - nsAutoCString globalOrigin; - principal->GetOrigin(globalOrigin); - aRv.ThrowTypeError(referrer, - NS_ConvertUTF8toUTF16(globalOrigin)); - return nullptr; + referrerURL.AssignLiteral(kFETCH_CLIENT_REFERRER_STR); } } } @@ -403,11 +398,10 @@ Request::Constructor(const GlobalObject& aGlobal, // this work in a single sync loop. RefPtr checker = new ReferrerSameOriginChecker(worker, referrerURL, rv); - checker->Dispatch(Terminating, aRv); - if (aRv.Failed() || NS_FAILED(rv)) { - aRv.ThrowTypeError(referrer, - worker->GetLocationInfo().mOrigin); - return nullptr; + IgnoredErrorResult error; + checker->Dispatch(Terminating, error); + if (error.Failed() || NS_FAILED(rv)) { + referrerURL.AssignLiteral(kFETCH_CLIENT_REFERRER_STR); } } } diff --git a/dom/tests/mochitest/fetch/test_request.js b/dom/tests/mochitest/fetch/test_request.js index 5be361a46..405767b50 100644 --- a/dom/tests/mochitest/fetch/test_request.js +++ b/dom/tests/mochitest/fetch/test_request.js @@ -152,12 +152,9 @@ function testHeaderGuard() { } function testMode() { - try { - var req = new Request("http://example.com", {mode: "navigate"}); - ok(false, "Creating a Request with navigate RequestMode should throw a TypeError"); - } catch(e) { - is(e.name, "TypeError", "Creating a Request with navigate RequestMode should throw a TypeError"); - } + var req = new Request("http://example.com", {mode: "navigate"}); + ok(true, "Creating a Request with navigate RequestMode should not throw."); + is(req.mode, "same-origin", "Request mode becomes same-origin"); } function testMethod() { diff --git a/dom/workers/test/serviceworkers/fetch_event_worker.js b/dom/workers/test/serviceworkers/fetch_event_worker.js index 1caef71e8..895128e2c 100644 --- a/dom/workers/test/serviceworkers/fetch_event_worker.js +++ b/dom/workers/test/serviceworkers/fetch_event_worker.js @@ -148,28 +148,21 @@ onfetch = function(ev) { } else if (ev.request.url.includes("navigate.html")) { - var navigateModeCorrectlyChecked = false; var requests = [ // should not throw new Request(ev.request), new Request(ev.request, undefined), new Request(ev.request, null), new Request(ev.request, {}), new Request(ev.request, {someUnrelatedProperty: 42}), + new Request(ev.request, {method: "GET"}), ]; - try { - var request3 = new Request(ev.request, {method: "GET"}); // should throw - } catch(e) { - navigateModeCorrectlyChecked = requests[0].mode == "navigate"; - } - if (navigateModeCorrectlyChecked) { - ev.respondWith(Promise.resolve( - new Response("", { - headers : { - "Content-Type": "text/html" - } - }) - )); - } + ev.respondWith(Promise.resolve( + new Response("", { + headers : { + "Content-Type": "text/html" + } + }) + )); } else if (ev.request.url.includes("nonexistent_worker_script.js")) { -- cgit v1.2.3 From 3815302230bc043f98667c1ee0de6dee15969034 Mon Sep 17 00:00:00 2001 From: janekptacijarabaci Date: Thu, 5 Jul 2018 13:09:18 +0200 Subject: Bug 1331564 - XHR SyncTeardownRunnable must run also when the worker is in killing state --- dom/xhr/XMLHttpRequestWorker.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/dom/xhr/XMLHttpRequestWorker.cpp b/dom/xhr/XMLHttpRequestWorker.cpp index b5f853a50..c9e892f26 100644 --- a/dom/xhr/XMLHttpRequestWorker.cpp +++ b/dom/xhr/XMLHttpRequestWorker.cpp @@ -1633,12 +1633,10 @@ XMLHttpRequestWorker::ReleaseProxy(ReleaseType aType) new SyncTeardownRunnable(mWorkerPrivate, mProxy); mProxy = nullptr; - ErrorResult forAssertionsOnly; + IgnoredErrorResult forAssertionsOnly; // This runnable _must_ be executed. - runnable->Dispatch(Killing, forAssertionsOnly); - if (forAssertionsOnly.Failed()) { - NS_ERROR("Failed to dispatch teardown runnable!"); - } + runnable->Dispatch(Dead, forAssertionsOnly); + MOZ_DIAGNOSTIC_ASSERT(!forAssertionsOnly.Failed()); } } } -- cgit v1.2.3