| // 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/indexed_db/indexed_db_blob_info.h" |
| |
| #include "base/bind.h" |
| #include "base/logging.h" |
| #include "content/browser/indexed_db/indexed_db_leveldb_coding.h" |
| |
| namespace content { |
| |
| IndexedDBBlobInfo::IndexedDBBlobInfo() |
| : is_file_(false), size_(-1), key_(DatabaseMetaDataKey::kInvalidBlobKey) { |
| } |
| |
| IndexedDBBlobInfo::IndexedDBBlobInfo( |
| std::unique_ptr<storage::BlobDataHandle> blob_handle, |
| const base::string16& type, |
| int64_t size) |
| : is_file_(false), |
| blob_handle_(*blob_handle), |
| type_(type), |
| size_(size), |
| key_(DatabaseMetaDataKey::kInvalidBlobKey) {} |
| |
| IndexedDBBlobInfo::IndexedDBBlobInfo(const base::string16& type, |
| int64_t size, |
| int64_t key) |
| : is_file_(false), type_(type), size_(size), key_(key) {} |
| |
| IndexedDBBlobInfo::IndexedDBBlobInfo( |
| std::unique_ptr<storage::BlobDataHandle> blob_handle, |
| const base::FilePath& file_path, |
| const base::string16& file_name, |
| const base::string16& type) |
| : is_file_(true), |
| blob_handle_(*blob_handle), |
| type_(type), |
| size_(-1), |
| file_name_(file_name), |
| file_path_(file_path), |
| key_(DatabaseMetaDataKey::kInvalidBlobKey) {} |
| |
| IndexedDBBlobInfo::IndexedDBBlobInfo(int64_t key, |
| const base::string16& type, |
| const base::string16& file_name) |
| : is_file_(true), |
| type_(type), |
| size_(-1), |
| file_name_(file_name), |
| key_(key) {} |
| |
| IndexedDBBlobInfo::IndexedDBBlobInfo(const IndexedDBBlobInfo& other) = default; |
| |
| IndexedDBBlobInfo::~IndexedDBBlobInfo() = default; |
| |
| IndexedDBBlobInfo& IndexedDBBlobInfo::operator=( |
| const IndexedDBBlobInfo& other) = default; |
| |
| void IndexedDBBlobInfo::set_size(int64_t size) { |
| DCHECK_EQ(-1, size_); |
| size_ = size; |
| } |
| |
| void IndexedDBBlobInfo::set_file_path(const base::FilePath& file_path) { |
| DCHECK(file_path_.empty()); |
| file_path_ = file_path; |
| } |
| |
| void IndexedDBBlobInfo::set_last_modified(const base::Time& time) { |
| DCHECK(base::Time().is_null()); |
| DCHECK(is_file_); |
| last_modified_ = time; |
| } |
| |
| void IndexedDBBlobInfo::set_key(int64_t key) { |
| DCHECK_EQ(DatabaseMetaDataKey::kInvalidBlobKey, key_); |
| key_ = key; |
| } |
| |
| void IndexedDBBlobInfo::set_mark_used_callback( |
| const base::Closure& mark_used_callback) { |
| DCHECK(mark_used_callback_.is_null()); |
| mark_used_callback_ = mark_used_callback; |
| } |
| |
| void IndexedDBBlobInfo::set_release_callback( |
| const ReleaseCallback& release_callback) { |
| DCHECK(release_callback_.is_null()); |
| release_callback_ = release_callback; |
| } |
| |
| } // namespace content |