Commit d13b1c9a authored by sergiu@chromium.org's avatar sergiu@chromium.org

Show only the settings pages for new managed users

Currently when creating a new managed user we open other tabs in addition to
the managed users settings one, which we don't want to do.

This makes sure that only that tab gets added to the list of URLs to open on
start-up by early-returning from that function.

R=ben@chromium.org
BUG=171370


Review URL: https://chromiumcodereview.appspot.com/13468005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@192551 0039d316-1c4b-4281-b951-d872f2087c98
parent afc0bf31
...@@ -37,6 +37,25 @@ ...@@ -37,6 +37,25 @@
using extensions::Extension; using extensions::Extension;
namespace {
// Check that there are two browsers. Find the one that is not |browser|.
Browser* FindOneOtherBrowser(Browser* browser) {
// There should only be one other browser.
EXPECT_EQ(2u, chrome::GetBrowserCount(browser->profile(),
browser->host_desktop_type()));
// Find the new browser.
Browser* other_browser = NULL;
for (chrome::BrowserIterator it; !it.done() && !other_browser; it.Next()) {
if (*it != browser)
other_browser = *it;
}
return other_browser;
}
} // namespace
class StartupBrowserCreatorTest : public ExtensionBrowserTest { class StartupBrowserCreatorTest : public ExtensionBrowserTest {
protected: protected:
virtual bool SetUpUserDataDirectory() OVERRIDE { virtual bool SetUpUserDataDirectory() OVERRIDE {
...@@ -84,23 +103,6 @@ class StartupBrowserCreatorTest : public ExtensionBrowserTest { ...@@ -84,23 +103,6 @@ class StartupBrowserCreatorTest : public ExtensionBrowserTest {
service->extension_prefs()->SetLaunchType(app_id, launch_type); service->extension_prefs()->SetLaunchType(app_id, launch_type);
} }
// Check that there are two browsers. Find the one that is not |browser()|.
void FindOneOtherBrowser(Browser** out_other_browser) {
// There should only be one other browser.
ASSERT_EQ(2u, chrome::GetBrowserCount(browser()->profile(),
browser()->host_desktop_type()));
// Find the new browser.
Browser* other_browser = NULL;
for (chrome::BrowserIterator it; !it.done() && !other_browser; it.Next()) {
if (*it != browser())
other_browser = *it;
}
ASSERT_TRUE(other_browser);
ASSERT_TRUE(other_browser != browser());
*out_other_browser = other_browser;
}
Browser* FindOneOtherBrowserForProfile(Profile* profile, Browser* FindOneOtherBrowserForProfile(Profile* profile,
Browser* not_this_browser) { Browser* not_this_browser) {
for (chrome::BrowserIterator it; !it.done(); it.Next()) { for (chrome::BrowserIterator it; !it.done(); it.Next()) {
...@@ -188,8 +190,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, ...@@ -188,8 +190,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest,
// This should have created a new browser window. |browser()| is still // This should have created a new browser window. |browser()| is still
// around at this point, even though we've closed its window. // around at this point, even though we've closed its window.
Browser* new_browser = NULL; Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_NO_FATAL_FAILURE(FindOneOtherBrowser(&new_browser)); ASSERT_TRUE(new_browser);
// The new browser should have one tab for each URL. // The new browser should have one tab for each URL.
TabStripModel* tab_strip = new_browser->tab_strip_model(); TabStripModel* tab_strip = new_browser->tab_strip_model();
...@@ -231,8 +233,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, ...@@ -231,8 +233,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest,
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false)); ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false));
// This should have created a new browser window. // This should have created a new browser window.
Browser* new_browser = NULL; Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_NO_FATAL_FAILURE(FindOneOtherBrowser(&new_browser)); ASSERT_TRUE(new_browser);
// The new browser should have exactly one tab (not the startup URLs). // The new browser should have exactly one tab (not the startup URLs).
ASSERT_EQ(1, new_browser->tab_strip_model()->count()); ASSERT_EQ(1, new_browser->tab_strip_model()->count());
...@@ -256,8 +258,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenAppShortcutNoPref) { ...@@ -256,8 +258,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenAppShortcutNoPref) {
// No pref was set, so the app should have opened in a window. // No pref was set, so the app should have opened in a window.
// The launch should have created a new browser. // The launch should have created a new browser.
Browser* new_browser = NULL; Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_NO_FATAL_FAILURE(FindOneOtherBrowser(&new_browser)); ASSERT_TRUE(new_browser);
// Expect an app window. // Expect an app window.
EXPECT_TRUE(new_browser->is_app()); EXPECT_TRUE(new_browser->is_app());
...@@ -286,8 +288,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenAppShortcutWindowPref) { ...@@ -286,8 +288,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenAppShortcutWindowPref) {
// Pref was set to open in a window, so the app should have opened in a // Pref was set to open in a window, so the app should have opened in a
// window. The launch should have created a new browser. Find the new // window. The launch should have created a new browser. Find the new
// browser. // browser.
Browser* new_browser = NULL; Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_NO_FATAL_FAILURE(FindOneOtherBrowser(&new_browser)); ASSERT_TRUE(new_browser);
// Expect an app window. // Expect an app window.
EXPECT_TRUE(new_browser->is_app()); EXPECT_TRUE(new_browser->is_app());
...@@ -319,8 +321,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenAppShortcutTabPref) { ...@@ -319,8 +321,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenAppShortcutTabPref) {
ASSERT_EQ(2u, chrome::GetBrowserCount(browser()->profile(), ASSERT_EQ(2u, chrome::GetBrowserCount(browser()->profile(),
browser()->host_desktop_type())); browser()->host_desktop_type()));
Browser* new_browser = NULL; Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_NO_FATAL_FAILURE(FindOneOtherBrowser(&new_browser)); ASSERT_TRUE(new_browser);
// The tab should be in a tabbed window. // The tab should be in a tabbed window.
EXPECT_TRUE(new_browser->is_type_tabbed()); EXPECT_TRUE(new_browser->is_type_tabbed());
...@@ -372,8 +374,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, AddFirstRunTab) { ...@@ -372,8 +374,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, AddFirstRunTab) {
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false)); ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false));
// This should have created a new browser window. // This should have created a new browser window.
Browser* new_browser = NULL; Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_NO_FATAL_FAILURE(FindOneOtherBrowser(&new_browser)); ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model(); TabStripModel* tab_strip = new_browser->tab_strip_model();
EXPECT_EQ(2, tab_strip->count()); EXPECT_EQ(2, tab_strip->count());
...@@ -400,8 +402,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, AddCustomFirstRunTab) { ...@@ -400,8 +402,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, AddCustomFirstRunTab) {
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false)); ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false));
// This should have created a new browser window. // This should have created a new browser window.
Browser* new_browser = NULL; Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_NO_FATAL_FAILURE(FindOneOtherBrowser(&new_browser)); ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model(); TabStripModel* tab_strip = new_browser->tab_strip_model();
EXPECT_EQ(4, tab_strip->count()); EXPECT_EQ(4, tab_strip->count());
...@@ -429,8 +431,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, SyncPromoNoWelcomePage) { ...@@ -429,8 +431,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, SyncPromoNoWelcomePage) {
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false)); ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false));
// This should have created a new browser window. // This should have created a new browser window.
Browser* new_browser = NULL; Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_NO_FATAL_FAILURE(FindOneOtherBrowser(&new_browser)); ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model(); TabStripModel* tab_strip = new_browser->tab_strip_model();
EXPECT_EQ(1, tab_strip->count()); EXPECT_EQ(1, tab_strip->count());
...@@ -457,8 +459,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, SyncPromoWithWelcomePage) { ...@@ -457,8 +459,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, SyncPromoWithWelcomePage) {
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false)); ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false));
// This should have created a new browser window. // This should have created a new browser window.
Browser* new_browser = NULL; Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_NO_FATAL_FAILURE(FindOneOtherBrowser(&new_browser)); ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model(); TabStripModel* tab_strip = new_browser->tab_strip_model();
EXPECT_EQ(2, tab_strip->count()); EXPECT_EQ(2, tab_strip->count());
...@@ -494,8 +496,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, SyncPromoWithFirstRunTabs) { ...@@ -494,8 +496,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, SyncPromoWithFirstRunTabs) {
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false)); ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false));
// This should have created a new browser window. // This should have created a new browser window.
Browser* new_browser = NULL; Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_NO_FATAL_FAILURE(FindOneOtherBrowser(&new_browser)); ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model(); TabStripModel* tab_strip = new_browser->tab_strip_model();
if (SyncPromoUI::ShouldShowSyncPromoAtStartup(browser()->profile(), true)) { if (SyncPromoUI::ShouldShowSyncPromoAtStartup(browser()->profile(), true)) {
...@@ -530,8 +532,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, ...@@ -530,8 +532,8 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest,
ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false)); ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false));
// This should have created a new browser window. // This should have created a new browser window.
Browser* new_browser = NULL; Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_NO_FATAL_FAILURE(FindOneOtherBrowser(&new_browser)); ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model(); TabStripModel* tab_strip = new_browser->tab_strip_model();
if (SyncPromoUI::ShouldShowSyncPromoAtStartup(browser()->profile(), true)) { if (SyncPromoUI::ShouldShowSyncPromoAtStartup(browser()->profile(), true)) {
...@@ -892,4 +894,40 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, ProfilesLaunchedAfterCrash) { ...@@ -892,4 +894,40 @@ IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, ProfilesLaunchedAfterCrash) {
EXPECT_EQ(1U, EXPECT_EQ(1U,
InfoBarService::FromWebContents(web_contents)->GetInfoBarCount()); InfoBarService::FromWebContents(web_contents)->GetInfoBarCount());
} }
class ManagedModeBrowserCreatorTest : public InProcessBrowserTest {
protected:
virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
InProcessBrowserTest::SetUpCommandLine(command_line);
command_line->AppendSwitch(switches::kEnableManagedUsers);
}
};
IN_PROC_BROWSER_TEST_F(ManagedModeBrowserCreatorTest,
StartupManagedModeProfile) {
// Make this a managed profile.
browser()->profile()->GetPrefs()->SetBoolean(prefs::kProfileIsManaged, true);
StartupBrowserCreator browser_creator;
// Do a simple non-process-startup browser launch.
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));
// This should have created a new browser window.
Browser* new_browser = FindOneOtherBrowser(browser());
ASSERT_TRUE(new_browser);
TabStripModel* tab_strip = new_browser->tab_strip_model();
// There should be only one tab.
EXPECT_EQ(1, tab_strip->count());
// And it should point to the managed user settings page.
content::WebContents* web_contents = tab_strip->GetWebContentsAt(0);
GURL expected(GURL(std::string(chrome::kChromeUISettingsURL) +
chrome::kManagedUserSettingsSubPage));
EXPECT_EQ(GURL(expected), web_contents->GetURL());
}
#endif // !OS_CHROMEOS #endif // !OS_CHROMEOS
...@@ -924,6 +924,20 @@ void StartupBrowserCreatorImpl::AddInfoBarsIfNecessary( ...@@ -924,6 +924,20 @@ void StartupBrowserCreatorImpl::AddInfoBarsIfNecessary(
void StartupBrowserCreatorImpl::AddStartupURLs( void StartupBrowserCreatorImpl::AddStartupURLs(
std::vector<GURL>* startup_urls) const { std::vector<GURL>* startup_urls) const {
PrefService* prefs = profile_->GetPrefs();
bool has_reset_local_passphrase_switch =
command_line_.HasSwitch(switches::kResetLocalPassphrase);
if ((is_first_run_ || has_reset_local_passphrase_switch) &&
prefs->GetBoolean(prefs::kProfileIsManaged)) {
startup_urls->insert(startup_urls->begin(),
GURL(std::string(chrome::kChromeUISettingsURL) +
chrome::kManagedUserSettingsSubPage));
if (has_reset_local_passphrase_switch) {
prefs->SetString(prefs::kManagedModeLocalPassphrase, "");
prefs->SetString(prefs::kManagedModeLocalSalt, "");
}
}
// If we have urls specified by the first run master preferences use them // If we have urls specified by the first run master preferences use them
// and nothing else. // and nothing else.
if (browser_creator_ && startup_urls->empty()) { if (browser_creator_ && startup_urls->empty()) {
...@@ -953,20 +967,6 @@ void StartupBrowserCreatorImpl::AddStartupURLs( ...@@ -953,20 +967,6 @@ void StartupBrowserCreatorImpl::AddStartupURLs(
if (first_run::ShouldShowWelcomePage()) if (first_run::ShouldShowWelcomePage())
startup_urls->push_back(internals::GetWelcomePageURL()); startup_urls->push_back(internals::GetWelcomePageURL());
} }
PrefService* prefs = profile_->GetPrefs();
bool has_reset_local_passphrase_switch =
command_line_.HasSwitch(switches::kResetLocalPassphrase);
if ((is_first_run_ || has_reset_local_passphrase_switch) &&
prefs->GetBoolean(prefs::kProfileIsManaged)) {
startup_urls->insert(startup_urls->begin(),
GURL(std::string(chrome::kChromeUISettingsURL) +
chrome::kManagedUserSettingsSubPage));
if (has_reset_local_passphrase_switch) {
prefs->SetString(prefs::kManagedModeLocalPassphrase, "");
prefs->SetString(prefs::kManagedModeLocalSalt, "");
}
}
} }
#if !defined(OS_WIN) || defined(USE_AURA) #if !defined(OS_WIN) || defined(USE_AURA)
......
...@@ -133,6 +133,10 @@ bool SyncPromoUI::ShouldShowSyncPromo(Profile* profile) { ...@@ -133,6 +133,10 @@ bool SyncPromoUI::ShouldShowSyncPromo(Profile* profile) {
if (profile->IsOffTheRecord()) if (profile->IsOffTheRecord())
return false; return false;
// Don't show for managed profiles.
if (profile->GetPrefs()->GetBoolean(prefs::kProfileIsManaged))
return false;
// Display the signin promo if the user is not signed in. // Display the signin promo if the user is not signed in.
SigninManager* signin = SigninManagerFactory::GetForProfile( SigninManager* signin = SigninManagerFactory::GetForProfile(
profile->GetOriginalProfile()); profile->GetOriginalProfile());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment