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

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: Fix merge conflicts Created 5 years, 2 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 1638 matching lines...) Expand 10 before | Expand all | Expand 10 after
1649 chrome::ViewSource(this, source, frame_url, frame_page_state); 1649 chrome::ViewSource(this, source, frame_url, frame_page_state);
1650 } 1650 }
1651 1651
1652 void Browser::ShowRepostFormWarningDialog(WebContents* source) { 1652 void Browser::ShowRepostFormWarningDialog(WebContents* source) {
1653 TabModalConfirmDialog::Create(new RepostFormWarningController(source), 1653 TabModalConfirmDialog::Create(new RepostFormWarningController(source),
1654 source); 1654 source);
1655 } 1655 }
1656 1656
1657 bool Browser::ShouldCreateWebContents( 1657 bool Browser::ShouldCreateWebContents(
1658 WebContents* web_contents, 1658 WebContents* web_contents,
1659 int route_id, 1659 int32_t route_id,
1660 int main_frame_route_id, 1660 int32_t main_frame_route_id,
1661 int32_t main_frame_widget_route_id,
1661 WindowContainerType window_container_type, 1662 WindowContainerType window_container_type,
1662 const std::string& frame_name, 1663 const std::string& frame_name,
1663 const GURL& target_url, 1664 const GURL& target_url,
1664 const std::string& partition_id, 1665 const std::string& partition_id,
1665 content::SessionStorageNamespace* session_storage_namespace) { 1666 content::SessionStorageNamespace* session_storage_namespace) {
1666 if (window_container_type == WINDOW_CONTAINER_TYPE_BACKGROUND) { 1667 if (window_container_type == WINDOW_CONTAINER_TYPE_BACKGROUND) {
1667 // If a BackgroundContents is created, suppress the normal WebContents. 1668 // If a BackgroundContents is created, suppress the normal WebContents.
1668 return !MaybeCreateBackgroundContents(route_id, 1669 return !MaybeCreateBackgroundContents(
1669 main_frame_route_id, 1670 route_id, main_frame_route_id, main_frame_widget_route_id, web_contents,
1670 web_contents, 1671 frame_name, target_url, partition_id, session_storage_namespace);
1671 frame_name,
1672 target_url,
1673 partition_id,
1674 session_storage_namespace);
1675 } 1672 }
1676 1673
1677 return true; 1674 return true;
1678 } 1675 }
1679 1676
1680 void Browser::WebContentsCreated(WebContents* source_contents, 1677 void Browser::WebContentsCreated(WebContents* source_contents,
1681 int opener_render_frame_id, 1678 int opener_render_frame_id,
1682 const std::string& frame_name, 1679 const std::string& frame_name,
1683 const GURL& target_url, 1680 const GURL& target_url,
1684 WebContents* new_contents) { 1681 WebContents* new_contents) {
(...skipping 928 matching lines...) Expand 10 before | Expand all | Expand 10 after
2613 // environment is still active. 2610 // environment is still active.
2614 if (host_desktop_type() == chrome::HOST_DESKTOP_TYPE_NATIVE) 2611 if (host_desktop_type() == chrome::HOST_DESKTOP_TYPE_NATIVE)
2615 return !ash::Shell::HasInstance(); 2612 return !ash::Shell::HasInstance();
2616 if (host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) 2613 if (host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH)
2617 return BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_NATIVE)->empty(); 2614 return BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_NATIVE)->empty();
2618 #endif 2615 #endif
2619 return true; 2616 return true;
2620 } 2617 }
2621 2618
2622 bool Browser::MaybeCreateBackgroundContents( 2619 bool Browser::MaybeCreateBackgroundContents(
2623 int route_id, 2620 int32_t route_id,
2624 int main_frame_route_id, 2621 int32_t main_frame_route_id,
2622 int32_t main_frame_widget_route_id,
2625 WebContents* opener_web_contents, 2623 WebContents* opener_web_contents,
2626 const std::string& frame_name, 2624 const std::string& frame_name,
2627 const GURL& target_url, 2625 const GURL& target_url,
2628 const std::string& partition_id, 2626 const std::string& partition_id,
2629 content::SessionStorageNamespace* session_storage_namespace) { 2627 content::SessionStorageNamespace* session_storage_namespace) {
2630 GURL opener_url = opener_web_contents->GetURL(); 2628 GURL opener_url = opener_web_contents->GetURL();
2631 ExtensionService* extensions_service = 2629 ExtensionService* extensions_service =
2632 extensions::ExtensionSystem::Get(profile_)->extension_service(); 2630 extensions::ExtensionSystem::Get(profile_)->extension_service();
2633 2631
2634 if (!opener_url.is_valid() || 2632 if (!opener_url.is_valid() ||
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2677 } 2675 }
2678 2676
2679 // If script access is not allowed, create the the background contents in a 2677 // If script access is not allowed, create the the background contents in a
2680 // new SiteInstance, so that a separate process is used. 2678 // new SiteInstance, so that a separate process is used.
2681 scoped_refptr<content::SiteInstance> site_instance = 2679 scoped_refptr<content::SiteInstance> site_instance =
2682 allow_js_access ? 2680 allow_js_access ?
2683 opener_site_instance : 2681 opener_site_instance :
2684 content::SiteInstance::Create(opener_web_contents->GetBrowserContext()); 2682 content::SiteInstance::Create(opener_web_contents->GetBrowserContext());
2685 2683
2686 // Passed all the checks, so this should be created as a BackgroundContents. 2684 // Passed all the checks, so this should be created as a BackgroundContents.
2687 BackgroundContents* contents = 2685 BackgroundContents* contents = service->CreateBackgroundContents(
2688 service->CreateBackgroundContents(site_instance.get(), 2686 site_instance.get(), route_id, main_frame_route_id,
2689 route_id, 2687 main_frame_widget_route_id, profile_, frame_name,
2690 main_frame_route_id, 2688 base::ASCIIToUTF16(extension->id()), partition_id,
2691 profile_, 2689 session_storage_namespace);
2692 frame_name,
2693 base::ASCIIToUTF16(extension->id()),
2694 partition_id,
2695 session_storage_namespace);
2696 2690
2697 // When a separate process is used, the original renderer cannot access the 2691 // When a separate process is used, the original renderer cannot access the
2698 // new window later, thus we need to navigate the window now. 2692 // new window later, thus we need to navigate the window now.
2699 if (contents && !allow_js_access) { 2693 if (contents && !allow_js_access) {
2700 contents->web_contents()->GetController().LoadURL( 2694 contents->web_contents()->GetController().LoadURL(
2701 target_url, 2695 target_url,
2702 content::Referrer(), 2696 content::Referrer(),
2703 ui::PAGE_TRANSITION_LINK, 2697 ui::PAGE_TRANSITION_LINK,
2704 std::string()); // No extra headers. 2698 std::string()); // No extra headers.
2705 } 2699 }
2706 2700
2707 return contents != NULL; 2701 return contents != NULL;
2708 } 2702 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698