OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 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 "base/metrics/histogram.h" | |
6 #include "chrome/common/chrome_constants.h" | |
5 #include "chrome/plugin/chrome_content_plugin_client.h" | 7 #include "chrome/plugin/chrome_content_plugin_client.h" |
8 #include "third_party/widevine/cdm/widevine_cdm_common.h" | |
6 | 9 |
7 #if defined(ENABLE_REMOTING) | 10 #if defined(ENABLE_REMOTING) |
8 #include "base/files/file_path.h" | 11 #include "base/files/file_path.h" |
9 #include "base/path_service.h" | 12 #include "base/path_service.h" |
10 #include "content/public/common/content_paths.h" | 13 #include "content/public/common/content_paths.h" |
11 #include "media/base/media.h" | 14 #include "media/base/media.h" |
12 #if defined(OS_WIN) | 15 #if defined(OS_WIN) |
13 #include "base/logging.h" | 16 #include "base/logging.h" |
14 #include "base/native_library.h" | 17 #include "base/native_library.h" |
15 #elif defined(OS_POSIX) && !defined(OS_MACOSX) && defined(USE_NSS) | 18 #elif defined(OS_POSIX) && !defined(OS_MACOSX) && defined(USE_NSS) |
16 #include "crypto/nss_util.h" | 19 #include "crypto/nss_util.h" |
17 #endif | 20 #endif // defined(OS_WIN) |
18 #endif | 21 #endif // defined(ENABLE_REMOTING) |
19 | 22 |
20 #if defined(OS_MACOSX) | 23 #if defined(OS_MACOSX) |
21 #include "base/mac/mac_util.h" | 24 #include "base/mac/mac_util.h" |
22 #include "base/mac/scoped_cftyperef.h" | 25 #include "base/mac/scoped_cftyperef.h" |
23 #include "base/strings/sys_string_conversions.h" | 26 #include "base/strings/sys_string_conversions.h" |
24 #include "grit/chromium_strings.h" | 27 #include "grit/chromium_strings.h" |
25 #include "ui/base/l10n/l10n_util.h" | 28 #include "ui/base/l10n/l10n_util.h" |
26 #endif | 29 #endif // defined(OS_MACOSX) |
27 | 30 |
28 namespace chrome { | 31 namespace chrome { |
29 | 32 |
30 void ChromeContentPluginClient::PreSandboxInitialization() { | 33 void ChromeContentPluginClient::PreSandboxInitialization() { |
31 #if defined(ENABLE_REMOTING) | 34 #if defined(ENABLE_REMOTING) |
32 | 35 |
33 // Load crypto libraries for the Chromoting client plugin. | 36 // Load crypto libraries for the Chromoting client plugin. |
34 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(USE_NSS) | 37 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(USE_NSS) |
35 // On platforms where we use system NSS libraries, the .so's must be loaded | 38 // On platforms where we use system NSS libraries, the .so's must be loaded |
36 // before the sandbox is initialized. | 39 // before the sandbox is initialized. |
(...skipping 23 matching lines...) Expand all Loading... | |
60 base::mac::ScopedCFTypeRef<CFStringRef> app_name( | 63 base::mac::ScopedCFTypeRef<CFStringRef> app_name( |
61 base::SysUTF16ToCFStringRef( | 64 base::SysUTF16ToCFStringRef( |
62 l10n_util::GetStringUTF16(IDS_SHORT_PLUGIN_APP_NAME))); | 65 l10n_util::GetStringUTF16(IDS_SHORT_PLUGIN_APP_NAME))); |
63 base::mac::ScopedCFTypeRef<CFStringRef> process_name( | 66 base::mac::ScopedCFTypeRef<CFStringRef> process_name( |
64 CFStringCreateWithFormat(kCFAllocatorDefault, NULL, CFSTR("%@ (%@)"), | 67 CFStringCreateWithFormat(kCFAllocatorDefault, NULL, CFSTR("%@ (%@)"), |
65 cf_plugin_name.get(), app_name.get())); | 68 cf_plugin_name.get(), app_name.get())); |
66 base::mac::SetProcessName(process_name); | 69 base::mac::SetProcessName(process_name); |
67 #endif | 70 #endif |
68 } | 71 } |
69 | 72 |
73 // Reports plugin loading result through UMA. This macro can only be called | |
74 // in function PluginLoaded. | |
75 // |name| must be const string based on how UMA_HISTOGRAM_ENUMERATION works. | |
ddorwin
2013/04/09 01:44:11
You should also explain why this must be a macro f
xhwang
2013/04/09 03:59:42
Use FactoryGet following Ilya's suggestion as we d
| |
76 #define REPORT_PLUGIN_LOAD_UMA(name) \ | |
77 do { \ | |
78 if (!is_broker) { \ | |
Ilya Sherman
2013/04/09 01:49:22
For readability's sake, please pass is_broker in a
xhwang
2013/04/09 03:59:42
Done.
| |
79 UMA_HISTOGRAM_ENUMERATION("Plugin.PluginLoadResult."name, result, \ | |
80 ContentPluginClient::LOAD_STATUS_MAX); \ | |
81 } else { \ | |
82 UMA_HISTOGRAM_ENUMERATION("Plugin.BrokerLoadResult."name, result, \ | |
83 ContentPluginClient::LOAD_STATUS_MAX); \ | |
84 } \ | |
85 } while (0); | |
Ilya Sherman
2013/04/09 01:49:22
This is ok, but IMO it'd be cleaner to write a fun
xhwang
2013/04/09 03:59:42
Thanks! This is much better!
| |
86 | |
87 void ChromeContentPluginClient::PluginLoaded(const base::FilePath& plugin_path, | |
88 bool is_broker, | |
89 PluginLoadResult result) { | |
90 base::FilePath::StringType plugin_name = plugin_path.BaseName().value(); | |
91 if (plugin_name == kPepperFlashPluginFilename) { | |
92 REPORT_PLUGIN_LOAD_UMA("PepperFlash"); | |
ddorwin
2013/04/09 01:44:11
pass result into your macro as if it was a functio
xhwang
2013/04/09 03:59:42
Done.
| |
93 } else if (plugin_name == kWidevineCdmPluginFileName) { | |
94 REPORT_PLUGIN_LOAD_UMA("WidevineCDM"); | |
95 } | |
96 } | |
97 | |
70 } // namespace chrome | 98 } // namespace chrome |
OLD | NEW |