OLD | NEW |
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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 // | 54 // |
55 // Now when calling into a WebKit API that requires a WebCallbacks<blink::WebMyC
lass, blink::WebMyClass>*: | 55 // Now when calling into a WebKit API that requires a WebCallbacks<blink::WebMyC
lass, blink::WebMyClass>*: |
56 // | 56 // |
57 // // call signature: callSomeMethod(WebCallbacks<MyClass, MyClass>* callback
s) | 57 // // call signature: callSomeMethod(WebCallbacks<MyClass, MyClass>* callback
s) |
58 // webObject->callSomeMethod(new CallbackPromiseAdapter<MyClass, MyClass>(res
olver, scriptExecutionContext)); | 58 // webObject->callSomeMethod(new CallbackPromiseAdapter<MyClass, MyClass>(res
olver, scriptExecutionContext)); |
59 // | 59 // |
60 // Note that this class does not manage its own lifetime. In this | 60 // Note that this class does not manage its own lifetime. In this |
61 // example that ownership of the WebCallbacks instance is being passed | 61 // example that ownership of the WebCallbacks instance is being passed |
62 // in and it is up to the callee to free the WebCallbacks instace. | 62 // in and it is up to the callee to free the WebCallbacks instace. |
63 template<typename S, typename T> | 63 template<typename S, typename T> |
64 class CallbackPromiseAdapter : public blink::WebCallbacks<typename S::WebType, t
ypename T::WebType> { | 64 class CallbackPromiseAdapter FINAL : public blink::WebCallbacks<typename S::WebT
ype, typename T::WebType> { |
65 public: | 65 public: |
66 explicit CallbackPromiseAdapter(PassRefPtr<ScriptPromiseResolver> resolver,
ExecutionContext* context) | 66 explicit CallbackPromiseAdapter(PassRefPtr<ScriptPromiseResolver> resolver,
ExecutionContext* context) |
67 : m_resolver(resolver) | 67 : m_resolver(resolver) |
68 , m_requestState(context) | 68 , m_requestState(context) |
69 { | 69 { |
70 } | 70 } |
71 virtual ~CallbackPromiseAdapter() { } | 71 virtual ~CallbackPromiseAdapter() { } |
72 | 72 |
73 virtual void onSuccess(typename S::WebType* result) OVERRIDE | 73 virtual void onSuccess(typename S::WebType* result) OVERRIDE |
74 { | 74 { |
75 DOMRequestState::Scope scope(m_requestState); | 75 DOMRequestState::Scope scope(m_requestState); |
76 m_resolver->resolve(S::from(result)); | 76 m_resolver->resolve(S::from(result)); |
77 } | 77 } |
78 void onError(typename T::WebType* error) OVERRIDE | 78 void onError(typename T::WebType* error) OVERRIDE |
79 { | 79 { |
80 DOMRequestState::Scope scope(m_requestState); | 80 DOMRequestState::Scope scope(m_requestState); |
81 m_resolver->reject(T::from(error)); | 81 m_resolver->reject(T::from(error)); |
82 } | 82 } |
83 private: | 83 private: |
84 RefPtr<ScriptPromiseResolver> m_resolver; | 84 RefPtr<ScriptPromiseResolver> m_resolver; |
85 DOMRequestState m_requestState; | 85 DOMRequestState m_requestState; |
86 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); | 86 WTF_MAKE_NONCOPYABLE(CallbackPromiseAdapter); |
87 }; | 87 }; |
88 | 88 |
89 } // namespace WebCore | 89 } // namespace WebCore |
90 | 90 |
91 #endif | 91 #endif |
OLD | NEW |