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

Side by Side Diff: extensions/renderer/api_bindings_system_unittest.cc

Issue 2601143002: [Extensions Bindings] Add a GetStringPropertyFromObject test method (Closed)
Patch Set: Created 3 years, 11 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #include "extensions/renderer/api_bindings_system.h" 5 #include "extensions/renderer/api_bindings_system.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 CallFunctionOnObject(context, alpha_api, kTestCall); 225 CallFunctionOnObject(context, alpha_api, kTestCall);
226 226
227 ValidateLastRequest("alpha.functionWithCallback", "['foo']"); 227 ValidateLastRequest("alpha.functionWithCallback", "['foo']");
228 228
229 const char kResponseArgsJson[] = "['response',1,{'key':42}]"; 229 const char kResponseArgsJson[] = "['response',1,{'key':42}]";
230 std::unique_ptr<base::ListValue> expected_args = 230 std::unique_ptr<base::ListValue> expected_args =
231 ListValueFromString(kResponseArgsJson); 231 ListValueFromString(kResponseArgsJson);
232 bindings_system()->CompleteRequest(last_request()->request_id, 232 bindings_system()->CompleteRequest(last_request()->request_id,
233 *expected_args); 233 *expected_args);
234 234
235 std::unique_ptr<base::Value> result = GetBaseValuePropertyFromObject( 235 EXPECT_EQ(ReplaceSingleQuotes(kResponseArgsJson),
236 context->Global(), context, "callbackArguments"); 236 GetStringPropertyFromObject(context->Global(), context,
237 ASSERT_TRUE(result); 237 "callbackArguments"));
238 EXPECT_EQ(ReplaceSingleQuotes(kResponseArgsJson), ValueToString(*result));
239 reset_last_request(); 238 reset_last_request();
240 } 239 }
241 240
242 { 241 {
243 // Test a call with references -> response. 242 // Test a call with references -> response.
244 const char kTestCall[] = 243 const char kTestCall[] =
245 "obj.functionWithRefAndCallback({prop1: 'alpha', prop2: 42},\n" 244 "obj.functionWithRefAndCallback({prop1: 'alpha', prop2: 42},\n"
246 " function() {\n" 245 " function() {\n"
247 " this.callbackArguments = Array.from(arguments);\n" 246 " this.callbackArguments = Array.from(arguments);\n"
248 "});"; 247 "});";
249 248
250 CallFunctionOnObject(context, alpha_api, kTestCall); 249 CallFunctionOnObject(context, alpha_api, kTestCall);
251 250
252 ValidateLastRequest("alpha.functionWithRefAndCallback", 251 ValidateLastRequest("alpha.functionWithRefAndCallback",
253 "[{'prop1':'alpha','prop2':42}]"); 252 "[{'prop1':'alpha','prop2':42}]");
254 253
255 bindings_system()->CompleteRequest(last_request()->request_id, 254 bindings_system()->CompleteRequest(last_request()->request_id,
256 base::ListValue()); 255 base::ListValue());
257 256
258 std::unique_ptr<base::Value> result = GetBaseValuePropertyFromObject( 257 EXPECT_EQ("[]", GetStringPropertyFromObject(context->Global(), context,
259 context->Global(), context, "callbackArguments"); 258 "callbackArguments"));
260 ASSERT_TRUE(result);
261 EXPECT_EQ("[]", ValueToString(*result));
262 reset_last_request(); 259 reset_last_request();
263 } 260 }
264 261
265 { 262 {
266 // Test an event registration -> event occurrence. 263 // Test an event registration -> event occurrence.
267 const char kTestCall[] = 264 const char kTestCall[] =
268 "obj.alphaEvent.addListener(function() {\n" 265 "obj.alphaEvent.addListener(function() {\n"
269 " this.eventArguments = Array.from(arguments);\n" 266 " this.eventArguments = Array.from(arguments);\n"
270 "});\n"; 267 "});\n";
271 CallFunctionOnObject(context, alpha_api, kTestCall); 268 CallFunctionOnObject(context, alpha_api, kTestCall);
272 269
273 const char kResponseArgsJson[] = "['response',1,{'key':42}]"; 270 const char kResponseArgsJson[] = "['response',1,{'key':42}]";
274 std::unique_ptr<base::ListValue> expected_args = 271 std::unique_ptr<base::ListValue> expected_args =
275 ListValueFromString(kResponseArgsJson); 272 ListValueFromString(kResponseArgsJson);
276 bindings_system()->FireEventInContext("alpha.alphaEvent", context, 273 bindings_system()->FireEventInContext("alpha.alphaEvent", context,
277 *expected_args); 274 *expected_args);
278 275
279 std::unique_ptr<base::Value> result = GetBaseValuePropertyFromObject( 276 EXPECT_EQ(ReplaceSingleQuotes(kResponseArgsJson),
280 context->Global(), context, "eventArguments"); 277 GetStringPropertyFromObject(context->Global(), context,
281 ASSERT_TRUE(result); 278 "eventArguments"));
282 EXPECT_EQ(ReplaceSingleQuotes(kResponseArgsJson), ValueToString(*result));
283 } 279 }
284 280
285 { 281 {
286 // Test a call -> response on the second API. 282 // Test a call -> response on the second API.
287 const char kTestCall[] = "obj.simpleFunc(2)"; 283 const char kTestCall[] = "obj.simpleFunc(2)";
288 CallFunctionOnObject(context, beta_api, kTestCall); 284 CallFunctionOnObject(context, beta_api, kTestCall);
289 ValidateLastRequest("beta.simpleFunc", "[2]"); 285 ValidateLastRequest("beta.simpleFunc", "[2]");
290 EXPECT_EQ(-1, last_request()->request_id); 286 EXPECT_EQ(-1, last_request()->request_id);
291 reset_last_request(); 287 reset_last_request();
292 } 288 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 328
333 { 329 {
334 // Test a simple call -> response. 330 // Test a simple call -> response.
335 const char kTestCall[] = 331 const char kTestCall[] =
336 "obj.functionWithCallback('foo', function() {\n" 332 "obj.functionWithCallback('foo', function() {\n"
337 " this.callbackArguments = Array.from(arguments);\n" 333 " this.callbackArguments = Array.from(arguments);\n"
338 "});"; 334 "});";
339 CallFunctionOnObject(context, alpha_api, kTestCall); 335 CallFunctionOnObject(context, alpha_api, kTestCall);
340 EXPECT_TRUE(did_call); 336 EXPECT_TRUE(did_call);
341 337
342 std::unique_ptr<base::Value> result = GetBaseValuePropertyFromObject( 338 EXPECT_EQ("[\"bar\"]",
343 context->Global(), context, "callbackArguments"); 339 GetStringPropertyFromObject(context->Global(), context,
344 ASSERT_TRUE(result); 340 "callbackArguments"));
345 EXPECT_EQ("[\"bar\"]", ValueToString(*result));
346 } 341 }
347 } 342 }
348 343
349 // An implementation using real API schemas. 344 // An implementation using real API schemas.
350 class APIBindingsSystemTestWithRealAPI : public APIBindingsSystemTestBase { 345 class APIBindingsSystemTestWithRealAPI : public APIBindingsSystemTestBase {
351 protected: 346 protected:
352 APIBindingsSystemTestWithRealAPI() {} 347 APIBindingsSystemTestWithRealAPI() {}
353 348
354 // Executes the given |script_source| in |context|, expecting no exceptions. 349 // Executes the given |script_source| in |context|, expecting no exceptions.
355 void ExecuteScript(v8::Local<v8::Context> context, 350 void ExecuteScript(v8::Local<v8::Context> context,
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 EXPECT_FALSE(last_request()); 473 EXPECT_FALSE(last_request());
479 reset_last_request(); // Just to not pollute future results. 474 reset_last_request(); // Just to not pollute future results.
480 } 475 }
481 476
482 { 477 {
483 const char kTestCall[] = 478 const char kTestCall[] =
484 "chrome.idle.onStateChanged.addListener(state => {\n" 479 "chrome.idle.onStateChanged.addListener(state => {\n"
485 " this.idleState = state;\n" 480 " this.idleState = state;\n"
486 "});\n"; 481 "});\n";
487 ExecuteScript(context, kTestCall); 482 ExecuteScript(context, kTestCall);
488 v8::Local<v8::Value> v8_result = 483 EXPECT_EQ("undefined", GetStringPropertyFromObject(context->Global(),
489 GetPropertyFromObject(context->Global(), context, "idleState"); 484 context, "idleState"));
490 EXPECT_TRUE(v8_result->IsUndefined());
491 bindings_system()->FireEventInContext("idle.onStateChanged", context, 485 bindings_system()->FireEventInContext("idle.onStateChanged", context,
492 *ListValueFromString("['active']")); 486 *ListValueFromString("['active']"));
493 487
494 std::unique_ptr<base::Value> result = 488 EXPECT_EQ("\"active\"", GetStringPropertyFromObject(context->Global(),
495 GetBaseValuePropertyFromObject(context->Global(), context, "idleState"); 489 context, "idleState"));
496 ASSERT_TRUE(result);
497 EXPECT_EQ("\"active\"", ValueToString(*result));
498 } 490 }
499 } 491 }
500 492
501 } // namespace extensions 493 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/renderer/api_binding_test_util.cc ('k') | extensions/renderer/api_event_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698