startup_browser_creator_browsertest.cc revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include <algorithm> 67d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include <string> 77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browser_process.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/extension_browsertest.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/extension_service.h" 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/extensions/launch_util.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/first_run/first_run.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/infobars/infobar_service.h" 182385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "chrome/browser/managed_mode/managed_mode_navigation_observer.h" 192385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "chrome/browser/managed_mode/managed_user_service.h" 202385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "chrome/browser/managed_mode/managed_user_service_factory.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/prefs/session_startup_pref.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_impl.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sessions/session_restore.h" 26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/signin/signin_promo.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/ui/browser_commands.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_finder.h" 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/browser_iterator.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_list.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_list_observer.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_window.h" 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/host_desktop.h" 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/startup/startup_browser_creator.h" 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/startup/startup_browser_creator_impl.h" 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_switches.h" 39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/common/extensions/extension_constants.h" 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/url_constants.h" 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h" 43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/test/base/test_switches.h" 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/ui_test_utils.h" 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_system.h" 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 482385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "url/gurl.h" 497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if defined(ENABLE_CONFIGURATION_POLICY) && !defined(OS_CHROMEOS) 517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/callback.h" 527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/run_loop.h" 537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/values.h" 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/policy/core/browser/browser_policy_connector.h" 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/external_data_fetcher.h" 56a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/common/mock_configuration_policy_provider.h" 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/policy_map.h" 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/policy_types.h" 597d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "policy/policy_constants.h" 607d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 617d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 627d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)using testing::_; 637d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)using testing::Return; 647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif // defined(ENABLE_CONFIGURATION_POLICY) && !defined(OS_CHROMEOS) 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using extensions::Extension; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace { 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Check that there are two browsers. Find the one that is not |browser|. 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)Browser* FindOneOtherBrowser(Browser* browser) { 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // There should only be one other browser. 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(2u, chrome::GetBrowserCount(browser->profile(), 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) browser->host_desktop_type())); 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Find the new browser. 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Browser* other_browser = NULL; 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (chrome::BrowserIterator it; !it.done() && !other_browser; it.Next()) { 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (*it != browser) 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) other_browser = *it; 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return other_browser; 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class StartupBrowserCreatorTest : public ExtensionBrowserTest { 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool SetUpUserDataDirectory() OVERRIDE { 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ExtensionBrowserTest::SetUpUserDataDirectory(); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExtensionBrowserTest::SetUpCommandLine(command_line); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command_line->AppendSwitch(switches::kEnablePanels); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command_line->AppendSwitchASCII(switches::kHomePage, 9790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) content::kAboutBlankURL); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(nkostylev): Investigate if we can remove this switch. 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command_line->AppendSwitch(switches::kCreateBrowserOnStartupForTests); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Helper functions return void so that we can ASSERT*(). 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Use ASSERT_NO_FATAL_FAILURE around calls to these functions to stop the 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // test if an assert fails. 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void LoadApp(const std::string& app_name, 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const Extension** out_app_extension) { 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII(app_name.c_str()))); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExtensionService* service = extensions::ExtensionSystem::Get( 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->profile())->extension_service(); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *out_app_extension = service->GetExtensionById( 1148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) last_loaded_extension_id(), false); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(*out_app_extension); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Code that opens a new browser assumes we start with exactly one. 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, chrome::GetBrowserCount(browser()->profile(), 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->host_desktop_type())); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetAppLaunchPref(const std::string& app_id, 123a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) extensions::LaunchType launch_type) { 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExtensionService* service = extensions::ExtensionSystem::Get( 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->profile())->extension_service(); 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) extensions::SetLaunchType(service, app_id, launch_type); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* FindOneOtherBrowserForProfile(Profile* profile, 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* not_this_browser) { 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (chrome::BrowserIterator it; !it.done(); it.Next()) { 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (*it != not_this_browser && it->profile() == profile) 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return *it; 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class OpenURLsPopupObserver : public chrome::BrowserListObserver { 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OpenURLsPopupObserver() : added_browser_(NULL) { } 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnBrowserAdded(Browser* browser) OVERRIDE { 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) added_browser_ = browser; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnBrowserRemoved(Browser* browser) OVERRIDE { } 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* added_browser_; 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that when there is a popup as the active browser any requests to 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// StartupBrowserCreatorImpl::OpenURLsInBrowser don't crash because there's no 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// explicit profile given. 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenURLsPopup) { 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<GURL> urls; 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) urls.push_back(GURL("http://localhost")); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Note that in our testing we do not ever query the BrowserList for the "last 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // active" browser. That's because the browsers are set as "active" by 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // platform UI toolkit messages, and those messages are not sent during unit 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // testing sessions. 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OpenURLsPopupObserver observer; 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserList::AddObserver(&observer); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* popup = new Browser( 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Browser::CreateParams(Browser::TYPE_POPUP, browser()->profile(), 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->host_desktop_type())); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(popup->is_type_popup()); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(popup, observer.added_browser_); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::startup::IsFirstRun first_run = first_run::IsChromeFirstRun() ? 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::startup::IS_FIRST_RUN : chrome::startup::IS_NOT_FIRST_RUN; 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, first_run); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This should create a new window, but re-use the profile from |popup|. If 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // it used a NULL or invalid profile, it would crash. 179bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch launch.OpenURLsInBrowser(popup, false, urls, chrome::GetActiveDesktop()); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NE(popup, observer.added_browser_); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserList::RemoveObserver(&observer); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// We don't do non-process-startup browser launches on ChromeOS. 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Session restore for process-startup browser launches is tested 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// in session_restore_uitest. 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_CHROMEOS) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Verify that startup URLs are honored when the process already exists but has 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// no tabbed browser windows (eg. as if the process is running only due to a 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// background application. 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StartupURLsOnNewWindowWithNoTabbedBrowsers) { 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Use a couple same-site HTTP URLs. 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<GURL> urls; 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) urls.push_back(test_server()->GetURL("files/title1.html")); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) urls.push_back(test_server()->GetURL("files/title2.html")); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set the startup preference to open these URLs. 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref pref(SessionStartupPref::URLS); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref.urls = urls; 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref::SetStartupPref(browser()->profile(), pref); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Close the browser. 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->window()->Close(); 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Do a simple non-process-startup browser launch. 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::startup::IsFirstRun first_run = first_run::IsChromeFirstRun() ? 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::startup::IS_FIRST_RUN : chrome::startup::IS_NOT_FIRST_RUN; 2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, first_run); 21290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false, 21390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->host_desktop_type())); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This should have created a new browser window. |browser()| is still 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // around at this point, even though we've closed its window. 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(new_browser); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The new browser should have one tab for each URL. 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(static_cast<int>(urls.size()), tab_strip->count()); 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i=0; i < urls.size(); i++) { 2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(urls[i], tab_strip->GetWebContentsAt(i)->GetURL()); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The two tabs, despite having the same site, should be in different 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // SiteInstances. 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_NE(tab_strip->GetWebContentsAt(0)->GetSiteInstance(), 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(1)->GetSiteInstance()); 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Verify that startup URLs aren't used when the process already exists 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and has other tabbed browser windows. This is the common case of starting a 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// new browser. 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StartupURLsOnNewWindow) { 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Use a couple arbitrary URLs. 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<GURL> urls; 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) urls.push_back(ui_test_utils::GetTestUrl( 2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(base::FilePath::kCurrentDirectory), 2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(FILE_PATH_LITERAL("title1.html")))); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) urls.push_back(ui_test_utils::GetTestUrl( 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(base::FilePath::kCurrentDirectory), 2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(FILE_PATH_LITERAL("title2.html")))); 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set the startup preference to open these URLs. 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref pref(SessionStartupPref::URLS); 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref.urls = urls; 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref::SetStartupPref(browser()->profile(), pref); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Do a simple non-process-startup browser launch. 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::startup::IsFirstRun first_run = first_run::IsChromeFirstRun() ? 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::startup::IS_FIRST_RUN : chrome::startup::IS_NOT_FIRST_RUN; 2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, first_run); 25790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false, 25890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->host_desktop_type())); 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This should have created a new browser window. 261c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 262c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(new_browser); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The new browser should have exactly one tab (not the startup URLs). 2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1, new_browser->tab_strip_model()->count()); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// App shortcuts are not implemented on mac os. 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_MACOSX) 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenAppShortcutNoPref) { 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Load an app with launch.container = 'tab'. 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const Extension* extension_app = NULL; 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(LoadApp("app_with_tab_container", &extension_app)); 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add --app-id=<extension->id()> to the command line. 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine command_line(CommandLine::NO_PROGRAM); 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command_line.AppendSwitchASCII(switches::kAppId, extension_app->id()); 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::startup::IsFirstRun first_run = first_run::IsChromeFirstRun() ? 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::startup::IS_FIRST_RUN : chrome::startup::IS_NOT_FIRST_RUN; 2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), command_line, first_run); 28290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false, 28390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->host_desktop_type())); 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // No pref was set, so the app should have opened in a window. 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The launch should have created a new browser. 287c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 288c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(new_browser); 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Expect an app window. 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(new_browser->is_app()); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The browser's app_name should include the app's ID. 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE( 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_browser->app_name_.find(extension_app->id()), 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string::npos) << new_browser->app_name_; 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenAppShortcutWindowPref) { 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const Extension* extension_app = NULL; 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(LoadApp("app_with_tab_container", &extension_app)); 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set a pref indicating that the user wants to open this app in a window. 304a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) SetAppLaunchPref(extension_app->id(), extensions::LAUNCH_TYPE_WINDOW); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine command_line(CommandLine::NO_PROGRAM); 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command_line.AppendSwitchASCII(switches::kAppId, extension_app->id()); 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::startup::IsFirstRun first_run = first_run::IsChromeFirstRun() ? 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::startup::IS_FIRST_RUN : chrome::startup::IS_NOT_FIRST_RUN; 3102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), command_line, first_run); 31190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false, 31290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->host_desktop_type())); 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Pref was set to open in a window, so the app should have opened in a 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // window. The launch should have created a new browser. Find the new 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // browser. 317c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 318c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(new_browser); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Expect an app window. 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(new_browser->is_app()); 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The browser's app_name should include the app's ID. 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE( 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_browser->app_name_.find(extension_app->id()), 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string::npos) << new_browser->app_name_; 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenAppShortcutTabPref) { 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Load an app with launch.container = 'tab'. 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const Extension* extension_app = NULL; 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(LoadApp("app_with_tab_container", &extension_app)); 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set a pref indicating that the user wants to open this app in a window. 335a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) SetAppLaunchPref(extension_app->id(), extensions::LAUNCH_TYPE_REGULAR); 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine command_line(CommandLine::NO_PROGRAM); 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command_line.AppendSwitchASCII(switches::kAppId, extension_app->id()); 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::startup::IsFirstRun first_run = first_run::IsChromeFirstRun() ? 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::startup::IS_FIRST_RUN : chrome::startup::IS_NOT_FIRST_RUN; 3412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), command_line, first_run); 34290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false, 34390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->host_desktop_type())); 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // When an app shortcut is open and the pref indicates a tab should 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // open, the tab is open in a new browser window. Expect a new window. 3472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(2u, chrome::GetBrowserCount(browser()->profile(), 3482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->host_desktop_type())); 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 350c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 351c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(new_browser); 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The tab should be in a tabbed window. 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(new_browser->is_type_tabbed()); 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The browser's app_name should not include the app's ID: It is in a 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // normal browser. 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ( 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_browser->app_name_.find(extension_app->id()), 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string::npos) << new_browser->app_name_; 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // !defined(OS_MACOSX) 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // !defined(OS_CHROMEOS) 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ReadingWasRestartedAfterRestart) { 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Tests that StartupBrowserCreator::WasRestarted reads and resets the 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // preference kWasRestarted correctly. 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StartupBrowserCreator::was_restarted_read_ = false; 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = g_browser_process->local_state(); 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_service->SetBoolean(prefs::kWasRestarted, true); 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(StartupBrowserCreator::WasRestarted()); 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(pref_service->GetBoolean(prefs::kWasRestarted)); 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(StartupBrowserCreator::WasRestarted()); 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ReadingWasRestartedAfterNormalStart) { 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Tests that StartupBrowserCreator::WasRestarted reads and resets the 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // preference kWasRestarted correctly. 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StartupBrowserCreator::was_restarted_read_ = false; 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = g_browser_process->local_state(); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_service->SetBoolean(prefs::kWasRestarted, false); 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(StartupBrowserCreator::WasRestarted()); 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(pref_service->GetBoolean(prefs::kWasRestarted)); 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(StartupBrowserCreator::WasRestarted()); 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 391f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Fails on official builds. See http://crbug.com/313856 392f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) 393f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define MAYBE_AddFirstRunTab DISABLED_AddFirstRunTab 394f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#else 395f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define MAYBE_AddFirstRunTab AddFirstRunTab 396f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif 397f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, MAYBE_AddFirstRunTab) { 3982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreator browser_creator; 3992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html")); 4002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_creator.AddFirstRunTab(test_server()->GetURL("files/title2.html")); 4012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Do a simple non-process-startup browser launch. 4032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 4042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator, 4052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::startup::IS_FIRST_RUN); 40690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false, 40790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->host_desktop_type())); 4082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // This should have created a new browser window. 410c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 411c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(new_browser); 4122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 4142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2, tab_strip->count()); 4152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("title1.html", 4172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL().ExtractFileName()); 4182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("title2.html", 4192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(1)->GetURL().ExtractFileName()); 4202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 4212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Test hard-coded special first run tabs (defined in 4232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// StartupBrowserCreatorImpl::AddStartupURLs()). 424f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Fails on official builds. See http://crbug.com/313856 425f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) 426f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define MAYBE_AddCustomFirstRunTab DISABLED_AddCustomFirstRunTab 427f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#else 428f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define MAYBE_AddCustomFirstRunTab AddCustomFirstRunTab 429f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif 430f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, MAYBE_AddCustomFirstRunTab) { 4312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreator browser_creator; 4322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html")); 4332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_creator.AddFirstRunTab(GURL("http://new_tab_page")); 4342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_creator.AddFirstRunTab(test_server()->GetURL("files/title2.html")); 4352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_creator.AddFirstRunTab(GURL("http://welcome_page")); 4362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Do a simple non-process-startup browser launch. 4382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 4392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator, 4402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::startup::IS_FIRST_RUN); 44190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false, 44290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->host_desktop_type())); 4432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // This should have created a new browser window. 445c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 446c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(new_browser); 4472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 4492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(4, tab_strip->count()); 4502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("title1.html", 4522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL().ExtractFileName()); 4532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), 4542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(1)->GetURL()); 4552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("title2.html", 4562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(2)->GetURL().ExtractFileName()); 4572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(internals::GetWelcomePageURL(), 4582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(3)->GetURL()); 4592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 4602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, SyncPromoNoWelcomePage) { 4622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Do a simple non-process-startup browser launch. 4632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 4642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, 4652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::startup::IS_FIRST_RUN); 46690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false, 46790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->host_desktop_type())); 4682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // This should have created a new browser window. 470c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 471c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(new_browser); 4722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 4742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, tab_strip->count()); 4752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 476a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (signin::ShouldShowPromoAtStartup(browser()->profile(), true)) { 4772385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false), 4782385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch tab_strip->GetWebContentsAt(0)->GetURL()); 4792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 4802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), 4812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL()); 4822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 4842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, SyncPromoWithWelcomePage) { 4862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) first_run::SetShouldShowWelcomePage(); 4872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Do a simple non-process-startup browser launch. 4892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 4902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, 4912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::startup::IS_FIRST_RUN); 49290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false, 49390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->host_desktop_type())); 4942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // This should have created a new browser window. 496c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 497c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(new_browser); 4982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 5002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2, tab_strip->count()); 5012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 502a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (signin::ShouldShowPromoAtStartup(browser()->profile(), true)) { 5032385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false), 5042385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch tab_strip->GetWebContentsAt(0)->GetURL()); 5052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 5062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), 5072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL()); 5082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 5092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(internals::GetWelcomePageURL(), 5102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(1)->GetURL()); 5112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 5122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, SyncPromoWithFirstRunTabs) { 5142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreator browser_creator; 5152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html")); 5162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The welcome page should not be shown, even if 5182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // first_run::ShouldShowWelcomePage() says so, when there are already 5192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // more than 2 first run tabs. 5202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) first_run::SetShouldShowWelcomePage(); 5212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Do a simple non-process-startup browser launch. 5232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 5242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator, 5252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::startup::IS_FIRST_RUN); 52690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false, 52790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->host_desktop_type())); 5282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // This should have created a new browser window. 530c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 531c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(new_browser); 5322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 534a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (signin::ShouldShowPromoAtStartup(browser()->profile(), true)) { 5352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2, tab_strip->count()); 5362385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false), 5372385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch tab_strip->GetWebContentsAt(0)->GetURL()); 5382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("title1.html", 5392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(1)->GetURL().ExtractFileName()); 5402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 5412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, tab_strip->count()); 5422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("title1.html", 5432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL().ExtractFileName()); 5442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 5452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 5462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// The welcome page should still be shown if there are more than 2 first run 5482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// tabs, but the welcome page was explcitly added to the first run tabs. 5492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, 5502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SyncPromoWithFirstRunTabsIncludingWelcomePage) { 5512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreator browser_creator; 5522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html")); 5532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_creator.AddFirstRunTab(GURL("http://welcome_page")); 5542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Do a simple non-process-startup browser launch. 5562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 5572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator, 5582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::startup::IS_FIRST_RUN); 55990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false, 56090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->host_desktop_type())); 5612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // This should have created a new browser window. 563c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 564c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(new_browser); 5652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 567a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (signin::ShouldShowPromoAtStartup(browser()->profile(), true)) { 5682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(3, tab_strip->count()); 5692385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false), 5702385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch tab_strip->GetWebContentsAt(0)->GetURL()); 5712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("title1.html", 5722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(1)->GetURL().ExtractFileName()); 5732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(internals::GetWelcomePageURL(), 5742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(2)->GetURL()); 5752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 5762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2, tab_strip->count()); 5772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("title1.html", 5782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL().ExtractFileName()); 5792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(internals::GetWelcomePageURL(), 5802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(1)->GetURL()); 5812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 5822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 5832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_CHROMEOS) 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, StartupURLsForTwoProfiles) { 586558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#if defined(OS_WIN) && defined(USE_ASH) 587558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Disable this test in Metro+Ash for now (http://crbug.com/262796). 588a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 589558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch return; 590558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#endif 591558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* default_profile = browser()->profile(); 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileManager* profile_manager = g_browser_process->profile_manager(); 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create another profile. 5962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath dest_path = profile_manager->user_data_dir(); 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dest_path = dest_path.Append(FILE_PATH_LITERAL("New Profile 1")); 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* other_profile = profile_manager->GetProfile(dest_path); 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(other_profile); 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Use a couple arbitrary URLs. 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<GURL> urls1; 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) urls1.push_back(ui_test_utils::GetTestUrl( 6052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(base::FilePath::kCurrentDirectory), 6062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(FILE_PATH_LITERAL("title1.html")))); 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<GURL> urls2; 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) urls2.push_back(ui_test_utils::GetTestUrl( 6092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(base::FilePath::kCurrentDirectory), 6102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(FILE_PATH_LITERAL("title2.html")))); 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set different startup preferences for the 2 profiles. 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref pref1(SessionStartupPref::URLS); 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref1.urls = urls1; 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref::SetStartupPref(default_profile, pref1); 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref pref2(SessionStartupPref::URLS); 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref2.urls = urls2; 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref::SetStartupPref(other_profile, pref2); 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Close the browser. 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->window()->Close(); 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Do a simple non-process-startup browser launch. 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int return_code; 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StartupBrowserCreator browser_creator; 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<Profile*> last_opened_profiles; 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_opened_profiles.push_back(default_profile); 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_opened_profiles.push_back(other_profile); 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser_creator.Start(dummy, profile_manager->user_data_dir(), 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_profile, last_opened_profiles, &return_code); 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // urls1 were opened in a browser for default_profile, and urls2 were opened 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // in a browser for other_profile. 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* new_browser = NULL; 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |browser()| is still around at this point, even though we've closed its 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // window. Thus the browser count for default_profile is 2. 6392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(2u, chrome::GetBrowserCount(default_profile, 6402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->host_desktop_type())); 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_browser = FindOneOtherBrowserForProfile(default_profile, browser()); 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_browser); 6432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 6442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1, tab_strip->count()); 6452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(urls1[0], tab_strip->GetWebContentsAt(0)->GetURL()); 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, chrome::GetBrowserCount(other_profile, 6482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->host_desktop_type())); 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_browser = FindOneOtherBrowserForProfile(other_profile, NULL); 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_browser); 6512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip = new_browser->tab_strip_model(); 6522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1, tab_strip->count()); 6532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(urls2[0], tab_strip->GetWebContentsAt(0)->GetURL()); 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, PRE_UpdateWithTwoProfiles) { 65790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Simulate a browser restart by creating the profiles in the PRE_ part. 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileManager* profile_manager = g_browser_process->profile_manager(); 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 660cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 661cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create two profiles. 6632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath dest_path = profile_manager->user_data_dir(); 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile1 = profile_manager->GetProfile( 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dest_path.Append(FILE_PATH_LITERAL("New Profile 1"))); 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(profile1); 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile2 = profile_manager->GetProfile( 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dest_path.Append(FILE_PATH_LITERAL("New Profile 2"))); 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(profile2); 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 673cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Open some urls with the browsers, and close them. 674cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Browser* browser1 = new Browser( 675cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Browser::CreateParams(Browser::TYPE_TABBED, profile1, 676cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) browser()->host_desktop_type())); 677cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chrome::NewTab(browser1); 678cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ui_test_utils::NavigateToURL(browser1, 679cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) test_server()->GetURL("files/empty.html")); 680cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) browser1->window()->Close(); 681cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 682cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Browser* browser2 = new Browser( 683cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Browser::CreateParams(Browser::TYPE_TABBED, profile2, 684cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) browser()->host_desktop_type())); 685cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chrome::NewTab(browser2); 686cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ui_test_utils::NavigateToURL(browser2, 687cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) test_server()->GetURL("files/form.html")); 688cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) browser2->window()->Close(); 689cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 690cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Set different startup preferences for the 2 profiles. 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<GURL> urls1; 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) urls1.push_back(ui_test_utils::GetTestUrl( 6932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(base::FilePath::kCurrentDirectory), 6942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(FILE_PATH_LITERAL("title1.html")))); 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<GURL> urls2; 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) urls2.push_back(ui_test_utils::GetTestUrl( 6972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(base::FilePath::kCurrentDirectory), 6982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(FILE_PATH_LITERAL("title2.html")))); 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set different startup preferences for the 2 profiles. 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref pref1(SessionStartupPref::URLS); 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref1.urls = urls1; 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref::SetStartupPref(profile1, pref1); 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref pref2(SessionStartupPref::URLS); 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref2.urls = urls2; 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref::SetStartupPref(profile2, pref2); 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 70890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) profile1->GetPrefs()->CommitPendingWrite(); 70990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) profile2->GetPrefs()->CommitPendingWrite(); 71090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 71190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 71246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// See crbug.com/376184 about improvements to this test on Mac. 71346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Disabled because it's flaky. http://crbug.com/379579 71446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, 71546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) DISABLED_UpdateWithTwoProfiles) { 716558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#if defined(OS_WIN) && defined(USE_ASH) 717558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Disable this test in Metro+Ash for now (http://crbug.com/262796). 718a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 719558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch return; 720558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#endif 721558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 72290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Make StartupBrowserCreator::WasRestarted() return true. 72390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) StartupBrowserCreator::was_restarted_read_ = false; 72490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) PrefService* pref_service = g_browser_process->local_state(); 72590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) pref_service->SetBoolean(prefs::kWasRestarted, true); 72690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 72790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ProfileManager* profile_manager = g_browser_process->profile_manager(); 72890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 72990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Open the two profiles. 73090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::FilePath dest_path = profile_manager->user_data_dir(); 73190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 73290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) Profile* profile1 = profile_manager->GetProfile( 73390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) dest_path.Append(FILE_PATH_LITERAL("New Profile 1"))); 73490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(profile1); 73590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 73690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) Profile* profile2 = profile_manager->GetProfile( 73790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) dest_path.Append(FILE_PATH_LITERAL("New Profile 2"))); 73890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(profile2); 73990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Simulate a launch after a browser update. 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int return_code; 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StartupBrowserCreator browser_creator; 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<Profile*> last_opened_profiles; 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_opened_profiles.push_back(profile1); 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_opened_profiles.push_back(profile2); 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser_creator.Start(dummy, profile_manager->user_data_dir(), profile1, 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_opened_profiles, &return_code); 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (SessionRestore::IsRestoring(profile1) || 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionRestore::IsRestoring(profile2)) 752b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoop::current()->RunUntilIdle(); 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The startup URLs are ignored, and instead the last open sessions are 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // restored. 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(profile1->restored_last_session()); 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(profile2->restored_last_session()); 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* new_browser = NULL; 7602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, chrome::GetBrowserCount(profile1, 7612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->host_desktop_type())); 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_browser = FindOneOtherBrowserForProfile(profile1, NULL); 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_browser); 7642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 7652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1, tab_strip->count()); 766cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ("/files/empty.html", 767cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL().path()); 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, chrome::GetBrowserCount(profile2, 7702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->host_desktop_type())); 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_browser = FindOneOtherBrowserForProfile(profile2, NULL); 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_browser); 7732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip = new_browser->tab_strip_model(); 7742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1, tab_strip->count()); 775cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ("/files/form.html", 776cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL().path()); 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfilesWithoutPagesNotLaunched) { 781558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#if defined(OS_WIN) && defined(USE_ASH) 782558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Disable this test in Metro+Ash for now (http://crbug.com/262796). 783a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 784558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch return; 785558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#endif 786558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* default_profile = browser()->profile(); 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileManager* profile_manager = g_browser_process->profile_manager(); 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create 4 more profiles. 7922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath dest_path1 = profile_manager->user_data_dir().Append( 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE_PATH_LITERAL("New Profile 1")); 7942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath dest_path2 = profile_manager->user_data_dir().Append( 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE_PATH_LITERAL("New Profile 2")); 7962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath dest_path3 = profile_manager->user_data_dir().Append( 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE_PATH_LITERAL("New Profile 3")); 7982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath dest_path4 = profile_manager->user_data_dir().Append( 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE_PATH_LITERAL("New Profile 4")); 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile_home1 = profile_manager->GetProfile(dest_path1); 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(profile_home1); 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile_home2 = profile_manager->GetProfile(dest_path2); 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(profile_home2); 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile_last = profile_manager->GetProfile(dest_path3); 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(profile_last); 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile_urls = profile_manager->GetProfile(dest_path4); 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(profile_urls); 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set the profiles to open urls, open last visited pages or display the home 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // page. 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref pref_home(SessionStartupPref::DEFAULT); 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref::SetStartupPref(profile_home1, pref_home); 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref::SetStartupPref(profile_home2, pref_home); 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref pref_last(SessionStartupPref::LAST); 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref::SetStartupPref(profile_last, pref_last); 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<GURL> urls; 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) urls.push_back(ui_test_utils::GetTestUrl( 8212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(base::FilePath::kCurrentDirectory), 8222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(FILE_PATH_LITERAL("title1.html")))); 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref pref_urls(SessionStartupPref::URLS); 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_urls.urls = urls; 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref::SetStartupPref(profile_urls, pref_urls); 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 828cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Open a page with profile_last. 829cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Browser* browser_last = new Browser( 830cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Browser::CreateParams(Browser::TYPE_TABBED, profile_last, 831cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) browser()->host_desktop_type())); 832cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chrome::NewTab(browser_last); 833cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ui_test_utils::NavigateToURL(browser_last, 834cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) test_server()->GetURL("files/empty.html")); 835cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) browser_last->window()->Close(); 836cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 837cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Close the main browser. 8382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::HostDesktopType original_desktop_type = 8392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->host_desktop_type(); 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->window()->Close(); 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Do a simple non-process-startup browser launch. 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int return_code; 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StartupBrowserCreator browser_creator; 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<Profile*> last_opened_profiles; 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_opened_profiles.push_back(profile_home1); 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_opened_profiles.push_back(profile_home2); 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_opened_profiles.push_back(profile_last); 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_opened_profiles.push_back(profile_urls); 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser_creator.Start(dummy, profile_manager->user_data_dir(), profile_home1, 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_opened_profiles, &return_code); 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (SessionRestore::IsRestoring(default_profile) || 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionRestore::IsRestoring(profile_home1) || 8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionRestore::IsRestoring(profile_home2) || 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionRestore::IsRestoring(profile_last) || 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionRestore::IsRestoring(profile_urls)) 860b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoop::current()->RunUntilIdle(); 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* new_browser = NULL; 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The last open profile (the profile_home1 in this case) will always be 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // launched, even if it will open just the home page. 8652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, chrome::GetBrowserCount(profile_home1, original_desktop_type)); 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_browser = FindOneOtherBrowserForProfile(profile_home1, NULL); 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_browser); 8682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 8692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1, tab_strip->count()); 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), 8712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL()); 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // profile_urls opened the urls. 8742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, chrome::GetBrowserCount(profile_urls, original_desktop_type)); 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_browser = FindOneOtherBrowserForProfile(profile_urls, NULL); 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_browser); 8772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip = new_browser->tab_strip_model(); 8782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1, tab_strip->count()); 8792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(urls[0], tab_strip->GetWebContentsAt(0)->GetURL()); 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // profile_last opened the last open pages. 8822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, chrome::GetBrowserCount(profile_last, original_desktop_type)); 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_browser = FindOneOtherBrowserForProfile(profile_last, NULL); 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_browser); 8852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip = new_browser->tab_strip_model(); 8862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1, tab_strip->count()); 887cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ("/files/empty.html", 888cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL().path()); 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // profile_home2 was not launched since it would've only opened the home page. 8912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(0u, chrome::GetBrowserCount(profile_home2, original_desktop_type)); 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, ProfilesLaunchedAfterCrash) { 895558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#if defined(OS_WIN) && defined(USE_ASH) 896558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Disable this test in Metro+Ash for now (http://crbug.com/262796). 897a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 898558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch return; 899558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#endif 900558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // After an unclean exit, all profiles will be launched. However, they won't 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // open any pages automatically. 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileManager* profile_manager = g_browser_process->profile_manager(); 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create 3 profiles. 9072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath dest_path1 = profile_manager->user_data_dir().Append( 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE_PATH_LITERAL("New Profile 1")); 9092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath dest_path2 = profile_manager->user_data_dir().Append( 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE_PATH_LITERAL("New Profile 2")); 9112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath dest_path3 = profile_manager->user_data_dir().Append( 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE_PATH_LITERAL("New Profile 3")); 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile_home = profile_manager->GetProfile(dest_path1); 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(profile_home); 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile_last = profile_manager->GetProfile(dest_path2); 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(profile_last); 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile_urls = profile_manager->GetProfile(dest_path3); 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(profile_urls); 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set the profiles to open the home page, last visited pages or URLs. 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref pref_home(SessionStartupPref::DEFAULT); 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref::SetStartupPref(profile_home, pref_home); 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref pref_last(SessionStartupPref::LAST); 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref::SetStartupPref(profile_last, pref_last); 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<GURL> urls; 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) urls.push_back(ui_test_utils::GetTestUrl( 9302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(base::FilePath::kCurrentDirectory), 9312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath(FILE_PATH_LITERAL("title1.html")))); 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref pref_urls(SessionStartupPref::URLS); 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_urls.urls = urls; 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStartupPref::SetStartupPref(profile_urls, pref_urls); 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Simulate a launch after an unclear exit. 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->window()->Close(); 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static_cast<ProfileImpl*>(profile_home)->last_session_exit_type_ = 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile::EXIT_CRASHED; 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static_cast<ProfileImpl*>(profile_last)->last_session_exit_type_ = 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile::EXIT_CRASHED; 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static_cast<ProfileImpl*>(profile_urls)->last_session_exit_type_ = 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile::EXIT_CRASHED; 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 9472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) dummy.AppendSwitchASCII(switches::kTestType, "browser"); 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int return_code; 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StartupBrowserCreator browser_creator; 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<Profile*> last_opened_profiles; 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_opened_profiles.push_back(profile_home); 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_opened_profiles.push_back(profile_last); 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_opened_profiles.push_back(profile_urls); 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser_creator.Start(dummy, profile_manager->user_data_dir(), profile_home, 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_opened_profiles, &return_code); 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // No profiles are getting restored, since they all display the crash info 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // bar. 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(SessionRestore::IsRestoring(profile_home)); 9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(SessionRestore::IsRestoring(profile_last)); 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(SessionRestore::IsRestoring(profile_urls)); 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The profile which normally opens the home page displays the new tab page. 9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* new_browser = NULL; 9652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, chrome::GetBrowserCount(profile_home, 9662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->host_desktop_type())); 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_browser = FindOneOtherBrowserForProfile(profile_home, NULL); 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_browser); 9692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 9702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1, tab_strip->count()); 9712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents* web_contents = tab_strip->GetWebContentsAt(0); 9722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), web_contents->GetURL()); 973e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch InfoBarService* infobar_service = 974e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch InfoBarService::FromWebContents(web_contents); 975a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch EXPECT_EQ(1U, infobar_service->infobar_count()); 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The profile which normally opens last open pages displays the new tab page. 9782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, chrome::GetBrowserCount(profile_last, 9792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->host_desktop_type())); 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_browser = FindOneOtherBrowserForProfile(profile_last, NULL); 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_browser); 9822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip = new_browser->tab_strip_model(); 9832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1, tab_strip->count()); 9842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_contents = tab_strip->GetWebContentsAt(0); 9852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), web_contents->GetURL()); 986e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch infobar_service = InfoBarService::FromWebContents(web_contents); 987a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch EXPECT_EQ(1U, infobar_service->infobar_count()); 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The profile which normally opens URLs displays the new tab page. 9902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, chrome::GetBrowserCount(profile_urls, 9912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->host_desktop_type())); 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_browser = FindOneOtherBrowserForProfile(profile_urls, NULL); 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_browser); 9942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_strip = new_browser->tab_strip_model(); 9952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1, tab_strip->count()); 9962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_contents = tab_strip->GetWebContentsAt(0); 9972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), web_contents->GetURL()); 998e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch infobar_service = InfoBarService::FromWebContents(web_contents); 999a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch EXPECT_EQ(1U, infobar_service->infobar_count()); 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1001c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1002c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class ManagedModeBrowserCreatorTest : public InProcessBrowserTest { 1003c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected: 1004c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 1005c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) InProcessBrowserTest::SetUpCommandLine(command_line); 1006f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) command_line->AppendSwitchASCII(switches::kManagedUserId, "asdf"); 1007c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1008c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 1009c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1010c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(ManagedModeBrowserCreatorTest, 1011c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) StartupManagedModeProfile) { 1012c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) StartupBrowserCreator browser_creator; 1013c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1014c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Do a simple non-process-startup browser launch. 1015c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 1016c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator, 1017c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) chrome::startup::IS_FIRST_RUN); 1018c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::WindowedNotificationObserver observer( 1019c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::NOTIFICATION_LOAD_STOP, 1020c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::NotificationService::AllSources()); 102190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), false, 102290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) browser()->host_desktop_type())); 1023c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1024c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // This should have created a new browser window. 1025c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 1026c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(new_browser); 1027c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1028c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 1029c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // There should be only one tab. 1030c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1, tab_strip->count()); 1031c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 1032c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 10337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif // !defined(OS_CHROMEOS) 10347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 10357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// These tests are not applicable to Chrome OS as neither master_preferences nor 10367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// the sync promo exist there. 10377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if !defined(OS_CHROMEOS) 10387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 10397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// On a branded Linux build, policy is required to suppress the first-run 10407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// dialog. 10417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if !defined(OS_LINUX) || !defined(GOOGLE_CHROME_BUILD) || \ 10427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) defined(ENABLE_CONFIGURATION_POLICY) 10437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 10447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class StartupBrowserCreatorFirstRunTest : public InProcessBrowserTest { 10457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) protected: 10462385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE; 10477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void SetUpInProcessBrowserTestFixture() OVERRIDE; 10487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 10497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if defined(ENABLE_CONFIGURATION_POLICY) 10507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) policy::MockConfigurationPolicyProvider provider_; 10517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) policy::PolicyMap policy_map_; 10527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif // defined(ENABLE_CONFIGURATION_POLICY) 10537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}; 10547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 10552385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochvoid StartupBrowserCreatorFirstRunTest::SetUpCommandLine( 10562385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch CommandLine* command_line) { 10572385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch command_line->AppendSwitch(switches::kForceFirstRun); 10582385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 10597d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 10602385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochvoid StartupBrowserCreatorFirstRunTest::SetUpInProcessBrowserTestFixture() { 10617d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if defined(ENABLE_CONFIGURATION_POLICY) 10627d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if defined(OS_LINUX) && defined(GOOGLE_CHROME_BUILD) 10637d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Set a policy that prevents the first-run dialog from being shown. 10647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) policy_map_.Set(policy::key::kMetricsReportingEnabled, 10657d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, 10667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::Value::CreateBooleanValue(false), NULL); 10677d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) provider_.UpdateChromePolicy(policy_map_); 10687d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif // defined(OS_LINUX) && defined(GOOGLE_CHROME_BUILD) 10697d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 10707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_CALL(provider_, IsInitializationComplete(_)) 10717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) .WillRepeatedly(Return(true)); 10727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) policy::BrowserPolicyConnector::SetPolicyProviderForTesting(&provider_); 10737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif // defined(ENABLE_CONFIGURATION_POLICY) 10747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 10757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 107646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX) 107746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// http://crbug.com/314819 107846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_SyncPromoForbidden DISABLED_SyncPromoForbidden 107946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#else 108046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_SyncPromoForbidden SyncPromoForbidden 108146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif 108246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest, 108346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) MAYBE_SyncPromoForbidden) { 10847d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Consistently enable the welcome page on all platforms. 10857d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) first_run::SetShouldShowWelcomePage(); 10867d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 10877d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Simulate the following master_preferences: 10887d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // { 10897d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "sync_promo": { 10907d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "show_on_first_run_allowed": false 10917d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 10927d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 10937d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreator browser_creator; 10947d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->profile()->GetPrefs()->SetBoolean( 1095bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch prefs::kSignInPromoShowOnFirstRunAllowed, false); 10967d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 10977d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Do a process-startup browser launch. 10987d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 10997d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator, 11007d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) chrome::startup::IS_FIRST_RUN); 11017d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true, 11027d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->host_desktop_type())); 11037d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 11047d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // This should have created a new browser window. 11057d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 11067d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(new_browser); 11077d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 11087d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Verify that the NTP and the welcome page are shown. 11097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 11107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_EQ(2, tab_strip->count()); 11117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), 11127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL()); 11137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_EQ(internals::GetWelcomePageURL(), 11147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) tab_strip->GetWebContentsAt(1)->GetURL()); 11157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 11167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 111746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX) 111846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// http://crbug.com/314819 111946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_SyncPromoAllowed DISABLED_SyncPromoAllowed 112046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#else 112146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_SyncPromoAllowed SyncPromoAllowed 112246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif 112346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest, 112446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) MAYBE_SyncPromoAllowed) { 11257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Consistently enable the welcome page on all platforms. 11267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) first_run::SetShouldShowWelcomePage(); 11277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 11287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Simulate the following master_preferences: 11297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // { 11307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "sync_promo": { 11317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "show_on_first_run_allowed": true 11327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 11337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 11347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreator browser_creator; 11357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->profile()->GetPrefs()->SetBoolean( 1136bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch prefs::kSignInPromoShowOnFirstRunAllowed, true); 11377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 11387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Do a process-startup browser launch. 11397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 11407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator, 11417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) chrome::startup::IS_FIRST_RUN); 11427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true, 11437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->host_desktop_type())); 11447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 11457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // This should have created a new browser window. 11467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 11477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(new_browser); 11487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 11497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Verify that the sync promo and the welcome page are shown. 11507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 11517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_EQ(2, tab_strip->count()); 11522385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false), 11532385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch tab_strip->GetWebContentsAt(0)->GetURL()); 11547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_EQ(internals::GetWelcomePageURL(), 11557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) tab_strip->GetWebContentsAt(1)->GetURL()); 11567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 11577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 115846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX) 115946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// http://crbug.com/314819 116046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_FirstRunTabsPromoAllowed DISABLED_FirstRunTabsPromoAllowed 116146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#else 116246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_FirstRunTabsPromoAllowed FirstRunTabsPromoAllowed 116346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif 11647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest, 116546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) MAYBE_FirstRunTabsPromoAllowed) { 11667d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Simulate the following master_preferences: 11677d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // { 11687d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "first_run_tabs" : [ 11697d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "files/title1.html" 11707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // ], 11717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "sync_promo": { 11727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "show_on_first_run_allowed": true 11737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 11747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 11757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreator browser_creator; 11767d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html")); 11777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->profile()->GetPrefs()->SetBoolean( 1178bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch prefs::kSignInPromoShowOnFirstRunAllowed, true); 11797d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 11807d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Do a process-startup browser launch. 11817d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 11827d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator, 11837d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) chrome::startup::IS_FIRST_RUN); 11847d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true, 11857d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->host_desktop_type())); 11867d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 11877d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // This should have created a new browser window. 11887d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 11897d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(new_browser); 11907d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 11917d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Verify that the first-run tab is shown and the sync promo has been added. 11927d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 11937d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_EQ(2, tab_strip->count()); 11942385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false), 11952385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch tab_strip->GetWebContentsAt(0)->GetURL()); 11967d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_EQ("title1.html", 11977d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) tab_strip->GetWebContentsAt(1)->GetURL().ExtractFileName()); 11987d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 11997d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 120046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX) 120146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// http://crbug.com/314819 120246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_FirstRunTabsContainSyncPromo \ 120346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) DISABLED_FirstRunTabsContainSyncPromo 120446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#else 120546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_FirstRunTabsContainSyncPromo FirstRunTabsContainSyncPromo 120646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif 12077d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest, 120846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) MAYBE_FirstRunTabsContainSyncPromo) { 12097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Simulate the following master_preferences: 12107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // { 12117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "first_run_tabs" : [ 12127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "files/title1.html", 12137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "chrome://signin/?source=0&next_page=chrome%3A%2F%2Fnewtab%2F" 12147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // ], 12157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "sync_promo": { 12167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "show_on_first_run_allowed": true 12177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 12187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 1219cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 12207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreator browser_creator; 12217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html")); 1222a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) browser_creator.AddFirstRunTab(signin::GetPromoURL(signin::SOURCE_START_PAGE, 1223a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) false)); 12247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->profile()->GetPrefs()->SetBoolean( 1225bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch prefs::kSignInPromoShowOnFirstRunAllowed, true); 12267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 12277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Do a process-startup browser launch. 12287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 12297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator, 12307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) chrome::startup::IS_FIRST_RUN); 12317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true, 12327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->host_desktop_type())); 12337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 12347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // This should have created a new browser window. 12357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 12367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(new_browser); 12377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 12387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Verify that the first-run tabs are shown and no sync promo has been added 12397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // as the first-run tabs contain it already. 12407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 12417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_EQ(2, tab_strip->count()); 12427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_EQ("title1.html", 12437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL().ExtractFileName()); 12442385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false), 12452385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch tab_strip->GetWebContentsAt(1)->GetURL()); 12467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 12477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 124846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX) 124946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// http://crbug.com/314819 125046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_FirstRunTabsContainNTPSyncPromoAllowed \ 125146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) DISABLED_FirstRunTabsContainNTPSyncPromoAllowed 125246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#else 125346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_FirstRunTabsContainNTPSyncPromoAllowed \ 125446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) FirstRunTabsContainNTPSyncPromoAllowed 125546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif 12567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest, 125746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) MAYBE_FirstRunTabsContainNTPSyncPromoAllowed) { 12587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Simulate the following master_preferences: 12597d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // { 12607d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "first_run_tabs" : [ 12617d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "new_tab_page", 12627d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "files/title1.html" 12637d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // ], 12647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "sync_promo": { 12657d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "show_on_first_run_allowed": true 12667d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 12677d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 12687d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreator browser_creator; 1269cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) browser_creator.AddFirstRunTab(GURL("http://new_tab_page")); 12707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html")); 12717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->profile()->GetPrefs()->SetBoolean( 1272bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch prefs::kSignInPromoShowOnFirstRunAllowed, true); 12737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 12747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Do a process-startup browser launch. 12757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 12767d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator, 12777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) chrome::startup::IS_FIRST_RUN); 12787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true, 12797d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->host_desktop_type())); 12807d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 12817d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // This should have created a new browser window. 12827d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 12837d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(new_browser); 12847d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 12857d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Verify that the first-run tabs are shown but the NTP that they contain has 12867d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // been replaced by the sync promo. 12877d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 12887d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_EQ(2, tab_strip->count()); 12892385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(signin::GetPromoURL(signin::SOURCE_START_PAGE, false), 12902385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch tab_strip->GetWebContentsAt(0)->GetURL()); 12917d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_EQ("title1.html", 12927d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) tab_strip->GetWebContentsAt(1)->GetURL().ExtractFileName()); 12937d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 12947d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 129546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX) 129646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// http://crbug.com/314819 129746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_FirstRunTabsContainNTPSyncPromoForbidden \ 129846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) DISABLED_FirstRunTabsContainNTPSyncPromoForbidden 129946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#else 130046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_FirstRunTabsContainNTPSyncPromoForbidden \ 130146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) FirstRunTabsContainNTPSyncPromoForbidden 130246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif 13037d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest, 130446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) MAYBE_FirstRunTabsContainNTPSyncPromoForbidden) { 13057d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Simulate the following master_preferences: 13067d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // { 13077d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "first_run_tabs" : [ 13087d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "new_tab_page", 13097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "files/title1.html" 13107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // ], 13117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "sync_promo": { 13127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "show_on_first_run_allowed": false 13137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 13147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 13157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreator browser_creator; 1316cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) browser_creator.AddFirstRunTab(GURL("http://new_tab_page")); 13177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html")); 13187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->profile()->GetPrefs()->SetBoolean( 1319bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch prefs::kSignInPromoShowOnFirstRunAllowed, false); 13207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 13217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Do a process-startup browser launch. 13227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 13237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator, 13247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) chrome::startup::IS_FIRST_RUN); 13257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true, 13267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->host_desktop_type())); 13277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 13287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // This should have created a new browser window. 13297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 13307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(new_browser); 1331c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 13327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Verify that the first-run tabs are shown, the NTP that they contain has not 13337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // not been replaced by the sync promo and no sync promo has been added. 13347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 13357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_EQ(2, tab_strip->count()); 13367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), 13377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL()); 13387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_EQ("title1.html", 13397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) tab_strip->GetWebContentsAt(1)->GetURL().ExtractFileName()); 13407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 13417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 134246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX) 134346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// http://crbug.com/314819 134446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_FirstRunTabsSyncPromoForbidden \ 134546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) DISABLED_FirstRunTabsSyncPromoForbidden 134646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#else 134746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_FirstRunTabsSyncPromoForbidden FirstRunTabsSyncPromoForbidden 134846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif 13497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest, 135046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) MAYBE_FirstRunTabsSyncPromoForbidden) { 13517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Simulate the following master_preferences: 13527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // { 13537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "first_run_tabs" : [ 13547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "files/title1.html" 13557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // ], 13567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "sync_promo": { 13577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "show_on_first_run_allowed": false 13587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 13597d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 13607d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreator browser_creator; 13617d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser_creator.AddFirstRunTab(test_server()->GetURL("files/title1.html")); 13627d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->profile()->GetPrefs()->SetBoolean( 1363bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch prefs::kSignInPromoShowOnFirstRunAllowed, false); 13647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 13657d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Do a process-startup browser launch. 13667d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 13677d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator, 13687d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) chrome::startup::IS_FIRST_RUN); 13697d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true, 13707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->host_desktop_type())); 13717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 13727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // This should have created a new browser window. 13737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 13747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(new_browser); 13757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 13767d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Verify that the first-run tab is shown and no sync promo has been added. 13777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 13787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_EQ(1, tab_strip->count()); 13797d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_EQ("title1.html", 13807d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL().ExtractFileName()); 13817d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 13827d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 13837d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if defined(ENABLE_CONFIGURATION_POLICY) 138446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) && defined(OS_MACOSX) 138546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// http://crbug.com/314819 138646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_RestoreOnStartupURLsPolicySpecified \ 138746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) DISABLED_RestoreOnStartupURLsPolicySpecified 138846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#else 138946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MAYBE_RestoreOnStartupURLsPolicySpecified \ 139046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) RestoreOnStartupURLsPolicySpecified 139146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif 13927d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorFirstRunTest, 139346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) MAYBE_RestoreOnStartupURLsPolicySpecified) { 13947d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Simulate the following master_preferences: 13957d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // { 13967d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "sync_promo": { 13977d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // "show_on_first_run_allowed": true 13987d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 13997d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // } 14007d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreator browser_creator; 14017d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->profile()->GetPrefs()->SetBoolean( 1402bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch prefs::kSignInPromoShowOnFirstRunAllowed, true); 14037d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 14047d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Set the following user policies: 14057d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // * RestoreOnStartup = RestoreOnStartupIsURLs 14067d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // * RestoreOnStartupURLs = [ "files/title1.html" ] 14077d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) policy_map_.Set(policy::key::kRestoreOnStartup, 14087d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, 14097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) base::Value::CreateIntegerValue( 14107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch SessionStartupPref::kPrefValueURLs), 14117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch NULL); 14127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) base::ListValue startup_urls; 14137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) startup_urls.Append(base::Value::CreateStringValue( 14147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) test_server()->GetURL("files/title1.html").spec())); 14157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) policy_map_.Set(policy::key::kRestoreOnStartupURLs, 14167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, 14177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch startup_urls.DeepCopy(), NULL); 14187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) provider_.UpdateChromePolicy(policy_map_); 14197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) base::RunLoop().RunUntilIdle(); 14207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 14217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Do a process-startup browser launch. 14227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) CommandLine dummy(CommandLine::NO_PROGRAM); 14237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) StartupBrowserCreatorImpl launch(base::FilePath(), dummy, &browser_creator, 14247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) chrome::startup::IS_FIRST_RUN); 14257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(launch.Launch(browser()->profile(), std::vector<GURL>(), true, 14267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) browser()->host_desktop_type())); 14277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 14287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // This should have created a new browser window. 14297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) Browser* new_browser = FindOneOtherBrowser(browser()); 14307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_TRUE(new_browser); 14317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 14327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Verify that the URL specified through policy is shown and no sync promo has 14337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // been added. 14347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) TabStripModel* tab_strip = new_browser->tab_strip_model(); 14357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ASSERT_EQ(1, tab_strip->count()); 14367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) EXPECT_EQ("title1.html", 14377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) tab_strip->GetWebContentsAt(0)->GetURL().ExtractFileName()); 14387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 14397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif // defined(ENABLE_CONFIGURATION_POLICY) 14407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 14417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif // !defined(OS_LINUX) || !defined(GOOGLE_CHROME_BUILD) || 14427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // defined(ENABLE_CONFIGURATION_POLICY) 14437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 14447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif // !defined(OS_CHROMEOS) 1445