| Index: chrome/renderer/pepper/pepper_uma_host.cc
 | 
| diff --git a/chrome/renderer/pepper/pepper_uma_host.cc b/chrome/renderer/pepper/pepper_uma_host.cc
 | 
| index 45d956d3c8d881a882944c14073490ffcc975db8..3da999de543ae592810e3ff84647beb2549954e2 100644
 | 
| --- a/chrome/renderer/pepper/pepper_uma_host.cc
 | 
| +++ b/chrome/renderer/pepper/pepper_uma_host.cc
 | 
| @@ -10,6 +10,7 @@
 | 
|  #include "chrome/common/chrome_switches.h"
 | 
|  #include "chrome/common/render_messages.h"
 | 
|  #include "chrome/renderer/chrome_content_renderer_client.h"
 | 
| +#include "content/public/renderer/pepper_plugin_instance.h"
 | 
|  #include "content/public/renderer/render_thread.h"
 | 
|  #include "content/public/renderer/renderer_ppapi_host.h"
 | 
|  #include "extensions/common/constants.h"
 | 
| @@ -31,6 +32,10 @@ const char* const kWhitelistedHistogramPrefixes[] = {
 | 
|      "CD190EA2B764EDF0BB97552A638D32072F3CFD41",  // see http://crbug.com/317833
 | 
|  };
 | 
|  
 | 
| +const char* const kWhitelistedPluginBaseNames[] = {
 | 
| +    "libwidevinecdmadapter.so"  // see http://crbug.com/368743
 | 
| +};
 | 
| +
 | 
|  std::string HashPrefix(const std::string& histogram) {
 | 
|    const std::string id_hash =
 | 
|        base::SHA1HashString(histogram.substr(0, histogram.find('.')));
 | 
| @@ -46,10 +51,17 @@ PepperUMAHost::PepperUMAHost(content::RendererPpapiHost* host,
 | 
|      : ResourceHost(host->GetPpapiHost(), instance, resource),
 | 
|        document_url_(host->GetDocumentURL(instance)),
 | 
|        is_plugin_in_process_(host->IsRunningInProcess()) {
 | 
| +  if (host->GetPluginInstance(instance)) {
 | 
| +    plugin_base_name_ =
 | 
| +        host->GetPluginInstance(instance)->GetModulePath().BaseName();
 | 
| +  }
 | 
| +
 | 
|    for (size_t i = 0; i < arraysize(kPredefinedAllowedUMAOrigins); ++i)
 | 
|      allowed_origins_.insert(kPredefinedAllowedUMAOrigins[i]);
 | 
|    for (size_t i = 0; i < arraysize(kWhitelistedHistogramPrefixes); ++i)
 | 
|      allowed_histogram_prefixes_.insert(kWhitelistedHistogramPrefixes[i]);
 | 
| +  for (size_t i = 0; i < arraysize(kWhitelistedPluginBaseNames); ++i)
 | 
| +    allowed_plugin_base_names_.insert(kWhitelistedPluginBaseNames[i]);
 | 
|  }
 | 
|  
 | 
|  PepperUMAHost::~PepperUMAHost() {}
 | 
| @@ -86,6 +98,11 @@ bool PepperUMAHost::IsHistogramAllowed(const std::string& histogram) {
 | 
|      return true;
 | 
|    }
 | 
|  
 | 
| +  if (allowed_plugin_base_names_.find(plugin_base_name_.MaybeAsASCII()) !=
 | 
| +      allowed_plugin_base_names_.end()) {
 | 
| +    return true;
 | 
| +  }
 | 
| +
 | 
|    LOG(ERROR) << "Host or histogram name is not allowed to use the UMA API.";
 | 
|    return false;
 | 
|  }
 | 
| 
 |