WebContentsObserver::OnServiceWorkerAccessed

Instead of passing WebContentsGetter to ContentBrowserClient, add explicit
callbacks to WebContentsObserver taking RenderFrameHost* or NavigationHandle*
as a parameter.

This allows to attribute cookie/javascript accesses to the correct
frame or navigation request, which is a prerequisite for attributing
content settings to the correct document and making them per-document.

[email protected],[email protected]
BUG=998171,1061899

Change-Id: Iec55a1db235b26bab44f1c1de76900b73ac6614d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2151866
Commit-Queue: Alexander Timin <[email protected]>
Reviewed-by: Balazs Engedy <[email protected]>
Reviewed-by: Matt Falkenhagen <[email protected]>
Cr-Commit-Position: refs/heads/master@{#762018}
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 1ba6488..053ee60 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -5121,6 +5121,24 @@
     observer.AppCacheAccessed(manifest_url, blocked_by_policy);
 }
 
+void WebContentsImpl::OnServiceWorkerAccessed(
+    RenderFrameHost* render_frame_host,
+    const GURL& scope,
+    AllowServiceWorkerResult allowed) {
+  for (auto& observer : observers_) {
+    observer.OnServiceWorkerAccessed(render_frame_host, scope, allowed);
+  }
+}
+
+void WebContentsImpl::OnServiceWorkerAccessed(
+    NavigationHandle* navigation,
+    const GURL& scope,
+    AllowServiceWorkerResult allowed) {
+  for (auto& observer : observers_) {
+    observer.OnServiceWorkerAccessed(navigation, scope, allowed);
+  }
+}
+
 void WebContentsImpl::OnColorChooserFactoryReceiver(
     mojo::PendingReceiver<blink::mojom::ColorChooserFactory> receiver) {
   color_chooser_factory_receivers_.Add(this, std::move(receiver));