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

Unified Diff: chrome/renderer/chrome_content_renderer_client.cc

Issue 1126073003: Plugin Placeholders: Refactor for platforms that don't support plugins (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: The version that was reverted. Created 5 years, 7 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
Index: chrome/renderer/chrome_content_renderer_client.cc
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index 442a67065ac622e5bcebf9e827018685b208a27c..c5bdf1e7733b8387e4fe70daa3118ee70a7ece3d 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -40,7 +40,7 @@
#include "chrome/renderer/net_benchmarking_extension.h"
#include "chrome/renderer/page_load_histograms.h"
#include "chrome/renderer/pepper/pepper_helper.h"
-#include "chrome/renderer/plugins/chrome_plugin_placeholder.h"
+#include "chrome/renderer/plugins/non_loadable_plugin_placeholder.h"
#include "chrome/renderer/plugins/plugin_preroller.h"
#include "chrome/renderer/plugins/plugin_uma.h"
#include "chrome/renderer/plugins/shadow_dom_plugin_placeholder.h"
@@ -132,6 +132,10 @@
#include "chrome/common/external_ipc_dumper.h"
#endif
+#if defined(ENABLE_PLUGINS)
+#include "chrome/renderer/plugins/chrome_plugin_placeholder.h"
+#endif
+
#if defined(ENABLE_PRINTING)
#include "chrome/renderer/printing/chrome_print_web_view_helper_delegate.h"
#include "components/printing/renderer/print_web_view_helper.h"
@@ -196,6 +200,7 @@ const char* const kPredefinedAllowedCompositorOrigins[] = {
};
#endif
+#if defined(ENABLE_PLUGINS)
void AppendParams(const std::vector<base::string16>& additional_names,
const std::vector<base::string16>& additional_values,
WebVector<WebString>* existing_names,
@@ -223,26 +228,6 @@ void AppendParams(const std::vector<base::string16>& additional_names,
existing_values->swap(values);
}
-#if defined(ENABLE_SPELLCHECK)
-class SpellCheckReplacer : public content::RenderViewVisitor {
- public:
- explicit SpellCheckReplacer(SpellCheck* spellcheck)
- : spellcheck_(spellcheck) {}
- bool Visit(content::RenderView* render_view) override;
-
- private:
- SpellCheck* spellcheck_; // New shared spellcheck for all views. Weak Ptr.
- DISALLOW_COPY_AND_ASSIGN(SpellCheckReplacer);
-};
-
-bool SpellCheckReplacer::Visit(content::RenderView* render_view) {
- SpellCheckProvider* provider = SpellCheckProvider::Get(render_view);
- DCHECK(provider);
- provider->set_spellcheck(spellcheck_);
- return true;
-}
-#endif
-
// For certain sandboxed Pepper plugins, use the JavaScript Content Settings.
bool ShouldUseJavaScriptSettingForPlugin(const WebPluginInfo& plugin) {
if (plugin.type != WebPluginInfo::PLUGIN_TYPE_PEPPER_IN_PROCESS &&
@@ -266,6 +251,27 @@ bool ShouldUseJavaScriptSettingForPlugin(const WebPluginInfo& plugin) {
return false;
}
+#endif // defined(ENABLE_PLUGINS)
+
+#if defined(ENABLE_SPELLCHECK)
+class SpellCheckReplacer : public content::RenderViewVisitor {
+ public:
+ explicit SpellCheckReplacer(SpellCheck* spellcheck)
+ : spellcheck_(spellcheck) {}
+ bool Visit(content::RenderView* render_view) override;
+
+ private:
+ SpellCheck* spellcheck_; // New shared spellcheck for all views. Weak Ptr.
+ DISALLOW_COPY_AND_ASSIGN(SpellCheckReplacer);
+};
+
+bool SpellCheckReplacer::Visit(content::RenderView* render_view) {
+ SpellCheckProvider* provider = SpellCheckProvider::Get(render_view);
+ DCHECK(provider);
+ provider->set_spellcheck(spellcheck_);
+ return true;
+}
+#endif
#if defined(ENABLE_EXTENSIONS)
void IsGuestViewApiAvailableToScriptContext(
@@ -647,25 +653,39 @@ bool ChromeContentRendererClient::OverrideCreatePlugin(
}
#endif
- ChromeViewHostMsg_GetPluginInfo_Output output;
+ GURL url(params.url);
#if defined(ENABLE_PLUGINS)
+ ChromeViewHostMsg_GetPluginInfo_Output output;
render_frame->Send(new ChromeViewHostMsg_GetPluginInfo(
- render_frame->GetRoutingID(), GURL(params.url),
- frame->top()->document().url(), orig_mime_type, &output));
-
-#else
- output.status = ChromeViewHostMsg_GetPluginInfo_Status::kNotFound;
-#endif
+ render_frame->GetRoutingID(), url, frame->top()->document().url(),
+ orig_mime_type, &output));
*plugin = CreatePlugin(render_frame, frame, params, output);
+#else // !defined(ENABLE_PLUGINS)
+
+#if defined(OS_ANDROID)
+ if (plugins::MobileYouTubePlugin::IsYouTubeURL(url, orig_mime_type)) {
+ base::StringPiece template_html(
+ ResourceBundle::GetSharedInstance().GetRawDataResource(
+ IDR_MOBILE_YOUTUBE_PLUGIN_HTML));
+ *plugin = (new plugins::MobileYouTubePlugin(render_frame, frame, params,
+ template_html))->plugin();
+ return true;
+ }
+#endif // defined(OS_ANDROID)
+
+ PluginUMAReporter::GetInstance()->ReportPluginMissing(orig_mime_type, url);
+ *plugin = NonLoadablePluginPlaceholder::CreateNotSupportedPlugin(
+ render_frame, frame, params)->plugin();
+
+#endif // defined(ENABLE_PLUGINS)
return true;
}
WebPlugin* ChromeContentRendererClient::CreatePluginReplacement(
content::RenderFrame* render_frame,
const base::FilePath& plugin_path) {
- ChromePluginPlaceholder* placeholder =
- ChromePluginPlaceholder::CreateErrorPlugin(render_frame, plugin_path);
- return placeholder->plugin();
+ return NonLoadablePluginPlaceholder::CreateErrorPlugin(render_frame,
+ plugin_path)->plugin();
}
void ChromeContentRendererClient::DeferMediaLoad(
@@ -686,6 +706,7 @@ void ChromeContentRendererClient::DeferMediaLoad(
#endif
}
+#if defined(ENABLE_PLUGINS)
WebPlugin* ChromeContentRendererClient::CreatePlugin(
content::RenderFrame* render_frame,
blink::WebLocalFrame* frame,
@@ -705,22 +726,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
// OverrideCreatePlugin.
if (status == ChromeViewHostMsg_GetPluginInfo_Status::kNotFound ||
orig_mime_type == content::kBrowserPluginMimeType) {
-#if defined(OS_ANDROID)
- if (plugins::MobileYouTubePlugin::IsYouTubeURL(url, orig_mime_type)) {
- base::StringPiece template_html(
- ResourceBundle::GetSharedInstance().GetRawDataResource(
- IDR_MOBILE_YOUTUBE_PLUGIN_HTML));
- return (new plugins::MobileYouTubePlugin(
- render_frame,
- frame,
- original_params,
- template_html,
- GURL(ChromePluginPlaceholder::kPluginPlaceholderDataURL)))
- ->plugin();
- }
-#endif
PluginUMAReporter::GetInstance()->ReportPluginMissing(orig_mime_type, url);
- placeholder = ChromePluginPlaceholder::CreateMissingPlugin(
+ placeholder = ChromePluginPlaceholder::CreateLoadableMissingPlugin(
render_frame, frame, original_params);
} else {
// TODO(bauerb): This should be in content/.
@@ -843,7 +850,6 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
}
#endif // !defined(DISABLE_NACL) && defined(ENABLE_EXTENSIONS)
-#if defined(ENABLE_PLUGINS)
// Delay loading plugins if prerendering.
// TODO(mmenke): In the case of prerendering, feed into
// ChromeContentRendererClient::CreatePlugin instead, to
@@ -878,7 +884,6 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
blocked_for_background_tab);
placeholder->set_blocked_for_prerendering(is_prerendering);
placeholder->set_power_saver_enabled(power_saver_enabled);
- placeholder->set_allow_loading(true);
break;
}
@@ -894,9 +899,6 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
return render_frame->CreatePlugin(frame, info, params,
throttler.Pass());
-#else // !defined(ENABLE_PLUGINS)
- return render_frame->CreatePlugin(frame, info, params, nullptr);
-#endif // defined(ENABLE_PLUGINS)
}
case ChromeViewHostMsg_GetPluginInfo_Status::kNPAPINotSupported: {
RenderThread::Get()->RecordAction(
@@ -921,7 +923,6 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
placeholder = create_blocked_plugin(
IDR_BLOCKED_PLUGIN_HTML,
l10n_util::GetStringFUTF16(IDS_PLUGIN_OUTDATED, group_name));
- placeholder->set_allow_loading(true);
render_frame->Send(new ChromeViewHostMsg_BlockedOutdatedPlugin(
render_frame->GetRoutingID(), placeholder->CreateRoutingId(),
identifier));
@@ -940,7 +941,6 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
placeholder = create_blocked_plugin(
IDR_BLOCKED_PLUGIN_HTML,
l10n_util::GetStringFUTF16(IDS_PLUGIN_NOT_AUTHORIZED, group_name));
- placeholder->set_allow_loading(true);
if (info.type != content::WebPluginInfo::PLUGIN_TYPE_NPAPI) {
render_frame->Send(new ChromeViewHostMsg_BlockedUnauthorizedPlugin(
render_frame->GetRoutingID(),
@@ -954,7 +954,6 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
placeholder = create_blocked_plugin(
IDR_BLOCKED_PLUGIN_HTML,
l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED, group_name));
- placeholder->set_allow_loading(true);
RenderThread::Get()->RecordAction(UserMetricsAction("Plugin_Blocked"));
observer->DidBlockContentType(content_type, group_name);
break;
@@ -964,7 +963,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
IDR_BLOCKED_PLUGIN_HTML,
l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED_BY_POLICY,
group_name));
- placeholder->set_allow_loading(false);
+ placeholder->DisallowLoading();
RenderThread::Get()->RecordAction(
UserMetricsAction("Plugin_BlockedByPolicy"));
observer->DidBlockContentType(content_type, group_name);
@@ -975,6 +974,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
placeholder->SetStatus(status);
return placeholder->plugin();
}
+#endif // defined(ENABLE_PLUGINS)
// For NaCl content handling plugins, the NaCl manifest is stored in an
// additonal 'nacl' param associated with the MIME type.
« no previous file with comments | « chrome/renderer/chrome_content_renderer_client.h ('k') | chrome/renderer/plugins/chrome_plugin_placeholder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698