blob: ea72850ff6273225311175c4f07e242420807cb2 [file] [log] [blame]
// Copyright 2014 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/ui/webui/options/chromeos/consumer_management_handler.h"
#include "ash/system/chromeos/devicetype_utils.h"
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/logging.h"
#include "base/values.h"
#include "chrome/browser/chromeos/policy/consumer_management_service.h"
#include "chrome/browser/chromeos/policy/consumer_management_stage.h"
#include "chrome/browser/chromeos/policy/consumer_unenrollment_handler.h"
#include "chrome/browser/chromeos/policy/consumer_unenrollment_handler_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/grit/generated_resources.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/power_manager_client.h"
#include "components/user_manager/user_manager.h"
#include "content/public/browser/web_ui.h"
#include "ui/base/l10n/l10n_util.h"
namespace chromeos {
namespace options {
ConsumerManagementHandler::ConsumerManagementHandler(
policy::ConsumerManagementService* management_service)
: management_service_(management_service) {
}
ConsumerManagementHandler::~ConsumerManagementHandler() {
}
void ConsumerManagementHandler::GetLocalizedValues(
base::DictionaryValue* localized_strings) {
DCHECK(localized_strings);
RegisterTitle(localized_strings, "consumerManagementOverlay",
IDS_OPTIONS_CONSUMER_MANAGEMENT_OVERLAY);
// Enroll.
localized_strings->SetString(
"consumerManagementOverlayEnrollTitle",
ash::SubstituteChromeOSDeviceType(
IDS_OPTIONS_CONSUMER_MANAGEMENT_OVERLAY_ENROLL_TITLE));
localized_strings->SetString(
"consumerManagementOverlayEnrollMessage",
ash::SubstituteChromeOSDeviceType(
IDS_OPTIONS_CONSUMER_MANAGEMENT_OVERLAY_ENROLL_MESSAGE));
localized_strings->SetString(
"consumerManagementOverlayEnroll",
l10n_util::GetStringUTF16(
IDS_OPTIONS_CONSUMER_MANAGEMENT_OVERLAY_ENROLL));
// Unenroll.
localized_strings->SetString(
"consumerManagementOverlayUnenrollTitle",
ash::SubstituteChromeOSDeviceType(
IDS_OPTIONS_CONSUMER_MANAGEMENT_OVERLAY_UNENROLL_TITLE));
localized_strings->SetString(
"consumerManagementOverlayUnenrollMessage",
ash::SubstituteChromeOSDeviceType(
IDS_OPTIONS_CONSUMER_MANAGEMENT_OVERLAY_UNENROLL_MESSAGE));
localized_strings->SetString(
"consumerManagementOverlayUnenroll",
l10n_util::GetStringUTF16(
IDS_OPTIONS_CONSUMER_MANAGEMENT_OVERLAY_UNENROLL));
}
void ConsumerManagementHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback(
"enrollConsumerManagement",
base::Bind(&ConsumerManagementHandler::HandleEnrollConsumerManagement,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
"unenrollConsumerManagement",
base::Bind(&ConsumerManagementHandler::HandleUnenrollConsumerManagement,
base::Unretained(this)));
}
void ConsumerManagementHandler::HandleEnrollConsumerManagement(
const base::ListValue* args) {
if (!user_manager::UserManager::Get()->IsCurrentUserOwner()) {
LOG(ERROR) << "Received enrollConsumerManagement, but the current user is "
<< "not the owner.";
return;
}
CHECK(management_service_);
management_service_->SetStage(
policy::ConsumerManagementStage::EnrollmentRequested());
chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart();
}
void ConsumerManagementHandler::HandleUnenrollConsumerManagement(
const base::ListValue* args) {
if (!user_manager::UserManager::Get()->IsCurrentUserOwner()) {
LOG(ERROR) << "Received unenrollConsumerManagement, but the current user "
<< "is not the owner.";
return;
}
CHECK(management_service_);
management_service_->SetStage(
policy::ConsumerManagementStage::UnenrollmentRequested());
policy::ConsumerUnenrollmentHandlerFactory::GetForBrowserContext(
Profile::FromWebUI(web_ui()))->Start();
}
} // namespace options
} // namespace chromeos