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

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

Issue 2903453003: DataReductionProxy proto change to use exp=force_lite_page directive (Closed)
Patch Set: Created 3 years, 7 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 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 const net::HttpRequestHeaders& headers) { 196 const net::HttpRequestHeaders& headers) {
197 EXPECT_EQ(expected_compressed_video_used, 197 EXPECT_EQ(expected_compressed_video_used,
198 headers.HasHeader(chrome_proxy_accept_transform_header())); 198 headers.HasHeader(chrome_proxy_accept_transform_header()));
199 std::string header_value; 199 std::string header_value;
200 headers.GetHeader(chrome_proxy_accept_transform_header(), &header_value); 200 headers.GetHeader(chrome_proxy_accept_transform_header(), &header_value);
201 EXPECT_EQ( 201 EXPECT_EQ(
202 expected_compressed_video_used, 202 expected_compressed_video_used,
203 header_value.find(compressed_video_directive()) != std::string::npos); 203 header_value.find(compressed_video_directive()) != std::string::npos);
204 } 204 }
205 205
206 static void VerifyLitePageIgnoreBlacklistHeader( 206 static void VerifyForceLitePageHeader(
207 bool expected_blacklist_directive_added, 207 bool expected_force_directive_added,
208 const net::HttpRequestHeaders& headers) { 208 const net::HttpRequestHeaders& headers) {
209 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header())); 209 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header()));
210 std::string header_value; 210 std::string header_value;
211 headers.GetHeader(chrome_proxy_header(), &header_value); 211 headers.GetHeader(chrome_proxy_header(), &header_value);
212 EXPECT_EQ(expected_blacklist_directive_added, 212 EXPECT_EQ(expected_force_directive_added,
213 header_value.find( 213 header_value.find(chrome_proxy_force_lite_page_directive()) !=
214 chrome_proxy_lite_page_ignore_blacklist_directive()) !=
215 std::string::npos); 214 std::string::npos);
216 } 215 }
217 216
218 protected: 217 protected:
219 base::MessageLoopForIO message_loop_; 218 base::MessageLoopForIO message_loop_;
220 net::TestURLRequestContext context_; 219 net::TestURLRequestContext context_;
221 net::TestDelegate delegate_; 220 net::TestDelegate delegate_;
222 std::unique_ptr<DataReductionProxyTestContext> test_context_; 221 std::unique_ptr<DataReductionProxyTestContext> test_context_;
223 std::unique_ptr<DataReductionProxyNetworkDelegate> 222 std::unique_ptr<DataReductionProxyNetworkDelegate>
224 data_reduction_proxy_network_delegate_; 223 data_reduction_proxy_network_delegate_;
(...skipping 26 matching lines...) Expand all
251 command_line->InitFromArgv(command_line->argv()); 250 command_line->InitFromArgv(command_line->argv());
252 if (tests[i].is_using_lite_page) { 251 if (tests[i].is_using_lite_page) {
253 command_line->AppendSwitch(switches::kEnableDataReductionProxyLitePage); 252 command_line->AppendSwitch(switches::kEnableDataReductionProxyLitePage);
254 } 253 }
255 254
256 // No flags or field trials. The Lo-Fi header should not be added. 255 // No flags or field trials. The Lo-Fi header should not be added.
257 net::HttpRequestHeaders headers; 256 net::HttpRequestHeaders headers;
258 NotifyBeforeSendHeaders(&headers, request.get(), true); 257 NotifyBeforeSendHeaders(&headers, request.get(), true);
259 VerifyLoFiHeader(false, false, headers); 258 VerifyLoFiHeader(false, false, headers);
260 VerifyLitePageHeader(false, false, headers); 259 VerifyLitePageHeader(false, false, headers);
261 VerifyLitePageIgnoreBlacklistHeader(false, headers); 260 VerifyForceLitePageHeader(false, headers);
262 261
263 // The Lo-Fi flag is "always-on", Lo-Fi is being used, and it's a main frame 262 // The Lo-Fi flag is "always-on", Lo-Fi is being used, and it's a main frame
264 // request. Lo-Fi or lite page header should be added. 263 // request. Lo-Fi or lite page header should be added.
265 command_line->AppendSwitchASCII( 264 command_line->AppendSwitchASCII(
266 switches::kDataReductionProxyLoFi, 265 switches::kDataReductionProxyLoFi,
267 switches::kDataReductionProxyLoFiValueAlwaysOn); 266 switches::kDataReductionProxyLoFiValueAlwaysOn);
268 headers.Clear(); 267 headers.Clear();
269 NotifyBeforeSendHeaders(&headers, request.get(), true); 268 NotifyBeforeSendHeaders(&headers, request.get(), true);
270 VerifyLoFiHeader(!tests[i].is_main_frame && !tests[i].is_using_lite_page, 269 VerifyLoFiHeader(!tests[i].is_main_frame && !tests[i].is_using_lite_page,
271 !tests[i].is_main_frame && !tests[i].is_using_lofi && 270 !tests[i].is_main_frame && !tests[i].is_using_lofi &&
272 !tests[i].is_using_lite_page, 271 !tests[i].is_using_lite_page,
273 headers); 272 headers);
274 VerifyLitePageHeader(tests[i].is_using_lite_page && tests[i].is_main_frame, 273 VerifyLitePageHeader(tests[i].is_using_lite_page && tests[i].is_main_frame,
275 false, headers); 274 false, headers);
276 VerifyLitePageIgnoreBlacklistHeader( 275 VerifyForceLitePageHeader(
277 tests[i].is_using_lite_page && tests[i].is_main_frame, headers); 276 tests[i].is_using_lite_page && tests[i].is_main_frame, headers);
278 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); 277 DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
279 // |lofi_requested| should be set to false when Lo-Fi is enabled using 278 // |lofi_requested| should be set to false when Lo-Fi is enabled using
280 // flags. 279 // flags.
281 EXPECT_FALSE(data->lofi_requested()); 280 EXPECT_FALSE(data->lofi_requested());
282 281
283 // The Lo-Fi flag is "always-on" and Lo-Fi is being used. Lo-Fi header 282 // The Lo-Fi flag is "always-on" and Lo-Fi is being used. Lo-Fi header
284 // should be added. 283 // should be added.
285 AllocateRequestInfoForTesting( 284 AllocateRequestInfoForTesting(
286 request.get(), content::RESOURCE_TYPE_SUB_FRAME, previews_state); 285 request.get(), content::RESOURCE_TYPE_SUB_FRAME, previews_state);
287 headers.Clear(); 286 headers.Clear();
288 NotifyBeforeSendHeaders(&headers, request.get(), true); 287 NotifyBeforeSendHeaders(&headers, request.get(), true);
289 VerifyLoFiHeader(!tests[i].is_using_lite_page, !tests[i].is_using_lofi, 288 VerifyLoFiHeader(!tests[i].is_using_lite_page, !tests[i].is_using_lofi,
290 headers); 289 headers);
291 VerifyLitePageHeader(false, false, headers); 290 VerifyLitePageHeader(false, false, headers);
292 VerifyLitePageIgnoreBlacklistHeader(false, headers); 291 VerifyForceLitePageHeader(false, headers);
293 292
294 // The Lo-Fi flag is "cellular-only" and Lo-Fi is being used. Lo-Fi header 293 // The Lo-Fi flag is "cellular-only" and Lo-Fi is being used. Lo-Fi header
295 // should be added. 294 // should be added.
296 command_line->AppendSwitchASCII( 295 command_line->AppendSwitchASCII(
297 switches::kDataReductionProxyLoFi, 296 switches::kDataReductionProxyLoFi,
298 switches::kDataReductionProxyLoFiValueCellularOnly); 297 switches::kDataReductionProxyLoFiValueCellularOnly);
299 headers.Clear(); 298 headers.Clear();
300 NotifyBeforeSendHeaders(&headers, request.get(), true); 299 NotifyBeforeSendHeaders(&headers, request.get(), true);
301 VerifyLoFiHeader(!tests[i].is_using_lite_page, !tests[i].is_using_lofi, 300 VerifyLoFiHeader(!tests[i].is_using_lite_page, !tests[i].is_using_lofi,
302 headers); 301 headers);
303 VerifyLitePageHeader(false, false, headers); 302 VerifyLitePageHeader(false, false, headers);
304 VerifyLitePageIgnoreBlacklistHeader(false, headers); 303 VerifyForceLitePageHeader(false, headers);
305 data = DataReductionProxyData::GetData(*request); 304 data = DataReductionProxyData::GetData(*request);
306 // |lofi_requested| should be set to false when Lo-Fi is enabled using 305 // |lofi_requested| should be set to false when Lo-Fi is enabled using
307 // flags. 306 // flags.
308 EXPECT_FALSE(data->lofi_requested()); 307 EXPECT_FALSE(data->lofi_requested());
309 308
310 // The Lo-Fi flag is "slow-connections-only" and Lo-Fi is being used. Lo-Fi 309 // The Lo-Fi flag is "slow-connections-only" and Lo-Fi is being used. Lo-Fi
311 // header should be added. 310 // header should be added.
312 command_line->AppendSwitchASCII( 311 command_line->AppendSwitchASCII(
313 switches::kDataReductionProxyLoFi, 312 switches::kDataReductionProxyLoFi,
314 switches::kDataReductionProxyLoFiValueSlowConnectionsOnly); 313 switches::kDataReductionProxyLoFiValueSlowConnectionsOnly);
315 headers.Clear(); 314 headers.Clear();
316 NotifyBeforeSendHeaders(&headers, request.get(), true); 315 NotifyBeforeSendHeaders(&headers, request.get(), true);
317 VerifyLoFiHeader(!tests[i].is_using_lite_page, !tests[i].is_using_lofi, 316 VerifyLoFiHeader(!tests[i].is_using_lite_page, !tests[i].is_using_lofi,
318 headers); 317 headers);
319 VerifyLitePageHeader(false, false, headers); 318 VerifyLitePageHeader(false, false, headers);
320 VerifyLitePageIgnoreBlacklistHeader(false, headers); 319 VerifyForceLitePageHeader(false, headers);
321 data = DataReductionProxyData::GetData(*request); 320 data = DataReductionProxyData::GetData(*request);
322 // |lofi_requested| should be set to false when Lo-Fi is enabled using 321 // |lofi_requested| should be set to false when Lo-Fi is enabled using
323 // flags. 322 // flags.
324 EXPECT_FALSE(data->lofi_requested()); 323 EXPECT_FALSE(data->lofi_requested());
325 } 324 }
326 } 325 }
327 326
328 TEST_F(ContentLoFiDeciderTest, LoFiEnabledFieldTrial) { 327 TEST_F(ContentLoFiDeciderTest, LoFiEnabledFieldTrial) {
329 base::FieldTrialList field_trial_list(nullptr); 328 base::FieldTrialList field_trial_list(nullptr);
330 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), 329 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 bool is_lofi_resource_type = 385 bool is_lofi_resource_type =
387 !(tests[i].resource_type == content::RESOURCE_TYPE_MAIN_FRAME || 386 !(tests[i].resource_type == content::RESOURCE_TYPE_MAIN_FRAME ||
388 tests[i].resource_type == content::RESOURCE_TYPE_STYLESHEET || 387 tests[i].resource_type == content::RESOURCE_TYPE_STYLESHEET ||
389 tests[i].resource_type == content::RESOURCE_TYPE_SCRIPT || 388 tests[i].resource_type == content::RESOURCE_TYPE_SCRIPT ||
390 tests[i].resource_type == content::RESOURCE_TYPE_FONT_RESOURCE || 389 tests[i].resource_type == content::RESOURCE_TYPE_FONT_RESOURCE ||
391 tests[i].resource_type == content::RESOURCE_TYPE_MEDIA || 390 tests[i].resource_type == content::RESOURCE_TYPE_MEDIA ||
392 tests[i].resource_type == content::RESOURCE_TYPE_CSP_REPORT); 391 tests[i].resource_type == content::RESOURCE_TYPE_CSP_REPORT);
393 392
394 VerifyLoFiHeader(is_lofi_resource_type, !tests[i].is_using_lofi, headers); 393 VerifyLoFiHeader(is_lofi_resource_type, !tests[i].is_using_lofi, headers);
395 VerifyLitePageHeader(false, false, headers); 394 VerifyLitePageHeader(false, false, headers);
396 VerifyLitePageIgnoreBlacklistHeader(false, headers); 395 VerifyForceLitePageHeader(false, headers);
397 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); 396 DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
398 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; 397 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i;
399 } 398 }
400 } 399 }
401 400
402 TEST_F(ContentLoFiDeciderTest, LoFiControlFieldTrial) { 401 TEST_F(ContentLoFiDeciderTest, LoFiControlFieldTrial) {
403 base::FieldTrialList field_trial_list(nullptr); 402 base::FieldTrialList field_trial_list(nullptr);
404 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), 403 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
405 "Control"); 404 "Control");
406 // Enable Lo-Fi. 405 // Enable Lo-Fi.
407 const struct { 406 const struct {
408 bool is_using_lofi; 407 bool is_using_lofi;
409 bool is_main_frame; 408 bool is_main_frame;
410 } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}}; 409 } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}};
411 410
412 for (size_t i = 0; i < arraysize(tests); ++i) { 411 for (size_t i = 0; i < arraysize(tests); ++i) {
413 std::unique_ptr<net::URLRequest> request = CreateRequest( 412 std::unique_ptr<net::URLRequest> request = CreateRequest(
414 tests[i].is_main_frame, tests[i].is_using_lofi ? content::SERVER_LOFI_ON 413 tests[i].is_main_frame, tests[i].is_using_lofi ? content::SERVER_LOFI_ON
415 : content::PREVIEWS_OFF); 414 : content::PREVIEWS_OFF);
416 net::HttpRequestHeaders headers; 415 net::HttpRequestHeaders headers;
417 NotifyBeforeSendHeaders(&headers, request.get(), true); 416 NotifyBeforeSendHeaders(&headers, request.get(), true);
418 VerifyLoFiHeader(false, false, headers); 417 VerifyLoFiHeader(false, false, headers);
419 VerifyLitePageHeader(false, false, headers); 418 VerifyLitePageHeader(false, false, headers);
420 VerifyLitePageIgnoreBlacklistHeader(false, headers); 419 VerifyForceLitePageHeader(false, headers);
421 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); 420 DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
422 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; 421 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i;
423 } 422 }
424 } 423 }
425 424
426 TEST_F(ContentLoFiDeciderTest, LitePageFieldTrial) { 425 TEST_F(ContentLoFiDeciderTest, LitePageFieldTrial) {
427 base::FieldTrialList field_trial_list(nullptr); 426 base::FieldTrialList field_trial_list(nullptr);
428 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), 427 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
429 "Enabled_Preview"); 428 "Enabled_Preview");
430 // Enable Lo-Fi. 429 // Enable Lo-Fi.
431 const struct { 430 const struct {
432 bool is_using_lite_page; 431 bool is_using_lite_page;
433 bool is_main_frame; 432 bool is_main_frame;
434 } tests[] = { 433 } tests[] = {
435 {false, false}, {true, false}, {false, true}, {true, true}, 434 {false, false}, {true, false}, {false, true}, {true, true},
436 }; 435 };
437 436
438 for (size_t i = 0; i < arraysize(tests); ++i) { 437 for (size_t i = 0; i < arraysize(tests); ++i) {
439 std::unique_ptr<net::URLRequest> request = 438 std::unique_ptr<net::URLRequest> request =
440 CreateRequest(tests[i].is_main_frame, tests[i].is_using_lite_page 439 CreateRequest(tests[i].is_main_frame, tests[i].is_using_lite_page
441 ? content::SERVER_LITE_PAGE_ON 440 ? content::SERVER_LITE_PAGE_ON
442 : content::PREVIEWS_OFF); 441 : content::PREVIEWS_OFF);
443 net::HttpRequestHeaders headers; 442 net::HttpRequestHeaders headers;
444 NotifyBeforeSendHeaders(&headers, request.get(), true); 443 NotifyBeforeSendHeaders(&headers, request.get(), true);
445 VerifyLoFiHeader(false, false, headers); 444 VerifyLoFiHeader(false, false, headers);
446 VerifyLitePageHeader(tests[i].is_main_frame, !tests[i].is_using_lite_page, 445 VerifyLitePageHeader(tests[i].is_main_frame, !tests[i].is_using_lite_page,
447 headers); 446 headers);
448 VerifyLitePageIgnoreBlacklistHeader(false, headers); 447 VerifyForceLitePageHeader(false, headers);
449 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); 448 DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
450 EXPECT_EQ(tests[i].is_using_lite_page, data->lofi_requested()) << i; 449 EXPECT_EQ(tests[i].is_using_lite_page, data->lofi_requested()) << i;
451 } 450 }
452 } 451 }
453 452
454 TEST_F(ContentLoFiDeciderTest, LitePageFieldTrialFallbackEnabled) { 453 TEST_F(ContentLoFiDeciderTest, LitePageFieldTrialFallbackEnabled) {
455 base::FieldTrialList field_trial_list(nullptr); 454 base::FieldTrialList field_trial_list(nullptr);
456 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), 455 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
457 "Enabled_Preview"); 456 "Enabled_Preview");
458 base::FieldTrialList::CreateFieldTrial( 457 base::FieldTrialList::CreateFieldTrial(
(...skipping 23 matching lines...) Expand all
482 CreateRequest(tests[i].is_main_frame, previews_state); 481 CreateRequest(tests[i].is_main_frame, previews_state);
483 net::HttpRequestHeaders headers; 482 net::HttpRequestHeaders headers;
484 NotifyBeforeSendHeaders(&headers, request.get(), true); 483 NotifyBeforeSendHeaders(&headers, request.get(), true);
485 VerifyLoFiHeader(!tests[i].is_main_frame && !tests[i].is_using_lite_page, 484 VerifyLoFiHeader(!tests[i].is_main_frame && !tests[i].is_using_lite_page,
486 !tests[i].is_main_frame && !tests[i].is_using_lofi && 485 !tests[i].is_main_frame && !tests[i].is_using_lofi &&
487 !tests[i].is_using_lite_page, 486 !tests[i].is_using_lite_page,
488 headers); 487 headers);
489 VerifyLitePageHeader(tests[i].is_main_frame, 488 VerifyLitePageHeader(tests[i].is_main_frame,
490 tests[i].is_main_frame && !tests[i].is_using_lite_page, 489 tests[i].is_main_frame && !tests[i].is_using_lite_page,
491 headers); 490 headers);
492 VerifyLitePageIgnoreBlacklistHeader(false, headers); 491 VerifyForceLitePageHeader(false, headers);
493 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); 492 DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
494 EXPECT_EQ(tests[i].is_using_lofi || tests[i].is_using_lite_page, 493 EXPECT_EQ(tests[i].is_using_lofi || tests[i].is_using_lite_page,
495 data->lofi_requested()) 494 data->lofi_requested())
496 << i; 495 << i;
497 } 496 }
498 } 497 }
499 498
500 TEST_F(ContentLoFiDeciderTest, LitePageFieldTrialFallbackDisabled) { 499 TEST_F(ContentLoFiDeciderTest, LitePageFieldTrialFallbackDisabled) {
501 base::FieldTrialList field_trial_list(nullptr); 500 base::FieldTrialList field_trial_list(nullptr);
502 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), 501 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
(...skipping 19 matching lines...) Expand all
522 previews_state = content::PREVIEWS_OFF; 521 previews_state = content::PREVIEWS_OFF;
523 522
524 std::unique_ptr<net::URLRequest> request = 523 std::unique_ptr<net::URLRequest> request =
525 CreateRequest(tests[i].is_main_frame, previews_state); 524 CreateRequest(tests[i].is_main_frame, previews_state);
526 net::HttpRequestHeaders headers; 525 net::HttpRequestHeaders headers;
527 NotifyBeforeSendHeaders(&headers, request.get(), true); 526 NotifyBeforeSendHeaders(&headers, request.get(), true);
528 VerifyLoFiHeader(false, false, headers); 527 VerifyLoFiHeader(false, false, headers);
529 VerifyLitePageHeader(tests[i].is_main_frame, 528 VerifyLitePageHeader(tests[i].is_main_frame,
530 tests[i].is_main_frame && !tests[i].is_using_lite_page, 529 tests[i].is_main_frame && !tests[i].is_using_lite_page,
531 headers); 530 headers);
532 VerifyLitePageIgnoreBlacklistHeader(false, headers); 531 VerifyForceLitePageHeader(false, headers);
533 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); 532 DataReductionProxyData* data = DataReductionProxyData::GetData(*request);
534 EXPECT_EQ(tests[i].is_using_lofi || tests[i].is_using_lite_page, 533 EXPECT_EQ(tests[i].is_using_lofi || tests[i].is_using_lite_page,
535 data->lofi_requested()) 534 data->lofi_requested())
536 << i; 535 << i;
537 } 536 }
538 } 537 }
539 538
540 TEST_F(ContentLoFiDeciderTest, AutoLoFi) { 539 TEST_F(ContentLoFiDeciderTest, AutoLoFi) {
541 const struct { 540 const struct {
542 bool auto_lofi_enabled_group; 541 bool auto_lofi_enabled_group;
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 TEST_F(ContentLoFiDeciderTest, RemoveAcceptTransformHeader) { 741 TEST_F(ContentLoFiDeciderTest, RemoveAcceptTransformHeader) {
743 std::unique_ptr<data_reduction_proxy::ContentLoFiDecider> lofi_decider( 742 std::unique_ptr<data_reduction_proxy::ContentLoFiDecider> lofi_decider(
744 new data_reduction_proxy::ContentLoFiDecider()); 743 new data_reduction_proxy::ContentLoFiDecider());
745 net::HttpRequestHeaders headers; 744 net::HttpRequestHeaders headers;
746 headers.SetHeader(chrome_proxy_accept_transform_header(), "Foo"); 745 headers.SetHeader(chrome_proxy_accept_transform_header(), "Foo");
747 EXPECT_TRUE(headers.HasHeader(chrome_proxy_accept_transform_header())); 746 EXPECT_TRUE(headers.HasHeader(chrome_proxy_accept_transform_header()));
748 lofi_decider->RemoveAcceptTransformHeader(&headers); 747 lofi_decider->RemoveAcceptTransformHeader(&headers);
749 EXPECT_FALSE(headers.HasHeader(chrome_proxy_accept_transform_header())); 748 EXPECT_FALSE(headers.HasHeader(chrome_proxy_accept_transform_header()));
750 } 749 }
751 750
752 TEST_F(ContentLoFiDeciderTest, MaybeIgnoreBlacklist) { 751 TEST_F(ContentLoFiDeciderTest, MaybeSetForceLitePageDirective) {
753 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); 752 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
754 command_line->InitFromArgv(command_line->argv()); 753 command_line->InitFromArgv(command_line->argv());
755 std::unique_ptr<data_reduction_proxy::ContentLoFiDecider> lofi_decider( 754 std::unique_ptr<data_reduction_proxy::ContentLoFiDecider> lofi_decider(
756 new data_reduction_proxy::ContentLoFiDecider()); 755 new data_reduction_proxy::ContentLoFiDecider());
757 net::HttpRequestHeaders headers; 756 net::HttpRequestHeaders headers;
758 lofi_decider->MaybeSetIgnorePreviewsBlacklistDirective(&headers); 757 lofi_decider->MaybeSetForceLitePageDirective(&headers);
759 EXPECT_FALSE(headers.HasHeader(chrome_proxy_header())); 758 EXPECT_FALSE(headers.HasHeader(chrome_proxy_header()));
760 759
761 headers.SetHeader(chrome_proxy_header(), "Foo"); 760 headers.SetHeader(chrome_proxy_header(), "Foo");
762 lofi_decider->MaybeSetIgnorePreviewsBlacklistDirective(&headers); 761 lofi_decider->MaybeSetForceLitePageDirective(&headers);
763 std::string header_value; 762 std::string header_value;
764 headers.GetHeader(chrome_proxy_header(), &header_value); 763 headers.GetHeader(chrome_proxy_header(), &header_value);
765 EXPECT_EQ("Foo", header_value); 764 EXPECT_EQ("Foo", header_value);
766 765
767 headers.RemoveHeader(chrome_proxy_header()); 766 headers.RemoveHeader(chrome_proxy_header());
768 command_line->AppendSwitch(switches::kEnableDataReductionProxyLitePage); 767 command_line->AppendSwitch(switches::kEnableDataReductionProxyLitePage);
769 headers.SetHeader(chrome_proxy_accept_transform_header(), "empty-image"); 768 headers.SetHeader(chrome_proxy_accept_transform_header(), "empty-image");
770 lofi_decider->MaybeSetIgnorePreviewsBlacklistDirective(&headers); 769 lofi_decider->MaybeSetForceLitePageDirective(&headers);
771 EXPECT_FALSE(headers.HasHeader(chrome_proxy_header())); 770 EXPECT_FALSE(headers.HasHeader(chrome_proxy_header()));
772 771
773 headers.SetHeader(chrome_proxy_accept_transform_header(), "lite-page"); 772 headers.SetHeader(chrome_proxy_accept_transform_header(), "lite-page");
774 lofi_decider->MaybeSetIgnorePreviewsBlacklistDirective(&headers); 773 lofi_decider->MaybeSetForceLitePageDirective(&headers);
775 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header())); 774 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header()));
776 headers.GetHeader(chrome_proxy_header(), &header_value); 775 headers.GetHeader(chrome_proxy_header(), &header_value);
777 EXPECT_EQ("exp=ignore_preview_blacklist", header_value); 776 EXPECT_EQ("exp=force_lite_page", header_value);
778 777
779 headers.SetHeader(chrome_proxy_header(), "Foo"); 778 headers.SetHeader(chrome_proxy_header(), "Foo");
780 lofi_decider->MaybeSetIgnorePreviewsBlacklistDirective(&headers); 779 lofi_decider->MaybeSetForceLitePageDirective(&headers);
781 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header())); 780 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header()));
782 headers.GetHeader(chrome_proxy_header(), &header_value); 781 headers.GetHeader(chrome_proxy_header(), &header_value);
783 EXPECT_EQ("Foo, exp=ignore_preview_blacklist", header_value); 782 EXPECT_EQ("Foo, exp=force_lite_page", header_value);
784 } 783 }
785 784
786 TEST_F(ContentLoFiDeciderTest, NoTransformDoesNotAddHeader) { 785 TEST_F(ContentLoFiDeciderTest, NoTransformDoesNotAddHeader) {
787 base::FieldTrialList field_trial_list(nullptr); 786 base::FieldTrialList field_trial_list(nullptr);
788 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), 787 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(),
789 "Enabled"); 788 "Enabled");
790 std::unique_ptr<net::URLRequest> request = 789 std::unique_ptr<net::URLRequest> request =
791 CreateRequest(false, content::PREVIEWS_NO_TRANSFORM); 790 CreateRequest(false, content::PREVIEWS_NO_TRANSFORM);
792 net::HttpRequestHeaders headers; 791 net::HttpRequestHeaders headers;
793 NotifyBeforeSendHeaders(&headers, request.get(), true); 792 NotifyBeforeSendHeaders(&headers, request.get(), true);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 content::CLIENT_LOFI_AUTO_RELOAD))); 839 content::CLIENT_LOFI_AUTO_RELOAD)));
841 840
842 // IsClientLoFiAutoReloadRequest() should return false for any request without 841 // IsClientLoFiAutoReloadRequest() should return false for any request without
843 // the CLIENT_LOFI_AUTO_RELOAD bit set. 842 // the CLIENT_LOFI_AUTO_RELOAD bit set.
844 EXPECT_FALSE(ContentLoFiDecider().IsClientLoFiAutoReloadRequest( 843 EXPECT_FALSE(ContentLoFiDecider().IsClientLoFiAutoReloadRequest(
845 *CreateRequestByType(content::RESOURCE_TYPE_IMAGE, false, 844 *CreateRequestByType(content::RESOURCE_TYPE_IMAGE, false,
846 content::PREVIEWS_NO_TRANSFORM))); 845 content::PREVIEWS_NO_TRANSFORM)));
847 } 846 }
848 847
849 } // namespace data_reduction_proxy 848 } // namespace data_reduction_proxy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698