Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/plugins/plugin_info_message_filter.h" | 5 #include "chrome/browser/plugins/plugin_info_message_filter.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 35 #include "components/content_settings/core/browser/host_content_settings_map.h" | 35 #include "components/content_settings/core/browser/host_content_settings_map.h" |
| 36 #include "components/content_settings/core/common/content_settings.h" | 36 #include "components/content_settings/core/common/content_settings.h" |
| 37 #include "components/prefs/pref_service.h" | 37 #include "components/prefs/pref_service.h" |
| 38 #include "components/rappor/rappor_service.h" | 38 #include "components/rappor/rappor_service.h" |
| 39 #include "content/public/browser/browser_thread.h" | 39 #include "content/public/browser/browser_thread.h" |
| 40 #include "content/public/browser/plugin_service.h" | 40 #include "content/public/browser/plugin_service.h" |
| 41 #include "content/public/browser/plugin_service_filter.h" | 41 #include "content/public/browser/plugin_service_filter.h" |
| 42 #include "content/public/common/content_constants.h" | 42 #include "content/public/common/content_constants.h" |
| 43 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 43 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
| 44 #include "url/gurl.h" | 44 #include "url/gurl.h" |
| 45 #include "url/origin.h" | |
| 45 #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. | 46 #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. |
| 46 | 47 |
| 47 #if defined(ENABLE_EXTENSIONS) | 48 #if defined(ENABLE_EXTENSIONS) |
| 48 #include "components/guest_view/browser/guest_view_base.h" | 49 #include "components/guest_view/browser/guest_view_base.h" |
| 49 #include "extensions/browser/extension_registry.h" | 50 #include "extensions/browser/extension_registry.h" |
| 50 #include "extensions/browser/guest_view/web_view/web_view_renderer_state.h" | 51 #include "extensions/browser/guest_view/web_view/web_view_renderer_state.h" |
| 51 #include "extensions/common/constants.h" | 52 #include "extensions/common/constants.h" |
| 52 #include "extensions/common/extension.h" | 53 #include "extensions/common/extension.h" |
| 53 #include "extensions/common/manifest_handlers/webview_info.h" | 54 #include "extensions/common/manifest_handlers/webview_info.h" |
| 54 #endif | 55 #endif |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 82 status, PLUGIN_AVAILABILITY_STATUS_MAX); | 83 status, PLUGIN_AVAILABILITY_STATUS_MAX); |
| 83 #endif // defined(WIDEVINE_CDM_AVAILABLE) | 84 #endif // defined(WIDEVINE_CDM_AVAILABLE) |
| 84 } | 85 } |
| 85 | 86 |
| 86 #endif // defined(ENABLE_PEPPER_CDMS) | 87 #endif // defined(ENABLE_PEPPER_CDMS) |
| 87 | 88 |
| 88 // Report usage metrics for Silverlight and Flash plugin instantiations to the | 89 // Report usage metrics for Silverlight and Flash plugin instantiations to the |
| 89 // RAPPOR service. | 90 // RAPPOR service. |
| 90 void ReportMetrics(const std::string& mime_type, | 91 void ReportMetrics(const std::string& mime_type, |
| 91 const GURL& url, | 92 const GURL& url, |
| 92 const GURL& origin_url) { | 93 const url::Origin& top_origin) { |
| 93 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 94 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 94 | 95 |
| 95 if (chrome::IsIncognitoSessionActive()) | 96 if (chrome::IsIncognitoSessionActive()) |
| 96 return; | 97 return; |
| 97 rappor::RapporService* rappor_service = g_browser_process->rappor_service(); | 98 rappor::RapporService* rappor_service = g_browser_process->rappor_service(); |
| 98 if (!rappor_service) | 99 if (!rappor_service) |
| 99 return; | 100 return; |
| 101 if (top_origin.unique()) | |
| 102 return; | |
| 100 | 103 |
| 101 if (mime_type == content::kFlashPluginSwfMimeType || | 104 if (mime_type == content::kFlashPluginSwfMimeType || |
| 102 mime_type == content::kFlashPluginSplMimeType) { | 105 mime_type == content::kFlashPluginSplMimeType) { |
| 103 rappor_service->RecordSample( | 106 rappor_service->RecordSample( |
| 104 "Plugins.FlashOriginUrl", rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, | 107 "Plugins.FlashOriginUrl", rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, |
| 105 net::registry_controlled_domains::GetDomainAndRegistry( | 108 net::registry_controlled_domains::GetDomainAndRegistry( |
| 106 origin_url, | 109 GURL(top_origin.Serialize()), |
| 107 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES)); | 110 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES)); |
| 108 rappor_service->RecordSample( | 111 rappor_service->RecordSample( |
| 109 "Plugins.FlashUrl", rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, | 112 "Plugins.FlashUrl", rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, |
| 110 net::registry_controlled_domains::GetDomainAndRegistry( | 113 net::registry_controlled_domains::GetDomainAndRegistry( |
| 111 url, | 114 url, |
| 112 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES)); | 115 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES)); |
| 113 } | 116 } |
| 114 } | 117 } |
| 115 | 118 |
| 116 #if defined(ENABLE_EXTENSIONS) | 119 #if defined(ENABLE_EXTENSIONS) |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 200 | 203 |
| 201 // Destroy on the UI thread because we contain a |PrefMember|. | 204 // Destroy on the UI thread because we contain a |PrefMember|. |
| 202 content::BrowserThread::DeleteOnUIThread::Destruct(this); | 205 content::BrowserThread::DeleteOnUIThread::Destruct(this); |
| 203 } | 206 } |
| 204 | 207 |
| 205 PluginInfoMessageFilter::~PluginInfoMessageFilter() {} | 208 PluginInfoMessageFilter::~PluginInfoMessageFilter() {} |
| 206 | 209 |
| 207 struct PluginInfoMessageFilter::GetPluginInfo_Params { | 210 struct PluginInfoMessageFilter::GetPluginInfo_Params { |
| 208 int render_frame_id; | 211 int render_frame_id; |
| 209 GURL url; | 212 GURL url; |
| 210 GURL top_origin_url; | 213 url::Origin top_origin_url; |
|
nasko
2016/09/30 20:38:48
This variable is no longer an URL.
tommycli
2016/09/30 21:20:41
Done.
| |
| 211 std::string mime_type; | 214 std::string mime_type; |
| 212 }; | 215 }; |
| 213 | 216 |
| 214 void PluginInfoMessageFilter::OnGetPluginInfo( | 217 void PluginInfoMessageFilter::OnGetPluginInfo(int render_frame_id, |
| 215 int render_frame_id, | 218 const GURL& url, |
| 216 const GURL& url, | 219 const url::Origin& top_origin_url, |
|
nasko
2016/09/30 20:38:48
Not an URL
tommycli
2016/09/30 21:20:41
Done.
| |
| 217 const GURL& top_origin_url, | 220 const std::string& mime_type, |
| 218 const std::string& mime_type, | 221 IPC::Message* reply_msg) { |
| 219 IPC::Message* reply_msg) { | |
| 220 GetPluginInfo_Params params = { | 222 GetPluginInfo_Params params = { |
| 221 render_frame_id, | 223 render_frame_id, |
| 222 url, | 224 url, |
| 223 top_origin_url, | 225 top_origin_url, |
| 224 mime_type | 226 mime_type |
| 225 }; | 227 }; |
| 226 PluginService::GetInstance()->GetPlugins( | 228 PluginService::GetInstance()->GetPlugins( |
| 227 base::Bind(&PluginInfoMessageFilter::PluginsLoaded, | 229 base::Bind(&PluginInfoMessageFilter::PluginsLoaded, |
| 228 weak_ptr_factory_.GetWeakPtr(), | 230 weak_ptr_factory_.GetWeakPtr(), |
| 229 params, reply_msg)); | 231 params, reply_msg)); |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 390 if (extensions::WebViewRendererState::GetInstance()->IsGuest( | 392 if (extensions::WebViewRendererState::GetInstance()->IsGuest( |
| 391 render_process_id_)) | 393 render_process_id_)) |
| 392 *status = ChromeViewHostMsg_GetPluginInfo_Status::kUnauthorized; | 394 *status = ChromeViewHostMsg_GetPluginInfo_Status::kUnauthorized; |
| 393 } | 395 } |
| 394 #endif | 396 #endif |
| 395 } | 397 } |
| 396 | 398 |
| 397 bool PluginInfoMessageFilter::Context::FindEnabledPlugin( | 399 bool PluginInfoMessageFilter::Context::FindEnabledPlugin( |
| 398 int render_frame_id, | 400 int render_frame_id, |
| 399 const GURL& url, | 401 const GURL& url, |
| 400 const GURL& top_origin_url, | 402 const url::Origin& top_origin_url, |
| 401 const std::string& mime_type, | 403 const std::string& mime_type, |
| 402 ChromeViewHostMsg_GetPluginInfo_Status* status, | 404 ChromeViewHostMsg_GetPluginInfo_Status* status, |
| 403 WebPluginInfo* plugin, | 405 WebPluginInfo* plugin, |
| 404 std::string* actual_mime_type, | 406 std::string* actual_mime_type, |
| 405 std::unique_ptr<PluginMetadata>* plugin_metadata) const { | 407 std::unique_ptr<PluginMetadata>* plugin_metadata) const { |
| 406 *status = ChromeViewHostMsg_GetPluginInfo_Status::kAllowed; | 408 *status = ChromeViewHostMsg_GetPluginInfo_Status::kAllowed; |
| 407 | 409 |
| 408 bool allow_wildcard = true; | 410 bool allow_wildcard = true; |
| 409 std::vector<WebPluginInfo> matching_plugins; | 411 std::vector<WebPluginInfo> matching_plugins; |
| 410 std::vector<std::string> mime_types; | 412 std::vector<std::string> mime_types; |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 510 status == ChromeViewHostMsg_GetPluginInfo_Status::kPlayImportantContent) { | 512 status == ChromeViewHostMsg_GetPluginInfo_Status::kPlayImportantContent) { |
| 511 ChromePluginServiceFilter::GetInstance()->AuthorizePlugin( | 513 ChromePluginServiceFilter::GetInstance()->AuthorizePlugin( |
| 512 render_process_id_, path); | 514 render_process_id_, path); |
| 513 } | 515 } |
| 514 } | 516 } |
| 515 | 517 |
| 516 bool PluginInfoMessageFilter::Context::IsPluginEnabled( | 518 bool PluginInfoMessageFilter::Context::IsPluginEnabled( |
| 517 const content::WebPluginInfo& plugin) const { | 519 const content::WebPluginInfo& plugin) const { |
| 518 return plugin_prefs_->IsPluginEnabled(plugin); | 520 return plugin_prefs_->IsPluginEnabled(plugin); |
| 519 } | 521 } |
| OLD | NEW |