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

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

Issue 1575283003: Move notification click event dispatching out of ServiceWorkerVersion. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@swversion-ipc-refactor
Patch Set: rebase and use DispatchSimpleEvent Created 4 years, 11 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 <stdint.h> 8 #include <stdint.h>
9 9
10 #include <functional> 10 #include <functional>
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 } 46 }
47 47
48 namespace content { 48 namespace content {
49 49
50 class EmbeddedWorkerRegistry; 50 class EmbeddedWorkerRegistry;
51 class ServiceWorkerContextCore; 51 class ServiceWorkerContextCore;
52 class ServiceWorkerProviderHost; 52 class ServiceWorkerProviderHost;
53 class ServiceWorkerRegistration; 53 class ServiceWorkerRegistration;
54 class ServiceWorkerURLRequestJob; 54 class ServiceWorkerURLRequestJob;
55 struct NavigatorConnectClient; 55 struct NavigatorConnectClient;
56 struct PlatformNotificationData;
57 struct ServiceWorkerClientInfo; 56 struct ServiceWorkerClientInfo;
58 struct ServiceWorkerVersionInfo; 57 struct ServiceWorkerVersionInfo;
59 struct TransferredMessagePort; 58 struct TransferredMessagePort;
60 59
61 // This class corresponds to a specific version of a ServiceWorker 60 // This class corresponds to a specific version of a ServiceWorker
62 // script for a given pattern. When a script is upgraded, there may be 61 // script for a given pattern. When a script is upgraded, there may be
63 // more than one ServiceWorkerVersion "running" at a time, but only 62 // more than one ServiceWorkerVersion "running" at a time, but only
64 // one of them is activated. This class connects the actual script with a 63 // one of them is activated. This class connects the actual script with a
65 // running worker. 64 // running worker.
66 class CONTENT_EXPORT ServiceWorkerVersion 65 class CONTENT_EXPORT ServiceWorkerVersion
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 263
265 // Sends fetch event to the associated embedded worker and calls 264 // Sends fetch event to the associated embedded worker and calls
266 // |callback| with the response from the worker. 265 // |callback| with the response from the worker.
267 // 266 //
268 // This must be called when the status() is ACTIVATED. Calling this in other 267 // This must be called when the status() is ACTIVATED. Calling this in other
269 // statuses will result in an error SERVICE_WORKER_ERROR_FAILED. 268 // statuses will result in an error SERVICE_WORKER_ERROR_FAILED.
270 void DispatchFetchEvent(const ServiceWorkerFetchRequest& request, 269 void DispatchFetchEvent(const ServiceWorkerFetchRequest& request,
271 const base::Closure& prepare_callback, 270 const base::Closure& prepare_callback,
272 const FetchCallback& fetch_callback); 271 const FetchCallback& fetch_callback);
273 272
274 // Sends notificationclick event to the associated embedded worker and
275 // asynchronously calls |callback| when it errors out or it gets a response
276 // from the worker to notify completion.
277 //
278 // This must be called when the status() is ACTIVATED.
279 void DispatchNotificationClickEvent(
280 const StatusCallback& callback,
281 int64_t persistent_notification_id,
282 const PlatformNotificationData& notification_data,
283 int action_index);
284
285 // Sends a cross origin message event to the associated embedded worker and 273 // Sends a cross origin message event to the associated embedded worker and
286 // asynchronously calls |callback| when the message was sent (or failed to 274 // asynchronously calls |callback| when the message was sent (or failed to
287 // sent). 275 // sent).
288 // It is the responsibility of the code calling this method to make sure that 276 // It is the responsibility of the code calling this method to make sure that
289 // any transferred message ports are put on hold while potentially a process 277 // any transferred message ports are put on hold while potentially a process
290 // for the service worker is spun up. 278 // for the service worker is spun up.
291 // 279 //
292 // This must be called when the status() is ACTIVATED. 280 // This must be called when the status() is ACTIVATED.
293 void DispatchCrossOriginMessageEvent( 281 void DispatchCrossOriginMessageEvent(
294 const NavigatorConnectClient& client, 282 const NavigatorConnectClient& client,
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerWaitForeverInFetchTest, 390 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerWaitForeverInFetchTest,
403 MixedRequestTimeouts); 391 MixedRequestTimeouts);
404 392
405 class Metrics; 393 class Metrics;
406 class PingController; 394 class PingController;
407 395
408 enum RequestType { 396 enum RequestType {
409 REQUEST_ACTIVATE, 397 REQUEST_ACTIVATE,
410 REQUEST_INSTALL, 398 REQUEST_INSTALL,
411 REQUEST_FETCH, 399 REQUEST_FETCH,
412 REQUEST_NOTIFICATION_CLICK,
413 REQUEST_CUSTOM, 400 REQUEST_CUSTOM,
414 NUM_REQUEST_TYPES 401 NUM_REQUEST_TYPES
415 }; 402 };
416 403
417 struct RequestInfo { 404 struct RequestInfo {
418 RequestInfo(int id, 405 RequestInfo(int id,
419 RequestType type, 406 RequestType type,
420 ServiceWorkerMetrics::EventType event_type, 407 ServiceWorkerMetrics::EventType event_type,
421 const base::TimeTicks& expiration, 408 const base::TimeTicks& expiration,
422 TimeoutBehavior timeout_behavior); 409 TimeoutBehavior timeout_behavior);
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 void OnGetClients(int request_id, 550 void OnGetClients(int request_id,
564 const ServiceWorkerClientQueryOptions& options); 551 const ServiceWorkerClientQueryOptions& options);
565 552
566 void OnActivateEventFinished(int request_id, 553 void OnActivateEventFinished(int request_id,
567 blink::WebServiceWorkerEventResult result); 554 blink::WebServiceWorkerEventResult result);
568 void OnInstallEventFinished(int request_id, 555 void OnInstallEventFinished(int request_id,
569 blink::WebServiceWorkerEventResult result); 556 blink::WebServiceWorkerEventResult result);
570 void OnFetchEventFinished(int request_id, 557 void OnFetchEventFinished(int request_id,
571 ServiceWorkerFetchEventResult result, 558 ServiceWorkerFetchEventResult result,
572 const ServiceWorkerResponse& response); 559 const ServiceWorkerResponse& response);
573 void OnNotificationClickEventFinished(int request_id);
574 void OnSimpleEventResponse(int request_id, 560 void OnSimpleEventResponse(int request_id,
575 blink::WebServiceWorkerEventResult result); 561 blink::WebServiceWorkerEventResult result);
576 void OnOpenWindow(int request_id, GURL url); 562 void OnOpenWindow(int request_id, GURL url);
577 void OnOpenWindowFinished(int request_id, 563 void OnOpenWindowFinished(int request_id,
578 ServiceWorkerStatusCode status, 564 ServiceWorkerStatusCode status,
579 const std::string& client_uuid, 565 const std::string& client_uuid,
580 const ServiceWorkerClientInfo& client_info); 566 const ServiceWorkerClientInfo& client_info);
581 567
582 void OnSetCachedMetadata(const GURL& url, const std::vector<char>& data); 568 void OnSetCachedMetadata(const GURL& url, const std::vector<char>& data);
583 void OnSetCachedMetadataFinished(int64_t callback_id, int result); 569 void OnSetCachedMetadataFinished(int64_t callback_id, int result);
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 scoped_ptr<EmbeddedWorkerInstance> embedded_worker_; 678 scoped_ptr<EmbeddedWorkerInstance> embedded_worker_;
693 std::vector<StatusCallback> start_callbacks_; 679 std::vector<StatusCallback> start_callbacks_;
694 std::vector<StatusCallback> stop_callbacks_; 680 std::vector<StatusCallback> stop_callbacks_;
695 std::vector<base::Closure> status_change_callbacks_; 681 std::vector<base::Closure> status_change_callbacks_;
696 682
697 // Message callbacks. (Update HasInflightRequests() too when you update this 683 // Message callbacks. (Update HasInflightRequests() too when you update this
698 // list.) 684 // list.)
699 IDMap<PendingRequest<StatusCallback>, IDMapOwnPointer> activate_requests_; 685 IDMap<PendingRequest<StatusCallback>, IDMapOwnPointer> activate_requests_;
700 IDMap<PendingRequest<StatusCallback>, IDMapOwnPointer> install_requests_; 686 IDMap<PendingRequest<StatusCallback>, IDMapOwnPointer> install_requests_;
701 IDMap<PendingRequest<FetchCallback>, IDMapOwnPointer> fetch_requests_; 687 IDMap<PendingRequest<FetchCallback>, IDMapOwnPointer> fetch_requests_;
702 IDMap<PendingRequest<StatusCallback>, IDMapOwnPointer>
703 notification_click_requests_;
704 IDMap<PendingRequest<StatusCallback>, IDMapOwnPointer> custom_requests_; 688 IDMap<PendingRequest<StatusCallback>, IDMapOwnPointer> custom_requests_;
705 689
706 // Stores all open connections to mojo services. Maps the service name to 690 // Stores all open connections to mojo services. Maps the service name to
707 // the actual interface pointer. When a connection is closed it is removed 691 // the actual interface pointer. When a connection is closed it is removed
708 // from this map. 692 // from this map.
709 // mojo_services_[Interface::Name_] is assumed to always contain a 693 // mojo_services_[Interface::Name_] is assumed to always contain a
710 // MojoServiceWrapper<Interface> instance. 694 // MojoServiceWrapper<Interface> instance.
711 base::ScopedPtrHashMap<const char*, scoped_ptr<BaseMojoServiceWrapper>> 695 base::ScopedPtrHashMap<const char*, scoped_ptr<BaseMojoServiceWrapper>>
712 mojo_services_; 696 mojo_services_;
713 697
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 if (!result || received_request_id != request_id_) 814 if (!result || received_request_id != request_id_)
831 return false; 815 return false;
832 816
833 CallbackType protect(callback_); 817 CallbackType protect(callback_);
834 // Essentially same code as what IPC_MESSAGE_FORWARD expands to. 818 // Essentially same code as what IPC_MESSAGE_FORWARD expands to.
835 void* param = nullptr; 819 void* param = nullptr;
836 if (!ResponseMessage::Dispatch(&message, &callback_, this, param, 820 if (!ResponseMessage::Dispatch(&message, &callback_, this, param,
837 &CallbackType::Run)) 821 &CallbackType::Run))
838 message.set_dispatch_error(); 822 message.set_dispatch_error();
839 823
824 // At this point |this| can have been deleted, so don't do anything other
825 // than returning.
826
840 return true; 827 return true;
841 } 828 }
842 829
843 } // namespace content 830 } // namespace content
844 831
845 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_VERSION_H_ 832 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_VERSION_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698