diff options
Diffstat (limited to 'chromium/content/browser/quota/mock_quota_manager.cc')
-rw-r--r-- | chromium/content/browser/quota/mock_quota_manager.cc | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/chromium/content/browser/quota/mock_quota_manager.cc b/chromium/content/browser/quota/mock_quota_manager.cc new file mode 100644 index 00000000000..0343f39d01f --- /dev/null +++ b/chromium/content/browser/quota/mock_quota_manager.cc @@ -0,0 +1,147 @@ +// Copyright 2014 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 "content/browser/quota/mock_quota_manager.h" + +#include "base/memory/ref_counted.h" +#include "base/memory/scoped_ptr.h" +#include "base/message_loop/message_loop.h" +#include "base/single_thread_task_runner.h" +#include "url/gurl.h" + +using quota::kQuotaStatusOk; + +namespace content { + +MockQuotaManager::OriginInfo::OriginInfo( + const GURL& origin, + StorageType type, + int quota_client_mask, + base::Time modified) + : origin(origin), + type(type), + quota_client_mask(quota_client_mask), + modified(modified) { +} + +MockQuotaManager::OriginInfo::~OriginInfo() {} + +MockQuotaManager::StorageInfo::StorageInfo() : usage(0), quota(kint64max) {} +MockQuotaManager::StorageInfo::~StorageInfo() {} + +MockQuotaManager::MockQuotaManager( + bool is_incognito, + const base::FilePath& profile_path, + base::SingleThreadTaskRunner* io_thread, + base::SequencedTaskRunner* db_thread, + SpecialStoragePolicy* special_storage_policy) + : QuotaManager(is_incognito, profile_path, io_thread, db_thread, + special_storage_policy), + weak_factory_(this) { +} + +void MockQuotaManager::GetUsageAndQuota( + const GURL& origin, + quota::StorageType type, + const GetUsageAndQuotaCallback& callback) { + StorageInfo& info = usage_and_quota_map_[std::make_pair(origin, type)]; + callback.Run(quota::kQuotaStatusOk, info.usage, info.quota); +} + +void MockQuotaManager::SetQuota(const GURL& origin, StorageType type, + int64 quota) { + usage_and_quota_map_[std::make_pair(origin, type)].quota = quota; +} + +bool MockQuotaManager::AddOrigin( + const GURL& origin, + StorageType type, + int quota_client_mask, + base::Time modified) { + origins_.push_back(OriginInfo(origin, type, quota_client_mask, modified)); + return true; +} + +bool MockQuotaManager::OriginHasData( + const GURL& origin, + StorageType type, + QuotaClient::ID quota_client) const { + for (std::vector<OriginInfo>::const_iterator current = origins_.begin(); + current != origins_.end(); + ++current) { + if (current->origin == origin && + current->type == type && + current->quota_client_mask & quota_client) + return true; + } + return false; +} + +void MockQuotaManager::GetOriginsModifiedSince( + StorageType type, + base::Time modified_since, + const GetOriginsCallback& callback) { + std::set<GURL>* origins_to_return = new std::set<GURL>(); + for (std::vector<OriginInfo>::const_iterator current = origins_.begin(); + current != origins_.end(); + ++current) { + if (current->type == type && current->modified >= modified_since) + origins_to_return->insert(current->origin); + } + + base::MessageLoop::current()->PostTask( + FROM_HERE, + base::Bind(&MockQuotaManager::DidGetModifiedSince, + weak_factory_.GetWeakPtr(), + callback, + base::Owned(origins_to_return), + type)); +} + +void MockQuotaManager::DeleteOriginData( + const GURL& origin, + StorageType type, + int quota_client_mask, + const StatusCallback& callback) { + for (std::vector<OriginInfo>::iterator current = origins_.begin(); + current != origins_.end(); + ++current) { + if (current->origin == origin && current->type == type) { + // Modify the mask: if it's 0 after "deletion", remove the origin. + current->quota_client_mask &= ~quota_client_mask; + if (current->quota_client_mask == 0) + origins_.erase(current); + break; + } + } + + base::MessageLoop::current()->PostTask( + FROM_HERE, + base::Bind(&MockQuotaManager::DidDeleteOriginData, + weak_factory_.GetWeakPtr(), + callback, + kQuotaStatusOk)); +} + +MockQuotaManager::~MockQuotaManager() {} + +void MockQuotaManager::UpdateUsage( + const GURL& origin, StorageType type, int64 delta) { + usage_and_quota_map_[std::make_pair(origin, type)].usage += delta; +} + +void MockQuotaManager::DidGetModifiedSince( + const GetOriginsCallback& callback, + std::set<GURL>* origins, + StorageType storage_type) { + callback.Run(*origins, storage_type); +} + +void MockQuotaManager::DidDeleteOriginData( + const StatusCallback& callback, + QuotaStatusCode status) { + callback.Run(status); +} + +} // namespace content |