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

Unified Diff: chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc

Issue 263513004: Forward MIME types to BrowserPlugin when a viewer is specified. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Code review fixes Created 6 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: chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
diff --git a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
index 819a3811e22463e099d0b0af08b6adf50e807980..723579ee80ffbce2297354a197107ff3e443def0 100644
--- a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
+++ b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
@@ -7,6 +7,7 @@
#include <string>
#include "base/base64.h"
+#include "base/guid.h"
#include "base/logging.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_notification_types.h"
@@ -155,25 +156,19 @@ void UpdatePrerenderNetworkBytesCallback(int render_process_id,
}
#if !defined(OS_ANDROID)
-// Goes through the extension's file browser handlers and checks if there is one
-// that can handle the |mime_type|.
-// |extension| must not be NULL.
-bool ExtensionCanHandleMimeType(const Extension* extension,
- const std::string& mime_type) {
- MimeTypesHandler* handler = MimeTypesHandler::GetHandler(extension);
- if (!handler)
- return false;
-
- return handler->CanHandleMIMEType(mime_type);
-}
-
void SendExecuteMimeTypeHandlerEvent(scoped_ptr<content::StreamHandle> stream,
int64 expected_content_size,
int render_process_id,
int render_view_id,
- const std::string& extension_id) {
+ const std::string& extension_id,
+ const std::string& view_id) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+ content::RenderViewHost* render_view_host =
+ content::RenderViewHost::FromID(render_process_id, render_view_id);
+ if (!render_view_host)
+ return;
+
content::WebContents* web_contents =
tab_util::GetWebContentsByID(render_process_id, render_view_id);
if (!web_contents)
@@ -195,7 +190,8 @@ void SendExecuteMimeTypeHandlerEvent(scoped_ptr<content::StreamHandle> stream,
if (!streams_private)
return;
streams_private->ExecuteMimeTypeHandler(
- extension_id, web_contents, stream.Pass(), expected_content_size);
+ extension_id, web_contents, stream.Pass(), view_id,
+ expected_content_size);
}
void LaunchURL(const GURL& url, int render_process_id, int render_view_id,
@@ -545,7 +541,9 @@ bool ChromeResourceDispatcherHostDelegate::ShouldInterceptResourceAsStream(
const GURL& url,
const std::string& mime_type,
GURL* origin,
- std::string* target_id) {
+ std::string* target_id,
+ std::string* payload,
+ std::string* view_id) {
#if !defined(OS_ANDROID)
ProfileIOData* io_data =
ProfileIOData::FromResourceContext(resource_context);
@@ -567,9 +565,14 @@ bool ChromeResourceDispatcherHostDelegate::ShouldInterceptResourceAsStream(
continue;
}
- if (ExtensionCanHandleMimeType(extension, mime_type)) {
+ MimeTypesHandler* handler = MimeTypesHandler::GetHandler(extension);
+ if (handler && handler->CanHandleMIMEType(mime_type)) {
*origin = Extension::GetBaseURLFromExtensionId(extension_id);
*target_id = extension_id;
+ if (!handler->handler_url().empty()) {
+ *view_id = base::GenerateGUID();
+ *payload = origin->spec() + handler->handler_url() + "?id=" + *view_id;
+ }
return true;
}
}
@@ -582,6 +585,7 @@ void ChromeResourceDispatcherHostDelegate::OnStreamCreated(
int render_process_id,
int render_view_id,
const std::string& target_id,
+ const std::string& view_id,
scoped_ptr<content::StreamHandle> stream,
int64 expected_content_size) {
#if !defined(OS_ANDROID)
@@ -589,7 +593,7 @@ void ChromeResourceDispatcherHostDelegate::OnStreamCreated(
content::BrowserThread::UI, FROM_HERE,
base::Bind(&SendExecuteMimeTypeHandlerEvent, base::Passed(&stream),
expected_content_size, render_process_id, render_view_id,
- target_id));
+ target_id, view_id));
#endif
}

Powered by Google App Engine
This is Rietveld 408576698