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

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

Issue 912753002: Stop Service Workers that execute JavaScript for too long. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase? Created 5 years, 10 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 #ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_VERSION_H_ 5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_VERSION_H_
6 #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_VERSION_H_ 6 #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_VERSION_H_
7 7
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 private: 304 private:
305 class GetClientDocumentsCallback; 305 class GetClientDocumentsCallback;
306 306
307 friend class base::RefCounted<ServiceWorkerVersion>; 307 friend class base::RefCounted<ServiceWorkerVersion>;
308 friend class ServiceWorkerURLRequestJobTest; 308 friend class ServiceWorkerURLRequestJobTest;
309 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerControlleeRequestHandlerTest, 309 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerControlleeRequestHandlerTest,
310 ActivateWaitingVersion); 310 ActivateWaitingVersion);
311 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, ScheduleStopWorker); 311 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, ScheduleStopWorker);
312 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, KeepAlive); 312 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, KeepAlive);
313 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, ListenerAvailability); 313 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, ListenerAvailability);
314 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerStartTimeoutTest,
315 ScriptEvaluationTimeout);
316 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerEventTimeoutTest, EventTimeout);
317
314 typedef ServiceWorkerVersion self; 318 typedef ServiceWorkerVersion self;
315 typedef std::map<ServiceWorkerProviderHost*, int> ControlleeMap; 319 typedef std::map<ServiceWorkerProviderHost*, int> ControlleeMap;
316 typedef IDMap<ServiceWorkerProviderHost> ControlleeByIDMap; 320 typedef IDMap<ServiceWorkerProviderHost> ControlleeByIDMap;
317 321
318 ~ServiceWorkerVersion() override; 322 ~ServiceWorkerVersion() override;
319 323
320 // EmbeddedWorkerInstance::Listener overrides: 324 // EmbeddedWorkerInstance::Listener overrides:
325 void OnScriptLoaded() override;
321 void OnStarted() override; 326 void OnStarted() override;
322 void OnStopped(EmbeddedWorkerInstance::Status old_status) override; 327 void OnStopped(EmbeddedWorkerInstance::Status old_status) override;
323 void OnReportException(const base::string16& error_message, 328 void OnReportException(const base::string16& error_message,
324 int line_number, 329 int line_number,
325 int column_number, 330 int column_number,
326 const GURL& source_url) override; 331 const GURL& source_url) override;
327 void OnReportConsoleMessage(int source_identifier, 332 void OnReportConsoleMessage(int source_identifier,
328 int message_level, 333 int message_level,
329 const base::string16& message, 334 const base::string16& message,
330 int line_number, 335 int line_number,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 void OnOpenWindowFinished(int request_id, 370 void OnOpenWindowFinished(int request_id,
366 int client_id, 371 int client_id,
367 const ServiceWorkerClientInfo& client_info); 372 const ServiceWorkerClientInfo& client_info);
368 373
369 void OnPostMessageToDocument(int client_id, 374 void OnPostMessageToDocument(int client_id,
370 const base::string16& message, 375 const base::string16& message,
371 const std::vector<int>& sent_message_port_ids); 376 const std::vector<int>& sent_message_port_ids);
372 void OnFocusClient(int request_id, int client_id); 377 void OnFocusClient(int request_id, int client_id);
373 void OnSkipWaiting(int request_id); 378 void OnSkipWaiting(int request_id);
374 void OnClaimClients(int request_id); 379 void OnClaimClients(int request_id);
380 void OnPongFromWorker();
375 381
376 void OnFocusClientFinished(int request_id, 382 void OnFocusClientFinished(int request_id,
377 int client_id, 383 int client_id,
378 const ServiceWorkerClientInfo& client); 384 const ServiceWorkerClientInfo& client);
379 385
380 void DidSkipWaiting(int request_id); 386 void DidSkipWaiting(int request_id);
381 void DidClaimClients(int request_id, ServiceWorkerStatusCode status); 387 void DidClaimClients(int request_id, ServiceWorkerStatusCode status);
382 void DidGetClientInfo(int client_id, 388 void DidGetClientInfo(int client_id,
383 scoped_refptr<GetClientDocumentsCallback> callback, 389 scoped_refptr<GetClientDocumentsCallback> callback,
384 const ServiceWorkerClientInfo& info); 390 const ServiceWorkerClientInfo& info);
385 391
392 void PingWorker();
393 void SchedulePingWorker();
394 void OnPingTimeout();
395
386 void ScheduleStopWorker(); 396 void ScheduleStopWorker();
387 void StopWorkerIfIdle(); 397 void StopWorkerIfIdle();
388 bool HasInflightRequests() const; 398 bool HasInflightRequests() const;
389 399
390 void DoomInternal(); 400 void DoomInternal();
391 401
392 template <typename IDMAP> 402 template <typename IDMAP>
393 void RemoveCallbackAndStopIfDoomed(IDMAP* callbacks, int request_id); 403 void RemoveCallbackAndStopIfDoomed(IDMAP* callbacks, int request_id);
394 404
395 const int64 version_id_; 405 const int64 version_id_;
(...skipping 22 matching lines...) Expand all
418 std::set<const ServiceWorkerURLRequestJob*> streaming_url_request_jobs_; 428 std::set<const ServiceWorkerURLRequestJob*> streaming_url_request_jobs_;
419 429
420 ControlleeMap controllee_map_; 430 ControlleeMap controllee_map_;
421 ControlleeByIDMap controllee_by_id_; 431 ControlleeByIDMap controllee_by_id_;
422 // Will be null while shutting down. 432 // Will be null while shutting down.
423 base::WeakPtr<ServiceWorkerContextCore> context_; 433 base::WeakPtr<ServiceWorkerContextCore> context_;
424 ObserverList<Listener> listeners_; 434 ObserverList<Listener> listeners_;
425 ServiceWorkerScriptCacheMap script_cache_map_; 435 ServiceWorkerScriptCacheMap script_cache_map_;
426 base::OneShotTimer<ServiceWorkerVersion> stop_worker_timer_; 436 base::OneShotTimer<ServiceWorkerVersion> stop_worker_timer_;
427 base::OneShotTimer<ServiceWorkerVersion> update_timer_; 437 base::OneShotTimer<ServiceWorkerVersion> update_timer_;
438 base::OneShotTimer<ServiceWorkerVersion> ping_worker_timer_;
439 bool ping_timed_out_;
428 bool is_doomed_; 440 bool is_doomed_;
429 std::vector<int> pending_skip_waiting_requests_; 441 std::vector<int> pending_skip_waiting_requests_;
430 bool skip_waiting_; 442 bool skip_waiting_;
431 scoped_ptr<net::HttpResponseInfo> main_script_http_info_; 443 scoped_ptr<net::HttpResponseInfo> main_script_http_info_;
432 444
433 base::WeakPtrFactory<ServiceWorkerVersion> weak_factory_; 445 base::WeakPtrFactory<ServiceWorkerVersion> weak_factory_;
434 446
435 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerVersion); 447 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerVersion);
436 }; 448 };
437 449
438 } // namespace content 450 } // namespace content
439 451
440 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_VERSION_H_ 452 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_VERSION_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698