Index: extensions/renderer/api_bindings_system_unittest.cc |
diff --git a/extensions/renderer/api_bindings_system_unittest.cc b/extensions/renderer/api_bindings_system_unittest.cc |
index 40c86f797408a42570ab163b31cf261c6d8de0ad..d301a48d5fa5e6758d6b295f2953925745edab17 100644 |
--- a/extensions/renderer/api_bindings_system_unittest.cc |
+++ b/extensions/renderer/api_bindings_system_unittest.cc |
@@ -53,6 +53,9 @@ const char kAlphaAPISpec[] = |
" 'name': 'callback'," |
" 'type': 'function'" |
" }]" |
+ " }]," |
+ " 'events': [{" |
+ " 'name': 'alphaEvent'" |
" }]" |
"}"; |
@@ -266,6 +269,26 @@ TEST_F(APIBindingsSystemTest, TestInitializationAndCallbacks) { |
} |
{ |
+ // Test an event registration -> event occurrence. |
+ const char kTestCall[] = |
+ "obj.alphaEvent.addListener(function() {\n" |
+ " this.eventArguments = Array.from(arguments);\n" |
+ "});\n"; |
+ CallFunctionOnObject(context, alpha_api, kTestCall); |
+ |
+ const char kResponseArgsJson[] = "['response',1,{'key':42}]"; |
+ std::unique_ptr<base::ListValue> expected_args = |
+ ListValueFromString(kResponseArgsJson); |
+ bindings_system()->FireEventInContext("alpha.alphaEvent", context, |
+ *expected_args); |
+ |
+ std::unique_ptr<base::Value> result = GetBaseValuePropertyFromObject( |
+ context->Global(), context, "eventArguments"); |
+ ASSERT_TRUE(result); |
+ EXPECT_EQ(ReplaceSingleQuotes(kResponseArgsJson), ValueToString(*result)); |
+ } |
+ |
+ { |
// Test a call -> response on the second API. |
const char kTestCall[] = "obj.simpleFunc(2)"; |
CallFunctionOnObject(context, beta_api, kTestCall); |
@@ -412,6 +435,24 @@ TEST_F(APIBindingsSystemTestWithRealAPI, RealAPIs) { |
EXPECT_FALSE(last_request()); |
reset_last_request(); // Just to not pollute future results. |
} |
+ |
+ { |
+ const char kTestCall[] = |
+ "chrome.idle.onStateChanged.addListener(state => {\n" |
+ " this.idleState = state;\n" |
+ "});\n"; |
+ ExecuteScript(context, kTestCall); |
+ v8::Local<v8::Value> v8_result = |
+ GetPropertyFromObject(context->Global(), context, "idleState"); |
+ EXPECT_TRUE(v8_result->IsUndefined()); |
+ bindings_system()->FireEventInContext("idle.onStateChanged", context, |
+ *ListValueFromString("['active']")); |
+ |
+ std::unique_ptr<base::Value> result = |
+ GetBaseValuePropertyFromObject(context->Global(), context, "idleState"); |
+ ASSERT_TRUE(result); |
+ EXPECT_EQ("\"active\"", ValueToString(*result)); |
+ } |
} |
} // namespace extensions |