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

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

Issue 2762623003: [Extensions Bindings] Add lastError utilities to APIBindingJSUtil (Closed)
Patch Set: . Created 3 years, 9 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 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 const std::string& expected_arguments) { 165 const std::string& expected_arguments) {
166 ASSERT_TRUE(last_request()); 166 ASSERT_TRUE(last_request());
167 // Note that even if no arguments are provided by the API call, we should 167 // Note that even if no arguments are provided by the API call, we should
168 // have an empty list. 168 // have an empty list.
169 ASSERT_TRUE(last_request()->arguments); 169 ASSERT_TRUE(last_request()->arguments);
170 EXPECT_EQ(expected_name, last_request()->method_name); 170 EXPECT_EQ(expected_name, last_request()->method_name);
171 EXPECT_EQ(ReplaceSingleQuotes(expected_arguments), 171 EXPECT_EQ(ReplaceSingleQuotes(expected_arguments),
172 ValueToString(*last_request()->arguments)); 172 ValueToString(*last_request()->arguments));
173 } 173 }
174 174
175 void APIBindingsSystemTest::CallFunctionOnObject( 175 v8::Local<v8::Value> APIBindingsSystemTest::CallFunctionOnObject(
176 v8::Local<v8::Context> context, 176 v8::Local<v8::Context> context,
177 v8::Local<v8::Object> object, 177 v8::Local<v8::Object> object,
178 const std::string& script_source) { 178 const std::string& script_source) {
179 std::string wrapped_script_source = 179 std::string wrapped_script_source =
180 base::StringPrintf("(function(obj) { %s })", script_source.c_str()); 180 base::StringPrintf("(function(obj) { %s })", script_source.c_str());
181 181
182 v8::Local<v8::Function> func = 182 v8::Local<v8::Function> func =
183 FunctionFromString(context, wrapped_script_source); 183 FunctionFromString(context, wrapped_script_source);
184 ASSERT_FALSE(func.IsEmpty()); 184 // Use ADD_FAILURE() to avoid messing up the return type with ASSERT.
185 if (func.IsEmpty()) {
186 ADD_FAILURE() << script_source;
187 return v8::Local<v8::Value>();
188 }
185 189
186 v8::Local<v8::Value> argv[] = {object}; 190 v8::Local<v8::Value> argv[] = {object};
187 RunFunction(func, context, 1, argv); 191 return RunFunction(func, context, 1, argv);
188 } 192 }
189 193
190 // Tests API object initialization, calling a method on the supplied APIs, and 194 // Tests API object initialization, calling a method on the supplied APIs, and
191 // triggering the callback for the request. 195 // triggering the callback for the request.
192 TEST_F(APIBindingsSystemTest, TestInitializationAndCallbacks) { 196 TEST_F(APIBindingsSystemTest, TestInitializationAndCallbacks) {
193 v8::HandleScope handle_scope(isolate()); 197 v8::HandleScope handle_scope(isolate());
194 v8::Local<v8::Context> context = MainContext(); 198 v8::Local<v8::Context> context = MainContext();
195 199
196 v8::Local<v8::Object> alpha_api = bindings_system()->CreateAPIInstance( 200 v8::Local<v8::Object> alpha_api = bindings_system()->CreateAPIInstance(
197 kAlphaAPIName, context, isolate(), base::Bind(&AllowAllAPIs), nullptr); 201 kAlphaAPIName, context, isolate(), base::Bind(&AllowAllAPIs), nullptr);
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 { 414 {
411 // Test a simple call -> response. 415 // Test a simple call -> response.
412 const char kTestCall[] = "obj.functionWithExternalRef({prop1: 'foo'});"; 416 const char kTestCall[] = "obj.functionWithExternalRef({prop1: 'foo'});";
413 CallFunctionOnObject(context, gamma_api, kTestCall); 417 CallFunctionOnObject(context, gamma_api, kTestCall);
414 ValidateLastRequest("gamma.functionWithExternalRef", "[{'prop1':'foo'}]"); 418 ValidateLastRequest("gamma.functionWithExternalRef", "[{'prop1':'foo'}]");
415 reset_last_request(); 419 reset_last_request();
416 } 420 }
417 } 421 }
418 422
419 } // namespace extensions 423 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698