| // Copyright 2018 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "extensions/browser/api/cec_private/cec_private_api.h" |
| |
| #include <vector> |
| |
| #include "base/functional/bind.h" |
| #include "base/functional/callback_helpers.h" |
| #include "extensions/browser/api/cec_private/cec_private_delegate.h" |
| #include "extensions/common/api/cec_private.h" |
| #include "extensions/common/manifest_handlers/kiosk_mode_info.h" |
| |
| namespace { |
| |
| const char kKioskOnlyError[] = |
| "Only kiosk enabled extensions are allowed to use this function."; |
| |
| } // namespace |
| |
| namespace extensions { |
| namespace api { |
| |
| CecPrivateFunction::CecPrivateFunction() |
| : delegate_(CecPrivateDelegate::CreateInstance()) {} |
| |
| CecPrivateFunction::~CecPrivateFunction() = default; |
| |
| // Only allow calls from kiosk mode extensions. |
| bool CecPrivateFunction::PreRunValidation(std::string* error) { |
| if (!ExtensionFunction::PreRunValidation(error)) { |
| return false; |
| } |
| |
| if (KioskModeInfo::IsKioskEnabled(extension())) { |
| return true; |
| } |
| |
| *error = kKioskOnlyError; |
| return false; |
| } |
| |
| void CecPrivateFunction::RespondWithNoArguments(void) { |
| Respond(NoArguments()); |
| } |
| |
| CecPrivateSendStandByFunction::CecPrivateSendStandByFunction() = default; |
| |
| CecPrivateSendStandByFunction::~CecPrivateSendStandByFunction() = default; |
| |
| ExtensionFunction::ResponseAction CecPrivateSendStandByFunction::Run() { |
| delegate_->SendStandBy(base::BindOnce( |
| &CecPrivateSendStandByFunction::RespondWithNoArguments, this)); |
| return RespondLater(); |
| } |
| |
| CecPrivateSendWakeUpFunction::CecPrivateSendWakeUpFunction() = default; |
| |
| CecPrivateSendWakeUpFunction::~CecPrivateSendWakeUpFunction() = default; |
| |
| ExtensionFunction::ResponseAction CecPrivateSendWakeUpFunction::Run() { |
| delegate_->SendWakeUp(base::BindOnce( |
| &CecPrivateSendWakeUpFunction::RespondWithNoArguments, this)); |
| return RespondLater(); |
| } |
| |
| CecPrivateQueryDisplayCecPowerStateFunction:: |
| CecPrivateQueryDisplayCecPowerStateFunction() = default; |
| |
| CecPrivateQueryDisplayCecPowerStateFunction:: |
| ~CecPrivateQueryDisplayCecPowerStateFunction() = default; |
| |
| ExtensionFunction::ResponseAction |
| CecPrivateQueryDisplayCecPowerStateFunction::Run() { |
| delegate_->QueryDisplayCecPowerState(base::BindOnce( |
| &CecPrivateQueryDisplayCecPowerStateFunction::HandlePowerStates, this)); |
| return RespondLater(); |
| } |
| |
| void CecPrivateQueryDisplayCecPowerStateFunction::HandlePowerStates( |
| const std::vector<cec_private::DisplayCecPowerState>& power_states) { |
| Respond(ArgumentList( |
| cec_private::QueryDisplayCecPowerState::Results::Create(power_states))); |
| } |
| |
| } // namespace api |
| } // namespace extensions |