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

Side by Side Diff: components/image_fetcher/core/image_data_fetcher_unittest.cc

Issue 2807143002: [Image fetcher] Add Content-Location header to image_fetcher::RequestMetadata (Closed)
Patch Set: Created 3 years, 8 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
OLDNEW
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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 56
57 private: 57 private:
58 DISALLOW_COPY_AND_ASSIGN(ImageDataFetcherTest); 58 DISALLOW_COPY_AND_ASSIGN(ImageDataFetcherTest);
59 }; 59 };
60 60
61 TEST_F(ImageDataFetcherTest, FetchImageData) { 61 TEST_F(ImageDataFetcherTest, FetchImageData) {
62 image_data_fetcher_.FetchImageData( 62 image_data_fetcher_.FetchImageData(
63 GURL(kImageURL), base::Bind(&ImageDataFetcherTest::OnImageDataFetched, 63 GURL(kImageURL), base::Bind(&ImageDataFetcherTest::OnImageDataFetched,
64 base::Unretained(this))); 64 base::Unretained(this)));
65 65
66 std::string raw_header =
67 "HTTP/1.1 200 OK\n"
68 "Content-type: image/png\n\n";
69 std::replace(raw_header.begin(), raw_header.end(), '\n', '\0');
70 scoped_refptr<net::HttpResponseHeaders> headers(
71 new net::HttpResponseHeaders(raw_header));
72
73 RequestMetadata expected_metadata; 66 RequestMetadata expected_metadata;
74 expected_metadata.mime_type = std::string("image/png"); 67 expected_metadata.mime_type = std::string("image/png");
75 expected_metadata.http_response_code = net::HTTP_OK; 68 expected_metadata.http_response_code = net::HTTP_OK;
76 expected_metadata.http_response_headers = headers.get();
77 EXPECT_CALL(*this, OnImageDataFetched(std::string(kURLResponseData), 69 EXPECT_CALL(*this, OnImageDataFetched(std::string(kURLResponseData),
78 expected_metadata)); 70 expected_metadata));
79 71
80 // Get and configure the TestURLFetcher. 72 // Get and configure the TestURLFetcher.
81 net::TestURLFetcher* test_url_fetcher = fetcher_factory_.GetFetcherByID(0); 73 net::TestURLFetcher* test_url_fetcher = fetcher_factory_.GetFetcherByID(0);
82 ASSERT_NE(nullptr, test_url_fetcher); 74 ASSERT_NE(nullptr, test_url_fetcher);
83 EXPECT_TRUE(test_url_fetcher->GetLoadFlags() & net::LOAD_DO_NOT_SEND_COOKIES); 75 EXPECT_TRUE(test_url_fetcher->GetLoadFlags() & net::LOAD_DO_NOT_SEND_COOKIES);
84 EXPECT_TRUE(test_url_fetcher->GetLoadFlags() & net::LOAD_DO_NOT_SAVE_COOKIES); 76 EXPECT_TRUE(test_url_fetcher->GetLoadFlags() & net::LOAD_DO_NOT_SAVE_COOKIES);
85 EXPECT_TRUE(test_url_fetcher->GetLoadFlags() & 77 EXPECT_TRUE(test_url_fetcher->GetLoadFlags() &
86 net::LOAD_DO_NOT_SEND_AUTH_DATA); 78 net::LOAD_DO_NOT_SEND_AUTH_DATA);
87 test_url_fetcher->set_status( 79 test_url_fetcher->set_status(
88 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, net::OK)); 80 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, net::OK));
89 test_url_fetcher->SetResponseString(kURLResponseData); 81 test_url_fetcher->SetResponseString(kURLResponseData);
90 test_url_fetcher->set_response_code(net::HTTP_OK); 82 test_url_fetcher->set_response_code(net::HTTP_OK);
83
84 std::string raw_header =
85 "HTTP/1.1 200 OK\n"
86 "Content-type: image/png\n\n";
87 std::replace(raw_header.begin(), raw_header.end(), '\n', '\0');
88 scoped_refptr<net::HttpResponseHeaders> headers(
89 new net::HttpResponseHeaders(raw_header));
91 test_url_fetcher->set_response_headers(headers); 90 test_url_fetcher->set_response_headers(headers);
92 91
93 // Call the URLFetcher delegate to continue the test. 92 // Call the URLFetcher delegate to continue the test.
94 test_url_fetcher->delegate()->OnURLFetchComplete(test_url_fetcher); 93 test_url_fetcher->delegate()->OnURLFetchComplete(test_url_fetcher);
95 } 94 }
96 95
97 TEST_F(ImageDataFetcherTest, FetchImageData_FromCache) { 96 TEST_F(ImageDataFetcherTest, FetchImageData_FromCache) {
98 image_data_fetcher_.FetchImageData( 97 image_data_fetcher_.FetchImageData(
99 GURL(kImageURL), base::Bind(&ImageDataFetcherTest::OnImageDataFetched, 98 GURL(kImageURL), base::Bind(&ImageDataFetcherTest::OnImageDataFetched,
100 base::Unretained(this))); 99 base::Unretained(this)));
101 100
102 std::string raw_header =
103 "HTTP/1.1 200 OK\n"
104 "Content-type: image/png\n\n";
105 std::replace(raw_header.begin(), raw_header.end(), '\n', '\0');
106 scoped_refptr<net::HttpResponseHeaders> headers(
107 new net::HttpResponseHeaders(raw_header));
108
109 RequestMetadata expected_metadata; 101 RequestMetadata expected_metadata;
110 expected_metadata.mime_type = std::string("image/png"); 102 expected_metadata.mime_type = std::string("image/png");
111 expected_metadata.http_response_code = net::HTTP_OK; 103 expected_metadata.http_response_code = net::HTTP_OK;
112 expected_metadata.from_http_cache = true; 104 expected_metadata.from_http_cache = true;
113 expected_metadata.http_response_headers = headers.get();
114 EXPECT_CALL(*this, OnImageDataFetched(std::string(kURLResponseData), 105 EXPECT_CALL(*this, OnImageDataFetched(std::string(kURLResponseData),
115 expected_metadata)); 106 expected_metadata));
116 107
117 // Get and configure the TestURLFetcher. 108 // Get and configure the TestURLFetcher.
118 net::TestURLFetcher* test_url_fetcher = fetcher_factory_.GetFetcherByID(0); 109 net::TestURLFetcher* test_url_fetcher = fetcher_factory_.GetFetcherByID(0);
119 ASSERT_NE(nullptr, test_url_fetcher); 110 ASSERT_NE(nullptr, test_url_fetcher);
120 test_url_fetcher->set_status( 111 test_url_fetcher->set_status(
121 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, net::OK)); 112 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, net::OK));
122 test_url_fetcher->SetResponseString(kURLResponseData); 113 test_url_fetcher->SetResponseString(kURLResponseData);
123 test_url_fetcher->set_response_code(net::HTTP_OK); 114 test_url_fetcher->set_response_code(net::HTTP_OK);
124 test_url_fetcher->set_was_cached(true); 115 test_url_fetcher->set_was_cached(true);
116
117 std::string raw_header =
118 "HTTP/1.1 200 OK\n"
119 "Content-type: image/png\n\n";
120 std::replace(raw_header.begin(), raw_header.end(), '\n', '\0');
121 scoped_refptr<net::HttpResponseHeaders> headers(
122 new net::HttpResponseHeaders(raw_header));
125 test_url_fetcher->set_response_headers(headers); 123 test_url_fetcher->set_response_headers(headers);
126 124
127 // Call the URLFetcher delegate to continue the test. 125 // Call the URLFetcher delegate to continue the test.
128 test_url_fetcher->delegate()->OnURLFetchComplete(test_url_fetcher); 126 test_url_fetcher->delegate()->OnURLFetchComplete(test_url_fetcher);
129 } 127 }
130 128
131 TEST_F(ImageDataFetcherTest, FetchImageData_NotFound) { 129 TEST_F(ImageDataFetcherTest, FetchImageData_NotFound) {
132 image_data_fetcher_.FetchImageData( 130 image_data_fetcher_.FetchImageData(
133 GURL(kImageURL), base::Bind(&ImageDataFetcherTest::OnImageDataFetched, 131 GURL(kImageURL), base::Bind(&ImageDataFetcherTest::OnImageDataFetched,
134 base::Unretained(this))); 132 base::Unretained(this)));
135 133
134 RequestMetadata expected_metadata;
135 expected_metadata.mime_type = std::string("image/png");
136 expected_metadata.http_response_code = net::HTTP_NOT_FOUND;
137 // For 404, expect an empty result even though correct image data is sent.
138 EXPECT_CALL(*this, OnImageDataFetched(std::string(), expected_metadata));
139
140 // Get and configure the TestURLFetcher.
141 net::TestURLFetcher* test_url_fetcher = fetcher_factory_.GetFetcherByID(0);
142 ASSERT_NE(nullptr, test_url_fetcher);
143 test_url_fetcher->set_status(
144 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, net::OK));
145 test_url_fetcher->SetResponseString(kURLResponseData);
146
136 std::string raw_header = 147 std::string raw_header =
137 "HTTP/1.1 404 Not Found\n" 148 "HTTP/1.1 404 Not Found\n"
138 "Content-type: image/png\n\n"; 149 "Content-type: image/png\n\n";
139 std::replace(raw_header.begin(), raw_header.end(), '\n', '\0'); 150 std::replace(raw_header.begin(), raw_header.end(), '\n', '\0');
140 scoped_refptr<net::HttpResponseHeaders> headers( 151 scoped_refptr<net::HttpResponseHeaders> headers(
141 new net::HttpResponseHeaders(raw_header)); 152 new net::HttpResponseHeaders(raw_header));
153 test_url_fetcher->set_response_headers(headers);
154
155 // Call the URLFetcher delegate to continue the test.
156 test_url_fetcher->delegate()->OnURLFetchComplete(test_url_fetcher);
157 }
158
159 TEST_F(ImageDataFetcherTest, FetchImageData_WithContentLocation) {
160 image_data_fetcher_.FetchImageData(
161 GURL(kImageURL), base::Bind(&ImageDataFetcherTest::OnImageDataFetched,
162 base::Unretained(this)));
142 163
143 RequestMetadata expected_metadata; 164 RequestMetadata expected_metadata;
144 expected_metadata.mime_type = std::string("image/png"); 165 expected_metadata.mime_type = std::string("image/png");
145 expected_metadata.http_response_code = net::HTTP_NOT_FOUND; 166 expected_metadata.http_response_code = net::HTTP_NOT_FOUND;
146 expected_metadata.http_response_headers = headers.get(); 167 expected_metadata.content_location_header = "http://test-location/image.png";
147 // For 404, expect an empty result even though correct image data is sent. 168 // For 404, expect an empty result even though correct image data is sent.
148 EXPECT_CALL(*this, OnImageDataFetched(std::string(), expected_metadata)); 169 EXPECT_CALL(*this, OnImageDataFetched(std::string(), expected_metadata));
149 170
150 // Get and configure the TestURLFetcher. 171 // Get and configure the TestURLFetcher.
151 net::TestURLFetcher* test_url_fetcher = fetcher_factory_.GetFetcherByID(0); 172 net::TestURLFetcher* test_url_fetcher = fetcher_factory_.GetFetcherByID(0);
152 ASSERT_NE(nullptr, test_url_fetcher); 173 ASSERT_NE(nullptr, test_url_fetcher);
153 test_url_fetcher->set_status( 174 test_url_fetcher->set_status(
154 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, net::OK)); 175 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, net::OK));
155 test_url_fetcher->SetResponseString(kURLResponseData); 176 test_url_fetcher->SetResponseString(kURLResponseData);
177
178 std::string raw_header =
179 "HTTP/1.1 404 Not Found\n"
180 "Content-type: image/png\n"
181 "Content-location: http://test-location/image.png\n\n";
182 std::replace(raw_header.begin(), raw_header.end(), '\n', '\0');
183 scoped_refptr<net::HttpResponseHeaders> headers(
184 new net::HttpResponseHeaders(raw_header));
156 test_url_fetcher->set_response_headers(headers); 185 test_url_fetcher->set_response_headers(headers);
157 186
158 // Call the URLFetcher delegate to continue the test. 187 // Call the URLFetcher delegate to continue the test.
159 test_url_fetcher->delegate()->OnURLFetchComplete(test_url_fetcher); 188 test_url_fetcher->delegate()->OnURLFetchComplete(test_url_fetcher);
160 } 189 }
161 190
162 TEST_F(ImageDataFetcherTest, FetchImageData_FailedRequest) { 191 TEST_F(ImageDataFetcherTest, FetchImageData_FailedRequest) {
163 image_data_fetcher_.FetchImageData( 192 image_data_fetcher_.FetchImageData(
164 GURL(kImageURL), 193 GURL(kImageURL),
165 base::Bind(&ImageDataFetcherTest::OnImageDataFetchedFailedRequest, 194 base::Bind(&ImageDataFetcherTest::OnImageDataFetchedFailedRequest,
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 ASSERT_NE(nullptr, fetcher_factory_.GetFetcherByID(0)); 288 ASSERT_NE(nullptr, fetcher_factory_.GetFetcherByID(0));
260 289
261 test_url_fetcher->delegate()->OnURLFetchDownloadProgress( 290 test_url_fetcher->delegate()->OnURLFetchDownloadProgress(
262 test_url_fetcher, kMaxDownloadBytes + 1, // Limits are exceeded. 291 test_url_fetcher, kMaxDownloadBytes + 1, // Limits are exceeded.
263 /*total=*/-1, /*current_network_bytes=*/0); 292 /*total=*/-1, /*current_network_bytes=*/0);
264 // ... and be canceled. 293 // ... and be canceled.
265 EXPECT_EQ(nullptr, fetcher_factory_.GetFetcherByID(0)); 294 EXPECT_EQ(nullptr, fetcher_factory_.GetFetcherByID(0));
266 } 295 }
267 296
268 } // namespace image_fetcher 297 } // namespace image_fetcher
OLDNEW
« no previous file with comments | « components/image_fetcher/core/image_data_fetcher.cc ('k') | components/image_fetcher/core/request_metadata.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698