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 "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/idle_timer.h" | 6 #include "base/idle_timer.h" |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "chrome/app/chrome_dll_resource.h" | 9 #include "chrome/app/chrome_dll_resource.h" |
10 #include "chrome/browser/browser_list.h" | 10 #include "chrome/browser/browser_list.h" |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 #include "chrome/browser/status_bubble.h" | 52 #include "chrome/browser/status_bubble.h" |
53 #include "chrome/browser/tab_contents/interstitial_page.h" | 53 #include "chrome/browser/tab_contents/interstitial_page.h" |
54 #include "chrome/browser/tab_contents/navigation_controller.h" | 54 #include "chrome/browser/tab_contents/navigation_controller.h" |
55 #include "chrome/browser/tab_contents/navigation_entry.h" | 55 #include "chrome/browser/tab_contents/navigation_entry.h" |
56 #include "chrome/browser/tab_contents/site_instance.h" | 56 #include "chrome/browser/tab_contents/site_instance.h" |
57 #include "chrome/browser/tab_contents/web_contents_view.h" | 57 #include "chrome/browser/tab_contents/web_contents_view.h" |
58 #include "chrome/browser/task_manager.h" | 58 #include "chrome/browser/task_manager.h" |
59 #include "chrome/browser/user_data_manager.h" | 59 #include "chrome/browser/user_data_manager.h" |
60 #include "chrome/browser/view_ids.h" | 60 #include "chrome/browser/view_ids.h" |
61 #include "chrome/browser/views/download_tab_view.h" | 61 #include "chrome/browser/views/download_tab_view.h" |
62 #include "chrome/browser/views/go_button.h" | |
63 #include "chrome/browser/views/location_bar_view.h" | 62 #include "chrome/browser/views/location_bar_view.h" |
64 #include "chrome/browser/views/new_profile_dialog.h" | 63 #include "chrome/browser/views/new_profile_dialog.h" |
65 #include "chrome/browser/views/select_profile_dialog.h" | 64 #include "chrome/browser/views/select_profile_dialog.h" |
66 #include "chrome/browser/views/toolbar_star_toggle.h" | |
67 #include "chrome/browser/window_sizer.h" | 65 #include "chrome/browser/window_sizer.h" |
68 #include "chrome/common/l10n_util.h" | 66 #include "chrome/common/l10n_util.h" |
69 #include "chrome/common/win_util.h" | 67 #include "chrome/common/win_util.h" |
70 | 68 |
71 #include "chromium_strings.h" | 69 #include "chromium_strings.h" |
72 #include "generated_resources.h" | 70 #include "generated_resources.h" |
73 | 71 |
74 #endif // OS_WIN | 72 #endif // OS_WIN |
75 | 73 |
76 using base::TimeDelta; | 74 using base::TimeDelta; |
(...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
725 } | 723 } |
726 | 724 |
727 void Browser::Exit() { | 725 void Browser::Exit() { |
728 UserMetrics::RecordAction(L"Exit", profile_); | 726 UserMetrics::RecordAction(L"Exit", profile_); |
729 BrowserList::CloseAllBrowsers(true); | 727 BrowserList::CloseAllBrowsers(true); |
730 } | 728 } |
731 | 729 |
732 void Browser::BookmarkCurrentPage() { | 730 void Browser::BookmarkCurrentPage() { |
733 UserMetrics::RecordAction(L"Star", profile_); | 731 UserMetrics::RecordAction(L"Star", profile_); |
734 | 732 |
735 TabContents* tab = GetSelectedTabContents(); | 733 TabContents* contents = GetSelectedTabContents(); |
736 if (!tab->AsWebContents()) | 734 BookmarkModel* model = contents->profile()->GetBookmarkModel(); |
737 return; | |
738 | |
739 WebContents* rvh = tab->AsWebContents(); | |
740 BookmarkModel* model = tab->profile()->GetBookmarkModel(); | |
741 if (!model || !model->IsLoaded()) | 735 if (!model || !model->IsLoaded()) |
742 return; // Ignore requests until bookmarks are loaded. | 736 return; // Ignore requests until bookmarks are loaded. |
743 | 737 |
744 NavigationEntry* entry = rvh->controller()->GetActiveEntry(); | 738 NavigationEntry* entry = contents->controller()->GetActiveEntry(); |
745 if (!entry) | 739 if (!entry) |
746 return; // Can't star if there is no URL. | 740 return; // Can't star if there is no URL. |
747 const GURL& url = entry->display_url(); | 741 const GURL& url = entry->display_url(); |
748 if (url.is_empty() || !url.is_valid()) | 742 if (url.is_empty() || !url.is_valid()) |
749 return; | 743 return; |
750 | 744 |
751 if (window_->GetStarButton()) { | 745 model->SetURLStarred(url, entry->title(), true); |
752 if (!window_->GetStarButton()->is_bubble_showing()) { | 746 if (!window_->IsBookmarkBubbleVisible()) |
753 const bool newly_bookmarked = !model->IsBookmarked(url); | 747 window_->ShowBookmarkBubble(url, model->IsBookmarked(url)); |
754 if (newly_bookmarked) { | |
755 model->SetURLStarred(url, entry->title(), true); | |
756 if (!model->IsBookmarked(url)) { | |
757 // Starring failed. This shouldn't happen. | |
758 NOTREACHED(); | |
759 return; | |
760 } | |
761 } | |
762 window_->GetStarButton()->ShowStarBubble(url, newly_bookmarked); | |
763 } | |
764 } else if (model->IsBookmarked(url)) { | |
765 // If we can't find the star button and the user wanted to unstar it, | |
766 // go ahead and unstar it without showing the bubble. | |
767 model->SetURLStarred(url, std::wstring(), false); | |
768 } | |
769 } | 748 } |
770 | 749 |
771 void Browser::ViewSource() { | 750 void Browser::ViewSource() { |
772 UserMetrics::RecordAction(L"ViewSource", profile_); | 751 UserMetrics::RecordAction(L"ViewSource", profile_); |
773 | 752 |
774 TabContents* current_tab = GetSelectedTabContents(); | 753 TabContents* current_tab = GetSelectedTabContents(); |
775 NavigationEntry* entry = current_tab->controller()->GetLastCommittedEntry(); | 754 NavigationEntry* entry = current_tab->controller()->GetLastCommittedEntry(); |
776 if (entry) { | 755 if (entry) { |
777 GURL url("view-source:" + entry->url().spec()); | 756 GURL url("view-source:" + entry->url().spec()); |
778 OpenURL(url, GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); | 757 OpenURL(url, GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); |
(...skipping 980 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1759 | 1738 |
1760 void Browser::ToolbarSizeChanged(TabContents* source, bool is_animating) { | 1739 void Browser::ToolbarSizeChanged(TabContents* source, bool is_animating) { |
1761 if (source == GetSelectedTabContents() || source == NULL) { | 1740 if (source == GetSelectedTabContents() || source == NULL) { |
1762 // This will refresh the shelf if needed. | 1741 // This will refresh the shelf if needed. |
1763 window_->SelectedTabToolbarSizeChanged(is_animating); | 1742 window_->SelectedTabToolbarSizeChanged(is_animating); |
1764 } | 1743 } |
1765 } | 1744 } |
1766 | 1745 |
1767 void Browser::URLStarredChanged(TabContents* source, bool starred) { | 1746 void Browser::URLStarredChanged(TabContents* source, bool starred) { |
1768 if (source == GetSelectedTabContents()) | 1747 if (source == GetSelectedTabContents()) |
1769 SetStarredButtonToggled(starred); | 1748 window_->SetStarredState(starred); |
1770 } | 1749 } |
1771 | 1750 |
1772 void Browser::ContentsMouseEvent(TabContents* source, UINT message) { | 1751 void Browser::ContentsMouseEvent(TabContents* source, UINT message) { |
1773 if (!GetStatusBubble()) | 1752 if (!GetStatusBubble()) |
1774 return; | 1753 return; |
1775 | 1754 |
1776 if (source == GetSelectedTabContents()) { | 1755 if (source == GetSelectedTabContents()) { |
1777 if (message == WM_MOUSEMOVE) { | 1756 if (message == WM_MOUSEMOVE) { |
1778 GetStatusBubble()->MouseMoved(); | 1757 GetStatusBubble()->MouseMoved(); |
1779 } else if (message == WM_MOUSELEAVE) { | 1758 } else if (message == WM_MOUSELEAVE) { |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2068 | 2047 |
2069 // Initialize commands available only for web content. | 2048 // Initialize commands available only for web content. |
2070 { | 2049 { |
2071 WebContents* web_contents = current_tab->AsWebContents(); | 2050 WebContents* web_contents = current_tab->AsWebContents(); |
2072 bool is_web_contents = web_contents != NULL; | 2051 bool is_web_contents = web_contents != NULL; |
2073 | 2052 |
2074 // Page-related commands | 2053 // Page-related commands |
2075 // Only allow bookmarking for tabbed browsers. | 2054 // Only allow bookmarking for tabbed browsers. |
2076 command_updater_.UpdateCommandEnabled(IDC_STAR, | 2055 command_updater_.UpdateCommandEnabled(IDC_STAR, |
2077 is_web_contents && (type() == TYPE_NORMAL)); | 2056 is_web_contents && (type() == TYPE_NORMAL)); |
2078 SetStarredButtonToggled(is_web_contents && web_contents->is_starred()); | 2057 window_->SetStarredState(is_web_contents && web_contents->is_starred()); |
2079 // View-source should not be enabled if already in view-source mode. | 2058 // View-source should not be enabled if already in view-source mode. |
2080 command_updater_.UpdateCommandEnabled(IDC_VIEW_SOURCE, | 2059 command_updater_.UpdateCommandEnabled(IDC_VIEW_SOURCE, |
2081 is_web_contents && (current_tab->type() != TAB_CONTENTS_VIEW_SOURCE) && | 2060 is_web_contents && (current_tab->type() != TAB_CONTENTS_VIEW_SOURCE) && |
2082 current_tab->controller()->GetActiveEntry()); | 2061 current_tab->controller()->GetActiveEntry()); |
2083 command_updater_.UpdateCommandEnabled(IDC_PRINT, is_web_contents); | 2062 command_updater_.UpdateCommandEnabled(IDC_PRINT, is_web_contents); |
2084 command_updater_.UpdateCommandEnabled(IDC_SAVE_PAGE, | 2063 command_updater_.UpdateCommandEnabled(IDC_SAVE_PAGE, |
2085 is_web_contents && SavePackage::IsSavableURL(current_tab->GetURL())); | 2064 is_web_contents && SavePackage::IsSavableURL(current_tab->GetURL())); |
2086 command_updater_.UpdateCommandEnabled(IDC_ENCODING_MENU, | 2065 command_updater_.UpdateCommandEnabled(IDC_ENCODING_MENU, |
2087 is_web_contents && | 2066 is_web_contents && |
2088 SavePackage::IsSavableContents(web_contents->contents_mime_type()) && | 2067 SavePackage::IsSavableContents(web_contents->contents_mime_type()) && |
(...skipping 11 matching lines...) Expand all Loading... |
2100 command_updater_.UpdateCommandEnabled(IDC_ZOOM_MINUS, is_web_contents); | 2079 command_updater_.UpdateCommandEnabled(IDC_ZOOM_MINUS, is_web_contents); |
2101 | 2080 |
2102 // Show various bits of UI | 2081 // Show various bits of UI |
2103 command_updater_.UpdateCommandEnabled(IDC_JS_CONSOLE, is_web_contents); | 2082 command_updater_.UpdateCommandEnabled(IDC_JS_CONSOLE, is_web_contents); |
2104 command_updater_.UpdateCommandEnabled(IDC_CREATE_SHORTCUTS, | 2083 command_updater_.UpdateCommandEnabled(IDC_CREATE_SHORTCUTS, |
2105 is_web_contents && !current_tab->GetFavIcon().isNull()); | 2084 is_web_contents && !current_tab->GetFavIcon().isNull()); |
2106 } | 2085 } |
2107 } | 2086 } |
2108 | 2087 |
2109 void Browser::UpdateStopGoState(bool is_loading) { | 2088 void Browser::UpdateStopGoState(bool is_loading) { |
2110 GoButton* go_button = GetGoButton(); | 2089 window_->UpdateStopGoState(is_loading); |
2111 if (go_button) | |
2112 go_button->ChangeMode(is_loading ? GoButton::MODE_STOP : GoButton::MODE_GO); | |
2113 command_updater_.UpdateCommandEnabled(IDC_GO, !is_loading); | 2090 command_updater_.UpdateCommandEnabled(IDC_GO, !is_loading); |
2114 command_updater_.UpdateCommandEnabled(IDC_STOP, is_loading); | 2091 command_updater_.UpdateCommandEnabled(IDC_STOP, is_loading); |
2115 } | 2092 } |
2116 | 2093 |
2117 void Browser::SetStarredButtonToggled(bool starred) { | |
2118 ToolbarStarToggle* star_button = window_->GetStarButton(); | |
2119 if (star_button) | |
2120 star_button->SetToggled(starred); | |
2121 } | |
2122 | |
2123 #if defined(OS_WIN) | 2094 #if defined(OS_WIN) |
2124 | 2095 |
2125 /////////////////////////////////////////////////////////////////////////////// | 2096 /////////////////////////////////////////////////////////////////////////////// |
2126 // Browser, UI update coalescing and handling (private): | 2097 // Browser, UI update coalescing and handling (private): |
2127 | 2098 |
2128 void Browser::UpdateToolbar(bool should_restore_state) { | 2099 void Browser::UpdateToolbar(bool should_restore_state) { |
2129 window_->UpdateToolbar(GetSelectedTabContents(), should_restore_state); | 2100 window_->UpdateToolbar(GetSelectedTabContents(), should_restore_state); |
2130 } | 2101 } |
2131 | 2102 |
2132 void Browser::ScheduleUIUpdate(const TabContents* source, | 2103 void Browser::ScheduleUIUpdate(const TabContents* source, |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2252 | 2223 |
2253 #endif // OS_WIN | 2224 #endif // OS_WIN |
2254 | 2225 |
2255 /////////////////////////////////////////////////////////////////////////////// | 2226 /////////////////////////////////////////////////////////////////////////////// |
2256 // Browser, Getters for UI (private): | 2227 // Browser, Getters for UI (private): |
2257 | 2228 |
2258 LocationBarView* Browser::GetLocationBarView() const { | 2229 LocationBarView* Browser::GetLocationBarView() const { |
2259 return window_->GetLocationBarView(); | 2230 return window_->GetLocationBarView(); |
2260 } | 2231 } |
2261 | 2232 |
2262 GoButton* Browser::GetGoButton() { | |
2263 return window_->GetGoButton(); | |
2264 } | |
2265 | |
2266 StatusBubble* Browser::GetStatusBubble() { | 2233 StatusBubble* Browser::GetStatusBubble() { |
2267 return window_->GetStatusBubble(); | 2234 return window_->GetStatusBubble(); |
2268 } | 2235 } |
2269 | 2236 |
2270 #if defined(OS_WIN) | 2237 #if defined(OS_WIN) |
2271 /////////////////////////////////////////////////////////////////////////////// | 2238 /////////////////////////////////////////////////////////////////////////////// |
2272 // Browser, Session restore functions (private): | 2239 // Browser, Session restore functions (private): |
2273 | 2240 |
2274 void Browser::SyncHistoryWithTabs(int index) { | 2241 void Browser::SyncHistoryWithTabs(int index) { |
2275 if (!profile()->HasSessionService()) | 2242 if (!profile()->HasSessionService()) |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2448 std::wstring window_pref(prefs::kBrowserWindowPlacement); | 2415 std::wstring window_pref(prefs::kBrowserWindowPlacement); |
2449 window_pref.append(L"_"); | 2416 window_pref.append(L"_"); |
2450 window_pref.append(app_name); | 2417 window_pref.append(app_name); |
2451 PrefService* prefs = g_browser_process->local_state(); | 2418 PrefService* prefs = g_browser_process->local_state(); |
2452 DCHECK(prefs); | 2419 DCHECK(prefs); |
2453 | 2420 |
2454 prefs->RegisterDictionaryPref(window_pref.c_str()); | 2421 prefs->RegisterDictionaryPref(window_pref.c_str()); |
2455 } | 2422 } |
2456 | 2423 |
2457 #endif // OS_WIN | 2424 #endif // OS_WIN |
OLD | NEW |