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

Side by Side Diff: chrome/browser/ui/browser.cc

Issue 1303773002: Give the main frame a RenderWidget. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: plumb through surface ID *and* widget surface ID for window.open Created 5 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "chrome/browser/ui/browser.h" 5 #include "chrome/browser/ui/browser.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <windows.h> 8 #include <windows.h>
9 #include <shellapi.h> 9 #include <shellapi.h>
10 #endif // defined(OS_WIN) 10 #endif // defined(OS_WIN)
(...skipping 1612 matching lines...) Expand 10 before | Expand all | Expand 10 after
1623 chrome::ViewSource(this, source, frame_url, frame_page_state); 1623 chrome::ViewSource(this, source, frame_url, frame_page_state);
1624 } 1624 }
1625 1625
1626 void Browser::ShowRepostFormWarningDialog(WebContents* source) { 1626 void Browser::ShowRepostFormWarningDialog(WebContents* source) {
1627 TabModalConfirmDialog::Create(new RepostFormWarningController(source), 1627 TabModalConfirmDialog::Create(new RepostFormWarningController(source),
1628 source); 1628 source);
1629 } 1629 }
1630 1630
1631 bool Browser::ShouldCreateWebContents( 1631 bool Browser::ShouldCreateWebContents(
1632 WebContents* web_contents, 1632 WebContents* web_contents,
1633 int route_id, 1633 int32 route_id,
1634 int main_frame_route_id, 1634 int32 main_frame_route_id,
1635 int32 main_frame_widget_route_id,
1636 int32 surface_id,
1635 WindowContainerType window_container_type, 1637 WindowContainerType window_container_type,
1636 const std::string& frame_name, 1638 const std::string& frame_name,
1637 const GURL& target_url, 1639 const GURL& target_url,
1638 const std::string& partition_id, 1640 const std::string& partition_id,
1639 content::SessionStorageNamespace* session_storage_namespace) { 1641 content::SessionStorageNamespace* session_storage_namespace) {
1640 if (window_container_type == WINDOW_CONTAINER_TYPE_BACKGROUND) { 1642 if (window_container_type == WINDOW_CONTAINER_TYPE_BACKGROUND) {
1641 // If a BackgroundContents is created, suppress the normal WebContents. 1643 // If a BackgroundContents is created, suppress the normal WebContents.
1642 return !MaybeCreateBackgroundContents(route_id, 1644 return !MaybeCreateBackgroundContents(
1643 main_frame_route_id, 1645 route_id, main_frame_route_id, main_frame_widget_route_id, surface_id,
1644 web_contents, 1646 web_contents, frame_name, target_url, partition_id,
1645 frame_name, 1647 session_storage_namespace);
1646 target_url,
1647 partition_id,
1648 session_storage_namespace);
1649 } 1648 }
1650 1649
1651 return true; 1650 return true;
1652 } 1651 }
1653 1652
1654 void Browser::WebContentsCreated(WebContents* source_contents, 1653 void Browser::WebContentsCreated(WebContents* source_contents,
1655 int opener_render_frame_id, 1654 int opener_render_frame_id,
1656 const std::string& frame_name, 1655 const std::string& frame_name,
1657 const GURL& target_url, 1656 const GURL& target_url,
1658 WebContents* new_contents) { 1657 WebContents* new_contents) {
(...skipping 901 matching lines...) Expand 10 before | Expand all | Expand 10 after
2560 BookmarkBar::DONT_ANIMATE_STATE_CHANGE); 2559 BookmarkBar::DONT_ANIMATE_STATE_CHANGE);
2561 } 2560 }
2562 2561
2563 bool Browser::ShouldHideUIForFullscreen() const { 2562 bool Browser::ShouldHideUIForFullscreen() const {
2564 // Windows and GTK remove the top controls in fullscreen, but Mac and Ash 2563 // Windows and GTK remove the top controls in fullscreen, but Mac and Ash
2565 // keep the controls in a slide-down panel. 2564 // keep the controls in a slide-down panel.
2566 return window_ && window_->ShouldHideUIForFullscreen(); 2565 return window_ && window_->ShouldHideUIForFullscreen();
2567 } 2566 }
2568 2567
2569 bool Browser::MaybeCreateBackgroundContents( 2568 bool Browser::MaybeCreateBackgroundContents(
2570 int route_id, 2569 int32 route_id,
2571 int main_frame_route_id, 2570 int32 main_frame_route_id,
2571 int32 main_frame_widget_route_id,
2572 int32 surface_id,
2572 WebContents* opener_web_contents, 2573 WebContents* opener_web_contents,
2573 const std::string& frame_name, 2574 const std::string& frame_name,
2574 const GURL& target_url, 2575 const GURL& target_url,
2575 const std::string& partition_id, 2576 const std::string& partition_id,
2576 content::SessionStorageNamespace* session_storage_namespace) { 2577 content::SessionStorageNamespace* session_storage_namespace) {
2577 GURL opener_url = opener_web_contents->GetURL(); 2578 GURL opener_url = opener_web_contents->GetURL();
2578 ExtensionService* extensions_service = 2579 ExtensionService* extensions_service =
2579 extensions::ExtensionSystem::Get(profile_)->extension_service(); 2580 extensions::ExtensionSystem::Get(profile_)->extension_service();
2580 2581
2581 if (!opener_url.is_valid() || 2582 if (!opener_url.is_valid() ||
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2624 } 2625 }
2625 2626
2626 // If script access is not allowed, create the the background contents in a 2627 // If script access is not allowed, create the the background contents in a
2627 // new SiteInstance, so that a separate process is used. 2628 // new SiteInstance, so that a separate process is used.
2628 scoped_refptr<content::SiteInstance> site_instance = 2629 scoped_refptr<content::SiteInstance> site_instance =
2629 allow_js_access ? 2630 allow_js_access ?
2630 opener_site_instance : 2631 opener_site_instance :
2631 content::SiteInstance::Create(opener_web_contents->GetBrowserContext()); 2632 content::SiteInstance::Create(opener_web_contents->GetBrowserContext());
2632 2633
2633 // Passed all the checks, so this should be created as a BackgroundContents. 2634 // Passed all the checks, so this should be created as a BackgroundContents.
2634 BackgroundContents* contents = 2635 BackgroundContents* contents = service->CreateBackgroundContents(
2635 service->CreateBackgroundContents(site_instance.get(), 2636 site_instance.get(), route_id, main_frame_route_id,
2636 route_id, 2637 main_frame_widget_route_id, surface_id, profile_, frame_name,
2637 main_frame_route_id, 2638 base::ASCIIToUTF16(extension->id()), partition_id,
2638 profile_, 2639 session_storage_namespace);
2639 frame_name,
2640 base::ASCIIToUTF16(extension->id()),
2641 partition_id,
2642 session_storage_namespace);
2643 2640
2644 // When a separate process is used, the original renderer cannot access the 2641 // When a separate process is used, the original renderer cannot access the
2645 // new window later, thus we need to navigate the window now. 2642 // new window later, thus we need to navigate the window now.
2646 if (contents && !allow_js_access) { 2643 if (contents && !allow_js_access) {
2647 contents->web_contents()->GetController().LoadURL( 2644 contents->web_contents()->GetController().LoadURL(
2648 target_url, 2645 target_url,
2649 content::Referrer(), 2646 content::Referrer(),
2650 ui::PAGE_TRANSITION_LINK, 2647 ui::PAGE_TRANSITION_LINK,
2651 std::string()); // No extra headers. 2648 std::string()); // No extra headers.
2652 } 2649 }
2653 2650
2654 return contents != NULL; 2651 return contents != NULL;
2655 } 2652 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698