Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(584)

Unified Diff: chrome/browser/permissions/permission_context_base_unittest.cc

Issue 1388343003: Adds a field trial to control Web API kill switches. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Change 'enabled' to 'blocked' Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..3b067f3eca182b287e5718a3ace81b94b6588daf 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* kApiKillSwitchFieldParamBlockedValue =
+ PermissionContextBase::kApiKillSwitchFieldParamBlockedValue;
+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)] =
+ kApiKillSwitchFieldParamBlockedValue;
+ 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);
+}

Powered by Google App Engine
This is Rietveld 408576698