// Copyright 2021 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_SERVICES_APP_SERVICE_PUBLIC_CPP_APP_CAPABILITY_ACCESS_CACHE_H_ #define COMPONENTS_SERVICES_APP_SERVICE_PUBLIC_CPP_APP_CAPABILITY_ACCESS_CACHE_H_ #include <map> #include <set> #include <vector> #include "base/component_export.h" #include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "base/observer_list_types.h" #include "base/sequence_checker.h" #include "components/account_id/account_id.h" #include "components/services/app_service/public/cpp/capability_access.h" #include "components/services/app_service/public/cpp/capability_access_update.h" namespace apps { // An in-memory cache of app capability accesses, recording which apps are using // sensitive capabilities like camera or microphone. Can be queried // synchronously for information about current capability usage, and can be // observed to receive updates about changes to capability usage. // // AppServiceProxy sees a stream of `apps::CapabilityAccessPtr` "deltas", or // changes in capability access, received from publishers. This cache stores the // "sum" of those previous deltas. When a new delta is received, observers are // presented with an `apps:::CapabilityAccessUpdate` containing information // about what has changed, and then the new delta is "added" to the stored // state. // // This class is not thread-safe. class COMPONENT_EXPORT(APP_UPDATE) AppCapabilityAccessCache { … }; } // namespace apps #endif // COMPONENTS_SERVICES_APP_SERVICE_PUBLIC_CPP_APP_CAPABILITY_ACCESS_CACHE_H_