Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(231)

Unified Diff: content/browser/service_worker/service_worker_context_wrapper.cc

Issue 2934163003: Add a ServiceWorkerContextObserver to content's public API. (Closed)
Patch Set: Clarifying comment Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/service_worker/service_worker_context_wrapper.h ('k') | content/public/browser/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/service_worker/service_worker_context_wrapper.cc
diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc
index 80155bb1a7ffbe68103f5a7a133df9a1c8457637..63dde956569c4917f4f1d8af4ee7458b42aae1b0 100644
--- a/content/browser/service_worker/service_worker_context_wrapper.cc
+++ b/content/browser/service_worker/service_worker_context_wrapper.cc
@@ -21,8 +21,6 @@
#include "base/threading/sequenced_worker_pool.h"
#include "base/threading/thread_task_runner_handle.h"
#include "content/browser/service_worker/embedded_worker_status.h"
-#include "content/browser/service_worker/service_worker_context_core.h"
-#include "content/browser/service_worker/service_worker_context_core_observer.h"
#include "content/browser/service_worker/service_worker_process_manager.h"
#include "content/browser/service_worker/service_worker_quota_client.h"
#include "content/browser/service_worker/service_worker_version.h"
@@ -30,6 +28,7 @@
#include "content/common/service_worker/service_worker_utils.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/service_worker_context_observer.h"
#include "net/base/url_util.h"
#include "storage/browser/quota/quota_manager_proxy.h"
#include "storage/browser/quota/special_storage_policy.h"
@@ -102,6 +101,26 @@ bool ServiceWorkerContext::IsExcludedHeaderNameForFetchEvent(
g_excluded_header_name_set.Get().end();
}
+bool ServiceWorkerContext::ScopeMatches(const GURL& scope, const GURL& url) {
+ return ServiceWorkerUtils::ScopeMatches(scope, url);
+}
+
+void ServiceWorkerContextWrapper::OnRegistrationStored(int64_t registration_id,
+ const GURL& pattern) {
+ for (auto& observer : observer_list_)
+ observer.OnRegistrationStored(pattern);
+}
+
+void ServiceWorkerContextWrapper::AddObserver(
+ ServiceWorkerContextObserver* observer) {
+ observer_list_.AddObserver(observer);
+}
+
+void ServiceWorkerContextWrapper::RemoveObserver(
+ ServiceWorkerContextObserver* observer) {
+ observer_list_.RemoveObserver(observer);
+}
+
ServiceWorkerContextWrapper::ServiceWorkerContextWrapper(
BrowserContext* browser_context)
: core_observer_list_(
@@ -111,9 +130,17 @@ ServiceWorkerContextWrapper::ServiceWorkerContextWrapper(
storage_partition_(nullptr),
resource_context_(nullptr) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
+ // Add this object as an observer of the wrapped |context_core_|. This lets us
+ // forward observer methods to observers outside of content.
+ core_observer_list_->AddObserver(this);
}
ServiceWorkerContextWrapper::~ServiceWorkerContextWrapper() {
+ // Explicitly remove this object as an observer to avoid use-after-frees in
+ // tests where this object is not guaranteed to outlive the
+ // ServiceWorkerContextCore it wraps.
+ core_observer_list_->RemoveObserver(this);
DCHECK(!resource_context_);
}
« no previous file with comments | « content/browser/service_worker/service_worker_context_wrapper.h ('k') | content/public/browser/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698