| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_PERMISSIONS_SYSTEM_GEOLOCATION_OBSERVATION_H_ |
| #define CHROME_BROWSER_PERMISSIONS_SYSTEM_GEOLOCATION_OBSERVATION_H_ |
| |
| #include "base/scoped_observation.h" |
| #include "chrome/browser/permissions/system/system_permission_settings.h" |
| #include "services/device/public/cpp/geolocation/geolocation_system_permission_manager.h" |
| |
| static_assert(BUILDFLAG(OS_LEVEL_GEOLOCATION_PERMISSION_SUPPORTED)); |
| |
| namespace system_permission_settings { |
| |
| class GeolocationObservation |
| : public ScopedObservation, |
| public device::GeolocationSystemPermissionManager::PermissionObserver { |
| public: |
| explicit GeolocationObservation(SystemPermissionChangedCallback callback); |
| ~GeolocationObservation() override; |
| |
| // device::GeolocationSystemPermissionManager::PermissionObserver: |
| void OnSystemPermissionUpdated( |
| device::LocationSystemPermissionStatus new_status) override; |
| |
| private: |
| SystemPermissionChangedCallback callback_; |
| base::ScopedObservation< |
| device::GeolocationSystemPermissionManager, |
| device::GeolocationSystemPermissionManager::PermissionObserver> |
| observation_{this}; |
| }; |
| |
| } // namespace system_permission_settings |
| |
| #endif // CHROME_BROWSER_PERMISSIONS_SYSTEM_GEOLOCATION_OBSERVATION_H_ |