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

Side by Side Diff: chrome/browser/extensions/activity_log/uma_policy.cc

Issue 292313006: Improve activity log ad metrics (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/activity_log/uma_policy.h" 5 #include "chrome/browser/extensions/activity_log/uma_policy.h"
6 6
7 #include "base/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "chrome/browser/browser_process.h" 9 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/extensions/active_script_controller.h" 10 #include "chrome/browser/extensions/active_script_controller.h"
11 #include "chrome/browser/extensions/activity_log/activity_action_constants.h" 11 #include "chrome/browser/extensions/activity_log/activity_action_constants.h"
12 #include "chrome/browser/extensions/activity_log/ad_network_database.h" 12 #include "chrome/browser/extensions/activity_log/ad_network_database.h"
13 #include "chrome/browser/sessions/session_id.h" 13 #include "chrome/browser/sessions/session_id.h"
14 #include "chrome/browser/ui/browser.h" 14 #include "chrome/browser/ui/browser.h"
15 #include "chrome/browser/ui/browser_list.h" 15 #include "chrome/browser/ui/browser_list.h"
16 #include "chrome/browser/ui/tabs/tab_strip_model.h" 16 #include "chrome/browser/ui/tabs/tab_strip_model.h"
17 #include "chrome/common/url_constants.h" 17 #include "chrome/common/url_constants.h"
18 #include "content/public/browser/web_contents.h" 18 #include "content/public/browser/web_contents.h"
19 #include "content/public/common/url_constants.h" 19 #include "content/public/common/url_constants.h"
20 #include "extensions/browser/extension_registry.h"
20 #include "extensions/common/dom_action_types.h" 21 #include "extensions/common/dom_action_types.h"
22 #include "extensions/common/extension.h"
23 #include "extensions/common/manifest.h"
21 24
22 namespace extensions { 25 namespace extensions {
23 26
24 namespace { 27 namespace {
25 28
26 // For convenience. 29 // For convenience.
27 const int kNoStatus = UmaPolicy::NONE; 30 const int kNoStatus = UmaPolicy::NONE;
28 const int kContentScript = 1 << UmaPolicy::CONTENT_SCRIPT; 31 const int kContentScript = 1 << UmaPolicy::CONTENT_SCRIPT;
29 const int kReadDom = 1 << UmaPolicy::READ_DOM; 32 const int kReadDom = 1 << UmaPolicy::READ_DOM;
30 const int kModifiedDom = 1 << UmaPolicy::MODIFIED_DOM; 33 const int kModifiedDom = 1 << UmaPolicy::MODIFIED_DOM;
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 cleaned_url == chrome::kChromeUINewTabURL) 190 cleaned_url == chrome::kChromeUINewTabURL)
188 return; 191 return;
189 192
190 int statuses[MAX_STATUS - 1]; 193 int statuses[MAX_STATUS - 1];
191 std::memset(statuses, 0, sizeof(statuses)); 194 std::memset(statuses, 0, sizeof(statuses));
192 195
193 ActiveScriptController* active_script_controller = 196 ActiveScriptController* active_script_controller =
194 ActiveScriptController::GetForWebContents(web_contents); 197 ActiveScriptController::GetForWebContents(web_contents);
195 SiteMap::iterator site_lookup = url_status_.find(cleaned_url); 198 SiteMap::iterator site_lookup = url_status_.find(cleaned_url);
196 const ExtensionMap& exts = site_lookup->second; 199 const ExtensionMap& exts = site_lookup->second;
197 std::vector<std::string> ad_injectors; 200 std::set<std::string> ad_injectors;
198 for (ExtensionMap::const_iterator ext_iter = exts.begin(); 201 for (ExtensionMap::const_iterator ext_iter = exts.begin();
199 ext_iter != exts.end(); 202 ext_iter != exts.end();
200 ++ext_iter) { 203 ++ext_iter) {
201 if (ext_iter->first == kNumberOfTabs) 204 if (ext_iter->first == kNumberOfTabs)
202 continue; 205 continue;
203 for (int i = NONE + 1; i < MAX_STATUS; ++i) { 206 for (int i = NONE + 1; i < MAX_STATUS; ++i) {
204 if (ext_iter->second & (1 << i)) 207 if (ext_iter->second & (1 << i))
205 statuses[i-1]++; 208 statuses[i-1]++;
206 } 209 }
207 210
208 if ((ext_iter->second & kAnyAdActivity) && active_script_controller) 211 if (ext_iter->second & kAnyAdActivity)
209 ad_injectors.push_back(ext_iter->first); 212 ad_injectors.insert(ext_iter->first);
210 } 213 }
211 if (active_script_controller) 214 if (active_script_controller)
212 active_script_controller->OnAdInjectionDetected(ad_injectors); 215 active_script_controller->OnAdInjectionDetected(ad_injectors);
213 216
217 ExtensionRegistry* registry = ExtensionRegistry::Get(profile_);
218 for (std::set<std::string>::const_iterator iter = ad_injectors.begin();
219 iter != ad_injectors.end();
220 ++iter) {
221 const Extension* extension =
222 registry->GetExtensionById(*iter, ExtensionRegistry::EVERYTHING);
223 if (extension) {
224 UMA_HISTOGRAM_ENUMERATION("Extensions.AdInjection.InstallLocation",
225 extension->location(),
226 Manifest::NUM_LOCATIONS);
227 }
228 }
229
214 std::string prefix = "ExtensionActivity."; 230 std::string prefix = "ExtensionActivity.";
215 if (GURL(cleaned_url).host() != "www.google.com") { 231 if (GURL(cleaned_url).host() != "www.google.com") {
216 UMA_HISTOGRAM_COUNTS_100(prefix + GetHistogramName(CONTENT_SCRIPT), 232 UMA_HISTOGRAM_COUNTS_100(prefix + GetHistogramName(CONTENT_SCRIPT),
217 statuses[CONTENT_SCRIPT - 1]); 233 statuses[CONTENT_SCRIPT - 1]);
218 UMA_HISTOGRAM_COUNTS_100(prefix + GetHistogramName(READ_DOM), 234 UMA_HISTOGRAM_COUNTS_100(prefix + GetHistogramName(READ_DOM),
219 statuses[READ_DOM - 1]); 235 statuses[READ_DOM - 1]);
220 UMA_HISTOGRAM_COUNTS_100(prefix + GetHistogramName(MODIFIED_DOM), 236 UMA_HISTOGRAM_COUNTS_100(prefix + GetHistogramName(MODIFIED_DOM),
221 statuses[MODIFIED_DOM - 1]); 237 statuses[MODIFIED_DOM - 1]);
222 UMA_HISTOGRAM_COUNTS_100(prefix + GetHistogramName(DOM_METHOD), 238 UMA_HISTOGRAM_COUNTS_100(prefix + GetHistogramName(DOM_METHOD),
223 statuses[DOM_METHOD - 1]); 239 statuses[DOM_METHOD - 1]);
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 return "AdLikelyReplaced"; 454 return "AdLikelyReplaced";
439 case NONE: 455 case NONE:
440 case MAX_STATUS: 456 case MAX_STATUS:
441 default: 457 default:
442 NOTREACHED(); 458 NOTREACHED();
443 return ""; 459 return "";
444 } 460 }
445 } 461 }
446 462
447 } // namespace extensions 463 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698