Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: net/base/bzip2_filter_unittest.cc

Issue 18390: Change URLRequest to use a ref-counted buffer for actual IO.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/common/net/url_request_intercept_job.cc ('k') | net/base/completion_callback.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <fstream> 5 #include <fstream>
6 #include <iostream> 6 #include <iostream>
7 7
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "base/scoped_ptr.h" 10 #include "base/scoped_ptr.h"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 const char* encode_next = encoded_source; 115 const char* encode_next = encoded_source;
116 int encode_avail_size = encoded_source_len; 116 int encode_avail_size = encoded_source_len;
117 117
118 Filter::FilterStatus code = Filter::FILTER_OK; 118 Filter::FilterStatus code = Filter::FILTER_OK;
119 while (code != Filter::FILTER_DONE) { 119 while (code != Filter::FILTER_DONE) {
120 int encode_data_len; 120 int encode_data_len;
121 if (get_extra_data && !encode_avail_size) 121 if (get_extra_data && !encode_avail_size)
122 break; 122 break;
123 encode_data_len = std::min(encode_avail_size, 123 encode_data_len = std::min(encode_avail_size,
124 filter->stream_buffer_size()); 124 filter->stream_buffer_size());
125 memcpy(filter->stream_buffer(), encode_next, encode_data_len); 125 memcpy(filter->stream_buffer()->data(), encode_next, encode_data_len);
126 filter->FlushStreamBuffer(encode_data_len); 126 filter->FlushStreamBuffer(encode_data_len);
127 encode_next += encode_data_len; 127 encode_next += encode_data_len;
128 encode_avail_size -= encode_data_len; 128 encode_avail_size -= encode_data_len;
129 129
130 while (1) { 130 while (1) {
131 int decode_data_len = std::min(decode_avail_size, output_buffer_size); 131 int decode_data_len = std::min(decode_avail_size, output_buffer_size);
132 132
133 code = filter->ReadData(decode_next, &decode_data_len); 133 code = filter->ReadData(decode_next, &decode_data_len);
134 decode_next += decode_data_len; 134 decode_next += decode_data_len;
135 decode_avail_size -= decode_data_len; 135 decode_avail_size -= decode_data_len;
(...skipping 19 matching lines...) Expand all
155 // Unsafe function to use filter to decode compressed data. 155 // Unsafe function to use filter to decode compressed data.
156 // Parameters: Source and source_len are compressed data and its size. 156 // Parameters: Source and source_len are compressed data and its size.
157 // Dest is the buffer for decoding results. Upon entry, *dest_len is the size 157 // Dest is the buffer for decoding results. Upon entry, *dest_len is the size
158 // of the dest buffer. Upon exit, *dest_len is the number of chars written 158 // of the dest buffer. Upon exit, *dest_len is the number of chars written
159 // into the buffer. 159 // into the buffer.
160 Filter::FilterStatus DecodeAllWithFilter(Filter* filter, 160 Filter::FilterStatus DecodeAllWithFilter(Filter* filter,
161 const char* source, 161 const char* source,
162 int source_len, 162 int source_len,
163 char* dest, 163 char* dest,
164 int* dest_len) { 164 int* dest_len) {
165 memcpy(filter->stream_buffer(), source, source_len); 165 memcpy(filter->stream_buffer()->data(), source, source_len);
166 filter->FlushStreamBuffer(source_len); 166 filter->FlushStreamBuffer(source_len);
167 return filter->ReadData(dest, dest_len); 167 return filter->ReadData(dest, dest_len);
168 } 168 }
169 169
170 const char* source_buffer() const { return source_buffer_.data(); } 170 const char* source_buffer() const { return source_buffer_.data(); }
171 int source_len() const { 171 int source_len() const {
172 return static_cast<int>(source_buffer_.size()) - kExtraDataBufferSize; 172 return static_cast<int>(source_buffer_.size()) - kExtraDataBufferSize;
173 } 173 }
174 174
175 std::string source_buffer_; 175 std::string source_buffer_;
176 176
177 scoped_ptr<bz_stream> bzip2_data_stream_; 177 scoped_ptr<bz_stream> bzip2_data_stream_;
178 char* bzip2_encode_buffer_; 178 char* bzip2_encode_buffer_;
179 int bzip2_encode_len_; 179 int bzip2_encode_len_;
180 }; 180 };
181 181
182 // Basic scenario: decoding bzip2 data with big enough buffer. 182 // Basic scenario: decoding bzip2 data with big enough buffer.
183 TEST_F(BZip2FilterUnitTest, DecodeBZip2) { 183 TEST_F(BZip2FilterUnitTest, DecodeBZip2) {
184 // Decode the compressed data with filter 184 // Decode the compressed data with filter
185 std::vector<Filter::FilterType> filter_types; 185 std::vector<Filter::FilterType> filter_types;
186 filter_types.push_back(Filter::FILTER_TYPE_BZIP2); 186 filter_types.push_back(Filter::FILTER_TYPE_BZIP2);
187 scoped_ptr<Filter> filter(Filter::Factory(filter_types, kDefaultBufferSize)); 187 scoped_ptr<Filter> filter(Filter::Factory(filter_types, kDefaultBufferSize));
188 ASSERT_TRUE(filter.get()); 188 ASSERT_TRUE(filter.get());
189 memcpy(filter->stream_buffer(), bzip2_encode_buffer_, bzip2_encode_len_); 189 memcpy(filter->stream_buffer()->data(), bzip2_encode_buffer_,
190 bzip2_encode_len_);
190 filter->FlushStreamBuffer(bzip2_encode_len_); 191 filter->FlushStreamBuffer(bzip2_encode_len_);
191 192
192 char bzip2_decode_buffer[kDefaultBufferSize]; 193 char bzip2_decode_buffer[kDefaultBufferSize];
193 int bzip2_decode_size = kDefaultBufferSize; 194 int bzip2_decode_size = kDefaultBufferSize;
194 Filter::FilterStatus result = 195 Filter::FilterStatus result =
195 filter->ReadData(bzip2_decode_buffer, &bzip2_decode_size); 196 filter->ReadData(bzip2_decode_buffer, &bzip2_decode_size);
196 ASSERT_EQ(Filter::FILTER_DONE, result); 197 ASSERT_EQ(Filter::FILTER_DONE, result);
197 198
198 // Compare the decoding result with source data 199 // Compare the decoding result with source data
199 EXPECT_TRUE(bzip2_decode_size == source_len()); 200 EXPECT_TRUE(bzip2_decode_size == source_len());
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 DecodeAndCompareWithFilter(filter.get(), 380 DecodeAndCompareWithFilter(filter.get(),
380 source_buffer(), 381 source_buffer(),
381 source_len() + kExtraDataBufferSize, 382 source_len() + kExtraDataBufferSize,
382 more_data, 383 more_data,
383 more_data_len, 384 more_data_len,
384 kDefaultBufferSize, 385 kDefaultBufferSize,
385 true); 386 true);
386 } 387 }
387 388
388 } // namespace 389 } // namespace
OLDNEW
« no previous file with comments | « chrome/common/net/url_request_intercept_job.cc ('k') | net/base/completion_callback.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698