Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(175)

Unified Diff: chrome/renderer/render_view.cc

Issue 3530017: This changes GetPluginInfo so that we can request a list of plugins (Closed)
Patch Set: Fixing indents Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/common/render_messages_internal.h ('k') | webkit/glue/plugins/plugin_list.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/render_view.cc
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index 0d9c1bfda056d65646000147194e325305d565c1..d137d621943547fc2ee904bdcd2f50b138ef2e85 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -565,21 +565,22 @@ void RenderView::PluginCrashed(const FilePath& plugin_path) {
WebPlugin* RenderView::CreatePluginNoCheck(WebFrame* frame,
const WebPluginParams& params) {
- WebPluginInfo info;
- bool found;
- ContentSetting setting;
- std::string mime_type;
- Send(new ViewHostMsg_GetPluginInfo(
- params.url, frame->top()->url(), params.mimeType.utf8(), &found,
- &info, &setting, &mime_type));
- if (!found || !info.enabled)
+ std::vector<WebPluginInfo> info;
+ std::vector<ContentSetting> settings;
+ std::vector<std::string> mime_types;
+ Send(new ViewHostMsg_GetPluginInfoArray(
+ params.url, frame->top()->url(), params.mimeType.utf8(),
+ &info, &settings, &mime_types));
+
+ // Select the first plugin returned, but only if it's enabled.
+ if (info.empty() || !info[0].enabled)
return NULL;
scoped_refptr<pepper::PluginModule> pepper_module =
- PepperPluginRegistry::GetInstance()->GetModule(info.path);
+ PepperPluginRegistry::GetInstance()->GetModule(info[0].path);
if (pepper_module)
- return CreatePepperPlugin(frame, params, info.path, pepper_module.get());
+ return CreatePepperPlugin(frame, params, info[0].path, pepper_module.get());
else
- return CreateNPAPIPlugin(frame, params, info.path, mime_type);
+ return CreateNPAPIPlugin(frame, params, info[0].path, mime_types[0]);
}
void RenderView::RegisterPluginDelegate(WebPluginDelegateProxy* delegate) {
@@ -2364,28 +2365,27 @@ void RenderView::runModal() {
WebPlugin* RenderView::createPlugin(WebFrame* frame,
const WebPluginParams& params) {
- bool found = false;
- ContentSetting setting = CONTENT_SETTING_DEFAULT;
+ std::vector<ContentSetting> settings;
CommandLine* cmd = CommandLine::ForCurrentProcess();
- WebPluginInfo info;
+ std::vector<WebPluginInfo> info;
GURL url(params.url);
- std::string actual_mime_type;
- Send(new ViewHostMsg_GetPluginInfo(url,
- frame->top()->url(),
- params.mimeType.utf8(),
- &found,
- &info,
- &setting,
- &actual_mime_type));
-
- if (!found)
+ std::vector<std::string> actual_mime_types;
+ Send(new ViewHostMsg_GetPluginInfoArray(url,
+ frame->top()->url(),
+ params.mimeType.utf8(),
+ &info,
+ &settings,
+ &actual_mime_types));
+
+ if (info.empty())
return NULL;
- DCHECK(setting != CONTENT_SETTING_DEFAULT);
- scoped_ptr<PluginGroup> group(PluginGroup::CopyOrCreatePluginGroup(info));
- group->AddPlugin(info, 0);
+ DCHECK(settings[0] != CONTENT_SETTING_DEFAULT);
- if (!info.enabled) {
+ scoped_ptr<PluginGroup> group(PluginGroup::CopyOrCreatePluginGroup(info[0]));
+ group->AddPlugin(info[0], 0);
+
+ if (!info[0].enabled) {
if (cmd->HasSwitch(switches::kDisableOutdatedPlugins) &&
group->IsVulnerable()) {
Send(new ViewHostMsg_DisabledOutdatedPlugin(routing_id_,
@@ -2396,17 +2396,17 @@ WebPlugin* RenderView::createPlugin(WebFrame* frame,
return NULL;
}
- if (info.path.value() == kDefaultPluginLibraryName ||
- setting == CONTENT_SETTING_ALLOW) {
+ if (info[0].path.value() == kDefaultPluginLibraryName ||
+ settings[0] == CONTENT_SETTING_ALLOW) {
scoped_refptr<pepper::PluginModule> pepper_module =
- PepperPluginRegistry::GetInstance()->GetModule(info.path);
+ PepperPluginRegistry::GetInstance()->GetModule(info[0].path);
if (pepper_module) {
return CreatePepperPlugin(frame,
params,
- info.path,
+ info[0].path,
pepper_module.get());
}
- return CreateNPAPIPlugin(frame, params, info.path, actual_mime_type);
+ return CreateNPAPIPlugin(frame, params, info[0].path, actual_mime_types[0]);
}
std::string resource;
if (cmd->HasSwitch(switches::kEnableResourceContentSettings))
@@ -2414,13 +2414,14 @@ WebPlugin* RenderView::createPlugin(WebFrame* frame,
DidBlockContentType(CONTENT_SETTINGS_TYPE_PLUGINS, resource);
int resource_id;
int message_id;
- if (setting == CONTENT_SETTING_ASK) {
+ if (settings[0] == CONTENT_SETTING_ASK) {
resource_id = IDR_BLOCKED_PLUGIN_HTML;
message_id = IDS_PLUGIN_LOAD;
} else {
resource_id = IDR_OUTDATED_PLUGIN_HTML;
message_id = IDS_PLUGIN_BLOCKED;
}
+
// |blocked_plugin| will delete itself when the WebViewPlugin
// is destroyed.
BlockedPlugin* blocked_plugin =
@@ -4050,12 +4051,8 @@ WebPlugin* RenderView::CreateNPAPIPlugin(WebFrame* frame,
const WebPluginParams& params,
const FilePath& path,
const std::string& mime_type) {
- std::string actual_mime_type(mime_type);
- if (actual_mime_type.empty())
- actual_mime_type = params.mimeType.utf8();
-
- return new webkit_glue::WebPluginImpl(frame, params, path,
- actual_mime_type, AsWeakPtr());
+ return new webkit_glue::WebPluginImpl(
+ frame, params, path, mime_type, AsWeakPtr());
}
WebPlugin* RenderView::CreateOutdatedPluginPlaceholder(
« no previous file with comments | « chrome/common/render_messages_internal.h ('k') | webkit/glue/plugins/plugin_list.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698