// Copyright 2018 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.

#ifndef CHROME_BROWSER_RESOURCE_COORDINATOR_SITE_CHARACTERISTICS_DATA_STORE_H_
#define CHROME_BROWSER_RESOURCE_COORDINATOR_SITE_CHARACTERISTICS_DATA_STORE_H_

#include <memory>

#include "base/macros.h"
#include "chrome/browser/resource_coordinator/site_characteristics_data_reader.h"
#include "chrome/browser/resource_coordinator/site_characteristics_data_writer.h"
#include "chrome/browser/resource_coordinator/site_characteristics_tab_visibility.h"
#include "components/keyed_service/core/keyed_service.h"
#include "url/origin.h"

namespace resource_coordinator {

// Pure virtual interface for a site characteristics data store.
class SiteCharacteristicsDataStore : public KeyedService {
 public:
  SiteCharacteristicsDataStore() = default;
  ~SiteCharacteristicsDataStore() override {}

  // Returns a SiteCharacteristicsDataReader for the given origin.
  virtual std::unique_ptr<SiteCharacteristicsDataReader> GetReaderForOrigin(
      const url::Origin& origin) = 0;

  // Returns a SiteCharacteristicsDataWriter for the given origin.
  //
  // |tab_visibility| indicates the current visibility of the tab. The writer
  // starts in an unloaded state, NotifyTabLoaded() must be called explicitly
  // afterwards if the site is loaded.
  virtual std::unique_ptr<SiteCharacteristicsDataWriter> GetWriterForOrigin(
      const url::Origin& origin,
      TabVisibility tab_visibility) = 0;

  // Indicate if the SiteCharacteristicsDataWriter served by this data store
  // actually persist informations.
  virtual bool IsRecordingForTesting() = 0;

 private:
  DISALLOW_COPY_AND_ASSIGN(SiteCharacteristicsDataStore);
};

}  // namespace resource_coordinator

#endif  // CHROME_BROWSER_RESOURCE_COORDINATOR_SITE_CHARACTERISTICS_DATA_STORE_H_
