| OLD | NEW |
| 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> |
| 11 | 11 |
| 12 #include "base/command_line.h" | 12 #include "base/command_line.h" |
| 13 #include "base/macros.h" | 13 #include "base/macros.h" |
| 14 #include "base/message_loop/message_loop.h" | 14 #include "base/message_loop/message_loop.h" |
| 15 #include "base/metrics/field_trial.h" | 15 #include "base/metrics/field_trial.h" |
| 16 #include "base/strings/string_util.h" | 16 #include "base/strings/string_util.h" |
| 17 #include "base/strings/stringprintf.h" | 17 #include "base/strings/stringprintf.h" |
| 18 #include "base/test/scoped_feature_list.h" |
| 18 #include "build/build_config.h" | 19 #include "build/build_config.h" |
| 19 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_conf
ig_test_utils.h" | 20 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_conf
ig_test_utils.h" |
| 20 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_data
.h" | 21 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_data
.h" |
| 21 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_netw
ork_delegate.h" | 22 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_netw
ork_delegate.h" |
| 22 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_requ
est_options.h" | 23 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_requ
est_options.h" |
| 23 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_test
_utils.h" | 24 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_test
_utils.h" |
| 25 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_featu
res.h" |
| 24 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_heade
rs.h" | 26 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_heade
rs.h" |
| 25 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_param
s.h" | 27 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_param
s.h" |
| 26 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_param
s_test_utils.h" | 28 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_param
s_test_utils.h" |
| 27 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_switc
hes.h" | 29 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_switc
hes.h" |
| 28 #include "content/public/browser/resource_request_info.h" | 30 #include "content/public/browser/resource_request_info.h" |
| 29 #include "content/public/common/previews_state.h" | 31 #include "content/public/common/previews_state.h" |
| 30 #include "net/base/load_flags.h" | 32 #include "net/base/load_flags.h" |
| 31 #include "net/base/network_delegate_impl.h" | 33 #include "net/base/network_delegate_impl.h" |
| 32 #include "net/http/http_request_headers.h" | 34 #include "net/http/http_request_headers.h" |
| 33 #include "net/proxy/proxy_info.h" | 35 #include "net/proxy/proxy_info.h" |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 if (expected_if_heavy) { | 187 if (expected_if_heavy) { |
| 186 std::string lite_page_if_heavy = base::StringPrintf( | 188 std::string lite_page_if_heavy = base::StringPrintf( |
| 187 "%s;%s", lite_page_directive(), if_heavy_qualifier()); | 189 "%s;%s", lite_page_directive(), if_heavy_qualifier()); |
| 188 EXPECT_EQ(expected_lofi_preview_used, lite_page_if_heavy == header_value); | 190 EXPECT_EQ(expected_lofi_preview_used, lite_page_if_heavy == header_value); |
| 189 } else { | 191 } else { |
| 190 EXPECT_EQ(expected_lofi_preview_used, | 192 EXPECT_EQ(expected_lofi_preview_used, |
| 191 header_value == lite_page_directive()); | 193 header_value == lite_page_directive()); |
| 192 } | 194 } |
| 193 } | 195 } |
| 194 | 196 |
| 197 static void VerifyAcceptTransformHeader(const net::URLRequest& request, |
| 198 bool expected_accept_lite_page, |
| 199 bool expected_accept_empty_image) { |
| 200 std::unique_ptr<data_reduction_proxy::ContentLoFiDecider> lofi_decider( |
| 201 new data_reduction_proxy::ContentLoFiDecider()); |
| 202 net::HttpRequestHeaders headers; |
| 203 lofi_decider->MaybeSetAcceptTransformHeader(request, false, &headers); |
| 204 |
| 205 std::string header_value; |
| 206 EXPECT_EQ(expected_accept_lite_page || expected_accept_empty_image, |
| 207 headers.GetHeader(chrome_proxy_accept_transform_header(), |
| 208 &header_value)); |
| 209 if (expected_accept_lite_page) { |
| 210 EXPECT_TRUE(header_value == lite_page_directive()); |
| 211 } else if (expected_accept_empty_image) { |
| 212 EXPECT_TRUE(header_value == empty_image_directive()); |
| 213 } |
| 214 } |
| 215 |
| 195 static void VerifyVideoHeader(bool expected_compressed_video_used, | 216 static void VerifyVideoHeader(bool expected_compressed_video_used, |
| 196 const net::HttpRequestHeaders& headers) { | 217 const net::HttpRequestHeaders& headers) { |
| 197 EXPECT_EQ(expected_compressed_video_used, | 218 EXPECT_EQ(expected_compressed_video_used, |
| 198 headers.HasHeader(chrome_proxy_accept_transform_header())); | 219 headers.HasHeader(chrome_proxy_accept_transform_header())); |
| 199 std::string header_value; | 220 std::string header_value; |
| 200 headers.GetHeader(chrome_proxy_accept_transform_header(), &header_value); | 221 headers.GetHeader(chrome_proxy_accept_transform_header(), &header_value); |
| 201 EXPECT_EQ( | 222 EXPECT_EQ( |
| 202 expected_compressed_video_used, | 223 expected_compressed_video_used, |
| 203 header_value.find(compressed_video_directive()) != std::string::npos); | 224 header_value.find(compressed_video_directive()) != std::string::npos); |
| 204 } | 225 } |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 VerifyLoFiHeader(!tests[i].is_using_lite_page, !tests[i].is_using_lofi, | 320 VerifyLoFiHeader(!tests[i].is_using_lite_page, !tests[i].is_using_lofi, |
| 300 headers); | 321 headers); |
| 301 VerifyLitePageHeader(false, false, headers); | 322 VerifyLitePageHeader(false, false, headers); |
| 302 data = DataReductionProxyData::GetData(*request); | 323 data = DataReductionProxyData::GetData(*request); |
| 303 // |lofi_requested| should be set to false when Lo-Fi is enabled using | 324 // |lofi_requested| should be set to false when Lo-Fi is enabled using |
| 304 // flags. | 325 // flags. |
| 305 EXPECT_FALSE(data->lofi_requested()); | 326 EXPECT_FALSE(data->lofi_requested()); |
| 306 } | 327 } |
| 307 } | 328 } |
| 308 | 329 |
| 330 TEST_F(ContentLoFiDeciderTest, MaybeSetAcceptTransformNoAcceptForPreviewsOff) { |
| 331 // Turn on proxy-decides-transform feature for these unit tests. |
| 332 base::test::ScopedFeatureList scoped_feature_list; |
| 333 scoped_feature_list.InitAndEnableFeature( |
| 334 features::kDataReductionProxyDecidesTransform); |
| 335 |
| 336 std::unique_ptr<net::URLRequest> request = |
| 337 CreateRequest(true /* is main */, content::PREVIEWS_OFF); |
| 338 VerifyAcceptTransformHeader(*request.get(), false /* lite-page */, |
| 339 false /* empty-image */); |
| 340 |
| 341 request = CreateRequest(true /* is main */, content::PREVIEWS_NO_TRANSFORM); |
| 342 VerifyAcceptTransformHeader(*request.get(), false /* lite-page */, |
| 343 false /* empty-image */); |
| 344 |
| 345 request = CreateRequest(true /* is main */, content::PREVIEWS_UNSPECIFIED); |
| 346 VerifyAcceptTransformHeader(*request.get(), false /* lite-page */, |
| 347 false /* empty-image */); |
| 348 } |
| 349 |
| 350 TEST_F(ContentLoFiDeciderTest, MaybeSetAcceptTransformNoAcceptForHttps) { |
| 351 // Turn on proxy-decides-transform feature for these unit tests. |
| 352 base::test::ScopedFeatureList scoped_feature_list; |
| 353 scoped_feature_list.InitAndEnableFeature( |
| 354 features::kDataReductionProxyDecidesTransform); |
| 355 |
| 356 content::PreviewsState both_previews_enabled = |
| 357 content::SERVER_LITE_PAGE_ON | content::SERVER_LOFI_ON; |
| 358 |
| 359 // Verify no accept header for HTTPS. |
| 360 std::unique_ptr<net::URLRequest> request = |
| 361 CreateRequestByType(content::RESOURCE_TYPE_MAIN_FRAME, true /* https */, |
| 362 both_previews_enabled); |
| 363 VerifyAcceptTransformHeader(*request.get(), false /* lite-page */, |
| 364 false /* empty-image */); |
| 365 |
| 366 request = CreateRequestByType(content::RESOURCE_TYPE_IMAGE, true /* https */, |
| 367 both_previews_enabled); |
| 368 VerifyAcceptTransformHeader(*request.get(), false /* lite-page */, |
| 369 false /* empty-image */); |
| 370 } |
| 371 |
| 372 TEST_F(ContentLoFiDeciderTest, MaybeSetAcceptTransformHeaderAcceptLitePage) { |
| 373 // Turn on proxy-decides-transform feature for these unit tests. |
| 374 base::test::ScopedFeatureList scoped_feature_list; |
| 375 scoped_feature_list.InitAndEnableFeature( |
| 376 features::kDataReductionProxyDecidesTransform); |
| 377 |
| 378 content::PreviewsState lite_page_enabled = content::SERVER_LITE_PAGE_ON; |
| 379 |
| 380 // Verify accepting lite-page per resource type. |
| 381 std::unique_ptr<net::URLRequest> request = |
| 382 CreateRequest(true /* is main */, lite_page_enabled); |
| 383 VerifyAcceptTransformHeader(*request.get(), true /* lite-page */, |
| 384 false /* empty-image */); |
| 385 |
| 386 request = CreateRequest(false /* is main */, lite_page_enabled); |
| 387 VerifyAcceptTransformHeader(*request.get(), false /* lite-page */, |
| 388 false /* empty-image */); |
| 389 } |
| 390 |
| 391 TEST_F(ContentLoFiDeciderTest, MaybeSetAcceptTransformHeaderAcceptEmptyImage) { |
| 392 // Turn on proxy-decides-transform feature for these unit tests. |
| 393 base::test::ScopedFeatureList scoped_feature_list; |
| 394 scoped_feature_list.InitAndEnableFeature( |
| 395 features::kDataReductionProxyDecidesTransform); |
| 396 |
| 397 content::PreviewsState lofi_enabled = content::SERVER_LOFI_ON; |
| 398 |
| 399 // Verify accepting empty-image per resource type. |
| 400 std::unique_ptr<net::URLRequest> request = CreateRequestByType( |
| 401 content::RESOURCE_TYPE_MAIN_FRAME, false /* https */, lofi_enabled); |
| 402 VerifyAcceptTransformHeader(*request.get(), false /* lite-page */, |
| 403 false /* empty-image */); |
| 404 |
| 405 request = CreateRequestByType(content::RESOURCE_TYPE_IMAGE, false /* https */, |
| 406 lofi_enabled); |
| 407 VerifyAcceptTransformHeader(*request.get(), false /* lite-page */, |
| 408 true /* empty-image */); |
| 409 |
| 410 request = CreateRequestByType(content::RESOURCE_TYPE_FAVICON, |
| 411 false /* https */, lofi_enabled); |
| 412 VerifyAcceptTransformHeader(*request.get(), false /* lite-page */, |
| 413 true /* empty-image */); |
| 414 |
| 415 request = CreateRequestByType(content::RESOURCE_TYPE_SCRIPT, |
| 416 false /* https */, lofi_enabled); |
| 417 VerifyAcceptTransformHeader(*request.get(), false /* lite-page */, |
| 418 false /* empty-image */); |
| 419 |
| 420 request = CreateRequestByType(content::RESOURCE_TYPE_STYLESHEET, |
| 421 false /* https */, lofi_enabled); |
| 422 VerifyAcceptTransformHeader(*request.get(), false /* lite-page */, |
| 423 false /* empty-image */); |
| 424 } |
| 425 |
| 309 TEST_F(ContentLoFiDeciderTest, LoFiEnabledFieldTrial) { | 426 TEST_F(ContentLoFiDeciderTest, LoFiEnabledFieldTrial) { |
| 310 base::FieldTrialList field_trial_list(nullptr); | 427 base::FieldTrialList field_trial_list(nullptr); |
| 311 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), | 428 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), |
| 312 "Enabled"); | 429 "Enabled"); |
| 313 | 430 |
| 314 // Enable Lo-Fi. | 431 // Enable Lo-Fi. |
| 315 const struct { | 432 const struct { |
| 316 bool is_using_lofi; | 433 bool is_using_lofi; |
| 317 content::ResourceType resource_type; | 434 content::ResourceType resource_type; |
| 318 } tests[] = {{false, content::RESOURCE_TYPE_MAIN_FRAME}, | 435 } tests[] = {{false, content::RESOURCE_TYPE_MAIN_FRAME}, |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 net::HttpRequestHeaders headers; | 509 net::HttpRequestHeaders headers; |
| 393 NotifyBeforeSendHeaders(&headers, request.get(), true); | 510 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 394 VerifyLoFiHeader(false, false, headers); | 511 VerifyLoFiHeader(false, false, headers); |
| 395 VerifyLitePageHeader(false, false, headers); | 512 VerifyLitePageHeader(false, false, headers); |
| 396 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); | 513 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); |
| 397 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; | 514 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; |
| 398 } | 515 } |
| 399 } | 516 } |
| 400 | 517 |
| 401 TEST_F(ContentLoFiDeciderTest, LitePageFieldTrial) { | 518 TEST_F(ContentLoFiDeciderTest, LitePageFieldTrial) { |
| 519 // Turn off proxy-decides-transform feature for these unit tests. |
| 520 base::test::ScopedFeatureList scoped_feature_list; |
| 521 scoped_feature_list.InitAndDisableFeature( |
| 522 features::kDataReductionProxyDecidesTransform); |
| 523 |
| 402 base::FieldTrialList field_trial_list(nullptr); | 524 base::FieldTrialList field_trial_list(nullptr); |
| 403 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), | 525 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), |
| 404 "Enabled_Preview"); | 526 "Enabled_Preview"); |
| 405 // Enable Lo-Fi. | 527 // Enable Lo-Fi. |
| 406 const struct { | 528 const struct { |
| 407 bool is_using_lite_page; | 529 bool is_using_lite_page; |
| 408 bool is_main_frame; | 530 bool is_main_frame; |
| 409 } tests[] = { | 531 } tests[] = { |
| 410 {false, false}, {true, false}, {false, true}, {true, true}, | 532 {false, false}, {true, false}, {false, true}, {true, true}, |
| 411 }; | 533 }; |
| 412 | 534 |
| 413 for (size_t i = 0; i < arraysize(tests); ++i) { | 535 for (size_t i = 0; i < arraysize(tests); ++i) { |
| 414 std::unique_ptr<net::URLRequest> request = | 536 std::unique_ptr<net::URLRequest> request = |
| 415 CreateRequest(tests[i].is_main_frame, tests[i].is_using_lite_page | 537 CreateRequest(tests[i].is_main_frame, tests[i].is_using_lite_page |
| 416 ? content::SERVER_LITE_PAGE_ON | 538 ? content::SERVER_LITE_PAGE_ON |
| 417 : content::PREVIEWS_OFF); | 539 : content::PREVIEWS_OFF); |
| 418 net::HttpRequestHeaders headers; | 540 net::HttpRequestHeaders headers; |
| 419 NotifyBeforeSendHeaders(&headers, request.get(), true); | 541 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 420 VerifyLoFiHeader(false, false, headers); | 542 VerifyLoFiHeader(false, false, headers); |
| 421 VerifyLitePageHeader(tests[i].is_main_frame, !tests[i].is_using_lite_page, | 543 VerifyLitePageHeader(tests[i].is_main_frame, !tests[i].is_using_lite_page, |
| 422 headers); | 544 headers); |
| 423 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); | 545 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); |
| 424 EXPECT_EQ(tests[i].is_using_lite_page, data->lofi_requested()) << i; | 546 EXPECT_EQ(tests[i].is_using_lite_page, data->lofi_requested()) << i; |
| 425 } | 547 } |
| 426 } | 548 } |
| 427 | 549 |
| 428 TEST_F(ContentLoFiDeciderTest, LitePageFieldTrialFallbackDisabled) { | 550 TEST_F(ContentLoFiDeciderTest, LitePageFieldTrialFallbackDisabled) { |
| 551 // Turn off proxy-decides-transform feature for these unit tests. |
| 552 base::test::ScopedFeatureList scoped_feature_list; |
| 553 scoped_feature_list.InitAndDisableFeature( |
| 554 features::kDataReductionProxyDecidesTransform); |
| 555 |
| 429 base::FieldTrialList field_trial_list(nullptr); | 556 base::FieldTrialList field_trial_list(nullptr); |
| 430 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), | 557 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), |
| 431 "Enabled_Preview"); | 558 "Enabled_Preview"); |
| 432 // Enable Lo-Fi. | 559 // Enable Lo-Fi. |
| 433 const struct { | 560 const struct { |
| 434 bool is_using_lofi; | 561 bool is_using_lofi; |
| 435 bool is_using_lite_page; | 562 bool is_using_lite_page; |
| 436 bool is_main_frame; | 563 bool is_main_frame; |
| 437 } tests[] = { | 564 } tests[] = { |
| 438 {false, false, false}, {false, false, true}, {true, false, true}, | 565 {false, false, false}, {false, false, true}, {true, false, true}, |
| (...skipping 19 matching lines...) Expand all Loading... |
| 458 tests[i].is_main_frame && !tests[i].is_using_lite_page, | 585 tests[i].is_main_frame && !tests[i].is_using_lite_page, |
| 459 headers); | 586 headers); |
| 460 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); | 587 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); |
| 461 EXPECT_EQ(tests[i].is_using_lofi || tests[i].is_using_lite_page, | 588 EXPECT_EQ(tests[i].is_using_lofi || tests[i].is_using_lite_page, |
| 462 data->lofi_requested()) | 589 data->lofi_requested()) |
| 463 << i; | 590 << i; |
| 464 } | 591 } |
| 465 } | 592 } |
| 466 | 593 |
| 467 TEST_F(ContentLoFiDeciderTest, AutoLoFi) { | 594 TEST_F(ContentLoFiDeciderTest, AutoLoFi) { |
| 595 // Turn off proxy-decides-transform feature for these unit tests. |
| 596 base::test::ScopedFeatureList scoped_feature_list; |
| 597 scoped_feature_list.InitAndDisableFeature( |
| 598 features::kDataReductionProxyDecidesTransform); |
| 599 |
| 468 const struct { | 600 const struct { |
| 469 bool auto_lofi_enabled_group; | 601 bool auto_lofi_enabled_group; |
| 470 bool auto_lofi_control_group; | 602 bool auto_lofi_control_group; |
| 471 bool network_prohibitively_slow; | 603 bool network_prohibitively_slow; |
| 472 bool is_main_frame; | 604 bool is_main_frame; |
| 473 } tests[] = { | 605 } tests[] = { |
| 474 {false, false, false, false}, | 606 {false, false, false, false}, |
| 475 {false, false, true, false}, | 607 {false, false, true, false}, |
| 476 {true, false, false, false}, | 608 {true, false, false, false}, |
| 477 {true, false, true, false}, | 609 {true, false, true, false}, |
| (...skipping 28 matching lines...) Expand all Loading... |
| 506 tests[i].is_main_frame, tests[i].network_prohibitively_slow); | 638 tests[i].is_main_frame, tests[i].network_prohibitively_slow); |
| 507 net::HttpRequestHeaders headers; | 639 net::HttpRequestHeaders headers; |
| 508 NotifyBeforeSendHeaders(&headers, request.get(), true); | 640 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 509 | 641 |
| 510 VerifyLoFiHeader(expect_lofi_header, !tests[i].network_prohibitively_slow, | 642 VerifyLoFiHeader(expect_lofi_header, !tests[i].network_prohibitively_slow, |
| 511 headers); | 643 headers); |
| 512 } | 644 } |
| 513 } | 645 } |
| 514 | 646 |
| 515 TEST_F(ContentLoFiDeciderTest, SlowConnectionsFlag) { | 647 TEST_F(ContentLoFiDeciderTest, SlowConnectionsFlag) { |
| 648 // Turn off proxy-decides-transform feature for these unit tests. |
| 649 base::test::ScopedFeatureList scoped_feature_list; |
| 650 scoped_feature_list.InitAndDisableFeature( |
| 651 features::kDataReductionProxyDecidesTransform); |
| 652 |
| 516 const struct { | 653 const struct { |
| 517 bool slow_connections_flag_enabled; | 654 bool slow_connections_flag_enabled; |
| 518 bool network_prohibitively_slow; | 655 bool network_prohibitively_slow; |
| 519 bool auto_lofi_enabled_group; | 656 bool auto_lofi_enabled_group; |
| 520 bool is_main_frame; | 657 bool is_main_frame; |
| 521 } tests[] = { | 658 } tests[] = { |
| 522 {false, false, false, false}, {false, true, false, false}, | 659 {false, false, false, false}, {false, true, false, false}, |
| 523 {true, false, false, false}, {true, true, false, false}, | 660 {true, false, false, false}, {true, true, false, false}, |
| 524 {true, true, false, true}, {false, false, true, false}, | 661 {true, true, false, true}, {false, false, true, false}, |
| 525 {false, false, true, true}, {false, true, true, false}, | 662 {false, false, true, true}, {false, true, true, false}, |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 733 content::CLIENT_LOFI_AUTO_RELOAD))); | 870 content::CLIENT_LOFI_AUTO_RELOAD))); |
| 734 | 871 |
| 735 // IsClientLoFiAutoReloadRequest() should return false for any request without | 872 // IsClientLoFiAutoReloadRequest() should return false for any request without |
| 736 // the CLIENT_LOFI_AUTO_RELOAD bit set. | 873 // the CLIENT_LOFI_AUTO_RELOAD bit set. |
| 737 EXPECT_FALSE(ContentLoFiDecider().IsClientLoFiAutoReloadRequest( | 874 EXPECT_FALSE(ContentLoFiDecider().IsClientLoFiAutoReloadRequest( |
| 738 *CreateRequestByType(content::RESOURCE_TYPE_IMAGE, false, | 875 *CreateRequestByType(content::RESOURCE_TYPE_IMAGE, false, |
| 739 content::PREVIEWS_NO_TRANSFORM))); | 876 content::PREVIEWS_NO_TRANSFORM))); |
| 740 } | 877 } |
| 741 | 878 |
| 742 } // namespace data_reduction_proxy | 879 } // namespace data_reduction_proxy |
| OLD | NEW |