| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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/browser.h" | 5 #include "chrome/browser/browser.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/idle_timer.h" | 8 #include "base/idle_timer.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| (...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 704 | 704 |
| 705 void Browser::ConvertPopupToTabbedBrowser() { | 705 void Browser::ConvertPopupToTabbedBrowser() { |
| 706 UserMetrics::RecordAction(L"ShowAsTab", profile_); | 706 UserMetrics::RecordAction(L"ShowAsTab", profile_); |
| 707 int tab_strip_index = tabstrip_model_.selected_index(); | 707 int tab_strip_index = tabstrip_model_.selected_index(); |
| 708 TabContents* contents = tabstrip_model_.DetachTabContentsAt(tab_strip_index); | 708 TabContents* contents = tabstrip_model_.DetachTabContentsAt(tab_strip_index); |
| 709 Browser* browser = Browser::Create(profile_); | 709 Browser* browser = Browser::Create(profile_); |
| 710 browser->tabstrip_model()->AppendTabContents(contents, true); | 710 browser->tabstrip_model()->AppendTabContents(contents, true); |
| 711 browser->window()->Show(); | 711 browser->window()->Show(); |
| 712 } | 712 } |
| 713 | 713 |
| 714 void Browser::ToggleFullscreenMode() { |
| 715 UserMetrics::RecordAction(L"ToggleFullscreen", profile_); |
| 716 window_->SetFullscreen(!window_->IsFullscreen()); |
| 717 UpdateCommandsForFullscreenMode(window_->IsFullscreen()); |
| 718 } |
| 719 |
| 714 void Browser::Exit() { | 720 void Browser::Exit() { |
| 715 UserMetrics::RecordAction(L"Exit", profile_); | 721 UserMetrics::RecordAction(L"Exit", profile_); |
| 716 BrowserList::CloseAllBrowsers(true); | 722 BrowserList::CloseAllBrowsers(true); |
| 717 } | 723 } |
| 718 | 724 |
| 719 void Browser::BookmarkCurrentPage() { | 725 void Browser::BookmarkCurrentPage() { |
| 720 UserMetrics::RecordAction(L"Star", profile_); | 726 UserMetrics::RecordAction(L"Star", profile_); |
| 721 | 727 |
| 722 TabContents* contents = GetSelectedTabContents(); | 728 TabContents* contents = GetSelectedTabContents(); |
| 723 BookmarkModel* model = contents->profile()->GetBookmarkModel(); | 729 BookmarkModel* model = contents->profile()->GetBookmarkModel(); |
| (...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1096 case IDC_SELECT_TAB_3: | 1102 case IDC_SELECT_TAB_3: |
| 1097 case IDC_SELECT_TAB_4: | 1103 case IDC_SELECT_TAB_4: |
| 1098 case IDC_SELECT_TAB_5: | 1104 case IDC_SELECT_TAB_5: |
| 1099 case IDC_SELECT_TAB_6: | 1105 case IDC_SELECT_TAB_6: |
| 1100 case IDC_SELECT_TAB_7: SelectNumberedTab(id - IDC_SELECT_TAB_0); | 1106 case IDC_SELECT_TAB_7: SelectNumberedTab(id - IDC_SELECT_TAB_0); |
| 1101 break; | 1107 break; |
| 1102 case IDC_SELECT_LAST_TAB: SelectLastTab(); break; | 1108 case IDC_SELECT_LAST_TAB: SelectLastTab(); break; |
| 1103 case IDC_DUPLICATE_TAB: DuplicateTab(); break; | 1109 case IDC_DUPLICATE_TAB: DuplicateTab(); break; |
| 1104 case IDC_RESTORE_TAB: RestoreTab(); break; | 1110 case IDC_RESTORE_TAB: RestoreTab(); break; |
| 1105 case IDC_SHOW_AS_TAB: ConvertPopupToTabbedBrowser(); break; | 1111 case IDC_SHOW_AS_TAB: ConvertPopupToTabbedBrowser(); break; |
| 1112 case IDC_FULLSCREEN: ToggleFullscreenMode(); break; |
| 1106 case IDC_EXIT: Exit(); break; | 1113 case IDC_EXIT: Exit(); break; |
| 1107 | 1114 |
| 1108 // Page-related commands | 1115 // Page-related commands |
| 1109 case IDC_STAR: BookmarkCurrentPage(); break; | 1116 case IDC_STAR: BookmarkCurrentPage(); break; |
| 1110 case IDC_VIEW_SOURCE: ViewSource(); break; | 1117 case IDC_VIEW_SOURCE: ViewSource(); break; |
| 1111 #if defined(OS_WIN) | 1118 #if defined(OS_WIN) |
| 1112 case IDC_CLOSE_POPUPS: ClosePopups(); break; | 1119 case IDC_CLOSE_POPUPS: ClosePopups(); break; |
| 1113 case IDC_PRINT: Print(); break; | 1120 case IDC_PRINT: Print(); break; |
| 1114 case IDC_SAVE_PAGE: SavePage(); break; | 1121 case IDC_SAVE_PAGE: SavePage(); break; |
| 1115 case IDC_ENCODING_AUTO_DETECT: ToggleEncodingAutoDetect(); break; | 1122 case IDC_ENCODING_AUTO_DETECT: ToggleEncodingAutoDetect(); break; |
| (...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1926 command_updater_.UpdateCommandEnabled(IDC_NEW_WINDOW_PROFILE_3, true); | 1933 command_updater_.UpdateCommandEnabled(IDC_NEW_WINDOW_PROFILE_3, true); |
| 1927 command_updater_.UpdateCommandEnabled(IDC_NEW_WINDOW_PROFILE_4, true); | 1934 command_updater_.UpdateCommandEnabled(IDC_NEW_WINDOW_PROFILE_4, true); |
| 1928 command_updater_.UpdateCommandEnabled(IDC_NEW_WINDOW_PROFILE_5, true); | 1935 command_updater_.UpdateCommandEnabled(IDC_NEW_WINDOW_PROFILE_5, true); |
| 1929 command_updater_.UpdateCommandEnabled(IDC_NEW_WINDOW_PROFILE_6, true); | 1936 command_updater_.UpdateCommandEnabled(IDC_NEW_WINDOW_PROFILE_6, true); |
| 1930 command_updater_.UpdateCommandEnabled(IDC_NEW_WINDOW_PROFILE_7, true); | 1937 command_updater_.UpdateCommandEnabled(IDC_NEW_WINDOW_PROFILE_7, true); |
| 1931 command_updater_.UpdateCommandEnabled(IDC_NEW_WINDOW_PROFILE_8, true); | 1938 command_updater_.UpdateCommandEnabled(IDC_NEW_WINDOW_PROFILE_8, true); |
| 1932 command_updater_.UpdateCommandEnabled(IDC_CLOSE_WINDOW, true); | 1939 command_updater_.UpdateCommandEnabled(IDC_CLOSE_WINDOW, true); |
| 1933 command_updater_.UpdateCommandEnabled(IDC_NEW_TAB, true); | 1940 command_updater_.UpdateCommandEnabled(IDC_NEW_TAB, true); |
| 1934 command_updater_.UpdateCommandEnabled(IDC_CLOSE_TAB, true); | 1941 command_updater_.UpdateCommandEnabled(IDC_CLOSE_TAB, true); |
| 1935 command_updater_.UpdateCommandEnabled(IDC_DUPLICATE_TAB, true); | 1942 command_updater_.UpdateCommandEnabled(IDC_DUPLICATE_TAB, true); |
| 1943 command_updater_.UpdateCommandEnabled(IDC_FULLSCREEN, true); |
| 1936 command_updater_.UpdateCommandEnabled(IDC_EXIT, true); | 1944 command_updater_.UpdateCommandEnabled(IDC_EXIT, true); |
| 1937 | 1945 |
| 1938 // Page-related commands | 1946 // Page-related commands |
| 1939 command_updater_.UpdateCommandEnabled(IDC_CLOSE_POPUPS, true); | 1947 command_updater_.UpdateCommandEnabled(IDC_CLOSE_POPUPS, true); |
| 1940 command_updater_.UpdateCommandEnabled(IDC_ENCODING_AUTO_DETECT, true); | 1948 command_updater_.UpdateCommandEnabled(IDC_ENCODING_AUTO_DETECT, true); |
| 1941 command_updater_.UpdateCommandEnabled(IDC_ENCODING_UTF8, true); | 1949 command_updater_.UpdateCommandEnabled(IDC_ENCODING_UTF8, true); |
| 1942 command_updater_.UpdateCommandEnabled(IDC_ENCODING_UTF16LE, true); | 1950 command_updater_.UpdateCommandEnabled(IDC_ENCODING_UTF16LE, true); |
| 1943 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO88591, true); | 1951 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO88591, true); |
| 1944 command_updater_.UpdateCommandEnabled(IDC_ENCODING_WINDOWS1252, true); | 1952 command_updater_.UpdateCommandEnabled(IDC_ENCODING_WINDOWS1252, true); |
| 1945 command_updater_.UpdateCommandEnabled(IDC_ENCODING_GBK, true); | 1953 command_updater_.UpdateCommandEnabled(IDC_ENCODING_GBK, true); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1990 command_updater_.UpdateCommandEnabled(IDC_SHOW_BOOKMARK_MANAGER, true); | 1998 command_updater_.UpdateCommandEnabled(IDC_SHOW_BOOKMARK_MANAGER, true); |
| 1991 command_updater_.UpdateCommandEnabled(IDC_SHOW_DOWNLOADS, true); | 1999 command_updater_.UpdateCommandEnabled(IDC_SHOW_DOWNLOADS, true); |
| 1992 command_updater_.UpdateCommandEnabled(IDC_HELP_PAGE, true); | 2000 command_updater_.UpdateCommandEnabled(IDC_HELP_PAGE, true); |
| 1993 | 2001 |
| 1994 // Initialize other commands based on the window type. | 2002 // Initialize other commands based on the window type. |
| 1995 { | 2003 { |
| 1996 bool normal_window = type() == TYPE_NORMAL; | 2004 bool normal_window = type() == TYPE_NORMAL; |
| 1997 | 2005 |
| 1998 // Navigation commands | 2006 // Navigation commands |
| 1999 command_updater_.UpdateCommandEnabled(IDC_HOME, normal_window); | 2007 command_updater_.UpdateCommandEnabled(IDC_HOME, normal_window); |
| 2000 command_updater_.UpdateCommandEnabled(IDC_OPEN_CURRENT_URL, normal_window); | |
| 2001 | 2008 |
| 2002 // Window management commands | 2009 // Window management commands |
| 2003 command_updater_.UpdateCommandEnabled(IDC_PROFILE_MENU, normal_window); | |
| 2004 command_updater_.UpdateCommandEnabled(IDC_SELECT_NEXT_TAB, normal_window); | 2010 command_updater_.UpdateCommandEnabled(IDC_SELECT_NEXT_TAB, normal_window); |
| 2005 command_updater_.UpdateCommandEnabled(IDC_SELECT_PREVIOUS_TAB, | 2011 command_updater_.UpdateCommandEnabled(IDC_SELECT_PREVIOUS_TAB, |
| 2006 normal_window); | 2012 normal_window); |
| 2007 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_0, normal_window); | 2013 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_0, normal_window); |
| 2008 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_1, normal_window); | 2014 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_1, normal_window); |
| 2009 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_2, normal_window); | 2015 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_2, normal_window); |
| 2010 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_3, normal_window); | 2016 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_3, normal_window); |
| 2011 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_4, normal_window); | 2017 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_4, normal_window); |
| 2012 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_5, normal_window); | 2018 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_5, normal_window); |
| 2013 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_6, normal_window); | 2019 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_6, normal_window); |
| 2014 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_7, normal_window); | 2020 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_7, normal_window); |
| 2015 command_updater_.UpdateCommandEnabled(IDC_SELECT_LAST_TAB, normal_window); | 2021 command_updater_.UpdateCommandEnabled(IDC_SELECT_LAST_TAB, normal_window); |
| 2016 command_updater_.UpdateCommandEnabled(IDC_RESTORE_TAB, | 2022 command_updater_.UpdateCommandEnabled(IDC_RESTORE_TAB, |
| 2017 normal_window && !profile_->IsOffTheRecord()); | 2023 normal_window && !profile_->IsOffTheRecord()); |
| 2018 command_updater_.UpdateCommandEnabled(IDC_SHOW_AS_TAB, | 2024 } |
| 2019 (type() == TYPE_POPUP)); | |
| 2020 | 2025 |
| 2021 // Focus various bits of UI | 2026 // Initialize other commands whose state changes based on fullscreen mode. |
| 2022 command_updater_.UpdateCommandEnabled(IDC_FOCUS_TOOLBAR, normal_window); | 2027 UpdateCommandsForFullscreenMode(false); |
| 2023 command_updater_.UpdateCommandEnabled(IDC_FOCUS_LOCATION, normal_window); | |
| 2024 command_updater_.UpdateCommandEnabled(IDC_FOCUS_SEARCH, normal_window); | |
| 2025 | |
| 2026 // Show various bits of UI | |
| 2027 command_updater_.UpdateCommandEnabled(IDC_DEVELOPER_MENU, normal_window); | |
| 2028 #if defined(OS_WIN) | |
| 2029 command_updater_.UpdateCommandEnabled(IDC_DEBUGGER, | |
| 2030 // The debugger doesn't work in single process mode. | |
| 2031 normal_window && !RenderProcessHost::run_renderer_in_process()); | |
| 2032 #endif | |
| 2033 command_updater_.UpdateCommandEnabled(IDC_NEW_PROFILE, normal_window); | |
| 2034 command_updater_.UpdateCommandEnabled(IDC_REPORT_BUG, normal_window); | |
| 2035 command_updater_.UpdateCommandEnabled(IDC_SHOW_BOOKMARK_BAR, normal_window); | |
| 2036 command_updater_.UpdateCommandEnabled(IDC_CLEAR_BROWSING_DATA, | |
| 2037 normal_window); | |
| 2038 command_updater_.UpdateCommandEnabled(IDC_IMPORT_SETTINGS, normal_window); | |
| 2039 command_updater_.UpdateCommandEnabled(IDC_OPTIONS, normal_window); | |
| 2040 command_updater_.UpdateCommandEnabled(IDC_EDIT_SEARCH_ENGINES, | |
| 2041 normal_window); | |
| 2042 command_updater_.UpdateCommandEnabled(IDC_VIEW_PASSWORDS, normal_window); | |
| 2043 command_updater_.UpdateCommandEnabled(IDC_ABOUT, normal_window); | |
| 2044 } | |
| 2045 } | 2028 } |
| 2046 | 2029 |
| 2047 void Browser::UpdateCommandsForTabState() { | 2030 void Browser::UpdateCommandsForTabState() { |
| 2048 TabContents* current_tab = GetSelectedTabContents(); | 2031 TabContents* current_tab = GetSelectedTabContents(); |
| 2049 if (!current_tab) // May be NULL during tab restore. | 2032 if (!current_tab) // May be NULL during tab restore. |
| 2050 return; | 2033 return; |
| 2051 | 2034 |
| 2052 // Navigation commands | 2035 // Navigation commands |
| 2053 NavigationController* nc = current_tab->controller(); | 2036 NavigationController* nc = current_tab->controller(); |
| 2054 command_updater_.UpdateCommandEnabled(IDC_BACK, nc->CanGoBack()); | 2037 command_updater_.UpdateCommandEnabled(IDC_BACK, nc->CanGoBack()); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2091 command_updater_.UpdateCommandEnabled(IDC_ZOOM_NORMAL, is_web_contents); | 2074 command_updater_.UpdateCommandEnabled(IDC_ZOOM_NORMAL, is_web_contents); |
| 2092 command_updater_.UpdateCommandEnabled(IDC_ZOOM_MINUS, is_web_contents); | 2075 command_updater_.UpdateCommandEnabled(IDC_ZOOM_MINUS, is_web_contents); |
| 2093 | 2076 |
| 2094 // Show various bits of UI | 2077 // Show various bits of UI |
| 2095 command_updater_.UpdateCommandEnabled(IDC_JS_CONSOLE, is_web_contents); | 2078 command_updater_.UpdateCommandEnabled(IDC_JS_CONSOLE, is_web_contents); |
| 2096 command_updater_.UpdateCommandEnabled(IDC_CREATE_SHORTCUTS, | 2079 command_updater_.UpdateCommandEnabled(IDC_CREATE_SHORTCUTS, |
| 2097 is_web_contents && !current_tab->GetFavIcon().isNull()); | 2080 is_web_contents && !current_tab->GetFavIcon().isNull()); |
| 2098 } | 2081 } |
| 2099 } | 2082 } |
| 2100 | 2083 |
| 2084 void Browser::UpdateCommandsForFullscreenMode(bool is_fullscreen) { |
| 2085 const bool show_main_ui = (type() == TYPE_NORMAL) && !is_fullscreen; |
| 2086 |
| 2087 // Navigation commands |
| 2088 command_updater_.UpdateCommandEnabled(IDC_OPEN_CURRENT_URL, show_main_ui); |
| 2089 |
| 2090 // Window management commands |
| 2091 command_updater_.UpdateCommandEnabled(IDC_PROFILE_MENU, show_main_ui); |
| 2092 command_updater_.UpdateCommandEnabled(IDC_SHOW_AS_TAB, |
| 2093 (type() == TYPE_POPUP) && !is_fullscreen); |
| 2094 |
| 2095 // Focus various bits of UI |
| 2096 command_updater_.UpdateCommandEnabled(IDC_FOCUS_TOOLBAR, show_main_ui); |
| 2097 command_updater_.UpdateCommandEnabled(IDC_FOCUS_LOCATION, show_main_ui); |
| 2098 command_updater_.UpdateCommandEnabled(IDC_FOCUS_SEARCH, show_main_ui); |
| 2099 |
| 2100 // Show various bits of UI |
| 2101 command_updater_.UpdateCommandEnabled(IDC_DEVELOPER_MENU, show_main_ui); |
| 2102 #if defined(OS_WIN) |
| 2103 command_updater_.UpdateCommandEnabled(IDC_DEBUGGER, |
| 2104 // The debugger doesn't work in single process mode. |
| 2105 show_main_ui && !RenderProcessHost::run_renderer_in_process()); |
| 2106 #endif |
| 2107 command_updater_.UpdateCommandEnabled(IDC_NEW_PROFILE, show_main_ui); |
| 2108 command_updater_.UpdateCommandEnabled(IDC_REPORT_BUG, show_main_ui); |
| 2109 command_updater_.UpdateCommandEnabled(IDC_SHOW_BOOKMARK_BAR, show_main_ui); |
| 2110 command_updater_.UpdateCommandEnabled(IDC_CLEAR_BROWSING_DATA, show_main_ui); |
| 2111 command_updater_.UpdateCommandEnabled(IDC_IMPORT_SETTINGS, show_main_ui); |
| 2112 command_updater_.UpdateCommandEnabled(IDC_OPTIONS, show_main_ui); |
| 2113 command_updater_.UpdateCommandEnabled(IDC_EDIT_SEARCH_ENGINES, show_main_ui); |
| 2114 command_updater_.UpdateCommandEnabled(IDC_VIEW_PASSWORDS, show_main_ui); |
| 2115 command_updater_.UpdateCommandEnabled(IDC_ABOUT, show_main_ui); |
| 2116 } |
| 2117 |
| 2101 void Browser::UpdateStopGoState(bool is_loading) { | 2118 void Browser::UpdateStopGoState(bool is_loading) { |
| 2102 window_->UpdateStopGoState(is_loading); | 2119 window_->UpdateStopGoState(is_loading); |
| 2103 command_updater_.UpdateCommandEnabled(IDC_GO, !is_loading); | 2120 command_updater_.UpdateCommandEnabled(IDC_GO, !is_loading); |
| 2104 command_updater_.UpdateCommandEnabled(IDC_STOP, is_loading); | 2121 command_updater_.UpdateCommandEnabled(IDC_STOP, is_loading); |
| 2105 } | 2122 } |
| 2106 | 2123 |
| 2107 | 2124 |
| 2108 /////////////////////////////////////////////////////////////////////////////// | 2125 /////////////////////////////////////////////////////////////////////////////// |
| 2109 // Browser, UI update coalescing and handling (private): | 2126 // Browser, UI update coalescing and handling (private): |
| 2110 | 2127 |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2424 | 2441 |
| 2425 // We need to register the window position pref. | 2442 // We need to register the window position pref. |
| 2426 std::wstring window_pref(prefs::kBrowserWindowPlacement); | 2443 std::wstring window_pref(prefs::kBrowserWindowPlacement); |
| 2427 window_pref.append(L"_"); | 2444 window_pref.append(L"_"); |
| 2428 window_pref.append(app_name); | 2445 window_pref.append(app_name); |
| 2429 PrefService* prefs = g_browser_process->local_state(); | 2446 PrefService* prefs = g_browser_process->local_state(); |
| 2430 DCHECK(prefs); | 2447 DCHECK(prefs); |
| 2431 | 2448 |
| 2432 prefs->RegisterDictionaryPref(window_pref.c_str()); | 2449 prefs->RegisterDictionaryPref(window_pref.c_str()); |
| 2433 } | 2450 } |
| OLD | NEW |