| 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 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 200 VerifyLoFiHeader(false, headers); | 200 VerifyLoFiHeader(false, headers); |
| 201 VerifyLoFiPreviewHeader(false, headers); | 201 VerifyLoFiPreviewHeader(false, headers); |
| 202 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); | 202 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); |
| 203 | 203 |
| 204 // The Lo-Fi flag is "always-on", Lo-Fi is being used, and it's a main frame | 204 // 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. | 205 // request. Lo-Fi preview header should be added. |
| 206 command_line->AppendSwitchASCII( | 206 command_line->AppendSwitchASCII( |
| 207 switches::kDataReductionProxyLoFi, | 207 switches::kDataReductionProxyLoFi, |
| 208 switches::kDataReductionProxyLoFiValueAlwaysOn); | 208 switches::kDataReductionProxyLoFiValueAlwaysOn); |
| 209 if (tests[i].is_main_frame) | 209 if (tests[i].is_main_frame) |
| 210 request->SetLoadFlags(request->load_flags() | net::LOAD_MAIN_FRAME); | 210 request->SetLoadFlags(request->load_flags() | |
| 211 net::LOAD_MAIN_FRAME_DEPRECATED); |
| 211 headers.Clear(); | 212 headers.Clear(); |
| 212 NotifyBeforeSendHeaders(&headers, request.get(), true); | 213 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 213 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_previews && | 214 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_previews && |
| 214 !tests[i].is_main_frame, | 215 !tests[i].is_main_frame, |
| 215 headers); | 216 headers); |
| 216 VerifyLoFiPreviewHeader(tests[i].is_using_lofi && | 217 VerifyLoFiPreviewHeader(tests[i].is_using_lofi && |
| 217 tests[i].is_using_previews && | 218 tests[i].is_using_previews && |
| 218 tests[i].is_main_frame, | 219 tests[i].is_main_frame, |
| 219 headers); | 220 headers); |
| 220 VerifyLoFiIgnorePreviewBlacklistHeader(tests[i].is_using_lofi && | 221 VerifyLoFiIgnorePreviewBlacklistHeader(tests[i].is_using_lofi && |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 // Enable Lo-Fi. | 278 // Enable Lo-Fi. |
| 278 const struct { | 279 const struct { |
| 279 bool is_using_lofi; | 280 bool is_using_lofi; |
| 280 bool is_main_frame; | 281 bool is_main_frame; |
| 281 } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}}; | 282 } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}}; |
| 282 | 283 |
| 283 for (size_t i = 0; i < arraysize(tests); ++i) { | 284 for (size_t i = 0; i < arraysize(tests); ++i) { |
| 284 std::unique_ptr<net::URLRequest> request = | 285 std::unique_ptr<net::URLRequest> request = |
| 285 CreateRequest(tests[i].is_using_lofi); | 286 CreateRequest(tests[i].is_using_lofi); |
| 286 if (tests[i].is_main_frame) | 287 if (tests[i].is_main_frame) |
| 287 request->SetLoadFlags(request->load_flags() | net::LOAD_MAIN_FRAME); | 288 request->SetLoadFlags(request->load_flags() | |
| 289 net::LOAD_MAIN_FRAME_DEPRECATED); |
| 288 net::HttpRequestHeaders headers; | 290 net::HttpRequestHeaders headers; |
| 289 NotifyBeforeSendHeaders(&headers, request.get(), true); | 291 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 290 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_main_frame, | 292 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_main_frame, |
| 291 headers); | 293 headers); |
| 292 VerifyLoFiPreviewHeader(false, headers); | 294 VerifyLoFiPreviewHeader(false, headers); |
| 293 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); | 295 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); |
| 294 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); | 296 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); |
| 295 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; | 297 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; |
| 296 } | 298 } |
| 297 } | 299 } |
| 298 | 300 |
| 299 TEST_F(ContentLoFiDeciderTest, LoFiControlFieldTrial) { | 301 TEST_F(ContentLoFiDeciderTest, LoFiControlFieldTrial) { |
| 300 base::FieldTrialList field_trial_list(nullptr); | 302 base::FieldTrialList field_trial_list(nullptr); |
| 301 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), | 303 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), |
| 302 "Control"); | 304 "Control"); |
| 303 // Enable Lo-Fi. | 305 // Enable Lo-Fi. |
| 304 const struct { | 306 const struct { |
| 305 bool is_using_lofi; | 307 bool is_using_lofi; |
| 306 bool is_main_frame; | 308 bool is_main_frame; |
| 307 } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}}; | 309 } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}}; |
| 308 | 310 |
| 309 for (size_t i = 0; i < arraysize(tests); ++i) { | 311 for (size_t i = 0; i < arraysize(tests); ++i) { |
| 310 std::unique_ptr<net::URLRequest> request = | 312 std::unique_ptr<net::URLRequest> request = |
| 311 CreateRequest(tests[i].is_using_lofi); | 313 CreateRequest(tests[i].is_using_lofi); |
| 312 if (tests[i].is_main_frame) | 314 if (tests[i].is_main_frame) |
| 313 request->SetLoadFlags(request->load_flags() | net::LOAD_MAIN_FRAME); | 315 request->SetLoadFlags(request->load_flags() | |
| 316 net::LOAD_MAIN_FRAME_DEPRECATED); |
| 314 net::HttpRequestHeaders headers; | 317 net::HttpRequestHeaders headers; |
| 315 NotifyBeforeSendHeaders(&headers, request.get(), true); | 318 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 316 VerifyLoFiHeader(false, headers); | 319 VerifyLoFiHeader(false, headers); |
| 317 VerifyLoFiPreviewHeader(false, headers); | 320 VerifyLoFiPreviewHeader(false, headers); |
| 318 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); | 321 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); |
| 319 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); | 322 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); |
| 320 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; | 323 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; |
| 321 } | 324 } |
| 322 } | 325 } |
| 323 | 326 |
| 324 TEST_F(ContentLoFiDeciderTest, LoFiPreviewFieldTrial) { | 327 TEST_F(ContentLoFiDeciderTest, LoFiPreviewFieldTrial) { |
| 325 base::FieldTrialList field_trial_list(nullptr); | 328 base::FieldTrialList field_trial_list(nullptr); |
| 326 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), | 329 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), |
| 327 "Enabled_Preview"); | 330 "Enabled_Preview"); |
| 328 // Enable Lo-Fi. | 331 // Enable Lo-Fi. |
| 329 const struct { | 332 const struct { |
| 330 bool is_using_lofi; | 333 bool is_using_lofi; |
| 331 bool is_main_frame; | 334 bool is_main_frame; |
| 332 } tests[] = { | 335 } tests[] = { |
| 333 {false, false}, {true, false}, {false, true}, {true, true}, | 336 {false, false}, {true, false}, {false, true}, {true, true}, |
| 334 }; | 337 }; |
| 335 | 338 |
| 336 for (size_t i = 0; i < arraysize(tests); ++i) { | 339 for (size_t i = 0; i < arraysize(tests); ++i) { |
| 337 std::unique_ptr<net::URLRequest> request = | 340 std::unique_ptr<net::URLRequest> request = |
| 338 CreateRequest(tests[i].is_using_lofi); | 341 CreateRequest(tests[i].is_using_lofi); |
| 339 if (tests[i].is_main_frame) | 342 if (tests[i].is_main_frame) |
| 340 request->SetLoadFlags(request->load_flags() | net::LOAD_MAIN_FRAME); | 343 request->SetLoadFlags(request->load_flags() | |
| 344 net::LOAD_MAIN_FRAME_DEPRECATED); |
| 341 net::HttpRequestHeaders headers; | 345 net::HttpRequestHeaders headers; |
| 342 NotifyBeforeSendHeaders(&headers, request.get(), true); | 346 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 343 VerifyLoFiHeader(false, headers); | 347 VerifyLoFiHeader(false, headers); |
| 344 VerifyLoFiPreviewHeader(tests[i].is_using_lofi && tests[i].is_main_frame, | 348 VerifyLoFiPreviewHeader(tests[i].is_using_lofi && tests[i].is_main_frame, |
| 345 headers); | 349 headers); |
| 346 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); | 350 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); |
| 347 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); | 351 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); |
| 348 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; | 352 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; |
| 349 } | 353 } |
| 350 } | 354 } |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), | 388 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), |
| 385 "Control"); | 389 "Control"); |
| 386 } | 390 } |
| 387 | 391 |
| 388 test_context_->config()->SetNetworkProhibitivelySlow( | 392 test_context_->config()->SetNetworkProhibitivelySlow( |
| 389 tests[i].network_prohibitively_slow); | 393 tests[i].network_prohibitively_slow); |
| 390 | 394 |
| 391 std::unique_ptr<net::URLRequest> request = | 395 std::unique_ptr<net::URLRequest> request = |
| 392 CreateRequest(tests[i].network_prohibitively_slow); | 396 CreateRequest(tests[i].network_prohibitively_slow); |
| 393 if (tests[i].is_main_frame) | 397 if (tests[i].is_main_frame) |
| 394 request->SetLoadFlags(request->load_flags() | net::LOAD_MAIN_FRAME); | 398 request->SetLoadFlags(request->load_flags() | |
| 399 net::LOAD_MAIN_FRAME_DEPRECATED); |
| 395 net::HttpRequestHeaders headers; | 400 net::HttpRequestHeaders headers; |
| 396 NotifyBeforeSendHeaders(&headers, request.get(), true); | 401 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 397 | 402 |
| 398 VerifyLoFiHeader(expect_lofi_header, headers); | 403 VerifyLoFiHeader(expect_lofi_header, headers); |
| 399 } | 404 } |
| 400 } | 405 } |
| 401 | 406 |
| 402 TEST_F(ContentLoFiDeciderTest, SlowConnectionsFlag) { | 407 TEST_F(ContentLoFiDeciderTest, SlowConnectionsFlag) { |
| 403 const struct { | 408 const struct { |
| 404 bool slow_connections_flag_enabled; | 409 bool slow_connections_flag_enabled; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 439 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), | 444 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), |
| 440 "Enabled"); | 445 "Enabled"); |
| 441 } | 446 } |
| 442 | 447 |
| 443 test_context_->config()->SetNetworkProhibitivelySlow( | 448 test_context_->config()->SetNetworkProhibitivelySlow( |
| 444 tests[i].network_prohibitively_slow); | 449 tests[i].network_prohibitively_slow); |
| 445 | 450 |
| 446 std::unique_ptr<net::URLRequest> request = | 451 std::unique_ptr<net::URLRequest> request = |
| 447 CreateRequest(tests[i].network_prohibitively_slow); | 452 CreateRequest(tests[i].network_prohibitively_slow); |
| 448 if (tests[i].is_main_frame) | 453 if (tests[i].is_main_frame) |
| 449 request->SetLoadFlags(request->load_flags() | net::LOAD_MAIN_FRAME); | 454 request->SetLoadFlags(request->load_flags() | |
| 455 net::LOAD_MAIN_FRAME_DEPRECATED); |
| 450 net::HttpRequestHeaders headers; | 456 net::HttpRequestHeaders headers; |
| 451 NotifyBeforeSendHeaders(&headers, request.get(), true); | 457 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 452 | 458 |
| 453 VerifyLoFiHeader(expect_lofi_header, headers); | 459 VerifyLoFiHeader(expect_lofi_header, headers); |
| 454 } | 460 } |
| 455 } | 461 } |
| 456 | 462 |
| 457 TEST_F(ContentLoFiDeciderTest, ProxyIsNotDataReductionProxy) { | 463 TEST_F(ContentLoFiDeciderTest, ProxyIsNotDataReductionProxy) { |
| 458 base::FieldTrialList field_trial_list(nullptr); | 464 base::FieldTrialList field_trial_list(nullptr); |
| 459 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), | 465 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), |
| (...skipping 11 matching lines...) Expand all Loading... |
| 471 net::HttpRequestHeaders headers; | 477 net::HttpRequestHeaders headers; |
| 472 NotifyBeforeSendHeaders(&headers, request.get(), false); | 478 NotifyBeforeSendHeaders(&headers, request.get(), false); |
| 473 std::string header_value; | 479 std::string header_value; |
| 474 headers.GetHeader(chrome_proxy_header(), &header_value); | 480 headers.GetHeader(chrome_proxy_header(), &header_value); |
| 475 EXPECT_EQ(std::string::npos, | 481 EXPECT_EQ(std::string::npos, |
| 476 header_value.find(chrome_proxy_lo_fi_directive())); | 482 header_value.find(chrome_proxy_lo_fi_directive())); |
| 477 } | 483 } |
| 478 } | 484 } |
| 479 | 485 |
| 480 } // namespace data_reduction_roxy | 486 } // namespace data_reduction_roxy |
| OLD | NEW |