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

Side by Side 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, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/service_worker/service_worker_version.h" 5 #include "content/browser/service_worker/service_worker_version.h"
6 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "content/browser/service_worker/embedded_worker_instance.h" 8 #include "content/browser/service_worker/embedded_worker_instance.h"
9 #include "content/browser/service_worker/embedded_worker_registry.h" 9 #include "content/browser/service_worker/embedded_worker_registry.h"
10 #include "content/browser/service_worker/service_worker_context_core.h" 10 #include "content/browser/service_worker/service_worker_context_core.h"
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 159
160 } // namespace 160 } // namespace
161 161
162 ServiceWorkerVersion::ServiceWorkerVersion( 162 ServiceWorkerVersion::ServiceWorkerVersion(
163 ServiceWorkerRegistration* registration, 163 ServiceWorkerRegistration* registration,
164 EmbeddedWorkerRegistry* worker_registry, 164 EmbeddedWorkerRegistry* worker_registry,
165 int64 version_id) 165 int64 version_id)
166 : version_id_(version_id), 166 : version_id_(version_id),
167 status_(NEW), 167 status_(NEW),
168 is_shutdown_(false), 168 is_shutdown_(false),
169 requested_sync_events_(false),
169 registration_(registration), 170 registration_(registration),
170 weak_factory_(this) { 171 weak_factory_(this) {
171 if (worker_registry) { 172 if (worker_registry) {
172 embedded_worker_ = worker_registry->CreateWorker(); 173 embedded_worker_ = worker_registry->CreateWorker();
173 embedded_worker_->AddObserver(this); 174 embedded_worker_->AddObserver(this);
174 } 175 }
175 } 176 }
176 177
177 ServiceWorkerVersion::~ServiceWorkerVersion() { DCHECK(is_shutdown_); } 178 ServiceWorkerVersion::~ServiceWorkerVersion() { DCHECK(is_shutdown_); }
178 179
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 const ServiceWorkerFetchRequest& request, 337 const ServiceWorkerFetchRequest& request,
337 const FetchCallback& callback) { 338 const FetchCallback& callback) {
338 DCHECK_EQ(ACTIVE, status()) << status(); 339 DCHECK_EQ(ACTIVE, status()) << status();
339 SendMessageAndRegisterCallback( 340 SendMessageAndRegisterCallback(
340 ServiceWorkerMsg_FetchEvent(request), 341 ServiceWorkerMsg_FetchEvent(request),
341 base::Bind(&HandleFetchResponse, callback)); 342 base::Bind(&HandleFetchResponse, callback));
342 } 343 }
343 344
344 void ServiceWorkerVersion::DispatchSyncEvent(const StatusCallback& callback) { 345 void ServiceWorkerVersion::DispatchSyncEvent(const StatusCallback& callback) {
345 DCHECK_EQ(ACTIVE, status()) << status(); 346 DCHECK_EQ(ACTIVE, status()) << status();
347 // Don't send the event to ServiceWorkers that aren't interested.
348 if (!requested_sync_events_) {
349 callback.Run(SERVICE_WORKER_ERROR_ABORT);
350 return;
351 }
352
346 SendMessageAndRegisterCallback( 353 SendMessageAndRegisterCallback(
347 ServiceWorkerMsg_SyncEvent(), 354 ServiceWorkerMsg_SyncEvent(),
348 base::Bind(&HandleSyncEventFinished, callback)); 355 base::Bind(&HandleSyncEventFinished, callback));
349 } 356 }
350 357
351 void ServiceWorkerVersion::AddProcessToWorker(int process_id) { 358 void ServiceWorkerVersion::AddProcessToWorker(int process_id) {
352 DCHECK(!is_shutdown_); 359 DCHECK(!is_shutdown_);
353 embedded_worker_->AddProcessReference(process_id); 360 embedded_worker_->AddProcessReference(process_id);
354 } 361 }
355 362
(...skipping 21 matching lines...) Expand all
377 // callbacks for events). 384 // callbacks for events).
378 // TODO(kinuko): Consider if we want to add queue+resend mechanism here. 385 // TODO(kinuko): Consider if we want to add queue+resend mechanism here.
379 IDMap<MessageCallback, IDMapOwnPointer>::iterator iter(&message_callbacks_); 386 IDMap<MessageCallback, IDMapOwnPointer>::iterator iter(&message_callbacks_);
380 while (!iter.IsAtEnd()) { 387 while (!iter.IsAtEnd()) {
381 iter.GetCurrentValue()->Run(SERVICE_WORKER_ERROR_ABORT, IPC::Message()); 388 iter.GetCurrentValue()->Run(SERVICE_WORKER_ERROR_ABORT, IPC::Message());
382 iter.Advance(); 389 iter.Advance();
383 } 390 }
384 message_callbacks_.Clear(); 391 message_callbacks_.Clear();
385 } 392 }
386 393
387 void ServiceWorkerVersion::OnMessageReceived( 394 void ServiceWorkerVersion::RequestSyncEvents(bool requested) {
388 int request_id, const IPC::Message& message) { 395 requested_sync_events_ = requested;
396 }
397
398 void ServiceWorkerVersion::OnMessageReceived(int request_id,
399 const IPC::Message& message) {
400 bool handled = true;
401 IPC_BEGIN_MESSAGE_MAP(ServiceWorkerVersion, message)
402 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_RequestSyncEvents,
403 RequestSyncEvents)
404 IPC_MESSAGE_UNHANDLED(handled = false)
405 IPC_END_MESSAGE_MAP()
406
407 if (handled)
408 return;
409
389 MessageCallback* callback = message_callbacks_.Lookup(request_id); 410 MessageCallback* callback = message_callbacks_.Lookup(request_id);
390 if (callback) { 411 if (callback) {
391 callback->Run(SERVICE_WORKER_OK, message); 412 callback->Run(SERVICE_WORKER_OK, message);
392 message_callbacks_.Remove(request_id); 413 message_callbacks_.Remove(request_id);
393 return; 414 return;
394 } 415 }
395 NOTREACHED() << "Got unexpected message: " << request_id 416 NOTREACHED() << "Got unexpected message: " << request_id << " "
396 << " " << message.type(); 417 << message.type();
397 } 418 }
398 419
399 } // namespace content 420 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698