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 87ce2ae01d9d52d4e828973dd79aa5d70e5c16d1..92def35ac179459a90e16e00121884a1c5744e10 100644 |
--- a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
+++ b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
@@ -37,12 +37,17 @@ |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/notification_service.h" |
#include "content/public/browser/render_view_host.h" |
+#include "content/public/browser/render_view_host_delegate.h" |
+#include "content/public/browser/render_widget_host_view.h" |
#include "content/public/browser/resource_context.h" |
#include "content/public/browser/resource_dispatcher_host.h" |
#include "content/public/browser/resource_request_info.h" |
+#include "content/public/browser/web_contents.h" |
+#include "content/public/browser/web_contents_view.h" |
#include "net/base/load_flags.h" |
#include "net/base/ssl_config_service.h" |
#include "net/url_request/url_request.h" |
+#include "ui/gfx/size.h" |
#include "third_party/protobuf/src/google/protobuf/repeated_field.h" |
// TODO(oshima): Enable this for other platforms. |
@@ -57,6 +62,8 @@ using content::ResourceRequestInfo; |
namespace { |
+// TODO(gavinp): Remove this after https://bugs.webkit.org/show_bug.cgi?id=85005 |
+// lands in WebKit. |
void AddPrerenderOnUI( |
int render_process_id, int render_view_id, |
const GURL& url, const content::Referrer& referrer) { |
@@ -66,10 +73,19 @@ void AddPrerenderOnUI( |
if (!prerender_manager) |
return; |
- prerender_manager->AddPrerenderFromLinkRelPrerender(render_process_id, |
- render_view_id, |
- url, |
- referrer); |
+ RenderViewHost* render_view_host = |
+ RenderViewHost::FromID(render_process_id, render_view_id); |
+ if (!render_view_host) |
+ return; |
+ gfx::Rect tab_bounds; |
+ if (content::WebContents* source_wc = |
+ render_view_host->GetDelegate()->GetAsWebContents()) |
+ source_wc->GetView()->GetContainerBounds(&tab_bounds); |
+ gfx::Size view_size = tab_bounds.size(); |
+ if (view_size.IsEmpty()) |
+ view_size = prerender_manager->config().default_tab_bounds.size(); |
+ prerender_manager->AddPrerenderFromLinkRelPrerender( |
+ render_process_id, render_view_id, url, referrer, view_size); |
} |
void NotifyDownloadInitiatedOnUI(int render_process_id, int render_view_id) { |