| 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 3e672099546186d4a3ad21d8c9283c85d7a81367..c54ec5f63a235bb02a68471a0183c43d37f8139f 100644
|
| --- a/chrome/browser/permissions/permission_context_base_unittest.cc
|
| +++ b/chrome/browser/permissions/permission_context_base_unittest.cc
|
| @@ -6,8 +6,11 @@
|
|
|
| #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/ui/website_settings/permission_bubble_manager.h"
|
| @@ -17,12 +20,19 @@
|
| #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"
|
| #include "content/public/test/web_contents_tester.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +static const char* kApiKillSwitchFieldStudy =
|
| + PermissionContextBase::kApiKillSwitchFieldStudy;
|
| +static const char* kApiKillSwitchFieldParamEnabledValue =
|
| + PermissionContextBase::kApiKillSwitchFieldParamEnabledValue;
|
| +static const char kApiKillSwitchTestGroup[] = "TestGroup";
|
| +
|
| class TestPermissionContext : public PermissionContextBase {
|
| public:
|
| TestPermissionContext(Profile* profile,
|
| @@ -30,7 +40,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 {}
|
|
|
| @@ -55,6 +67,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,
|
| @@ -70,6 +91,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 {
|
| @@ -227,6 +249,22 @@ class PermissionContextBaseTests : public ChromeRenderViewHostTestHarness {
|
| EXPECT_EQ(default_setting, setting_after_reset);
|
| }
|
|
|
| + void TestGlobalApiKillSwitch(ContentSettingsType type) {
|
| + TestPermissionContext permission_context(
|
| + profile(), type);
|
| + permission_context.ResetFieldTrialList();
|
| +
|
| + EXPECT_FALSE(permission_context.IsApiKillSwitchOn());
|
| + std::map<std::string, std::string> params;
|
| + params[PermissionContextUmaUtil::GetPermissionString(type)] =
|
| + kApiKillSwitchFieldParamEnabledValue;
|
| + variations::AssociateVariationParams(
|
| + kApiKillSwitchFieldStudy, kApiKillSwitchTestGroup, params);
|
| + base::FieldTrialList::CreateFieldTrial(kApiKillSwitchFieldStudy,
|
| + kApiKillSwitchTestGroup);
|
| + EXPECT_TRUE(permission_context.IsApiKillSwitchOn());
|
| + }
|
| +
|
| private:
|
| // ChromeRenderViewHostTestHarness:
|
| void SetUp() override {
|
| @@ -297,3 +335,17 @@ TEST_F(PermissionContextBaseTests, TestGrantAndRevokeWithBubbles) {
|
| CONTENT_SETTING_ASK);
|
| }
|
| #endif
|
| +
|
| +// Tests the global kill switch by enabling/disabling the Field Trials.
|
| +TEST_F(PermissionContextBaseTests, TestGlobalKillSwitch) {
|
| + TestGlobalApiKillSwitch(CONTENT_SETTINGS_TYPE_GEOLOCATION);
|
| + TestGlobalApiKillSwitch(CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
|
| + TestGlobalApiKillSwitch(CONTENT_SETTINGS_TYPE_MIDI_SYSEX);
|
| + TestGlobalApiKillSwitch(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING);
|
| + TestGlobalApiKillSwitch(CONTENT_SETTINGS_TYPE_DURABLE_STORAGE);
|
| +#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
|
| + TestGlobalApiKillSwitch(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER);
|
| +#endif
|
| + TestGlobalApiKillSwitch(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC);
|
| + TestGlobalApiKillSwitch(CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA);
|
| +}
|
|
|