blob: 0971f889835f7b72e57e799e7bef4c0bfacf7754 [file] [log] [blame]
// Copyright 2013 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_BROWSER_DOM_STORAGE_DOM_STORAGE_CONTEXT_WRAPPER_H_
#define CONTENT_BROWSER_DOM_STORAGE_DOM_STORAGE_CONTEXT_WRAPPER_H_
#include "base/memory/ref_counted.h"
#include "content/common/content_export.h"
#include "content/public/browser/dom_storage_context.h"
namespace base {
class FilePath;
}
namespace quota {
class SpecialStoragePolicy;
}
namespace content {
class DOMStorageContextImpl;
// This is owned by BrowserContext (aka Profile) and encapsulates all
// per-profile dom storage state.
class CONTENT_EXPORT DOMStorageContextWrapper :
NON_EXPORTED_BASE(public DOMStorageContext),
public base::RefCountedThreadSafe<DOMStorageContextWrapper> {
public:
// If |data_path| is empty, nothing will be saved to disk.
DOMStorageContextWrapper(const base::FilePath& data_path,
quota::SpecialStoragePolicy* special_storage_policy);
// DOMStorageContext implementation.
virtual void GetLocalStorageUsage(
const GetLocalStorageUsageCallback& callback) OVERRIDE;
virtual void GetSessionStorageUsage(
const GetSessionStorageUsageCallback& callback) OVERRIDE;
virtual void DeleteLocalStorage(const GURL& origin) OVERRIDE;
virtual void DeleteSessionStorage(
const SessionStorageUsageInfo& usage_info) OVERRIDE;
virtual void SetSaveSessionStorageOnDisk() OVERRIDE;
virtual scoped_refptr<SessionStorageNamespace>
RecreateSessionStorage(const std::string& persistent_id) OVERRIDE;
virtual void StartScavengingUnusedSessionStorage() OVERRIDE;
// Called to free up memory that's not strictly needed.
void PurgeMemory();
// Used by content settings to alter the behavior around
// what data to keep and what data to discard at shutdown.
// The policy is not so straight forward to describe, see
// the implementation for details.
void SetForceKeepSessionState();
// Called when the BrowserContext/Profile is going away.
void Shutdown();
private:
friend class DOMStorageMessageFilter; // for access to context()
friend class SessionStorageNamespaceImpl; // ditto
friend class base::RefCountedThreadSafe<DOMStorageContextWrapper>;
virtual ~DOMStorageContextWrapper();
DOMStorageContextImpl* context() const { return context_.get(); }
scoped_refptr<DOMStorageContextImpl> context_;
DISALLOW_IMPLICIT_CONSTRUCTORS(DOMStorageContextWrapper);
};
} // namespace content
#endif // CONTENT_BROWSER_DOM_STORAGE_DOM_STORAGE_CONTEXT_WRAPPER_H_