chromium/ash/system/focus_mode/sounds/soundscape/test/fake_soundscapes_downloader.h

// 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 ASH_SYSTEM_FOCUS_MODE_SOUNDS_SOUNDSCAPE_TEST_FAKE_SOUNDSCAPES_DOWNLOADER_H_
#define ASH_SYSTEM_FOCUS_MODE_SOUNDS_SOUNDSCAPE_TEST_FAKE_SOUNDSCAPES_DOWNLOADER_H_

#include <optional>

#include "ash/system/focus_mode/sounds/soundscape/soundscape_types.h"
#include "ash/system/focus_mode/sounds/soundscape/soundscapes_downloader.h"

namespace ash {

class ASH_EXPORT FakeSoundscapesDownloader : public SoundscapesDownloader {
 public:
  FakeSoundscapesDownloader();
  ~FakeSoundscapesDownloader() override;

  // Designate `playlist` to be returned in the `FetchConfiguration()` call.
  void SetPlaylistResponse(const SoundscapePlaylist& playlist);

  void FetchConfiguration(ConfigurationCallback callback) override;
  GURL ResolveUrl(std::string_view path) override;

 private:
  std::optional<SoundscapePlaylist> test_playlist_;
};

}  // namespace ash

#endif  // ASH_SYSTEM_FOCUS_MODE_SOUNDS_SOUNDSCAPE_TEST_FAKE_SOUNDSCAPES_DOWNLOADER_H_