Index: chrome/browser/ui/chrome_pages.cc |
diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.cc |
index acdb1f1153396cb10c525bc2c441118f0c82330a..8732192da80210cd5fb355dc26944a0302162fc8 100644 |
--- a/chrome/browser/ui/chrome_pages.cc |
+++ b/chrome/browser/ui/chrome_pages.cc |
@@ -15,18 +15,20 @@ |
#include "chrome/browser/signin/signin_manager.h" |
#include "chrome/browser/signin/signin_manager_factory.h" |
#include "chrome/browser/ui/browser.h" |
+#include "chrome/browser/ui/browser_finder.h" |
#include "chrome/browser/ui/browser_navigator.h" |
#include "chrome/browser/ui/browser_window.h" |
#include "chrome/browser/ui/extensions/application_launch.h" |
#include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" |
+#include "chrome/browser/ui/settings_window_manager.h" |
#include "chrome/browser/ui/singleton_tabs.h" |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
#include "chrome/browser/ui/webui/options/content_settings_handler.h" |
+#include "chrome/common/chrome_switches.h" |
#include "chrome/common/url_constants.h" |
#include "content/public/browser/user_metrics.h" |
#include "google_apis/gaia/gaia_urls.h" |
#include "net/base/url_util.h" |
-#include "url/gurl.h" |
#if defined(OS_WIN) |
#include "chrome/browser/enumerate_modules_model_win.h" |
@@ -51,9 +53,8 @@ void OpenBookmarkManagerWithHash(Browser* browser, |
content::RecordAction(UserMetricsAction("ShowBookmarks")); |
NavigateParams params(GetSingletonTabNavigateParams( |
browser, |
- GURL(kChromeUIBookmarksURL).Resolve( |
- base::StringPrintf("/#%s%s", action.c_str(), |
- base::Int64ToString(node_id).c_str())))); |
+ GURL(kChromeUIBookmarksURL).Resolve(base::StringPrintf( |
+ "/#%s%s", action.c_str(), base::Int64ToString(node_id).c_str())))); |
params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE; |
ShowSingletonTabOverwritingNTP(browser, params); |
} |
@@ -76,10 +77,10 @@ void ShowHelpImpl(Browser* browser, |
#if defined(OS_CHROMEOS) && defined(OFFICIAL_BUILD) |
const CommandLine* command_line = CommandLine::ForCurrentProcess(); |
if (!command_line->HasSwitch(chromeos::switches::kDisableGeniusApp)) { |
- const extensions::Extension* extension = profile->GetExtensionService()-> |
- GetInstalledExtension(genius_app::kGeniusAppId); |
- OpenApplication( |
- AppLaunchParams(profile, extension, 0, host_desktop_type)); |
+ const extensions::Extension* extension = |
+ profile->GetExtensionService()->GetInstalledExtension( |
+ genius_app::kGeniusAppId); |
+ OpenApplication(AppLaunchParams(profile, extension, 0, host_desktop_type)); |
return; |
} |
#endif |
@@ -176,8 +177,8 @@ void ShowConflicts(Browser* browser) { |
} |
void ShowHelp(Browser* browser, HelpSource source) { |
- ShowHelpImpl(browser, browser->profile(), browser->host_desktop_type(), |
- source); |
+ ShowHelpImpl( |
+ browser, browser->profile(), browser->host_desktop_type(), source); |
} |
void ShowHelpForProfile(Profile* profile, |
@@ -196,22 +197,54 @@ void ShowSlow(Browser* browser) { |
#endif |
} |
-void ShowSettings(Browser* browser) { |
- content::RecordAction(UserMetricsAction("ShowOptions")); |
- ShowSettingsSubPage(browser, std::string()); |
-} |
- |
-void ShowSettingsSubPage(Browser* browser, const std::string& sub_page) { |
+GURL GetSettingsUrl(const std::string& sub_page) { |
std::string url = std::string(kChromeUISettingsURL) + sub_page; |
#if defined(OS_CHROMEOS) |
if (sub_page.find(kInternetOptionsSubPage, 0) != std::string::npos) { |
std::string::size_type loc = sub_page.find("?", 0); |
- std::string network_page = loc != std::string::npos ? |
- sub_page.substr(loc) : std::string(); |
+ std::string network_page = |
+ loc != std::string::npos ? sub_page.substr(loc) : std::string(); |
url = std::string(kChromeUISettingsURL) + network_page; |
} |
#endif |
- NavigateParams params(GetSingletonTabNavigateParams(browser, GURL(url))); |
+ return GURL(url); |
+} |
+ |
+void ShowSettings(Browser* browser) { |
+ ShowSettingsSubPage(browser, std::string()); |
+} |
+ |
+void ShowSettingsSubPage(Browser* browser, const std::string& sub_page) { |
+ if (CommandLine::ForCurrentProcess()->HasSwitch( |
+ ::switches::kEnableSettingsWindow)) { |
+ SettingsWindowManager::GetInstance()->ShowForProfile(browser->profile(), |
+ sub_page); |
+ return; |
+ } |
+ ShowSettingsSubPageInTabbedBrowser(browser, sub_page); |
+} |
+ |
+void ShowSettingsSubPageForProfile(Profile* profile, |
+ const std::string& sub_page) { |
+ if (CommandLine::ForCurrentProcess()->HasSwitch( |
+ ::switches::kEnableSettingsWindow)) { |
+ SettingsWindowManager::GetInstance()->ShowForProfile(profile, sub_page); |
+ return; |
+ } |
+ Browser* browser = |
+ chrome::FindTabbedBrowser(profile, false, HOST_DESKTOP_TYPE_NATIVE); |
+ if (!browser) { |
+ browser = new Browser( |
+ Browser::CreateParams(profile, chrome::HOST_DESKTOP_TYPE_NATIVE)); |
+ } |
+ ShowSettingsSubPageInTabbedBrowser(browser, sub_page); |
+} |
+ |
+void ShowSettingsSubPageInTabbedBrowser(Browser* browser, |
+ const std::string& sub_page) { |
+ content::RecordAction(UserMetricsAction("ShowOptions")); |
+ GURL gurl = GetSettingsUrl(sub_page); |
+ NavigateParams params(GetSingletonTabNavigateParams(browser, gurl)); |
params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE; |
ShowSingletonTabOverwritingNTP(browser, params); |
} |
@@ -221,8 +254,8 @@ void ShowContentSettings(Browser* browser, |
ShowSettingsSubPage( |
browser, |
kContentSettingsExceptionsSubPage + std::string(kHashMark) + |
- options::ContentSettingsHandler::ContentSettingsTypeToGroupName( |
- content_settings_type)); |
+ options::ContentSettingsHandler::ContentSettingsTypeToGroupName( |
+ content_settings_type)); |
} |
void ShowClearBrowsingDataDialog(Browser* browser) { |
@@ -272,8 +305,7 @@ void ShowBrowserSignin(Browser* browser, signin::Source source) { |
browser = displayer->browser(); |
} |
- NavigateToSingletonTab(browser, |
- GURL(signin::GetPromoURL(source, false))); |
+ NavigateToSingletonTab(browser, GURL(signin::GetPromoURL(source, false))); |
DCHECK_GT(browser->tab_strip_model()->count(), 0); |
} |
} |