Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "components/image_fetcher/core/image_data_fetcher.h" | 5 #include "components/image_fetcher/core/image_data_fetcher.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 194 // multiple URLFetchers being created. | 194 // multiple URLFetchers being created. |
| 195 net::TestURLFetcher* test_url_fetcher = fetcher_factory_.GetFetcherByID(0); | 195 net::TestURLFetcher* test_url_fetcher = fetcher_factory_.GetFetcherByID(0); |
| 196 ASSERT_NE(nullptr, test_url_fetcher); | 196 ASSERT_NE(nullptr, test_url_fetcher); |
| 197 test_url_fetcher->delegate()->OnURLFetchComplete(test_url_fetcher); | 197 test_url_fetcher->delegate()->OnURLFetchComplete(test_url_fetcher); |
| 198 | 198 |
| 199 test_url_fetcher = fetcher_factory_.GetFetcherByID(1); | 199 test_url_fetcher = fetcher_factory_.GetFetcherByID(1); |
| 200 ASSERT_NE(nullptr, test_url_fetcher); | 200 ASSERT_NE(nullptr, test_url_fetcher); |
| 201 test_url_fetcher->delegate()->OnURLFetchComplete(test_url_fetcher); | 201 test_url_fetcher->delegate()->OnURLFetchComplete(test_url_fetcher); |
| 202 } | 202 } |
| 203 | 203 |
| 204 TEST_F(ImageDataFetcherTest, FetchImageData_CancelFetchIfImageExceedsMaxSize) { | |
| 205 // In order to know whether the fetcher was canceled, it must notify about its | |
| 206 // deletion. | |
| 207 fetcher_factory_.set_remove_fetcher_on_delete(true); | |
| 208 | |
| 209 int64_t max_download_bytes = 1024 * 1024; | |
| 210 image_data_fetcher_.SetImageDownloadLimit(max_download_bytes); | |
| 211 image_data_fetcher_.FetchImageData( | |
| 212 GURL(kImageURL), base::Bind(&ImageDataFetcherTest::OnImageDataFetched, | |
| 213 base::Unretained(this))); | |
| 214 | |
| 215 // Fetching an oversized image will behave like any other failed request. | |
| 216 // There will be exactly one call to OnImageDataFetched containing a response | |
| 217 // code that would be possible for a completed fetch. | |
|
Marc Treib
2017/03/27 13:16:43
s/possible/impossible/ ?
fhorschig
2017/03/27 14:33:43
Absolutely.
| |
| 218 RequestMetadata expected_metadata; | |
| 219 expected_metadata.http_response_code = net::URLFetcher::RESPONSE_CODE_INVALID; | |
| 220 EXPECT_CALL(*this, OnImageDataFetched(std::string(), expected_metadata)) | |
| 221 .Times(1); | |
|
Marc Treib
2017/03/27 13:16:42
nit: ".Times(1)" is a noop
fhorschig
2017/03/27 14:33:43
Done.
| |
| 222 | |
| 223 // Get and configure the TestURLFetcher. | |
| 224 net::TestURLFetcher* test_url_fetcher = fetcher_factory_.GetFetcherByID(0); | |
| 225 ASSERT_NE(nullptr, test_url_fetcher); | |
| 226 | |
| 227 // Create a completely valid response to make sure that the answer isn't | |
| 228 // accidentally invalid but intentionally. | |
| 229 test_url_fetcher->set_status( | |
| 230 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, net::OK)); | |
| 231 test_url_fetcher->SetResponseString(kURLResponseData); | |
|
Marc Treib
2017/03/27 13:16:42
nit: add a comment saying that this isn't actually
fhorschig
2017/03/27 14:33:43
Do you mean this particular line? Because nothing
| |
| 232 test_url_fetcher->set_response_code(net::HTTP_OK); | |
| 233 | |
| 234 std::string raw_header = | |
| 235 "HTTP/1.1 200 OK\n" | |
| 236 "Content-type: image/png\n\n"; | |
| 237 std::replace(raw_header.begin(), raw_header.end(), '\n', '\0'); | |
| 238 scoped_refptr<net::HttpResponseHeaders> headers( | |
| 239 new net::HttpResponseHeaders(raw_header)); | |
| 240 test_url_fetcher->set_response_headers(headers); | |
| 241 | |
|
Marc Treib
2017/03/27 13:16:42
Maybe first call OnURLFetchDownloadProgress with a
fhorschig
2017/03/27 14:33:43
Good idea. I introduced some edge cases.
| |
| 242 // Call the URLFetcher delegate to continue the test. | |
|
Marc Treib
2017/03/27 13:16:43
nit: IMO this comment isn't really helpful.
fhorschig
2017/03/27 14:33:43
Gone.
| |
| 243 test_url_fetcher->delegate()->OnURLFetchDownloadProgress( | |
| 244 test_url_fetcher, | |
| 245 /*current=*/2 * max_download_bytes, // Bytes received up to the call. | |
| 246 /*total=*/-1, // not determined | |
| 247 /*current_network_bytes=*/24 * 1024); // not relevant | |
| 248 // The fetcher has to be deleted for the request to be canceled. | |
|
Marc Treib
2017/03/27 13:16:42
"The URL fetch should have been canceled" ?
fhorschig
2017/03/27 14:33:43
Done.
| |
| 249 EXPECT_EQ(nullptr, fetcher_factory_.GetFetcherByID(0)); | |
| 250 } | |
| 251 | |
| 204 } // namespace image_fetcher | 252 } // namespace image_fetcher |
| OLD | NEW |