Changeset 200875 in webkit
- Timestamp:
- May 13, 2016, 12:19:01 PM (9 years ago)
- Location:
- trunk/Source
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WTF/ChangeLog
r200866 r200875 1 2016-05-13 Chris Dumez <cdumez@apple.com> 2 3 Unreviewed, rolling out r200837. 4 5 Seems to have regressed Speedometer and JetStream on iOS 6 7 Reverted changeset: 8 9 "DOMPromise should only restrict the resolution type" 10 https://bugs.webkit.org/show_bug.cgi?id=157307 11 http://trac.webkit.org/changeset/200837 12 1 13 2016-05-13 Beth Dakin <bdakin@apple.com> 2 14 -
trunk/Source/WTF/wtf/Ref.h
r200837 r200875 47 47 template<typename T> class Ref { 48 48 public: 49 static constexpr bool isRef = true;50 51 49 ~Ref() 52 50 { -
trunk/Source/WTF/wtf/RefPtr.h
r200837 r200875 39 39 typedef T ValueType; 40 40 typedef ValueType* PtrType; 41 42 static constexpr bool isRefPtr = true;43 41 44 42 ALWAYS_INLINE RefPtr() : m_ptr(nullptr) { } -
trunk/Source/WebCore/ChangeLog
r200874 r200875 1 2016-05-13 Chris Dumez <cdumez@apple.com> 2 3 Unreviewed, rolling out r200837. 4 5 Seems to have regressed Speedometer and JetStream on iOS 6 7 Reverted changeset: 8 9 "DOMPromise should only restrict the resolution type" 10 https://bugs.webkit.org/show_bug.cgi?id=157307 11 http://trac.webkit.org/changeset/200837 12 1 13 2016-05-13 Sam Weinig <sam@webkit.org> 2 14 -
trunk/Source/WebCore/Modules/fetch/FetchBody.cpp
r200837 r200875 44 44 namespace WebCore { 45 45 46 static Ref <Blob> blobFromArrayBuffer(ArrayBuffer*, const String&);46 static RefPtr<Blob> blobFromArrayBuffer(ArrayBuffer*, const String&); 47 47 48 48 FetchBody::FetchBody(Ref<Blob>&& blob) … … 142 142 143 143 // FIXME: Support other types. 144 promise.reject (0);144 promise.reject<ExceptionCode>(0); 145 145 } 146 146 … … 201 201 } 202 202 String contentType = Blob::normalizedContentType(extractMIMETypeFromMediaType(m_mimeType)); 203 promise.resolve (Blob::create(extractFromText(), contentType));203 promise.resolve<RefPtr<Blob>>(Blob::create(extractFromText(), contentType)); 204 204 } 205 205 … … 237 237 } 238 238 239 static inline Ref <Blob> blobFromArrayBuffer(ArrayBuffer* buffer, const String& contentType)239 static inline RefPtr<Blob> blobFromArrayBuffer(ArrayBuffer* buffer, const String& contentType) 240 240 { 241 241 if (!buffer) … … 260 260 { 261 261 ASSERT(m_consumer); 262 m_consumer->promise.reject (0);262 m_consumer->promise.reject<ExceptionCode>(0); 263 263 m_consumer = Nullopt; 264 264 } -
trunk/Source/WebCore/Modules/fetch/FetchBody.h
r200837 r200875 54 54 void json(FetchBodyOwner&, DeferredWrapper&&); 55 55 void text(FetchBodyOwner&, DeferredWrapper&&); 56 void formData(FetchBodyOwner&, DeferredWrapper&& promise) { promise.reject (0); }56 void formData(FetchBodyOwner&, DeferredWrapper&& promise) { promise.reject<ExceptionCode>(0); } 57 57 58 58 #if ENABLE(STREAMS_API) -
trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.cpp
r200837 r200875 76 76 } 77 77 if (isDisturbed()) { 78 promise.reject (TypeError);78 promise.reject<ExceptionCode>(TypeError); 79 79 return; 80 80 } … … 86 86 { 87 87 if (m_body.isEmpty()) { 88 promise.resolve (Blob::create());89 return; 90 } 91 if (isDisturbed()) { 92 promise.reject (TypeError);88 promise.resolve<RefPtr<Blob>>(Blob::create()); 89 return; 90 } 91 if (isDisturbed()) { 92 promise.reject<ExceptionCode>(TypeError); 93 93 return; 94 94 } … … 100 100 { 101 101 if (m_body.isEmpty()) { 102 promise.reject (0);103 return; 104 } 105 if (isDisturbed()) { 106 promise.reject (TypeError);102 promise.reject<ExceptionCode>(0); 103 return; 104 } 105 if (isDisturbed()) { 106 promise.reject<ExceptionCode>(TypeError); 107 107 return; 108 108 } … … 114 114 { 115 115 if (m_body.isEmpty()) { 116 promise.reject (SYNTAX_ERR);117 return; 118 } 119 if (isDisturbed()) { 120 promise.reject (TypeError);116 promise.reject<ExceptionCode>(SYNTAX_ERR); 117 return; 118 } 119 if (isDisturbed()) { 120 promise.reject<ExceptionCode>(TypeError); 121 121 return; 122 122 } … … 132 132 } 133 133 if (isDisturbed()) { 134 promise.reject (TypeError);134 promise.reject<ExceptionCode>(TypeError); 135 135 return; 136 136 } -
trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp
r200837 r200875 214 214 m_response.m_headers->filterAndFill(resourceResponse.httpHeaderFields(), FetchHeaders::Guard::Response); 215 215 216 std::exchange(m_promise, Nullopt)->resolve( m_response);216 std::exchange(m_promise, Nullopt)->resolve(&m_response); 217 217 } 218 218 -
trunk/Source/WebCore/Modules/fetch/FetchResponse.h
r200837 r200875 55 55 static RefPtr<FetchResponse> redirect(ScriptExecutionContext&, const String&, int, ExceptionCode&); 56 56 57 using FetchPromise = DOMPromise< FetchResponse>;57 using FetchPromise = DOMPromise<RefPtr<FetchResponse>, ExceptionCode>; 58 58 static void fetch(ScriptExecutionContext&, FetchRequest&, const Dictionary&, FetchPromise&&); 59 59 static void fetch(ScriptExecutionContext&, const String&, const Dictionary&, FetchPromise&&); -
trunk/Source/WebCore/Modules/mediastream/MediaDevices.h
r200837 r200875 59 59 Document* document() const; 60 60 61 typedef DOMPromise< MediaStream> Promise;62 typedef DOMPromise<MediaDeviceInfoVector > EnumerateDevicesPromise;61 typedef DOMPromise<RefPtr<MediaStream>, RefPtr<NavigatorUserMediaError>> Promise; 62 typedef DOMPromise<MediaDeviceInfoVector, ExceptionCode> EnumerateDevicesPromise; 63 63 64 64 void getUserMedia(const Dictionary&, Promise&&, ExceptionCode&) const; -
trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.h
r200837 r200875 54 54 55 55 namespace PeerConnection { 56 typedef DOMPromise<R TCSessionDescription> SessionDescriptionPromise;57 typedef DOMPromise<std::nullptr_t > VoidPromise;58 typedef DOMPromise<R TCStatsResponse> StatsPromise;56 typedef DOMPromise<RefPtr<RTCSessionDescription>, RefPtr<DOMError>> SessionDescriptionPromise; 57 typedef DOMPromise<std::nullptr_t, RefPtr<DOMError>> VoidPromise; 58 typedef DOMPromise<RefPtr<RTCStatsResponse>, RefPtr<DOMError>> StatsPromise; 59 59 } 60 60 -
trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp
r200837 r200875 173 173 174 174 // 4 - Create the MediaStream and pass it to the success callback. 175 Ref <MediaStream> stream = MediaStream::create(*m_scriptExecutionContext, privateStream);175 RefPtr<MediaStream> stream = MediaStream::create(*m_scriptExecutionContext, privateStream); 176 176 if (m_audioConstraints) { 177 177 for (auto& track : stream->getAudioTracks()) { -
trunk/Source/WebCore/Modules/streams/ReadableStreamSource.h
r200837 r200875 45 45 virtual ~ReadableStreamSource() { } 46 46 47 typedef DOMPromise<std::nullptr_t > Promise;47 typedef DOMPromise<std::nullptr_t, ExceptionCode> Promise; 48 48 49 49 void start(ReadableStreamController&&, Promise&&); -
trunk/Source/WebCore/Modules/webaudio/AudioContext.h
r200837 r200875 110 110 using ActiveDOMObject::resume; 111 111 112 typedef DOMPromise<std::nullptr_t > Promise;112 typedef DOMPromise<std::nullptr_t, ExceptionCode> Promise; 113 113 114 114 void suspend(Promise&&); -
trunk/Source/WebCore/bindings/js/JSDOMBinding.h
r200837 r200875 252 252 JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, JSC::ArrayBufferView*); 253 253 JSC::JSValue toJS(JSC::ExecState*, JSC::JSGlobalObject*, JSC::ArrayBufferView*); 254 template<typename T> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, RefPtr<T>&);255 template<typename T> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, RefPtr<T>&&);256 template<typename T> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, RefPtr<T>&);257 template<typename T> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, RefPtr<T>&&);254 template<typename T> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, const RefPtr<T>&); 255 template<typename T> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, const Ref<T>&); 256 template<typename T> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, const RefPtr<T>&); 257 template<typename T> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, const Ref<T>&); 258 258 template<typename T> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, const Vector<T>&); 259 259 template<typename T> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, const Vector<RefPtr<T>>&); … … 270 270 271 271 JSC::JSValue jsPair(JSC::ExecState&, JSDOMGlobalObject*, JSC::JSValue, JSC::JSValue); 272 template<typename FirstType, typename SecondType> JSC::JSValue jsPair(JSC::ExecState&, JSDOMGlobalObject*, FirstType&,SecondType&);272 template<typename FirstType, typename SecondType> JSC::JSValue jsPair(JSC::ExecState&, JSDOMGlobalObject*, const FirstType&, const SecondType&); 273 273 274 274 RefPtr<JSC::ArrayBufferView> toArrayBufferView(JSC::JSValue); … … 543 543 } 544 544 545 template<typename T> inline JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, RefPtr<T>& ptr)545 template<typename T> inline JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, const RefPtr<T>& ptr) 546 546 { 547 547 return toJS(exec, globalObject, ptr.get()); 548 548 } 549 549 550 template<typename T> inline JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, RefPtr<T>&& ptr)551 {552 return toJS(exec, globalObject, ptr.get());553 }554 555 550 template<typename T> inline JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, const Ref<T>& ptr) 556 551 { … … 558 553 } 559 554 560 template<typename T> inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, RefPtr<T>&& ptr)555 template<typename T> inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, const RefPtr<T>& ptr) 561 556 { 562 557 return toJSNewlyCreated(exec, globalObject, ptr.get()); 563 558 } 564 559 565 template<typename T> inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, RefPtr<T>& ptr)566 { 567 return toJSNewlyCreated(exec, globalObject, ptr.get());560 template<typename T> inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, const Ref<T>& ptr) 561 { 562 return toJSNewlyCreated(exec, globalObject, const_cast<T&>(ptr.get())); 568 563 } 569 564 … … 662 657 } 663 658 664 template<typename FirstType, typename SecondType> inline JSC::JSValue jsPair(JSC::ExecState& state, JSDOMGlobalObject* globalObject, FirstType& value1,SecondType& value2)659 template<typename FirstType, typename SecondType> inline JSC::JSValue jsPair(JSC::ExecState& state, JSDOMGlobalObject* globalObject, const FirstType& value1, const SecondType& value2) 665 660 { 666 661 return jsPair(state, globalObject, toJS(&state, globalObject, value1), toJS(&state, globalObject, value2)); -
trunk/Source/WebCore/bindings/js/JSDOMPromise.cpp
r200837 r200875 89 89 JSC::JSValue value = parseAsJSON(promise.globalObject().globalExec(), data); 90 90 if (!value) 91 promise.reject (SYNTAX_ERR);91 promise.reject<ExceptionCode>(SYNTAX_ERR); 92 92 else 93 93 promise.resolve(value); -
trunk/Source/WebCore/bindings/js/JSDOMPromise.h
r200837 r200875 34 34 namespace WebCore { 35 35 36 template<typename DOMClass>37 struct TypeInspector {38 private:39 template<typename T> static constexpr auto testIsVector(int) -> decltype(std::declval<T>().shrinkToFit(), bool()) { return true; }40 template<typename T> static constexpr bool testIsVector(...) { return false; }41 42 template<typename T> static constexpr auto testIsRef(int) -> decltype(T::isRef) { return true; }43 template<typename T> static constexpr bool testIsRef(...) { return false; }44 45 template<typename T> static constexpr auto testIsRefPtr(int) -> decltype(T::isRefPtr) { return true; }46 template<typename T> static constexpr bool testIsRefPtr(...) { return false; }47 48 public:49 static constexpr bool isRefOrRefPtr = testIsRef<DOMClass>(0) || testIsRefPtr<DOMClass>(0);50 static constexpr bool isPassByValueType = std::is_pointer<DOMClass>::value51 || std::is_same<DOMClass, std::nullptr_t>::value52 || std::is_same<DOMClass, JSC::JSValue>::value53 || std::is_same<DOMClass, bool>::value;54 static constexpr bool isPassByConstRefType = testIsVector<DOMClass>(0)55 || std::is_same<DOMClass, String>::value;56 };57 58 template<typename DOMClass, typename Enable = void>59 struct PromiseResultInspector {60 public:61 static constexpr bool passByValue = false;62 static constexpr bool passByRef = true;63 static constexpr bool passByURef = false;64 static constexpr bool passByConstRef = false;65 66 typedef DOMClass& Type;67 };68 69 template<typename DOMClass>70 struct PromiseResultInspector<DOMClass, typename std::enable_if<TypeInspector<DOMClass>::isPassByValueType>::type> {71 public:72 static constexpr bool passByValue = true;73 static constexpr bool passByRef = false;74 static constexpr bool passByURef = false;75 static constexpr bool passByConstRef = false;76 77 typedef DOMClass Type;78 };79 80 template<typename DOMClass>81 struct PromiseResultInspector<DOMClass, typename std::enable_if<TypeInspector<DOMClass>::isPassByConstRefType>::type> {82 public:83 static constexpr bool passByValue = false;84 static constexpr bool passByRef = false;85 static constexpr bool passByURef = false;86 static constexpr bool passByConstRef = true;87 88 typedef const DOMClass& Type;89 };90 91 template<typename DOMClass>92 struct PromiseResultInspector<DOMClass, typename std::enable_if<TypeInspector<DOMClass>::isRefOrRefPtr>::type> {93 static constexpr bool passByValue = false;94 static constexpr bool passByRef = false;95 static constexpr bool passByURef = true;96 static constexpr bool passByConstRef = false;97 };98 99 36 class DeferredWrapper { 100 37 public: 101 38 DeferredWrapper(JSC::ExecState*, JSDOMGlobalObject*, JSC::JSPromiseDeferred*); 102 39 103 template<class ResolveResultType> typename std::enable_if<PromiseResultInspector<ResolveResultType>::passByValue, void>::type 104 resolve(ResolveResultType result) { resolveWithValue(result); } 105 template<class ResolveResultType> typename std::enable_if<PromiseResultInspector<ResolveResultType>::passByRef, void>::type 106 resolve(ResolveResultType& result) { resolveWithValue(result); } 107 template<class ResolveResultType> typename std::enable_if<PromiseResultInspector<ResolveResultType>::passByURef, void>::type 108 resolve(ResolveResultType&& result) { resolveWithValue(std::forward<ResolveResultType>(result)); } 109 template<class ResolveResultType> typename std::enable_if<PromiseResultInspector<ResolveResultType>::passByConstRef, void>::type 110 resolve(const ResolveResultType& result) { resolveWithValue(result); } 40 template<class ResolveResultType> 41 void resolve(const ResolveResultType&); 111 42 112 template<class RejectResultType> typename std::enable_if<PromiseResultInspector<RejectResultType>::passByValue, void>::type 113 reject(RejectResultType result) { rejectWithValue(result); } 114 template<class RejectResultType> typename std::enable_if<PromiseResultInspector<RejectResultType>::passByRef, void>::type 115 reject(RejectResultType& result) { rejectWithValue(result); } 116 template<class RejectResultType> typename std::enable_if<PromiseResultInspector<RejectResultType>::passByURef, void>::type 117 reject(RejectResultType&& result) { rejectWithValue(std::forward<RejectResultType>(result)); } 118 template<class RejectResultType> typename std::enable_if<PromiseResultInspector<RejectResultType>::passByConstRef, void>::type 119 reject(const RejectResultType& result) { rejectWithValue(result); } 120 121 void reject(ExceptionCode); 43 template<class RejectResultType> 44 void reject(const RejectResultType&); 122 45 123 46 JSDOMGlobalObject& globalObject() const; … … 128 51 void resolve(JSC::ExecState& state, JSC::JSValue resolution) { callFunction(state, m_deferred->resolve(), resolution); } 129 52 void reject(JSC::ExecState& state, JSC::JSValue resolution) { callFunction(state, m_deferred->reject(), resolution); } 130 131 template<class RejectResultType> void rejectWithValue(RejectResultType&&);132 template<class ResolveResultType> void resolveWithValue(ResolveResultType&&);133 53 134 54 JSC::Strong<JSDOMGlobalObject> m_globalObject; … … 152 72 } 153 73 154 template <typename Value >74 template <typename Value, typename Error> 155 75 class DOMPromise { 156 76 public: … … 161 81 DOMPromise& operator=(DOMPromise const&) = default; 162 82 163 void resolve(typename PromiseResultInspector<Value>::Type value) { m_wrapper.resolve(value); } 164 165 template<typename ErrorType> void reject(ErrorType&& error) { m_wrapper.reject(std::forward<ErrorType>(error)); } 83 void resolve(const Value& value) { m_wrapper.resolve<Value>(value); } 84 void reject(const Error& error) { m_wrapper.reject<Error>(error); } 166 85 167 86 private: … … 169 88 }; 170 89 171 inline void DeferredWrapper::reject(ExceptionCode ec) 90 template<class ResolveResultType> 91 inline void DeferredWrapper::resolve(const ResolveResultType& result) 92 { 93 ASSERT(m_deferred); 94 ASSERT(m_globalObject); 95 JSC::ExecState* exec = m_globalObject->globalExec(); 96 JSC::JSLockHolder locker(exec); 97 resolve(*exec, toJS(exec, m_globalObject.get(), result)); 98 } 99 100 template<class RejectResultType> 101 inline void DeferredWrapper::reject(const RejectResultType& result) 102 { 103 ASSERT(m_deferred); 104 ASSERT(m_globalObject); 105 JSC::ExecState* exec = m_globalObject->globalExec(); 106 JSC::JSLockHolder locker(exec); 107 reject(*exec, toJS(exec, m_globalObject.get(), result)); 108 } 109 110 template<> 111 inline void DeferredWrapper::reject(const std::nullptr_t&) 112 { 113 ASSERT(m_deferred); 114 ASSERT(m_globalObject); 115 JSC::ExecState* exec = m_globalObject->globalExec(); 116 JSC::JSLockHolder locker(exec); 117 reject(*exec, JSC::jsNull()); 118 } 119 120 template<> 121 inline void DeferredWrapper::reject(const JSC::JSValue& value) 122 { 123 ASSERT(m_deferred); 124 ASSERT(m_globalObject); 125 JSC::ExecState* exec = m_globalObject->globalExec(); 126 JSC::JSLockHolder locker(exec); 127 reject(*exec, value); 128 } 129 130 template<> 131 inline void DeferredWrapper::reject<ExceptionCode>(const ExceptionCode& ec) 172 132 { 173 133 ASSERT(m_deferred); … … 178 138 } 179 139 180 template< class ResolveResultType>181 inline void DeferredWrapper::resolve WithValue(ResolveResultType&& result)140 template<> 141 inline void DeferredWrapper::resolve<String>(const String& result) 182 142 { 183 143 ASSERT(m_deferred); … … 185 145 JSC::ExecState* exec = m_globalObject->globalExec(); 186 146 JSC::JSLockHolder locker(exec); 187 resolve(*exec, toJS(exec, m_globalObject.get(), std::forward<ResolveResultType>(result))); 188 } 189 190 template<class RejectResultType> 191 inline void DeferredWrapper::rejectWithValue(RejectResultType&& result) 192 { 193 ASSERT(m_deferred); 194 ASSERT(m_globalObject); 195 JSC::ExecState* exec = m_globalObject->globalExec(); 196 JSC::JSLockHolder locker(exec); 197 reject(*exec, toJS(exec, m_globalObject.get(), std::forward<RejectResultType>(result))); 147 resolve(*exec, jsString(exec, result)); 198 148 } 199 149 200 150 template<> 201 inline void DeferredWrapper::resolve (boolresult)151 inline void DeferredWrapper::resolve<bool>(const bool& result) 202 152 { 203 153 ASSERT(m_deferred); … … 209 159 210 160 template<> 211 inline void DeferredWrapper::resolve (JSC::JSValuevalue)161 inline void DeferredWrapper::resolve<JSC::JSValue>(const JSC::JSValue& value) 212 162 { 213 163 ASSERT(m_deferred); … … 219 169 220 170 template<> 221 inline void DeferredWrapper::reject(JSC::JSValue value) 222 { 223 ASSERT(m_deferred); 224 ASSERT(m_globalObject); 225 JSC::ExecState* exec = m_globalObject->globalExec(); 226 JSC::JSLockHolder locker(exec); 227 reject(*exec, value); 228 } 229 230 template<> 231 inline void DeferredWrapper::resolve(std::nullptr_t) 171 inline void DeferredWrapper::resolve(const std::nullptr_t&) 232 172 { 233 173 ASSERT(m_deferred); … … 239 179 240 180 template<> 241 inline void DeferredWrapper::reject(std::nullptr_t) 242 { 243 ASSERT(m_deferred); 244 ASSERT(m_globalObject); 245 JSC::ExecState* exec = m_globalObject->globalExec(); 246 JSC::JSLockHolder locker(exec); 247 reject(*exec, JSC::jsNull()); 248 } 249 250 template<> 251 inline void DeferredWrapper::resolve(const String& result) 252 { 253 ASSERT(m_deferred); 254 ASSERT(m_globalObject); 255 JSC::ExecState* exec = m_globalObject->globalExec(); 256 JSC::JSLockHolder locker(exec); 257 resolve(*exec, jsString(exec, result)); 258 } 259 260 template<> 261 inline void DeferredWrapper::reject(const String& result) 181 inline void DeferredWrapper::reject<String>(const String& result) 262 182 { 263 183 ASSERT(m_deferred); -
trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp
r200837 r200875 551 551 DeferredWrapper wrapper(&state, globalObject(), promiseDeferred); 552 552 auto successCallback = [wrapper](CryptoKey& result) mutable { 553 wrapper.resolve( result);553 wrapper.resolve(&result); 554 554 }; 555 555 auto failureCallback = [wrapper]() mutable { … … 786 786 auto decryptSuccessCallback = [domGlobalObject, keyFormat, unwrappedKeyAlgorithmPtr, unwrappedKeyAlgorithmParametersPtr, extractable, keyUsages, wrapper](const Vector<uint8_t>& result) mutable { 787 787 auto importSuccessCallback = [wrapper](CryptoKey& key) mutable { 788 wrapper.resolve( key);788 wrapper.resolve(&key); 789 789 }; 790 790 auto importFailureCallback = [wrapper]() mutable { -
trunk/Source/WebCore/css/FontFace.h
r200837 r200875 66 66 LoadStatus status() const; 67 67 68 typedef DOMPromise<FontFace& > Promise;68 typedef DOMPromise<FontFace&, ExceptionCode> Promise; 69 69 void registerLoaded(Promise&&); 70 70 -
trunk/Source/WebCore/css/FontFaceSet.cpp
r200837 r200875 84 84 } 85 85 86 FontFaceSet::PendingPromise::PendingPromise( LoadPromise&& promise)86 FontFaceSet::PendingPromise::PendingPromise(Promise&& promise) 87 87 : promise(WTFMove(promise)) 88 88 { … … 124 124 } 125 125 126 void FontFaceSet::load(const String& font, const String& text, LoadPromise&& promise)126 void FontFaceSet::load(const String& font, const String& text, DeferredWrapper&& promise) 127 127 { 128 128 ExceptionCode ec = 0; … … 143 143 for (auto& face : matchingFaces) { 144 144 if (face.get().status() == CSSFontFace::Status::Failure) { 145 promise.reject(DOMCoreException::create(ExceptionCodeDescription(NETWORK_ERR)) );145 promise.reject(DOMCoreException::create(ExceptionCodeDescription(NETWORK_ERR)).ptr()); 146 146 return; 147 147 } … … 168 168 } 169 169 170 void FontFaceSet::registerReady( ReadyPromise&& promise)170 void FontFaceSet::registerReady(Promise&& promise) 171 171 { 172 172 ASSERT(!m_promise); -
trunk/Source/WebCore/css/FontFaceSet.h
r200837 r200875 48 48 void clear(); 49 49 50 typedef DOMPromise<Vector<RefPtr<FontFace>>> LoadPromise; 51 void load(const String& font, const String& text, LoadPromise&&); 50 void load(const String& font, const String& text, DeferredWrapper&& promise); 52 51 bool check(const String& font, const String& text, ExceptionCode&); 53 52 … … 55 54 LoadStatus status() const; 56 55 57 typedef DOMPromise<FontFaceSet& > ReadyPromise;58 void registerReady( ReadyPromise&&);56 typedef DOMPromise<FontFaceSet&, DOMCoreException&> Promise; 57 void registerReady(Promise&&); 59 58 60 59 CSSFontFaceSet& backing() { return m_backing; } … … 76 75 private: 77 76 struct PendingPromise : RefCounted<PendingPromise> { 78 static Ref<PendingPromise> create(LoadPromise&& promise) 77 typedef DOMPromise<Vector<RefPtr<FontFace>>&, DOMCoreException&> Promise; 78 static Ref<PendingPromise> create(Promise&& promise) 79 79 { 80 80 return adoptRef(*new PendingPromise(WTFMove(promise))); … … 83 83 84 84 private: 85 PendingPromise( LoadPromise&&);85 PendingPromise(Promise&&); 86 86 87 87 public: 88 88 Vector<RefPtr<FontFace>> faces; 89 LoadPromise promise;89 Promise promise; 90 90 bool hasReachedTerminalState { false }; 91 91 }; … … 111 111 Ref<CSSFontFaceSet> m_backing; 112 112 HashMap<RefPtr<CSSFontFace>, Vector<Ref<PendingPromise>>> m_pendingPromises; 113 Optional< ReadyPromise> m_promise;113 Optional<Promise> m_promise; 114 114 bool m_isReady { false }; 115 115 }; -
trunk/Source/WebCore/html/HTMLMediaElement.h
r200837 r200875 213 213 void setLoop(bool b); 214 214 215 typedef DOMPromise<std::nullptr_t > PlayPromise;215 typedef DOMPromise<std::nullptr_t, DOMError&> PlayPromise; 216 216 void play(PlayPromise&&); 217 217
Note:
See TracChangeset
for help on using the changeset viewer.