Chromium Code Reviews| Index: chrome/renderer/plugins/plugin_uma.cc |
| diff --git a/chrome/renderer/plugins/plugin_uma.cc b/chrome/renderer/plugins/plugin_uma.cc |
| index 5f1bec1a5e72d005f23e639a14549dbebc553817..22a6f5a8678e14c52ef0312d4a9b569bd3f57fdd 100644 |
| --- a/chrome/renderer/plugins/plugin_uma.cc |
| +++ b/chrome/renderer/plugins/plugin_uma.cc |
| @@ -1,4 +1,4 @@ |
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
|
ddorwin
2013/04/04 19:09:50
same
xhwang
2013/04/04 23:10:33
Done.
|
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| @@ -12,7 +12,7 @@ |
| namespace { |
| -// String we will use to convert mime tyoe to plugin type. |
| +// String we will use to convert mime type to plugin type. |
| const char kWindowsMediaPlayerType[] = "application/x-mplayer2"; |
| const char kSilverlightTypePrefix[] = "application/x-silverlight"; |
| const char kRealPlayerTypePrefix[] = "audio/x-pn-realaudio"; |
| @@ -45,62 +45,68 @@ const char* kQuickTimeExtensions[] = { |
| } // namespace. |
| -class UMASenderImpl : public MissingPluginReporter::UMASender { |
| - virtual void SendPluginUMA(MissingPluginReporter::PluginType plugin_type) |
| - OVERRIDE; |
| +class UMASenderImpl : public PluginUMAReporter::UMASender { |
| + virtual void SendPluginUMA( |
| + PluginUMAReporter::ReportType report_type, |
| + PluginUMAReporter::PluginType plugin_type) OVERRIDE; |
| }; |
| -void UMASenderImpl::SendPluginUMA( |
| - MissingPluginReporter::PluginType plugin_type) { |
| - UMA_HISTOGRAM_ENUMERATION("Plugin.MissingPlugins", |
| - plugin_type, |
| - MissingPluginReporter::OTHER); |
| +void UMASenderImpl::SendPluginUMA(PluginUMAReporter::ReportType report_type, |
| + PluginUMAReporter::PluginType plugin_type) { |
| + // UMA_HISTOGRAM_ENUMERATION requires constant histogram name. Use string |
| + // constants explicitly instead of trying to use variables for names. |
| + switch (report_type) { |
| + case PluginUMAReporter::MISSING_PLUGIN: |
| + UMA_HISTOGRAM_ENUMERATION("Plugin.MissingPlugins", |
| + plugin_type, |
| + PluginUMAReporter::OTHER); |
| + break; |
| + case PluginUMAReporter::DISABLED_PLUGIN: |
| + UMA_HISTOGRAM_ENUMERATION("Plugin.DisabledPlugins", |
| + plugin_type, |
| + PluginUMAReporter::OTHER); |
| + break; |
| + default: |
| + NOTREACHED(); |
| + } |
| } |
| // static. |
| -MissingPluginReporter* MissingPluginReporter::GetInstance() { |
| - return Singleton<MissingPluginReporter>::get(); |
| +PluginUMAReporter* PluginUMAReporter::GetInstance() { |
| + return Singleton<PluginUMAReporter>::get(); |
| } |
| -void MissingPluginReporter::ReportPluginMissing( |
| - std::string plugin_mime_type, const GURL& plugin_src) { |
| - PluginType plugin_type; |
| - // If we know plugin's mime type, we use it to determine plugin's type. Else, |
| - // we try to determine plugin type using plugin source's extension. |
| - if (!plugin_mime_type.empty()) { |
| - StringToLowerASCII(&plugin_mime_type); |
| - plugin_type = MimeTypeToPluginType(plugin_mime_type); |
| - } else { |
| - plugin_type = SrcToPluginType(plugin_src); |
| - } |
| - report_sender_->SendPluginUMA(plugin_type); |
| +void PluginUMAReporter::ReportPluginMissing( |
| + const std::string& plugin_mime_type, const GURL& plugin_src) { |
| + report_sender_->SendPluginUMA(MISSING_PLUGIN, |
| + GetPluginType(plugin_mime_type, plugin_src)); |
| } |
| -void MissingPluginReporter::SetUMASender(UMASender* sender) { |
| - report_sender_.reset(sender); |
| +void PluginUMAReporter::ReportPluginDisabled( |
| + const std::string& plugin_mime_type, const GURL& plugin_src) { |
| + report_sender_->SendPluginUMA(DISABLED_PLUGIN, |
| + GetPluginType(plugin_mime_type, plugin_src)); |
| } |
| -MissingPluginReporter::MissingPluginReporter() |
| - : report_sender_(new UMASenderImpl()) { |
| +PluginUMAReporter::PluginUMAReporter() : report_sender_(new UMASenderImpl()) { |
| } |
| -MissingPluginReporter::~MissingPluginReporter() { |
| +PluginUMAReporter::~PluginUMAReporter() { |
| } |
| // static. |
| -bool MissingPluginReporter::CompareCStrings(const char* first, |
| - const char* second) { |
| +bool PluginUMAReporter::CompareCStrings(const char* first, const char* second) { |
| return strcmp(first, second) < 0; |
| } |
| -bool MissingPluginReporter::CStringArrayContainsCString(const char** array, |
| - size_t array_size, |
| - const char* str) { |
| +bool PluginUMAReporter::CStringArrayContainsCString(const char** array, |
| + size_t array_size, |
| + const char* str) { |
| return std::binary_search(array, array + array_size, str, CompareCStrings); |
| } |
| -void MissingPluginReporter::ExtractFileExtension(const GURL& src, |
| - std::string* extension) { |
| +void PluginUMAReporter::ExtractFileExtension(const GURL& src, |
| + std::string* extension) { |
| std::string extension_file_path(src.ExtractFileName()); |
| if (extension_file_path.empty()) |
| extension_file_path = src.host(); |
| @@ -115,7 +121,17 @@ void MissingPluginReporter::ExtractFileExtension(const GURL& src, |
| StringToLowerASCII(extension); |
| } |
| -MissingPluginReporter::PluginType MissingPluginReporter::SrcToPluginType( |
| +PluginUMAReporter::PluginType PluginUMAReporter::GetPluginType( |
| + const std::string& plugin_mime_type, const GURL& plugin_src) { |
| + // If we know plugin's mime type, we use it to determine plugin's type. Else, |
| + // we try to determine plugin type using plugin source's extension. |
| + if (!plugin_mime_type.empty()) |
| + return MimeTypeToPluginType(StringToLowerASCII(plugin_mime_type)); |
| + |
| + return SrcToPluginType(plugin_src); |
| +} |
| + |
| +PluginUMAReporter::PluginType PluginUMAReporter::SrcToPluginType( |
| const GURL& src) { |
| std::string file_extension; |
| ExtractFileExtension(src, &file_extension); |
| @@ -140,7 +156,7 @@ MissingPluginReporter::PluginType MissingPluginReporter::SrcToPluginType( |
| return OTHER; |
| } |
| -MissingPluginReporter::PluginType MissingPluginReporter::MimeTypeToPluginType( |
| +PluginUMAReporter::PluginType PluginUMAReporter::MimeTypeToPluginType( |
| const std::string& mime_type) { |
| if (strcmp(mime_type.c_str(), kWindowsMediaPlayerType) == 0) |
| return WINDOWS_MEDIA_PLAYER; |
| @@ -161,4 +177,3 @@ MissingPluginReporter::PluginType MissingPluginReporter::MimeTypeToPluginType( |
| return OTHER; |
| } |
| - |