| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef CHROME_RENDERER_PLUGINS_PLUGIN_UMA_H_ | |
| 6 #define CHROME_RENDERER_PLUGINS_PLUGIN_UMA_H_ | |
| 7 | |
| 8 #include <string> | |
| 9 | |
| 10 #include "base/memory/scoped_ptr.h" | |
| 11 #include "base/memory/singleton.h" | |
| 12 #include "url/gurl.h" | |
| 13 | |
| 14 // Used to send UMA data about missing plugins to UMA histogram server. Method | |
| 15 // ReportPluginMissing should be called whenever plugin that is not available or | |
| 16 // enabled is called. We try to determine plugin's type by requested mime type, | |
| 17 // or, if mime type is unknown, by plugin's src url. | |
| 18 class PluginUMAReporter { | |
| 19 public: | |
| 20 enum ReportType { | |
| 21 MISSING_PLUGIN, | |
| 22 DISABLED_PLUGIN | |
| 23 }; | |
| 24 | |
| 25 // Make sure the enum list in tools/histogram/histograms.xml is updated with | |
| 26 // any change in this list. | |
| 27 enum PluginType { | |
| 28 WINDOWS_MEDIA_PLAYER = 0, | |
| 29 SILVERLIGHT = 1, | |
| 30 REALPLAYER = 2, | |
| 31 JAVA = 3, | |
| 32 QUICKTIME = 4, | |
| 33 OTHER = 5, // This is obsolete and replaced by UNSUPPORTED_* types. | |
| 34 UNSUPPORTED_MIMETYPE, | |
| 35 UNSUPPORTED_EXTENSION, | |
| 36 // NOTE: Add new unsupported types only immediately above this line. | |
| 37 BROWSER_PLUGIN = 10, | |
| 38 SHOCKWAVE_FLASH, | |
| 39 WIDEVINE_CDM, | |
| 40 // NOTE: Add new plugin types only immediately above this line. | |
| 41 PLUGIN_TYPE_MAX | |
| 42 }; | |
| 43 | |
| 44 // Sends UMA data, i.e. plugin's type. | |
| 45 class UMASender { | |
| 46 public: | |
| 47 virtual ~UMASender() {} | |
| 48 virtual void SendPluginUMA(ReportType report_type, | |
| 49 PluginType plugin_type) = 0; | |
| 50 }; | |
| 51 | |
| 52 // Returns singleton instance. | |
| 53 static PluginUMAReporter* GetInstance(); | |
| 54 | |
| 55 void ReportPluginMissing(const std::string& plugin_mime_type, | |
| 56 const GURL& plugin_src); | |
| 57 | |
| 58 void ReportPluginDisabled(const std::string& plugin_mime_type, | |
| 59 const GURL& plugin_src); | |
| 60 | |
| 61 private: | |
| 62 friend struct DefaultSingletonTraits<PluginUMAReporter>; | |
| 63 friend class PluginUMATest; | |
| 64 | |
| 65 PluginUMAReporter(); | |
| 66 ~PluginUMAReporter(); | |
| 67 | |
| 68 static bool CompareCStrings(const char* first, const char* second); | |
| 69 bool CStringArrayContainsCString(const char** array, | |
| 70 size_t array_size, | |
| 71 const char* str); | |
| 72 // Extracts file extension from url. | |
| 73 void ExtractFileExtension(const GURL& src, std::string* extension); | |
| 74 | |
| 75 PluginType GetPluginType(const std::string& plugin_mime_type, | |
| 76 const GURL& plugin_src); | |
| 77 | |
| 78 // Converts plugin's src to plugin type. | |
| 79 PluginType SrcToPluginType(const GURL& src); | |
| 80 // Converts plugin's mime type to plugin type. | |
| 81 PluginType MimeTypeToPluginType(const std::string& mime_type); | |
| 82 | |
| 83 scoped_ptr<UMASender> report_sender_; | |
| 84 | |
| 85 DISALLOW_COPY_AND_ASSIGN(PluginUMAReporter); | |
| 86 }; | |
| 87 | |
| 88 #endif // CHROME_RENDERER_PLUGINS_PLUGIN_UMA_H_ | |
| 89 | |
| OLD | NEW |