summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_messages_apitest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/extension_messages_apitest.cc')
-rw-r--r--chrome/browser/extensions/extension_messages_apitest.cc45
1 files changed, 45 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_messages_apitest.cc b/chrome/browser/extensions/extension_messages_apitest.cc
index 131a743..b47e8ea 100644
--- a/chrome/browser/extensions/extension_messages_apitest.cc
+++ b/chrome/browser/extensions/extension_messages_apitest.cc
@@ -850,5 +850,50 @@ IN_PROC_BROWSER_TEST_F(ExternallyConnectableMessagingWithTlsChannelIdTest,
EXPECT_EQ(expected_tls_channel_id_value, tls_channel_id);
}
+IN_PROC_BROWSER_TEST_F(ExtensionApiTest, MessagingUserGesture) {
+ const char kManifest[] = "{"
+ " \"name\": \"user_gesture\","
+ " \"version\": \"1.0\","
+ " \"background\": {"
+ " \"scripts\": [\"background.js\"]"
+ " },"
+ " \"manifest_version\": 2"
+ "}";
+
+ TestExtensionDir receiver_dir;
+ receiver_dir.WriteManifest(kManifest);
+ receiver_dir.WriteFile(FILE_PATH_LITERAL("background.js"),
+ "chrome.runtime.onMessageExternal.addListener(\n"
+ " function(msg, sender, reply) {\n"
+ " reply({result:chrome.test.isProcessingUserGesture()});\n"
+ " });");
+ const Extension* receiver = LoadExtension(receiver_dir.unpacked_path());
+ ASSERT_TRUE(receiver);
+
+ TestExtensionDir sender_dir;
+ sender_dir.WriteManifest(kManifest);
+ sender_dir.WriteFile(FILE_PATH_LITERAL("background.js"), "");
+ const Extension* sender = LoadExtension(sender_dir.unpacked_path());
+ ASSERT_TRUE(sender);
+
+ EXPECT_EQ("false",
+ ExecuteScriptInBackgroundPage(sender->id(),
+ base::StringPrintf(
+ "chrome.test.runWithoutUserGesture(function() {\n"
+ " chrome.runtime.sendMessage('%s', {}, function(response) {\n"
+ " window.domAutomationController.send('' + response.result);\n"
+ " });\n"
+ "});", receiver->id().c_str())));
+
+ EXPECT_EQ("true",
+ ExecuteScriptInBackgroundPage(sender->id(),
+ base::StringPrintf(
+ "chrome.test.runWithUserGesture(function() {\n"
+ " chrome.runtime.sendMessage('%s', {}, function(response) {\n"
+ " window.domAutomationController.send('' + response.result);\n"
+ " });\n"
+ "});", receiver->id().c_str())));
+}
+
} // namespace
}; // namespace extensions