| OLD | NEW |
| 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 20 matching lines...) Expand all Loading... |
| 31 | 31 |
| 32 namespace blink { | 32 namespace blink { |
| 33 struct WebCircularGeofencingRegion; | 33 struct WebCircularGeofencingRegion; |
| 34 } | 34 } |
| 35 | 35 |
| 36 namespace content { | 36 namespace content { |
| 37 | 37 |
| 38 struct CrossOriginServiceWorkerClient; | 38 struct CrossOriginServiceWorkerClient; |
| 39 class EmbeddedWorkerRegistry; | 39 class EmbeddedWorkerRegistry; |
| 40 struct PlatformNotificationData; | 40 struct PlatformNotificationData; |
| 41 class ServiceWorkerClientInfo; |
| 41 class ServiceWorkerContextCore; | 42 class ServiceWorkerContextCore; |
| 42 class ServiceWorkerProviderHost; | 43 class ServiceWorkerProviderHost; |
| 43 class ServiceWorkerRegistration; | 44 class ServiceWorkerRegistration; |
| 44 class ServiceWorkerURLRequestJob; | 45 class ServiceWorkerURLRequestJob; |
| 45 class ServiceWorkerVersionInfo; | 46 class ServiceWorkerVersionInfo; |
| 46 | 47 |
| 47 // This class corresponds to a specific version of a ServiceWorker | 48 // This class corresponds to a specific version of a ServiceWorker |
| 48 // script for a given pattern. When a script is upgraded, there may be | 49 // script for a given pattern. When a script is upgraded, there may be |
| 49 // more than one ServiceWorkerVersion "running" at a time, but only | 50 // more than one ServiceWorkerVersion "running" at a time, but only |
| 50 // one of them is activated. This class connects the actual script with a | 51 // one of them is activated. This class connects the actual script with a |
| 51 // running worker. | 52 // running worker. |
| 52 class CONTENT_EXPORT ServiceWorkerVersion | 53 class CONTENT_EXPORT ServiceWorkerVersion |
| 53 : NON_EXPORTED_BASE(public base::RefCounted<ServiceWorkerVersion>), | 54 : NON_EXPORTED_BASE(public base::RefCounted<ServiceWorkerVersion>), |
| 54 public EmbeddedWorkerInstance::Listener { | 55 public EmbeddedWorkerInstance::Listener { |
| 55 public: | 56 public: |
| 56 typedef base::Callback<void(ServiceWorkerStatusCode)> StatusCallback; | 57 typedef base::Callback<void(ServiceWorkerStatusCode)> StatusCallback; |
| 57 typedef base::Callback<void(ServiceWorkerStatusCode, | 58 typedef base::Callback<void(ServiceWorkerStatusCode, |
| 58 const IPC::Message& message)> MessageCallback; | 59 const IPC::Message& message)> MessageCallback; |
| 59 typedef base::Callback<void(ServiceWorkerStatusCode, | 60 typedef base::Callback<void(ServiceWorkerStatusCode, |
| 60 ServiceWorkerFetchEventResult, | 61 ServiceWorkerFetchEventResult, |
| 61 const ServiceWorkerResponse&)> FetchCallback; | 62 const ServiceWorkerResponse&)> FetchCallback; |
| 62 typedef base::Callback<void(ServiceWorkerStatusCode, | |
| 63 const ServiceWorkerClientInfo&)> | |
| 64 GetClientInfoCallback; | |
| 65 typedef base::Callback<void(ServiceWorkerStatusCode, bool)> | 63 typedef base::Callback<void(ServiceWorkerStatusCode, bool)> |
| 66 CrossOriginConnectCallback; | 64 CrossOriginConnectCallback; |
| 67 | 65 |
| 68 enum RunningStatus { | 66 enum RunningStatus { |
| 69 STOPPED = EmbeddedWorkerInstance::STOPPED, | 67 STOPPED = EmbeddedWorkerInstance::STOPPED, |
| 70 STARTING = EmbeddedWorkerInstance::STARTING, | 68 STARTING = EmbeddedWorkerInstance::STARTING, |
| 71 RUNNING = EmbeddedWorkerInstance::RUNNING, | 69 RUNNING = EmbeddedWorkerInstance::RUNNING, |
| 72 STOPPING = EmbeddedWorkerInstance::STOPPING, | 70 STOPPING = EmbeddedWorkerInstance::STOPPING, |
| 73 }; | 71 }; |
| 74 | 72 |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 328 const StatusCallback& callback); | 326 const StatusCallback& callback); |
| 329 void DispatchActivateEventAfterStartWorker(const StatusCallback& callback); | 327 void DispatchActivateEventAfterStartWorker(const StatusCallback& callback); |
| 330 | 328 |
| 331 void DispatchMessageEventInternal( | 329 void DispatchMessageEventInternal( |
| 332 const base::string16& message, | 330 const base::string16& message, |
| 333 const std::vector<int>& sent_message_port_ids, | 331 const std::vector<int>& sent_message_port_ids, |
| 334 const StatusCallback& callback); | 332 const StatusCallback& callback); |
| 335 | 333 |
| 336 // Message handlers. | 334 // Message handlers. |
| 337 void OnGetClientDocuments(int request_id); | 335 void OnGetClientDocuments(int request_id); |
| 338 void OnGetClientInfoSuccess(int request_id, | |
| 339 const ServiceWorkerClientInfo& info); | |
| 340 void OnGetClientInfoError(int request_id); | |
| 341 void OnActivateEventFinished(int request_id, | 336 void OnActivateEventFinished(int request_id, |
| 342 blink::WebServiceWorkerEventResult result); | 337 blink::WebServiceWorkerEventResult result); |
| 343 void OnInstallEventFinished(int request_id, | 338 void OnInstallEventFinished(int request_id, |
| 344 blink::WebServiceWorkerEventResult result); | 339 blink::WebServiceWorkerEventResult result); |
| 345 void OnFetchEventFinished(int request_id, | 340 void OnFetchEventFinished(int request_id, |
| 346 ServiceWorkerFetchEventResult result, | 341 ServiceWorkerFetchEventResult result, |
| 347 const ServiceWorkerResponse& response); | 342 const ServiceWorkerResponse& response); |
| 348 void OnSyncEventFinished(int request_id); | 343 void OnSyncEventFinished(int request_id); |
| 349 void OnNotificationClickEventFinished(int request_id); | 344 void OnNotificationClickEventFinished(int request_id); |
| 350 void OnPushEventFinished(int request_id, | 345 void OnPushEventFinished(int request_id, |
| 351 blink::WebServiceWorkerEventResult result); | 346 blink::WebServiceWorkerEventResult result); |
| 352 void OnGeofencingEventFinished(int request_id); | 347 void OnGeofencingEventFinished(int request_id); |
| 353 void OnCrossOriginConnectEventFinished(int request_id, | 348 void OnCrossOriginConnectEventFinished(int request_id, |
| 354 bool accept_connection); | 349 bool accept_connection); |
| 355 void OnPostMessageToDocument(int client_id, | 350 void OnPostMessageToDocument(int client_id, |
| 356 const base::string16& message, | 351 const base::string16& message, |
| 357 const std::vector<int>& sent_message_port_ids); | 352 const std::vector<int>& sent_message_port_ids); |
| 358 void OnFocusClient(int request_id, int client_id); | 353 void OnFocusClient(int request_id, int client_id); |
| 359 void OnSkipWaiting(int request_id); | 354 void OnSkipWaiting(int request_id); |
| 360 | 355 |
| 361 void OnFocusClientFinished(int request_id, bool result); | 356 void OnFocusClientFinished(int request_id, bool result); |
| 362 void DidSkipWaiting(int request_id); | 357 void DidSkipWaiting(int request_id); |
| 363 void DidGetClientInfo(int client_id, | 358 void DidGetClientInfo(int client_id, |
| 364 scoped_refptr<GetClientDocumentsCallback> callback, | 359 scoped_refptr<GetClientDocumentsCallback> callback, |
| 365 ServiceWorkerStatusCode status, | |
| 366 const ServiceWorkerClientInfo& info); | 360 const ServiceWorkerClientInfo& info); |
| 367 void ScheduleStopWorker(); | 361 void ScheduleStopWorker(); |
| 368 void StopWorkerIfIdle(); | 362 void StopWorkerIfIdle(); |
| 369 bool HasInflightRequests() const; | 363 bool HasInflightRequests() const; |
| 370 | 364 |
| 371 void DoomInternal(); | 365 void DoomInternal(); |
| 372 | 366 |
| 373 template <typename IDMAP> | 367 template <typename IDMAP> |
| 374 void RemoveCallbackAndStopIfDoomed(IDMAP* callbacks, int request_id); | 368 void RemoveCallbackAndStopIfDoomed(IDMAP* callbacks, int request_id); |
| 375 | 369 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 386 | 380 |
| 387 // Message callbacks. (Update HasInflightRequests() too when you update this | 381 // Message callbacks. (Update HasInflightRequests() too when you update this |
| 388 // list.) | 382 // list.) |
| 389 IDMap<StatusCallback, IDMapOwnPointer> activate_callbacks_; | 383 IDMap<StatusCallback, IDMapOwnPointer> activate_callbacks_; |
| 390 IDMap<StatusCallback, IDMapOwnPointer> install_callbacks_; | 384 IDMap<StatusCallback, IDMapOwnPointer> install_callbacks_; |
| 391 IDMap<FetchCallback, IDMapOwnPointer> fetch_callbacks_; | 385 IDMap<FetchCallback, IDMapOwnPointer> fetch_callbacks_; |
| 392 IDMap<StatusCallback, IDMapOwnPointer> sync_callbacks_; | 386 IDMap<StatusCallback, IDMapOwnPointer> sync_callbacks_; |
| 393 IDMap<StatusCallback, IDMapOwnPointer> notification_click_callbacks_; | 387 IDMap<StatusCallback, IDMapOwnPointer> notification_click_callbacks_; |
| 394 IDMap<StatusCallback, IDMapOwnPointer> push_callbacks_; | 388 IDMap<StatusCallback, IDMapOwnPointer> push_callbacks_; |
| 395 IDMap<StatusCallback, IDMapOwnPointer> geofencing_callbacks_; | 389 IDMap<StatusCallback, IDMapOwnPointer> geofencing_callbacks_; |
| 396 IDMap<GetClientInfoCallback, IDMapOwnPointer> get_client_info_callbacks_; | |
| 397 IDMap<CrossOriginConnectCallback, IDMapOwnPointer> | 390 IDMap<CrossOriginConnectCallback, IDMapOwnPointer> |
| 398 cross_origin_connect_callbacks_; | 391 cross_origin_connect_callbacks_; |
| 399 | 392 |
| 400 std::set<const ServiceWorkerURLRequestJob*> streaming_url_request_jobs_; | 393 std::set<const ServiceWorkerURLRequestJob*> streaming_url_request_jobs_; |
| 401 | 394 |
| 402 ControlleeMap controllee_map_; | 395 ControlleeMap controllee_map_; |
| 403 ControlleeByIDMap controllee_by_id_; | 396 ControlleeByIDMap controllee_by_id_; |
| 404 base::WeakPtr<ServiceWorkerContextCore> context_; | 397 base::WeakPtr<ServiceWorkerContextCore> context_; |
| 405 ObserverList<Listener> listeners_; | 398 ObserverList<Listener> listeners_; |
| 406 ServiceWorkerScriptCacheMap script_cache_map_; | 399 ServiceWorkerScriptCacheMap script_cache_map_; |
| 407 base::OneShotTimer<ServiceWorkerVersion> stop_worker_timer_; | 400 base::OneShotTimer<ServiceWorkerVersion> stop_worker_timer_; |
| 408 base::OneShotTimer<ServiceWorkerVersion> update_timer_; | 401 base::OneShotTimer<ServiceWorkerVersion> update_timer_; |
| 409 bool is_doomed_; | 402 bool is_doomed_; |
| 410 std::vector<int> pending_skip_waiting_requests_; | 403 std::vector<int> pending_skip_waiting_requests_; |
| 411 bool skip_waiting_; | 404 bool skip_waiting_; |
| 412 | 405 |
| 413 base::WeakPtrFactory<ServiceWorkerVersion> weak_factory_; | 406 base::WeakPtrFactory<ServiceWorkerVersion> weak_factory_; |
| 414 | 407 |
| 415 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerVersion); | 408 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerVersion); |
| 416 }; | 409 }; |
| 417 | 410 |
| 418 } // namespace content | 411 } // namespace content |
| 419 | 412 |
| 420 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_VERSION_H_ | 413 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_VERSION_H_ |
| OLD | NEW |