// Copyright 2021 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 "components/exo/security_delegate.h" #include #include #include "ash/public/cpp/app_types_util.h" #include "components/exo/shell_surface_util.h" namespace exo { namespace { class DefaultSecurityDelegate : public SecurityDelegate { public: ~DefaultSecurityDelegate() override = default; // SecurityDelegate: std::string GetSecurityContext() const override { return ""; } bool CanLockPointer(aura::Window* toplevel) const override { // TODO(b/200896773): Move this out from exo's default security delegate // define in client's security delegates. return ash::IsArcWindow(toplevel) || ash::IsLacrosWindow(toplevel); } }; } // namespace SecurityDelegate::~SecurityDelegate() = default; // static std::unique_ptr SecurityDelegate::GetDefaultSecurityDelegate() { return std::make_unique(); } bool SecurityDelegate::CanSelfActivate(aura::Window* window) const { // TODO(b/233691818): The default should be "false", and clients should // override that if they need to self-activate. // // Unfortunately, several clients don't have their own SecurityDelegate yet, // so we will continue to use the old exo::Permissions stuff until they do. return HasPermissionToActivate(window); } bool SecurityDelegate::CanLockPointer(aura::Window* window) const { return false; } } // namespace exo