// Copyright (c) 2012 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 CONTENT_PUBLIC_BROWSER_INDEXED_DB_CONTEXT_H_
#define CONTENT_PUBLIC_BROWSER_INDEXED_DB_CONTEXT_H_

#include <stdint.h>

#include <string>
#include <vector>

#include "base/files/file_path.h"
#include "base/memory/ref_counted.h"
#include "content/common/content_export.h"
#include "content/public/browser/indexed_db_info.h"

namespace base {
class SequencedTaskRunner;
}

namespace content {

// Represents the per-BrowserContext IndexedDB data.
// Call these methods only via the exposed TaskRunner.
class IndexedDBContext : public base::RefCountedThreadSafe<IndexedDBContext> {
 public:
  // Only call the below methods by posting to this TaskRunner.
  virtual base::SequencedTaskRunner* TaskRunner() const = 0;

  // Methods used in response to QuotaManager requests.
  virtual std::vector<IndexedDBInfo> GetAllOriginsInfo() = 0;
  virtual int64_t GetOriginDiskUsage(const GURL& origin_url) = 0;

  // Deletes all indexed db files for the given origin.
  virtual void DeleteForOrigin(const GURL& origin_url) = 0;

  // Copies the indexed db files from this context to another. The
  // indexed db directory in the destination context needs to be empty.
  virtual void CopyOriginData(const GURL& origin_url,
                              IndexedDBContext* dest_context) = 0;

  // Get the file name of the local storage file for the given origin.
  virtual base::FilePath GetFilePathForTesting(
      const GURL& origin_url) const = 0;

  // Set the task runner for tests if browser main loop is not initialized.
  virtual void SetTaskRunnerForTesting(
      base::SequencedTaskRunner* task_runner) = 0;

 protected:
  friend class base::RefCountedThreadSafe<IndexedDBContext>;
  virtual ~IndexedDBContext() {}
};

}  // namespace content

#endif  // CONTENT_PUBLIC_BROWSER_INDEXED_DB_CONTEXT_H_
