1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/renderer/dom_storage/webstoragenamespace_impl.h"
6
7#include "base/logging.h"
8#include "content/common/dom_storage/dom_storage_types.h"
9#include "content/renderer/dom_storage/webstoragearea_impl.h"
10#include "third_party/WebKit/public/platform/WebString.h"
11#include "url/gurl.h"
12
13using blink::WebStorageArea;
14using blink::WebStorageNamespace;
15using blink::WebString;
16
17namespace content {
18
19WebStorageNamespaceImpl::WebStorageNamespaceImpl()
20    : namespace_id_(kLocalStorageNamespaceId) {
21}
22
23WebStorageNamespaceImpl::WebStorageNamespaceImpl(
24    int64 namespace_id)
25    : namespace_id_(namespace_id) {
26  DCHECK_NE(kInvalidSessionStorageNamespaceId, namespace_id);
27}
28
29WebStorageNamespaceImpl::~WebStorageNamespaceImpl() {
30}
31
32WebStorageArea* WebStorageNamespaceImpl::createStorageArea(
33    const WebString& origin) {
34  return new WebStorageAreaImpl(namespace_id_, GURL(origin));
35}
36
37WebStorageNamespace* WebStorageNamespaceImpl::copy() {
38  // By returning NULL, we're telling WebKit to lazily fetch it the next time
39  // session storage is used.  In the WebViewClient::createView, we do the
40  // book-keeping necessary to make it a true copy-on-write despite not doing
41  // anything here, now.
42  return NULL;
43}
44
45bool WebStorageNamespaceImpl::isSameNamespace(
46    const WebStorageNamespace& other) const {
47  const WebStorageNamespaceImpl* other_impl =
48      static_cast<const WebStorageNamespaceImpl*>(&other);
49  return namespace_id_ == other_impl->namespace_id_;
50}
51
52}  // namespace content
53