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

Side by Side Diff: android_webview/browser/net/android_stream_reader_url_request_job_unittest.cc

Issue 12531002: [android_webview] Make intercepted URLRequests have status codes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 "android_webview/browser/input_stream.h" 5 #include "android_webview/browser/input_stream.h"
6 #include "android_webview/browser/net/android_stream_reader_url_request_job.h" 6 #include "android_webview/browser/net/android_stream_reader_url_request_job.h"
7 #include "android_webview/browser/net/aw_url_request_job_factory.h" 7 #include "android_webview/browser/net/aw_url_request_job_factory.h"
8 #include "android_webview/browser/net/input_stream_reader.h" 8 #include "android_webview/browser/net/input_stream_reader.h"
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 83
84 virtual bool GetCharset( 84 virtual bool GetCharset(
85 JNIEnv* env, 85 JNIEnv* env,
86 net::URLRequest* request, 86 net::URLRequest* request,
87 android_webview::InputStream* stream, 87 android_webview::InputStream* stream,
88 std::string* charset) { 88 std::string* charset) {
89 return false; 89 return false;
90 } 90 }
91 }; 91 };
92 92
93 class NullStreamReaderDelegate : public StreamReaderDelegate {
94 public:
95 NullStreamReaderDelegate() {}
96
97 virtual scoped_ptr<InputStream> OpenInputStream(
98 JNIEnv* env,
99 net::URLRequest* request) {
100 return make_scoped_ptr<InputStream>(NULL);
101 }
102 };
103
93 class MockInputStreamReader : public InputStreamReader { 104 class MockInputStreamReader : public InputStreamReader {
94 public: 105 public:
95 MockInputStreamReader() : InputStreamReader(new NotImplInputStream()) {} 106 MockInputStreamReader() : InputStreamReader(new NotImplInputStream()) {}
96 ~MockInputStreamReader() {} 107 ~MockInputStreamReader() {}
97 108
98 MOCK_METHOD1(Seek, int(const net::HttpByteRange& byte_range)); 109 MOCK_METHOD1(Seek, int(const net::HttpByteRange& byte_range));
99 MOCK_METHOD2(ReadRawData, int(net::IOBuffer* buffer, int buffer_size)); 110 MOCK_METHOD2(ReadRawData, int(net::IOBuffer* buffer, int buffer_size));
100 }; 111 };
101 112
102 113
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 void SetRange(net::URLRequest* req, int first_byte, int last_byte) { 159 void SetRange(net::URLRequest* req, int first_byte, int last_byte) {
149 net::HttpRequestHeaders headers; 160 net::HttpRequestHeaders headers;
150 headers.SetHeader(net::HttpRequestHeaders::kRange, 161 headers.SetHeader(net::HttpRequestHeaders::kRange,
151 base::StringPrintf( 162 base::StringPrintf(
152 "bytes=%" PRIuS "-%" PRIuS, 163 "bytes=%" PRIuS "-%" PRIuS,
153 first_byte, last_byte)); 164 first_byte, last_byte));
154 req->SetExtraRequestHeaders(headers); 165 req->SetExtraRequestHeaders(headers);
155 } 166 }
156 167
157 void SetUpTestJob(scoped_ptr<InputStreamReader> stream_reader) { 168 void SetUpTestJob(scoped_ptr<InputStreamReader> stream_reader) {
158 scoped_ptr<AndroidStreamReaderURLRequestJob::Delegate> 169 SetUpTestJob(stream_reader.Pass(),
159 stream_reader_delegate(new StreamReaderDelegate()); 170 make_scoped_ptr(new StreamReaderDelegate())
171 .PassAs<AndroidStreamReaderURLRequestJob::Delegate>());
172 }
173
174 void SetUpTestJob(scoped_ptr<InputStreamReader> stream_reader,
175 scoped_ptr<AndroidStreamReaderURLRequestJob::Delegate>
176 stream_reader_delegate) {
160 TestStreamReaderJob* test_stream_reader_job = 177 TestStreamReaderJob* test_stream_reader_job =
161 new TestStreamReaderJob( 178 new TestStreamReaderJob(
162 req_.get(), 179 req_.get(),
163 &network_delegate_, 180 &network_delegate_,
164 stream_reader_delegate.Pass(), 181 stream_reader_delegate.Pass(),
165 stream_reader.Pass()); 182 stream_reader.Pass());
166 // The Interceptor is owned by the |factory_|. 183 // The Interceptor is owned by the |factory_|.
167 TestJobInterceptor* protocol_handler = new TestJobInterceptor; 184 TestJobInterceptor* protocol_handler = new TestJobInterceptor;
168 protocol_handler->set_main_intercept_job(test_stream_reader_job); 185 protocol_handler->set_main_intercept_job(test_stream_reader_job);
169 bool set_protocol = factory_.SetProtocolHandler("http", protocol_handler); 186 bool set_protocol = factory_.SetProtocolHandler("http", protocol_handler);
(...skipping 26 matching lines...) Expand all
196 213
197 SetUpTestJob(stream_reader.PassAs<InputStreamReader>()); 214 SetUpTestJob(stream_reader.PassAs<InputStreamReader>());
198 215
199 req_->Start(); 216 req_->Start();
200 217
201 // The TestDelegate will quit the message loop on request completion. 218 // The TestDelegate will quit the message loop on request completion.
202 MessageLoop::current()->Run(); 219 MessageLoop::current()->Run();
203 220
204 EXPECT_FALSE(url_request_delegate_.request_failed()); 221 EXPECT_FALSE(url_request_delegate_.request_failed());
205 EXPECT_EQ(1, network_delegate_.completed_requests()); 222 EXPECT_EQ(1, network_delegate_.completed_requests());
223 EXPECT_EQ(200, req_->GetResponseCode());
224 }
225
226 TEST_F(AndroidStreamReaderURLRequestJobTest, ReadWithNullStream) {
227 SetUpTestJob(scoped_ptr<InputStreamReader>(),
228 make_scoped_ptr(new NullStreamReaderDelegate())
229 .PassAs<AndroidStreamReaderURLRequestJob::Delegate>());
230 req_->Start();
231
232 // The TestDelegate will quit the message loop on request completion.
233 MessageLoop::current()->Run();
234
235 EXPECT_FALSE(url_request_delegate_.request_failed());
236 EXPECT_EQ(1, network_delegate_.completed_requests());
237 EXPECT_EQ(404, req_->GetResponseCode());
206 } 238 }
207 239
208 TEST_F(AndroidStreamReaderURLRequestJobTest, ReadPartOfStream) { 240 TEST_F(AndroidStreamReaderURLRequestJobTest, ReadPartOfStream) {
209 const int bytes_available = 128; 241 const int bytes_available = 128;
210 const int offset = 32; 242 const int offset = 32;
211 const int bytes_to_read = bytes_available - offset; 243 const int bytes_to_read = bytes_available - offset;
212 scoped_ptr<StrictMock<MockInputStreamReader> > stream_reader( 244 scoped_ptr<StrictMock<MockInputStreamReader> > stream_reader(
213 new StrictMock<MockInputStreamReader>()); 245 new StrictMock<MockInputStreamReader>());
214 { 246 {
215 InSequence s; 247 InSequence s;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 338
307 SetRange(req_.get(), offset, bytes_available); 339 SetRange(req_.get(), offset, bytes_available);
308 req_->Start(); 340 req_->Start();
309 341
310 loop.Run(); 342 loop.Run();
311 343
312 EXPECT_EQ(0, network_delegate_.completed_requests()); 344 EXPECT_EQ(0, network_delegate_.completed_requests());
313 req_->Cancel(); 345 req_->Cancel();
314 EXPECT_EQ(1, network_delegate_.completed_requests()); 346 EXPECT_EQ(1, network_delegate_.completed_requests());
315 } 347 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698