OriginOperationCallbacks.h (2206B)
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 file, 5 * You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef DOM_QUOTA_ORIGINOPERATIONCALLBACKS_H_ 8 #define DOM_QUOTA_ORIGINOPERATIONCALLBACKS_H_ 9 10 #include "mozilla/Maybe.h" 11 #include "mozilla/MozPromise.h" 12 #include "mozilla/RefPtr.h" 13 #include "mozilla/dom/quota/ForwardDecls.h" 14 15 namespace mozilla::dom::quota { 16 17 struct OriginOperationCallbackOptions { 18 bool mWantWillFinish = false; 19 bool mWantWillFinishSync = false; 20 bool mWantDidFinish = false; 21 bool mWantDidFinishSync = false; 22 }; 23 24 struct OriginOperationCallbacks { 25 Maybe<RefPtr<BoolPromise>> mWillFinishPromise; 26 Maybe<RefPtr<ExclusiveBoolPromise>> mWillFinishSyncPromise; 27 Maybe<RefPtr<BoolPromise>> mDidFinishPromise; 28 Maybe<RefPtr<ExclusiveBoolPromise>> mDidFinishSyncPromise; 29 }; 30 31 class OriginOperationCallbackHolders { 32 protected: 33 MozPromiseHolder<BoolPromise> mWillFinishPromiseHolder; 34 MozPromiseHolder<ExclusiveBoolPromise> mWillFinishSyncPromiseHolder; 35 MozPromiseHolder<BoolPromise> mDidFinishPromiseHolder; 36 MozPromiseHolder<ExclusiveBoolPromise> mDidFinishSyncPromiseHolder; 37 38 public: 39 OriginOperationCallbacks GetCallbacks( 40 const OriginOperationCallbackOptions& aCallbackOptions) { 41 OriginOperationCallbacks callbacks; 42 43 if (aCallbackOptions.mWantWillFinish) { 44 callbacks.mWillFinishPromise = 45 Some(mWillFinishPromiseHolder.Ensure(__func__)); 46 } 47 48 if (aCallbackOptions.mWantWillFinishSync) { 49 callbacks.mWillFinishSyncPromise = 50 Some(mWillFinishSyncPromiseHolder.Ensure(__func__)); 51 } 52 53 if (aCallbackOptions.mWantDidFinish) { 54 callbacks.mDidFinishPromise = 55 Some(mDidFinishPromiseHolder.Ensure(__func__)); 56 } 57 58 if (aCallbackOptions.mWantDidFinishSync) { 59 callbacks.mDidFinishSyncPromise = 60 Some(mDidFinishSyncPromiseHolder.Ensure(__func__)); 61 } 62 63 return callbacks; 64 } 65 }; 66 67 } // namespace mozilla::dom::quota 68 69 #endif // DOM_QUOTA_ORIGINOPERATIONCALLBACKS_H_