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

Side by Side Diff: content/browser/service_worker/service_worker_version.cc

Issue 2578023002: ServiceWorker: Stop don't send a message before connection established (Closed)
Patch Set: Reset starting_phase when releasing the process Created 3 years, 11 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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <limits> 9 #include <limits>
10 #include <map> 10 #include <map>
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 weak_factory_.GetWeakPtr(), purpose, status_, 487 weak_factory_.GetWeakPtr(), purpose, status_,
488 is_browser_startup_complete, callback)); 488 is_browser_startup_complete, callback));
489 } 489 }
490 490
491 void ServiceWorkerVersion::StopWorker(const StatusCallback& callback) { 491 void ServiceWorkerVersion::StopWorker(const StatusCallback& callback) {
492 TRACE_EVENT_INSTANT2("ServiceWorker", 492 TRACE_EVENT_INSTANT2("ServiceWorker",
493 "ServiceWorkerVersion::StopWorker (instant)", 493 "ServiceWorkerVersion::StopWorker (instant)",
494 TRACE_EVENT_SCOPE_THREAD, "Script", script_url_.spec(), 494 TRACE_EVENT_SCOPE_THREAD, "Script", script_url_.spec(),
495 "Status", VersionStatusToString(status_)); 495 "Status", VersionStatusToString(status_));
496 496
497 if (running_status() == EmbeddedWorkerStatus::STOPPED) { 497 switch (running_status()) {
498 RunSoon(base::Bind(callback, SERVICE_WORKER_OK)); 498 case EmbeddedWorkerStatus::STARTING:
499 return; 499 case EmbeddedWorkerStatus::RUNNING:
500 // Stop() returns false when it's called before StartWorker message hasn't
501 // been sent to the renderer process even though EmbeddedWorkerInstance is
502 // stopped properly.
503 // TODO(shimazu): Remove this check after Stop() hides the IPC behavior.
504 // See also a TODO on EmbeddedWorkerInstance::Stop.
505 if (!embedded_worker_->Stop()) {
506 RunSoon(base::Bind(callback, SERVICE_WORKER_ERROR_IPC_FAILED));
507 return;
508 }
509 stop_callbacks_.push_back(callback);
510 return;
511 case EmbeddedWorkerStatus::STOPPING:
512 stop_callbacks_.push_back(callback);
513 return;
514 case EmbeddedWorkerStatus::STOPPED:
515 RunSoon(base::Bind(callback, SERVICE_WORKER_OK));
516 return;
500 } 517 }
501
502 if (stop_callbacks_.empty()) {
503 ServiceWorkerStatusCode status = embedded_worker_->Stop();
504 if (status != SERVICE_WORKER_OK) {
505 RunSoon(base::Bind(callback, status));
506 return;
507 }
508 }
509 stop_callbacks_.push_back(callback);
510 } 518 }
511 519
512 void ServiceWorkerVersion::ScheduleUpdate() { 520 void ServiceWorkerVersion::ScheduleUpdate() {
513 if (!context_) 521 if (!context_)
514 return; 522 return;
515 if (update_timer_.IsRunning()) { 523 if (update_timer_.IsRunning()) {
516 update_timer_.Reset(); 524 update_timer_.Reset();
517 return; 525 return;
518 } 526 }
519 if (is_update_scheduled_) 527 if (is_update_scheduled_)
(...skipping 1396 matching lines...) Expand 10 before | Expand all | Expand 10 after
1916 1924
1917 void ServiceWorkerVersion::CleanUpExternalRequest( 1925 void ServiceWorkerVersion::CleanUpExternalRequest(
1918 const std::string& request_uuid, 1926 const std::string& request_uuid,
1919 ServiceWorkerStatusCode status) { 1927 ServiceWorkerStatusCode status) {
1920 if (status == SERVICE_WORKER_OK) 1928 if (status == SERVICE_WORKER_OK)
1921 return; 1929 return;
1922 external_request_uuid_to_request_id_.erase(request_uuid); 1930 external_request_uuid_to_request_id_.erase(request_uuid);
1923 } 1931 }
1924 1932
1925 } // namespace content 1933 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698