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

Side by Side Diff: ppapi/proxy/enter_proxy.h

Issue 9728001: Make the file chooser use PP_ArrayOutput (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 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
« no previous file with comments | « ppapi/proxy/DEPS ('k') | ppapi/proxy/ppapi_messages.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef PPAPI_PROXY_ENTER_PROXY_H_ 5 #ifndef PPAPI_PROXY_ENTER_PROXY_H_
6 #define PPAPI_PROXY_ENTER_PROXY_H_ 6 #define PPAPI_PROXY_ENTER_PROXY_H_
7 7
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "ppapi/cpp/completion_callback.h" 9 #include "ppapi/cpp/completion_callback.h"
10 #include "ppapi/proxy/host_dispatcher.h" 10 #include "ppapi/proxy/host_dispatcher.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 // Where DoFoo's signature looks like this: 82 // Where DoFoo's signature looks like this:
83 // int32_t DoFoo(PP_CompletionCallback callback); 83 // int32_t DoFoo(PP_CompletionCallback callback);
84 // And SendResult's implementation looks like this: 84 // And SendResult's implementation looks like this:
85 // void MyClass::SendResult(int32_t result, const HostResource& res) { 85 // void MyClass::SendResult(int32_t result, const HostResource& res) {
86 // Send(new FooMsg_FooComplete(..., result, res)); 86 // Send(new FooMsg_FooComplete(..., result, res));
87 // } 87 // }
88 template<typename ResourceT> 88 template<typename ResourceT>
89 class EnterHostFromHostResourceForceCallback 89 class EnterHostFromHostResourceForceCallback
90 : public EnterHostFromHostResource<ResourceT> { 90 : public EnterHostFromHostResource<ResourceT> {
91 public: 91 public:
92 EnterHostFromHostResourceForceCallback(
93 const HostResource& host_resource,
94 const pp::CompletionCallback& callback)
95 : EnterHostFromHostResource<ResourceT>(host_resource),
96 needs_running_(true),
97 callback_(callback) {
98 }
99
92 // For callbacks that take no parameters except the "int32_t result". Most 100 // For callbacks that take no parameters except the "int32_t result". Most
93 // implementations will use the 1-extra-argument constructor below. 101 // implementations will use the 1-extra-argument constructor below.
94 template<class CallbackFactory, typename Method> 102 template<class CallbackFactory, typename Method>
95 EnterHostFromHostResourceForceCallback( 103 EnterHostFromHostResourceForceCallback(
96 const HostResource& host_resource, 104 const HostResource& host_resource,
97 CallbackFactory& factory, 105 CallbackFactory& factory,
98 Method method) 106 Method method)
99 : EnterHostFromHostResource<ResourceT>(host_resource), 107 : EnterHostFromHostResource<ResourceT>(host_resource),
100 needs_running_(true), 108 needs_running_(true),
101 callback_(factory.NewOptionalCallback(method)) { 109 callback_(factory.NewOptionalCallback(method)) {
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 bool needs_running_; 169 bool needs_running_;
162 pp::CompletionCallback callback_; 170 pp::CompletionCallback callback_;
163 }; 171 };
164 172
165 // Like EnterHostFromHostResourceForceCallback but for Function APIs. It takes 173 // Like EnterHostFromHostResourceForceCallback but for Function APIs. It takes
166 // an instance instead of a resource ID. 174 // an instance instead of a resource ID.
167 template<typename FunctionT> 175 template<typename FunctionT>
168 class EnterHostFunctionForceCallback 176 class EnterHostFunctionForceCallback
169 : public thunk::EnterFunctionNoLock<FunctionT> { 177 : public thunk::EnterFunctionNoLock<FunctionT> {
170 public: 178 public:
171 // For callbacks that take no parameters except the "int32_t result". Most 179 EnterHostFunctionForceCallback(
172 // implementations will use the 1-extra-argument constructor below. 180 PP_Instance instance,
173 template<class CallbackFactory, typename Method> 181 const pp::CompletionCallback& callback)
174 EnterHostFunctionForceCallback(PP_Instance instance,
175 CallbackFactory& factory,
176 Method method)
177 : thunk::EnterFunctionNoLock<FunctionT>(instance, false), 182 : thunk::EnterFunctionNoLock<FunctionT>(instance, false),
178 needs_running_(true), 183 needs_running_(true),
179 callback_(factory.NewOptionalCallback(method)) { 184 callback_(callback) {
180 if (this->failed()) 185 if (this->failed())
181 RunCallback(PP_ERROR_BADARGUMENT); 186 RunCallback(PP_ERROR_BADARGUMENT);
182 } 187 }
183
184 // For callbacks that take an extra parameter as a closure.
185 template<class CallbackFactory, typename Method, typename A>
186 EnterHostFunctionForceCallback(PP_Instance instance,
187 CallbackFactory& factory,
188 Method method,
189 const A& a)
190 : thunk::EnterFunctionNoLock<FunctionT>(instance, false),
191 needs_running_(true),
192 callback_(factory.NewOptionalCallback(method, a)) {
193 if (this->failed())
194 RunCallback(PP_ERROR_BADARGUMENT);
195 }
196
197 // For callbacks that take two extra parameters as a closure.
198 template<class CallbackFactory, typename Method, typename A, typename B>
199 EnterHostFunctionForceCallback(PP_Instance instance,
200 CallbackFactory& factory,
201 Method method,
202 const A& a,
203 const B& b)
204 : thunk::EnterFunctionNoLock<FunctionT>(instance),
205 needs_running_(true),
206 callback_(factory.NewOptionalCallback(method, a, b)) {
207 if (this->failed())
208 RunCallback(PP_ERROR_BADARGUMENT);
209 }
210 188
211 ~EnterHostFunctionForceCallback() { 189 ~EnterHostFunctionForceCallback() {
212 if (needs_running_) { 190 if (needs_running_) {
213 NOTREACHED() << "Should always call SetResult except in the " 191 NOTREACHED() << "Should always call SetResult except in the "
214 "initialization failed case."; 192 "initialization failed case.";
215 RunCallback(PP_ERROR_FAILED); 193 RunCallback(PP_ERROR_FAILED);
216 } 194 }
217 } 195 }
218 196
219 void SetResult(int32_t result) { 197 void SetResult(int32_t result) {
(...skipping 15 matching lines...) Expand all
235 } 213 }
236 214
237 bool needs_running_; 215 bool needs_running_;
238 pp::CompletionCallback callback_; 216 pp::CompletionCallback callback_;
239 }; 217 };
240 218
241 } // namespace proxy 219 } // namespace proxy
242 } // namespace ppapi 220 } // namespace ppapi
243 221
244 #endif // PPAPI_PROXY_ENTER_PROXY_H_ 222 #endif // PPAPI_PROXY_ENTER_PROXY_H_
OLDNEW
« no previous file with comments | « ppapi/proxy/DEPS ('k') | ppapi/proxy/ppapi_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698