RemoteWorkerControllerChild.h (2106B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef mozilla_dom_remoteworkercontrollerchild_h__ 8 #define mozilla_dom_remoteworkercontrollerchild_h__ 9 10 #include "RemoteWorkerController.h" 11 #include "mozilla/RefPtr.h" 12 #include "mozilla/dom/PRemoteWorkerControllerChild.h" 13 #include "nsISupportsImpl.h" 14 15 namespace mozilla::dom { 16 17 /** 18 * Parent-process main-thread proxy used by ServiceWorkerManager to control 19 * RemoteWorkerController instances on the parent-process PBackground thread. 20 */ 21 class RemoteWorkerControllerChild final : public PRemoteWorkerControllerChild { 22 friend class PRemoteWorkerControllerChild; 23 24 public: 25 NS_INLINE_DECL_REFCOUNTING(RemoteWorkerControllerChild, override) 26 27 explicit RemoteWorkerControllerChild(RefPtr<RemoteWorkerObserver> aObserver); 28 29 void Initialize(); 30 31 void RevokeObserver(RemoteWorkerObserver* aObserver); 32 33 void MaybeSendDelete(); 34 35 TimeStamp GetRemoteWorkerLaunchStart(); 36 TimeStamp GetRemoteWorkerLaunchEnd(); 37 38 private: 39 ~RemoteWorkerControllerChild() = default; 40 41 PFetchEventOpChild* AllocPFetchEventOpChild( 42 const ParentToParentServiceWorkerFetchEventOpArgs& aArgs); 43 44 bool DeallocPFetchEventOpChild(PFetchEventOpChild* aActor); 45 46 void ActorDestroy(ActorDestroyReason aReason) override; 47 48 mozilla::ipc::IPCResult RecvCreationFailed(); 49 50 mozilla::ipc::IPCResult RecvCreationSucceeded(); 51 52 mozilla::ipc::IPCResult RecvErrorReceived(const ErrorValue& aError); 53 54 mozilla::ipc::IPCResult RecvTerminated(); 55 56 mozilla::ipc::IPCResult RecvSetServiceWorkerSkipWaitingFlag( 57 SetServiceWorkerSkipWaitingFlagResolver&& aResolve); 58 59 RefPtr<RemoteWorkerObserver> mObserver; 60 61 bool mIPCActive = true; 62 63 TimeStamp mRemoteWorkerLaunchStart; 64 TimeStamp mRemoteWorkerLaunchEnd; 65 }; 66 67 } // namespace mozilla::dom 68 69 #endif // mozilla_dom_remoteworkercontrollerchild_h__