| Index: chrome/browser/extensions/active_script_controller_browsertest.cc
|
| diff --git a/chrome/browser/extensions/active_script_controller_browsertest.cc b/chrome/browser/extensions/active_script_controller_browsertest.cc
|
| index 6234be632b03aae07a700e022288c18b34e73c83..d850b018033715cf4d9e3c3e6c2994408444607a 100644
|
| --- a/chrome/browser/extensions/active_script_controller_browsertest.cc
|
| +++ b/chrome/browser/extensions/active_script_controller_browsertest.cc
|
| @@ -16,6 +16,7 @@
|
| #include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| #include "chrome/test/base/ui_test_utils.h"
|
| #include "extensions/common/feature_switch.h"
|
| +#include "extensions/common/switches.h"
|
| #include "net/test/embedded_test_server/embedded_test_server.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -61,10 +62,9 @@ enum RequiresConsent {
|
|
|
| class ActiveScriptControllerBrowserTest : public ExtensionBrowserTest {
|
| public:
|
| - ActiveScriptControllerBrowserTest()
|
| - : feature_override_(FeatureSwitch::scripts_require_action(),
|
| - FeatureSwitch::OVERRIDE_ENABLED) {}
|
| + ActiveScriptControllerBrowserTest() {}
|
|
|
| + virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE;
|
| virtual void CleanUpOnMainThread() OVERRIDE;
|
|
|
| // Returns an extension with the given |host_type| and |injection_type|. If
|
| @@ -75,11 +75,19 @@ class ActiveScriptControllerBrowserTest : public ExtensionBrowserTest {
|
| InjectionType injection_type);
|
|
|
| private:
|
| - FeatureSwitch::ScopedOverride feature_override_;
|
| ScopedVector<TestExtensionDir> test_extension_dirs_;
|
| std::vector<const Extension*> extensions_;
|
| };
|
|
|
| +void ActiveScriptControllerBrowserTest::SetUpCommandLine(
|
| + base::CommandLine* command_line) {
|
| + ExtensionBrowserTest::SetUpCommandLine(command_line);
|
| + // We append the actual switch to the commandline because it needs to be
|
| + // passed over to the renderer, which a FeatureSwitch::ScopedOverride will
|
| + // not do.
|
| + command_line->AppendSwitch(switches::kEnableScriptsRequireAction);
|
| +}
|
| +
|
| void ActiveScriptControllerBrowserTest::CleanUpOnMainThread() {
|
| test_extension_dirs_.clear();
|
| }
|
| @@ -266,10 +274,7 @@ testing::AssertionResult ActiveScriptTester::Verify() {
|
|
|
| // Otherwise, we don't have permission, and have to grant it. Ensure the
|
| // script has *not* already executed.
|
| - // Currently, it's okay for content scripts to execute, because we don't
|
| - // block them.
|
| - // TODO(rdevlin.cronin): Fix this.
|
| - if (inject_success_listener_->was_satisfied() && type_ != CONTENT_SCRIPT) {
|
| + if (inject_success_listener_->was_satisfied()) {
|
| return testing::AssertionFailure() <<
|
| name_ << "'s script ran without permission.";
|
| }
|
| @@ -316,7 +321,7 @@ ExtensionAction* ActiveScriptTester::GetAction() {
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(ActiveScriptControllerBrowserTest,
|
| - ActiveScriptsAreDisplayed) {
|
| + ActiveScriptsAreDisplayedAndDelayExecution) {
|
| base::FilePath active_script_path =
|
| test_data_dir_.AppendASCII("active_script");
|
|
|
| @@ -362,7 +367,7 @@ IN_PROC_BROWSER_TEST_F(ActiveScriptControllerBrowserTest,
|
| };
|
|
|
| // Navigate to an URL (which matches the explicit host specified in the
|
| - // extension content_scripts_explicit_hosts). All three extensions should
|
| + // extension content_scripts_explicit_hosts). All four extensions should
|
| // inject the script.
|
| ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| ui_test_utils::NavigateToURL(
|
| @@ -372,4 +377,44 @@ IN_PROC_BROWSER_TEST_F(ActiveScriptControllerBrowserTest,
|
| EXPECT_TRUE(testers[i].Verify()) << kExtensionNames[i];
|
| }
|
|
|
| +// A version of the test with the flag off, in order to test that everything
|
| +// still works as expected.
|
| +class FlagOffActiveScriptControllerBrowserTest
|
| + : public ActiveScriptControllerBrowserTest {
|
| + private:
|
| + // Simply don't append the flag.
|
| + virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE {
|
| + ExtensionBrowserTest::SetUpCommandLine(command_line);
|
| + }
|
| +};
|
| +
|
| +IN_PROC_BROWSER_TEST_F(FlagOffActiveScriptControllerBrowserTest,
|
| + ScriptsExecuteWhenFlagAbsent) {
|
| + const char* kExtensionNames[] = {
|
| + "content_scripts_all_hosts",
|
| + "inject_scripts_all_hosts",
|
| + };
|
| + ActiveScriptTester testers[] = {
|
| + ActiveScriptTester(
|
| + kExtensionNames[0],
|
| + GetOrCreateExtension(ALL_HOSTS, CONTENT_SCRIPT),
|
| + browser(),
|
| + DOES_NOT_REQUIRE_CONSENT,
|
| + CONTENT_SCRIPT),
|
| + ActiveScriptTester(
|
| + kExtensionNames[1],
|
| + GetOrCreateExtension(ALL_HOSTS, EXECUTE_SCRIPT),
|
| + browser(),
|
| + DOES_NOT_REQUIRE_CONSENT,
|
| + EXECUTE_SCRIPT),
|
| + };
|
| +
|
| + ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| + ui_test_utils::NavigateToURL(
|
| + browser(), embedded_test_server()->GetURL("/extensions/test_file.html"));
|
| +
|
| + for (size_t i = 0u; i < arraysize(testers); ++i)
|
| + EXPECT_TRUE(testers[i].Verify()) << kExtensionNames[i];
|
| +}
|
| +
|
| } // namespace extensions
|
|
|