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

Unified Diff: content/browser/service_worker/embedded_worker_instance.h

Issue 2779763004: Create ServiceWorkerProviderHost before starting worker (Closed)
Patch Set: Pass the param of BindWithProviderInfo by value instead of pointer 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
Index: content/browser/service_worker/embedded_worker_instance.h
diff --git a/content/browser/service_worker/embedded_worker_instance.h b/content/browser/service_worker/embedded_worker_instance.h
index 737417c88ce30130b965a300a4ade9502c079d02..db7fae8d25113c39d34e42486bf7a1554a9718cd 100644
--- a/content/browser/service_worker/embedded_worker_instance.h
+++ b/content/browser/service_worker/embedded_worker_instance.h
@@ -71,6 +71,10 @@ class CONTENT_EXPORT EmbeddedWorkerInstance
STARTING_PHASE_MAX_VALUE,
};
+ using ProviderInfoGetter =
+ base::OnceCallback<mojom::ServiceWorkerProviderInfoForStartWorkerPtr(
+ int /* process_id */)>;
+
class Listener {
public:
virtual ~Listener() {}
@@ -108,8 +112,10 @@ class CONTENT_EXPORT EmbeddedWorkerInstance
// STOPPED status. |callback| is invoked after the worker script has been
// started and evaluated, or when an error occurs.
// |params| should be populated with service worker version info needed
- // to start the worker.
+ // to start the worker. |provider_info_getter| is called when this instance
+ // allocates a process and is ready to send a StartWorker message.
void Start(std::unique_ptr<EmbeddedWorkerStartParams> params,
+ ProviderInfoGetter provider_info_getter,
mojom::ServiceWorkerEventDispatcherRequest dispatcher_request,
const StatusCallback& callback);
@@ -228,7 +234,7 @@ class CONTENT_EXPORT EmbeddedWorkerInstance
void OnScriptLoaded() override;
// Notifies the corresponding provider host that the thread has started and is
// ready to receive messages.
- void OnThreadStarted(int thread_id, int provider_id) override;
+ void OnThreadStarted(int thread_id) override;
void OnScriptLoadFailed() override;
// Fires the callback passed to Start().
void OnScriptEvaluated(bool success) override;
@@ -283,7 +289,10 @@ class CONTENT_EXPORT EmbeddedWorkerInstance
std::unique_ptr<EmbeddedWorkerInstance::WorkerProcessHandle> process_handle_;
int thread_id_;
- // |client_| is used to send messages to the renderer process.
+ // |client_| is used to send messages to the renderer process. The browser
+ // process should not disconnect the pipe because other associated interfaces
+ // may be using it. The renderer process will disconnect the pipe when
+ // appropriate.
mojom::EmbeddedWorkerInstanceClientPtr client_;
// Binding for EmbeddedWorkerInstanceHost, runs on IO thread.
@@ -293,6 +302,9 @@ class CONTENT_EXPORT EmbeddedWorkerInstance
// a mojo struct.
mojom::ServiceWorkerEventDispatcherRequest pending_dispatcher_request_;
+ // This is set at Start and used on SendStartWorker.
+ ProviderInfoGetter provider_info_getter_;
+
// Whether devtools is attached or not.
bool devtools_attached_;

Powered by Google App Engine
This is Rietveld 408576698