blob: 1bc9bf344525450b8532b40829b6bfb9224337d0 [file] [log] [blame]
// 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_DOM_STORAGE_CONTEXT_H_
#define CONTENT_PUBLIC_BROWSER_DOM_STORAGE_CONTEXT_H_
#include <string>
#include <vector>
#include "base/callback.h"
namespace url {
class Origin;
}
namespace content {
class BrowserContext;
struct StorageUsageInfo;
class SessionStorageNamespace;
struct SessionStorageUsageInfo;
// Represents the per-BrowserContext Local Storage data.
class DOMStorageContext {
public:
using GetLocalStorageUsageCallback =
base::OnceCallback<void(const std::vector<StorageUsageInfo>&)>;
using GetSessionStorageUsageCallback =
base::OnceCallback<void(const std::vector<SessionStorageUsageInfo>&)>;
// Returns a collection of origins using local storage to the given callback.
virtual void GetLocalStorageUsage(GetLocalStorageUsageCallback callback) = 0;
// Returns a collection of origins using session storage to the given
// callback.
virtual void GetSessionStorageUsage(
GetSessionStorageUsageCallback callback) = 0;
// Deletes the local storage for the origin of |origin_url|. |callback| is
// called when the deletion is sent to the database and GetLocalStorageUsage()
// will not return entries for |origin_url| anymore.
virtual void DeleteLocalStorage(const url::Origin& origin,
base::OnceClosure callback) = 0;
// Removes traces of deleted data from the local storage backend.
virtual void PerformLocalStorageCleanup(base::OnceClosure callback) = 0;
// Deletes the session storage data identified by |usage_info|.
virtual void DeleteSessionStorage(const SessionStorageUsageInfo& usage_info,
base::OnceClosure callback) = 0;
virtual void PerformSessionStorageCleanup(base::OnceClosure callback) = 0;
// If this is called, sessionStorage data will be stored on disk, and can be
// restored after a browser restart (with RecreateSessionStorage). This
// function must be called right after DOMStorageContextWrapper is created,
// and before it's used.
virtual void SetSaveSessionStorageOnDisk() = 0;
// Creates a SessionStorageNamespace with the given |namespace_id|. Used
// after tabs are restored by session restore. When created, the
// SessionStorageNamespace with the correct |namespace_id| will be
// associated with the persisted sessionStorage data.
virtual scoped_refptr<SessionStorageNamespace> RecreateSessionStorage(
const std::string& namespace_id) = 0;
// Starts deleting sessionStorages which don't have an associated
// SessionStorageNamespace alive. Called when SessionStorageNamespaces have
// been created after a session restore, or a session restore won't happen.
virtual void StartScavengingUnusedSessionStorage() = 0;
protected:
virtual ~DOMStorageContext() {}
};
} // namespace content
#endif // CONTENT_PUBLIC_BROWSER_DOM_STORAGE_CONTEXT_H_