| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/tab_contents/render_view_host_delegate_helper.h" | 5 #include "chrome/browser/tab_contents/render_view_host_delegate_helper.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "chrome/browser/background/background_contents_service.h" | 10 #include "chrome/browser/background/background_contents_service.h" |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 // Passed all the checks, so this should be created as a BackgroundContents. | 133 // Passed all the checks, so this should be created as a BackgroundContents. |
| 134 return service->CreateBackgroundContents(site, route_id, profile, frame_name, | 134 return service->CreateBackgroundContents(site, route_id, profile, frame_name, |
| 135 ASCIIToUTF16(extension->id())); | 135 ASCIIToUTF16(extension->id())); |
| 136 } | 136 } |
| 137 | 137 |
| 138 TabContents* RenderViewHostDelegateViewHelper::CreateNewWindow( | 138 TabContents* RenderViewHostDelegateViewHelper::CreateNewWindow( |
| 139 int route_id, | 139 int route_id, |
| 140 Profile* profile, | 140 Profile* profile, |
| 141 SiteInstance* site, | 141 SiteInstance* site, |
| 142 WebUI::TypeID webui_type, | 142 WebUI::TypeID webui_type, |
| 143 RenderViewHostDelegate* opener, | 143 content::ContentFrame* opener, |
| 144 WindowContainerType window_container_type, | 144 WindowContainerType window_container_type, |
| 145 const string16& frame_name) { | 145 const string16& frame_name) { |
| 146 if (window_container_type == WINDOW_CONTAINER_TYPE_BACKGROUND) { | 146 if (window_container_type == WINDOW_CONTAINER_TYPE_BACKGROUND) { |
| 147 BackgroundContents* contents = MaybeCreateBackgroundContents( | 147 BackgroundContents* contents = MaybeCreateBackgroundContents( |
| 148 route_id, | 148 route_id, |
| 149 profile, | 149 profile, |
| 150 site, | 150 site, |
| 151 opener->GetURL(), | 151 opener->tab_contents().GetURL(), |
| 152 frame_name); | 152 frame_name); |
| 153 if (contents) { | 153 if (contents) { |
| 154 pending_contents_[route_id] = | 154 pending_contents_[route_id] = |
| 155 contents->tab_contents()->render_view_host(); | 155 contents->tab_contents()->render_view_host(); |
| 156 return NULL; | 156 return NULL; |
| 157 } | 157 } |
| 158 } | 158 } |
| 159 | 159 |
| 160 TabContents* base_tab_contents = opener->GetAsTabContents(); | 160 TabContents* base_tab_contents = &opener->tab_contents(); |
| 161 | 161 |
| 162 // Do not create the new TabContents if the opener is a prerender TabContents. | 162 // Do not create the new TabContents if the opener is a prerender TabContents. |
| 163 prerender::PrerenderManager* prerender_manager = | 163 prerender::PrerenderManager* prerender_manager = |
| 164 prerender::PrerenderManagerFactory::GetForProfile(profile); | 164 prerender::PrerenderManagerFactory::GetForProfile(profile); |
| 165 if (prerender_manager && | 165 if (prerender_manager && |
| 166 prerender_manager->IsTabContentsPrerendering(base_tab_contents)) { | 166 prerender_manager->IsTabContentsPrerendering(base_tab_contents)) { |
| 167 return NULL; | 167 return NULL; |
| 168 } | 168 } |
| 169 | 169 |
| 170 // Create the new web contents. This will automatically create the new | 170 // Create the new web contents. This will automatically create the new |
| 171 // TabContentsView. In the future, we may want to create the view separately. | 171 // TabContentsView. In the future, we may want to create the view separately. |
| 172 TabContents* new_contents = | 172 TabContents* new_contents = |
| 173 new TabContents(profile, | 173 new TabContents(profile, |
| 174 site, | 174 site, |
| 175 route_id, | 175 route_id, |
| 176 base_tab_contents, | 176 opener, |
| 177 NULL); | 177 NULL); |
| 178 new_contents->set_opener_web_ui_type(webui_type); | 178 new_contents->set_opener_web_ui_type(webui_type); |
| 179 TabContentsView* new_view = new_contents->view(); | 179 TabContentsView* new_view = new_contents->view(); |
| 180 | 180 |
| 181 // TODO(brettw) it seems bogus that we have to call this function on the | 181 // TODO(brettw) it seems bogus that we have to call this function on the |
| 182 // newly created object and give it one of its own member variables. | 182 // newly created object and give it one of its own member variables. |
| 183 new_view->CreateViewForWidget(new_contents->render_view_host()); | 183 new_view->CreateViewForWidget(new_contents->render_view_host()); |
| 184 | 184 |
| 185 // Save the created window associated with the route so we can show it later. | 185 // Save the created window associated with the route so we can show it later. |
| 186 pending_contents_[route_id] = new_contents->render_view_host(); | 186 pending_contents_[route_id] = new_contents->render_view_host(); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 248 | 248 |
| 249 RenderWidgetHost* widget_host = widget_host_view->GetRenderWidgetHost(); | 249 RenderWidgetHost* widget_host = widget_host_view->GetRenderWidgetHost(); |
| 250 if (!widget_host->process()->HasConnection()) { | 250 if (!widget_host->process()->HasConnection()) { |
| 251 // The view has gone away or the renderer crashed. Nothing to do. | 251 // The view has gone away or the renderer crashed. Nothing to do. |
| 252 return NULL; | 252 return NULL; |
| 253 } | 253 } |
| 254 | 254 |
| 255 return widget_host_view; | 255 return widget_host_view; |
| 256 } | 256 } |
| 257 | 257 |
| 258 TabContents* RenderViewHostDelegateViewHelper::CreateNewWindowFromTabContents( | 258 TabContents* RenderViewHostDelegateViewHelper::CreateNewWindowFromContentFrame( |
| 259 TabContents* tab_contents, | 259 content::ContentFrame* opener, |
| 260 int route_id, | 260 int route_id, |
| 261 const ViewHostMsg_CreateWindow_Params& params) { | 261 const ViewHostMsg_CreateWindow_Params& params) { |
| 262 TabContents* tab_contents = &opener->tab_contents(); |
| 262 TabContents* new_contents = CreateNewWindow( | 263 TabContents* new_contents = CreateNewWindow( |
| 263 route_id, | 264 route_id, |
| 264 Profile::FromBrowserContext(tab_contents->browser_context()), | 265 Profile::FromBrowserContext(tab_contents->browser_context()), |
| 265 tab_contents->GetSiteInstance(), | 266 tab_contents->GetSiteInstance(), |
| 266 tab_contents->GetWebUITypeForCurrentState(), | 267 tab_contents->GetWebUITypeForCurrentState(), |
| 267 tab_contents, | 268 opener, |
| 268 params.window_container_type, | 269 params.window_container_type, |
| 269 params.frame_name); | 270 params.frame_name); |
| 270 | 271 |
| 271 if (new_contents) { | 272 if (new_contents) { |
| 272 if (tab_contents->delegate()) | 273 if (tab_contents->delegate()) |
| 273 tab_contents->delegate()->TabContentsCreated(new_contents); | 274 tab_contents->delegate()->TabContentsCreated(new_contents); |
| 274 | 275 |
| 275 RetargetingDetails details; | 276 RetargetingDetails details; |
| 276 details.source_tab_contents = tab_contents; | 277 details.source_tab_contents = tab_contents; |
| 277 details.source_frame_id = params.opener_frame_id; | 278 details.source_frame_id = params.opener_frame_id; |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 590 DictionaryValue* inspector_settings = update.Get(); | 591 DictionaryValue* inspector_settings = update.Get(); |
| 591 inspector_settings->SetWithoutPathExpansion(key, | 592 inspector_settings->SetWithoutPathExpansion(key, |
| 592 Value::CreateStringValue(value)); | 593 Value::CreateStringValue(value)); |
| 593 } | 594 } |
| 594 | 595 |
| 595 void RenderViewHostDelegateHelper::ClearInspectorSettings( | 596 void RenderViewHostDelegateHelper::ClearInspectorSettings( |
| 596 content::BrowserContext* browser_context) { | 597 content::BrowserContext* browser_context) { |
| 597 Profile::FromBrowserContext(browser_context)->GetPrefs()-> | 598 Profile::FromBrowserContext(browser_context)->GetPrefs()-> |
| 598 ClearPref(prefs::kWebKitInspectorSettings); | 599 ClearPref(prefs::kWebKitInspectorSettings); |
| 599 } | 600 } |
| OLD | NEW |