blob: ae3f68fed3453f3a951262a4dc6c25a8e70a94bc [file] [log] [blame]
// Copyright 2016 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 <utility>
#include "content/browser/cache_storage/cache_storage_cache_handle.h"
namespace content {
CacheStorageCacheHandle::CacheStorageCacheHandle() = default;
CacheStorageCacheHandle::CacheStorageCacheHandle(
CacheStorageCacheHandle&& other)
: cache_storage_cache_(std::move(other.cache_storage_cache_)),
cache_storage_(std::move(other.cache_storage_)) {}
CacheStorageCacheHandle::~CacheStorageCacheHandle() {
if (cache_storage_ && cache_storage_cache_)
cache_storage_->DropCacheHandleRef(cache_storage_cache_.get());
}
CacheStorageCacheHandle CacheStorageCacheHandle::Clone() const {
return CacheStorageCacheHandle(cache_storage_cache_, cache_storage_);
}
CacheStorageCacheHandle::CacheStorageCacheHandle(
base::WeakPtr<CacheStorageCache> cache_storage_cache,
base::WeakPtr<CacheStorage> cache_storage)
: cache_storage_cache_(cache_storage_cache), cache_storage_(cache_storage) {
DCHECK(cache_storage);
DCHECK(cache_storage_cache_);
cache_storage_->AddCacheHandleRef(cache_storage_cache_.get());
}
CacheStorageCacheHandle& CacheStorageCacheHandle::operator=(
CacheStorageCacheHandle&& rhs) {
if (cache_storage_ && cache_storage_cache_)
cache_storage_->DropCacheHandleRef(cache_storage_cache_.get());
cache_storage_cache_ = std::move(rhs.cache_storage_cache_);
cache_storage_ = std::move(rhs.cache_storage_);
return *this;
}
} // namespace content