| Index: chrome/browser/chrome_main_browsertest.cc
|
| diff --git a/chrome/browser/chrome_main_browsertest.cc b/chrome/browser/chrome_main_browsertest.cc
|
| index c194e55f258489fa1dfb8516166ec7a44959462f..6aba1615510c14f39a17e2468d4b723556f30a56 100644
|
| --- a/chrome/browser/chrome_main_browsertest.cc
|
| +++ b/chrome/browser/chrome_main_browsertest.cc
|
| @@ -12,6 +12,7 @@
|
| #include "chrome/browser/ui/browser_commands.h"
|
| #include "chrome/browser/ui/browser_finder.h"
|
| #include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| +#include "chrome/browser/ui/user_data_dir_dialog.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| #include "chrome/common/chrome_paths.h"
|
| #include "chrome/common/chrome_switches.h"
|
| @@ -136,3 +137,47 @@ IN_PROC_BROWSER_TEST_F(ChromeMainTest, SecondLaunchFromIncognitoWithNormalUrl) {
|
| }
|
|
|
| #endif // !OS_MACOSX
|
| +
|
| +// These tests only apply to the Windows version; see chrome_browser_main.cc:
|
| +// function GetUserDataDir() for details.
|
| +#if defined(OS_WIN)
|
| +class ChromeMainUserDataDirTest : public InProcessBrowserTest {
|
| + public:
|
| + ChromeMainUserDataDirTest(): callback_invoked_(false) {}
|
| +
|
| + bool is_callback_invoked() { return callback_invoked_; }
|
| + void ShowUserDataDirDialog() {
|
| + // Set callback invoked flag and restore the correct user data dir.
|
| + callback_invoked_ = true;
|
| + PathService::Override(chrome::DIR_USER_DATA, user_data_dir_);
|
| + }
|
| +
|
| + protected:
|
| + base::FilePath user_data_dir_;
|
| + bool callback_invoked_;
|
| +
|
| + virtual void SetUp() OVERRIDE {
|
| + InProcessBrowserTest::SetUp();
|
| +
|
| + // Save the actual user data dir.
|
| + PathService::Get(chrome::DIR_USER_DATA, &user_data_dir_);
|
| +
|
| + // Override user data dir to a bogus value. Make sure to set |create| flag
|
| + // to false so that PathService::OverrideAndCreateIfNeeded does not create
|
| + // a folder at this path.
|
| + base::FilePath bogus_user_data_dir("/bogus/should/not/exist");
|
| + PathService::OverrideAndCreateIfNeeded(chrome::DIR_USER_DATA,
|
| + bogus_user_data_dir,
|
| + false);
|
| +
|
| + // Install custom ShowUserDataDirDialog callback.
|
| + chrome::InstallCustomShowUserDataDirDialogCallbackForTest(
|
| + base::Bind(&ChromeMainUserDataDirTest::ShowUserDataDirDialog, this));
|
| + }
|
| +};
|
| +
|
| +IN_PROC_BROWSER_TEST_F(ChromeMainUserDataDirTest, BogusUserDataDir) {
|
| + // The ShowUserDataDirDialog should have been invoked and we did not crash.
|
| + ASSERT_TRUE(is_callback_invoked());
|
| +}
|
| +#endif // OS_WIN
|
|
|