OLD | NEW |
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 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 #include "chrome/browser/ui/browser_finder.h" | 99 #include "chrome/browser/ui/browser_finder.h" |
100 #include "chrome/browser/ui/browser_instant_controller.h" | 100 #include "chrome/browser/ui/browser_instant_controller.h" |
101 #include "chrome/browser/ui/browser_iterator.h" | 101 #include "chrome/browser/ui/browser_iterator.h" |
102 #include "chrome/browser/ui/browser_list.h" | 102 #include "chrome/browser/ui/browser_list.h" |
103 #include "chrome/browser/ui/browser_navigator.h" | 103 #include "chrome/browser/ui/browser_navigator.h" |
104 #include "chrome/browser/ui/browser_tab_restore_service_delegate.h" | 104 #include "chrome/browser/ui/browser_tab_restore_service_delegate.h" |
105 #include "chrome/browser/ui/browser_tab_strip_model_delegate.h" | 105 #include "chrome/browser/ui/browser_tab_strip_model_delegate.h" |
106 #include "chrome/browser/ui/browser_tabstrip.h" | 106 #include "chrome/browser/ui/browser_tabstrip.h" |
107 #include "chrome/browser/ui/browser_toolbar_model_delegate.h" | 107 #include "chrome/browser/ui/browser_toolbar_model_delegate.h" |
108 #include "chrome/browser/ui/browser_ui_prefs.h" | 108 #include "chrome/browser/ui/browser_ui_prefs.h" |
| 109 #include "chrome/browser/ui/browser_util.h" |
109 #include "chrome/browser/ui/browser_window.h" | 110 #include "chrome/browser/ui/browser_window.h" |
110 #include "chrome/browser/ui/chrome_pages.h" | 111 #include "chrome/browser/ui/chrome_pages.h" |
111 #include "chrome/browser/ui/chrome_select_file_policy.h" | 112 #include "chrome/browser/ui/chrome_select_file_policy.h" |
112 #include "chrome/browser/ui/fast_unload_controller.h" | 113 #include "chrome/browser/ui/fast_unload_controller.h" |
113 #include "chrome/browser/ui/find_bar/find_bar.h" | 114 #include "chrome/browser/ui/find_bar/find_bar.h" |
114 #include "chrome/browser/ui/find_bar/find_bar_controller.h" | 115 #include "chrome/browser/ui/find_bar/find_bar_controller.h" |
115 #include "chrome/browser/ui/find_bar/find_tab_helper.h" | 116 #include "chrome/browser/ui/find_bar/find_tab_helper.h" |
116 #include "chrome/browser/ui/fullscreen/fullscreen_controller.h" | 117 #include "chrome/browser/ui/fullscreen/fullscreen_controller.h" |
117 #include "chrome/browser/ui/global_error/global_error.h" | 118 #include "chrome/browser/ui/global_error/global_error.h" |
118 #include "chrome/browser/ui/global_error/global_error_service.h" | 119 #include "chrome/browser/ui/global_error/global_error_service.h" |
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
570 base::string16 title; | 571 base::string16 title; |
571 | 572 |
572 // |contents| can be NULL because GetWindowTitleForCurrentTab is called by the | 573 // |contents| can be NULL because GetWindowTitleForCurrentTab is called by the |
573 // window during the window's creation (before tabs have been added). | 574 // window during the window's creation (before tabs have been added). |
574 if (contents) { | 575 if (contents) { |
575 // Streamlined hosted apps use the host instead of the title. | 576 // Streamlined hosted apps use the host instead of the title. |
576 if (is_app() && extensions::util::IsStreamlinedHostedAppsEnabled()) | 577 if (is_app() && extensions::util::IsStreamlinedHostedAppsEnabled()) |
577 return base::UTF8ToUTF16(contents->GetURL().host()); | 578 return base::UTF8ToUTF16(contents->GetURL().host()); |
578 | 579 |
579 title = contents->GetTitle(); | 580 title = contents->GetTitle(); |
580 FormatTitleForDisplay(&title); | 581 BrowserUtil::FormatTitleForDisplay(&title); |
581 } | 582 } |
582 if (title.empty()) | 583 if (title.empty()) |
583 title = CoreTabHelper::GetDefaultTitle(); | 584 title = CoreTabHelper::GetDefaultTitle(); |
584 | 585 |
585 #if defined(OS_MACOSX) | 586 #if defined(OS_MACOSX) |
586 // On Mac, we don't want to suffix the page title with | 587 // On Mac, we don't want to suffix the page title with |
587 // the application name. | 588 // the application name. |
588 return title; | 589 return title; |
589 #elif defined(USE_ASH) | 590 #elif defined(USE_ASH) |
590 // On Ash, we don't want to suffix the page title with the application name, | 591 // On Ash, we don't want to suffix the page title with the application name, |
591 // but on Windows, where USE_ASH can also be true, we still want the prefix | 592 // but on Windows, where USE_ASH can also be true, we still want the prefix |
592 // on desktop. | 593 // on desktop. |
593 if (host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) | 594 if (host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) |
594 return title; | 595 return title; |
595 #endif | 596 #endif |
596 // Don't append the app name to window titles on app frames and app popups | 597 // Don't append the app name to window titles on app frames and app popups |
597 return is_app() ? | 598 return is_app() ? |
598 title : | 599 title : |
599 l10n_util::GetStringFUTF16(IDS_BROWSER_WINDOW_TITLE_FORMAT, title); | 600 l10n_util::GetStringFUTF16(IDS_BROWSER_WINDOW_TITLE_FORMAT, title); |
600 } | 601 } |
601 | 602 |
602 // static | |
603 void Browser::FormatTitleForDisplay(base::string16* title) { | |
604 size_t current_index = 0; | |
605 size_t match_index; | |
606 while ((match_index = title->find(L'\n', current_index)) != | |
607 base::string16::npos) { | |
608 title->replace(match_index, 1, base::string16()); | |
609 current_index = match_index; | |
610 } | |
611 } | |
612 | |
613 /////////////////////////////////////////////////////////////////////////////// | 603 /////////////////////////////////////////////////////////////////////////////// |
614 // Browser, OnBeforeUnload handling: | 604 // Browser, OnBeforeUnload handling: |
615 | 605 |
616 bool Browser::ShouldCloseWindow() { | 606 bool Browser::ShouldCloseWindow() { |
617 if (!CanCloseWithInProgressDownloads()) | 607 if (!CanCloseWithInProgressDownloads()) |
618 return false; | 608 return false; |
619 | 609 |
620 if (IsFastTabUnloadEnabled()) | 610 if (IsFastTabUnloadEnabled()) |
621 return fast_unload_controller_->ShouldCloseWindow(); | 611 return fast_unload_controller_->ShouldCloseWindow(); |
622 return unload_controller_->ShouldCloseWindow(); | 612 return unload_controller_->ShouldCloseWindow(); |
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1120 // still present. | 1110 // still present. |
1121 base::MessageLoop::current()->PostTask( | 1111 base::MessageLoop::current()->PostTask( |
1122 FROM_HERE, base::Bind(&Browser::CloseFrame, weak_factory_.GetWeakPtr())); | 1112 FROM_HERE, base::Bind(&Browser::CloseFrame, weak_factory_.GetWeakPtr())); |
1123 | 1113 |
1124 // Instant may have visible WebContents that need to be detached before the | 1114 // Instant may have visible WebContents that need to be detached before the |
1125 // window system closes. | 1115 // window system closes. |
1126 instant_controller_.reset(); | 1116 instant_controller_.reset(); |
1127 } | 1117 } |
1128 | 1118 |
1129 bool Browser::CanOverscrollContent() const { | 1119 bool Browser::CanOverscrollContent() const { |
1130 #if defined(USE_AURA) | 1120 if (!BrowserUtil::IsOverscrollEnabledOnPlatform()) |
| 1121 return false; |
| 1122 |
1131 const std::string value = CommandLine::ForCurrentProcess()-> | 1123 const std::string value = CommandLine::ForCurrentProcess()-> |
1132 GetSwitchValueASCII(switches::kOverscrollHistoryNavigation); | 1124 GetSwitchValueASCII(switches::kOverscrollHistoryNavigation); |
1133 bool overscroll_enabled = value != "0"; | 1125 bool overscroll_enabled = value != "0"; |
1134 if (!overscroll_enabled) | 1126 if (!overscroll_enabled) |
1135 return false; | 1127 return false; |
1136 if (is_app() || is_devtools() || !is_type_tabbed()) | 1128 if (is_app() || is_devtools() || !is_type_tabbed()) |
1137 return false; | 1129 return false; |
1138 | 1130 |
1139 // The detached bookmark bar has appearance of floating above the | 1131 // The detached bookmark bar has appearance of floating above the |
1140 // web-contents. This does not play nicely with overscroll navigation | 1132 // web-contents. This does not play nicely with overscroll navigation |
1141 // gestures. So disable overscroll navigation when the bookmark bar is in the | 1133 // gestures. So disable overscroll navigation when the bookmark bar is in the |
1142 // detached state and the overscroll effect moves the layers. | 1134 // detached state and the overscroll effect moves the layers. |
1143 if (value == "1" && bookmark_bar_state_ == BookmarkBar::DETACHED) | 1135 if (value == "1" && bookmark_bar_state_ == BookmarkBar::DETACHED) |
1144 return false; | 1136 return false; |
1145 return true; | 1137 return true; |
1146 #else | |
1147 return false; | |
1148 #endif | |
1149 } | 1138 } |
1150 | 1139 |
1151 bool Browser::ShouldPreserveAbortedURLs(WebContents* source) { | 1140 bool Browser::ShouldPreserveAbortedURLs(WebContents* source) { |
1152 // Allow failed URLs to stick around in the omnibox on the NTP, but not when | 1141 // Allow failed URLs to stick around in the omnibox on the NTP, but not when |
1153 // other pages have committed. | 1142 // other pages have committed. |
1154 Profile* profile = Profile::FromBrowserContext(source->GetBrowserContext()); | 1143 Profile* profile = Profile::FromBrowserContext(source->GetBrowserContext()); |
1155 if (!profile || !source->GetController().GetLastCommittedEntry()) | 1144 if (!profile || !source->GetController().GetLastCommittedEntry()) |
1156 return false; | 1145 return false; |
1157 GURL committed_url(source->GetController().GetLastCommittedEntry()->GetURL()); | 1146 GURL committed_url(source->GetController().GetLastCommittedEntry()->GetURL()); |
1158 return chrome::IsNTPURL(committed_url, profile); | 1147 return chrome::IsNTPURL(committed_url, profile); |
(...skipping 1317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2476 if (contents && !allow_js_access) { | 2465 if (contents && !allow_js_access) { |
2477 contents->web_contents()->GetController().LoadURL( | 2466 contents->web_contents()->GetController().LoadURL( |
2478 target_url, | 2467 target_url, |
2479 content::Referrer(), | 2468 content::Referrer(), |
2480 ui::PAGE_TRANSITION_LINK, | 2469 ui::PAGE_TRANSITION_LINK, |
2481 std::string()); // No extra headers. | 2470 std::string()); // No extra headers. |
2482 } | 2471 } |
2483 | 2472 |
2484 return contents != NULL; | 2473 return contents != NULL; |
2485 } | 2474 } |
OLD | NEW |