OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 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 "webkit/blob/blob_data.h" | |
6 | |
7 #include "base/logging.h" | |
8 #include "base/strings/sys_string_conversions.h" | |
9 #include "base/time.h" | |
10 #include "base/utf_string_conversions.h" | |
11 | |
12 namespace webkit_blob { | |
13 | |
14 BlobData::BlobData() {} | |
15 BlobData::BlobData(const std::string& uuid) | |
16 : uuid_(uuid) { | |
17 } | |
18 | |
19 BlobData::~BlobData() {} | |
20 | |
21 void BlobData::AppendData(const char* data, size_t length) { | |
22 DCHECK(length > 0); | |
23 items_.push_back(Item()); | |
24 items_.back().SetToBytes(data, length); | |
25 } | |
26 | |
27 void BlobData::AppendFile(const base::FilePath& file_path, | |
28 uint64 offset, uint64 length, | |
29 const base::Time& expected_modification_time) { | |
30 DCHECK(length > 0); | |
31 items_.push_back(Item()); | |
32 items_.back().SetToFilePathRange(file_path, offset, length, | |
33 expected_modification_time); | |
34 } | |
35 | |
36 void BlobData::AppendBlob(const GURL& blob_url, uint64 offset, uint64 length) { | |
37 DCHECK_GT(length, 0ul); | |
38 items_.push_back(Item()); | |
39 items_.back().SetToBlobUrlRange(blob_url, offset, length); | |
40 } | |
41 | |
42 void BlobData::AppendBlob(const std::string& uuid, | |
43 uint64 offset, uint64 length) { | |
44 DCHECK_GT(length, 0ul); | |
45 items_.push_back(Item()); | |
46 items_.back().SetToBlobRange(uuid, offset, length); | |
47 } | |
48 | |
49 void BlobData::AppendFileSystemFile( | |
50 const GURL& url, uint64 offset, | |
51 uint64 length, | |
52 const base::Time& expected_modification_time) { | |
53 DCHECK(length > 0); | |
54 items_.push_back(Item()); | |
55 items_.back().SetToFileSystemUrlRange(url, offset, length, | |
56 expected_modification_time); | |
57 } | |
58 | |
59 int64 BlobData::GetMemoryUsage() const { | |
60 int64 memory = 0; | |
61 for (std::vector<Item>::const_iterator iter = items_.begin(); | |
62 iter != items_.end(); ++iter) { | |
63 if (iter->type() == Item::TYPE_BYTES) | |
64 memory += iter->length(); | |
65 } | |
66 return memory; | |
67 } | |
68 | |
69 } // namespace webkit_blob | |
OLD | NEW |