blob: c34f02a8e5179ac1c35c0de35b003898b775a486 [file] [log] [blame]
// 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();
}