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

Side by Side Diff: components/data_reduction_proxy/content/browser/content_lofi_decider_unittest.cc

Issue 2296043003: Rename Lo-Fi previews to lite pages (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@newLoFiInfoBarAddTests
Patch Set: add back histogram value Created 4 years, 2 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/data_reduction_proxy/content/browser/content_lofi_decider.h " 5 #include "components/data_reduction_proxy/content/browser/content_lofi_decider.h "
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 static void VerifyLoFiHeader(bool expected_lofi_used, 133 static void VerifyLoFiHeader(bool expected_lofi_used,
134 const net::HttpRequestHeaders& headers) { 134 const net::HttpRequestHeaders& headers) {
135 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header())); 135 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header()));
136 std::string header_value; 136 std::string header_value;
137 headers.GetHeader(chrome_proxy_header(), &header_value); 137 headers.GetHeader(chrome_proxy_header(), &header_value);
138 EXPECT_EQ( 138 EXPECT_EQ(
139 expected_lofi_used, 139 expected_lofi_used,
140 header_value.find(chrome_proxy_lo_fi_directive()) != std::string::npos); 140 header_value.find(chrome_proxy_lo_fi_directive()) != std::string::npos);
141 } 141 }
142 142
143 static void VerifyLoFiPreviewHeader(bool expected_lofi_preview_used, 143 static void VerifyLitePageHeader(bool expected_lite_page_used,
144 const net::HttpRequestHeaders& headers) { 144 const net::HttpRequestHeaders& headers) {
145 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header())); 145 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header()));
146 std::string header_value; 146 std::string header_value;
147 headers.GetHeader(chrome_proxy_header(), &header_value); 147 headers.GetHeader(chrome_proxy_header(), &header_value);
148 EXPECT_EQ(expected_lofi_preview_used, 148 EXPECT_EQ(expected_lite_page_used,
149 header_value.find(chrome_proxy_lo_fi_preview_directive()) != 149 header_value.find(chrome_proxy_lite_page_directive()) !=
150 std::string::npos); 150 std::string::npos);
151 } 151 }
152 152
153 static void VerifyLoFiIgnorePreviewBlacklistHeader( 153 static void VerifyLitePageIgnoreBlacklistHeader(
154 bool expected_lofi_preview_used, 154 bool expected_lite_page_used,
155 const net::HttpRequestHeaders& headers) { 155 const net::HttpRequestHeaders& headers) {
156 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header())); 156 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header()));
157 std::string header_value; 157 std::string header_value;
158 headers.GetHeader(chrome_proxy_header(), &header_value); 158 headers.GetHeader(chrome_proxy_header(), &header_value);
159 EXPECT_EQ(expected_lofi_preview_used, 159 EXPECT_EQ(expected_lite_page_used,
160 header_value.find( 160 header_value.find(
161 chrome_proxy_lo_fi_ignore_preview_blacklist_directive()) != 161 chrome_proxy_lite_page_ignore_blacklist_directive()) !=
162 std::string::npos); 162 std::string::npos);
163 } 163 }
164 164
165 protected: 165 protected:
166 base::MessageLoopForIO message_loop_; 166 base::MessageLoopForIO message_loop_;
167 net::MockClientSocketFactory mock_socket_factory_; 167 net::MockClientSocketFactory mock_socket_factory_;
168 net::TestURLRequestContext context_; 168 net::TestURLRequestContext context_;
169 net::TestDelegate delegate_; 169 net::TestDelegate delegate_;
170 std::unique_ptr<DataReductionProxyTestContext> test_context_; 170 std::unique_ptr<DataReductionProxyTestContext> test_context_;
171 std::unique_ptr<DataReductionProxyNetworkDelegate> 171 std::unique_ptr<DataReductionProxyNetworkDelegate>
172 data_reduction_proxy_network_delegate_; 172 data_reduction_proxy_network_delegate_;
173 }; 173 };
174 174
175 TEST_F(ContentLoFiDeciderTest, LoFiFlags) { 175 TEST_F(ContentLoFiDeciderTest, LoFiFlags) {
176 // Enable Lo-Fi. 176 // Enable Lo-Fi.
177 const struct { 177 const struct {
178 bool is_using_lofi; 178 bool is_using_lofi;
179 bool is_using_previews; 179 bool is_using_lite_page;
180 bool is_main_frame; 180 bool is_main_frame;
181 } tests[] = { 181 } tests[] = {
182 {false, false, false}, {false, false, true}, {true, false, true}, 182 {false, false, false}, {false, false, true}, {true, false, true},
183 {true, false, false}, {false, true, false}, {false, true, true}, 183 {true, false, false}, {false, true, false}, {false, true, true},
184 {true, true, true}, {true, true, false}, 184 {true, true, true}, {true, true, false},
185 }; 185 };
186 186
187 for (size_t i = 0; i < arraysize(tests); ++i) { 187 for (size_t i = 0; i < arraysize(tests); ++i) {
188 std::unique_ptr<net::URLRequest> request = 188 std::unique_ptr<net::URLRequest> request =
189 CreateRequest(tests[i].is_using_lofi); 189 CreateRequest(tests[i].is_using_lofi);
190 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); 190 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
191 command_line->InitFromArgv(command_line->argv()); 191 command_line->InitFromArgv(command_line->argv());
192 if (tests[i].is_using_previews) { 192 if (tests[i].is_using_lite_page) {
193 command_line->AppendSwitch( 193 command_line->AppendSwitch(switches::kEnableDataReductionProxyLitePage);
194 switches::kEnableDataReductionProxyLoFiPreview);
195 } 194 }
196 195
197 // No flags or field trials. The Lo-Fi header should not be added. 196 // No flags or field trials. The Lo-Fi header should not be added.
198 net::HttpRequestHeaders headers; 197 net::HttpRequestHeaders headers;
199 NotifyBeforeSendHeaders(&headers, request.get(), true); 198 NotifyBeforeSendHeaders(&headers, request.get(), true);
200 VerifyLoFiHeader(false, headers); 199 VerifyLoFiHeader(false, headers);
201 VerifyLoFiPreviewHeader(false, headers); 200 VerifyLitePageHeader(false, headers);
202 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); 201 VerifyLitePageIgnoreBlacklistHeader(false, headers);
203 202
204 // The Lo-Fi flag is "always-on", Lo-Fi is being used, and it's a main frame 203 // The Lo-Fi flag is "always-on", Lo-Fi is being used, and it's a main frame
205 // request. Lo-Fi preview header should be added. 204 // request. Lo-Fi or lite page header should be added.
206 command_line->AppendSwitchASCII( 205 command_line->AppendSwitchASCII(
207 switches::kDataReductionProxyLoFi, 206 switches::kDataReductionProxyLoFi,
208 switches::kDataReductionProxyLoFiValueAlwaysOn); 207 switches::kDataReductionProxyLoFiValueAlwaysOn);
209 if (tests[i].is_main_frame) 208 if (tests[i].is_main_frame)
210 request->SetLoadFlags(request->load_flags() | 209 request->SetLoadFlags(request->load_flags() |
211 net::LOAD_MAIN_FRAME_DEPRECATED); 210 net::LOAD_MAIN_FRAME_DEPRECATED);
212 headers.Clear(); 211 headers.Clear();
213 NotifyBeforeSendHeaders(&headers, request.get(), true); 212 NotifyBeforeSendHeaders(&headers, request.get(), true);
214 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_previews && 213 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_lite_page &&
215 !tests[i].is_main_frame, 214 !tests[i].is_main_frame,
216 headers); 215 headers);
217 VerifyLoFiPreviewHeader(tests[i].is_using_lofi && 216 VerifyLitePageHeader(tests[i].is_using_lofi &&
218 tests[i].is_using_previews && 217 tests[i].is_using_lite_page &&
219 tests[i].is_main_frame, 218 tests[i].is_main_frame,
220 headers); 219 headers);
221 VerifyLoFiIgnorePreviewBlacklistHeader(tests[i].is_using_lofi && 220 VerifyLitePageIgnoreBlacklistHeader(tests[i].is_using_lofi &&
222 tests[i].is_using_previews && 221 tests[i].is_using_lite_page &&
223 tests[i].is_main_frame, 222 tests[i].is_main_frame,
224 headers); 223 headers);
225 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); 224 DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
226 // |lofi_requested| should be set to false when Lo-Fi is enabled using 225 // |lofi_requested| should be set to false when Lo-Fi is enabled using
227 // flags. 226 // flags.
228 EXPECT_FALSE(data->lofi_requested()); 227 EXPECT_FALSE(data->lofi_requested());
229 228
230 // The Lo-Fi flag is "always-on" and Lo-Fi is being used. Lo-Fi header 229 // The Lo-Fi flag is "always-on" and Lo-Fi is being used. Lo-Fi header
231 // should be added. 230 // should be added.
232 request->SetLoadFlags(0); 231 request->SetLoadFlags(0);
233 headers.Clear(); 232 headers.Clear();
234 NotifyBeforeSendHeaders(&headers, request.get(), true); 233 NotifyBeforeSendHeaders(&headers, request.get(), true);
235 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_previews, 234 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_lite_page,
236 headers); 235 headers);
237 VerifyLoFiPreviewHeader(false, headers); 236 VerifyLitePageHeader(false, headers);
238 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); 237 VerifyLitePageIgnoreBlacklistHeader(false, headers);
239 238
240 // The Lo-Fi flag is "cellular-only" and Lo-Fi is being used. Lo-Fi header 239 // The Lo-Fi flag is "cellular-only" and Lo-Fi is being used. Lo-Fi header
241 // should be added. 240 // should be added.
242 command_line->AppendSwitchASCII( 241 command_line->AppendSwitchASCII(
243 switches::kDataReductionProxyLoFi, 242 switches::kDataReductionProxyLoFi,
244 switches::kDataReductionProxyLoFiValueCellularOnly); 243 switches::kDataReductionProxyLoFiValueCellularOnly);
245 headers.Clear(); 244 headers.Clear();
246 NotifyBeforeSendHeaders(&headers, request.get(), true); 245 NotifyBeforeSendHeaders(&headers, request.get(), true);
247 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_previews, 246 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_lite_page,
248 headers); 247 headers);
249 VerifyLoFiPreviewHeader(false, headers); 248 VerifyLitePageHeader(false, headers);
250 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); 249 VerifyLitePageIgnoreBlacklistHeader(false, headers);
251 data = DataReductionProxyData::GetData(*request); 250 data = DataReductionProxyData::GetData(*request);
252 // |lofi_requested| should be set to false when Lo-Fi is enabled using 251 // |lofi_requested| should be set to false when Lo-Fi is enabled using
253 // flags. 252 // flags.
254 EXPECT_FALSE(data->lofi_requested()); 253 EXPECT_FALSE(data->lofi_requested());
255 254
256 // The Lo-Fi flag is "slow-connections-only" and Lo-Fi is being used. Lo-Fi 255 // The Lo-Fi flag is "slow-connections-only" and Lo-Fi is being used. Lo-Fi
257 // header should be added. 256 // header should be added.
258 command_line->AppendSwitchASCII( 257 command_line->AppendSwitchASCII(
259 switches::kDataReductionProxyLoFi, 258 switches::kDataReductionProxyLoFi,
260 switches::kDataReductionProxyLoFiValueSlowConnectionsOnly); 259 switches::kDataReductionProxyLoFiValueSlowConnectionsOnly);
261 headers.Clear(); 260 headers.Clear();
262 NotifyBeforeSendHeaders(&headers, request.get(), true); 261 NotifyBeforeSendHeaders(&headers, request.get(), true);
263 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_previews, 262 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_lite_page,
264 headers); 263 headers);
265 VerifyLoFiPreviewHeader(false, headers); 264 VerifyLitePageHeader(false, headers);
266 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); 265 VerifyLitePageIgnoreBlacklistHeader(false, headers);
267 data = DataReductionProxyData::GetData(*request); 266 data = DataReductionProxyData::GetData(*request);
268 // |lofi_requested| should be set to false when Lo-Fi is enabled using 267 // |lofi_requested| should be set to false when Lo-Fi is enabled using
269 // flags. 268 // flags.
270 EXPECT_FALSE(data->lofi_requested()); 269 EXPECT_FALSE(data->lofi_requested());
271 } 270 }
272 } 271 }
273 272
274 TEST_F(ContentLoFiDeciderTest, LoFiEnabledFieldTrial) { 273 TEST_F(ContentLoFiDeciderTest, LoFiEnabledFieldTrial) {
275 base::FieldTrialList field_trial_list(nullptr); 274 base::FieldTrialList field_trial_list(nullptr);
276 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), 275 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
277 "Enabled"); 276 "Enabled");
278 // Enable Lo-Fi. 277 // Enable Lo-Fi.
279 const struct { 278 const struct {
280 bool is_using_lofi; 279 bool is_using_lofi;
281 bool is_main_frame; 280 bool is_main_frame;
282 } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}}; 281 } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}};
283 282
284 for (size_t i = 0; i < arraysize(tests); ++i) { 283 for (size_t i = 0; i < arraysize(tests); ++i) {
285 std::unique_ptr<net::URLRequest> request = 284 std::unique_ptr<net::URLRequest> request =
286 CreateRequest(tests[i].is_using_lofi); 285 CreateRequest(tests[i].is_using_lofi);
287 if (tests[i].is_main_frame) 286 if (tests[i].is_main_frame)
288 request->SetLoadFlags(request->load_flags() | 287 request->SetLoadFlags(request->load_flags() |
289 net::LOAD_MAIN_FRAME_DEPRECATED); 288 net::LOAD_MAIN_FRAME_DEPRECATED);
290 net::HttpRequestHeaders headers; 289 net::HttpRequestHeaders headers;
291 NotifyBeforeSendHeaders(&headers, request.get(), true); 290 NotifyBeforeSendHeaders(&headers, request.get(), true);
292 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_main_frame, 291 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_main_frame,
293 headers); 292 headers);
294 VerifyLoFiPreviewHeader(false, headers); 293 VerifyLitePageHeader(false, headers);
295 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); 294 VerifyLitePageIgnoreBlacklistHeader(false, headers);
296 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); 295 DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
297 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; 296 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i;
298 } 297 }
299 } 298 }
300 299
301 TEST_F(ContentLoFiDeciderTest, LoFiControlFieldTrial) { 300 TEST_F(ContentLoFiDeciderTest, LoFiControlFieldTrial) {
302 base::FieldTrialList field_trial_list(nullptr); 301 base::FieldTrialList field_trial_list(nullptr);
303 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), 302 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
304 "Control"); 303 "Control");
305 // Enable Lo-Fi. 304 // Enable Lo-Fi.
306 const struct { 305 const struct {
307 bool is_using_lofi; 306 bool is_using_lofi;
308 bool is_main_frame; 307 bool is_main_frame;
309 } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}}; 308 } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}};
310 309
311 for (size_t i = 0; i < arraysize(tests); ++i) { 310 for (size_t i = 0; i < arraysize(tests); ++i) {
312 std::unique_ptr<net::URLRequest> request = 311 std::unique_ptr<net::URLRequest> request =
313 CreateRequest(tests[i].is_using_lofi); 312 CreateRequest(tests[i].is_using_lofi);
314 if (tests[i].is_main_frame) 313 if (tests[i].is_main_frame)
315 request->SetLoadFlags(request->load_flags() | 314 request->SetLoadFlags(request->load_flags() |
316 net::LOAD_MAIN_FRAME_DEPRECATED); 315 net::LOAD_MAIN_FRAME_DEPRECATED);
317 net::HttpRequestHeaders headers; 316 net::HttpRequestHeaders headers;
318 NotifyBeforeSendHeaders(&headers, request.get(), true); 317 NotifyBeforeSendHeaders(&headers, request.get(), true);
319 VerifyLoFiHeader(false, headers); 318 VerifyLoFiHeader(false, headers);
320 VerifyLoFiPreviewHeader(false, headers); 319 VerifyLitePageHeader(false, headers);
321 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); 320 VerifyLitePageIgnoreBlacklistHeader(false, headers);
322 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); 321 DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
323 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; 322 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i;
324 } 323 }
325 } 324 }
326 325
327 TEST_F(ContentLoFiDeciderTest, LoFiPreviewFieldTrial) { 326 TEST_F(ContentLoFiDeciderTest, LitePageFieldTrial) {
328 base::FieldTrialList field_trial_list(nullptr); 327 base::FieldTrialList field_trial_list(nullptr);
329 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), 328 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
330 "Enabled_Preview"); 329 "Enabled_Preview");
331 // Enable Lo-Fi. 330 // Enable Lo-Fi.
332 const struct { 331 const struct {
333 bool is_using_lofi; 332 bool is_using_lofi;
334 bool is_main_frame; 333 bool is_main_frame;
335 } tests[] = { 334 } tests[] = {
336 {false, false}, {true, false}, {false, true}, {true, true}, 335 {false, false}, {true, false}, {false, true}, {true, true},
337 }; 336 };
338 337
339 for (size_t i = 0; i < arraysize(tests); ++i) { 338 for (size_t i = 0; i < arraysize(tests); ++i) {
340 std::unique_ptr<net::URLRequest> request = 339 std::unique_ptr<net::URLRequest> request =
341 CreateRequest(tests[i].is_using_lofi); 340 CreateRequest(tests[i].is_using_lofi);
342 if (tests[i].is_main_frame) 341 if (tests[i].is_main_frame)
343 request->SetLoadFlags(request->load_flags() | 342 request->SetLoadFlags(request->load_flags() |
344 net::LOAD_MAIN_FRAME_DEPRECATED); 343 net::LOAD_MAIN_FRAME_DEPRECATED);
345 net::HttpRequestHeaders headers; 344 net::HttpRequestHeaders headers;
346 NotifyBeforeSendHeaders(&headers, request.get(), true); 345 NotifyBeforeSendHeaders(&headers, request.get(), true);
347 VerifyLoFiHeader(false, headers); 346 VerifyLoFiHeader(false, headers);
348 VerifyLoFiPreviewHeader(tests[i].is_using_lofi && tests[i].is_main_frame, 347 VerifyLitePageHeader(tests[i].is_using_lofi && tests[i].is_main_frame,
349 headers); 348 headers);
350 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); 349 VerifyLitePageIgnoreBlacklistHeader(false, headers);
351 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); 350 DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
352 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; 351 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i;
353 } 352 }
354 } 353 }
355 354
356 TEST_F(ContentLoFiDeciderTest, AutoLoFi) { 355 TEST_F(ContentLoFiDeciderTest, AutoLoFi) {
357 const struct { 356 const struct {
358 bool auto_lofi_enabled_group; 357 bool auto_lofi_enabled_group;
359 bool auto_lofi_control_group; 358 bool auto_lofi_control_group;
360 bool network_prohibitively_slow; 359 bool network_prohibitively_slow;
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 net::HttpRequestHeaders headers; 476 net::HttpRequestHeaders headers;
478 NotifyBeforeSendHeaders(&headers, request.get(), false); 477 NotifyBeforeSendHeaders(&headers, request.get(), false);
479 std::string header_value; 478 std::string header_value;
480 headers.GetHeader(chrome_proxy_header(), &header_value); 479 headers.GetHeader(chrome_proxy_header(), &header_value);
481 EXPECT_EQ(std::string::npos, 480 EXPECT_EQ(std::string::npos,
482 header_value.find(chrome_proxy_lo_fi_directive())); 481 header_value.find(chrome_proxy_lo_fi_directive()));
483 } 482 }
484 } 483 }
485 484
486 } // namespace data_reduction_roxy 485 } // namespace data_reduction_roxy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698