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

Side by Side Diff: content/renderer/service_worker/service_worker_context_client.cc

Issue 2943583002: [extension SW] Support lazy events from extension service workers. (Closed)
Patch Set: Address comments 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/renderer/service_worker/service_worker_context_client.h" 5 #include "content/renderer/service_worker/service_worker_context_client.h"
6 6
7 #include <map> 7 #include <map>
8 #include <memory> 8 #include <memory>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 worker_task_runner_->PostTask( 737 worker_task_runner_->PostTask(
738 FROM_HERE, base::Bind(&ServiceWorkerContextClient::SendWorkerStarted, 738 FROM_HERE, base::Bind(&ServiceWorkerContextClient::SendWorkerStarted,
739 GetWeakPtr())); 739 GetWeakPtr()));
740 } 740 }
741 741
742 void ServiceWorkerContextClient::DidInitializeWorkerContext( 742 void ServiceWorkerContextClient::DidInitializeWorkerContext(
743 v8::Local<v8::Context> context) { 743 v8::Local<v8::Context> context) {
744 GetContentClient() 744 GetContentClient()
745 ->renderer() 745 ->renderer()
746 ->DidInitializeServiceWorkerContextOnWorkerThread( 746 ->DidInitializeServiceWorkerContextOnWorkerThread(
747 context, service_worker_version_id_, script_url_); 747 context, service_worker_version_id_, service_worker_scope_,
748 script_url_);
748 } 749 }
749 750
750 void ServiceWorkerContextClient::WillDestroyWorkerContext( 751 void ServiceWorkerContextClient::WillDestroyWorkerContext(
751 v8::Local<v8::Context> context) { 752 v8::Local<v8::Context> context) {
752 // At this point WillStopCurrentWorkerThread is already called, so 753 // At this point WillStopCurrentWorkerThread is already called, so
753 // worker_task_runner_->RunsTasksInCurrentSequence() returns false 754 // worker_task_runner_->RunsTasksInCurrentSequence() returns false
754 // (while we're still on the worker thread). 755 // (while we're still on the worker thread).
755 proxy_ = NULL; 756 proxy_ = NULL;
756 757
757 // Aborts all the pending events callbacks. 758 // Aborts all the pending events callbacks.
(...skipping 13 matching lines...) Expand all
771 772
772 // We have to clear callbacks now, as they need to be freed on the 773 // We have to clear callbacks now, as they need to be freed on the
773 // same thread. 774 // same thread.
774 context_.reset(); 775 context_.reset();
775 776
776 // This also lets the message filter stop dispatching messages to 777 // This also lets the message filter stop dispatching messages to
777 // this client. 778 // this client.
778 g_worker_client_tls.Pointer()->Set(NULL); 779 g_worker_client_tls.Pointer()->Set(NULL);
779 780
780 GetContentClient()->renderer()->WillDestroyServiceWorkerContextOnWorkerThread( 781 GetContentClient()->renderer()->WillDestroyServiceWorkerContextOnWorkerThread(
781 context, service_worker_version_id_, script_url_); 782 context, service_worker_version_id_, service_worker_scope_, script_url_);
782 } 783 }
783 784
784 void ServiceWorkerContextClient::WorkerContextDestroyed() { 785 void ServiceWorkerContextClient::WorkerContextDestroyed() {
785 DCHECK(g_worker_client_tls.Pointer()->Get() == NULL); 786 DCHECK(g_worker_client_tls.Pointer()->Get() == NULL);
786 787
787 // TODO(shimazu): The signals to the browser should be in the order: 788 // TODO(shimazu): The signals to the browser should be in the order:
788 // (1) WorkerStopped (via mojo call EmbeddedWorkerInstanceHost.OnStopped()) 789 // (1) WorkerStopped (via mojo call EmbeddedWorkerInstanceHost.OnStopped())
789 // (2) ProviderDestroyed (via mojo call 790 // (2) ProviderDestroyed (via mojo call
790 // ServiceWorkerDispatcherHost.OnProviderDestroyed()), this is triggered by 791 // ServiceWorkerDispatcherHost.OnProviderDestroyed()), this is triggered by
791 // the following EmbeddedWorkerInstanceClientImpl::WorkerContextDestroyed(), 792 // the following EmbeddedWorkerInstanceClientImpl::WorkerContextDestroyed(),
(...skipping 904 matching lines...) Expand 10 before | Expand all | Expand 10 after
1696 } 1697 }
1697 1698
1698 base::WeakPtr<ServiceWorkerContextClient> 1699 base::WeakPtr<ServiceWorkerContextClient>
1699 ServiceWorkerContextClient::GetWeakPtr() { 1700 ServiceWorkerContextClient::GetWeakPtr() {
1700 DCHECK(worker_task_runner_->RunsTasksInCurrentSequence()); 1701 DCHECK(worker_task_runner_->RunsTasksInCurrentSequence());
1701 DCHECK(context_); 1702 DCHECK(context_);
1702 return context_->weak_factory.GetWeakPtr(); 1703 return context_->weak_factory.GetWeakPtr();
1703 } 1704 }
1704 1705
1705 } // namespace content 1706 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698