summaryrefslogtreecommitdiffstats
path: root/webkit/blob/blob_data.cc
diff options
context:
space:
mode:
authordanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-24 15:40:12 +0000
committerdanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-24 15:40:12 +0000
commit40c889ef344e2c9f42238d925b561f4c839171ca (patch)
treea908f0d5cefc406f72733f1e5e48a555f65292c1 /webkit/blob/blob_data.cc
parentb09c46ddb2ec06d6b53cb72b3496138bbe175bb1 (diff)
downloadchromium_src-40c889ef344e2c9f42238d925b561f4c839171ca.zip
chromium_src-40c889ef344e2c9f42238d925b561f4c839171ca.tar.gz
chromium_src-40c889ef344e2c9f42238d925b561f4c839171ca.tar.bz2
Revert 138791 - Revert 138554 - Prevent zero-length items from being appended to a blob.
BUG=128266 TEST=as in the bug Review URL: https://chromiumcodereview.appspot.com/10386183 TBR=ericu@chromium.org Review URL: https://chromiumcodereview.appspot.com/10444010 TBR=danakj@chromium.org Review URL: https://chromiumcodereview.appspot.com/10442013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138802 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/blob/blob_data.cc')
-rw-r--r--webkit/blob/blob_data.cc33
1 files changed, 32 insertions, 1 deletions
diff --git a/webkit/blob/blob_data.cc b/webkit/blob/blob_data.cc
index 57d9bc2..33ee36b 100644
--- a/webkit/blob/blob_data.cc
+++ b/webkit/blob/blob_data.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -86,4 +86,35 @@ BlobData::BlobData(const WebBlobData& data) {
BlobData::~BlobData() {}
+void BlobData::AppendData(const char* data, size_t length) {
+ DCHECK(length > 0);
+ items_.push_back(Item());
+ items_.back().SetToData(data, length);
+}
+
+void BlobData::AppendFile(const FilePath& file_path, uint64 offset,
+ uint64 length,
+ const base::Time& expected_modification_time) {
+ DCHECK(length > 0);
+ items_.push_back(Item());
+ items_.back().SetToFile(file_path, offset, length,
+ expected_modification_time);
+}
+
+void BlobData::AppendBlob(const GURL& blob_url, uint64 offset, uint64 length) {
+ DCHECK(length > 0);
+ items_.push_back(Item());
+ items_.back().SetToBlob(blob_url, offset, length);
+}
+
+int64 BlobData::GetMemoryUsage() const {
+ int64 memory = 0;
+ for (std::vector<Item>::const_iterator iter = items_.begin();
+ iter != items_.end(); ++iter) {
+ if (iter->type == TYPE_DATA)
+ memory += iter->data.size();
+ }
+ return memory;
+}
+
} // namespace webkit_blob