Line data Source code
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 mozilla_dom_ErrorCallbackRunnable_h
8 : #define mozilla_dom_ErrorCallbackRunnable_h
9 :
10 : #include "FileSystemDirectoryEntry.h"
11 : #include "mozilla/dom/BindingDeclarations.h"
12 : #include "mozilla/dom/PromiseNativeHandler.h"
13 :
14 : class nsIGlobalObject;
15 :
16 : namespace mozilla {
17 : namespace dom {
18 :
19 : class FileSystemEntriesCallback;
20 :
21 0 : class EntryCallbackRunnable final : public Runnable
22 : {
23 : public:
24 : EntryCallbackRunnable(FileSystemEntryCallback* aCallback,
25 : FileSystemEntry* aEntry);
26 :
27 : NS_IMETHOD
28 : Run() override;
29 :
30 : private:
31 : RefPtr<FileSystemEntryCallback> mCallback;
32 : RefPtr<FileSystemEntry> mEntry;
33 : };
34 :
35 0 : class ErrorCallbackRunnable final : public Runnable
36 : {
37 : public:
38 : ErrorCallbackRunnable(nsIGlobalObject* aGlobalObject,
39 : ErrorCallback* aCallback,
40 : nsresult aError);
41 :
42 : NS_IMETHOD
43 : Run() override;
44 :
45 : private:
46 : nsCOMPtr<nsIGlobalObject> mGlobal;
47 : RefPtr<ErrorCallback> mCallback;
48 : nsresult mError;
49 : };
50 :
51 0 : class EmptyEntriesCallbackRunnable final : public Runnable
52 : {
53 : public:
54 : explicit EmptyEntriesCallbackRunnable(FileSystemEntriesCallback* aCallback);
55 :
56 : NS_IMETHOD
57 : Run() override;
58 :
59 : private:
60 : RefPtr<FileSystemEntriesCallback> mCallback;
61 : };
62 :
63 : class GetEntryHelper final : public PromiseNativeHandler
64 : {
65 : public:
66 : NS_DECL_ISUPPORTS
67 :
68 : GetEntryHelper(FileSystemDirectoryEntry* aParentEntry,
69 : Directory* aDirectory,
70 : nsTArray<nsString>& aParts,
71 : FileSystem* aFileSystem,
72 : FileSystemEntryCallback* aSuccessCallback,
73 : ErrorCallback* aErrorCallback,
74 : FileSystemDirectoryEntry::GetInternalType aType);
75 :
76 : void
77 : Run();
78 :
79 : virtual void
80 : ResolvedCallback(JSContext* aCx, JS::Handle<JS::Value> aValue) override;
81 :
82 : virtual void
83 : RejectedCallback(JSContext* aCx, JS::Handle<JS::Value> aValue) override;
84 :
85 : private:
86 : ~GetEntryHelper();
87 :
88 : void
89 : Error(nsresult aError);
90 :
91 : void
92 : ContinueRunning(JSObject* aObj);
93 :
94 : void
95 : CompleteOperation(JSObject* aObj);
96 :
97 : RefPtr<FileSystemDirectoryEntry> mParentEntry;
98 : RefPtr<Directory> mDirectory;
99 : nsTArray<nsString> mParts;
100 : RefPtr<FileSystem> mFileSystem;
101 :
102 : RefPtr<FileSystemEntryCallback> mSuccessCallback;
103 : RefPtr<ErrorCallback> mErrorCallback;
104 :
105 : FileSystemDirectoryEntry::GetInternalType mType;
106 : };
107 :
108 : class FileSystemEntryCallbackHelper
109 : {
110 : public:
111 : static void
112 : Call(nsIGlobalObject* aGlobalObject,
113 : const Optional<OwningNonNull<FileSystemEntryCallback>>& aEntryCallback,
114 : FileSystemEntry* aEntry);
115 : };
116 :
117 : class ErrorCallbackHelper
118 : {
119 : public:
120 : static void
121 : Call(nsIGlobalObject* aGlobal,
122 : const Optional<OwningNonNull<ErrorCallback>>& aErrorCallback,
123 : nsresult aError);
124 : };
125 :
126 : } // dom namespace
127 : } // mozilla namespace
128 :
129 : #endif // mozilla_dom_CallbackRunnables_h
|