Commit f43da90a authored by Oksana Zhuravlova's avatar Oksana Zhuravlova Committed by Commit Bot

Reland "[COEP] Report CacheStorage/CORP violations in service workers"

This reverts commit 7909edf0.

Reason for revert: the original issue was fixed in https://crrev.com/c/2100931

Original change's description:
> Revert "[COEP] Report CacheStorage/CORP violations in service workers"
> 
> This reverts commit c4f44550.
> 
> Reason for revert: this change blocks reverting https://crrev.com/c/2096687 for blink_web_tests failing on Mac10.14 Tests: https://ci.chromium.org/p/chromium/builders/ci/Mac10.14%20Tests/2403 and  Win7 Tests (1): https://ci.chromium.org/p/chromium/builders/ci/Win7%20Tests%20%281%29/100679
> 
> 
> Original change's description:
> > [COEP] Report CacheStorage/CORP violations in service workers
> > 
> > Do not call BindCacheStorageInternal until we have a COEP reporter to
> > pass to RPH::BindCacheStorage.
> > 
> > Change-Id: I25fd317cbcd6fd84d924472ca73facc007b50c71
> > Bug: 1060980
> > Cq-Do-Not-Cancel-Tryjobs: true
> > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2100056
> > Commit-Queue: Yutaka Hirano <yhirano@chromium.org>
> > Reviewed-by: Makoto Shimazu <shimazu@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#749644}
> 
> TBR=yhirano@chromium.org,shimazu@chromium.org
> 
> Change-Id: Ife904e199a931e0e19963526d88f7c31578a12bb
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: 1060980
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2100711
> Reviewed-by: Oksana Zhuravlova <oksamyt@chromium.org>
> Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#749706}

TBR=yhirano@chromium.org,shimazu@chromium.org,oksamyt@chromium.org

Change-Id: I40bf1e6a59f33b5bee237cb10105b4e2af3704bf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 1060980
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2101292Reviewed-by: default avatarOksana Zhuravlova <oksamyt@chromium.org>
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#749778}
parent db38cd51
......@@ -780,14 +780,6 @@ class EmbeddedWorkerInstance::StartTask {
std::move(factory_bundle_for_new_scripts));
}
// Create cache storage now as an optimization, so the service worker can
// use the Cache Storage API immediately on startup.
if (base::FeatureList::IsEnabled(
blink::features::kEagerCacheStorageSetupForServiceWorkers)) {
instance_->BindCacheStorage(params->provider_info->cache_storage
.InitWithNewPipeAndPassReceiver());
}
// Bind COEP reporter created on the UI thread, which has the onwership of
// the instance. The |coep_reporter| might be null when the COEP value is
// not known because the main script has not been loaded yet. In that case,
......@@ -796,6 +788,14 @@ class EmbeddedWorkerInstance::StartTask {
instance_->coep_reporter_.Bind(std::move(coep_reporter));
}
// Create cache storage now as an optimization, so the service worker can
// use the Cache Storage API immediately on startup.
if (base::FeatureList::IsEnabled(
blink::features::kEagerCacheStorageSetupForServiceWorkers)) {
instance_->BindCacheStorage(params->provider_info->cache_storage
.InitWithNewPipeAndPassReceiver());
}
instance_->SendStartWorker(std::move(params));
std::move(sent_start_callback_).Run(blink::ServiceWorkerStatusCode::kOk);
......@@ -1033,8 +1033,6 @@ void EmbeddedWorkerInstance::OnScriptLoaded() {
// Renderer side has started to launch the worker thread.
starting_phase_ = SCRIPT_LOADED;
owner_version_->OnMainScriptLoaded();
BindCacheStorageInternal();
}
void EmbeddedWorkerInstance::OnWorkerVersionInstalled() {
......@@ -1459,15 +1457,18 @@ void EmbeddedWorkerInstance::BindCacheStorageInternal() {
// loaded the headers and the COEP one is known.
if (!owner_version_->cross_origin_embedder_policy())
return;
network::CrossOriginEmbedderPolicy coep =
owner_version_->cross_origin_embedder_policy().value();
// TODO(https://crbug.com/1059727) Plumb a CrossOriginEmbedderPolicyReporter
// to handle reports.
mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
coep_reporter_remote;
for (auto& receiver : pending_cache_storage_receivers_) {
mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
coep_reporter_remote;
if (coep_reporter_) {
coep_reporter_->Clone(
coep_reporter_remote.InitWithNewPipeAndPassReceiver());
}
RunOrPostTaskOnThread(
FROM_HERE, BrowserThread::UI,
base::BindOnce(content::BindCacheStorageOnUIThread, process_id(),
......@@ -1484,9 +1485,11 @@ void EmbeddedWorkerInstance::OnCreatedFactoryBundles(
mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
coep_reporter) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (coep_reporter) {
coep_reporter_.Bind(std::move(coep_reporter));
}
BindCacheStorageInternal();
std::move(callback).Run(std::move(script_bundle),
std::move(subresource_bundle));
}
......
......@@ -453,6 +453,7 @@ class ServiceWorkerVersionBrowserTest : public ContentBrowserTest {
version_ = CreateNewServiceWorkerVersion(
wrapper()->context()->registry(), registration_.get(),
embedded_test_server()->GetURL(worker_url), script_type);
version_->set_initialize_global_scope_after_main_script_loaded();
// Make the registration findable via storage functions.
wrapper()->context()->registry()->NotifyInstallingRegistration(
registration_.get());
......
......@@ -5,7 +5,7 @@ FAIL COEP support on DedicatedWorker. promise_test: Unhandled rejection with val
FAIL COEP-Report-Only support on DedicatedWorker. promise_test: Unhandled rejection with value: "Report not send"
FAIL COEP support on SharedWorker. promise_test: Unhandled rejection with value: "Report not send"
FAIL COEP-Report-Only support on SharedWorker. promise_test: Unhandled rejection with value: "Report not send"
FAIL COEP support on ServiceWorker. promise_test: Unhandled rejection with value: "Report not send"
FAIL COEP-Report-Only support on ServiceWorker. promise_test: Unhandled rejection with value: "Report not send"
PASS COEP support on ServiceWorker.
PASS COEP-Report-Only support on ServiceWorker.
Harness: the test ran to completion.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment