Index: tools/chrome_proxy/webdriver/lofi.py |
diff --git a/tools/chrome_proxy/webdriver/lofi.py b/tools/chrome_proxy/webdriver/lofi.py |
index a0753b1ad6c2cb54e29cec1ad0e7764803ae653b..8b2fd5d43ae3ba547c6d779f1ebed029fe47b098 100644 |
--- a/tools/chrome_proxy/webdriver/lofi.py |
+++ b/tools/chrome_proxy/webdriver/lofi.py |
@@ -19,7 +19,6 @@ class LoFi(IntegrationTest): |
# Disable server experiments such as tamper detection. |
test_driver.AddChromeArg('--data-reduction-proxy-server-experiments-' |
'disabled') |
- test_driver.AddChromeArg('--disable-quic') |
test_driver.LoadURL('http://check.googlezip.net/static/index.html') |
@@ -29,15 +28,8 @@ class LoFi(IntegrationTest): |
continue |
if not response.request_headers: |
continue |
- self.assertHasChromeProxyViaHeader(response) |
- content_length = response.response_headers['content-length'] |
- cpat_request = response.request_headers['chrome-proxy-accept-transform'] |
- cpct_response = response.response_headers[ |
- 'chrome-proxy-content-transform'] |
- if ('empty-image' in cpct_response): |
+ if (self.assertLoFiResponse(response, True)): |
lofi_responses = lofi_responses + 1 |
- self.assertIn('empty-image', cpat_request) |
- self.assertTrue(int(content_length) < 100) |
# Verify that Lo-Fi responses were seen. |
self.assertNotEqual(0, lofi_responses) |
@@ -74,5 +66,79 @@ class LoFi(IntegrationTest): |
# Verify that a Lite Page response for the main frame was seen. |
self.assertEqual(1, lite_page_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 |
+ # Chrome to cache the Lo-Fi placeholder image. The browser is restarted with |
+ # chrome proxy disabled and the same test page is loaded. This second page |
+ # load should not pick the Lo-Fi placeholder from cache and original image |
+ # should be loaded. Finally, the browser is restarted with chrome proxy |
+ # enabled and Lo-Fi disabled and the same test page is loaded. This third page |
+ # load should not pick the Lo-Fi placeholder from cache and original image |
+ # should be loaded. |
+ def testLoFiCacheBypass(self): |
+ with TestDriver() as test_driver: |
+ # First page load, enable Lo-Fi and chrome proxy. Disable server |
+ # experiments such as tamper detection. This test should be run with |
+ # --profile-type=default command line for the same user profile and cache |
+ # to be used across the two page loads. |
+ test_driver.AddChromeArg('--enable-spdy-proxy-auth') |
+ test_driver.AddChromeArg('--data-reduction-proxy-lo-fi=always-on') |
+ test_driver.AddChromeArg('--profile-type=default') |
+ test_driver.AddChromeArg('--data-reduction-proxy-server-experiments-' |
+ 'disabled') |
+ |
+ test_driver.LoadURL('http://check.googlezip.net/cacheable/test.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.assertLoFiResponse(response, True)): |
+ lofi_responses = lofi_responses + 1 |
+ |
+ # Verify that Lo-Fi responses were seen. |
+ self.assertNotEqual(0, lofi_responses) |
+ |
+ # Second page load with the chrome proxy off. |
+ test_driver._StopDriver() |
+ test_driver.RemoveChromeArg('--enable-spdy-proxy-auth') |
+ test_driver.LoadURL('http://check.googlezip.net/cacheable/test.html') |
+ |
+ responses = 0 |
+ for response in test_driver.GetHTTPResponses(): |
+ if not response.url.endswith('png'): |
+ continue |
+ if not response.request_headers: |
+ continue |
+ responses = responses + 1 |
+ self.assertNotHasChromeProxyViaHeader(response) |
+ self.assertLoFiResponse(response, False) |
+ |
+ # Verify that responses were seen. |
+ self.assertNotEqual(0, responses) |
+ |
+ # Third page load with the chrome proxy on and Lo-Fi off. |
+ test_driver._StopDriver() |
+ test_driver.AddChromeArg('--enable-spdy-proxy-auth') |
+ test_driver.RemoveChromeArg('--data-reduction-proxy-lo-fi=always-on') |
+ test_driver.AddChromeArg('--data-reduction-proxy-lo-fi=disabled') |
+ test_driver.LoadURL('http://check.googlezip.net/cacheable/test.html') |
+ |
+ responses = 0 |
+ for response in test_driver.GetHTTPResponses(): |
+ if not response.url.endswith('png'): |
+ continue |
+ if not response.request_headers: |
+ continue |
+ responses = responses + 1 |
+ self.assertHasChromeProxyViaHeader(response) |
+ self.assertLoFiResponse(response, False) |
+ |
+ # Verify that responses were seen. |
+ self.assertNotEqual(0, responses) |
+ |
if __name__ == '__main__': |
IntegrationTest.RunAllTests() |