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

Side by Side Diff: extensions/renderer/api_event_handler_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_event_handler.h" 5 #include "extensions/renderer/api_event_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 FunctionFromString(context, kAddListenerFunction); 258 FunctionFromString(context, kAddListenerFunction);
259 v8::Local<v8::Value> argv[] = {event, listener_function}; 259 v8::Local<v8::Value> argv[] = {event, listener_function};
260 RunFunction(add_listener_function, context, arraysize(argv), argv); 260 RunFunction(add_listener_function, context, arraysize(argv), argv);
261 } 261 }
262 262
263 const char kArguments[] = "['foo',1,{'prop1':'bar'}]"; 263 const char kArguments[] = "['foo',1,{'prop1':'bar'}]";
264 std::unique_ptr<base::ListValue> event_args = ListValueFromString(kArguments); 264 std::unique_ptr<base::ListValue> event_args = ListValueFromString(kArguments);
265 ASSERT_TRUE(event_args); 265 ASSERT_TRUE(event_args);
266 handler.FireEventInContext(kEventName, context, *event_args); 266 handler.FireEventInContext(kEventName, context, *event_args);
267 267
268 std::unique_ptr<base::Value> result = 268 EXPECT_EQ(
269 GetBaseValuePropertyFromObject(context->Global(), context, "eventArgs"); 269 ReplaceSingleQuotes(kArguments),
270 ASSERT_TRUE(result); 270 GetStringPropertyFromObject(context->Global(), context, "eventArgs"));
271 EXPECT_EQ(ReplaceSingleQuotes(kArguments), ValueToString(*result));
272 } 271 }
273 272
274 // Test dispatching events to multiple contexts. 273 // Test dispatching events to multiple contexts.
275 TEST_F(APIEventHandlerTest, MultipleContexts) { 274 TEST_F(APIEventHandlerTest, MultipleContexts) {
276 v8::HandleScope handle_scope(isolate()); 275 v8::HandleScope handle_scope(isolate());
277 276
278 v8::Local<v8::Context> context_a = ContextLocal(); 277 v8::Local<v8::Context> context_a = ContextLocal();
279 v8::Local<v8::Context> context_b = v8::Context::New(isolate()); 278 v8::Local<v8::Context> context_b = v8::Context::New(isolate());
280 gin::ContextHolder holder_b(isolate()); 279 gin::ContextHolder holder_b(isolate());
281 holder_b.SetContext(context_b); 280 holder_b.SetContext(context_b);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 EXPECT_EQ(1u, handler.GetNumEventListenersForTesting(kEventName, context_b)); 320 EXPECT_EQ(1u, handler.GetNumEventListenersForTesting(kEventName, context_b));
322 321
323 // Dispatch the event in context_a - the listener in context_b should not be 322 // Dispatch the event in context_a - the listener in context_b should not be
324 // notified. 323 // notified.
325 std::unique_ptr<base::ListValue> arguments_a = 324 std::unique_ptr<base::ListValue> arguments_a =
326 ListValueFromString("['result_a:']"); 325 ListValueFromString("['result_a:']");
327 ASSERT_TRUE(arguments_a); 326 ASSERT_TRUE(arguments_a);
328 327
329 handler.FireEventInContext(kEventName, context_a, *arguments_a); 328 handler.FireEventInContext(kEventName, context_a, *arguments_a);
330 { 329 {
331 std::unique_ptr<base::Value> result_a = GetBaseValuePropertyFromObject( 330 EXPECT_EQ("\"result_a:alpha\"",
332 context_a->Global(), context_a, "eventArgs"); 331 GetStringPropertyFromObject(context_a->Global(), context_a,
333 ASSERT_TRUE(result_a); 332 "eventArgs"));
334 EXPECT_EQ("\"result_a:alpha\"", ValueToString(*result_a));
335 } 333 }
336 { 334 {
337 v8::Local<v8::Value> result_b = 335 EXPECT_EQ("undefined", GetStringPropertyFromObject(context_b->Global(),
338 GetPropertyFromObject(context_b->Global(), context_b, "eventArgs"); 336 context_b, "eventArgs"));
339 ASSERT_FALSE(result_b.IsEmpty());
340 EXPECT_TRUE(result_b->IsUndefined());
341 } 337 }
342 338
343 // Dispatch the event in context_b - the listener in context_a should not be 339 // Dispatch the event in context_b - the listener in context_a should not be
344 // notified. 340 // notified.
345 std::unique_ptr<base::ListValue> arguments_b = 341 std::unique_ptr<base::ListValue> arguments_b =
346 ListValueFromString("['result_b:']"); 342 ListValueFromString("['result_b:']");
347 ASSERT_TRUE(arguments_b); 343 ASSERT_TRUE(arguments_b);
348 handler.FireEventInContext(kEventName, context_b, *arguments_b); 344 handler.FireEventInContext(kEventName, context_b, *arguments_b);
349 { 345 {
350 std::unique_ptr<base::Value> result_a = GetBaseValuePropertyFromObject( 346 EXPECT_EQ("\"result_a:alpha\"",
351 context_a->Global(), context_a, "eventArgs"); 347 GetStringPropertyFromObject(context_a->Global(), context_a,
352 ASSERT_TRUE(result_a); 348 "eventArgs"));
353 EXPECT_EQ("\"result_a:alpha\"", ValueToString(*result_a));
354 } 349 }
355 { 350 {
356 std::unique_ptr<base::Value> result_b = GetBaseValuePropertyFromObject( 351 EXPECT_EQ("\"result_b:beta\"",
357 context_b->Global(), context_b, "eventArgs"); 352 GetStringPropertyFromObject(context_b->Global(), context_b,
358 ASSERT_TRUE(result_b); 353 "eventArgs"));
359 EXPECT_EQ("\"result_b:beta\"", ValueToString(*result_b));
360 } 354 }
361 } 355 }
362 356
363 TEST_F(APIEventHandlerTest, DifferentCallingMethods) { 357 TEST_F(APIEventHandlerTest, DifferentCallingMethods) {
364 v8::HandleScope handle_scope(isolate()); 358 v8::HandleScope handle_scope(isolate());
365 v8::Local<v8::Context> context = ContextLocal(); 359 v8::Local<v8::Context> context = ContextLocal();
366 360
367 const char kEventName[] = "alpha"; 361 const char kEventName[] = "alpha";
368 APIEventHandler handler(base::Bind(&RunFunctionOnGlobalAndIgnoreResult)); 362 APIEventHandler handler(base::Bind(&RunFunctionOnGlobalAndIgnoreResult));
369 v8::Local<v8::Object> event = 363 v8::Local<v8::Object> event =
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 "})"; 402 "})";
409 { 403 {
410 v8::Local<v8::Value> args[] = {event}; 404 v8::Local<v8::Value> args[] = {event};
411 RunFunction(FunctionFromString(context, kAddListenerOnEventWithCapture), 405 RunFunction(FunctionFromString(context, kAddListenerOnEventWithCapture),
412 context, 1, args); 406 context, 1, args);
413 } 407 }
414 EXPECT_EQ(2u, handler.GetNumEventListenersForTesting(kEventName, context)); 408 EXPECT_EQ(2u, handler.GetNumEventListenersForTesting(kEventName, context));
415 } 409 }
416 410
417 } // namespace extensions 411 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/renderer/api_bindings_system_unittest.cc ('k') | extensions/renderer/api_request_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698