Index: chrome/browser/extensions/content_script_apitest.cc |
diff --git a/chrome/browser/extensions/content_script_apitest.cc b/chrome/browser/extensions/content_script_apitest.cc |
index 3f09251f8743173d6586fb97fb0a1da1051f3210..d1f816cd94abc0a99290e9fa8c858b0a406b8a41 100644 |
--- a/chrome/browser/extensions/content_script_apitest.cc |
+++ b/chrome/browser/extensions/content_script_apitest.cc |
@@ -615,4 +615,22 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, |
EXPECT_TRUE(listener.was_satisfied()); |
} |
+IN_PROC_BROWSER_TEST_F(ExtensionApiTest, |
+ DontInjectContentScriptsInBackgroundPages) { |
+ host_resolver()->AddRule("a.com", "127.0.0.1"); |
+ ASSERT_TRUE(StartEmbeddedTestServer()); |
+ // Load two extensions, one with an iframe to a.com in its background page, |
+ // the other, a content script for a.com. The latter should never be able to |
+ // inject the script, because scripts aren't allowed to run on foreign |
+ // extensions' pages. |
+ base::FilePath data_dir = test_data_dir_.AppendASCII("content_scripts"); |
+ ExtensionTestMessageListener iframe_loaded_listener("iframe loaded", false); |
+ ExtensionTestMessageListener content_script_listener("script injected", |
+ false); |
+ LoadExtension(data_dir.AppendASCII("script_a_com")); |
+ LoadExtension(data_dir.AppendASCII("background_page_iframe")); |
+ iframe_loaded_listener.WaitUntilSatisfied(); |
+ EXPECT_FALSE(content_script_listener.was_satisfied()); |
+} |
+ |
} // namespace extensions |