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 |