| 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 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 static void VerifyLoFiHeader(bool expected_lofi_used, | 133 static void VerifyLoFiHeader(bool expected_lofi_used, |
| 134 const net::HttpRequestHeaders& headers) { | 134 const net::HttpRequestHeaders& headers) { |
| 135 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header())); | 135 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header())); |
| 136 std::string header_value; | 136 std::string header_value; |
| 137 headers.GetHeader(chrome_proxy_header(), &header_value); | 137 headers.GetHeader(chrome_proxy_header(), &header_value); |
| 138 EXPECT_EQ( | 138 EXPECT_EQ( |
| 139 expected_lofi_used, | 139 expected_lofi_used, |
| 140 header_value.find(chrome_proxy_lo_fi_directive()) != std::string::npos); | 140 header_value.find(chrome_proxy_lo_fi_directive()) != std::string::npos); |
| 141 } | 141 } |
| 142 | 142 |
| 143 static void VerifyLoFiPreviewHeader(bool expected_lofi_preview_used, | 143 static void VerifyLitePageHeader(bool expected_lite_page_used, |
| 144 const net::HttpRequestHeaders& headers) { | 144 const net::HttpRequestHeaders& headers) { |
| 145 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header())); | 145 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header())); |
| 146 std::string header_value; | 146 std::string header_value; |
| 147 headers.GetHeader(chrome_proxy_header(), &header_value); | 147 headers.GetHeader(chrome_proxy_header(), &header_value); |
| 148 EXPECT_EQ(expected_lofi_preview_used, | 148 EXPECT_EQ(expected_lite_page_used, |
| 149 header_value.find(chrome_proxy_lo_fi_preview_directive()) != | 149 header_value.find(chrome_proxy_lite_page_directive()) != |
| 150 std::string::npos); | 150 std::string::npos); |
| 151 } | 151 } |
| 152 | 152 |
| 153 static void VerifyLoFiIgnorePreviewBlacklistHeader( | 153 static void VerifyLitePageIgnoreBlacklistHeader( |
| 154 bool expected_lofi_preview_used, | 154 bool expected_lite_page_used, |
| 155 const net::HttpRequestHeaders& headers) { | 155 const net::HttpRequestHeaders& headers) { |
| 156 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header())); | 156 EXPECT_TRUE(headers.HasHeader(chrome_proxy_header())); |
| 157 std::string header_value; | 157 std::string header_value; |
| 158 headers.GetHeader(chrome_proxy_header(), &header_value); | 158 headers.GetHeader(chrome_proxy_header(), &header_value); |
| 159 EXPECT_EQ(expected_lofi_preview_used, | 159 EXPECT_EQ(expected_lite_page_used, |
| 160 header_value.find( | 160 header_value.find( |
| 161 chrome_proxy_lo_fi_ignore_preview_blacklist_directive()) != | 161 chrome_proxy_lite_page_ignore_blacklist_directive()) != |
| 162 std::string::npos); | 162 std::string::npos); |
| 163 } | 163 } |
| 164 | 164 |
| 165 protected: | 165 protected: |
| 166 base::MessageLoopForIO message_loop_; | 166 base::MessageLoopForIO message_loop_; |
| 167 net::MockClientSocketFactory mock_socket_factory_; | 167 net::MockClientSocketFactory mock_socket_factory_; |
| 168 net::TestURLRequestContext context_; | 168 net::TestURLRequestContext context_; |
| 169 net::TestDelegate delegate_; | 169 net::TestDelegate delegate_; |
| 170 std::unique_ptr<DataReductionProxyTestContext> test_context_; | 170 std::unique_ptr<DataReductionProxyTestContext> test_context_; |
| 171 std::unique_ptr<DataReductionProxyNetworkDelegate> | 171 std::unique_ptr<DataReductionProxyNetworkDelegate> |
| 172 data_reduction_proxy_network_delegate_; | 172 data_reduction_proxy_network_delegate_; |
| 173 }; | 173 }; |
| 174 | 174 |
| 175 TEST_F(ContentLoFiDeciderTest, LoFiFlags) { | 175 TEST_F(ContentLoFiDeciderTest, LoFiFlags) { |
| 176 // Enable Lo-Fi. | 176 // Enable Lo-Fi. |
| 177 const struct { | 177 const struct { |
| 178 bool is_using_lofi; | 178 bool is_using_lofi; |
| 179 bool is_using_previews; | 179 bool is_using_lite_page; |
| 180 bool is_main_frame; | 180 bool is_main_frame; |
| 181 } tests[] = { | 181 } tests[] = { |
| 182 {false, false, false}, {false, false, true}, {true, false, true}, | 182 {false, false, false}, {false, false, true}, {true, false, true}, |
| 183 {true, false, false}, {false, true, false}, {false, true, true}, | 183 {true, false, false}, {false, true, false}, {false, true, true}, |
| 184 {true, true, true}, {true, true, false}, | 184 {true, true, true}, {true, true, false}, |
| 185 }; | 185 }; |
| 186 | 186 |
| 187 for (size_t i = 0; i < arraysize(tests); ++i) { | 187 for (size_t i = 0; i < arraysize(tests); ++i) { |
| 188 std::unique_ptr<net::URLRequest> request = | 188 std::unique_ptr<net::URLRequest> request = |
| 189 CreateRequest(tests[i].is_using_lofi); | 189 CreateRequest(tests[i].is_using_lofi); |
| 190 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 190 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
| 191 command_line->InitFromArgv(command_line->argv()); | 191 command_line->InitFromArgv(command_line->argv()); |
| 192 if (tests[i].is_using_previews) { | 192 if (tests[i].is_using_lite_page) { |
| 193 command_line->AppendSwitch( | 193 command_line->AppendSwitch(switches::kEnableDataReductionProxyLitePage); |
| 194 switches::kEnableDataReductionProxyLoFiPreview); | |
| 195 } | 194 } |
| 196 | 195 |
| 197 // No flags or field trials. The Lo-Fi header should not be added. | 196 // No flags or field trials. The Lo-Fi header should not be added. |
| 198 net::HttpRequestHeaders headers; | 197 net::HttpRequestHeaders headers; |
| 199 NotifyBeforeSendHeaders(&headers, request.get(), true); | 198 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 200 VerifyLoFiHeader(false, headers); | 199 VerifyLoFiHeader(false, headers); |
| 201 VerifyLoFiPreviewHeader(false, headers); | 200 VerifyLitePageHeader(false, headers); |
| 202 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); | 201 VerifyLitePageIgnoreBlacklistHeader(false, headers); |
| 203 | 202 |
| 204 // The Lo-Fi flag is "always-on", Lo-Fi is being used, and it's a main frame | 203 // 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. | 204 // request. Lo-Fi or lite page header should be added. |
| 206 command_line->AppendSwitchASCII( | 205 command_line->AppendSwitchASCII( |
| 207 switches::kDataReductionProxyLoFi, | 206 switches::kDataReductionProxyLoFi, |
| 208 switches::kDataReductionProxyLoFiValueAlwaysOn); | 207 switches::kDataReductionProxyLoFiValueAlwaysOn); |
| 209 if (tests[i].is_main_frame) | 208 if (tests[i].is_main_frame) |
| 210 request->SetLoadFlags(request->load_flags() | | 209 request->SetLoadFlags(request->load_flags() | |
| 211 net::LOAD_MAIN_FRAME_DEPRECATED); | 210 net::LOAD_MAIN_FRAME_DEPRECATED); |
| 212 headers.Clear(); | 211 headers.Clear(); |
| 213 NotifyBeforeSendHeaders(&headers, request.get(), true); | 212 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 214 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_previews && | 213 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_lite_page && |
| 215 !tests[i].is_main_frame, | 214 !tests[i].is_main_frame, |
| 216 headers); | 215 headers); |
| 217 VerifyLoFiPreviewHeader(tests[i].is_using_lofi && | 216 VerifyLitePageHeader(tests[i].is_using_lofi && |
| 218 tests[i].is_using_previews && | 217 tests[i].is_using_lite_page && |
| 219 tests[i].is_main_frame, | 218 tests[i].is_main_frame, |
| 220 headers); | 219 headers); |
| 221 VerifyLoFiIgnorePreviewBlacklistHeader(tests[i].is_using_lofi && | 220 VerifyLitePageIgnoreBlacklistHeader(tests[i].is_using_lofi && |
| 222 tests[i].is_using_previews && | 221 tests[i].is_using_lite_page && |
| 223 tests[i].is_main_frame, | 222 tests[i].is_main_frame, |
| 224 headers); | 223 headers); |
| 225 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); | 224 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); |
| 226 // |lofi_requested| should be set to false when Lo-Fi is enabled using | 225 // |lofi_requested| should be set to false when Lo-Fi is enabled using |
| 227 // flags. | 226 // flags. |
| 228 EXPECT_FALSE(data->lofi_requested()); | 227 EXPECT_FALSE(data->lofi_requested()); |
| 229 | 228 |
| 230 // The Lo-Fi flag is "always-on" and Lo-Fi is being used. Lo-Fi header | 229 // The Lo-Fi flag is "always-on" and Lo-Fi is being used. Lo-Fi header |
| 231 // should be added. | 230 // should be added. |
| 232 request->SetLoadFlags(0); | 231 request->SetLoadFlags(0); |
| 233 headers.Clear(); | 232 headers.Clear(); |
| 234 NotifyBeforeSendHeaders(&headers, request.get(), true); | 233 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 235 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_previews, | 234 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_lite_page, |
| 236 headers); | 235 headers); |
| 237 VerifyLoFiPreviewHeader(false, headers); | 236 VerifyLitePageHeader(false, headers); |
| 238 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); | 237 VerifyLitePageIgnoreBlacklistHeader(false, headers); |
| 239 | 238 |
| 240 // The Lo-Fi flag is "cellular-only" and Lo-Fi is being used. Lo-Fi header | 239 // The Lo-Fi flag is "cellular-only" and Lo-Fi is being used. Lo-Fi header |
| 241 // should be added. | 240 // should be added. |
| 242 command_line->AppendSwitchASCII( | 241 command_line->AppendSwitchASCII( |
| 243 switches::kDataReductionProxyLoFi, | 242 switches::kDataReductionProxyLoFi, |
| 244 switches::kDataReductionProxyLoFiValueCellularOnly); | 243 switches::kDataReductionProxyLoFiValueCellularOnly); |
| 245 headers.Clear(); | 244 headers.Clear(); |
| 246 NotifyBeforeSendHeaders(&headers, request.get(), true); | 245 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 247 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_previews, | 246 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_lite_page, |
| 248 headers); | 247 headers); |
| 249 VerifyLoFiPreviewHeader(false, headers); | 248 VerifyLitePageHeader(false, headers); |
| 250 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); | 249 VerifyLitePageIgnoreBlacklistHeader(false, headers); |
| 251 data = DataReductionProxyData::GetData(*request); | 250 data = DataReductionProxyData::GetData(*request); |
| 252 // |lofi_requested| should be set to false when Lo-Fi is enabled using | 251 // |lofi_requested| should be set to false when Lo-Fi is enabled using |
| 253 // flags. | 252 // flags. |
| 254 EXPECT_FALSE(data->lofi_requested()); | 253 EXPECT_FALSE(data->lofi_requested()); |
| 255 | 254 |
| 256 // The Lo-Fi flag is "slow-connections-only" and Lo-Fi is being used. Lo-Fi | 255 // The Lo-Fi flag is "slow-connections-only" and Lo-Fi is being used. Lo-Fi |
| 257 // header should be added. | 256 // header should be added. |
| 258 command_line->AppendSwitchASCII( | 257 command_line->AppendSwitchASCII( |
| 259 switches::kDataReductionProxyLoFi, | 258 switches::kDataReductionProxyLoFi, |
| 260 switches::kDataReductionProxyLoFiValueSlowConnectionsOnly); | 259 switches::kDataReductionProxyLoFiValueSlowConnectionsOnly); |
| 261 headers.Clear(); | 260 headers.Clear(); |
| 262 NotifyBeforeSendHeaders(&headers, request.get(), true); | 261 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 263 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_previews, | 262 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_using_lite_page, |
| 264 headers); | 263 headers); |
| 265 VerifyLoFiPreviewHeader(false, headers); | 264 VerifyLitePageHeader(false, headers); |
| 266 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); | 265 VerifyLitePageIgnoreBlacklistHeader(false, headers); |
| 267 data = DataReductionProxyData::GetData(*request); | 266 data = DataReductionProxyData::GetData(*request); |
| 268 // |lofi_requested| should be set to false when Lo-Fi is enabled using | 267 // |lofi_requested| should be set to false when Lo-Fi is enabled using |
| 269 // flags. | 268 // flags. |
| 270 EXPECT_FALSE(data->lofi_requested()); | 269 EXPECT_FALSE(data->lofi_requested()); |
| 271 } | 270 } |
| 272 } | 271 } |
| 273 | 272 |
| 274 TEST_F(ContentLoFiDeciderTest, LoFiEnabledFieldTrial) { | 273 TEST_F(ContentLoFiDeciderTest, LoFiEnabledFieldTrial) { |
| 275 base::FieldTrialList field_trial_list(nullptr); | 274 base::FieldTrialList field_trial_list(nullptr); |
| 276 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), | 275 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), |
| 277 "Enabled"); | 276 "Enabled"); |
| 278 // Enable Lo-Fi. | 277 // Enable Lo-Fi. |
| 279 const struct { | 278 const struct { |
| 280 bool is_using_lofi; | 279 bool is_using_lofi; |
| 281 bool is_main_frame; | 280 bool is_main_frame; |
| 282 } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}}; | 281 } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}}; |
| 283 | 282 |
| 284 for (size_t i = 0; i < arraysize(tests); ++i) { | 283 for (size_t i = 0; i < arraysize(tests); ++i) { |
| 285 std::unique_ptr<net::URLRequest> request = | 284 std::unique_ptr<net::URLRequest> request = |
| 286 CreateRequest(tests[i].is_using_lofi); | 285 CreateRequest(tests[i].is_using_lofi); |
| 287 if (tests[i].is_main_frame) | 286 if (tests[i].is_main_frame) |
| 288 request->SetLoadFlags(request->load_flags() | | 287 request->SetLoadFlags(request->load_flags() | |
| 289 net::LOAD_MAIN_FRAME_DEPRECATED); | 288 net::LOAD_MAIN_FRAME_DEPRECATED); |
| 290 net::HttpRequestHeaders headers; | 289 net::HttpRequestHeaders headers; |
| 291 NotifyBeforeSendHeaders(&headers, request.get(), true); | 290 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 292 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_main_frame, | 291 VerifyLoFiHeader(tests[i].is_using_lofi && !tests[i].is_main_frame, |
| 293 headers); | 292 headers); |
| 294 VerifyLoFiPreviewHeader(false, headers); | 293 VerifyLitePageHeader(false, headers); |
| 295 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); | 294 VerifyLitePageIgnoreBlacklistHeader(false, headers); |
| 296 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); | 295 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); |
| 297 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; | 296 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; |
| 298 } | 297 } |
| 299 } | 298 } |
| 300 | 299 |
| 301 TEST_F(ContentLoFiDeciderTest, LoFiControlFieldTrial) { | 300 TEST_F(ContentLoFiDeciderTest, LoFiControlFieldTrial) { |
| 302 base::FieldTrialList field_trial_list(nullptr); | 301 base::FieldTrialList field_trial_list(nullptr); |
| 303 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), | 302 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), |
| 304 "Control"); | 303 "Control"); |
| 305 // Enable Lo-Fi. | 304 // Enable Lo-Fi. |
| 306 const struct { | 305 const struct { |
| 307 bool is_using_lofi; | 306 bool is_using_lofi; |
| 308 bool is_main_frame; | 307 bool is_main_frame; |
| 309 } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}}; | 308 } tests[] = {{false, false}, {false, true}, {true, false}, {true, true}}; |
| 310 | 309 |
| 311 for (size_t i = 0; i < arraysize(tests); ++i) { | 310 for (size_t i = 0; i < arraysize(tests); ++i) { |
| 312 std::unique_ptr<net::URLRequest> request = | 311 std::unique_ptr<net::URLRequest> request = |
| 313 CreateRequest(tests[i].is_using_lofi); | 312 CreateRequest(tests[i].is_using_lofi); |
| 314 if (tests[i].is_main_frame) | 313 if (tests[i].is_main_frame) |
| 315 request->SetLoadFlags(request->load_flags() | | 314 request->SetLoadFlags(request->load_flags() | |
| 316 net::LOAD_MAIN_FRAME_DEPRECATED); | 315 net::LOAD_MAIN_FRAME_DEPRECATED); |
| 317 net::HttpRequestHeaders headers; | 316 net::HttpRequestHeaders headers; |
| 318 NotifyBeforeSendHeaders(&headers, request.get(), true); | 317 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 319 VerifyLoFiHeader(false, headers); | 318 VerifyLoFiHeader(false, headers); |
| 320 VerifyLoFiPreviewHeader(false, headers); | 319 VerifyLitePageHeader(false, headers); |
| 321 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); | 320 VerifyLitePageIgnoreBlacklistHeader(false, headers); |
| 322 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); | 321 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); |
| 323 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; | 322 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; |
| 324 } | 323 } |
| 325 } | 324 } |
| 326 | 325 |
| 327 TEST_F(ContentLoFiDeciderTest, LoFiPreviewFieldTrial) { | 326 TEST_F(ContentLoFiDeciderTest, LitePageFieldTrial) { |
| 328 base::FieldTrialList field_trial_list(nullptr); | 327 base::FieldTrialList field_trial_list(nullptr); |
| 329 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), | 328 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), |
| 330 "Enabled_Preview"); | 329 "Enabled_Preview"); |
| 331 // Enable Lo-Fi. | 330 // Enable Lo-Fi. |
| 332 const struct { | 331 const struct { |
| 333 bool is_using_lofi; | 332 bool is_using_lofi; |
| 334 bool is_main_frame; | 333 bool is_main_frame; |
| 335 } tests[] = { | 334 } tests[] = { |
| 336 {false, false}, {true, false}, {false, true}, {true, true}, | 335 {false, false}, {true, false}, {false, true}, {true, true}, |
| 337 }; | 336 }; |
| 338 | 337 |
| 339 for (size_t i = 0; i < arraysize(tests); ++i) { | 338 for (size_t i = 0; i < arraysize(tests); ++i) { |
| 340 std::unique_ptr<net::URLRequest> request = | 339 std::unique_ptr<net::URLRequest> request = |
| 341 CreateRequest(tests[i].is_using_lofi); | 340 CreateRequest(tests[i].is_using_lofi); |
| 342 if (tests[i].is_main_frame) | 341 if (tests[i].is_main_frame) |
| 343 request->SetLoadFlags(request->load_flags() | | 342 request->SetLoadFlags(request->load_flags() | |
| 344 net::LOAD_MAIN_FRAME_DEPRECATED); | 343 net::LOAD_MAIN_FRAME_DEPRECATED); |
| 345 net::HttpRequestHeaders headers; | 344 net::HttpRequestHeaders headers; |
| 346 NotifyBeforeSendHeaders(&headers, request.get(), true); | 345 NotifyBeforeSendHeaders(&headers, request.get(), true); |
| 347 VerifyLoFiHeader(false, headers); | 346 VerifyLoFiHeader(false, headers); |
| 348 VerifyLoFiPreviewHeader(tests[i].is_using_lofi && tests[i].is_main_frame, | 347 VerifyLitePageHeader(tests[i].is_using_lofi && tests[i].is_main_frame, |
| 349 headers); | 348 headers); |
| 350 VerifyLoFiIgnorePreviewBlacklistHeader(false, headers); | 349 VerifyLitePageIgnoreBlacklistHeader(false, headers); |
| 351 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); | 350 DataReductionProxyData* data = DataReductionProxyData::GetData(*request); |
| 352 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; | 351 EXPECT_EQ(tests[i].is_using_lofi, data->lofi_requested()) << i; |
| 353 } | 352 } |
| 354 } | 353 } |
| 355 | 354 |
| 356 TEST_F(ContentLoFiDeciderTest, AutoLoFi) { | 355 TEST_F(ContentLoFiDeciderTest, AutoLoFi) { |
| 357 const struct { | 356 const struct { |
| 358 bool auto_lofi_enabled_group; | 357 bool auto_lofi_enabled_group; |
| 359 bool auto_lofi_control_group; | 358 bool auto_lofi_control_group; |
| 360 bool network_prohibitively_slow; | 359 bool network_prohibitively_slow; |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 477 net::HttpRequestHeaders headers; | 476 net::HttpRequestHeaders headers; |
| 478 NotifyBeforeSendHeaders(&headers, request.get(), false); | 477 NotifyBeforeSendHeaders(&headers, request.get(), false); |
| 479 std::string header_value; | 478 std::string header_value; |
| 480 headers.GetHeader(chrome_proxy_header(), &header_value); | 479 headers.GetHeader(chrome_proxy_header(), &header_value); |
| 481 EXPECT_EQ(std::string::npos, | 480 EXPECT_EQ(std::string::npos, |
| 482 header_value.find(chrome_proxy_lo_fi_directive())); | 481 header_value.find(chrome_proxy_lo_fi_directive())); |
| 483 } | 482 } |
| 484 } | 483 } |
| 485 | 484 |
| 486 } // namespace data_reduction_roxy | 485 } // namespace data_reduction_roxy |
| OLD | NEW |