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

Side by Side Diff: Source/bindings/core/v8/CallbackPromiseAdapter.h

Issue 783423003: Make ScriptPromiseResolver RefCountedWillBeRefCountedGarbageCollected. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years 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 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 // // call signature: callSomeMethod(WebCallbacks<MyClass, MyClass>* callback s) 72 // // call signature: callSomeMethod(WebCallbacks<MyClass, MyClass>* callback s)
73 // webObject->callSomeMethod(new CallbackPromiseAdapter<MyClass, MyClass>(res olver, scriptExecutionContext)); 73 // webObject->callSomeMethod(new CallbackPromiseAdapter<MyClass, MyClass>(res olver, scriptExecutionContext));
74 // 74 //
75 // Note that this class does not manage its own lifetime. In this 75 // Note that this class does not manage its own lifetime. In this
76 // example that ownership of the WebCallbacks instance is being passed 76 // example that ownership of the WebCallbacks instance is being passed
77 // in and it is up to the callee to free the WebCallbacks instace. 77 // in and it is up to the callee to free the WebCallbacks instace.
78 template<typename S, typename T> 78 template<typename S, typename T>
79 class CallbackPromiseAdapter final : public blink::WebCallbacks<typename S::WebT ype, typename T::WebType> { 79 class CallbackPromiseAdapter final : public blink::WebCallbacks<typename S::WebT ype, typename T::WebType> {
80 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); 80 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter);
81 public: 81 public:
82 explicit CallbackPromiseAdapter(PassRefPtr<ScriptPromiseResolver> resolver) 82 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver > resolver)
83 : m_resolver(resolver) 83 : m_resolver(resolver)
84 { 84 {
85 ASSERT(m_resolver); 85 ASSERT(m_resolver);
86 } 86 }
87 virtual ~CallbackPromiseAdapter() { } 87 virtual ~CallbackPromiseAdapter() { }
88 88
89 virtual void onSuccess(typename S::WebType* result) override 89 virtual void onSuccess(typename S::WebType* result) override
90 { 90 {
91 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) { 91 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) {
92 S::dispose(result); 92 S::dispose(result);
93 return; 93 return;
94 } 94 }
95 m_resolver->resolve(S::take(m_resolver.get(), result)); 95 m_resolver->resolve(S::take(m_resolver.get(), result));
96 } 96 }
97 97
98 virtual void onError(typename T::WebType* error) override 98 virtual void onError(typename T::WebType* error) override
99 { 99 {
100 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) { 100 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) {
101 T::dispose(error); 101 T::dispose(error);
102 return; 102 return;
103 } 103 }
104 m_resolver->reject(T::take(m_resolver.get(), error)); 104 m_resolver->reject(T::take(m_resolver.get(), error));
105 } 105 }
106 106
107 private: 107 private:
108 RefPtr<ScriptPromiseResolver> m_resolver; 108 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
109 }; 109 };
110 110
111 template<typename T> 111 template<typename T>
112 class CallbackPromiseAdapter<void, T> final : public blink::WebCallbacks<void, t ypename T::WebType> { 112 class CallbackPromiseAdapter<void, T> final : public blink::WebCallbacks<void, t ypename T::WebType> {
113 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); 113 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter);
114 public: 114 public:
115 explicit CallbackPromiseAdapter(PassRefPtr<ScriptPromiseResolver> resolver) 115 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver > resolver)
116 : m_resolver(resolver) 116 : m_resolver(resolver)
117 { 117 {
118 ASSERT(m_resolver); 118 ASSERT(m_resolver);
119 } 119 }
120 virtual ~CallbackPromiseAdapter() { } 120 virtual ~CallbackPromiseAdapter() { }
121 121
122 virtual void onSuccess() override 122 virtual void onSuccess() override
123 { 123 {
124 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) 124 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped())
125 return; 125 return;
126 m_resolver->resolve(); 126 m_resolver->resolve();
127 } 127 }
128 128
129 virtual void onError(typename T::WebType* error) override 129 virtual void onError(typename T::WebType* error) override
130 { 130 {
131 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) { 131 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) {
132 T::dispose(error); 132 T::dispose(error);
133 return; 133 return;
134 } 134 }
135 m_resolver->reject(T::take(m_resolver.get(), error)); 135 m_resolver->reject(T::take(m_resolver.get(), error));
136 } 136 }
137 137
138 private: 138 private:
139 RefPtr<ScriptPromiseResolver> m_resolver; 139 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
140 }; 140 };
141 141
142 template<typename T> 142 template<typename T>
143 class CallbackPromiseAdapter<bool, T> final : public blink::WebCallbacks<bool, t ypename T::WebType> { 143 class CallbackPromiseAdapter<bool, T> final : public blink::WebCallbacks<bool, t ypename T::WebType> {
144 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); 144 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter);
145 public: 145 public:
146 explicit CallbackPromiseAdapter(PassRefPtr<ScriptPromiseResolver> resolver) 146 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver > resolver)
147 : m_resolver(resolver) 147 : m_resolver(resolver)
148 { 148 {
149 ASSERT(m_resolver); 149 ASSERT(m_resolver);
150 } 150 }
151 virtual ~CallbackPromiseAdapter() { } 151 virtual ~CallbackPromiseAdapter() { }
152 152
153 virtual void onSuccess(bool* result) override 153 virtual void onSuccess(bool* result) override
154 { 154 {
155 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) 155 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped())
156 return; 156 return;
157 m_resolver->resolve(*result); 157 m_resolver->resolve(*result);
158 } 158 }
159 159
160 virtual void onError(typename T::WebType* error) override 160 virtual void onError(typename T::WebType* error) override
161 { 161 {
162 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) { 162 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) {
163 T::dispose(error); 163 T::dispose(error);
164 return; 164 return;
165 } 165 }
166 m_resolver->reject(T::take(m_resolver.get(), error)); 166 m_resolver->reject(T::take(m_resolver.get(), error));
167 } 167 }
168 168
169 private: 169 private:
170 RefPtr<ScriptPromiseResolver> m_resolver; 170 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
171 }; 171 };
172 172
173 template<> 173 template<>
174 class CallbackPromiseAdapter<void, void> final : public blink::WebCallbacks<void , void> { 174 class CallbackPromiseAdapter<void, void> final : public blink::WebCallbacks<void , void> {
175 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); 175 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter);
176 public: 176 public:
177 explicit CallbackPromiseAdapter(PassRefPtr<ScriptPromiseResolver> resolver) 177 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver > resolver)
178 : m_resolver(resolver) 178 : m_resolver(resolver)
179 { 179 {
180 ASSERT(m_resolver); 180 ASSERT(m_resolver);
181 } 181 }
182 virtual ~CallbackPromiseAdapter() { } 182 virtual ~CallbackPromiseAdapter() { }
183 183
184 virtual void onSuccess() override 184 virtual void onSuccess() override
185 { 185 {
186 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) 186 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped())
187 return; 187 return;
188 m_resolver->resolve(); 188 m_resolver->resolve();
189 } 189 }
190 190
191 virtual void onError() override 191 virtual void onError() override
192 { 192 {
193 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) 193 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped())
194 return; 194 return;
195 m_resolver->reject(); 195 m_resolver->reject();
196 } 196 }
197 197
198 private: 198 private:
199 RefPtr<ScriptPromiseResolver> m_resolver; 199 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
200 }; 200 };
201 201
202 template<> 202 template<>
203 class CallbackPromiseAdapter<bool, void> final : public blink::WebCallbacks<bool , void> { 203 class CallbackPromiseAdapter<bool, void> final : public blink::WebCallbacks<bool , void> {
204 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); 204 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter);
205 public: 205 public:
206 explicit CallbackPromiseAdapter(PassRefPtr<ScriptPromiseResolver> resolver) 206 explicit CallbackPromiseAdapter(PassRefPtrWillBeRawPtr<ScriptPromiseResolver > resolver)
207 : m_resolver(resolver) 207 : m_resolver(resolver)
208 { 208 {
209 ASSERT(m_resolver); 209 ASSERT(m_resolver);
210 } 210 }
211 virtual ~CallbackPromiseAdapter() { } 211 virtual ~CallbackPromiseAdapter() { }
212 212
213 virtual void onSuccess(bool* result) override 213 virtual void onSuccess(bool* result) override
214 { 214 {
215 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) 215 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped())
216 return; 216 return;
217 m_resolver->resolve(*result); 217 m_resolver->resolve(*result);
218 } 218 }
219 219
220 virtual void onError() override 220 virtual void onError() override
221 { 221 {
222 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped()) 222 if (!m_resolver->executionContext() || m_resolver->executionContext()->a ctiveDOMObjectsAreStopped())
223 return; 223 return;
224 m_resolver->reject(); 224 m_resolver->reject();
225 } 225 }
226 226
227 private: 227 private:
228 RefPtr<ScriptPromiseResolver> m_resolver; 228 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
229 }; 229 };
230 230
231 } // namespace blink 231 } // namespace blink
232 232
233 #endif 233 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698