| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/tab_contents/tab_contents_view_helper.h" | 5 #include "content/browser/tab_contents/tab_contents_view_helper.h" |
| 6 | 6 |
| 7 #include "content/browser/renderer_host/render_view_host.h" | 7 #include "content/browser/renderer_host/render_view_host.h" |
| 8 #include "content/browser/renderer_host/render_widget_host.h" | 8 #include "content/browser/renderer_host/render_widget_host.h" |
| 9 #include "content/browser/renderer_host/render_widget_host_view.h" | 9 #include "content/browser/renderer_host/render_widget_host_view.h" |
| 10 #include "content/browser/tab_contents/tab_contents.h" | 10 #include "content/browser/tab_contents/tab_contents.h" |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 | 75 |
| 76 // Save the created window associated with the route so we can show it later. | 76 // Save the created window associated with the route so we can show it later. |
| 77 pending_contents_[route_id] = new_contents; | 77 pending_contents_[route_id] = new_contents; |
| 78 | 78 |
| 79 if (web_contents->GetDelegate()) | 79 if (web_contents->GetDelegate()) |
| 80 web_contents->GetDelegate()->WebContentsCreated(web_contents, | 80 web_contents->GetDelegate()->WebContentsCreated(web_contents, |
| 81 params.opener_frame_id, | 81 params.opener_frame_id, |
| 82 params.target_url, | 82 params.target_url, |
| 83 new_contents); | 83 new_contents); |
| 84 | 84 |
| 85 // TODO(brettw): It seems bogus to reach into here and initialize the host. |
| 86 new_contents->GetRenderViewHost()->Init(); |
| 85 return new_contents; | 87 return new_contents; |
| 86 } | 88 } |
| 87 | 89 |
| 88 RenderWidgetHostView* TabContentsViewHelper::CreateNewWidget( | 90 RenderWidgetHostView* TabContentsViewHelper::CreateNewWidget( |
| 89 WebContents* web_contents, | 91 WebContents* web_contents, |
| 90 int route_id, | 92 int route_id, |
| 91 bool is_fullscreen, | 93 bool is_fullscreen, |
| 92 WebKit::WebPopupType popup_type) { | 94 WebKit::WebPopupType popup_type) { |
| 93 content::RenderProcessHost* process = web_contents->GetRenderProcessHost(); | 95 content::RenderProcessHost* process = web_contents->GetRenderProcessHost(); |
| 94 RenderWidgetHost* widget_host = new RenderWidgetHost(process, route_id); | 96 RenderWidgetHost* widget_host = new RenderWidgetHost(process, route_id); |
| 95 RenderWidgetHostView* widget_view = | 97 RenderWidgetHostView* widget_view = |
| 96 RenderWidgetHostView::CreateViewForWidget(widget_host); | 98 RenderWidgetHostView::CreateViewForWidget(widget_host); |
| 97 if (!is_fullscreen) { | 99 if (!is_fullscreen) { |
| 98 // Popups should not get activated. | 100 // Popups should not get activated. |
| 99 widget_view->set_popup_type(popup_type); | 101 widget_view->set_popup_type(popup_type); |
| 100 } | 102 } |
| 101 // Save the created widget associated with the route so we can show it later. | 103 // Save the created widget associated with the route so we can show it later. |
| 102 pending_widget_views_[route_id] = widget_view; | 104 pending_widget_views_[route_id] = widget_view; |
| 105 |
| 106 // TODO(jamesr): Check if this is bogus. If it's not, remove the |
| 107 // pending_contents_ stuff. |
| 108 widget_host->Init(); |
| 103 return widget_view; | 109 return widget_view; |
| 104 } | 110 } |
| 105 | 111 |
| 106 TabContents* TabContentsViewHelper::GetCreatedWindow(int route_id) { | 112 TabContents* TabContentsViewHelper::GetCreatedWindow(int route_id) { |
| 107 PendingContents::iterator iter = pending_contents_.find(route_id); | 113 PendingContents::iterator iter = pending_contents_.find(route_id); |
| 108 | 114 |
| 109 // Certain systems can block the creation of new windows. If we didn't succeed | 115 // Certain systems can block the creation of new windows. If we didn't succeed |
| 110 // in creating one, just return NULL. | 116 // in creating one, just return NULL. |
| 111 if (iter == pending_contents_.end()) { | 117 if (iter == pending_contents_.end()) { |
| 112 return NULL; | 118 return NULL; |
| 113 } | 119 } |
| 114 | 120 |
| 115 TabContents* new_contents = iter->second; | 121 TabContents* new_contents = iter->second; |
| 116 pending_contents_.erase(route_id); | 122 pending_contents_.erase(route_id); |
| 117 | 123 |
| 118 if (!new_contents->GetRenderProcessHost()->HasConnection() || | 124 if (!new_contents->GetRenderProcessHost()->HasConnection() || |
| 119 !new_contents->GetRenderViewHost()->view()) | 125 !new_contents->GetRenderViewHost()->view()) |
| 120 return NULL; | 126 return NULL; |
| 121 | 127 |
| 122 // TODO(brettw): It seems bogus to reach into here and initialize the host. | |
| 123 new_contents->GetRenderViewHost()->Init(); | |
| 124 return new_contents; | 128 return new_contents; |
| 125 } | 129 } |
| 126 | 130 |
| 127 RenderWidgetHostView* TabContentsViewHelper::GetCreatedWidget(int route_id) { | 131 RenderWidgetHostView* TabContentsViewHelper::GetCreatedWidget(int route_id) { |
| 128 PendingWidgetViews::iterator iter = pending_widget_views_.find(route_id); | 132 PendingWidgetViews::iterator iter = pending_widget_views_.find(route_id); |
| 129 if (iter == pending_widget_views_.end()) { | 133 if (iter == pending_widget_views_.end()) { |
| 130 DCHECK(false); | 134 DCHECK(false); |
| 131 return NULL; | 135 return NULL; |
| 132 } | 136 } |
| 133 | 137 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 RenderWidgetHostView* widget_host_view = GetCreatedWidget(route_id); | 174 RenderWidgetHostView* widget_host_view = GetCreatedWidget(route_id); |
| 171 if (is_fullscreen) { | 175 if (is_fullscreen) { |
| 172 widget_host_view->InitAsFullscreen(web_contents->GetRenderWidgetHostView()); | 176 widget_host_view->InitAsFullscreen(web_contents->GetRenderWidgetHostView()); |
| 173 } else { | 177 } else { |
| 174 widget_host_view->InitAsPopup(web_contents->GetRenderWidgetHostView(), | 178 widget_host_view->InitAsPopup(web_contents->GetRenderWidgetHostView(), |
| 175 initial_pos); | 179 initial_pos); |
| 176 } | 180 } |
| 177 widget_host_view->GetRenderWidgetHost()->Init(); | 181 widget_host_view->GetRenderWidgetHost()->Init(); |
| 178 return widget_host_view; | 182 return widget_host_view; |
| 179 } | 183 } |
| OLD | NEW |