| Index: webkit/browser/dom_storage/dom_storage_namespace.cc
 | 
| diff --git a/webkit/browser/dom_storage/dom_storage_namespace.cc b/webkit/browser/dom_storage/dom_storage_namespace.cc
 | 
| deleted file mode 100644
 | 
| index fe3195bcbbfe811d03fc0b1e13914bb82b27122e..0000000000000000000000000000000000000000
 | 
| --- a/webkit/browser/dom_storage/dom_storage_namespace.cc
 | 
| +++ /dev/null
 | 
| @@ -1,187 +0,0 @@
 | 
| -// 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.
 | 
| -
 | 
| -#include "webkit/browser/dom_storage/dom_storage_namespace.h"
 | 
| -
 | 
| -#include "base/basictypes.h"
 | 
| -#include "base/bind.h"
 | 
| -#include "base/location.h"
 | 
| -#include "base/logging.h"
 | 
| -#include "webkit/browser/dom_storage/dom_storage_area.h"
 | 
| -#include "webkit/browser/dom_storage/dom_storage_task_runner.h"
 | 
| -#include "webkit/browser/dom_storage/session_storage_database.h"
 | 
| -#include "webkit/common/dom_storage/dom_storage_types.h"
 | 
| -
 | 
| -namespace dom_storage {
 | 
| -
 | 
| -DomStorageNamespace::DomStorageNamespace(
 | 
| -    const base::FilePath& directory,
 | 
| -    DomStorageTaskRunner* task_runner)
 | 
| -    : namespace_id_(kLocalStorageNamespaceId),
 | 
| -      directory_(directory),
 | 
| -      task_runner_(task_runner) {
 | 
| -}
 | 
| -
 | 
| -DomStorageNamespace::DomStorageNamespace(
 | 
| -    int64 namespace_id,
 | 
| -    const std::string& persistent_namespace_id,
 | 
| -    SessionStorageDatabase* session_storage_database,
 | 
| -    DomStorageTaskRunner* task_runner)
 | 
| -    : namespace_id_(namespace_id),
 | 
| -      persistent_namespace_id_(persistent_namespace_id),
 | 
| -      task_runner_(task_runner),
 | 
| -      session_storage_database_(session_storage_database) {
 | 
| -  DCHECK_NE(kLocalStorageNamespaceId, namespace_id);
 | 
| -}
 | 
| -
 | 
| -DomStorageNamespace::~DomStorageNamespace() {
 | 
| -}
 | 
| -
 | 
| -DomStorageArea* DomStorageNamespace::OpenStorageArea(const GURL& origin) {
 | 
| -  if (AreaHolder* holder = GetAreaHolder(origin)) {
 | 
| -    ++(holder->open_count_);
 | 
| -    return holder->area_.get();
 | 
| -  }
 | 
| -  DomStorageArea* area;
 | 
| -  if (namespace_id_ == kLocalStorageNamespaceId) {
 | 
| -    area = new DomStorageArea(origin, directory_, task_runner_.get());
 | 
| -  } else {
 | 
| -    area = new DomStorageArea(
 | 
| -        namespace_id_, persistent_namespace_id_, origin,
 | 
| -        session_storage_database_.get(), task_runner_.get());
 | 
| -  }
 | 
| -  areas_[origin] = AreaHolder(area, 1);
 | 
| -  return area;
 | 
| -}
 | 
| -
 | 
| -void DomStorageNamespace::CloseStorageArea(DomStorageArea* area) {
 | 
| -  AreaHolder* holder = GetAreaHolder(area->origin());
 | 
| -  DCHECK(holder);
 | 
| -  DCHECK_EQ(holder->area_.get(), area);
 | 
| -  --(holder->open_count_);
 | 
| -  // TODO(michaeln): Clean up areas that aren't needed in memory anymore.
 | 
| -  // The in-process-webkit based impl didn't do this either, but would be nice.
 | 
| -}
 | 
| -
 | 
| -DomStorageArea* DomStorageNamespace::GetOpenStorageArea(const GURL& origin) {
 | 
| -  AreaHolder* holder = GetAreaHolder(origin);
 | 
| -  if (holder && holder->open_count_)
 | 
| -    return holder->area_.get();
 | 
| -  return NULL;
 | 
| -}
 | 
| -
 | 
| -DomStorageNamespace* DomStorageNamespace::Clone(
 | 
| -    int64 clone_namespace_id,
 | 
| -    const std::string& clone_persistent_namespace_id) {
 | 
| -  DCHECK_NE(kLocalStorageNamespaceId, namespace_id_);
 | 
| -  DCHECK_NE(kLocalStorageNamespaceId, clone_namespace_id);
 | 
| -  DomStorageNamespace* clone = new DomStorageNamespace(
 | 
| -      clone_namespace_id, clone_persistent_namespace_id,
 | 
| -      session_storage_database_.get(), task_runner_.get());
 | 
| -  AreaMap::const_iterator it = areas_.begin();
 | 
| -  // Clone the in-memory structures.
 | 
| -  for (; it != areas_.end(); ++it) {
 | 
| -    DomStorageArea* area = it->second.area_->ShallowCopy(
 | 
| -        clone_namespace_id, clone_persistent_namespace_id);
 | 
| -    clone->areas_[it->first] = AreaHolder(area, 0);
 | 
| -  }
 | 
| -  // And clone the on-disk structures, too.
 | 
| -  if (session_storage_database_.get()) {
 | 
| -    task_runner_->PostShutdownBlockingTask(
 | 
| -        FROM_HERE,
 | 
| -        DomStorageTaskRunner::COMMIT_SEQUENCE,
 | 
| -        base::Bind(base::IgnoreResult(&SessionStorageDatabase::CloneNamespace),
 | 
| -                   session_storage_database_.get(), persistent_namespace_id_,
 | 
| -                   clone_persistent_namespace_id));
 | 
| -  }
 | 
| -  return clone;
 | 
| -}
 | 
| -
 | 
| -void DomStorageNamespace::DeleteLocalStorageOrigin(const GURL& origin) {
 | 
| -  DCHECK(!session_storage_database_.get());
 | 
| -  AreaHolder* holder = GetAreaHolder(origin);
 | 
| -  if (holder) {
 | 
| -    holder->area_->DeleteOrigin();
 | 
| -    return;
 | 
| -  }
 | 
| -  if (!directory_.empty()) {
 | 
| -    scoped_refptr<DomStorageArea> area =
 | 
| -        new DomStorageArea(origin, directory_, task_runner_.get());
 | 
| -    area->DeleteOrigin();
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -void DomStorageNamespace::DeleteSessionStorageOrigin(const GURL& origin) {
 | 
| -  DomStorageArea* area = OpenStorageArea(origin);
 | 
| -  area->FastClear();
 | 
| -  CloseStorageArea(area);
 | 
| -}
 | 
| -
 | 
| -void DomStorageNamespace::PurgeMemory(PurgeOption option) {
 | 
| -  if (directory_.empty())
 | 
| -    return;  // We can't purge w/o backing on disk.
 | 
| -  AreaMap::iterator it = areas_.begin();
 | 
| -  while (it != areas_.end()) {
 | 
| -    // Leave it alone if changes are pending
 | 
| -    if (it->second.area_->HasUncommittedChanges()) {
 | 
| -      ++it;
 | 
| -      continue;
 | 
| -    }
 | 
| -
 | 
| -    // If not in use, we can shut it down and remove
 | 
| -    // it from our collection entirely.
 | 
| -    if (it->second.open_count_ == 0) {
 | 
| -      it->second.area_->Shutdown();
 | 
| -      areas_.erase(it++);
 | 
| -      continue;
 | 
| -    }
 | 
| -
 | 
| -    if (option == PURGE_AGGRESSIVE) {
 | 
| -      // If aggressive is true, we clear caches and such
 | 
| -      // for opened areas.
 | 
| -      it->second.area_->PurgeMemory();
 | 
| -    }
 | 
| -
 | 
| -    ++it;
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -void DomStorageNamespace::Shutdown() {
 | 
| -  AreaMap::const_iterator it = areas_.begin();
 | 
| -  for (; it != areas_.end(); ++it)
 | 
| -    it->second.area_->Shutdown();
 | 
| -}
 | 
| -
 | 
| -unsigned int DomStorageNamespace::CountInMemoryAreas() const {
 | 
| -  unsigned int area_count = 0;
 | 
| -  for (AreaMap::const_iterator it = areas_.begin(); it != areas_.end(); ++it) {
 | 
| -    if (it->second.area_->IsLoadedInMemory())
 | 
| -      ++area_count;
 | 
| -  }
 | 
| -  return area_count;
 | 
| -}
 | 
| -
 | 
| -DomStorageNamespace::AreaHolder*
 | 
| -DomStorageNamespace::GetAreaHolder(const GURL& origin) {
 | 
| -  AreaMap::iterator found = areas_.find(origin);
 | 
| -  if (found == areas_.end())
 | 
| -    return NULL;
 | 
| -  return &(found->second);
 | 
| -}
 | 
| -
 | 
| -// AreaHolder
 | 
| -
 | 
| -DomStorageNamespace::AreaHolder::AreaHolder()
 | 
| -    : open_count_(0) {
 | 
| -}
 | 
| -
 | 
| -DomStorageNamespace::AreaHolder::AreaHolder(
 | 
| -    DomStorageArea* area, int count)
 | 
| -    : area_(area), open_count_(count) {
 | 
| -}
 | 
| -
 | 
| -DomStorageNamespace::AreaHolder::~AreaHolder() {
 | 
| -}
 | 
| -
 | 
| -}  // namespace dom_storage
 | 
| 
 |