in_process_browser_test.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
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_IN_PROCESS_BROWSER_TEST_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_TEST_BASE_IN_PROCESS_BROWSER_TEST_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/scoped_temp_dir.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/page_transition_types.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/browser_test.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/browser_test_base.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base {
18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class CommandLine;
20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_MACOSX)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace mac {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ScopedNSAutoreleasePool;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace mac
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif  // defined(OS_MACOSX)
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_WIN)
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace win {
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass ScopedCOMInitializer;
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif  // defined(OS_WIN)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace base
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Browser;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Profile;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentRendererClient;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Base class for tests wanting to bring up a browser in the unit test process.
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Writing tests with InProcessBrowserTest is slightly different than that of
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// other tests. This is necessitated by InProcessBrowserTest running a message
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// loop. To use InProcessBrowserTest do the following:
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// . Use the macro IN_PROC_BROWSER_TEST_F to define your test.
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// . Your test method is invoked on the ui thread. If you need to block until
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   state changes you'll need to run the message loop from your test method.
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   For example, if you need to wait till a find bar has completely been shown
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   you'll need to invoke content::RunMessageLoop. When the message bar is
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   shown, invoke MessageLoop::current()->Quit() to return control back to your
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   test method.
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// . If you subclass and override SetUp, be sure and invoke
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   InProcessBrowserTest::SetUp. (But see also SetUpOnMainThread,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   SetUpInProcessBrowserTestFixture and other related hook methods for a
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   cleaner alternative).
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Following three hook methods are called in sequence before calling
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// BrowserMain(), thus no browser has been created yet. They are mainly for
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// setting up the environment for running the browser.
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// . SetUpUserDataDirectory()
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// . SetUpCommandLine()
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// . SetUpInProcessBrowserTestFixture()
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// SetUpOnMainThread() is called just after creating the default browser object
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and before executing the real test code. It's mainly for setting up things
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// related to the browser object and associated window, like opening a new Tab
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// with a testing page loaded.
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// TearDownOnMainThread() is called just after executing the real test code to
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// do necessary cleanup before the browser is torn down.
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TearDownInProcessBrowserTestFixture() is called after BrowserMain() exits to
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// cleanup things setup for running the browser.
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// By default InProcessBrowserTest creates a single Browser (as returned from
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the CreateBrowser method). You can obviously create more as needed.
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// InProcessBrowserTest disables the sandbox when running.
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// See ui_test_utils for a handful of methods designed for use with this class.
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// It's possible to write browser tests that span a restart by splitting each
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// run of the browser process into a separate test. Example:
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// IN_PROC_BROWSER_TEST_F(Foo, PRE_Bar) {
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   do something
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// }
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// IN_PROC_BROWSER_TEST_F(Foo, Bar) {
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//   verify something persisted from before
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// }
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  This is recursive, so PRE_PRE_Bar would run before PRE_BAR.
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class InProcessBrowserTest : public content::BrowserTestBase {
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InProcessBrowserTest();
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~InProcessBrowserTest();
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Configures everything for an in process browser test, then invokes
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // BrowserMain. BrowserMain ends up invoking RunTestOnMainThreadLoop.
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetUp() OVERRIDE;
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Restores state configured in SetUp.
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void TearDown() OVERRIDE;
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the browser created by CreateBrowser.
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Browser* browser() const { return browser_; }
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Convenience methods for adding tabs to a Browser.
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void AddTabAtIndexToBrowser(Browser* browser,
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              int index,
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const GURL& url,
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              content::PageTransition transition);
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void AddTabAtIndex(int index, const GURL& url,
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     content::PageTransition transition);
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Initializes the contents of the user data directory. Called by SetUp()
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // after creating the user data directory, but before any browser is launched.
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If a test wishes to set up some initial non-empty state in the user data
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // directory before the browser starts up, it can do so here. Returns true if
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // successful.
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool SetUpUserDataDirectory() WARN_UNUSED_RESULT;
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // BrowserTestBase:
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RunTestOnMainThreadLoop() OVERRIDE;
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates a browser with a single tab (about:blank), waits for the tab to
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // finish loading and shows the browser.
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This is invoked from Setup.
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Browser* CreateBrowser(Profile* profile);
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Similar to |CreateBrowser|, but creates an incognito browser.
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Browser* CreateIncognitoBrowser();
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates a browser for a popup window with a single tab (about:blank), waits
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // for the tab to finish loading, and shows the browser.
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Browser* CreateBrowserForPopup(Profile* profile);
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates a browser for an application and waits for it to load and shows
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // the browser.
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Browser* CreateBrowserForApp(const std::string& app_name, Profile* profile);
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called from the various CreateBrowser methods to add a blank tab, wait for
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // the navigation to complete, and show the browser's window.
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void AddBlankTabAndShow(Browser* browser);
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined OS_MACOSX
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Return a CommandLine object that is used to relaunch the browser_test
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // binary as a browser process. This function is deliberately not defined on
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // the Mac because re-using an existing browser process when launching from
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // the command line isn't a concept that we support on the Mac; AppleEvents
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // are the Mac solution for the same need. Any test based on these functions
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // doesn't apply to the Mac.
156a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  base::CommandLine GetCommandLineForRelaunch();
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the autorelease pool in use inside RunTestOnMainThreadLoop().
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::mac::ScopedNSAutoreleasePool* AutoreleasePool() const {
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return autorelease_pool_;
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // OS_MACOSX
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1667d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  void set_exit_when_last_browser_closes(bool value) {
167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    exit_when_last_browser_closes_ = value;
168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
170116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void set_open_about_blank_on_browser_launch(bool value) {
171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    open_about_blank_on_browser_launch_ = value;
172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
174eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // This must be called before RunTestOnMainThreadLoop() to have any effect.
175eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  void set_multi_desktop_test(bool multi_desktop_test) {
176eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    multi_desktop_test_ = multi_desktop_test;
177eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  }
178eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates a user data directory for the test if one is needed. Returns true
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // if successful.
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool CreateUserDataDirectory() WARN_UNUSED_RESULT;
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Quits all open browsers and waits until there are no more browsers.
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void QuitBrowsers();
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Prepare command line that will be used to launch the child browser process
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // with an in-process test.
189a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  void PrepareTestCommandLine(base::CommandLine* command_line);
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Browser created from CreateBrowser.
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Browser* browser_;
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Temporary user data directory. Used only when a user data directory is not
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // specified in the command line.
1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::ScopedTempDir temp_user_data_dir_;
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // True if we should exit the tests after the last browser instance closes.
199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  bool exit_when_last_browser_closes_;
200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // True if the about:blank tab should be opened when the browser is launched.
202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  bool open_about_blank_on_browser_launch_;
203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
204eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // True if this is a multi-desktop test (in which case this browser test will
205eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // not ensure that Browsers are only created on the tested desktop).
206eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  bool multi_desktop_test_;
207eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::mac::ScopedNSAutoreleasePool* autorelease_pool_;
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // OS_MACOSX
211eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
2125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_WIN)
213eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  scoped_ptr<base::win::ScopedCOMInitializer> com_initializer_;
214eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_TEST_BASE_IN_PROCESS_BROWSER_TEST_H_
218