Update to Chromium revision 614d31da (#423768)

- Fix PDF extension loading after showing the plugin placeholder (issue #2020)
This commit is contained in:
Marshall Greenblatt
2016-10-21 15:52:29 -04:00
parent 07d12b78e1
commit c9e81c082f
75 changed files with 725 additions and 502 deletions

View File

@@ -34,6 +34,7 @@
#include "extensions/common/extension.h"
#include "extensions/common/manifest_handlers/webview_info.h"
#include "url/gurl.h"
#include "url/origin.h"
#include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR.
@@ -95,7 +96,7 @@ static void SendPluginAvailabilityUMA(const std::string& mime_type,
void ReportMetrics(const std::string& mime_type,
const GURL& url,
const GURL& origin_url) {
const url::Origin& main_frame_origin) {
}
#if defined(ENABLE_EXTENSIONS)
@@ -196,20 +197,20 @@ CefPluginInfoMessageFilter::~CefPluginInfoMessageFilter() {}
struct CefPluginInfoMessageFilter::GetPluginInfo_Params {
int render_frame_id;
GURL url;
GURL top_origin_url;
url::Origin main_frame_origin;
std::string mime_type;
};
void CefPluginInfoMessageFilter::OnGetPluginInfo(
int render_frame_id,
const GURL& url,
const GURL& top_origin_url,
const url::Origin& main_frame_origin,
const std::string& mime_type,
IPC::Message* reply_msg) {
GetPluginInfo_Params params = {
render_frame_id,
url,
top_origin_url,
main_frame_origin,
mime_type
};
PluginService::GetInstance()->GetPlugins(
@@ -244,7 +245,7 @@ void CefPluginInfoMessageFilter::PluginsLoaded(
CefViewHostMsg_GetPluginInfo_Status::kNotFound) {
main_thread_task_runner_->PostTask(
FROM_HERE, base::Bind(&ReportMetrics, output.actual_mime_type,
params.url, params.top_origin_url));
params.url, params.main_frame_origin));
}
}
@@ -304,7 +305,7 @@ void CefPluginInfoMessageFilter::Context::DecidePluginStatus(
bool is_managed = false;
// Check plugin content settings. The primary URL is the top origin URL and
// the secondary URL is the plugin URL.
GetPluginContentSetting(plugin, params.top_origin_url, params.url,
GetPluginContentSetting(plugin, params.main_frame_origin.GetURL(), params.url,
plugin_metadata->identifier(), &plugin_setting,
&uses_default_content_setting, &is_managed);
@@ -413,7 +414,7 @@ bool CefPluginInfoMessageFilter::Context::FindEnabledPlugin(
DecidePluginStatus(params, *plugin, (*plugin_metadata).get(), status);
if (filter->IsPluginAvailable(handler,
params.url,
params.top_origin_url,
params.main_frame_origin,
plugin,
status)) {
break;

View File

@@ -34,6 +34,10 @@ namespace extensions {
class ExtensionRegistry;
}
namespace url {
class Origin;
}
// This class filters out incoming IPC messages requesting plugin information.
class CefPluginInfoMessageFilter : public content::BrowserMessageFilter {
public:
@@ -95,7 +99,7 @@ class CefPluginInfoMessageFilter : public content::BrowserMessageFilter {
void OnGetPluginInfo(int render_frame_id,
const GURL& url,
const GURL& top_origin_url,
const url::Origin& main_frame_origin,
const std::string& mime_type,
IPC::Message* reply_msg);

View File

@@ -22,7 +22,7 @@ bool CefPluginServiceFilter::IsPluginAvailable(
int render_frame_id,
const void* context,
const GURL& url,
const GURL& policy_url,
const url::Origin& main_frame_origin,
content::WebPluginInfo* plugin) {
CefResourceContext* resource_context = const_cast<CefResourceContext*>(
reinterpret_cast<const CefResourceContext*>(context));
@@ -36,7 +36,7 @@ bool CefPluginServiceFilter::IsPluginAvailable(
CefRefPtr<CefRequestContextHandler> handler = resource_context->GetHandler();
CefViewHostMsg_GetPluginInfo_Status status =
CefViewHostMsg_GetPluginInfo_Status::kAllowed;
allow_load = IsPluginAvailable(handler.get(), url, policy_url, plugin,
allow_load = IsPluginAvailable(handler.get(), url, main_frame_origin, plugin,
&status);
resource_context->AddPluginLoadDecision(render_process_id, plugin->path,
@@ -53,7 +53,7 @@ bool CefPluginServiceFilter::CanLoadPlugin(int render_process_id,
bool CefPluginServiceFilter::IsPluginAvailable(
CefRequestContextHandler* handler,
const GURL& url,
const GURL& policy_url,
const url::Origin& main_frame_origin,
content::WebPluginInfo* plugin,
CefViewHostMsg_GetPluginInfo_Status* status) {
if (*status == CefViewHostMsg_GetPluginInfo_Status::kNotFound ||
@@ -68,6 +68,7 @@ bool CefPluginServiceFilter::IsPluginAvailable(
return true;
}
const GURL& policy_url = main_frame_origin.GetURL();
if (!policy_url.is_empty() &&
policy_url.scheme() == extensions::kExtensionScheme) {
// Always allow extension origins to load plugins.

View File

@@ -25,7 +25,7 @@ class CefPluginServiceFilter : public content::PluginServiceFilter {
int render_frame_id,
const void* context,
const GURL& url,
const GURL& policy_url,
const url::Origin& main_frame_origin,
content::WebPluginInfo* plugin) override;
bool CanLoadPlugin(int render_process_id,
@@ -36,7 +36,7 @@ class CefPluginServiceFilter : public content::PluginServiceFilter {
// See related discussion in issue #2015.
bool IsPluginAvailable(CefRequestContextHandler* handler,
const GURL& url,
const GURL& policy_url,
const url::Origin& main_frame_origin,
content::WebPluginInfo* plugin,
CefViewHostMsg_GetPluginInfo_Status* status);