| 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> |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |