Index: chrome/browser/chromeos/login/login_browsertest.cc |
diff --git a/chrome/browser/chromeos/login/login_browsertest.cc b/chrome/browser/chromeos/login/login_browsertest.cc |
index 85880b122f529d4518e1c7aca1aedb9cb1ac17c5..5d1cffa918977d0d326c66efcda4307e9ae11e78 100644 |
--- a/chrome/browser/chromeos/login/login_browsertest.cc |
+++ b/chrome/browser/chromeos/login/login_browsertest.cc |
@@ -5,6 +5,8 @@ |
#include "ash/shell.h" |
#include "ash/system/tray/system_tray.h" |
#include "base/command_line.h" |
+#include "base/json/json_file_value_serializer.h" |
+#include "base/path_service.h" |
#include "base/strings/string_util.h" |
#include "chrome/browser/chrome_notification_types.h" |
#include "chrome/browser/chromeos/login/login_manager_test.h" |
@@ -17,7 +19,9 @@ |
#include "chrome/browser/profiles/profiles_state.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/common/chrome_constants.h" |
+#include "chrome/common/chrome_paths.h" |
#include "chrome/common/chrome_switches.h" |
+#include "chrome/common/pref_names.h" |
#include "chrome/test/base/in_process_browser_test.h" |
#include "chrome/test/base/interactive_test_utils.h" |
#include "chrome/test/base/tracing.h" |
@@ -143,6 +147,33 @@ class LoginTest : public chromeos::LoginManagerTest { |
} |
}; |
+class LoginOfflineTest : public LoginTest { |
+ public: |
+ LoginOfflineTest() {} |
+ ~LoginOfflineTest() override {} |
+ |
+ bool SetUpUserDataDirectory() override { |
+ base::FilePath user_data_dir; |
+ CHECK(PathService::Get(chrome::DIR_USER_DATA, &user_data_dir)); |
+ base::FilePath local_state_path = |
+ user_data_dir.Append(chrome::kLocalStateFilename); |
+ base::DictionaryValue local_state_dict; |
+ |
+ // Set webview disabled flag only when local state file does not exist. |
+ // Otherwise, we break PRE tests that leave state in it. |
+ if (!base::PathExists(local_state_path)) { |
+ // TODO(rsorokin): Fix offline test for webview signin. |
+ // http://crbug.com/475569 |
+ local_state_dict.SetBoolean(prefs::kWebviewSigninDisabled, true); |
+ |
+ CHECK(JSONFileValueSerializer(local_state_path) |
+ .Serialize(local_state_dict)); |
+ } |
+ |
+ return LoginTest::SetUpUserDataDirectory(); |
+ } |
+}; |
+ |
// Used to make sure that the system tray is visible and within the screen |
// bounds after login. |
void TestSystemTrayIsVisible() { |
@@ -215,14 +246,14 @@ IN_PROC_BROWSER_TEST_F(LoginSigninTest, WebUIVisible) { |
ASSERT_TRUE(tracing::EndTracing(&json_events)); |
} |
-IN_PROC_BROWSER_TEST_F(LoginTest, PRE_GaiaAuthOffline) { |
+IN_PROC_BROWSER_TEST_F(LoginOfflineTest, PRE_GaiaAuthOffline) { |
RegisterUser(kTestUser); |
chromeos::StartupUtils::MarkOobeCompleted(); |
chromeos::CrosSettings::Get()->SetBoolean( |
chromeos::kAccountsPrefShowUserNamesOnSignIn, false); |
} |
-IN_PROC_BROWSER_TEST_F(LoginTest, GaiaAuthOffline) { |
+IN_PROC_BROWSER_TEST_F(LoginOfflineTest, GaiaAuthOffline) { |
bool show_user; |
ASSERT_TRUE(chromeos::CrosSettings::Get()->GetBoolean( |
chromeos::kAccountsPrefShowUserNamesOnSignIn, &show_user)); |