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)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_TEST_BASE_BROWSER_WITH_TEST_WINDOW_TEST_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_TEST_BASE_BROWSER_WITH_TEST_WINDOW_TEST_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/at_exit.h"
99ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/host_desktop.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/test_browser_window.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_profile.h"
14a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "content/public/test/test_browser_thread_bundle.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_renderer_host.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(OS_CHROMEOS)
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/user_manager.h"
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/chromeos/settings/cros_settings.h"
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/chromeos/settings/device_settings_service.h"
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/win/scoped_ole_initializer.h"
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GURL;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(USE_ASH)
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace ash {
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace test {
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class AshTestHelper;
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_AURA)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace aura {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace test {
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AuraTestHelper;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(TOOLKIT_VIEWS)
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace views {
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ViewsDelegate;
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NavigationController;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContents;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Base class for browser based unit tests. BrowserWithTestWindowTest creates a
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Browser with a TestingProfile and TestBrowserWindow. To add a tab use
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// AddTab. For example, the following adds a tab and navigates to
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// two URLs that target the TestWebContents:
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   // Add a new tab and navigate it. This will be at index 0.
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   AddTab(browser(), GURL("http://foo/1"));
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   NavigationController* controller =
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//       &browser()->tab_strip_model()->GetWebContentsAt(0)->GetController();
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   // Navigate somewhere else.
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   GURL url2("http://foo/2");
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   NavigateAndCommit(controller, url2);
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   // This is equivalent to the above, and lets you test pending navigations.
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   browser()->OpenURL(OpenURLParams(
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//       GURL("http://foo/2"), GURL(), CURRENT_TAB,
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//       content::PAGE_TRANSITION_TYPED, false));
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   CommitPendingLoad(controller);
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Subclasses must invoke BrowserWithTestWindowTest::SetUp as it is responsible
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// for creating the various objects of this class.
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserWithTestWindowTest : public testing::Test {
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Creates a BrowserWithTestWindowTest for which the initial window will be
825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // a tabbed browser created on the native desktop, which is not a hosted app.
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BrowserWithTestWindowTest();
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Creates a BrowserWithTestWindowTest for which the initial window will be
865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // the specified type.
875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  BrowserWithTestWindowTest(Browser::Type browser_type,
885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                            chrome::HostDesktopType host_desktop_type,
895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                            bool hosted_app);
905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual ~BrowserWithTestWindowTest();
92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetUp() OVERRIDE;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void TearDown() OVERRIDE;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  BrowserWindow* window() const { return window_.get(); }
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Browser* browser() const { return browser_.get(); }
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_browser(Browser* browser) {
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    browser_.reset(browser);
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  Browser* release_browser() WARN_UNUSED_RESULT {
104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return browser_.release();
105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1071e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  TestingProfile* profile() const { return profile_; }
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1091e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  TestingProfile* GetProfile() { return profile_; }
1107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  BrowserWindow* release_browser_window() WARN_UNUSED_RESULT {
1127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    return window_.release();
1137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
1147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Adds a tab to |browser| with the given URL and commits the load.
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This is a convenience function. The new tab will be added at index 0.
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void AddTab(Browser* browser, const GURL& url);
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Commits the pending load on the given controller. It will keep the
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // URL of the pending load. If there is no pending load, this does nothing.
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void CommitPendingLoad(content::NavigationController* controller);
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates a pending navigation on the given navigation controller to the
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // given URL with the default parameters and the commits the load with a page
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ID one larger than any seen. This emulates what happens on a new
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // navigation.
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void NavigateAndCommit(content::NavigationController* controller,
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         const GURL& url);
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Navigates the current tab. This is a wrapper around NavigateAndCommit.
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void NavigateAndCommitActiveTab(const GURL& url);
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Set the |title| of the current tab.
1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void NavigateAndCommitActiveTabWithTitle(Browser* browser,
1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                           const GURL& url,
1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                           const base::string16& title);
1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Destroys the browser, window, and profile created by this class. This is
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // invoked from the destructor.
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void DestroyBrowserAndProfile();
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates the profile used by this test. The caller owns the return value.
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual TestingProfile* CreateProfile();
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Destroys the profile which was created through |CreateProfile|.
1461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual void DestroyProfile(TestingProfile* profile);
1471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Creates the BrowserWindow used by this test. The caller owns the return
149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // value. Can return NULL to use the default window created by Browser.
150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual BrowserWindow* CreateBrowserWindow();
151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Creates the browser given |profile|, |browser_type|, |hosted_app|,
1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // |host_desktop_type| and |browser_window|. The caller owns the return value.
154a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual Browser* CreateBrowser(Profile* profile,
1555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                 Browser::Type browser_type,
1565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                 bool hosted_app,
157a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                 chrome::HostDesktopType host_desktop_type,
158a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                 BrowserWindow* browser_window);
159a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
160cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private:
161cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if !defined(OS_CHROMEOS) && defined(TOOLKIT_VIEWS)
1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Creates the ViewsDelegate to use, may be overriden to create a different
1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // ViewsDelegate.
164cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  views::ViewsDelegate* CreateViewsDelegate();
1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif
1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // We need to create a MessageLoop, otherwise a bunch of things fails.
168a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  content::TestBrowserThreadBundle thread_bundle_;
1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::ShadowingAtExitManager at_exit_manager_;
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(OS_CHROMEOS)
172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  chromeos::ScopedTestDeviceSettingsService test_device_settings_service_;
173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  chromeos::ScopedTestCrosSettings test_cros_settings_;
174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  chromeos::ScopedTestUserManager test_user_manager_;
175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif
176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1771e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // The profile will automatically be destroyed by TearDown using the
1781e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // |DestroyProfile()| function - which can be overwritten by derived testing
1791e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // frameworks.
1801e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  TestingProfile* profile_;
181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_ptr<BrowserWindow> window_;  // Usually a TestBrowserWindow.
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<Browser> browser_;
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The existence of this object enables tests via
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // RenderViewHostTester.
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content::RenderViewHostTestEnabler rvh_test_enabler_;
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(USE_ASH)
189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_ptr<ash::test::AshTestHelper> ash_test_helper_;
190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_AURA)
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<aura::test::AuraTestHelper> aura_test_helper_;
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(TOOLKIT_VIEWS)
1965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  scoped_ptr<views::ViewsDelegate> views_delegate_;
1975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif
1985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ui::ScopedOleInitializer ole_initializer_;
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // The type of browser to create (tabbed or popup).
2045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  Browser::Type browser_type_;
2055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // The desktop to create the initial window on.
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chrome::HostDesktopType host_desktop_type_;
2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Whether the browser is part of a hosted app.
2105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  bool hosted_app_;
2115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(BrowserWithTestWindowTest);
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_TEST_BASE_BROWSER_WITH_TEST_WINDOW_TEST_H_
216