Index: tools/chrome_proxy/webdriver/lofi.py |
diff --git a/tools/chrome_proxy/webdriver/lofi.py b/tools/chrome_proxy/webdriver/lofi.py |
index 18935a068c2dff47ae1ebb8b436988340ca39042..08a5cff9b94c034c3f0e4207690555a467a34df4 100644 |
--- a/tools/chrome_proxy/webdriver/lofi.py |
+++ b/tools/chrome_proxy/webdriver/lofi.py |
@@ -34,6 +34,74 @@ class LoFi(IntegrationTest): |
# Verify that Lo-Fi responses were seen. |
self.assertNotEqual(0, lofi_responses) |
+ # Checks that LoFi images are served when LoFi slow connections are used and |
+ # the network quality estimator returns Slow2G. |
+ def testLoFiSlowConnection(self): |
+ with TestDriver() as test_driver: |
+ test_driver.AddChromeArg('--enable-spdy-proxy-auth') |
+ test_driver.AddChromeArg('--data-reduction-proxy-lo-fi=slow-connections-' |
+ 'only') |
+ # Disable server experiments such as tamper detection. |
+ test_driver.AddChromeArg('--data-reduction-proxy-server-experiments-' |
+ 'disabled') |
+ |
+ test_driver.AddChromeArg('--force-fieldtrial-params=' |
+ 'NetworkQualityEstimator.Enabled:' |
+ 'force_effective_connection_type/Slow2G') |
+ test_driver.AddChromeArg('--force-fieldtrials=NetworkQualityEstimator/' |
+ 'Enabled') |
+ |
+ test_driver.LoadURL('http://check.googlezip.net/static/index.html') |
+ |
+ lofi_responses = 0 |
+ for response in test_driver.GetHTTPResponses(): |
+ if not response.url.endswith('png'): |
+ continue |
+ if not response.request_headers: |
+ continue |
+ if (self.checkLoFiResponse(response, True)): |
+ lofi_responses = lofi_responses + 1 |
+ |
+ # Verify that Lo-Fi responses were seen. |
+ self.assertNotEqual(0, lofi_responses) |
+ |
+ # Checks that LoFi images are not served, but the if-heavy CPAT header is |
+ # added when LoFi slow connections are used and the network quality estimator |
+ # returns 4G. |
+ def testLoFiIfHeavyFastConnection(self): |
+ with TestDriver() as test_driver: |
+ test_driver.AddChromeArg('--enable-spdy-proxy-auth') |
+ test_driver.AddChromeArg('--data-reduction-proxy-lo-fi=slow-connections-' |
+ 'only') |
+ # Disable server experiments. |
+ test_driver.AddChromeArg('--data-reduction-proxy-server-experiments-' |
+ 'disabled') |
+ |
+ test_driver.AddChromeArg('--force-fieldtrial-params=' |
+ 'NetworkQualityEstimator.Enabled:' |
+ 'force_effective_connection_type/4G') |
+ test_driver.AddChromeArg('--force-fieldtrials=NetworkQualityEstimator/' |
+ 'Enabled') |
+ |
+ test_driver.LoadURL('http://check.googlezip.net/static/index.html') |
+ |
+ non_lofi_responses = 0 |
+ for response in test_driver.GetHTTPResponses(): |
+ if not response.url.endswith('png'): |
+ continue |
+ if not response.request_headers: |
+ continue |
+ self.assertIn('chrome-proxy-accept-transform', response.request_headers) |
+ actual_cpat_headers = \ |
+ response.request_headers['chrome-proxy-accept-transform'].split(';') |
+ self.assertIn('empty-image', actual_cpat_headers) |
+ self.assertIn('if-heavy', actual_cpat_headers) |
+ if (not self.checkLoFiResponse(response, False)): |
+ non_lofi_responses = non_lofi_responses + 1 |
+ |
+ # Verify that non Lo-Fi image responses were seen. |
+ self.assertNotEqual(0, non_lofi_responses) |
+ |
# Checks that Lo-Fi placeholder images are not loaded from cache on page |
# reloads when Lo-Fi mode is disabled or data reduction proxy is disabled. |
# First a test page is opened with Lo-Fi and chrome proxy enabled. This allows |