fake_login_utils.cc revision 7d4cd473f85ac64c3747c96c277f9e506a0d2246
17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// found in the LICENSE file.
47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/browser/chromeos/login/fake_login_utils.h"
67d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/command_line.h"
87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/path_service.h"
97d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/browser/browser_process.h"
107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/browser/chromeos/login/login_display_host.h"
117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/browser/chromeos/login/mock_authenticator.h"
127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/browser/first_run/first_run.h"
137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h"
147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/browser/ui/startup/startup_browser_creator.h"
157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/common/chrome_constants.h"
167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/common/chrome_paths.h"
177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/test/base/testing_profile.h"
187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)namespace chromeos {
217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)FakeLoginUtils::FakeLoginUtils() : should_launch_browser_(false) {}
237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)FakeLoginUtils::~FakeLoginUtils() {}
257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)void FakeLoginUtils::DoBrowserLaunch(Profile* profile,
277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                     LoginDisplayHost* login_host) {
287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  if (should_launch_browser_) {
297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    StartupBrowserCreator browser_creator;
307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    chrome::startup::IsFirstRun first_run =
317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)        first_run::IsChromeFirstRun() ? chrome::startup::IS_FIRST_RUN
327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                      : chrome::startup::IS_NOT_FIRST_RUN;
337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    ASSERT_TRUE(
347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)        browser_creator.LaunchBrowser(*CommandLine::ForCurrentProcess(),
357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                      profile,
367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                      base::FilePath(),
377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                      chrome::startup::IS_PROCESS_STARTUP,
387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                      first_run,
397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                      NULL));
407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  if (login_host)
427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    login_host->Finalize();
437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)void FakeLoginUtils::PrepareProfile(const UserContext& user_context,
467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                    const std::string& display_email,
477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                    bool using_oauth,
487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                    bool has_cookies,
497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                    bool has_active_session,
507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                    LoginUtils::Delegate* delegate) {
517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  UserManager::Get()->UserLoggedIn(
527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      user_context.username, user_context.username_hash, false);
537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Profile* profile;
547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  if (should_launch_browser_) {
557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    profile = CreateProfile(user_context.username);
567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  } else {
577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    profile = new TestingProfile();
587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    g_browser_process->profile_manager()->
597d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)        RegisterTestingProfile(profile, false, false);
607d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
617d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  if (delegate)
627d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    delegate->OnProfilePrepared(profile);
637d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
657d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)void FakeLoginUtils::DelegateDeleted(LoginUtils::Delegate* delegate) {
667d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  NOTREACHED() << "Method not implemented.";
677d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
687d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
697d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)void FakeLoginUtils::CompleteOffTheRecordLogin(const GURL& start_url) {
707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  NOTREACHED() << "Method not implemented.";
717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)void FakeLoginUtils::SetFirstLoginPrefs(PrefService* prefs) {
747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  NOTREACHED() << "Method not implemented.";
757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
767d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)scoped_refptr<Authenticator> FakeLoginUtils::CreateAuthenticator(
787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    LoginStatusConsumer* consumer) {
797d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  authenticator_ =
807d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      new MockAuthenticator(consumer, expected_username_, expected_password_);
817d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  return authenticator_;
827d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
837d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
847d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)void FakeLoginUtils::RestoreAuthenticationSession(Profile* profile) {
857d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  NOTREACHED() << "Method not implemented.";
867d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
877d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
887d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)void FakeLoginUtils::StopBackgroundFetchers() {
897d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  NOTREACHED() << "Method not implemented.";
907d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
917d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
927d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)void FakeLoginUtils::InitRlzDelayed(Profile* user_profile) {
937d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  NOTREACHED() << "Method not implemented.";
947d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
957d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
967d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)Profile* FakeLoginUtils::CreateProfile(const std::string& username_hash) {
977d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  base::FilePath path;
987d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  PathService::Get(chrome::DIR_USER_DATA, &path);
997d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  path = path.AppendASCII(chrome::kProfileDirPrefix + username_hash);
1007d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Profile* profile = g_browser_process->profile_manager()->GetProfile(path);
1017d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  return profile;
1027d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
1037d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1047d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)void FakeLoginUtils::SetExpectedCredentials(const std::string& username,
1057d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                            const std::string& password) {
1067d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  expected_username_ = username;
1077d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  expected_password_ = password;
1087d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  if (authenticator_.get()) {
1097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    static_cast<MockAuthenticator*>(authenticator_.get())->
1107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)        SetExpectedCredentials(username, password);
1117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
1127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
1137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
1147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}  //  namespace chromeos
115