diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-05-20 09:47:09 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-06-07 11:15:42 +0000 |
commit | 189d4fd8fad9e3c776873be51938cd31a42b6177 (patch) | |
tree | 6497caeff5e383937996768766ab3bb2081a40b2 /chromium/content/browser/service_worker/service_worker_version_browsertest.cc | |
parent | 8bc75099d364490b22f43a7ce366b366c08f4164 (diff) | |
download | qtwebengine-chromium-189d4fd8fad9e3c776873be51938cd31a42b6177.tar.gz |
BASELINE: Update Chromium to 90.0.4430.221
Change-Id: Iff4d9d18d2fcf1a576f3b1f453010f744a232920
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/content/browser/service_worker/service_worker_version_browsertest.cc')
-rw-r--r-- | chromium/content/browser/service_worker/service_worker_version_browsertest.cc | 113 |
1 files changed, 44 insertions, 69 deletions
diff --git a/chromium/content/browser/service_worker/service_worker_version_browsertest.cc b/chromium/content/browser/service_worker/service_worker_version_browsertest.cc index 2fc43ee9350..a3a5f3d8c67 100644 --- a/chromium/content/browser/service_worker/service_worker_version_browsertest.cc +++ b/chromium/content/browser/service_worker/service_worker_version_browsertest.cc @@ -23,7 +23,6 @@ #include "base/task/post_task.h" #include "base/task/task_traits.h" #include "base/test/bind.h" -#include "base/test/scoped_feature_list.h" #include "base/time/time.h" #include "build/build_config.h" #include "content/browser/service_worker/embedded_worker_instance.h" @@ -44,7 +43,6 @@ #include "content/public/browser/render_view_host.h" #include "content/public/browser/storage_partition.h" #include "content/public/common/content_client.h" -#include "content/public/common/content_features.h" #include "content/public/common/result_codes.h" #include "content/public/test/browser_test.h" #include "content/public/test/browser_test_utils.h" @@ -57,7 +55,6 @@ #include "mojo/public/cpp/bindings/remote.h" #include "net/test/embedded_test_server/http_request.h" #include "net/test/embedded_test_server/http_response.h" -#include "services/network/public/cpp/features.h" #include "services/network/public/mojom/fetch_api.mojom.h" #include "storage/browser/test/blob_test_utils.h" #include "third_party/blink/public/common/service_worker/service_worker_status_code.h" @@ -133,9 +130,16 @@ ServiceWorkerRegistry::FindRegistrationCallback CreateFindRegistrationReceiver( std::move(quit), status); } -void ExpectResultAndRun(bool expected, - base::RepeatingClosure continuation, - bool actual) { +void ExpectRegisterResultAndRun(blink::ServiceWorkerStatusCode expected, + base::RepeatingClosure continuation, + blink::ServiceWorkerStatusCode actual) { + EXPECT_EQ(expected, actual); + continuation.Run(); +} + +void ExpectUnregisterResultAndRun(bool expected, + base::RepeatingClosure continuation, + bool actual) { EXPECT_EQ(expected, actual); continuation.Run(); } @@ -264,8 +268,28 @@ RequestHandlerForBigWorkerScript(const net::test_server::HttpRequest& request) { return http_response; } -network::CrossOriginEmbedderPolicy CrossOriginEmbedderPolicyNone() { - return network::CrossOriginEmbedderPolicy(); +// Returns a response with Cross-Origin-Embedder-Policy header matching with +// |coep|. +std::unique_ptr<net::test_server::HttpResponse> +RequestHandlerForWorkerScriptWithCoep( + base::Optional<network::mojom::CrossOriginEmbedderPolicyValue> coep, + const net::test_server::HttpRequest& request) { + static int counter = 0; + if (request.relative_url != "/service_worker/generated") + return nullptr; + auto response = std::make_unique<net::test_server::BasicHttpResponse>(); + response->set_code(net::HTTP_OK); + response->set_content( + base::StringPrintf("// empty. counter = %d\n", counter++)); + response->set_content_type("text/javascript"); + if (coep.has_value()) { + std::string header_value = + coep.value() == network::mojom::CrossOriginEmbedderPolicyValue::kNone + ? "none" + : "require-corp"; + response->AddCustomHeader("Cross-Origin-Embedder-Policy", header_value); + } + return response; } network::CrossOriginEmbedderPolicy CrossOriginEmbedderPolicyRequireCorp() { @@ -742,7 +766,7 @@ class MockContentBrowserClient : public TestContentBrowserClient { return data_saver_enabled_; } - void OverrideWebkitPrefs(RenderViewHost* render_view_host, + void OverrideWebkitPrefs(WebContents* web_contents, blink::web_pref::WebPreferences* prefs) override { prefs->data_saver_enabled = data_saver_enabled_; } @@ -1235,7 +1259,8 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, observer->Init(); public_context()->RegisterServiceWorker( embedded_test_server()->GetURL(kWorkerUrl), options, - base::BindOnce(&ExpectResultAndRun, true, base::DoNothing())); + base::BindOnce(&ExpectRegisterResultAndRun, + blink::ServiceWorkerStatusCode::kOk, base::DoNothing())); observer->Wait(); int64_t registration_id = observer->registration_id(); @@ -1282,7 +1307,8 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, base::RunLoop run_loop; public_context()->UnregisterServiceWorker( embedded_test_server()->GetURL(kScope), - base::BindOnce(&ExpectResultAndRun, true, run_loop.QuitClosure())); + base::BindOnce(&ExpectUnregisterResultAndRun, true, + run_loop.QuitClosure())); run_loop.Run(); } @@ -1306,7 +1332,8 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, observer->Init(); public_context()->RegisterServiceWorker( embedded_test_server()->GetURL(kWorkerUrl), options, - base::BindOnce(&ExpectResultAndRun, true, base::DoNothing())); + base::BindOnce(&ExpectRegisterResultAndRun, + blink::ServiceWorkerStatusCode::kOk, base::DoNothing())); observer->Wait(); int64_t registration_id = observer->registration_id(); @@ -1324,7 +1351,8 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, base::RunLoop run_loop; public_context()->UnregisterServiceWorker( embedded_test_server()->GetURL(kScope), - base::BindOnce(&ExpectResultAndRun, true, run_loop.QuitClosure())); + base::BindOnce(&ExpectUnregisterResultAndRun, true, + run_loop.QuitClosure())); run_loop.Run(); } @@ -1391,60 +1419,12 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, RendererCrash) { version_->RemoveObserver(&observer); } -// This tests whether the ServiceWorkerVersion can have the correct value of -// Cross-Origin-Embedder-Policy and checks if it works either of when -// CrossOriginIsolation is enabled and disabled. -class ServiceWorkerVersionCoepTest : public ServiceWorkerVersionBrowserTest, - public testing::WithParamInterface<bool> { - public: - ServiceWorkerVersionCoepTest() { - if (IsCrossOriginIsolationEnabled()) { - feature_list_.InitAndEnableFeature( - network::features::kCrossOriginEmbedderPolicy); - } else { - feature_list_.InitAndDisableFeature( - network::features::kCrossOriginEmbedderPolicy); - } - } - - static bool IsCrossOriginIsolationEnabled() { return GetParam(); } - - // Returns a response with Cross-Origin-Embedder-Policy header matching with - // |coep|. - static std::unique_ptr<net::test_server::HttpResponse> - RequestHandlerForWorkerScriptWithCoep( - base::Optional<network::mojom::CrossOriginEmbedderPolicyValue> coep, - const net::test_server::HttpRequest& request) { - static int counter = 0; - if (request.relative_url != "/service_worker/generated") - return nullptr; - auto response = std::make_unique<net::test_server::BasicHttpResponse>(); - response->set_code(net::HTTP_OK); - response->set_content( - base::StringPrintf("// empty. counter = %d\n", counter++)); - response->set_content_type("text/javascript"); - if (coep.has_value()) { - std::string header_value = - coep.value() == network::mojom::CrossOriginEmbedderPolicyValue::kNone - ? "none" - : "require-corp"; - response->AddCustomHeader("Cross-Origin-Embedder-Policy", header_value); - } - return response; - } - - private: - base::test::ScopedFeatureList feature_list_; -}; - -INSTANTIATE_TEST_SUITE_P(All, ServiceWorkerVersionCoepTest, testing::Bool()); - // Checks if ServiceWorkerVersion has the correct value of COEP when a new // worker is installed. -IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionCoepTest, +IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, CrossOriginEmbedderPolicyValue_Install) { embedded_test_server()->RegisterRequestHandler(base::BindRepeating( - &ServiceWorkerVersionCoepTest::RequestHandlerForWorkerScriptWithCoep, + &RequestHandlerForWorkerScriptWithCoep, network::mojom::CrossOriginEmbedderPolicyValue::kRequireCorp)); StartServerAndNavigateToSetup(); @@ -1455,9 +1435,7 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerVersionCoepTest, // Once it's started, the worker script is read from the network and the COEP // value is set to the version. StartWorker(blink::ServiceWorkerStatusCode::kOk); - EXPECT_EQ(IsCrossOriginIsolationEnabled() - ? CrossOriginEmbedderPolicyRequireCorp() - : CrossOriginEmbedderPolicyNone(), + EXPECT_EQ(CrossOriginEmbedderPolicyRequireCorp(), version_->cross_origin_embedder_policy()); } @@ -1581,9 +1559,6 @@ class CacheStorageEagerReadingTest : public ServiceWorkerVersionBrowserTest { // the service worker fetch handler. static constexpr const char* kOtherURL = "/service_worker/non-matching-url.js"; - - private: - base::test::ScopedFeatureList feature_list; }; IN_PROC_BROWSER_TEST_F(CacheStorageEagerReadingTest, |