| Index: chrome/browser/extensions/api/permissions/permissions_apitest.cc
|
| diff --git a/chrome/browser/extensions/api/permissions/permissions_apitest.cc b/chrome/browser/extensions/api/permissions/permissions_apitest.cc
|
| index 798b2b56eba01d8fbd4f76670ad46ea209e13c82..7b6a35b4cc5ee1766c7e39de9428ccc8247717d2 100644
|
| --- a/chrome/browser/extensions/api/permissions/permissions_apitest.cc
|
| +++ b/chrome/browser/extensions/api/permissions/permissions_apitest.cc
|
| @@ -4,8 +4,11 @@
|
|
|
| #include "chrome/browser/extensions/api/permissions/permissions_api.h"
|
| #include "chrome/browser/extensions/extension_apitest.h"
|
| +#include "chrome/browser/extensions/extension_management_test_util.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/browser.h"
|
| +#include "components/policy/core/browser/browser_policy_connector.h"
|
| +#include "components/policy/core/common/mock_configuration_policy_provider.h"
|
| #include "extensions/browser/extension_prefs.h"
|
| #include "extensions/common/permissions/permission_set.h"
|
| #include "extensions/common/switches.h"
|
| @@ -23,13 +26,28 @@ static void AddPattern(URLPatternSet* extent, const std::string& pattern) {
|
| } // namespace
|
|
|
| class ExperimentalApiTest : public ExtensionApiTest {
|
| -public:
|
| - void SetUpCommandLine(CommandLine* command_line) override {
|
| + public:
|
| + void SetUpCommandLine(CommandLine* command_line) override {
|
| ExtensionApiTest::SetUpCommandLine(command_line);
|
| command_line->AppendSwitch(switches::kEnableExperimentalExtensionApis);
|
| }
|
| };
|
|
|
| +class ExtensionApiTestWithManagementPolicy : public ExtensionApiTest {
|
| + public:
|
| + void SetUpInProcessBrowserTestFixture() override {
|
| + ExtensionApiTest::SetUpInProcessBrowserTestFixture();
|
| + EXPECT_CALL(policy_provider_, IsInitializationComplete(testing::_))
|
| + .WillRepeatedly(testing::Return(true));
|
| + policy_provider_.SetAutoRefresh();
|
| + policy::BrowserPolicyConnector::SetPolicyProviderForTesting(
|
| + &policy_provider_);
|
| + }
|
| +
|
| + protected:
|
| + policy::MockConfigurationPolicyProvider policy_provider_;
|
| +};
|
| +
|
| IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PermissionsFail) {
|
| ASSERT_TRUE(RunExtensionTest("permissions/disabled")) << message_;
|
|
|
| @@ -128,6 +146,22 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, OptionalPermissionsRetainGesture) {
|
| << message_;
|
| }
|
|
|
| +// Test that optional permissions blocked by enterprise policy will be denied
|
| +// automatically.
|
| +IN_PROC_BROWSER_TEST_F(ExtensionApiTestWithManagementPolicy,
|
| + OptionalPermissionsPolicyBlocked) {
|
| + // Set enterprise policy to block some API permissions.
|
| + {
|
| + ExtensionManagementPolicyUpdater pref(&policy_provider_);
|
| + pref.AddBlockedPermission("*", "management");
|
| + }
|
| + // Set auto confirm UI flag.
|
| + PermissionsRequestFunction::SetAutoConfirmForTests(true);
|
| + PermissionsRequestFunction::SetIgnoreUserGestureForTests(true);
|
| + EXPECT_TRUE(RunExtensionTest("permissions/optional_policy_blocked"))
|
| + << message_;
|
| +}
|
| +
|
| // Tests that an extension can't gain access to file: URLs without the checkbox
|
| // entry in prefs. There shouldn't be a warning either.
|
| IN_PROC_BROWSER_TEST_F(ExtensionApiTest, OptionalPermissionsFileAccess) {
|
|
|