Chromium Code Reviews| Index: chrome/browser/ui/startup/startup_browser_creator_browsertest.cc |
| diff --git a/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc b/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc |
| index 2302d820193b65741b4656f8d11d5affbe2fd4f0..909afc8e66d636b4a3acc7c1069b4b3fc9cfdfc0 100644 |
| --- a/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc |
| +++ b/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc |
| @@ -100,6 +100,35 @@ bool IsWindows10OrNewer() { |
| #endif |
| } |
| +// This function is used to verify a callback was successfully invoked. |
| +void SetTrue(bool* value) { |
| + ASSERT_TRUE(value); |
| + *value = true; |
| +} |
| + |
| +bool TabStripContainsUrl(TabStripModel* tab_strip, GURL url) { |
| + for (int i = 0; i < tab_strip->count(); i++) { |
|
Peter Kasting
2015/09/25 20:52:27
Tiny nit: There's no formal rule requiring this bu
Patrick Monette
2015/09/28 23:46:38
Done.
|
| + if (tab_strip->GetWebContentsAt(i)->GetURL() == url) |
| + return true; |
| + } |
| + return false; |
| +} |
| + |
| +void ProcessCommandLineAlreadyRunningDefaultProfile(base::CommandLine cmdline) { |
|
grt (UTC plus 2)
2015/09/28 14:31:05
nit: pass by constref
Patrick Monette
2015/09/28 23:46:38
Done.
|
| + StartupBrowserCreator browser_creator; |
| + |
| + base::FilePath current_dir; |
| + ASSERT_TRUE(base::GetCurrentDirectory(¤t_dir)); |
| + base::FilePath user_data_dir = |
| + g_browser_process->profile_manager()->user_data_dir(); |
| + base::FilePath startup_profile_dir = |
| + g_browser_process->profile_manager()->GetLastUsedProfileDir( |
| + user_data_dir); |
| + |
| + browser_creator.ProcessCommandLineAlreadyRunning(cmdline, current_dir, |
| + startup_profile_dir); |
| +} |
| + |
| } // namespace |
| class StartupBrowserCreatorTest : public ExtensionBrowserTest { |
| @@ -1160,6 +1189,42 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, ProfilesLaunchedAfterCrash) { |
| #endif // !defined(OS_MACOSX) && !defined(GOOGLE_CHROME_BUILD) |
| } |
| +#if defined(OS_WIN) |
| +IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, DefaultBrowserCallback) { |
| + bool callback_called = false; |
| + |
| + // Set the default browser callback. |
| + StartupBrowserCreator::SetDefaultBrowserCallback( |
| + base::Bind(&SetTrue, &callback_called)); |
| + |
| + // Set the command line to open the default browser url. |
| + base::CommandLine cmdline(base::CommandLine::NO_PROGRAM); |
| + cmdline.AppendArgNative(StartupBrowserCreator::GetDefaultBrowserUrl()); |
| + |
| + // Open url. |
| + ProcessCommandLineAlreadyRunningDefaultProfile(cmdline); |
| + |
| + // The url should have been intercepted and the callback invoked. |
| + GURL default_browser_url = |
| + GURL(StartupBrowserCreator::GetDefaultBrowserUrl()); |
| + EXPECT_FALSE( |
| + TabStripContainsUrl(browser()->tab_strip_model(), default_browser_url)); |
| + EXPECT_TRUE(callback_called); |
| + |
| + // Clear default browser callback. |
| + callback_called = false; |
| + StartupBrowserCreator::ClearDefaultBrowserCallback(); |
| + |
| + // Open url. |
| + ProcessCommandLineAlreadyRunningDefaultProfile(cmdline); |
| + |
| + // The url should not have been intercepted and the callback not invoked. |
| + EXPECT_TRUE( |
| + TabStripContainsUrl(browser()->tab_strip_model(), default_browser_url)); |
| + EXPECT_FALSE(callback_called); |
| +} |
| +#endif // defined(OS_WIN) |
| + |
| class SupervisedUserBrowserCreatorTest : public InProcessBrowserTest { |
| protected: |
| void SetUpCommandLine(base::CommandLine* command_line) override { |