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

Unified Diff: content/browser/loader/buffered_resource_handler.cc

Issue 1081013002: Revert of Ensuring interception of stream get determined by plugin path before checking mime type. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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: content/browser/loader/buffered_resource_handler.cc
diff --git a/content/browser/loader/buffered_resource_handler.cc b/content/browser/loader/buffered_resource_handler.cc
index 83881562db5b3cddc5f67733b3556f8d4c5b5473..67e74a586f5231d3290ee813674357ce1d43bc7a 100644
--- a/content/browser/loader/buffered_resource_handler.cc
+++ b/content/browser/loader/buffered_resource_handler.cc
@@ -297,58 +297,6 @@
return made_final_decision;
}
-bool BufferedResourceHandler::IsHandledByPlugin(bool* defer,
- bool* request_handled) {
-#if defined(ENABLE_PLUGINS)
- bool stale;
- WebPluginInfo plugin;
- bool allow_wildcard = false;
- ResourceRequestInfoImpl* info = GetRequestInfo();
- bool has_plugin = plugin_service_->GetPluginInfo(
- info->GetChildID(), info->GetRenderFrameID(), info->GetContext(),
- request()->url(), GURL(), response_->head.mime_type, allow_wildcard,
- &stale, &plugin, NULL);
-
- if (stale) {
- // Refresh the plugins asynchronously.
- plugin_service_->GetPlugins(
- base::Bind(&BufferedResourceHandler::OnPluginsLoaded,
- weak_ptr_factory_.GetWeakPtr()));
- request()->LogBlockedBy("BufferedResourceHandler");
- *defer = true;
- return true;
- }
-
- if (has_plugin) {
- if (plugin.type == WebPluginInfo::PLUGIN_TYPE_BROWSER_PLUGIN) {
- // If it is a MimeHandlerView plugin, intercept the stream.
- std::string payload;
- scoped_ptr<ResourceHandler> handler(host_->MaybeInterceptAsStream(
- plugin.path, request(), response_.get(), &payload));
- if (handler) {
- *request_handled = UseAlternateNextHandler(handler.Pass(), payload);
- return true;
- }
- return false;
- } else {
- return true;
- }
- }
-
- // If execution reaches here then we should try intercepting the stream for
- // the old streamsPrivate extensions API. This API is deprecated and should
- // go away.
- std::string payload;
- scoped_ptr<ResourceHandler> handler(host_->MaybeInterceptAsStream(
- base::FilePath(), request(), response_.get(), &payload));
- if (handler) {
- *request_handled = UseAlternateNextHandler(handler.Pass(), payload);
- return true;
- }
-#endif
- return false;
-}
-
bool BufferedResourceHandler::SelectNextHandler(bool* defer) {
DCHECK(!response_->head.mime_type.empty());
@@ -366,13 +314,13 @@
// Allow requests for object/embed tags to be intercepted as streams.
if (info->GetResourceType() == content::RESOURCE_TYPE_OBJECT) {
DCHECK(!info->allow_download());
-
- bool request_handled = true;
- bool handled_by_plugin = IsHandledByPlugin(defer, &request_handled);
- if (!request_handled)
- return false;
- if (handled_by_plugin)
- return true;
+ std::string payload;
+ scoped_ptr<ResourceHandler> handler(
+ host_->MaybeInterceptAsStream(request(), response_.get(), &payload));
+ if (handler) {
+ DCHECK(!net::IsSupportedMimeType(mime_type));
+ return UseAlternateNextHandler(handler.Pass(), payload);
+ }
}
if (!info->allow_download())
@@ -389,12 +337,28 @@
if (net::IsSupportedMimeType(mime_type))
return true;
- bool request_handled = true;
- bool handled_by_plugin = IsHandledByPlugin(defer, &request_handled);
- if (!request_handled)
- return false;
- if (handled_by_plugin)
+ std::string payload;
+ scoped_ptr<ResourceHandler> handler(
+ host_->MaybeInterceptAsStream(request(), response_.get(), &payload));
+ if (handler) {
+ return UseAlternateNextHandler(handler.Pass(), payload);
+ }
+
+#if defined(ENABLE_PLUGINS)
+ bool stale;
+ bool has_plugin = HasSupportingPlugin(&stale);
+ if (stale) {
+ // Refresh the plugins asynchronously.
+ plugin_service_->GetPlugins(
+ base::Bind(&BufferedResourceHandler::OnPluginsLoaded,
+ weak_ptr_factory_.GetWeakPtr()));
+ request()->LogBlockedBy("BufferedResourceHandler");
+ *defer = true;
return true;
+ }
+ if (has_plugin)
+ return true;
+#endif
}
// Install download handler
@@ -511,6 +475,23 @@
return must_download_;
}
+bool BufferedResourceHandler::HasSupportingPlugin(bool* stale) {
+#if defined(ENABLE_PLUGINS)
+ ResourceRequestInfoImpl* info = GetRequestInfo();
+
+ bool allow_wildcard = false;
+ WebPluginInfo plugin;
+ return plugin_service_->GetPluginInfo(
+ info->GetChildID(), info->GetRenderFrameID(), info->GetContext(),
+ request()->url(), GURL(), response_->head.mime_type, allow_wildcard,
+ stale, &plugin, NULL);
+#else
+ if (stale)
+ *stale = false;
+ return false;
+#endif
+}
+
bool BufferedResourceHandler::CopyReadBufferToNextHandler() {
if (!read_buffer_.get())
return true;
« no previous file with comments | « content/browser/loader/buffered_resource_handler.h ('k') | content/browser/loader/buffered_resource_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698