| Index: chrome/renderer/plugin_uma.cc
|
| diff --git a/chrome/renderer/plugin_uma.cc b/chrome/renderer/plugin_uma.cc
|
| deleted file mode 100644
|
| index ad215b74e00895d7db3cb6db02dd967f51fd5578..0000000000000000000000000000000000000000
|
| --- a/chrome/renderer/plugin_uma.cc
|
| +++ /dev/null
|
| @@ -1,164 +0,0 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/renderer/plugin_uma.h"
|
| -
|
| -#include <algorithm>
|
| -#include <cstring>
|
| -
|
| -#include "base/metrics/histogram.h"
|
| -#include "base/string_util.h"
|
| -
|
| -namespace {
|
| -
|
| -// String we will use to convert mime tyoe to plugin type.
|
| -const char kWindowsMediaPlayerType[] = "application/x-mplayer2";
|
| -const char kSilverlightTypePrefix[] = "application/x-silverlight";
|
| -const char kRealPlayerTypePrefix[] = "audio/x-pn-realaudio";
|
| -const char kJavaTypeSubstring[] = "application/x-java-applet";
|
| -const char kQuickTimeType[] = "video/quicktime";
|
| -
|
| -// Arrays containing file extensions connected with specific plugins.
|
| -// The arrays must be sorted because binary search is used on them.
|
| -const char* kWindowsMediaPlayerExtensions[] = {
|
| - ".asx"
|
| -};
|
| -
|
| -const char* kRealPlayerExtensions[] = {
|
| - ".ra",
|
| - ".ram",
|
| - ".rm",
|
| - ".rmm",
|
| - ".rmp",
|
| - ".rpm"
|
| -};
|
| -
|
| -const char* kQuickTimeExtensions[] = {
|
| - ".moov",
|
| - ".mov",
|
| - ".qif",
|
| - ".qt",
|
| - ".qti",
|
| - ".qtif"
|
| -};
|
| -
|
| -} // namespace.
|
| -
|
| -class UMASenderImpl : public MissingPluginReporter::UMASender {
|
| - virtual void SendPluginUMA(MissingPluginReporter::PluginType plugin_type)
|
| - OVERRIDE;
|
| -};
|
| -
|
| -void UMASenderImpl::SendPluginUMA(
|
| - MissingPluginReporter::PluginType plugin_type) {
|
| - UMA_HISTOGRAM_ENUMERATION("Plugin.MissingPlugins",
|
| - plugin_type,
|
| - MissingPluginReporter::OTHER);
|
| -}
|
| -
|
| -// static.
|
| -MissingPluginReporter* MissingPluginReporter::GetInstance() {
|
| - return Singleton<MissingPluginReporter>::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 MissingPluginReporter::SetUMASender(UMASender* sender) {
|
| - report_sender_.reset(sender);
|
| -}
|
| -
|
| -MissingPluginReporter::MissingPluginReporter()
|
| - : report_sender_(new UMASenderImpl()) {
|
| -}
|
| -
|
| -MissingPluginReporter::~MissingPluginReporter() {
|
| -}
|
| -
|
| -// static.
|
| -bool MissingPluginReporter::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) {
|
| - return std::binary_search(array, array + array_size, str, CompareCStrings);
|
| -}
|
| -
|
| -void MissingPluginReporter::ExtractFileExtension(const GURL& src,
|
| - std::string* extension) {
|
| - std::string extension_file_path(src.ExtractFileName());
|
| - if (extension_file_path.empty())
|
| - extension_file_path = src.host();
|
| -
|
| - size_t last_dot = extension_file_path.find_last_of('.');
|
| - if (last_dot != std::string::npos) {
|
| - *extension = extension_file_path.substr(last_dot);
|
| - } else {
|
| - extension->clear();
|
| - }
|
| -
|
| - StringToLowerASCII(extension);
|
| -}
|
| -
|
| -MissingPluginReporter::PluginType MissingPluginReporter::SrcToPluginType(
|
| - const GURL& src) {
|
| - std::string file_extension;
|
| - ExtractFileExtension(src, &file_extension);
|
| - if (CStringArrayContainsCString(kWindowsMediaPlayerExtensions,
|
| - arraysize(kWindowsMediaPlayerExtensions),
|
| - file_extension.c_str())) {
|
| - return WINDOWS_MEDIA_PLAYER;
|
| - }
|
| -
|
| - if (CStringArrayContainsCString(kQuickTimeExtensions,
|
| - arraysize(kQuickTimeExtensions),
|
| - file_extension.c_str())) {
|
| - return QUICKTIME;
|
| - }
|
| -
|
| - if (CStringArrayContainsCString(kRealPlayerExtensions,
|
| - arraysize(kRealPlayerExtensions),
|
| - file_extension.c_str())) {
|
| - return REALPLAYER;
|
| - }
|
| -
|
| - return OTHER;
|
| -}
|
| -
|
| -MissingPluginReporter::PluginType MissingPluginReporter::MimeTypeToPluginType(
|
| - const std::string& mime_type) {
|
| - if (strcmp(mime_type.c_str(), kWindowsMediaPlayerType) == 0)
|
| - return WINDOWS_MEDIA_PLAYER;
|
| -
|
| - size_t prefix_length = strlen(kSilverlightTypePrefix);
|
| - if (strncmp(mime_type.c_str(), kSilverlightTypePrefix, prefix_length) == 0)
|
| - return SILVERLIGHT;
|
| -
|
| - prefix_length = strlen(kRealPlayerTypePrefix);
|
| - if (strncmp(mime_type.c_str(), kRealPlayerTypePrefix, prefix_length) == 0)
|
| - return REALPLAYER;
|
| -
|
| - if (strstr(mime_type.c_str(), kJavaTypeSubstring))
|
| - return JAVA;
|
| -
|
| - if (strcmp(mime_type.c_str(), kQuickTimeType) == 0)
|
| - return QUICKTIME;
|
| -
|
| - return OTHER;
|
| -}
|
| -
|
|
|