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

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

Issue 2575173002: [Extensions Bindings] Add a bridge to use current custom bindings (Closed)
Patch Set: . Created 3 years, 12 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
« no previous file with comments | « extensions/renderer/api_binding_test.cc ('k') | extensions/renderer/api_bindings_system.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 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/memory/ptr_util.h" 6 #include "base/memory/ptr_util.h"
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "extensions/renderer/api_binding.h" 10 #include "extensions/renderer/api_binding.h"
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 arguments_.reset(); 189 arguments_.reset();
190 } 190 }
191 191
192 TEST_F(APIBindingUnittest, Test) { 192 TEST_F(APIBindingUnittest, Test) {
193 std::unique_ptr<base::ListValue> functions = ListValueFromString(kFunctions); 193 std::unique_ptr<base::ListValue> functions = ListValueFromString(kFunctions);
194 ASSERT_TRUE(functions); 194 ASSERT_TRUE(functions);
195 ArgumentSpec::RefMap refs; 195 ArgumentSpec::RefMap refs;
196 APIBinding binding( 196 APIBinding binding(
197 "test", *functions, nullptr, nullptr, 197 "test", *functions, nullptr, nullptr,
198 base::Bind(&APIBindingUnittest::OnFunctionCall, base::Unretained(this)), 198 base::Bind(&APIBindingUnittest::OnFunctionCall, base::Unretained(this)),
199 nullptr, &refs); 199 base::MakeUnique<APIBindingHooks>(binding::RunJSFunction()), &refs);
200 EXPECT_TRUE(refs.empty()); 200 EXPECT_TRUE(refs.empty());
201 201
202 v8::HandleScope handle_scope(isolate()); 202 v8::HandleScope handle_scope(isolate());
203 v8::Local<v8::Context> context = ContextLocal(); 203 v8::Local<v8::Context> context = ContextLocal();
204 204
205 APIEventHandler event_handler( 205 APIEventHandler event_handler(
206 base::Bind(&RunFunctionOnGlobalAndIgnoreResult)); 206 base::Bind(&RunFunctionOnGlobalAndIgnoreResult));
207 v8::Local<v8::Object> binding_object = binding.CreateInstance( 207 v8::Local<v8::Object> binding_object = binding.CreateInstance(
208 context, isolate(), &event_handler, base::Bind(&AllowAllAPIs)); 208 context, isolate(), &event_handler, base::Bind(&AllowAllAPIs));
209 209
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 290
291 std::unique_ptr<base::ListValue> functions = 291 std::unique_ptr<base::ListValue> functions =
292 ListValueFromString(kRefFunctions); 292 ListValueFromString(kRefFunctions);
293 ASSERT_TRUE(functions); 293 ASSERT_TRUE(functions);
294 std::unique_ptr<base::ListValue> types = ListValueFromString(kTypes); 294 std::unique_ptr<base::ListValue> types = ListValueFromString(kTypes);
295 ASSERT_TRUE(types); 295 ASSERT_TRUE(types);
296 ArgumentSpec::RefMap refs; 296 ArgumentSpec::RefMap refs;
297 APIBinding binding( 297 APIBinding binding(
298 "test", *functions, types.get(), nullptr, 298 "test", *functions, types.get(), nullptr,
299 base::Bind(&APIBindingUnittest::OnFunctionCall, base::Unretained(this)), 299 base::Bind(&APIBindingUnittest::OnFunctionCall, base::Unretained(this)),
300 nullptr, &refs); 300 base::MakeUnique<APIBindingHooks>(binding::RunJSFunction()), &refs);
301 EXPECT_EQ(2u, refs.size()); 301 EXPECT_EQ(2u, refs.size());
302 EXPECT_TRUE(base::ContainsKey(refs, "refObj")); 302 EXPECT_TRUE(base::ContainsKey(refs, "refObj"));
303 EXPECT_TRUE(base::ContainsKey(refs, "refEnum")); 303 EXPECT_TRUE(base::ContainsKey(refs, "refEnum"));
304 304
305 v8::HandleScope handle_scope(isolate()); 305 v8::HandleScope handle_scope(isolate());
306 v8::Local<v8::Context> context = ContextLocal(); 306 v8::Local<v8::Context> context = ContextLocal();
307 307
308 APIEventHandler event_handler( 308 APIEventHandler event_handler(
309 base::Bind(&RunFunctionOnGlobalAndIgnoreResult)); 309 base::Bind(&RunFunctionOnGlobalAndIgnoreResult));
310 v8::Local<v8::Object> binding_object = binding.CreateInstance( 310 v8::Local<v8::Object> binding_object = binding.CreateInstance(
(...skipping 25 matching lines...) Expand all
336 " 'name': 'restrictedTwo'," 336 " 'name': 'restrictedTwo',"
337 " 'parameters': []" 337 " 'parameters': []"
338 "}]"; 338 "}]";
339 std::unique_ptr<base::ListValue> functions = 339 std::unique_ptr<base::ListValue> functions =
340 ListValueFromString(kRestrictedFunctions); 340 ListValueFromString(kRestrictedFunctions);
341 ASSERT_TRUE(functions); 341 ASSERT_TRUE(functions);
342 ArgumentSpec::RefMap refs; 342 ArgumentSpec::RefMap refs;
343 APIBinding binding( 343 APIBinding binding(
344 "test", *functions, nullptr, nullptr, 344 "test", *functions, nullptr, nullptr,
345 base::Bind(&APIBindingUnittest::OnFunctionCall, base::Unretained(this)), 345 base::Bind(&APIBindingUnittest::OnFunctionCall, base::Unretained(this)),
346 nullptr, &refs); 346 base::MakeUnique<APIBindingHooks>(binding::RunJSFunction()), &refs);
347 347
348 v8::HandleScope handle_scope(isolate()); 348 v8::HandleScope handle_scope(isolate());
349 v8::Local<v8::Context> context = ContextLocal(); 349 v8::Local<v8::Context> context = ContextLocal();
350 350
351 auto is_available = [](const std::string& name) { 351 auto is_available = [](const std::string& name) {
352 std::set<std::string> functions = {"test.allowedOne", "test.allowedTwo", 352 std::set<std::string> functions = {"test.allowedOne", "test.allowedTwo",
353 "test.restrictedOne", 353 "test.restrictedOne",
354 "test.restrictedTwo"}; 354 "test.restrictedTwo"};
355 EXPECT_TRUE(functions.count(name)); 355 EXPECT_TRUE(functions.count(name));
356 return name == "test.allowedOne" || name == "test.allowedTwo"; 356 return name == "test.allowedOne" || name == "test.allowedTwo";
(...skipping 22 matching lines...) Expand all
379 TEST_F(APIBindingUnittest, TestEventCreation) { 379 TEST_F(APIBindingUnittest, TestEventCreation) {
380 const char kEvents[] = "[{'name': 'onFoo'}, {'name': 'onBar'}]"; 380 const char kEvents[] = "[{'name': 'onFoo'}, {'name': 'onBar'}]";
381 std::unique_ptr<base::ListValue> events = ListValueFromString(kEvents); 381 std::unique_ptr<base::ListValue> events = ListValueFromString(kEvents);
382 ASSERT_TRUE(events); 382 ASSERT_TRUE(events);
383 std::unique_ptr<base::ListValue> functions = ListValueFromString(kFunctions); 383 std::unique_ptr<base::ListValue> functions = ListValueFromString(kFunctions);
384 ASSERT_TRUE(functions); 384 ASSERT_TRUE(functions);
385 ArgumentSpec::RefMap refs; 385 ArgumentSpec::RefMap refs;
386 APIBinding binding( 386 APIBinding binding(
387 "test", *functions, nullptr, events.get(), 387 "test", *functions, nullptr, events.get(),
388 base::Bind(&APIBindingUnittest::OnFunctionCall, base::Unretained(this)), 388 base::Bind(&APIBindingUnittest::OnFunctionCall, base::Unretained(this)),
389 nullptr, &refs); 389 base::MakeUnique<APIBindingHooks>(binding::RunJSFunction()), &refs);
390 390
391 v8::HandleScope handle_scope(isolate()); 391 v8::HandleScope handle_scope(isolate());
392 v8::Local<v8::Context> context = ContextLocal(); 392 v8::Local<v8::Context> context = ContextLocal();
393 393
394 APIEventHandler event_handler( 394 APIEventHandler event_handler(
395 base::Bind(&RunFunctionOnGlobalAndIgnoreResult)); 395 base::Bind(&RunFunctionOnGlobalAndIgnoreResult));
396 v8::Local<v8::Object> binding_object = binding.CreateInstance( 396 v8::Local<v8::Object> binding_object = binding.CreateInstance(
397 context, isolate(), &event_handler, base::Bind(&AllowAllAPIs)); 397 context, isolate(), &event_handler, base::Bind(&AllowAllAPIs));
398 398
399 // Event behavior is tested in the APIEventHandler unittests as well as the 399 // Event behavior is tested in the APIEventHandler unittests as well as the
(...skipping 15 matching lines...) Expand all
415 EXPECT_FALSE(has_on_baz.FromJust()); 415 EXPECT_FALSE(has_on_baz.FromJust());
416 } 416 }
417 417
418 TEST_F(APIBindingUnittest, TestDisposedContext) { 418 TEST_F(APIBindingUnittest, TestDisposedContext) {
419 std::unique_ptr<base::ListValue> functions = ListValueFromString(kFunctions); 419 std::unique_ptr<base::ListValue> functions = ListValueFromString(kFunctions);
420 ASSERT_TRUE(functions); 420 ASSERT_TRUE(functions);
421 ArgumentSpec::RefMap refs; 421 ArgumentSpec::RefMap refs;
422 APIBinding binding( 422 APIBinding binding(
423 "test", *functions, nullptr, nullptr, 423 "test", *functions, nullptr, nullptr,
424 base::Bind(&APIBindingUnittest::OnFunctionCall, base::Unretained(this)), 424 base::Bind(&APIBindingUnittest::OnFunctionCall, base::Unretained(this)),
425 nullptr, &refs); 425 base::MakeUnique<APIBindingHooks>(binding::RunJSFunction()), &refs);
426 EXPECT_TRUE(refs.empty()); 426 EXPECT_TRUE(refs.empty());
427 427
428 v8::HandleScope handle_scope(isolate()); 428 v8::HandleScope handle_scope(isolate());
429 v8::Local<v8::Context> context = ContextLocal(); 429 v8::Local<v8::Context> context = ContextLocal();
430 430
431 APIEventHandler event_handler( 431 APIEventHandler event_handler(
432 base::Bind(&RunFunctionOnGlobalAndIgnoreResult)); 432 base::Bind(&RunFunctionOnGlobalAndIgnoreResult));
433 v8::Local<v8::Object> binding_object = binding.CreateInstance( 433 v8::Local<v8::Object> binding_object = binding.CreateInstance(
434 context, isolate(), &event_handler, base::Bind(&AllowAllAPIs)); 434 context, isolate(), &event_handler, base::Bind(&AllowAllAPIs));
435 435
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 GetBaseValuePropertyFromObject(context->Global(), context, 536 GetBaseValuePropertyFromObject(context->Global(), context,
537 "requestArguments"); 537 "requestArguments");
538 ASSERT_TRUE(response_args); 538 ASSERT_TRUE(response_args);
539 EXPECT_EQ("[\"foo\"]", ValueToString(*response_args)); 539 EXPECT_EQ("[\"foo\"]", ValueToString(*response_args));
540 540
541 // Other methods, like stringAndInt(), should behave normally. 541 // Other methods, like stringAndInt(), should behave normally.
542 ExpectPass(binding_object, "obj.stringAndInt('foo', 42);", "['foo',42]"); 542 ExpectPass(binding_object, "obj.stringAndInt('foo', 42);", "['foo',42]");
543 } 543 }
544 544
545 } // namespace extensions 545 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/renderer/api_binding_test.cc ('k') | extensions/renderer/api_bindings_system.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698