1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/browser/indexed_db/indexed_db_blob_info.h"
6
7#include "base/bind.h"
8#include "base/logging.h"
9#include "content/browser/indexed_db/indexed_db_leveldb_coding.h"
10
11namespace content {
12
13IndexedDBBlobInfo::IndexedDBBlobInfo()
14    : is_file_(false), size_(-1), key_(DatabaseMetaDataKey::kInvalidBlobKey) {
15}
16
17IndexedDBBlobInfo::IndexedDBBlobInfo(const std::string& uuid,
18                                     const base::string16& type,
19                                     int64 size)
20    : is_file_(false),
21      uuid_(uuid),
22      type_(type),
23      size_(size),
24      key_(DatabaseMetaDataKey::kInvalidBlobKey) {
25}
26
27IndexedDBBlobInfo::IndexedDBBlobInfo(const base::string16& type,
28                                     int64 size,
29                                     int64 key)
30    : is_file_(false), type_(type), size_(size), key_(key) {
31}
32
33IndexedDBBlobInfo::IndexedDBBlobInfo(const std::string& uuid,
34                                     const base::FilePath& file_path,
35                                     const base::string16& file_name,
36                                     const base::string16& type)
37    : is_file_(true),
38      uuid_(uuid),
39      type_(type),
40      size_(-1),
41      file_name_(file_name),
42      file_path_(file_path),
43      key_(DatabaseMetaDataKey::kInvalidBlobKey) {
44}
45
46IndexedDBBlobInfo::IndexedDBBlobInfo(int64 key,
47                                     const base::string16& type,
48                                     const base::string16& file_name)
49    : is_file_(true), type_(type), size_(-1), file_name_(file_name), key_(key) {
50}
51
52IndexedDBBlobInfo::~IndexedDBBlobInfo() {}
53
54void IndexedDBBlobInfo::set_size(int64 size) {
55  DCHECK_EQ(-1, size_);
56  size_ = size;
57}
58
59void IndexedDBBlobInfo::set_uuid(const std::string& uuid) {
60  DCHECK(uuid_.empty());
61  uuid_ = uuid;
62  DCHECK(!uuid_.empty());
63}
64
65void IndexedDBBlobInfo::set_file_path(const base::FilePath& file_path) {
66  DCHECK(file_path_.empty());
67  file_path_ = file_path;
68}
69
70void IndexedDBBlobInfo::set_last_modified(const base::Time& time) {
71  DCHECK(base::Time().is_null());
72  DCHECK(is_file_);
73  last_modified_ = time;
74}
75
76void IndexedDBBlobInfo::set_key(int64 key) {
77  DCHECK_EQ(DatabaseMetaDataKey::kInvalidBlobKey, key_);
78  key_ = key;
79}
80
81void IndexedDBBlobInfo::set_mark_used_callback(
82    const base::Closure& mark_used_callback) {
83  DCHECK(mark_used_callback_.is_null());
84  mark_used_callback_ = mark_used_callback;
85}
86
87void IndexedDBBlobInfo::set_release_callback(
88    const ReleaseCallback& release_callback) {
89  DCHECK(release_callback_.is_null());
90  release_callback_ = release_callback;
91}
92
93}  // namespace content
94