| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/renderer/render_view.h" | 5 #include "chrome/renderer/render_view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 2671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2682 params.mimeType.utf8(), | 2682 params.mimeType.utf8(), |
| 2683 &found, | 2683 &found, |
| 2684 &info, | 2684 &info, |
| 2685 &plugin_setting, | 2685 &plugin_setting, |
| 2686 &actual_mime_type)); | 2686 &actual_mime_type)); |
| 2687 | 2687 |
| 2688 if (!found) | 2688 if (!found) |
| 2689 return NULL; | 2689 return NULL; |
| 2690 DCHECK(plugin_setting != CONTENT_SETTING_DEFAULT); | 2690 DCHECK(plugin_setting != CONTENT_SETTING_DEFAULT); |
| 2691 | 2691 |
| 2692 scoped_ptr<PluginGroup> group(PluginGroup::CopyOrCreatePluginGroup(info)); | 2692 PluginGroup group = NPAPI::PluginList::Singleton()->GetPluginGroup(info); |
| 2693 group->AddPlugin(info, 0); | |
| 2694 | 2693 |
| 2695 if (!info.enabled) { | 2694 if (!info.enabled) { |
| 2696 if (cmd->HasSwitch(switches::kDisableOutdatedPlugins) && | 2695 if (cmd->HasSwitch(switches::kDisableOutdatedPlugins) && |
| 2697 group->IsVulnerable()) { | 2696 group.IsVulnerable()) { |
| 2698 Send(new ViewHostMsg_DisabledOutdatedPlugin(routing_id_, | 2697 Send(new ViewHostMsg_DisabledOutdatedPlugin(routing_id_, |
| 2699 group->GetGroupName(), | 2698 group.GetGroupName(), |
| 2700 GURL(group->GetUpdateURL()))); | 2699 GURL(group.GetUpdateURL()))); |
| 2701 return CreateOutdatedPluginPlaceholder(frame, params, group.get()); | 2700 return CreateOutdatedPluginPlaceholder(frame, params, group); |
| 2702 } | 2701 } |
| 2703 return NULL; | 2702 return NULL; |
| 2704 } | 2703 } |
| 2705 | 2704 |
| 2706 ContentSetting host_setting = | 2705 ContentSetting host_setting = |
| 2707 current_content_settings_.settings[CONTENT_SETTINGS_TYPE_PLUGINS]; | 2706 current_content_settings_.settings[CONTENT_SETTINGS_TYPE_PLUGINS]; |
| 2708 if (info.path.value() == kDefaultPluginLibraryName || | 2707 if (info.path.value() == kDefaultPluginLibraryName || |
| 2709 plugin_setting == CONTENT_SETTING_ALLOW || | 2708 plugin_setting == CONTENT_SETTING_ALLOW || |
| 2710 host_setting == CONTENT_SETTING_ALLOW) { | 2709 host_setting == CONTENT_SETTING_ALLOW) { |
| 2711 scoped_refptr<pepper::PluginModule> pepper_module; | 2710 scoped_refptr<pepper::PluginModule> pepper_module; |
| 2712 if (PepperPluginRegistry::GetInstance()->RunOutOfProcessForPlugin( | 2711 if (PepperPluginRegistry::GetInstance()->RunOutOfProcessForPlugin( |
| 2713 info.path)) { | 2712 info.path)) { |
| 2714 pepper_module = | 2713 pepper_module = |
| 2715 pepper_delegate_.CreateOutOfProcessPepperPlugin(info.path); | 2714 pepper_delegate_.CreateOutOfProcessPepperPlugin(info.path); |
| 2716 } else { | 2715 } else { |
| 2717 pepper_module = | 2716 pepper_module = |
| 2718 PepperPluginRegistry::GetInstance()->GetModule(info.path); | 2717 PepperPluginRegistry::GetInstance()->GetModule(info.path); |
| 2719 } | 2718 } |
| 2720 if (pepper_module) { | 2719 if (pepper_module) { |
| 2721 return CreatePepperPlugin(frame, | 2720 return CreatePepperPlugin(frame, |
| 2722 params, | 2721 params, |
| 2723 info.path, | 2722 info.path, |
| 2724 pepper_module.get()); | 2723 pepper_module.get()); |
| 2725 } | 2724 } |
| 2726 return CreateNPAPIPlugin(frame, params, info.path, actual_mime_type); | 2725 return CreateNPAPIPlugin(frame, params, info.path, actual_mime_type); |
| 2727 } | 2726 } |
| 2728 std::string resource; | 2727 std::string resource; |
| 2729 if (cmd->HasSwitch(switches::kEnableResourceContentSettings)) | 2728 if (cmd->HasSwitch(switches::kEnableResourceContentSettings)) |
| 2730 resource = group->identifier(); | 2729 resource = group.identifier(); |
| 2731 DidBlockContentType(CONTENT_SETTINGS_TYPE_PLUGINS, resource); | 2730 DidBlockContentType(CONTENT_SETTINGS_TYPE_PLUGINS, resource); |
| 2732 int resource_id; | 2731 int resource_id; |
| 2733 int message_id; | 2732 int message_id; |
| 2734 if (plugin_setting == CONTENT_SETTING_ASK) { | 2733 if (plugin_setting == CONTENT_SETTING_ASK) { |
| 2735 resource_id = IDR_BLOCKED_PLUGIN_HTML; | 2734 resource_id = IDR_BLOCKED_PLUGIN_HTML; |
| 2736 message_id = IDS_PLUGIN_LOAD; | 2735 message_id = IDS_PLUGIN_LOAD; |
| 2737 } else { | 2736 } else { |
| 2738 resource_id = IDR_OUTDATED_PLUGIN_HTML; | 2737 resource_id = IDR_OUTDATED_PLUGIN_HTML; |
| 2739 message_id = IDS_PLUGIN_BLOCKED; | 2738 message_id = IDS_PLUGIN_BLOCKED; |
| 2740 } | 2739 } |
| 2741 // |blocked_plugin| will delete itself when the WebViewPlugin | 2740 // |blocked_plugin| will delete itself when the WebViewPlugin |
| 2742 // is destroyed. | 2741 // is destroyed. |
| 2743 BlockedPlugin* blocked_plugin = | 2742 BlockedPlugin* blocked_plugin = |
| 2744 new BlockedPlugin(this, | 2743 new BlockedPlugin(this, |
| 2745 frame, | 2744 frame, |
| 2746 *group, | 2745 group, |
| 2747 params, | 2746 params, |
| 2748 webkit_preferences_, | 2747 webkit_preferences_, |
| 2749 resource_id, | 2748 resource_id, |
| 2750 l10n_util::GetStringUTF16(message_id)); | 2749 l10n_util::GetStringUTF16(message_id)); |
| 2751 return blocked_plugin->plugin(); | 2750 return blocked_plugin->plugin(); |
| 2752 } | 2751 } |
| 2753 | 2752 |
| 2754 WebWorker* RenderView::createWorker(WebFrame* frame, WebWorkerClient* client) { | 2753 WebWorker* RenderView::createWorker(WebFrame* frame, WebWorkerClient* client) { |
| 2755 WebApplicationCacheHostImpl* appcache_host = | 2754 WebApplicationCacheHostImpl* appcache_host = |
| 2756 WebApplicationCacheHostImpl::FromFrame(frame); | 2755 WebApplicationCacheHostImpl::FromFrame(frame); |
| (...skipping 1637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4394 const WebPluginParams& params, | 4393 const WebPluginParams& params, |
| 4395 const FilePath& path, | 4394 const FilePath& path, |
| 4396 const std::string& mime_type) { | 4395 const std::string& mime_type) { |
| 4397 return new webkit_glue::WebPluginImpl( | 4396 return new webkit_glue::WebPluginImpl( |
| 4398 frame, params, path, mime_type, AsWeakPtr()); | 4397 frame, params, path, mime_type, AsWeakPtr()); |
| 4399 } | 4398 } |
| 4400 | 4399 |
| 4401 WebPlugin* RenderView::CreateOutdatedPluginPlaceholder( | 4400 WebPlugin* RenderView::CreateOutdatedPluginPlaceholder( |
| 4402 WebFrame* frame, | 4401 WebFrame* frame, |
| 4403 const WebPluginParams& params, | 4402 const WebPluginParams& params, |
| 4404 PluginGroup* group) { | 4403 PluginGroup& group) { |
| 4405 int resource_id = IDR_OUTDATED_PLUGIN_HTML; | 4404 int resource_id = IDR_OUTDATED_PLUGIN_HTML; |
| 4406 const base::StringPiece template_html( | 4405 const base::StringPiece template_html( |
| 4407 ResourceBundle::GetSharedInstance().GetRawDataResource(resource_id)); | 4406 ResourceBundle::GetSharedInstance().GetRawDataResource(resource_id)); |
| 4408 | 4407 |
| 4409 DCHECK(!template_html.empty()) << "unable to load template. ID: " | 4408 DCHECK(!template_html.empty()) << "unable to load template. ID: " |
| 4410 << resource_id; | 4409 << resource_id; |
| 4411 | 4410 |
| 4412 DictionaryValue values; | 4411 DictionaryValue values; |
| 4413 values.SetString("message", | 4412 values.SetString("message", |
| 4414 l10n_util::GetStringFUTF8(IDS_PLUGIN_OUTDATED, group->GetGroupName())); | 4413 l10n_util::GetStringFUTF8(IDS_PLUGIN_OUTDATED, group.GetGroupName())); |
| 4415 values.Set("pluginGroup", group->GetDataForUI()); | 4414 values.Set("pluginGroup", group.GetDataForUI()); |
| 4416 | 4415 |
| 4417 // "t" is the id of the templates root node. | 4416 // "t" is the id of the templates root node. |
| 4418 std::string htmlData = jstemplate_builder::GetTemplatesHtml( | 4417 std::string htmlData = jstemplate_builder::GetTemplatesHtml( |
| 4419 template_html, &values, "t"); | 4418 template_html, &values, "t"); |
| 4420 | 4419 |
| 4421 return WebViewPlugin::Create(NULL, | 4420 return WebViewPlugin::Create(NULL, |
| 4422 webkit_preferences_, | 4421 webkit_preferences_, |
| 4423 htmlData, | 4422 htmlData, |
| 4424 GURL("chrome://outdatedplugin/")); | 4423 GURL("chrome://outdatedplugin/")); |
| 4425 } | 4424 } |
| (...skipping 1259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5685 external_popup_menu_.reset(); | 5684 external_popup_menu_.reset(); |
| 5686 } | 5685 } |
| 5687 #endif | 5686 #endif |
| 5688 | 5687 |
| 5689 void RenderView::AddErrorToRootConsole(const string16& message) { | 5688 void RenderView::AddErrorToRootConsole(const string16& message) { |
| 5690 if (webview() && webview()->mainFrame()) { | 5689 if (webview() && webview()->mainFrame()) { |
| 5691 webview()->mainFrame()->addMessageToConsole( | 5690 webview()->mainFrame()->addMessageToConsole( |
| 5692 WebConsoleMessage(WebConsoleMessage::LevelError, message)); | 5691 WebConsoleMessage(WebConsoleMessage::LevelError, message)); |
| 5693 } | 5692 } |
| 5694 } | 5693 } |
| OLD | NEW |