| Index: chrome/browser/renderer_host/resource_message_filter.cc
|
| diff --git a/chrome/browser/renderer_host/resource_message_filter.cc b/chrome/browser/renderer_host/resource_message_filter.cc
|
| index e28bf95a9f016e724d617332e0c860623c14e970..839cc68910776332f781a2c3731e2d6bc48ae059 100644
|
| --- a/chrome/browser/renderer_host/resource_message_filter.cc
|
| +++ b/chrome/browser/renderer_host/resource_message_filter.cc
|
| @@ -409,8 +409,8 @@ bool ResourceMessageFilter::OnMessageReceived(const IPC::Message& msg) {
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_PreCacheFont, OnPreCacheFont)
|
| #endif
|
| IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_GetPlugins, OnGetPlugins)
|
| - IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_GetPluginInfo,
|
| - OnGetPluginInfo)
|
| + IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_GetPluginInfoArray,
|
| + OnGetPluginInfoArray)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_DownloadUrl, OnDownloadUrl)
|
| IPC_MESSAGE_HANDLER_GENERIC(ViewHostMsg_ContextMenu,
|
| OnReceiveContextMenuMsg(msg))
|
| @@ -762,10 +762,10 @@ void ResourceMessageFilter::OnGetPluginsOnFileThread(
|
| NewRunnableMethod(this, &ResourceMessageFilter::Send, reply_msg));
|
| }
|
|
|
| -void ResourceMessageFilter::OnGetPluginInfo(const GURL& url,
|
| - const GURL& policy_url,
|
| - const std::string& mime_type,
|
| - IPC::Message* reply_msg) {
|
| +void ResourceMessageFilter::OnGetPluginInfoArray(const GURL& url,
|
| + const GURL& policy_url,
|
| + const std::string& mime_type,
|
| + IPC::Message* reply_msg) {
|
| // The PluginList::GetPluginInfo may need to load the plugins. Don't do it
|
| // on the IO thread.
|
| BrowserThread::PostTask(
|
| @@ -780,37 +780,41 @@ void ResourceMessageFilter::OnGetPluginInfoOnFileThread(
|
| const GURL& policy_url,
|
| const std::string& mime_type,
|
| IPC::Message* reply_msg) {
|
| - WebPluginInfo info;
|
| - std::string actual_mime_type;
|
| + std::vector<WebPluginInfo> info;
|
| + std::vector<std::string> actual_mime_types;
|
| bool allow_wildcard = true;
|
| - bool found = NPAPI::PluginList::Singleton()->GetPluginInfo(
|
| - url, mime_type, allow_wildcard, &info, &actual_mime_type);
|
| + NPAPI::PluginList::Singleton()->GetPluginInfoArray(
|
| + url, mime_type, allow_wildcard, &info, &actual_mime_types);
|
| BrowserThread::PostTask(
|
| BrowserThread::IO, FROM_HERE,
|
| NewRunnableMethod(
|
| this, &ResourceMessageFilter::OnGotPluginInfo,
|
| - found, info, actual_mime_type, policy_url, reply_msg));
|
| -}
|
| -
|
| -void ResourceMessageFilter::OnGotPluginInfo(bool found,
|
| - WebPluginInfo info,
|
| - const std::string& actual_mime_type,
|
| - const GURL& policy_url,
|
| - IPC::Message* reply_msg) {
|
| - ContentSetting setting = CONTENT_SETTING_DEFAULT;
|
| - if (found) {
|
| - info.enabled = info.enabled &&
|
| - plugin_service_->PrivatePluginAllowedForURL(info.path, policy_url);
|
| + info, actual_mime_types, policy_url, reply_msg));
|
| +}
|
| +
|
| +void ResourceMessageFilter::OnGotPluginInfo(
|
| + std::vector<WebPluginInfo> info,
|
| + const std::vector<std::string>& actual_mime_types,
|
| + const GURL& policy_url,
|
| + IPC::Message* reply_msg) {
|
| + std::vector<ContentSetting> settings;
|
| + for (std::vector<WebPluginInfo>::iterator iter = info.begin();
|
| + iter != info.end(); ++iter) {
|
| + ContentSetting setting = CONTENT_SETTING_DEFAULT;
|
| + WebPluginInfo& item(*iter);
|
| + item.enabled = item.enabled &&
|
| + plugin_service_->PrivatePluginAllowedForURL(item.path, policy_url);
|
| HostContentSettingsMap* map = profile_->GetHostContentSettingsMap();
|
| - scoped_ptr<PluginGroup> group(PluginGroup::CopyOrCreatePluginGroup(info));
|
| + scoped_ptr<PluginGroup> group(PluginGroup::CopyOrCreatePluginGroup(item));
|
| std::string resource = group->identifier();
|
| setting = map->GetContentSetting(policy_url,
|
| CONTENT_SETTINGS_TYPE_PLUGINS,
|
| resource);
|
| + settings.push_back(setting);
|
| }
|
|
|
| - ViewHostMsg_GetPluginInfo::WriteReplyParams(
|
| - reply_msg, found, info, setting, actual_mime_type);
|
| + ViewHostMsg_GetPluginInfoArray::WriteReplyParams(
|
| + reply_msg, info, settings, actual_mime_types);
|
| Send(reply_msg);
|
| }
|
|
|
|
|