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

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

Issue 246183003: DevTools Support for ServiceWoker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 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 f9d382c27748f208785ccf7bbe00f62f1f5ed4c5..3226fbfb26faa4f9b410a38cff87c33391182b36 100644
--- a/content/browser/service_worker/embedded_worker_instance.h
+++ b/content/browser/service_worker/embedded_worker_instance.h
@@ -17,8 +17,9 @@
#include "base/strings/string16.h"
#include "content/common/content_export.h"
#include "content/common/service_worker/service_worker_status_code.h"
+#include "url/gurl.h"
-class GURL;
+struct EmbeddedWorkerMsg_StartWorker_Params;
namespace IPC {
class Message;
@@ -27,12 +28,14 @@ class Message;
namespace content {
class EmbeddedWorkerRegistry;
+class ServiceWorkerContextCore;
struct ServiceWorkerFetchRequest;
// This gives an interface to control one EmbeddedWorker instance, which
// may be 'in-waiting' or running in one of the child processes added by
// AddProcessReference().
-class CONTENT_EXPORT EmbeddedWorkerInstance {
+class CONTENT_EXPORT EmbeddedWorkerInstance
+ : NON_EXPORTED_BASE(public base::SupportsWeakPtr<EmbeddedWorkerInstance>) {
public:
typedef base::Callback<void(ServiceWorkerStatusCode)> StatusCallback;
enum Status {
@@ -69,7 +72,6 @@ class CONTENT_EXPORT EmbeddedWorkerInstance {
// if necessary and the IPC to evaluate the worker's script is sent.
// Observer::OnStarted() is run when the worker is actually started.
void Start(int64 service_worker_version_id,
- const GURL& scope,
const GURL& script_url,
const std::vector<int>& possible_process_ids,
const StatusCallback& callback);
@@ -94,9 +96,6 @@ class CONTENT_EXPORT EmbeddedWorkerInstance {
Status status() const { return status_; }
int process_id() const { return process_id_; }
int thread_id() const { return thread_id_; }
- int worker_devtools_agent_route_id() const {
- return worker_devtools_agent_route_id_;
- }
void AddListener(Listener* listener);
void RemoveListener(Listener* listener);
@@ -111,14 +110,33 @@ class CONTENT_EXPORT EmbeddedWorkerInstance {
// Constructor is called via EmbeddedWorkerRegistry::CreateWorker().
// This instance holds a ref of |registry|.
- EmbeddedWorkerInstance(EmbeddedWorkerRegistry* registry,
- int embedded_worker_id);
-
- // Called back from EmbeddedWorkerRegistry after Start() passes control to the
- // UI thread to acquire a reference to the process.
- void RecordProcessId(int process_id,
- ServiceWorkerStatusCode status,
- int worker_devtools_agent_route_id);
+ EmbeddedWorkerInstance(base::WeakPtr<ServiceWorkerContextCore> context,
+ int embedded_worker_id,
+ const GURL& scope);
+
+ // Called back from ServiceWorkerProcessManager after Start() passes control
+ // to the UI thread to acquire a reference to the process.
+ static void RunProcessAllocated(
+ base::WeakPtr<EmbeddedWorkerInstance> instance,
+ base::WeakPtr<ServiceWorkerContextCore> context,
+ scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params,
+ const EmbeddedWorkerInstance::StatusCallback& callback,
+ ServiceWorkerStatusCode status,
+ int process_id);
+ void ProcessAllocated(scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params,
+ const StatusCallback& callback,
+ int process_id,
+ ServiceWorkerStatusCode status);
+ // Called back after ProcessAllocated() passes control to the UI thread to
+ // register to WorkerDevToolsManager.
+ static void RunSendStartWorker(
+ base::WeakPtr<EmbeddedWorkerInstance> instance,
+ scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params,
+ const EmbeddedWorkerInstance::StatusCallback& callback,
+ int worker_devtools_agent_route_id,
+ bool pause_on_start);
+ void SendStartWorker(scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params,
+ const StatusCallback& callback);
// Called back from Registry when the worker instance has ack'ed that
// it finished loading the script.
@@ -163,8 +181,10 @@ class CONTENT_EXPORT EmbeddedWorkerInstance {
std::vector<int> SortProcesses(
const std::vector<int>& possible_process_ids) const;
+ base::WeakPtr<ServiceWorkerContextCore> context_;
scoped_refptr<EmbeddedWorkerRegistry> registry_;
const int embedded_worker_id_;
+ const GURL scope_;
Status status_;
// Current running information. -1 indicates the worker is not running.

Powered by Google App Engine
This is Rietveld 408576698