diff options
author | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-16 03:08:11 +0000 |
---|---|---|
committer | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-16 03:08:11 +0000 |
commit | 7b6eba8c18b0046b959cadc06876f61aa6bdf534 (patch) | |
tree | e4ca83de6ab7364c01e6fc97d9d371e0dc6c87fe /chrome/renderer | |
parent | 0bfcf0a486616cb0c675d8a0052b5d7b467fe84b (diff) | |
download | chromium_src-7b6eba8c18b0046b959cadc06876f61aa6bdf534.zip chromium_src-7b6eba8c18b0046b959cadc06876f61aa6bdf534.tar.gz chromium_src-7b6eba8c18b0046b959cadc06876f61aa6bdf534.tar.bz2 |
Collect histograms for page load time when adblock extensions are installed.
BUG=100411
TEST=no
Review URL: http://codereview.chromium.org/8305016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105712 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/chrome_content_renderer_client.cc | 34 | ||||
-rw-r--r-- | chrome/renderer/chrome_content_renderer_client.h | 7 | ||||
-rw-r--r-- | chrome/renderer/page_load_histograms.cc | 133 |
3 files changed, 174 insertions, 0 deletions
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc index 9e17089..e430e7c 100644 --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc @@ -785,4 +785,38 @@ void ChromeContentRendererClient::OnPurgeMemory() { thread->AddObserver(new_spellcheck); } +bool ChromeContentRendererClient::IsAdblockInstalled() { + return extension_dispatcher_->extensions()->Contains( + "gighmmpiobklfepjocnamgkkbiglidom"); +} + +bool ChromeContentRendererClient::IsAdblockPlusInstalled() { + return extension_dispatcher_->extensions()->Contains( + "cfhdojbkjhnklbpkdaibdccddilifddb"); +} + +bool ChromeContentRendererClient::IsAdblockWithWebRequestInstalled() { + const ExtensionSet& extensions = *extension_dispatcher_->extensions(); + for (ExtensionSet::const_iterator it = extensions.begin(); + it != extensions.end(); ++it) { + if (it->second->HasAPIPermission(ExtensionAPIPermission::kExperimental) && + it->second->name().find("Adblock") != std::string::npos && + it->second->name().find("Plus") == std::string::npos) + return true; + } + return false; +} + +bool ChromeContentRendererClient::IsAdblockPlusWithWebRequestInstalled() { + const ExtensionSet& extensions = *extension_dispatcher_->extensions(); + for (ExtensionSet::const_iterator it = extensions.begin(); + it != extensions.end(); ++it) { + if (it->second->HasAPIPermission(ExtensionAPIPermission::kExperimental) && + it->second->name().find("Adblock") != std::string::npos && + it->second->name().find("Plus") != std::string::npos) + return true; + } + return false; +} + } // namespace chrome diff --git a/chrome/renderer/chrome_content_renderer_client.h b/chrome/renderer/chrome_content_renderer_client.h index a5b4d29..dfa88d0 100644 --- a/chrome/renderer/chrome_content_renderer_client.h +++ b/chrome/renderer/chrome_content_renderer_client.h @@ -90,6 +90,13 @@ class ChromeContentRendererClient : public content::ContentRendererClient { const std::string& value) OVERRIDE; virtual bool IsProtocolSupportedForMedia(const GURL& url) OVERRIDE; + // TODO(mpcomplete): remove after we collect histogram data. + // http://crbug.com/100411 + bool IsAdblockInstalled(); + bool IsAdblockPlusInstalled(); + bool IsAdblockWithWebRequestInstalled(); + bool IsAdblockPlusWithWebRequestInstalled(); + // For testing. void SetExtensionDispatcher(ExtensionDispatcher* extension_dispatcher); diff --git a/chrome/renderer/page_load_histograms.cc b/chrome/renderer/page_load_histograms.cc index 13d442e..be99f00 100644 --- a/chrome/renderer/page_load_histograms.cc +++ b/chrome/renderer/page_load_histograms.cc @@ -10,6 +10,7 @@ #include "base/time.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/extensions/url_pattern.h" +#include "chrome/renderer/chrome_content_renderer_client.h" #include "chrome/renderer/prerender/prerender_helper.h" #include "chrome/renderer/renderer_histogram_snapshots.h" #include "content/public/renderer/navigation_state.h" @@ -577,6 +578,138 @@ void PageLoadHistograms::Dump(WebFrame* frame) { } } + // TODO(mpcomplete): remove the extension-related histograms after we collect + // enough data. http://crbug.com/100411 + chrome::ChromeContentRendererClient* client = + static_cast<chrome::ChromeContentRendererClient*>( + content::GetContentClient()->renderer()); + + const bool use_adblock_histogram = client->IsAdblockInstalled(); + if (use_adblock_histogram) { + UMA_HISTOGRAM_ENUMERATION( + "PLT.Abandoned_ExtensionAdblock", + abandoned_page ? 1 : 0, 2); + switch (load_type) { + case NavigationState::NORMAL_LOAD: + PLT_HISTOGRAM( + "PLT.BeginToFinish_NormalLoad_ExtensionAdblock", + begin_to_finish_all_loads); + break; + case NavigationState::LINK_LOAD_NORMAL: + PLT_HISTOGRAM( + "PLT.BeginToFinish_LinkLoadNormal_ExtensionAdblock", + begin_to_finish_all_loads); + break; + case NavigationState::LINK_LOAD_RELOAD: + PLT_HISTOGRAM( + "PLT.BeginToFinish_LinkLoadReload_ExtensionAdblock", + begin_to_finish_all_loads); + break; + case NavigationState::LINK_LOAD_CACHE_STALE_OK: + PLT_HISTOGRAM( + "PLT.BeginToFinish_LinkLoadStaleOk_ExtensionAdblock", + begin_to_finish_all_loads); + break; + default: + break; + } + } + + const bool use_adblockplus_histogram = client->IsAdblockPlusInstalled(); + if (use_adblockplus_histogram) { + UMA_HISTOGRAM_ENUMERATION( + "PLT.Abandoned_ExtensionAdblock", + abandoned_page ? 1 : 0, 2); + switch (load_type) { + case NavigationState::NORMAL_LOAD: + PLT_HISTOGRAM( + "PLT.BeginToFinish_NormalLoad_ExtensionAdblockPlus", + begin_to_finish_all_loads); + break; + case NavigationState::LINK_LOAD_NORMAL: + PLT_HISTOGRAM( + "PLT.BeginToFinish_LinkLoadNormal_ExtensionAdblockPlus", + begin_to_finish_all_loads); + break; + case NavigationState::LINK_LOAD_RELOAD: + PLT_HISTOGRAM( + "PLT.BeginToFinish_LinkLoadReload_ExtensionAdblockPlus", + begin_to_finish_all_loads); + break; + case NavigationState::LINK_LOAD_CACHE_STALE_OK: + PLT_HISTOGRAM( + "PLT.BeginToFinish_LinkLoadStaleOk_ExtensionAdblockPlus", + begin_to_finish_all_loads); + break; + default: + break; + } + } + + const bool use_webrequest_adblock_histogram = + client->IsAdblockWithWebRequestInstalled(); + if (use_webrequest_adblock_histogram) { + UMA_HISTOGRAM_ENUMERATION( + "PLT.Abandoned_ExtensionWebRequestAdblock", + abandoned_page ? 1 : 0, 2); + switch (load_type) { + case NavigationState::NORMAL_LOAD: + PLT_HISTOGRAM( + "PLT.BeginToFinish_NormalLoad_ExtensionWebRequestAdblock", + begin_to_finish_all_loads); + break; + case NavigationState::LINK_LOAD_NORMAL: + PLT_HISTOGRAM( + "PLT.BeginToFinish_LinkLoadNormal_ExtensionWebRequestAdblock", + begin_to_finish_all_loads); + break; + case NavigationState::LINK_LOAD_RELOAD: + PLT_HISTOGRAM( + "PLT.BeginToFinish_LinkLoadReload_ExtensionWebRequestAdblock", + begin_to_finish_all_loads); + break; + case NavigationState::LINK_LOAD_CACHE_STALE_OK: + PLT_HISTOGRAM( + "PLT.BeginToFinish_LinkLoadStaleOk_ExtensionWebRequestAdblock", + begin_to_finish_all_loads); + break; + default: + break; + } + } + + const bool use_webrequest_adblockplus_histogram = + client->IsAdblockPlusWithWebRequestInstalled(); + if (use_webrequest_adblockplus_histogram) { + UMA_HISTOGRAM_ENUMERATION( + "PLT.Abandoned_ExtensionWebRequestAdblockPlus", + abandoned_page ? 1 : 0, 2); + switch (load_type) { + case NavigationState::NORMAL_LOAD: + PLT_HISTOGRAM( + "PLT.BeginToFinish_NormalLoad_ExtensionWebRequestAdblockPlus", + begin_to_finish_all_loads); + break; + case NavigationState::LINK_LOAD_NORMAL: + PLT_HISTOGRAM( + "PLT.BeginToFinish_LinkLoadNormal_ExtensionWebRequestAdblockPlus", + begin_to_finish_all_loads); + break; + case NavigationState::LINK_LOAD_RELOAD: + PLT_HISTOGRAM( + "PLT.BeginToFinish_LinkLoadReload_ExtensionWebRequestAdblockPlus", + begin_to_finish_all_loads); + break; + case NavigationState::LINK_LOAD_CACHE_STALE_OK: + PLT_HISTOGRAM( + "PLT.BeginToFinish_LinkLoadStaleOk_ExtensionWebRequestAdblockPlus", + begin_to_finish_all_loads); + break; + default: + break; + } + } + // For the SPDY field trials, we need to verify that the page loaded was // the type we requested: // if we asked for a SPDY request, we got a SPDY request |