| Index: chrome/browser/ui/ash/lock_screen_action_handler.cc
|
| diff --git a/chrome/browser/ui/ash/lock_screen_action_handler.cc b/chrome/browser/ui/ash/lock_screen_action_handler.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c5328e602446cc22406089f978be09db42c19abb
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/ash/lock_screen_action_handler.cc
|
| @@ -0,0 +1,85 @@
|
| +// Copyright 2017 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/ash/lock_screen_action_handler.h"
|
| +
|
| +#include "ash/public/interfaces/constants.mojom.h"
|
| +#include "base/logging.h"
|
| +#include "content/public/common/service_manager_connection.h"
|
| +#include "services/service_manager/public/cpp/connector.h"
|
| +
|
| +namespace {
|
| +
|
| +ash::mojom::ActionHandlerState ActionStateToMojo(
|
| + lock_screen_apps::ActionState state) {
|
| + switch (state) {
|
| + case lock_screen_apps::ActionState::kNotSupported:
|
| + return ash::mojom::ActionHandlerState::kNotSupported;
|
| + case lock_screen_apps::ActionState::kNotAvailable:
|
| + return ash::mojom::ActionHandlerState::kNotSupported;
|
| + case lock_screen_apps::ActionState::kAvailable:
|
| + return ash::mojom::ActionHandlerState::kAvailable;
|
| + case lock_screen_apps::ActionState::kLaunching:
|
| + return ash::mojom::ActionHandlerState::kLaunching;
|
| + case lock_screen_apps::ActionState::kActive:
|
| + return ash::mojom::ActionHandlerState::kActive;
|
| + case lock_screen_apps::ActionState::kHidden:
|
| + return ash::mojom::ActionHandlerState::kHidden;
|
| + }
|
| + NOTREACHED() << "Unexpected lock screen app action state "
|
| + << static_cast<int>(state);
|
| + return ash::mojom::ActionHandlerState::kNotSupported;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +LockScreenActionHandler::LockScreenActionHandler(
|
| + lock_screen_apps::StateController* state_controller)
|
| + : lock_screen_apps_state_controller_(state_controller),
|
| + observer_(this),
|
| + binding_(this) {}
|
| +
|
| +LockScreenActionHandler::~LockScreenActionHandler() {}
|
| +
|
| +void LockScreenActionHandler::Init() {
|
| + if (!lock_screen_apps_state_controller_)
|
| + return;
|
| +
|
| + service_manager::Connector* connector =
|
| + content::ServiceManagerConnection::GetForProcess()->GetConnector();
|
| + connector->BindInterface(ash::mojom::kServiceName,
|
| + &action_handler_state_controller_);
|
| + action_handler_state_controller_->SetActionHandler(
|
| + binding_.CreateInterfacePtrAndBind());
|
| +
|
| + observer_.Add(lock_screen_apps_state_controller_);
|
| +
|
| + // Currently the only supported action.
|
| + const lock_screen_apps::Action kAction = lock_screen_apps::Action::kNewNote;
|
| + OnLockScreenAppsStateChanged(
|
| + kAction, lock_screen_apps_state_controller_->GetActionState(kAction));
|
| +}
|
| +
|
| +void LockScreenActionHandler::RequestHandleAction(
|
| + ash::mojom::ActionHandlerAction action) {
|
| + if (action != ash::mojom::ActionHandlerAction::kNewNote) {
|
| + LOG(ERROR) << "Unexpected action " << action;
|
| + return;
|
| + }
|
| +
|
| + lock_screen_apps_state_controller_->HandleAction(
|
| + lock_screen_apps::Action::kNewNote);
|
| +}
|
| +
|
| +void LockScreenActionHandler::OnLockScreenAppsStateChanged(
|
| + lock_screen_apps::Action action,
|
| + lock_screen_apps::ActionState state) {
|
| + if (action != lock_screen_apps::Action::kNewNote) {
|
| + LOG(ERROR) << "Unexpected action " << static_cast<int>(action);
|
| + return;
|
| + }
|
| +
|
| + action_handler_state_controller_->UpdateActionState(
|
| + ash::mojom::ActionHandlerAction::kNewNote, ActionStateToMojo(state));
|
| +}
|
|
|