This source file includes following definitions.
- FindOneOtherBrowser
- SetUpUserDataDirectory
- SetUpCommandLine
- LoadApp
- SetAppLaunchPref
- FindOneOtherBrowserForProfile
- OnBrowserAdded
- OnBrowserRemoved
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- SetUpCommandLine
- IN_PROC_BROWSER_TEST_F
- SetUpCommandLine
- SetUpInProcessBrowserTestFixture
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
#include <algorithm>
#include <string>
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/prefs/pref_service.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/launch_util.h"
#include "chrome/browser/first_run/first_run.h"
#include "chrome/browser/infobars/infobar_manager.h"
#include "chrome/browser/infobars/infobar_service.h"
#include "chrome/browser/managed_mode/managed_mode_navigation_observer.h"
#include "chrome/browser/managed_mode/managed_user_service.h"
#include "chrome/browser/managed_mode/managed_user_service_factory.h"
#include "chrome/browser/prefs/session_startup_pref.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_impl.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/sessions/session_restore.h"
#include "chrome/browser/signin/signin_promo.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_iterator.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/browser_list_observer.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/host_desktop.h"
#include "chrome/browser/ui/startup/startup_browser_creator.h"
#include "chrome/browser/ui/startup/startup_browser_creator_impl.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/test_switches.h"
#include "chrome/test/base/ui_test_utils.h"
#include "content/public/browser/web_contents.h"
#include "extensions/browser/extension_system.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
#if defined(ENABLE_CONFIGURATION_POLICY) && !defined(OS_CHROMEOS)
#include "base/callback.h"
#include "base/run_loop.h"
#include "base/values.h"
#include "components/policy/core/browser/browser_policy_connector.h"
#include "components/policy/core/common/external_data_fetcher.h"
#include "components/policy/core/common/mock_configuration_policy_provider.h"
#include "components/policy/core/common/policy_map.h"
#include "components/policy/core/common/policy_types.h"
#include "policy/policy_constants.h"
#include "testing/gmock/include/gmock/gmock.h"
using testing::_;
using testing::Return;
#endif
using extensions::Extension;
namespace {
Browser* FindOneOtherBrowser(Browser* browser) {
EXPECT_EQ(2u, chrome::GetBrowserCount(browser->profile(),
browser->host_desktop_type()));
Browser* other_browser = NULL;
for (chrome::BrowserIterator it; !it.done() && !other_browser; it.Next()) {
if (*it != browser)
other_browser = *it;
}
return other_browser;
}
}
class StartupBrowserCreatorTest : public ExtensionBrowserTest {
protected:
virtual bool SetUpUserDataDirectory() OVERRIDE {
return ExtensionBrowserTest::SetUpUserDataDirectory();
}
virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
ExtensionBrowserTest::SetUpCommandLine(command_line);
command_line->AppendSwitch(switches::kEnablePanels);
command_line->AppendSwitchASCII(switches::kHomePage,
content::kAboutBlankURL);
#if defined(OS_CHROMEOS)
command_line->AppendSwitch(switches::kCreateBrowserOnStartupForTests);
#endif
}
void LoadApp(const std::string& app_name,
const Extension** out_app_extension) {
ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII(app_name.c_str())));
ExtensionService* service = extensions::ExtensionSystem::Get(
browser()->profile())->extension_service();
*out_app_extension = service->GetExtensionById(
last_loaded_extension_id(), false);
ASSERT_TRUE(*out_app_extension);
ASSERT_EQ(1u, chrome::GetBrowserCount(browser()->profile(),
browser()->host_desktop_type()));
}
void SetAppLaunchPref(const std::string& app_id,
extensions::LaunchType launch_type) {
ExtensionService* service = extensions::ExtensionSystem::Get(
browser()->profile())->extension_service();
extensions::SetLaunchType(service, app_id, launch_type);
}
Browser* FindOneOtherBrowserForProfile(Profile* profile,
Browser* not_this_browser) {
for (chrome::BrowserIterator it; !it.done(); it.Next()) {
if (*it != not_this_browser && it->profile() == profile)
return *it;
}
return NULL;
}
};
class OpenURLsPopupObserver : public chrome::BrowserListObserver {
public:
OpenURLsPopupObserver() : added_browser_(NULL) { }
virtual void OnBrowserAdded(Browser* browser) OVERRIDE {
added_browser_ = browser;
}
virtual void OnBrowserRemoved(Browser* browser) OVERRIDE { }
Browser* added_browser_;
};
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenURLsPopup) {
std::vector<GURL> urls;
urls.push_back(GURL("http://localhost"));
OpenURLsPopupObserver observer;
BrowserList::AddObserver(&observer);
Browser* popup = new Browser(
Browser::CreateParams(Browser::TYPE_POPUP, browser()->profile(),
browser()->host_desktop_type()));
ASSERT_TRUE(popup->is_type_popup());
ASSERT_EQ(popup, observer.added_browser_);
CommandLine dummy(CommandLine::NO_PROGRAM);
chrome::startup::IsFirstRun first_run = first_run::IsChromeFirstRun() ?
chrome::startup::IS_FIRST_RUN : chrome::startup::IS_NOT_FIRST_RUN;
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, first_run);
launch.OpenURLsInBrowser(popup, false, urls, chrome::GetActiveDesktop());
ASSERT_NE(popup, observer.added_browser_);
BrowserList::RemoveObserver(&observer);
}
#if !defined(OS_CHROMEOS)
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest,
StartupURLsOnNewWindowWithNoTabbedBrowsers) {
ASSERT_TRUE(test_server()->Start());
std::vector<GURL> urls;
urls.push_back(test_server()->GetURL("files/title1.html"));
urls.push_back(test_server()->GetURL("files/title2.html"));
SessionStartupPref pref(SessionStartupPref::URLS);
pref.urls = urls;
SessionStartupPref::SetStartupPref(browser()->profile(), pref);
browser()->window()->Close();
CommandLine dummy(CommandLine::NO_PROGRAM);
chrome::startup::IsFirstRun first_run = first_run::IsChromeFirstRun() ?
chrome::startup::IS_FIRST_RUN : chrome::startup::IS_NOT_FIRST_RUN;
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, first_run);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(static_cast<int>(urls.size()), tab_strip->count());
for (size_t i=0; i < urls.size(); i++) {
EXPECT_EQ(urls[i], tab_strip->GetWebContentsAt(i)->GetURL());
}
EXPECT_NE(tab_strip->GetWebContentsAt(0)->GetSiteInstance(),
tab_strip->GetWebContentsAt(1)->GetSiteInstance());
}
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest,
StartupURLsOnNewWindow) {
std::vector<GURL> urls;
urls.push_back(ui_test_utils::GetTestUrl(
base::FilePath(base::FilePath::kCurrentDirectory),
base::FilePath(FILE_PATH_LITERAL("title1.html"))));
urls.push_back(ui_test_utils::GetTestUrl(
base::FilePath(base::FilePath::kCurrentDirectory),
base::FilePath(FILE_PATH_LITERAL("title2.html"))));
SessionStartupPref pref(SessionStartupPref::URLS);
pref.urls = urls;
SessionStartupPref::SetStartupPref(browser()->profile(), pref);
CommandLine dummy(CommandLine::NO_PROGRAM);
chrome::startup::IsFirstRun first_run = first_run::IsChromeFirstRun() ?
chrome::startup::IS_FIRST_RUN : chrome::startup::IS_NOT_FIRST_RUN;
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, first_run);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
ASSERT_EQ(1, new_browser->tab_strip_model()->count());
}
#if !defined(OS_MACOSX)
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenAppShortcutNoPref) {
const Extension* extension_app = NULL;
ASSERT_NO_FATAL_FAILURE(LoadApp("app_with_tab_container", &extension_app));
CommandLine command_line(CommandLine::NO_PROGRAM);
command_line.AppendSwitchASCII(switches::kAppId, extension_app->id());
chrome::startup::IsFirstRun first_run = first_run::IsChromeFirstRun() ?
chrome::startup::IS_FIRST_RUN : chrome::startup::IS_NOT_FIRST_RUN;
StartupBrowserCreatorImpl launch(base::FilePath(), command_line, first_run);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
EXPECT_TRUE(new_browser->is_app());
EXPECT_NE(
new_browser->app_name_.find(extension_app->id()),
std::string::npos) << new_browser->app_name_;
}
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenAppShortcutWindowPref) {
const Extension* extension_app = NULL;
ASSERT_NO_FATAL_FAILURE(LoadApp("app_with_tab_container", &extension_app));
SetAppLaunchPref(extension_app->id(), extensions::LAUNCH_TYPE_WINDOW);
CommandLine command_line(CommandLine::NO_PROGRAM);
command_line.AppendSwitchASCII(switches::kAppId, extension_app->id());
chrome::startup::IsFirstRun first_run = first_run::IsChromeFirstRun() ?
chrome::startup::IS_FIRST_RUN : chrome::startup::IS_NOT_FIRST_RUN;
StartupBrowserCreatorImpl launch(base::FilePath(), command_line, first_run);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
EXPECT_TRUE(new_browser->is_app());
EXPECT_NE(
new_browser->app_name_.find(extension_app->id()),
std::string::npos) << new_browser->app_name_;
}
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenAppShortcutTabPref) {
const Extension* extension_app = NULL;
ASSERT_NO_FATAL_FAILURE(LoadApp("app_with_tab_container", &extension_app));
SetAppLaunchPref(extension_app->id(), extensions::LAUNCH_TYPE_REGULAR);
CommandLine command_line(CommandLine::NO_PROGRAM);
command_line.AppendSwitchASCII(switches::kAppId, extension_app->id());
chrome::startup::IsFirstRun first_run = first_run::IsChromeFirstRun() ?
chrome::startup::IS_FIRST_RUN : chrome::startup::IS_NOT_FIRST_RUN;
StartupBrowserCreatorImpl launch(base::FilePath(), command_line, first_run);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false,
browser()->host_desktop_type()));
ASSERT_EQ(2u, chrome::GetBrowserCount(browser()->profile(),
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
EXPECT_TRUE(new_browser->is_type_tabbed());
EXPECT_EQ(
new_browser->app_name_.find(extension_app->id()),
std::string::npos) << new_browser->app_name_;
}
#endif
#endif
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest,
ReadingWasRestartedAfterRestart) {
StartupBrowserCreator::was_restarted_read_ = false;
PrefService* pref_service = g_browser_process->local_state();
pref_service->SetBoolean(prefs::kWasRestarted, true);
EXPECT_TRUE(StartupBrowserCreator::WasRestarted());
EXPECT_FALSE(pref_service->GetBoolean(prefs::kWasRestarted));
EXPECT_TRUE(StartupBrowserCreator::WasRestarted());
}
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest,
ReadingWasRestartedAfterNormalStart) {
StartupBrowserCreator::was_restarted_read_ = false;
PrefService* pref_service = g_browser_process->local_state();
pref_service->SetBoolean(prefs::kWasRestarted, false);
EXPECT_FALSE(StartupBrowserCreator::WasRestarted());
EXPECT_FALSE(pref_service->GetBoolean(prefs::kWasRestarted));
EXPECT_FALSE(StartupBrowserCreator::WasRestarted());
}
#if defined(GOOGLE_CHROME_BUILD)
#define MAYBE_AddFirstRunTab DISABLED_AddFirstRunTab
#else
#define MAYBE_AddFirstRunTab AddFirstRunTab
#endif
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, MAYBE_AddFirstRunTab) {
StartupBrowserCreator browser_creator;
browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html"));
browser_creator.AddFirstRunTab(test_server()->GetURL("files/title2.html"));
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator,
chrome::startup::IS_FIRST_RUN);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
EXPECT_EQ(2, tab_strip->count());
EXPECT_EQ("title1.html",
tab_strip->GetWebContentsAt(0)->GetURL().ExtractFileName());
EXPECT_EQ("title2.html",
tab_strip->GetWebContentsAt(1)->GetURL().ExtractFileName());
}
#if defined(GOOGLE_CHROME_BUILD)
#define MAYBE_AddCustomFirstRunTab DISABLED_AddCustomFirstRunTab
#else
#define MAYBE_AddCustomFirstRunTab AddCustomFirstRunTab
#endif
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, MAYBE_AddCustomFirstRunTab) {
StartupBrowserCreator browser_creator;
browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html"));
browser_creator.AddFirstRunTab(GURL("http://new_tab_page"));
browser_creator.AddFirstRunTab(test_server()->GetURL("files/title2.html"));
browser_creator.AddFirstRunTab(GURL("http://welcome_page"));
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator,
chrome::startup::IS_FIRST_RUN);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
EXPECT_EQ(4, tab_strip->count());
EXPECT_EQ("title1.html",
tab_strip->GetWebContentsAt(0)->GetURL().ExtractFileName());
EXPECT_EQ(GURL(chrome::kChromeUINewTabURL),
tab_strip->GetWebContentsAt(1)->GetURL());
EXPECT_EQ("title2.html",
tab_strip->GetWebContentsAt(2)->GetURL().ExtractFileName());
EXPECT_EQ(internals::GetWelcomePageURL(),
tab_strip->GetWebContentsAt(3)->GetURL());
}
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, SyncPromoNoWelcomePage) {
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy,
chrome::startup::IS_FIRST_RUN);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
EXPECT_EQ(1, tab_strip->count());
if (signin::ShouldShowPromoAtStartup(browser()->profile(), true)) {
EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false),
tab_strip->GetWebContentsAt(0)->GetURL());
} else {
EXPECT_EQ(GURL(chrome::kChromeUINewTabURL),
tab_strip->GetWebContentsAt(0)->GetURL());
}
}
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, SyncPromoWithWelcomePage) {
first_run::SetShouldShowWelcomePage();
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy,
chrome::startup::IS_FIRST_RUN);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
EXPECT_EQ(2, tab_strip->count());
if (signin::ShouldShowPromoAtStartup(browser()->profile(), true)) {
EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false),
tab_strip->GetWebContentsAt(0)->GetURL());
} else {
EXPECT_EQ(GURL(chrome::kChromeUINewTabURL),
tab_strip->GetWebContentsAt(0)->GetURL());
}
EXPECT_EQ(internals::GetWelcomePageURL(),
tab_strip->GetWebContentsAt(1)->GetURL());
}
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, SyncPromoWithFirstRunTabs) {
StartupBrowserCreator browser_creator;
browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html"));
first_run::SetShouldShowWelcomePage();
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator,
chrome::startup::IS_FIRST_RUN);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
if (signin::ShouldShowPromoAtStartup(browser()->profile(), true)) {
EXPECT_EQ(2, tab_strip->count());
EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false),
tab_strip->GetWebContentsAt(0)->GetURL());
EXPECT_EQ("title1.html",
tab_strip->GetWebContentsAt(1)->GetURL().ExtractFileName());
} else {
EXPECT_EQ(1, tab_strip->count());
EXPECT_EQ("title1.html",
tab_strip->GetWebContentsAt(0)->GetURL().ExtractFileName());
}
}
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest,
SyncPromoWithFirstRunTabsIncludingWelcomePage) {
StartupBrowserCreator browser_creator;
browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html"));
browser_creator.AddFirstRunTab(GURL("http://welcome_page"));
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator,
chrome::startup::IS_FIRST_RUN);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
if (signin::ShouldShowPromoAtStartup(browser()->profile(), true)) {
EXPECT_EQ(3, tab_strip->count());
EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false),
tab_strip->GetWebContentsAt(0)->GetURL());
EXPECT_EQ("title1.html",
tab_strip->GetWebContentsAt(1)->GetURL().ExtractFileName());
EXPECT_EQ(internals::GetWelcomePageURL(),
tab_strip->GetWebContentsAt(2)->GetURL());
} else {
EXPECT_EQ(2, tab_strip->count());
EXPECT_EQ("title1.html",
tab_strip->GetWebContentsAt(0)->GetURL().ExtractFileName());
EXPECT_EQ(internals::GetWelcomePageURL(),
tab_strip->GetWebContentsAt(1)->GetURL());
}
}
#if !defined(OS_CHROMEOS)
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, StartupURLsForTwoProfiles) {
#if defined(OS_WIN) && defined(USE_ASH)
if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests))
return;
#endif
Profile* default_profile = browser()->profile();
ProfileManager* profile_manager = g_browser_process->profile_manager();
base::FilePath dest_path = profile_manager->user_data_dir();
dest_path = dest_path.Append(FILE_PATH_LITERAL("New Profile 1"));
Profile* other_profile = profile_manager->GetProfile(dest_path);
ASSERT_TRUE(other_profile);
std::vector<GURL> urls1;
urls1.push_back(ui_test_utils::GetTestUrl(
base::FilePath(base::FilePath::kCurrentDirectory),
base::FilePath(FILE_PATH_LITERAL("title1.html"))));
std::vector<GURL> urls2;
urls2.push_back(ui_test_utils::GetTestUrl(
base::FilePath(base::FilePath::kCurrentDirectory),
base::FilePath(FILE_PATH_LITERAL("title2.html"))));
SessionStartupPref pref1(SessionStartupPref::URLS);
pref1.urls = urls1;
SessionStartupPref::SetStartupPref(default_profile, pref1);
SessionStartupPref pref2(SessionStartupPref::URLS);
pref2.urls = urls2;
SessionStartupPref::SetStartupPref(other_profile, pref2);
browser()->window()->Close();
CommandLine dummy(CommandLine::NO_PROGRAM);
int return_code;
StartupBrowserCreator browser_creator;
std::vector<Profile*> last_opened_profiles;
last_opened_profiles.push_back(default_profile);
last_opened_profiles.push_back(other_profile);
browser_creator.Start(dummy, profile_manager->user_data_dir(),
default_profile, last_opened_profiles, &return_code);
Browser* new_browser = NULL;
ASSERT_EQ(2u, chrome::GetBrowserCount(default_profile,
browser()->host_desktop_type()));
new_browser = FindOneOtherBrowserForProfile(default_profile, browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(1, tab_strip->count());
EXPECT_EQ(urls1[0], tab_strip->GetWebContentsAt(0)->GetURL());
ASSERT_EQ(1u, chrome::GetBrowserCount(other_profile,
browser()->host_desktop_type()));
new_browser = FindOneOtherBrowserForProfile(other_profile, NULL);
ASSERT_TRUE(new_browser);
tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(1, tab_strip->count());
EXPECT_EQ(urls2[0], tab_strip->GetWebContentsAt(0)->GetURL());
}
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, PRE_UpdateWithTwoProfiles) {
ProfileManager* profile_manager = g_browser_process->profile_manager();
base::FilePath dest_path = profile_manager->user_data_dir();
Profile* profile1 = profile_manager->GetProfile(
dest_path.Append(FILE_PATH_LITERAL("New Profile 1")));
ASSERT_TRUE(profile1);
Profile* profile2 = profile_manager->GetProfile(
dest_path.Append(FILE_PATH_LITERAL("New Profile 2")));
ASSERT_TRUE(profile2);
std::vector<GURL> urls1;
urls1.push_back(ui_test_utils::GetTestUrl(
base::FilePath(base::FilePath::kCurrentDirectory),
base::FilePath(FILE_PATH_LITERAL("title1.html"))));
std::vector<GURL> urls2;
urls2.push_back(ui_test_utils::GetTestUrl(
base::FilePath(base::FilePath::kCurrentDirectory),
base::FilePath(FILE_PATH_LITERAL("title2.html"))));
SessionStartupPref pref1(SessionStartupPref::URLS);
pref1.urls = urls1;
SessionStartupPref::SetStartupPref(profile1, pref1);
SessionStartupPref pref2(SessionStartupPref::URLS);
pref2.urls = urls2;
SessionStartupPref::SetStartupPref(profile2, pref2);
profile1->GetPrefs()->CommitPendingWrite();
profile2->GetPrefs()->CommitPendingWrite();
}
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, UpdateWithTwoProfiles) {
#if defined(OS_WIN) && defined(USE_ASH)
if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests))
return;
#endif
StartupBrowserCreator::was_restarted_read_ = false;
PrefService* pref_service = g_browser_process->local_state();
pref_service->SetBoolean(prefs::kWasRestarted, true);
ProfileManager* profile_manager = g_browser_process->profile_manager();
base::FilePath dest_path = profile_manager->user_data_dir();
Profile* profile1 = profile_manager->GetProfile(
dest_path.Append(FILE_PATH_LITERAL("New Profile 1")));
ASSERT_TRUE(profile1);
Profile* profile2 = profile_manager->GetProfile(
dest_path.Append(FILE_PATH_LITERAL("New Profile 2")));
ASSERT_TRUE(profile2);
CommandLine dummy(CommandLine::NO_PROGRAM);
int return_code;
StartupBrowserCreator browser_creator;
std::vector<Profile*> last_opened_profiles;
last_opened_profiles.push_back(profile1);
last_opened_profiles.push_back(profile2);
browser_creator.Start(dummy, profile_manager->user_data_dir(), profile1,
last_opened_profiles, &return_code);
while (SessionRestore::IsRestoring(profile1) ||
SessionRestore::IsRestoring(profile2))
base::MessageLoop::current()->RunUntilIdle();
EXPECT_TRUE(profile1->restored_last_session());
EXPECT_TRUE(profile2->restored_last_session());
Browser* new_browser = NULL;
ASSERT_EQ(1u, chrome::GetBrowserCount(profile1,
browser()->host_desktop_type()));
new_browser = FindOneOtherBrowserForProfile(profile1, NULL);
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(1, tab_strip->count());
EXPECT_EQ(GURL(content::kAboutBlankURL),
tab_strip->GetWebContentsAt(0)->GetURL());
ASSERT_EQ(1u, chrome::GetBrowserCount(profile2,
browser()->host_desktop_type()));
new_browser = FindOneOtherBrowserForProfile(profile2, NULL);
ASSERT_TRUE(new_browser);
tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(1, tab_strip->count());
EXPECT_EQ(GURL(content::kAboutBlankURL),
tab_strip->GetWebContentsAt(0)->GetURL());
}
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest,
ProfilesWithoutPagesNotLaunched) {
#if defined(OS_WIN) && defined(USE_ASH)
if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests))
return;
#endif
Profile* default_profile = browser()->profile();
ProfileManager* profile_manager = g_browser_process->profile_manager();
base::FilePath dest_path1 = profile_manager->user_data_dir().Append(
FILE_PATH_LITERAL("New Profile 1"));
base::FilePath dest_path2 = profile_manager->user_data_dir().Append(
FILE_PATH_LITERAL("New Profile 2"));
base::FilePath dest_path3 = profile_manager->user_data_dir().Append(
FILE_PATH_LITERAL("New Profile 3"));
base::FilePath dest_path4 = profile_manager->user_data_dir().Append(
FILE_PATH_LITERAL("New Profile 4"));
Profile* profile_home1 = profile_manager->GetProfile(dest_path1);
ASSERT_TRUE(profile_home1);
Profile* profile_home2 = profile_manager->GetProfile(dest_path2);
ASSERT_TRUE(profile_home2);
Profile* profile_last = profile_manager->GetProfile(dest_path3);
ASSERT_TRUE(profile_last);
Profile* profile_urls = profile_manager->GetProfile(dest_path4);
ASSERT_TRUE(profile_urls);
SessionStartupPref pref_home(SessionStartupPref::DEFAULT);
SessionStartupPref::SetStartupPref(profile_home1, pref_home);
SessionStartupPref::SetStartupPref(profile_home2, pref_home);
SessionStartupPref pref_last(SessionStartupPref::LAST);
SessionStartupPref::SetStartupPref(profile_last, pref_last);
std::vector<GURL> urls;
urls.push_back(ui_test_utils::GetTestUrl(
base::FilePath(base::FilePath::kCurrentDirectory),
base::FilePath(FILE_PATH_LITERAL("title1.html"))));
SessionStartupPref pref_urls(SessionStartupPref::URLS);
pref_urls.urls = urls;
SessionStartupPref::SetStartupPref(profile_urls, pref_urls);
chrome::HostDesktopType original_desktop_type =
browser()->host_desktop_type();
browser()->window()->Close();
CommandLine dummy(CommandLine::NO_PROGRAM);
int return_code;
StartupBrowserCreator browser_creator;
std::vector<Profile*> last_opened_profiles;
last_opened_profiles.push_back(profile_home1);
last_opened_profiles.push_back(profile_home2);
last_opened_profiles.push_back(profile_last);
last_opened_profiles.push_back(profile_urls);
browser_creator.Start(dummy, profile_manager->user_data_dir(), profile_home1,
last_opened_profiles, &return_code);
while (SessionRestore::IsRestoring(default_profile) ||
SessionRestore::IsRestoring(profile_home1) ||
SessionRestore::IsRestoring(profile_home2) ||
SessionRestore::IsRestoring(profile_last) ||
SessionRestore::IsRestoring(profile_urls))
base::MessageLoop::current()->RunUntilIdle();
Browser* new_browser = NULL;
ASSERT_EQ(1u, chrome::GetBrowserCount(profile_home1, original_desktop_type));
new_browser = FindOneOtherBrowserForProfile(profile_home1, NULL);
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(1, tab_strip->count());
EXPECT_EQ(GURL(chrome::kChromeUINewTabURL),
tab_strip->GetWebContentsAt(0)->GetURL());
ASSERT_EQ(1u, chrome::GetBrowserCount(profile_urls, original_desktop_type));
new_browser = FindOneOtherBrowserForProfile(profile_urls, NULL);
ASSERT_TRUE(new_browser);
tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(1, tab_strip->count());
EXPECT_EQ(urls[0], tab_strip->GetWebContentsAt(0)->GetURL());
ASSERT_EQ(1u, chrome::GetBrowserCount(profile_last, original_desktop_type));
new_browser = FindOneOtherBrowserForProfile(profile_last, NULL);
ASSERT_TRUE(new_browser);
tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(1, tab_strip->count());
EXPECT_EQ(GURL(content::kAboutBlankURL),
tab_strip->GetWebContentsAt(0)->GetURL());
ASSERT_EQ(0u, chrome::GetBrowserCount(profile_home2, original_desktop_type));
}
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, ProfilesLaunchedAfterCrash) {
#if defined(OS_WIN) && defined(USE_ASH)
if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests))
return;
#endif
ProfileManager* profile_manager = g_browser_process->profile_manager();
base::FilePath dest_path1 = profile_manager->user_data_dir().Append(
FILE_PATH_LITERAL("New Profile 1"));
base::FilePath dest_path2 = profile_manager->user_data_dir().Append(
FILE_PATH_LITERAL("New Profile 2"));
base::FilePath dest_path3 = profile_manager->user_data_dir().Append(
FILE_PATH_LITERAL("New Profile 3"));
Profile* profile_home = profile_manager->GetProfile(dest_path1);
ASSERT_TRUE(profile_home);
Profile* profile_last = profile_manager->GetProfile(dest_path2);
ASSERT_TRUE(profile_last);
Profile* profile_urls = profile_manager->GetProfile(dest_path3);
ASSERT_TRUE(profile_urls);
SessionStartupPref pref_home(SessionStartupPref::DEFAULT);
SessionStartupPref::SetStartupPref(profile_home, pref_home);
SessionStartupPref pref_last(SessionStartupPref::LAST);
SessionStartupPref::SetStartupPref(profile_last, pref_last);
std::vector<GURL> urls;
urls.push_back(ui_test_utils::GetTestUrl(
base::FilePath(base::FilePath::kCurrentDirectory),
base::FilePath(FILE_PATH_LITERAL("title1.html"))));
SessionStartupPref pref_urls(SessionStartupPref::URLS);
pref_urls.urls = urls;
SessionStartupPref::SetStartupPref(profile_urls, pref_urls);
browser()->window()->Close();
static_cast<ProfileImpl*>(profile_home)->last_session_exit_type_ =
Profile::EXIT_CRASHED;
static_cast<ProfileImpl*>(profile_last)->last_session_exit_type_ =
Profile::EXIT_CRASHED;
static_cast<ProfileImpl*>(profile_urls)->last_session_exit_type_ =
Profile::EXIT_CRASHED;
CommandLine dummy(CommandLine::NO_PROGRAM);
dummy.AppendSwitchASCII(switches::kTestType, "browser");
int return_code;
StartupBrowserCreator browser_creator;
std::vector<Profile*> last_opened_profiles;
last_opened_profiles.push_back(profile_home);
last_opened_profiles.push_back(profile_last);
last_opened_profiles.push_back(profile_urls);
browser_creator.Start(dummy, profile_manager->user_data_dir(), profile_home,
last_opened_profiles, &return_code);
EXPECT_FALSE(SessionRestore::IsRestoring(profile_home));
EXPECT_FALSE(SessionRestore::IsRestoring(profile_last));
EXPECT_FALSE(SessionRestore::IsRestoring(profile_urls));
Browser* new_browser = NULL;
ASSERT_EQ(1u, chrome::GetBrowserCount(profile_home,
browser()->host_desktop_type()));
new_browser = FindOneOtherBrowserForProfile(profile_home, NULL);
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(1, tab_strip->count());
content::WebContents* web_contents = tab_strip->GetWebContentsAt(0);
EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), web_contents->GetURL());
InfoBarService* infobar_service =
InfoBarService::FromWebContents(web_contents);
EXPECT_EQ(1U, infobar_service->infobar_manager()->infobar_count());
ASSERT_EQ(1u, chrome::GetBrowserCount(profile_last,
browser()->host_desktop_type()));
new_browser = FindOneOtherBrowserForProfile(profile_last, NULL);
ASSERT_TRUE(new_browser);
tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(1, tab_strip->count());
web_contents = tab_strip->GetWebContentsAt(0);
EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), web_contents->GetURL());
infobar_service = InfoBarService::FromWebContents(web_contents);
EXPECT_EQ(1U, infobar_service->infobar_manager()->infobar_count());
ASSERT_EQ(1u, chrome::GetBrowserCount(profile_urls,
browser()->host_desktop_type()));
new_browser = FindOneOtherBrowserForProfile(profile_urls, NULL);
ASSERT_TRUE(new_browser);
tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(1, tab_strip->count());
web_contents = tab_strip->GetWebContentsAt(0);
EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), web_contents->GetURL());
infobar_service = InfoBarService::FromWebContents(web_contents);
EXPECT_EQ(1U, infobar_service->infobar_manager()->infobar_count());
}
class ManagedModeBrowserCreatorTest : public InProcessBrowserTest {
protected:
virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
InProcessBrowserTest::SetUpCommandLine(command_line);
command_line->AppendSwitchASCII(switches::kManagedUserId, "asdf");
}
};
IN_PROC_BROWSER_TEST_F(ManagedModeBrowserCreatorTest,
StartupManagedModeProfile) {
StartupBrowserCreator browser_creator;
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator,
chrome::startup::IS_FIRST_RUN);
content::WindowedNotificationObserver observer(
content::NOTIFICATION_LOAD_STOP,
content::NotificationService::AllSources());
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
EXPECT_EQ(1, tab_strip->count());
}
#endif
#if !defined(OS_CHROMEOS)
#if !defined(OS_LINUX) || !defined(GOOGLE_CHROME_BUILD) || \
defined(ENABLE_CONFIGURATION_POLICY)
class StartupBrowserCreatorFirstRunTest : public InProcessBrowserTest {
protected:
virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE;
virtual void SetUpInProcessBrowserTestFixture() OVERRIDE;
#if defined(ENABLE_CONFIGURATION_POLICY)
policy::MockConfigurationPolicyProvider provider_;
policy::PolicyMap policy_map_;
#endif
};
void StartupBrowserCreatorFirstRunTest::SetUpCommandLine(
CommandLine* command_line) {
command_line->AppendSwitch(switches::kForceFirstRun);
}
void StartupBrowserCreatorFirstRunTest::SetUpInProcessBrowserTestFixture() {
#if defined(ENABLE_CONFIGURATION_POLICY)
#if defined(OS_LINUX) && defined(GOOGLE_CHROME_BUILD)
policy_map_.Set(policy::key::kMetricsReportingEnabled,
policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
base::Value::CreateBooleanValue(false), NULL);
provider_.UpdateChromePolicy(policy_map_);
#endif
EXPECT_CALL(provider_, IsInitializationComplete(_))
.WillRepeatedly(Return(true));
policy::BrowserPolicyConnector::SetPolicyProviderForTesting(&provider_);
#endif
}
#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX)
#define MAYBE_SyncPromoForbidden DISABLED_SyncPromoForbidden
#else
#define MAYBE_SyncPromoForbidden SyncPromoForbidden
#endif
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest,
MAYBE_SyncPromoForbidden) {
first_run::SetShouldShowWelcomePage();
StartupBrowserCreator browser_creator;
browser()->profile()->GetPrefs()->SetBoolean(
prefs::kSignInPromoShowOnFirstRunAllowed, false);
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator,
chrome::startup::IS_FIRST_RUN);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(2, tab_strip->count());
EXPECT_EQ(GURL(chrome::kChromeUINewTabURL),
tab_strip->GetWebContentsAt(0)->GetURL());
EXPECT_EQ(internals::GetWelcomePageURL(),
tab_strip->GetWebContentsAt(1)->GetURL());
}
#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX)
#define MAYBE_SyncPromoAllowed DISABLED_SyncPromoAllowed
#else
#define MAYBE_SyncPromoAllowed SyncPromoAllowed
#endif
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest,
MAYBE_SyncPromoAllowed) {
first_run::SetShouldShowWelcomePage();
StartupBrowserCreator browser_creator;
browser()->profile()->GetPrefs()->SetBoolean(
prefs::kSignInPromoShowOnFirstRunAllowed, true);
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator,
chrome::startup::IS_FIRST_RUN);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(2, tab_strip->count());
EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false),
tab_strip->GetWebContentsAt(0)->GetURL());
EXPECT_EQ(internals::GetWelcomePageURL(),
tab_strip->GetWebContentsAt(1)->GetURL());
}
#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX)
#define MAYBE_FirstRunTabsPromoAllowed DISABLED_FirstRunTabsPromoAllowed
#else
#define MAYBE_FirstRunTabsPromoAllowed FirstRunTabsPromoAllowed
#endif
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest,
MAYBE_FirstRunTabsPromoAllowed) {
StartupBrowserCreator browser_creator;
browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html"));
browser()->profile()->GetPrefs()->SetBoolean(
prefs::kSignInPromoShowOnFirstRunAllowed, true);
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator,
chrome::startup::IS_FIRST_RUN);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(2, tab_strip->count());
EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false),
tab_strip->GetWebContentsAt(0)->GetURL());
EXPECT_EQ("title1.html",
tab_strip->GetWebContentsAt(1)->GetURL().ExtractFileName());
}
#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX)
#define MAYBE_FirstRunTabsContainSyncPromo \
DISABLED_FirstRunTabsContainSyncPromo
#else
#define MAYBE_FirstRunTabsContainSyncPromo FirstRunTabsContainSyncPromo
#endif
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest,
MAYBE_FirstRunTabsContainSyncPromo) {
StartupBrowserCreator browser_creator;
browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html"));
browser_creator.AddFirstRunTab(signin::GetPromoURL(signin::SOURCE_START_PAGE,
false));
browser()->profile()->GetPrefs()->SetBoolean(
prefs::kSignInPromoShowOnFirstRunAllowed, true);
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator,
chrome::startup::IS_FIRST_RUN);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(2, tab_strip->count());
EXPECT_EQ("title1.html",
tab_strip->GetWebContentsAt(0)->GetURL().ExtractFileName());
EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false),
tab_strip->GetWebContentsAt(1)->GetURL());
}
#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX)
#define MAYBE_FirstRunTabsContainNTPSyncPromoAllowed \
DISABLED_FirstRunTabsContainNTPSyncPromoAllowed
#else
#define MAYBE_FirstRunTabsContainNTPSyncPromoAllowed \
FirstRunTabsContainNTPSyncPromoAllowed
#endif
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest,
MAYBE_FirstRunTabsContainNTPSyncPromoAllowed) {
StartupBrowserCreator browser_creator;
browser_creator.AddFirstRunTab(GURL("new_tab_page"));
browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html"));
browser()->profile()->GetPrefs()->SetBoolean(
prefs::kSignInPromoShowOnFirstRunAllowed, true);
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator,
chrome::startup::IS_FIRST_RUN);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(2, tab_strip->count());
EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false),
tab_strip->GetWebContentsAt(0)->GetURL());
EXPECT_EQ("title1.html",
tab_strip->GetWebContentsAt(1)->GetURL().ExtractFileName());
}
#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX)
#define MAYBE_FirstRunTabsContainNTPSyncPromoForbidden \
DISABLED_FirstRunTabsContainNTPSyncPromoForbidden
#else
#define MAYBE_FirstRunTabsContainNTPSyncPromoForbidden \
FirstRunTabsContainNTPSyncPromoForbidden
#endif
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest,
MAYBE_FirstRunTabsContainNTPSyncPromoForbidden) {
StartupBrowserCreator browser_creator;
browser_creator.AddFirstRunTab(GURL("new_tab_page"));
browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html"));
browser()->profile()->GetPrefs()->SetBoolean(
prefs::kSignInPromoShowOnFirstRunAllowed, false);
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator,
chrome::startup::IS_FIRST_RUN);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(2, tab_strip->count());
EXPECT_EQ(GURL(chrome::kChromeUINewTabURL),
tab_strip->GetWebContentsAt(0)->GetURL());
EXPECT_EQ("title1.html",
tab_strip->GetWebContentsAt(1)->GetURL().ExtractFileName());
}
#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX)
#define MAYBE_FirstRunTabsSyncPromoForbidden \
DISABLED_FirstRunTabsSyncPromoForbidden
#else
#define MAYBE_FirstRunTabsSyncPromoForbidden FirstRunTabsSyncPromoForbidden
#endif
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest,
MAYBE_FirstRunTabsSyncPromoForbidden) {
StartupBrowserCreator browser_creator;
browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html"));
browser()->profile()->GetPrefs()->SetBoolean(
prefs::kSignInPromoShowOnFirstRunAllowed, false);
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator,
chrome::startup::IS_FIRST_RUN);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(1, tab_strip->count());
EXPECT_EQ("title1.html",
tab_strip->GetWebContentsAt(0)->GetURL().ExtractFileName());
}
#if defined(ENABLE_CONFIGURATION_POLICY)
#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX)
#define MAYBE_RestoreOnStartupURLsPolicySpecified \
DISABLED_RestoreOnStartupURLsPolicySpecified
#else
#define MAYBE_RestoreOnStartupURLsPolicySpecified \
RestoreOnStartupURLsPolicySpecified
#endif
IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest,
MAYBE_RestoreOnStartupURLsPolicySpecified) {
StartupBrowserCreator browser_creator;
browser()->profile()->GetPrefs()->SetBoolean(
prefs::kSignInPromoShowOnFirstRunAllowed, true);
policy_map_.Set(policy::key::kRestoreOnStartup,
policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
base::Value::CreateIntegerValue(
SessionStartupPref::kPrefValueURLs),
NULL);
base::ListValue startup_urls;
startup_urls.Append(base::Value::CreateStringValue(
test_server()->GetURL("files/title1.html").spec()));
policy_map_.Set(policy::key::kRestoreOnStartupURLs,
policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
startup_urls.DeepCopy(), NULL);
provider_.UpdateChromePolicy(policy_map_);
base::RunLoop().RunUntilIdle();
CommandLine dummy(CommandLine::NO_PROGRAM);
StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator,
chrome::startup::IS_FIRST_RUN);
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true,
browser()->host_desktop_type()));
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
ASSERT_EQ(1, tab_strip->count());
EXPECT_EQ("title1.html",
tab_strip->GetWebContentsAt(0)->GetURL().ExtractFileName());
}
#endif
#endif
#endif