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

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

Issue 2598123002: [Extensions Bindings] Add support for updateArgumentsPreValidate (Closed)
Patch Set: rebase 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
« no previous file with comments | « extensions/renderer/api_bindings_system.cc ('k') | extensions/renderer/api_signature.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 "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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 ASSERT_FALSE(last_request_); 91 ASSERT_FALSE(last_request_);
92 last_request_ = std::move(request); 92 last_request_ = std::move(request);
93 } 93 }
94 94
95 protected: 95 protected:
96 APIBindingsSystemTestBase() {} 96 APIBindingsSystemTestBase() {}
97 void SetUp() override { 97 void SetUp() override {
98 APIBindingTest::SetUp(); 98 APIBindingTest::SetUp();
99 bindings_system_ = base::MakeUnique<APIBindingsSystem>( 99 bindings_system_ = base::MakeUnique<APIBindingsSystem>(
100 base::Bind(&RunFunctionOnGlobalAndIgnoreResult), 100 base::Bind(&RunFunctionOnGlobalAndIgnoreResult),
101 base::Bind(&RunFunctionOnGlobalAndReturnHandle),
101 base::Bind(&APIBindingsSystemTestBase::GetAPISchema, 102 base::Bind(&APIBindingsSystemTestBase::GetAPISchema,
102 base::Unretained(this)), 103 base::Unretained(this)),
103 base::Bind(&APIBindingsSystemTestBase::OnAPIRequest, 104 base::Bind(&APIBindingsSystemTestBase::OnAPIRequest,
104 base::Unretained(this))); 105 base::Unretained(this)));
105 } 106 }
106 107
107 void TearDown() override { 108 void TearDown() override {
108 bindings_system_.reset(); 109 bindings_system_.reset();
109 APIBindingTest::TearDown(); 110 APIBindingTest::TearDown();
110 } 111 }
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 reset_last_request(); 288 reset_last_request();
288 } 289 }
289 } 290 }
290 291
291 // Tests adding a custom hook to an API. 292 // Tests adding a custom hook to an API.
292 TEST_F(APIBindingsSystemTest, TestCustomHooks) { 293 TEST_F(APIBindingsSystemTest, TestCustomHooks) {
293 v8::HandleScope handle_scope(isolate()); 294 v8::HandleScope handle_scope(isolate());
294 v8::Local<v8::Context> context = ContextLocal(); 295 v8::Local<v8::Context> context = ContextLocal();
295 296
296 bool did_call = false; 297 bool did_call = false;
297 auto hook = [](bool* did_call, const APISignature* signature, 298 auto hook = [](bool* did_call,
298 gin::Arguments* arguments, 299 const APISignature* signature, v8::Local<v8::Context> context,
300 std::vector<v8::Local<v8::Value>>* arguments,
299 const ArgumentSpec::RefMap& type_refs) { 301 const ArgumentSpec::RefMap& type_refs) {
300 *did_call = true; 302 *did_call = true;
303 if (arguments->size() != 2) { // ASSERT* messes with the return type.
304 EXPECT_EQ(2u, arguments->size());
305 return APIBindingHooks::RequestResult::HANDLED;
306 }
301 std::string argument; 307 std::string argument;
302 EXPECT_EQ(2, arguments->Length()); 308 EXPECT_EQ("foo", gin::V8ToString(arguments->at(0)));
303 EXPECT_TRUE(arguments->GetNext(&argument)); 309 if (!arguments->at(1)->IsFunction()) {
304 EXPECT_EQ("foo", argument); 310 EXPECT_TRUE(arguments->at(1)->IsFunction());
305 v8::Local<v8::Function> function;
306 EXPECT_TRUE(arguments->GetNext(&function));
307 // The above EXPECT_TRUE should really be an ASSERT, but that messes with
308 // the return type.
309 if (function.IsEmpty())
310 return APIBindingHooks::RequestResult::HANDLED; 311 return APIBindingHooks::RequestResult::HANDLED;
312 }
311 v8::Local<v8::String> response = 313 v8::Local<v8::String> response =
312 gin::StringToV8(arguments->isolate(), "bar"); 314 gin::StringToV8(context->GetIsolate(), "bar");
313 v8::Local<v8::Value> response_args[] = {response}; 315 v8::Local<v8::Value> response_args[] = {response};
314 RunFunctionOnGlobal(function, arguments->isolate()->GetCurrentContext(), 316 RunFunctionOnGlobal(arguments->at(1).As<v8::Function>(),
315 1, response_args); 317 context, 1, response_args);
316 return APIBindingHooks::RequestResult::HANDLED; 318 return APIBindingHooks::RequestResult::HANDLED;
317 }; 319 };
318 320
319 APIBindingHooks* hooks = bindings_system()->GetHooksForAPI(kAlphaAPIName); 321 APIBindingHooks* hooks = bindings_system()->GetHooksForAPI(kAlphaAPIName);
320 ASSERT_TRUE(hooks); 322 ASSERT_TRUE(hooks);
321 hooks->RegisterHandleRequest( 323 hooks->RegisterHandleRequest(
322 "alpha.functionWithCallback", 324 "alpha.functionWithCallback",
323 base::Bind(hook, &did_call)); 325 base::Bind(hook, &did_call));
324 326
325 v8::Local<v8::Object> alpha_api = bindings_system()->CreateAPIInstance( 327 v8::Local<v8::Object> alpha_api = bindings_system()->CreateAPIInstance(
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 context, "idleState")); 486 context, "idleState"));
485 bindings_system()->FireEventInContext("idle.onStateChanged", context, 487 bindings_system()->FireEventInContext("idle.onStateChanged", context,
486 *ListValueFromString("['active']")); 488 *ListValueFromString("['active']"));
487 489
488 EXPECT_EQ("\"active\"", GetStringPropertyFromObject(context->Global(), 490 EXPECT_EQ("\"active\"", GetStringPropertyFromObject(context->Global(),
489 context, "idleState")); 491 context, "idleState"));
490 } 492 }
491 } 493 }
492 494
493 } // namespace extensions 495 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/renderer/api_bindings_system.cc ('k') | extensions/renderer/api_signature.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698