| Index: chrome/browser/permissions/permission_context_base_unittest.cc
|
| diff --git a/chrome/browser/permissions/permission_context_base_unittest.cc b/chrome/browser/permissions/permission_context_base_unittest.cc
|
| index 031a90cdd1fcf5797c004a8f3b24f670f6ffd5bc..3c3bf99f7978cfc12fa8c6bd3a4dc5f351e49a9c 100644
|
| --- a/chrome/browser/permissions/permission_context_base_unittest.cc
|
| +++ b/chrome/browser/permissions/permission_context_base_unittest.cc
|
| @@ -6,15 +6,22 @@
|
|
|
| #include "base/bind.h"
|
| #include "base/command_line.h"
|
| +#include "base/metrics/field_trial.h"
|
| +#include "base/test/mock_entropy_provider.h"
|
| #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
|
| #include "chrome/browser/infobars/infobar_service.h"
|
| +#include "chrome/browser/permissions/permission_context_uma_util.h"
|
| +#include "chrome/browser/permissions/permission_queue_controller.h"
|
| #include "chrome/browser/permissions/permission_request_id.h"
|
| +#include "chrome/browser/permissions/permission_util.h"
|
| +#include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/test/base/chrome_render_view_host_test_harness.h"
|
| #include "chrome/test/base/testing_profile.h"
|
| #include "components/content_settings/core/browser/host_content_settings_map.h"
|
| #include "components/content_settings/core/common/content_settings.h"
|
| #include "components/content_settings/core/common/content_settings_types.h"
|
| +#include "components/variations/variations_associated_data.h"
|
| #include "content/public/browser/render_frame_host.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "content/public/test/mock_render_process_host.h"
|
| @@ -27,6 +34,12 @@
|
| #include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
|
| #endif
|
|
|
| +const char* kPermissionsKillSwitchFieldStudy =
|
| + PermissionContextBase::kPermissionsKillSwitchFieldStudy;
|
| +const char* kPermissionsKillSwitchBlockedValue =
|
| + PermissionContextBase::kPermissionsKillSwitchBlockedValue;
|
| +const char kPermissionsKillSwitchTestGroup[] = "TestGroup";
|
| +
|
| class TestPermissionContext : public PermissionContextBase {
|
| public:
|
| TestPermissionContext(Profile* profile,
|
| @@ -34,7 +47,9 @@ class TestPermissionContext : public PermissionContextBase {
|
| : PermissionContextBase(profile, permission_type),
|
| permission_set_(false),
|
| permission_granted_(false),
|
| - tab_context_updated_(false) {}
|
| + tab_context_updated_(false),
|
| + field_trial_list_(new base::FieldTrialList(new base::MockEntropyProvider))
|
| + {}
|
|
|
| ~TestPermissionContext() override {}
|
|
|
| @@ -61,6 +76,15 @@ class TestPermissionContext : public PermissionContextBase {
|
| permission_granted_ = content_setting == CONTENT_SETTING_ALLOW;
|
| }
|
|
|
| + void ResetFieldTrialList() {
|
| + // Destroy the existing FieldTrialList before creating a new one to avoid
|
| + // a DCHECK.
|
| + field_trial_list_.reset();
|
| + field_trial_list_.reset(new base::FieldTrialList(
|
| + new base::MockEntropyProvider));
|
| + variations::testing::ClearAllVariationParams();
|
| + }
|
| +
|
| protected:
|
| void UpdateTabContext(const PermissionRequestID& id,
|
| const GURL& requesting_origin,
|
| @@ -76,6 +100,7 @@ class TestPermissionContext : public PermissionContextBase {
|
| bool permission_set_;
|
| bool permission_granted_;
|
| bool tab_context_updated_;
|
| + scoped_ptr<base::FieldTrialList> field_trial_list_;
|
| };
|
|
|
| class PermissionContextBaseTests : public ChromeRenderViewHostTestHarness {
|
| @@ -232,6 +257,22 @@ class PermissionContextBaseTests : public ChromeRenderViewHostTestHarness {
|
| EXPECT_EQ(default_setting, setting_after_reset);
|
| }
|
|
|
| + void TestGlobalPermissionsKillSwitch(ContentSettingsType type) {
|
| + TestPermissionContext permission_context(profile(), type);
|
| + permission_context.ResetFieldTrialList();
|
| +
|
| + EXPECT_FALSE(permission_context.IsPermissionKillSwitchOn());
|
| + std::map<std::string, std::string> params;
|
| + params[PermissionUtil::GetPermissionString(type)] =
|
| + kPermissionsKillSwitchBlockedValue;
|
| + variations::AssociateVariationParams(
|
| + kPermissionsKillSwitchFieldStudy, kPermissionsKillSwitchTestGroup,
|
| + params);
|
| + base::FieldTrialList::CreateFieldTrial(kPermissionsKillSwitchFieldStudy,
|
| + kPermissionsKillSwitchTestGroup);
|
| + EXPECT_TRUE(permission_context.IsPermissionKillSwitchOn());
|
| + }
|
| +
|
| private:
|
| // ChromeRenderViewHostTestHarness:
|
| void SetUp() override {
|
| @@ -305,3 +346,18 @@ TEST_F(PermissionContextBaseTests, TestGrantAndRevokeWithBubbles) {
|
| CONTENT_SETTING_ASK);
|
| }
|
| #endif
|
| +
|
| +// Tests the global kill switch by enabling/disabling the Field Trials.
|
| +TEST_F(PermissionContextBaseTests, TestGlobalKillSwitch) {
|
| + TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_GEOLOCATION);
|
| + TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
|
| + TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_MIDI_SYSEX);
|
| + TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING);
|
| + TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_DURABLE_STORAGE);
|
| +#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
|
| + TestGlobalPermissionsKillSwitch(
|
| + CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER);
|
| +#endif
|
| + TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC);
|
| + TestGlobalPermissionsKillSwitch(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA);
|
| +}
|
|
|