chromium/ash/webui/personalization_app/test/fake_personalization_app_ambient_provider.h

// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ASH_WEBUI_PERSONALIZATION_APP_TEST_FAKE_PERSONALIZATION_APP_AMBIENT_PROVIDER_H_
#define ASH_WEBUI_PERSONALIZATION_APP_TEST_FAKE_PERSONALIZATION_APP_AMBIENT_PROVIDER_H_

#include "ash/webui/personalization_app/personalization_app_ambient_provider.h"

#include <stdint.h>

#include "ash/public/cpp/ambient/common/ambient_settings.h"
#include "ash/webui/personalization_app/mojom/personalization_app.mojom.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/receiver.h"

namespace content {
class WebUI;
}  // namespace content

namespace ash::personalization_app {

class FakePersonalizationAppAmbientProvider
    : public PersonalizationAppAmbientProvider {
 public:
  explicit FakePersonalizationAppAmbientProvider(content::WebUI* web_ui);

  FakePersonalizationAppAmbientProvider(
      const FakePersonalizationAppAmbientProvider&) = delete;
  FakePersonalizationAppAmbientProvider& operator=(
      const FakePersonalizationAppAmbientProvider&) = delete;

  ~FakePersonalizationAppAmbientProvider() override;

  // PersonalizationAppAmbientProvider:
  void BindInterface(
      mojo::PendingReceiver<personalization_app::mojom::AmbientProvider>
          receiver) override;

  // personalization_app::mojom::AmbientProvider
  void IsAmbientModeEnabled(IsAmbientModeEnabledCallback callback) override;
  void SetAmbientObserver(
      mojo::PendingRemote<ash::personalization_app::mojom::AmbientObserver>
          observer) override {}
  void SetAmbientModeEnabled(bool enabled) override {}
  void SetAmbientTheme(mojom::AmbientTheme ambient_theme) override {}
  void SetScreenSaverDuration(int) override {}
  void SetTopicSource(mojom::TopicSource topic_source) override {}
  void SetTemperatureUnit(
      ash::AmbientModeTemperatureUnit temperature_unit) override {}
  void SetAlbumSelected(const std::string& id,
                        mojom::TopicSource topic_source,
                        bool selected) override {}
  void SetPageViewed() override {}
  void StartScreenSaverPreview() override {}
  void FetchSettingsAndAlbums() override {}
  void ShouldShowTimeOfDayBanner(
      ShouldShowTimeOfDayBannerCallback callback) override;
  void HandleTimeOfDayBannerDismissed() override {}
  void IsGeolocationEnabledForSystemServices(
      IsGeolocationEnabledForSystemServicesCallback callback) override;
  void EnableGeolocationForSystemServices() override;

 private:
  bool geolocation_enabled_for_system = true;
  mojo::Receiver<ash::personalization_app::mojom::AmbientProvider>
      ambient_receiver_{this};
};

}  // namespace ash::personalization_app

#endif  // ASH_WEBUI_PERSONALIZATION_APP_TEST_FAKE_PERSONALIZATION_APP_AMBIENT_PROVIDER_H_