OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 <shellapi.h> | 8 #include <shellapi.h> |
9 #include <windows.h> | 9 #include <windows.h> |
10 #endif // OS_WIN | 10 #endif // OS_WIN |
(...skipping 1019 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1030 bool Browser::NavigateToIndexWithDisposition(int index, | 1030 bool Browser::NavigateToIndexWithDisposition(int index, |
1031 WindowOpenDisposition disp) { | 1031 WindowOpenDisposition disp) { |
1032 NavigationController& controller = | 1032 NavigationController& controller = |
1033 GetOrCloneTabForDisposition(disp)->controller(); | 1033 GetOrCloneTabForDisposition(disp)->controller(); |
1034 if (index < 0 || index >= controller.entry_count()) | 1034 if (index < 0 || index >= controller.entry_count()) |
1035 return false; | 1035 return false; |
1036 controller.GoToIndex(index); | 1036 controller.GoToIndex(index); |
1037 return true; | 1037 return true; |
1038 } | 1038 } |
1039 | 1039 |
1040 void Browser::ShowSingletonTab(const GURL& url) { | 1040 void Browser::ShowSingletonTab(const GURL& url, bool ignore_path) { |
1041 browser::NavigateParams params(this, url, PageTransition::AUTO_BOOKMARK); | 1041 browser::NavigateParams params(this, url, PageTransition::AUTO_BOOKMARK); |
1042 params.disposition = SINGLETON_TAB; | 1042 params.disposition = SINGLETON_TAB; |
1043 params.show_window = true; | 1043 params.show_window = true; |
| 1044 params.ignore_path = ignore_path; |
1044 browser::Navigate(¶ms); | 1045 browser::Navigate(¶ms); |
1045 } | 1046 } |
1046 | 1047 |
1047 void Browser::UpdateCommandsForFullscreenMode(bool is_fullscreen) { | 1048 void Browser::UpdateCommandsForFullscreenMode(bool is_fullscreen) { |
1048 #if !defined(OS_MACOSX) | 1049 #if !defined(OS_MACOSX) |
1049 const bool show_main_ui = (type() == TYPE_NORMAL) && !is_fullscreen; | 1050 const bool show_main_ui = (type() == TYPE_NORMAL) && !is_fullscreen; |
1050 #else | 1051 #else |
1051 const bool show_main_ui = (type() == TYPE_NORMAL); | 1052 const bool show_main_ui = (type() == TYPE_NORMAL); |
1052 #endif | 1053 #endif |
1053 | 1054 |
(...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1714 ShowBookmarkManagerTab(); | 1715 ShowBookmarkManagerTab(); |
1715 } | 1716 } |
1716 | 1717 |
1717 void Browser::ShowAppMenu() { | 1718 void Browser::ShowAppMenu() { |
1718 UserMetrics::RecordAction(UserMetricsAction("ShowAppMenu"), profile_); | 1719 UserMetrics::RecordAction(UserMetricsAction("ShowAppMenu"), profile_); |
1719 window_->ShowAppMenu(); | 1720 window_->ShowAppMenu(); |
1720 } | 1721 } |
1721 | 1722 |
1722 void Browser::ShowBookmarkManagerTab() { | 1723 void Browser::ShowBookmarkManagerTab() { |
1723 UserMetrics::RecordAction(UserMetricsAction("ShowBookmarks"), profile_); | 1724 UserMetrics::RecordAction(UserMetricsAction("ShowBookmarks"), profile_); |
1724 ShowSingletonTab(GURL(chrome::kChromeUIBookmarksURL)); | 1725 ShowSingletonTab(GURL(chrome::kChromeUIBookmarksURL), false); |
1725 } | 1726 } |
1726 | 1727 |
1727 void Browser::ShowHistoryTab() { | 1728 void Browser::ShowHistoryTab() { |
1728 UserMetrics::RecordAction(UserMetricsAction("ShowHistory"), profile_); | 1729 UserMetrics::RecordAction(UserMetricsAction("ShowHistory"), profile_); |
1729 ShowSingletonTab(GURL(chrome::kChromeUIHistoryURL)); | 1730 ShowSingletonTab(GURL(chrome::kChromeUIHistoryURL), false); |
1730 } | 1731 } |
1731 | 1732 |
1732 void Browser::ShowDownloadsTab() { | 1733 void Browser::ShowDownloadsTab() { |
1733 UserMetrics::RecordAction(UserMetricsAction("ShowDownloads"), profile_); | 1734 UserMetrics::RecordAction(UserMetricsAction("ShowDownloads"), profile_); |
1734 ShowSingletonTab(GURL(chrome::kChromeUIDownloadsURL)); | 1735 ShowSingletonTab(GURL(chrome::kChromeUIDownloadsURL), false); |
1735 } | 1736 } |
1736 | 1737 |
1737 void Browser::ShowExtensionsTab() { | 1738 void Browser::ShowExtensionsTab() { |
1738 UserMetrics::RecordAction(UserMetricsAction("ShowExtensions"), profile_); | 1739 UserMetrics::RecordAction(UserMetricsAction("ShowExtensions"), profile_); |
1739 ShowSingletonTab(GURL(chrome::kChromeUIExtensionsURL)); | 1740 ShowSingletonTab(GURL(chrome::kChromeUIExtensionsURL), false); |
1740 } | 1741 } |
1741 | 1742 |
1742 void Browser::ShowAboutConflictsTab() { | 1743 void Browser::ShowAboutConflictsTab() { |
1743 UserMetrics::RecordAction(UserMetricsAction("AboutConflicts"), profile_); | 1744 UserMetrics::RecordAction(UserMetricsAction("AboutConflicts"), profile_); |
1744 ShowSingletonTab(GURL(chrome::kChromeUIConflictsURL)); | 1745 ShowSingletonTab(GURL(chrome::kChromeUIConflictsURL), false); |
1745 } | 1746 } |
1746 | 1747 |
1747 void Browser::ShowBrokenPageTab(TabContents* contents) { | 1748 void Browser::ShowBrokenPageTab(TabContents* contents) { |
1748 UserMetrics::RecordAction(UserMetricsAction("ReportBug"), profile_); | 1749 UserMetrics::RecordAction(UserMetricsAction("ReportBug"), profile_); |
1749 string16 page_title = contents->GetTitle(); | 1750 string16 page_title = contents->GetTitle(); |
1750 NavigationEntry* entry = contents->controller().GetActiveEntry(); | 1751 NavigationEntry* entry = contents->controller().GetActiveEntry(); |
1751 if (!entry) | 1752 if (!entry) |
1752 return; | 1753 return; |
1753 std::string page_url = entry->url().spec(); | 1754 std::string page_url = entry->url().spec(); |
1754 std::vector<std::string> subst; | 1755 std::vector<std::string> subst; |
1755 subst.push_back(UTF16ToASCII(page_title)); | 1756 subst.push_back(UTF16ToASCII(page_title)); |
1756 subst.push_back(page_url); | 1757 subst.push_back(page_url); |
1757 std::string report_page_url = | 1758 std::string report_page_url = |
1758 ReplaceStringPlaceholders(kBrokenPageUrl, subst, NULL); | 1759 ReplaceStringPlaceholders(kBrokenPageUrl, subst, NULL); |
1759 ShowSingletonTab(GURL(report_page_url)); | 1760 ShowSingletonTab(GURL(report_page_url), false); |
1760 } | 1761 } |
1761 | 1762 |
1762 void Browser::ShowOptionsTab(const std::string& sub_page) { | 1763 void Browser::ShowOptionsTab(const std::string& sub_page) { |
1763 GURL url(chrome::kChromeUISettingsURL + sub_page); | 1764 GURL url(chrome::kChromeUISettingsURL + sub_page); |
1764 | 1765 ShowSingletonTab(url, true); |
1765 // See if there is already an options tab open that we can use. | |
1766 TabStripModel* model = tab_handler_->GetTabStripModel(); | |
1767 for (int i = 0; i < model->count(); i++) { | |
1768 TabContents* tc = model->GetTabContentsAt(i); | |
1769 const GURL& tab_url = tc->GetURL(); | |
1770 | |
1771 if (tab_url.scheme() == url.scheme() && tab_url.host() == url.host()) { | |
1772 // We found an existing options tab, load the URL in this tab. (Note: | |
1773 // this may cause us to unnecessarily reload the same page. We can't | |
1774 // really detect that unless the options page is permitted to change the | |
1775 // URL in the address bar, but security policy doesn't allow that. | |
1776 browser::NavigateParams params(this, url, PageTransition::GENERATED); | |
1777 params.source_contents = tc; | |
1778 browser::Navigate(¶ms); | |
1779 model->SelectTabContentsAt(i, false); | |
1780 return; | |
1781 } | |
1782 } | |
1783 | |
1784 // No options tab found, so create a new one. | |
1785 AddSelectedTabWithURL(url, PageTransition::AUTO_BOOKMARK); | |
1786 } | 1766 } |
1787 | 1767 |
1788 void Browser::OpenClearBrowsingDataDialog() { | 1768 void Browser::OpenClearBrowsingDataDialog() { |
1789 UserMetrics::RecordAction(UserMetricsAction("ClearBrowsingData_ShowDlg"), | 1769 UserMetrics::RecordAction(UserMetricsAction("ClearBrowsingData_ShowDlg"), |
1790 profile_); | 1770 profile_); |
1791 if (CommandLine::ForCurrentProcess()->HasSwitch( | 1771 if (CommandLine::ForCurrentProcess()->HasSwitch( |
1792 switches::kEnableTabbedOptions)) { | 1772 switches::kEnableTabbedOptions)) { |
1793 ShowOptionsTab( | 1773 ShowOptionsTab( |
1794 chrome::kAdvancedOptionsSubPage + std::string(kHashMark) + | 1774 chrome::kAdvancedOptionsSubPage + std::string(kHashMark) + |
1795 chrome::kClearBrowserDataSubPage); | 1775 chrome::kClearBrowserDataSubPage); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1841 | 1821 |
1842 #if defined(ENABLE_REMOTING) | 1822 #if defined(ENABLE_REMOTING) |
1843 void Browser::OpenRemotingSetupDialog() { | 1823 void Browser::OpenRemotingSetupDialog() { |
1844 RemotingSetupFlow::OpenDialog(profile_); | 1824 RemotingSetupFlow::OpenDialog(profile_); |
1845 } | 1825 } |
1846 #endif | 1826 #endif |
1847 | 1827 |
1848 void Browser::OpenAboutChromeDialog() { | 1828 void Browser::OpenAboutChromeDialog() { |
1849 UserMetrics::RecordAction(UserMetricsAction("AboutChrome"), profile_); | 1829 UserMetrics::RecordAction(UserMetricsAction("AboutChrome"), profile_); |
1850 #if defined(OS_CHROMEOS) | 1830 #if defined(OS_CHROMEOS) |
1851 ShowSingletonTab(GURL(chrome::kChromeUIAboutURL)); | 1831 ShowSingletonTab(GURL(chrome::kChromeUIAboutURL), false); |
1852 #else | 1832 #else |
1853 window_->ShowAboutChromeDialog(); | 1833 window_->ShowAboutChromeDialog(); |
1854 #endif | 1834 #endif |
1855 } | 1835 } |
1856 | 1836 |
1857 void Browser::OpenUpdateChromeDialog() { | 1837 void Browser::OpenUpdateChromeDialog() { |
1858 UserMetrics::RecordAction(UserMetricsAction("UpdateChrome"), profile_); | 1838 UserMetrics::RecordAction(UserMetricsAction("UpdateChrome"), profile_); |
1859 window_->ShowUpdateChromeDialog(); | 1839 window_->ShowUpdateChromeDialog(); |
1860 } | 1840 } |
1861 | 1841 |
(...skipping 2231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4093 NOTREACHED(); | 4073 NOTREACHED(); |
4094 return false; | 4074 return false; |
4095 } | 4075 } |
4096 | 4076 |
4097 void Browser::CreateInstantIfNecessary() { | 4077 void Browser::CreateInstantIfNecessary() { |
4098 if (type() == TYPE_NORMAL && InstantController::IsEnabled(profile()) && | 4078 if (type() == TYPE_NORMAL && InstantController::IsEnabled(profile()) && |
4099 !profile()->IsOffTheRecord()) { | 4079 !profile()->IsOffTheRecord()) { |
4100 instant_.reset(new InstantController(profile_, this)); | 4080 instant_.reset(new InstantController(profile_, this)); |
4101 } | 4081 } |
4102 } | 4082 } |
OLD | NEW |