Index: chrome/browser/extensions/extension_startup_browsertest.cc |
diff --git a/chrome/browser/extensions/extension_startup_browsertest.cc b/chrome/browser/extensions/extension_startup_browsertest.cc |
index 462f2ba9d06049f078fcec1192e2ce90b9632be5..e9f85bc4466a7feac4eea5324fd3fbed5e15ef5a 100644 |
--- a/chrome/browser/extensions/extension_startup_browsertest.cc |
+++ b/chrome/browser/extensions/extension_startup_browsertest.cc |
@@ -16,6 +16,7 @@ |
#include "base/strings/stringprintf.h" |
#include "build/build_config.h" |
#include "chrome/browser/chrome_notification_types.h" |
+#include "chrome/browser/extensions/extension_browsertest.h" |
#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/extensions/extension_util.h" |
#include "chrome/browser/extensions/shared_user_script_master.h" |
@@ -42,6 +43,7 @@ |
#include "net/base/filename_util.h" |
using extensions::FeatureSwitch; |
+using extensions::ExtensionRegistry; |
// This file contains high-level startup tests for the extensions system. We've |
// had many silly bugs where command line flags did not get propagated correctly |
@@ -311,3 +313,70 @@ IN_PROC_BROWSER_TEST_F(ExtensionsLoadMultipleTest, Test) { |
WaitForServicesToStart(4, true); |
TestInjection(true, true); |
} |
+ |
+class DisableExtensionsExceptBrowserTest : public ExtensionBrowserTest { |
+ public: |
+ DisableExtensionsExceptBrowserTest() {} |
+ |
+ void SetUpCommandLine(base::CommandLine* command_line) override; |
+ |
+ ExtensionRegistry* GetExtensionRegistry() { |
+ return ExtensionRegistry::Get(browser()->profile()); |
+ } |
+}; |
+ |
+void DisableExtensionsExceptBrowserTest::SetUpCommandLine( |
+ base::CommandLine* command_line) { |
+ ExtensionBrowserTest::SetUpCommandLine(command_line); |
+#if defined(OS_WIN) |
Devlin
2016/07/27 17:00:59
This kind of platform-specific path logic is handl
catmullings
2016/08/04 22:59:31
Done.
|
+ command_line->AppendSwitchASCII(switches::kDisableExtensionsExcept, |
+ "chrome\\test\\data\\extensions\\app_dot_com_" |
+ "app\\," |
+ "chrome\\test\\data\\extensions\\app\\"); |
+#else |
+ command_line->AppendSwitchASCII(switches::kDisableExtensionsExcept, |
+ "chrome/test/data/extensions/app_dot_com_app/" |
+ ",chrome/test/data/extensions/app/"); |
+#endif |
+} |
+ |
+// Tests disabling all extensions except those listed |
+// (--disable-extensions-except). |
+IN_PROC_BROWSER_TEST_F(DisableExtensionsExceptBrowserTest, |
Devlin
2016/07/27 17:01:00
This test seems to be failing on the bots.
|
+ DisableExtensionsExceptFlag) { |
+ EXPECT_FALSE(extension_service()->extensions_enabled()); |
+ |
+ // Count the number of component extensions. |
+ int component_extensions = 0; |
+ for (const scoped_refptr<const extensions::Extension>& extension : |
+ GetExtensionRegistry()->enabled_extensions()) { |
+ component_extensions += |
+ extensions::Manifest::IsComponentLocation(extension->location()) ? 1 |
+ : 0; |
+ } |
+ |
+ // Number of enabled extensions should be the sum of the number of component |
+ // extensions and the of number extensions installed with |
+ // --disable-extensions-except. |
+ size_t num_expected_extensions = component_extensions + 2; |
+ |
+ EXPECT_EQ(num_expected_extensions, |
+ GetExtensionRegistry()->enabled_extensions().size()); |
+ |
+ // Checks that the extensions loaded with the --disable-extensions-except flag |
+ // are enabled. |
+ bool is_app_dot_com_extension_enabled = false; |
+ bool is_app_test_extension_enabled = false; |
+ for (const scoped_refptr<const extensions::Extension>& extension : |
Devlin
2016/07/27 17:01:00
Given we're looping over all extensions already, i
catmullings
2016/08/04 22:59:30
Done.
|
+ GetExtensionRegistry()->enabled_extensions()) { |
+ if (extension->name() == "App Dot Com: The App") { |
+ is_app_dot_com_extension_enabled = true; |
+ } |
+ |
+ if (extension->name() == "App Test") { |
+ is_app_test_extension_enabled = true; |
+ } |
+ } |
+ EXPECT_TRUE(is_app_dot_com_extension_enabled); |
+ EXPECT_TRUE(is_app_test_extension_enabled); |
+} |