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

Side by Side Diff: public/platform/WebCallbacks.h

Issue 1240763002: CallbackPromiseAdapter types should be more compatible with WebCallbacks (3/3). (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase Created 5 years, 4 months 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 | Annotate | Revision Log
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 17 matching lines...) Expand all
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #ifndef WebCallbacks_h 31 #ifndef WebCallbacks_h
32 #define WebCallbacks_h 32 #define WebCallbacks_h
33 33
34 #include "public/platform/WebPassOwnPtr.h" 34 #include "public/platform/WebPassOwnPtr.h"
35 35
36 namespace blink { 36 namespace blink {
37 37
38 // A WebCallbacks<S, T> represents a callback object. Typically it is created
39 // in Blink and passed to Chromium, and onSuccess or onError will be called
40 // from Chromium.
41 // When transferring ownership, use |WebPrivatePassOwnPtr<X>| as a type
42 // parameter. Otherwise, |const X&| or |X| for a type parameter. It is
43 // generally not preferred to use |X*| because the object ownership is not well
44 // specified.
45
38 template<typename S, typename T> 46 template<typename S, typename T>
39 class WebCallbacks { 47 class WebCallbacks {
40 public: 48 public:
41 virtual ~WebCallbacks() {} 49 virtual ~WebCallbacks() {}
42 virtual void onSuccess(S) {} 50 virtual void onSuccess(S) {}
43 virtual void onError(T) {} 51 virtual void onError(T) {}
44 }; 52 };
45 53
46 template<typename T> 54 template<typename T>
47 class WebCallbacks<void, T> { 55 class WebCallbacks<void, T> {
(...skipping 12 matching lines...) Expand all
60 }; 68 };
61 69
62 template<> 70 template<>
63 class WebCallbacks<void, void> { 71 class WebCallbacks<void, void> {
64 public: 72 public:
65 virtual ~WebCallbacks() {} 73 virtual ~WebCallbacks() {}
66 virtual void onSuccess() {} 74 virtual void onSuccess() {}
67 virtual void onError() {} 75 virtual void onError() {}
68 }; 76 };
69 77
70 // WebPassOwnPtr<T> adapter: defined for migration purpose and should
71 // be deleted in the future.
72
73 template <typename S, typename T>
74 class WebCallbacks<WebPassOwnPtr<S>, WebPassOwnPtr<T>> {
75 public:
76 virtual ~WebCallbacks() {}
77 virtual void onSuccess(WebPassOwnPtr<S>) {}
78 void onSuccess(const S& r) { onSuccess(adoptWebPtr(new S(r))); }
79 virtual void onError(WebPassOwnPtr<T>) {}
80 void onError(const T& e) { onError(adoptWebPtr(new T(e))); }
81
82 void onSuccess(S* r) { onSuccess(adoptWebPtr(r)); }
83 void onError(T* e) { onError(adoptWebPtr(e)); }
84 };
85
86 template <typename S>
87 class WebCallbacks<WebPassOwnPtr<S>, void> {
88 public:
89 virtual ~WebCallbacks() {}
90 virtual void onSuccess(WebPassOwnPtr<S>) {}
91 virtual void onSuccess(const S& r) { onSuccess(adoptWebPtr(new S(r))); }
92 virtual void onError() {}
93
94 void onSuccess(S* r) { onSuccess(adoptWebPtr(r)); }
95 };
96
97 template <typename T>
98 class WebCallbacks<void, WebPassOwnPtr<T>> {
99 public:
100 virtual ~WebCallbacks() {}
101 virtual void onSuccess() {}
102 virtual void onError(WebPassOwnPtr<T>) {}
103 void onError(const T& e) { onError(adoptWebPtr(new T(e))); }
104
105 void onError(T* e) { onError(adoptWebPtr(e)); }
106 };
107
108 template <typename T>
109 class WebCallbacks<bool*, WebPassOwnPtr<T>> {
110 public:
111 virtual ~WebCallbacks() {}
112 void onSuccess(bool b) { onSuccess(&b); }
113 virtual void onError(WebPassOwnPtr<T>) {}
114 void onError(const T& e) { onError(adoptWebPtr(new T(e))); }
115
116 virtual void onSuccess(bool* b) {}
117 void onError(T* e) { onError(adoptWebPtr(e)); }
118 };
119
120 template <>
121 class WebCallbacks<bool*, void> {
122 public:
123 virtual ~WebCallbacks<bool*, void>() {}
124 void onSuccess(bool b) { onSuccess(&b); }
125 virtual void onError() {}
126
127 virtual void onSuccess(bool *b) {}
128 };
129
130 } // namespace blink 78 } // namespace blink
131 79
132 #endif 80 #endif
OLDNEW
« no previous file with comments | « Source/modules/serviceworkers/ServiceWorkerError.cpp ('k') | public/platform/WebGeofencingProvider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698