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

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

Issue 19004: 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 | « net/base/io_buffer.h ('k') | net/build/net.vcproj » ('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 <limits.h> 5 #include <limits.h>
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 CHECK(input_block_length > 0); 94 CHECK(input_block_length > 0);
95 Filter::FilterStatus status(Filter::FILTER_NEED_MORE_DATA); 95 Filter::FilterStatus status(Filter::FILTER_NEED_MORE_DATA);
96 size_t source_index = 0; 96 size_t source_index = 0;
97 scoped_array<char> output_buffer(new char[output_buffer_length]); 97 scoped_array<char> output_buffer(new char[output_buffer_length]);
98 size_t input_amount = std::min(input_block_length, 98 size_t input_amount = std::min(input_block_length,
99 static_cast<size_t>(filter->stream_buffer_size())); 99 static_cast<size_t>(filter->stream_buffer_size()));
100 100
101 do { 101 do {
102 int copy_amount = std::min(input_amount, source.size() - source_index); 102 int copy_amount = std::min(input_amount, source.size() - source_index);
103 if (copy_amount > 0 && status == Filter::FILTER_NEED_MORE_DATA) { 103 if (copy_amount > 0 && status == Filter::FILTER_NEED_MORE_DATA) {
104 memcpy(filter->stream_buffer(), source.data() + source_index, 104 memcpy(filter->stream_buffer()->data(), source.data() + source_index,
105 copy_amount); 105 copy_amount);
106 filter->FlushStreamBuffer(copy_amount); 106 filter->FlushStreamBuffer(copy_amount);
107 source_index += copy_amount; 107 source_index += copy_amount;
108 } 108 }
109 int buffer_length = output_buffer_length; 109 int buffer_length = output_buffer_length;
110 status = filter->ReadData(output_buffer.get(), &buffer_length); 110 status = filter->ReadData(output_buffer.get(), &buffer_length);
111 output->append(output_buffer.get(), buffer_length); 111 output->append(output_buffer.get(), buffer_length);
112 if (status == Filter::FILTER_ERROR) 112 if (status == Filter::FILTER_ERROR)
113 return false; 113 return false;
114 if (copy_amount == 0 && buffer_length == 0) 114 if (copy_amount == 0 && buffer_length == 0)
(...skipping 30 matching lines...) Expand all
145 Filter::FilterStatus status = filter->ReadData(output_buffer, 145 Filter::FilterStatus status = filter->ReadData(output_buffer,
146 &output_bytes_or_buffer_size); 146 &output_bytes_or_buffer_size);
147 147
148 EXPECT_EQ(0, output_bytes_or_buffer_size); 148 EXPECT_EQ(0, output_bytes_or_buffer_size);
149 EXPECT_EQ(Filter::FILTER_NEED_MORE_DATA, status); 149 EXPECT_EQ(Filter::FILTER_NEED_MORE_DATA, status);
150 150
151 // Supply bogus data (which doesnt't yet specify a full dictionary hash). 151 // Supply bogus data (which doesnt't yet specify a full dictionary hash).
152 // Dictionary hash is 8 characters followed by a null. 152 // Dictionary hash is 8 characters followed by a null.
153 std::string dictionary_hash_prefix("123"); 153 std::string dictionary_hash_prefix("123");
154 154
155 char* input_buffer = filter->stream_buffer(); 155 char* input_buffer = filter->stream_buffer()->data();
156 int input_buffer_size = filter->stream_buffer_size(); 156 int input_buffer_size = filter->stream_buffer_size();
157 EXPECT_EQ(kInputBufferSize, input_buffer_size); 157 EXPECT_EQ(kInputBufferSize, input_buffer_size);
158 158
159 EXPECT_LT(static_cast<int>(dictionary_hash_prefix.size()), 159 EXPECT_LT(static_cast<int>(dictionary_hash_prefix.size()),
160 input_buffer_size); 160 input_buffer_size);
161 memcpy(input_buffer, dictionary_hash_prefix.data(), 161 memcpy(input_buffer, dictionary_hash_prefix.data(),
162 dictionary_hash_prefix.size()); 162 dictionary_hash_prefix.size());
163 filter->FlushStreamBuffer(dictionary_hash_prefix.size()); 163 filter->FlushStreamBuffer(dictionary_hash_prefix.size());
164 164
165 // With less than a dictionary specifier, try to read output. 165 // With less than a dictionary specifier, try to read output.
(...skipping 731 matching lines...) Expand 10 before | Expand all | Expand 10 after
897 TEST_F(SdchFilterTest, DictionaryTooLarge) { 897 TEST_F(SdchFilterTest, DictionaryTooLarge) {
898 std::string dictionary_domain(".google.com"); 898 std::string dictionary_domain(".google.com");
899 std::string dictionary_text(NewSdchDictionary(dictionary_domain)); 899 std::string dictionary_text(NewSdchDictionary(dictionary_domain));
900 900
901 dictionary_text.append( 901 dictionary_text.append(
902 SdchManager::kMaxDictionarySize + 1 - dictionary_text.size(), ' '); 902 SdchManager::kMaxDictionarySize + 1 - dictionary_text.size(), ' ');
903 EXPECT_FALSE(sdch_manager_->AddSdchDictionary(dictionary_text, 903 EXPECT_FALSE(sdch_manager_->AddSdchDictionary(dictionary_text,
904 GURL("http://" + dictionary_domain))); 904 GURL("http://" + dictionary_domain)));
905 } 905 }
906 906
OLDNEW
« no previous file with comments | « net/base/io_buffer.h ('k') | net/build/net.vcproj » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698