tab_contents_iterator_unittest.cc revision 3551c9c881056c480085172ff9840cab31610854
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/tab_contents/tab_contents_iterator.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_registry_simple.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/prefs/testing_pref_service.h" 968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chrome/browser/browser_process.h" 1068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chrome/browser/browser_shutdown.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/lifetime/application_lifetime.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/profiles/profile_manager.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/browser.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/browser_commands.h" 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/browser_list.h" 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/host_desktop.h" 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/tabs/tab_strip_model.h" 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/pref_names.h" 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/test/base/browser_with_test_window_test.h" 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/test/base/test_browser_window.h" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/testing_browser_process.h" 2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef BrowserWithTestWindowTest BrowserListTest; 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace { 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Helper function to iterate and count all the tabs. 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)size_t CountAllTabs() { 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) size_t count = 0; 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) for (TabContentsIterator iterator; !iterator.done(); iterator.Next()) 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ++count; 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return count; 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)TEST_F(BrowserListTest, TabContentsIteratorVerifyCount) { 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Make sure we have 1 window to start with. 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(1U, 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_NATIVE)->size()); 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(0U, CountAllTabs()); 4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Create more browsers/windows. 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) Browser::CreateParams native_params(profile(), 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) chrome::HOST_DESKTOP_TYPE_NATIVE); 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) scoped_ptr<Browser> browser2( 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) chrome::CreateBrowserWithTestWindowForParams(&native_params)); 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Create browser 3 and 4 on the Ash desktop (the TabContentsIterator 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // shouldn't see the difference). 51d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) Browser::CreateParams ash_params(profile(), chrome::HOST_DESKTOP_TYPE_ASH); 5268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) scoped_ptr<Browser> browser3( 53d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) chrome::CreateBrowserWithTestWindowForParams(&ash_params)); 54d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) scoped_ptr<Browser> browser4( 5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) chrome::CreateBrowserWithTestWindowForParams(&ash_params)); 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Sanity checks. 58d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#if defined(OS_CHROMEOS) 5968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // The ash desktop is the native desktop on Chrome OS. 60d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(4U, 6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_NATIVE)->size()); 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#else 6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(2U, 6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_NATIVE)->size()); 6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(2U, 6668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_ASH)->size()); 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif 6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(0, browser()->tab_strip_model()->count()); 6968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) EXPECT_EQ(0, browser2->tab_strip_model()->count()); 7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(0, browser3->tab_strip_model()->count()); 7158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(0, browser4->tab_strip_model()->count()); 7258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(0U, CountAllTabs()); 744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Add some tabs. 764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) for (size_t i = 0; i < 3; ++i) 774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) chrome::NewTab(browser2.get()); 784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) chrome::NewTab(browser3.get()); 7958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 8058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(4U, CountAllTabs()); 8158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 8258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Close some tabs. 8358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) browser2->tab_strip_model()->CloseAllTabs(); 8468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 85d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(1U, CountAllTabs()); 8658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 8758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Add lots of tabs. 8858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) for (size_t i = 0; i < 41; ++i) 8958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) chrome::NewTab(browser()); 9058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 9158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(42U, CountAllTabs()); 9258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Close all remaining tabs to keep all the destructors happy. 9358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) browser3->tab_strip_model()->CloseAllTabs(); 9458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 9558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 9658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)TEST_F(BrowserListTest, TabContentsIteratorVerifyBrowser) { 9758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Make sure we have 1 window to start with. 9858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(1U, 9958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_NATIVE)->size()); 10058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 10168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Create more browsers/windows. 102d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) Browser::CreateParams native_params(profile(), 103d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) chrome::HOST_DESKTOP_TYPE_NATIVE); 104d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) scoped_ptr<Browser> browser2( 10558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) chrome::CreateBrowserWithTestWindowForParams(&native_params)); 10658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Create browser 3 on the Ash desktop (the TabContentsIterator shouldn't see 10758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // the difference). 10858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) Browser::CreateParams ash_params(profile(), chrome::HOST_DESKTOP_TYPE_ASH); 10968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) scoped_ptr<Browser> browser3( 11058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) chrome::CreateBrowserWithTestWindowForParams(&ash_params)); 111d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 1124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Sanity checks. 11358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if defined(OS_CHROMEOS) 11458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // The ash desktop is the native desktop on Chrome OS. 11558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(3U, 11658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_NATIVE)->size()); 11758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#else 118d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(2U, 11958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_NATIVE)->size()); 12058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(1U, 12158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_ASH)->size()); 12258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif 12358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(0, browser()->tab_strip_model()->count()); 12458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(0, browser2->tab_strip_model()->count()); 1254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(0, browser3->tab_strip_model()->count()); 1264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(0U, CountAllTabs()); 1284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 12958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Add some tabs. 13058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) for (size_t i = 0; i < 3; ++i) 13158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) chrome::NewTab(browser2.get()); 1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < 2; ++i) 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) chrome::NewTab(browser3.get()); 13458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 13503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) size_t count = 0; 1364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) for (TabContentsIterator iterator; !iterator.done(); iterator.Next(), 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ++count) { 1384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (count < 3) 1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(browser2.get(), iterator.browser()); 14058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) else if (count < 5) 14158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(browser3.get(), iterator.browser()); 14258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) else 14358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ADD_FAILURE(); 14458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 14558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 14658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Close some tabs. 14758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) browser2->tab_strip_model()->CloseAllTabs(); 14858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) browser3->tab_strip_model()->CloseWebContentsAt(1, TabStripModel::CLOSE_NONE); 14958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 150d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) count = 0; 1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (TabContentsIterator iterator; !iterator.done(); iterator.Next(), 15258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ++count) { 15358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (count == 0) 15458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(browser3.get(), iterator.browser()); 15558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) else 15658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ADD_FAILURE(); 15758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 15858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 15958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Now make it one tab per browser. 160d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) chrome::NewTab(browser()); 16158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) chrome::NewTab(browser2.get()); 16258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 16358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) count = 0; 16458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) for (TabContentsIterator iterator; !iterator.done(); iterator.Next(), 1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ++count) { 16603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (count == 0) 16758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_EQ(browser(), iterator.browser()); 1685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) else if (count == 1) 1694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(browser2.get(), iterator.browser()); 1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) else if (count == 2) 1714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(browser3.get(), iterator.browser()); 1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) else 17358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ADD_FAILURE(); 17458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 17558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 17658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Close all remaining tabs to keep all the destructors happy. 17758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) browser2->tab_strip_model()->CloseAllTabs(); 17858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) browser3->tab_strip_model()->CloseAllTabs(); 17958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 18058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 18158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if defined(OS_CHROMEOS) 182d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)// Calling AttemptRestart on ChromeOS will exit the test. 18358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define MAYBE_AttemptRestart DISABLED_AttemptRestart 18458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#else 18558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define MAYBE_AttemptRestart AttemptRestart 1865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 18703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 18858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)TEST_F(BrowserListTest, MAYBE_AttemptRestart) { 1895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(g_browser_process); 1904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) TestingPrefServiceSimple testing_pref_service; 1915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) testing_pref_service.registry()->RegisterBooleanPref( 1924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) prefs::kWasRestarted, false); 1935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) testing_pref_service.registry()->RegisterBooleanPref( 19458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) prefs::kRestartLastSessionOnShutdown, 19558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) false); 19658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 19758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) TestingBrowserProcess* testing_browser_process = 198d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) TestingBrowserProcess::GetGlobal(); 199d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) testing_browser_process->SetLocalState(&testing_pref_service); 2004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(g_browser_process->local_state()); 2015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ProfileManager* profile_manager = new ProfileManager(base::FilePath()); 2024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) testing_browser_process->SetProfileManager(profile_manager); 2034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) chrome::AttemptRestart(); 2054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Cancel the effects of us calling chrome::AttemptRestart. Otherwise tests 2064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // ran after this one will fail. 2074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser_shutdown::SetTryingToQuit(false); 2084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(testing_pref_service.GetBoolean(prefs::kWasRestarted)); 2104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) testing_browser_process->SetLocalState(NULL); 2114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 2124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)