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 <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <functional> | 10 #include <functional> |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 // FinishRequest before passing the reply to the callback. | 234 // FinishRequest before passing the reply to the callback. |
235 template <typename ResponseMessage> | 235 template <typename ResponseMessage> |
236 void DispatchSimpleEvent(int request_id, const IPC::Message& message); | 236 void DispatchSimpleEvent(int request_id, const IPC::Message& message); |
237 | 237 |
238 // Sends a message event to the associated embedded worker. | 238 // Sends a message event to the associated embedded worker. |
239 void DispatchMessageEvent( | 239 void DispatchMessageEvent( |
240 const base::string16& message, | 240 const base::string16& message, |
241 const std::vector<TransferredMessagePort>& sent_message_ports, | 241 const std::vector<TransferredMessagePort>& sent_message_ports, |
242 const StatusCallback& callback); | 242 const StatusCallback& callback); |
243 | 243 |
244 // Sends activate event to the associated embedded worker and asynchronously | |
245 // calls |callback| when it errors out or it gets a response from the worker | |
246 // to notify activation completion. | |
247 // | |
248 // This must be called when the status() is INSTALLED. Calling this changes | |
249 // the version's status to ACTIVATING. | |
250 // Upon completion, the version's status will be changed to ACTIVATED | |
251 // on success, or back to INSTALLED on failure. | |
252 void DispatchActivateEvent(const StatusCallback& callback); | |
253 | |
254 // Sends fetch event to the associated embedded worker and calls | 244 // Sends fetch event to the associated embedded worker and calls |
255 // |callback| with the response from the worker. | 245 // |callback| with the response from the worker. |
256 // | 246 // |
257 // This must be called when the status() is ACTIVATED. Calling this in other | 247 // This must be called when the status() is ACTIVATED. Calling this in other |
258 // statuses will result in an error SERVICE_WORKER_ERROR_FAILED. | 248 // statuses will result in an error SERVICE_WORKER_ERROR_FAILED. |
259 void DispatchFetchEvent(const ServiceWorkerFetchRequest& request, | 249 void DispatchFetchEvent(const ServiceWorkerFetchRequest& request, |
260 const base::Closure& prepare_callback, | 250 const base::Closure& prepare_callback, |
261 const FetchCallback& fetch_callback); | 251 const FetchCallback& fetch_callback); |
262 | 252 |
263 // Sends a cross origin message event to the associated embedded worker and | 253 // Sends a cross origin message event to the associated embedded worker and |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, RequestCustomizedTimeout); | 367 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, RequestCustomizedTimeout); |
378 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, | 368 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerVersionTest, |
379 RequestCustomizedTimeoutKill); | 369 RequestCustomizedTimeoutKill); |
380 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerWaitForeverInFetchTest, | 370 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerWaitForeverInFetchTest, |
381 MixedRequestTimeouts); | 371 MixedRequestTimeouts); |
382 | 372 |
383 class Metrics; | 373 class Metrics; |
384 class PingController; | 374 class PingController; |
385 | 375 |
386 enum RequestType { | 376 enum RequestType { |
387 REQUEST_ACTIVATE, | |
388 REQUEST_FETCH, | 377 REQUEST_FETCH, |
389 REQUEST_CUSTOM, | 378 REQUEST_CUSTOM, |
390 NUM_REQUEST_TYPES | 379 NUM_REQUEST_TYPES |
391 }; | 380 }; |
392 | 381 |
393 struct RequestInfo { | 382 struct RequestInfo { |
394 RequestInfo(int id, | 383 RequestInfo(int id, |
395 RequestType type, | 384 RequestType type, |
396 ServiceWorkerMetrics::EventType event_type, | 385 ServiceWorkerMetrics::EventType event_type, |
397 const base::TimeTicks& expiration, | 386 const base::TimeTicks& expiration, |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
518 const GURL& source_url) override; | 507 const GURL& source_url) override; |
519 void OnReportConsoleMessage(int source_identifier, | 508 void OnReportConsoleMessage(int source_identifier, |
520 int message_level, | 509 int message_level, |
521 const base::string16& message, | 510 const base::string16& message, |
522 int line_number, | 511 int line_number, |
523 const GURL& source_url) override; | 512 const GURL& source_url) override; |
524 bool OnMessageReceived(const IPC::Message& message) override; | 513 bool OnMessageReceived(const IPC::Message& message) override; |
525 | 514 |
526 void OnStartSentAndScriptEvaluated(ServiceWorkerStatusCode status); | 515 void OnStartSentAndScriptEvaluated(ServiceWorkerStatusCode status); |
527 | 516 |
528 void DispatchActivateEventAfterStartWorker(const StatusCallback& callback); | |
529 | |
530 void DispatchMessageEventInternal( | 517 void DispatchMessageEventInternal( |
531 const base::string16& message, | 518 const base::string16& message, |
532 const std::vector<TransferredMessagePort>& sent_message_ports, | 519 const std::vector<TransferredMessagePort>& sent_message_ports, |
533 const StatusCallback& callback); | 520 const StatusCallback& callback); |
534 | 521 |
535 // Message handlers. | 522 // Message handlers. |
536 | 523 |
537 // This corresponds to the spec's matchAll(options) steps. | 524 // This corresponds to the spec's matchAll(options) steps. |
538 void OnGetClients(int request_id, | 525 void OnGetClients(int request_id, |
539 const ServiceWorkerClientQueryOptions& options); | 526 const ServiceWorkerClientQueryOptions& options); |
540 | 527 |
541 void OnActivateEventFinished(int request_id, | |
542 blink::WebServiceWorkerEventResult result); | |
543 void OnFetchEventFinished(int request_id, | 528 void OnFetchEventFinished(int request_id, |
544 ServiceWorkerFetchEventResult result, | 529 ServiceWorkerFetchEventResult result, |
545 const ServiceWorkerResponse& response); | 530 const ServiceWorkerResponse& response); |
546 void OnSimpleEventResponse(int request_id, | 531 void OnSimpleEventResponse(int request_id, |
547 blink::WebServiceWorkerEventResult result); | 532 blink::WebServiceWorkerEventResult result); |
548 void OnOpenWindow(int request_id, GURL url); | 533 void OnOpenWindow(int request_id, GURL url); |
549 void OnOpenWindowFinished(int request_id, | 534 void OnOpenWindowFinished(int request_id, |
550 ServiceWorkerStatusCode status, | 535 ServiceWorkerStatusCode status, |
551 const std::string& client_uuid, | 536 const std::string& client_uuid, |
552 const ServiceWorkerClientInfo& client_info); | 537 const ServiceWorkerClientInfo& client_info); |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
661 std::vector<GURL> foreign_fetch_scopes_; | 646 std::vector<GURL> foreign_fetch_scopes_; |
662 | 647 |
663 Status status_ = NEW; | 648 Status status_ = NEW; |
664 scoped_ptr<EmbeddedWorkerInstance> embedded_worker_; | 649 scoped_ptr<EmbeddedWorkerInstance> embedded_worker_; |
665 std::vector<StatusCallback> start_callbacks_; | 650 std::vector<StatusCallback> start_callbacks_; |
666 std::vector<StatusCallback> stop_callbacks_; | 651 std::vector<StatusCallback> stop_callbacks_; |
667 std::vector<base::Closure> status_change_callbacks_; | 652 std::vector<base::Closure> status_change_callbacks_; |
668 | 653 |
669 // Message callbacks. (Update HasInflightRequests() too when you update this | 654 // Message callbacks. (Update HasInflightRequests() too when you update this |
670 // list.) | 655 // list.) |
671 IDMap<PendingRequest<StatusCallback>, IDMapOwnPointer> activate_requests_; | |
672 IDMap<PendingRequest<FetchCallback>, IDMapOwnPointer> fetch_requests_; | 656 IDMap<PendingRequest<FetchCallback>, IDMapOwnPointer> fetch_requests_; |
673 IDMap<PendingRequest<StatusCallback>, IDMapOwnPointer> custom_requests_; | 657 IDMap<PendingRequest<StatusCallback>, IDMapOwnPointer> custom_requests_; |
674 | 658 |
675 // Stores all open connections to mojo services. Maps the service name to | 659 // Stores all open connections to mojo services. Maps the service name to |
676 // the actual interface pointer. When a connection is closed it is removed | 660 // the actual interface pointer. When a connection is closed it is removed |
677 // from this map. | 661 // from this map. |
678 // mojo_services_[Interface::Name_] is assumed to always contain a | 662 // mojo_services_[Interface::Name_] is assumed to always contain a |
679 // MojoServiceWrapper<Interface> instance. | 663 // MojoServiceWrapper<Interface> instance. |
680 base::ScopedPtrHashMap<const char*, scoped_ptr<BaseMojoServiceWrapper>> | 664 base::ScopedPtrHashMap<const char*, scoped_ptr<BaseMojoServiceWrapper>> |
681 mojo_services_; | 665 mojo_services_; |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
808 | 792 |
809 // At this point |this| can have been deleted, so don't do anything other | 793 // At this point |this| can have been deleted, so don't do anything other |
810 // than returning. | 794 // than returning. |
811 | 795 |
812 return true; | 796 return true; |
813 } | 797 } |
814 | 798 |
815 } // namespace content | 799 } // namespace content |
816 | 800 |
817 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_VERSION_H_ | 801 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_VERSION_H_ |
OLD | NEW |