123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file.
423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "content/browser/indexed_db/indexed_db_blob_info.h"
623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/bind.h"
823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/logging.h"
923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "content/browser/indexed_db/indexed_db_leveldb_coding.h"
1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace content {
1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)IndexedDBBlobInfo::IndexedDBBlobInfo()
145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    : is_file_(false), size_(-1), key_(DatabaseMetaDataKey::kInvalidBlobKey) {
155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)IndexedDBBlobInfo::~IndexedDBBlobInfo() {}
1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)IndexedDBBlobInfo::IndexedDBBlobInfo(const std::string& uuid,
2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                     const base::string16& type,
2123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                     int64 size)
2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    : is_file_(false),
2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      uuid_(uuid),
2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      type_(type),
2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      size_(size),
265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      key_(DatabaseMetaDataKey::kInvalidBlobKey) {
275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)IndexedDBBlobInfo::IndexedDBBlobInfo(const base::string16& type,
3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                     int64 size,
3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                     int64 key)
325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    : is_file_(false), type_(type), size_(size), key_(key) {
335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuIndexedDBBlobInfo::IndexedDBBlobInfo(const std::string& uuid,
365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                                     const base::FilePath& file_path,
3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                     const base::string16& file_name,
3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                     const base::string16& type)
3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    : is_file_(true),
405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      uuid_(uuid),
4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      type_(type),
4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      size_(-1),
4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      file_name_(file_name),
4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      file_path_(file_path),
455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      key_(DatabaseMetaDataKey::kInvalidBlobKey) {
465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
4823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)IndexedDBBlobInfo::IndexedDBBlobInfo(int64 key,
4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                     const base::string16& type,
5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                     const base::string16& file_name)
515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    : is_file_(true), type_(type), size_(-1), file_name_(file_name), key_(key) {
525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
5323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
5423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void IndexedDBBlobInfo::set_size(int64 size) {
5523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  DCHECK_EQ(-1, size_);
5623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  size_ = size;
5723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
5823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
5923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void IndexedDBBlobInfo::set_uuid(const std::string& uuid) {
6023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  DCHECK(uuid_.empty());
6123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  uuid_ = uuid;
6223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  DCHECK(!uuid_.empty());
6323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
6423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
6523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void IndexedDBBlobInfo::set_file_path(const base::FilePath& file_path) {
6623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  DCHECK(file_path_.empty());
6723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  file_path_ = file_path;
6823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
6923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
7023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void IndexedDBBlobInfo::set_last_modified(const base::Time& time) {
7123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  DCHECK(base::Time().is_null());
7223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  DCHECK(is_file_);
7323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  last_modified_ = time;
7423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
7523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
7623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void IndexedDBBlobInfo::set_key(int64 key) {
7723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  DCHECK_EQ(DatabaseMetaDataKey::kInvalidBlobKey, key_);
7823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  key_ = key;
7923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
8023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
8123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void IndexedDBBlobInfo::set_mark_used_callback(
8223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    const base::Closure& mark_used_callback) {
8323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  DCHECK(mark_used_callback_.is_null());
8423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  mark_used_callback_ = mark_used_callback;
8523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
8623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
8723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void IndexedDBBlobInfo::set_release_callback(
8823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    const ReleaseCallback& release_callback) {
8923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  DCHECK(release_callback_.is_null());
9023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  release_callback_ = release_callback;
9123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
9223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
9323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}  // namespace content
94