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

Unified Diff: chrome/browser/content_settings/tab_specific_content_settings.cc

Issue 2048303002: Fix broken mixed script Rappor metric and add browser test (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: make BlockAllContentForTesting() uphold the details-is-a-valid-GURL contract Created 4 years, 6 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/content_settings/tab_specific_content_settings.cc
diff --git a/chrome/browser/content_settings/tab_specific_content_settings.cc b/chrome/browser/content_settings/tab_specific_content_settings.cc
index 0a1be6e2a15798f1ac971d429296116a33549546..4b85f2bf27164f351dcd9b9efca27cb0ab5a54cc 100644
--- a/chrome/browser/content_settings/tab_specific_content_settings.cc
+++ b/chrome/browser/content_settings/tab_specific_content_settings.cc
@@ -11,6 +11,7 @@
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "build/build_config.h"
+#include "chrome/browser/browser_process.h"
#include "chrome/browser/browsing_data/browsing_data_appcache_helper.h"
#include "chrome/browser/browsing_data/browsing_data_cookie_helper.h"
#include "chrome/browser/browsing_data/browsing_data_database_helper.h"
@@ -34,6 +35,7 @@
#include "components/content_settings/core/browser/content_settings_utils.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "components/prefs/pref_service.h"
+#include "components/rappor/rappor_service.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/navigation_details.h"
@@ -103,7 +105,8 @@ TabSpecificContentSettings::TabSpecificContentSettings(WebContents* tab)
pending_protocol_handler_setting_(CONTENT_SETTING_DEFAULT),
load_plugins_link_enabled_(true),
microphone_camera_state_(MICROPHONE_CAMERA_NOT_ACCESSED),
- observer_(this) {
+ observer_(this),
+ rappor_service_(g_browser_process->rappor_service()) {
ClearBlockedContentSettingsExceptForCookies();
ClearCookieSpecificContentSettings();
@@ -343,9 +346,11 @@ void TabSpecificContentSettings::OnContentBlockedWithDetail(
if (type == CONTENT_SETTINGS_TYPE_MIXEDSCRIPT) {
content_settings::RecordMixedScriptAction(
content_settings::MIXED_SCRIPT_ACTION_DISPLAYED_SHIELD);
+ GURL url(details);
+ DCHECK(url.is_valid());
content_settings::RecordMixedScriptActionWithRAPPOR(
- content_settings::MIXED_SCRIPT_ACTION_DISPLAYED_SHIELD,
- GURL(base::UTF16ToUTF8(details)));
+ rappor_service_,
+ content_settings::MIXED_SCRIPT_ACTION_DISPLAYED_SHIELD, url);
}
}
}
@@ -838,9 +843,14 @@ void TabSpecificContentSettings::BlockAllContentForTesting() {
content_settings::ContentSettingsRegistry::GetInstance();
for (const content_settings::ContentSettingsInfo* info : *registry) {
ContentSettingsType type = info->website_settings_info()->type();
- if (type != CONTENT_SETTINGS_TYPE_GEOLOCATION &&
- type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC &&
- type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) {
+ if (type == CONTENT_SETTINGS_TYPE_MIXEDSCRIPT) {
+ // For mixed script, OnContentBlockedWithDetail() expects a valid
+ // URL in the |details| argument.
+ OnContentBlockedWithDetail(CONTENT_SETTINGS_TYPE_MIXEDSCRIPT,
estark 2016/06/12 17:12:16 note: an alternative could be to make OnContentBlo
+ base::ASCIIToUTF16("http://example.test"));
+ } else if (type != CONTENT_SETTINGS_TYPE_GEOLOCATION &&
+ type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC &&
+ type != CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) {
OnContentBlocked(type);
}
}
@@ -859,3 +869,8 @@ void TabSpecificContentSettings::BlockAllContentForTesting() {
media_blocked,
std::string(), std::string(), std::string(), std::string());
}
+
+void TabSpecificContentSettings::SetRapporServiceForTesting(
+ rappor::RapporService* rappor_service) {
+ rappor_service_ = rappor_service;
+}

Powered by Google App Engine
This is Rietveld 408576698