| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/automation/testing_automation_provider.h" |
| |
| #include "base/values.h" |
| #include "chrome/browser/automation/automation_provider_json.h" |
| #include "chrome/browser/automation/automation_provider_observers.h" |
| #include "chrome/browser/chromeos/cros/cros_library.h" |
| #include "chrome/browser/chromeos/cros/screen_lock_library.h" |
| #include "chrome/browser/chromeos/login/existing_user_controller.h" |
| |
| void TestingAutomationProvider::LoginAsGuest(DictionaryValue* args, |
| IPC::Message* reply_message) { |
| chromeos::ExistingUserController* controller = |
| chromeos::ExistingUserController::current_controller(); |
| // Set up an observer (it will delete itself). |
| new LoginManagerObserver(this, reply_message); |
| controller->LoginAsGuest(); |
| } |
| |
| void TestingAutomationProvider::Login(DictionaryValue* args, |
| IPC::Message* reply_message) { |
| std::string username, password; |
| if (!args->GetString("username", &username) || |
| !args->GetString("password", &password)) { |
| AutomationJSONReply(this, reply_message).SendError( |
| "Invalid or missing args"); |
| return; |
| } |
| |
| chromeos::ExistingUserController* controller = |
| chromeos::ExistingUserController::current_controller(); |
| // Set up an observer (it will delete itself). |
| new LoginManagerObserver(this, reply_message); |
| controller->Login(username, password); |
| } |
| |
| // Logging out could have other undesirable side effects: session_manager is |
| // killed, so its children, including chrome and the window manager will also |
| // be killed. SSH connections might be closed, the test binary might be killed. |
| void TestingAutomationProvider::Logout(DictionaryValue* args, |
| IPC::Message* reply_message) { |
| // Send success before stopping session because if we're a child of |
| // session manager then we'll die when the session is stopped. |
| AutomationJSONReply(this, reply_message).SendSuccess(NULL); |
| if (chromeos::CrosLibrary::Get()->EnsureLoaded()) |
| chromeos::CrosLibrary::Get()->GetLoginLibrary()->StopSession(""); |
| } |
| |
| void TestingAutomationProvider::ScreenLock(DictionaryValue* args, |
| IPC::Message* reply_message) { |
| new ScreenLockUnlockObserver(this, reply_message, true); |
| chromeos::CrosLibrary::Get()->GetScreenLockLibrary()-> |
| NotifyScreenLockRequested(); |
| } |
| |
| void TestingAutomationProvider::ScreenUnlock(DictionaryValue* args, |
| IPC::Message* reply_message) { |
| new ScreenLockUnlockObserver(this, reply_message, false); |
| chromeos::CrosLibrary::Get()->GetScreenLockLibrary()-> |
| NotifyScreenUnlockRequested(); |
| } |