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

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

Issue 214383005: Browser side of ServiceWorker requestSyncEvents() function (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleaned up the testing code Created 6 years, 9 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
Index: content/browser/service_worker/service_worker_version.cc
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index 1bb80c7dcbf4db5e746815afb5a98539a47fe5eb..7c3c7220a36da72f981222a15351c9afee6c9510 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -166,6 +166,7 @@ ServiceWorkerVersion::ServiceWorkerVersion(
: version_id_(version_id),
status_(NEW),
is_shutdown_(false),
+ requested_sync_events_(false),
registration_(registration),
weak_factory_(this) {
if (worker_registry) {
@@ -343,6 +344,12 @@ void ServiceWorkerVersion::DispatchFetchEvent(
void ServiceWorkerVersion::DispatchSyncEvent(const StatusCallback& callback) {
DCHECK_EQ(ACTIVE, status()) << status();
+ // Don't send the event to ServiceWorkers that aren't interested.
+ if (!requested_sync_events_) {
+ callback.Run(SERVICE_WORKER_ERROR_ABORT);
+ return;
+ }
+
SendMessageAndRegisterCallback(
ServiceWorkerMsg_SyncEvent(),
base::Bind(&HandleSyncEventFinished, callback));
@@ -384,16 +391,30 @@ void ServiceWorkerVersion::OnStopped() {
message_callbacks_.Clear();
}
-void ServiceWorkerVersion::OnMessageReceived(
- int request_id, const IPC::Message& message) {
+void ServiceWorkerVersion::RequestSyncEvents(bool requested) {
+ requested_sync_events_ = requested;
+}
+
+void ServiceWorkerVersion::OnMessageReceived(int request_id,
+ const IPC::Message& message) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(ServiceWorkerVersion, message)
+ IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_RequestSyncEvents,
+ RequestSyncEvents)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+
+ if (handled)
+ return;
+
MessageCallback* callback = message_callbacks_.Lookup(request_id);
if (callback) {
callback->Run(SERVICE_WORKER_OK, message);
message_callbacks_.Remove(request_id);
return;
}
- NOTREACHED() << "Got unexpected message: " << request_id
- << " " << message.type();
+ NOTREACHED() << "Got unexpected message: " << request_id << " "
+ << message.type();
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698