| OLD | NEW |
| (Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "chrome/browser/ui/ash/lock_screen_action_handler.h" |
| 6 |
| 7 #include "ash/public/interfaces/constants.mojom.h" |
| 8 #include "base/logging.h" |
| 9 #include "content/public/common/service_manager_connection.h" |
| 10 #include "services/service_manager/public/cpp/connector.h" |
| 11 |
| 12 namespace { |
| 13 |
| 14 ash::mojom::ActionHandlerState ActionStateToMojo( |
| 15 lock_screen_apps::ActionState state) { |
| 16 switch (state) { |
| 17 case lock_screen_apps::ActionState::kNotSupported: |
| 18 return ash::mojom::ActionHandlerState::kNotSupported; |
| 19 case lock_screen_apps::ActionState::kNotAvailable: |
| 20 return ash::mojom::ActionHandlerState::kNotSupported; |
| 21 case lock_screen_apps::ActionState::kAvailable: |
| 22 return ash::mojom::ActionHandlerState::kAvailable; |
| 23 case lock_screen_apps::ActionState::kLaunching: |
| 24 return ash::mojom::ActionHandlerState::kLaunching; |
| 25 case lock_screen_apps::ActionState::kActive: |
| 26 return ash::mojom::ActionHandlerState::kActive; |
| 27 case lock_screen_apps::ActionState::kHidden: |
| 28 return ash::mojom::ActionHandlerState::kHidden; |
| 29 } |
| 30 NOTREACHED() << "Unexpected lock screen app action state " |
| 31 << static_cast<int>(state); |
| 32 return ash::mojom::ActionHandlerState::kNotSupported; |
| 33 } |
| 34 |
| 35 } // namespace |
| 36 |
| 37 LockScreenActionHandler::LockScreenActionHandler( |
| 38 lock_screen_apps::StateController* state_controller) |
| 39 : lock_screen_apps_state_controller_(state_controller), |
| 40 observer_(this), |
| 41 binding_(this) {} |
| 42 |
| 43 LockScreenActionHandler::~LockScreenActionHandler() {} |
| 44 |
| 45 void LockScreenActionHandler::Init() { |
| 46 if (!lock_screen_apps_state_controller_) |
| 47 return; |
| 48 |
| 49 service_manager::Connector* connector = |
| 50 content::ServiceManagerConnection::GetForProcess()->GetConnector(); |
| 51 connector->BindInterface(ash::mojom::kServiceName, |
| 52 &action_handler_state_controller_); |
| 53 action_handler_state_controller_->SetActionHandler( |
| 54 binding_.CreateInterfacePtrAndBind()); |
| 55 |
| 56 observer_.Add(lock_screen_apps_state_controller_); |
| 57 |
| 58 // Currently the only supported action. |
| 59 const lock_screen_apps::Action kAction = lock_screen_apps::Action::kNewNote; |
| 60 OnLockScreenAppsStateChanged( |
| 61 kAction, lock_screen_apps_state_controller_->GetActionState(kAction)); |
| 62 } |
| 63 |
| 64 void LockScreenActionHandler::RequestHandleAction( |
| 65 ash::mojom::ActionHandlerAction action) { |
| 66 if (action != ash::mojom::ActionHandlerAction::kNewNote) { |
| 67 LOG(ERROR) << "Unexpected action " << action; |
| 68 return; |
| 69 } |
| 70 |
| 71 lock_screen_apps_state_controller_->HandleAction( |
| 72 lock_screen_apps::Action::kNewNote); |
| 73 } |
| 74 |
| 75 void LockScreenActionHandler::OnLockScreenAppsStateChanged( |
| 76 lock_screen_apps::Action action, |
| 77 lock_screen_apps::ActionState state) { |
| 78 if (action != lock_screen_apps::Action::kNewNote) { |
| 79 LOG(ERROR) << "Unexpected action " << static_cast<int>(action); |
| 80 return; |
| 81 } |
| 82 |
| 83 action_handler_state_controller_->UpdateActionState( |
| 84 ash::mojom::ActionHandlerAction::kNewNote, ActionStateToMojo(state)); |
| 85 } |
| OLD | NEW |