OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_TESTS_TEST_UTILS_H_ | 5 #ifndef PPAPI_TESTS_TEST_UTILS_H_ |
6 #define PPAPI_TESTS_TEST_UTILS_H_ | 6 #define PPAPI_TESTS_TEST_UTILS_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "ppapi/c/dev/ppb_testing_dev.h" | 10 #include "ppapi/c/dev/ppb_testing_dev.h" |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 Delegate* delegate_; | 181 Delegate* delegate_; |
182 pp::MessageLoop target_loop_; | 182 pp::MessageLoop target_loop_; |
183 }; | 183 }; |
184 | 184 |
185 namespace internal { | 185 namespace internal { |
186 | 186 |
187 template <typename OutputT, typename CallbackT> | 187 template <typename OutputT, typename CallbackT> |
188 class TestCompletionCallbackWithOutputBase { | 188 class TestCompletionCallbackWithOutputBase { |
189 public: | 189 public: |
190 explicit TestCompletionCallbackWithOutputBase(PP_Instance instance) | 190 explicit TestCompletionCallbackWithOutputBase(PP_Instance instance) |
191 : callback_(instance) { | 191 : callback_(instance), |
| 192 output_storage_() { |
| 193 CallbackT::TraitsType::Initialize(&output_storage_); |
192 } | 194 } |
193 | 195 |
194 TestCompletionCallbackWithOutputBase(PP_Instance instance, bool force_async) | 196 TestCompletionCallbackWithOutputBase(PP_Instance instance, bool force_async) |
195 : callback_(instance, force_async) { | 197 : callback_(instance, force_async), |
| 198 output_storage_() { |
| 199 CallbackT::TraitsType::Initialize(&output_storage_); |
196 } | 200 } |
197 | 201 |
198 TestCompletionCallbackWithOutputBase(PP_Instance instance, | 202 TestCompletionCallbackWithOutputBase(PP_Instance instance, |
199 CallbackType callback_type) | 203 CallbackType callback_type) |
200 : callback_(instance, callback_type) { | 204 : callback_(instance, callback_type), |
| 205 output_storage_() { |
| 206 CallbackT::TraitsType::Initialize(&output_storage_); |
201 } | 207 } |
202 | 208 |
203 CallbackT GetCallback(); | 209 CallbackT GetCallback(); |
204 OutputT output() { | 210 OutputT output() { |
205 return CallbackT::TraitsType::StorageToPluginArg( | 211 return CallbackT::TraitsType::StorageToPluginArg( |
206 output_storage_); | 212 output_storage_); |
207 } | 213 } |
208 | 214 |
209 // Delegate functions to TestCompletionCallback | 215 // Delegate functions to TestCompletionCallback |
210 void SetDelegate(TestCompletionCallback::Delegate* delegate) { | 216 void SetDelegate(TestCompletionCallback::Delegate* delegate) { |
211 callback_.SetDelegate(delegate); | 217 callback_.SetDelegate(delegate); |
212 } | 218 } |
213 void WaitForResult(int32_t result) { callback_.WaitForResult(result); } | 219 void WaitForResult(int32_t result) { callback_.WaitForResult(result); } |
214 void WaitForAbortResult(int32_t result) { | 220 void WaitForAbortResult(int32_t result) { |
215 callback_.WaitForAbortResult(result); | 221 callback_.WaitForAbortResult(result); |
216 } | 222 } |
217 bool failed() { return callback_.failed(); } | 223 bool failed() { return callback_.failed(); } |
218 const std::string& errors() { return callback_.errors(); } | 224 const std::string& errors() { return callback_.errors(); } |
219 int32_t result() const { return callback_.result(); } | 225 int32_t result() const { return callback_.result(); } |
220 void Reset() { return callback_.Reset(); } | 226 void Reset() { |
| 227 CallbackT::TraitsType::Initialize(&output_storage_); |
| 228 return callback_.Reset(); |
| 229 } |
221 | 230 |
222 private: | 231 private: |
223 TestCompletionCallback callback_; | 232 TestCompletionCallback callback_; |
224 typename CallbackT::OutputStorageType output_storage_; | 233 typename CallbackT::OutputStorageType output_storage_; |
225 }; | 234 }; |
226 | 235 |
227 template <typename OutputT, typename CallbackT> | 236 template <typename OutputT, typename CallbackT> |
228 CallbackT | 237 CallbackT |
229 TestCompletionCallbackWithOutputBase<OutputT, CallbackT>::GetCallback() { | 238 TestCompletionCallbackWithOutputBase<OutputT, CallbackT>::GetCallback() { |
230 callback_.Reset(); | 239 this->Reset(); |
231 if (callback_.callback_type() == PP_BLOCKING) { | 240 if (callback_.callback_type() == PP_BLOCKING) { |
232 CallbackT cc(&output_storage_); | 241 CallbackT cc(&output_storage_); |
233 return cc; | 242 return cc; |
234 } | 243 } |
235 | 244 |
236 callback_.set_target_loop(pp::MessageLoop::GetCurrent()); | 245 callback_.set_target_loop(pp::MessageLoop::GetCurrent()); |
237 CallbackT cc(&TestCompletionCallback::Handler, this, &output_storage_); | 246 CallbackT cc(&TestCompletionCallback::Handler, this, &output_storage_); |
238 if (callback_.callback_type() == PP_OPTIONAL) | 247 if (callback_.callback_type() == PP_OPTIONAL) |
239 cc.set_flags(PP_COMPLETIONCALLBACK_FLAG_OPTIONAL); | 248 cc.set_flags(PP_COMPLETIONCALLBACK_FLAG_OPTIONAL); |
240 return cc; | 249 return cc; |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 #error Please add support for your platform in ppapi/tests/test_utils.h | 331 #error Please add support for your platform in ppapi/tests/test_utils.h |
323 #endif | 332 #endif |
324 | 333 |
325 /* These are used to determine POSIX-like implementations vs Windows. */ | 334 /* These are used to determine POSIX-like implementations vs Windows. */ |
326 #if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || \ | 335 #if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || \ |
327 defined(__OpenBSD__) || defined(__sun) || defined(__native_client__) | 336 defined(__OpenBSD__) || defined(__sun) || defined(__native_client__) |
328 #define PPAPI_POSIX 1 | 337 #define PPAPI_POSIX 1 |
329 #endif | 338 #endif |
330 | 339 |
331 #endif // PPAPI_TESTS_TEST_UTILS_H_ | 340 #endif // PPAPI_TESTS_TEST_UTILS_H_ |
OLD | NEW |