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

Side by Side Diff: content/browser/service_worker/embedded_worker_instance.h

Issue 761923004: Keep alive ServiceWorkers when devtools is attached (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ASSERT_TRUE -> DCHECK :( Created 6 years 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 #ifndef CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_INSTANCE_H_ 5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_INSTANCE_H_
6 #define CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_INSTANCE_H_ 6 #define CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_INSTANCE_H_
7 7
8 #include <map> 8 #include <map>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 const GURL& script_url, 79 const GURL& script_url,
80 bool pause_after_download, 80 bool pause_after_download,
81 const StatusCallback& callback); 81 const StatusCallback& callback);
82 82
83 // Stops the worker. It is invalid to call this when the worker is 83 // Stops the worker. It is invalid to call this when the worker is
84 // not in STARTING or RUNNING status. 84 // not in STARTING or RUNNING status.
85 // This returns false if stopping a worker fails immediately, e.g. when 85 // This returns false if stopping a worker fails immediately, e.g. when
86 // IPC couldn't be sent to the worker. 86 // IPC couldn't be sent to the worker.
87 ServiceWorkerStatusCode Stop(); 87 ServiceWorkerStatusCode Stop();
88 88
89 // Stops the worker if the worker is not being debugged (i.e. devtools is
90 // not attached). This method is called by a stop-worker timer to kill
91 // idle workers.
92 void StopIfIdle();
93
89 // Sends |message| to the embedded worker running in the child process. 94 // Sends |message| to the embedded worker running in the child process.
90 // It is invalid to call this while the worker is not in RUNNING status. 95 // It is invalid to call this while the worker is not in RUNNING status.
91 ServiceWorkerStatusCode SendMessage(const IPC::Message& message); 96 ServiceWorkerStatusCode SendMessage(const IPC::Message& message);
92 97
93 void ResumeAfterDownload(); 98 void ResumeAfterDownload();
94 99
95 int embedded_worker_id() const { return embedded_worker_id_; } 100 int embedded_worker_id() const { return embedded_worker_id_; }
96 Status status() const { return status_; } 101 Status status() const { return status_; }
97 int process_id() const { return process_id_; } 102 int process_id() const { return process_id_; }
98 int thread_id() const { return thread_id_; } 103 int thread_id() const { return thread_id_; }
99 int worker_devtools_agent_route_id() const { 104 int worker_devtools_agent_route_id() const {
100 return worker_devtools_agent_route_id_; 105 return worker_devtools_agent_route_id_;
101 } 106 }
102 MessagePortMessageFilter* message_port_message_filter() const; 107 MessagePortMessageFilter* message_port_message_filter() const;
103 108
104 void AddListener(Listener* listener); 109 void AddListener(Listener* listener);
105 void RemoveListener(Listener* listener); 110 void RemoveListener(Listener* listener);
106 111
112 void set_devtools_attached(bool attached) { devtools_attached_ = attached; }
113
107 private: 114 private:
108 typedef ObserverList<Listener> ListenerList; 115 typedef ObserverList<Listener> ListenerList;
109 116
110 friend class EmbeddedWorkerRegistry; 117 friend class EmbeddedWorkerRegistry;
111 FRIEND_TEST_ALL_PREFIXES(EmbeddedWorkerInstanceTest, StartAndStop); 118 FRIEND_TEST_ALL_PREFIXES(EmbeddedWorkerInstanceTest, StartAndStop);
112 119
113 // Constructor is called via EmbeddedWorkerRegistry::CreateWorker(). 120 // Constructor is called via EmbeddedWorkerRegistry::CreateWorker().
114 // This instance holds a ref of |registry|. 121 // This instance holds a ref of |registry|.
115 EmbeddedWorkerInstance(base::WeakPtr<ServiceWorkerContextCore> context, 122 EmbeddedWorkerInstance(base::WeakPtr<ServiceWorkerContextCore> context,
116 int embedded_worker_id); 123 int embedded_worker_id);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 base::WeakPtr<ServiceWorkerContextCore> context_; 192 base::WeakPtr<ServiceWorkerContextCore> context_;
186 scoped_refptr<EmbeddedWorkerRegistry> registry_; 193 scoped_refptr<EmbeddedWorkerRegistry> registry_;
187 const int embedded_worker_id_; 194 const int embedded_worker_id_;
188 Status status_; 195 Status status_;
189 196
190 // Current running information. -1 indicates the worker is not running. 197 // Current running information. -1 indicates the worker is not running.
191 int process_id_; 198 int process_id_;
192 int thread_id_; 199 int thread_id_;
193 int worker_devtools_agent_route_id_; 200 int worker_devtools_agent_route_id_;
194 201
202 // Whether devtools is attached or not.
203 bool devtools_attached_;
204
195 StatusCallback start_callback_; 205 StatusCallback start_callback_;
196 206
197 ListenerList listener_list_; 207 ListenerList listener_list_;
198 208
199 base::WeakPtrFactory<EmbeddedWorkerInstance> weak_factory_; 209 base::WeakPtrFactory<EmbeddedWorkerInstance> weak_factory_;
200 210
201 DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerInstance); 211 DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerInstance);
202 }; 212 };
203 213
204 } // namespace content 214 } // namespace content
205 215
206 #endif // CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_INSTANCE_H_ 216 #endif // CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_INSTANCE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698