Index: tools/perf/measurements/page_cycler_unittest.py |
diff --git a/tools/perf/measurements/page_cycler_unittest.py b/tools/perf/measurements/page_cycler_unittest.py |
index 90f05087372ff26368432bad1ef6dced7fca27ad..2d274910da23ad01303817492f9caf98b8557e73 100644 |
--- a/tools/perf/measurements/page_cycler_unittest.py |
+++ b/tools/perf/measurements/page_cycler_unittest.py |
@@ -38,17 +38,21 @@ class FakePage(object): |
"""Used to mock loading a page.""" |
def __init__(self, url): |
self.url = url |
+ self.is_file = url.startswith('file://') |
class FakeTab(object): |
"""Used to mock a browser tab.""" |
def __init__(self): |
self.clear_cache_calls = 0 |
+ self.navigated_urls = [] |
def ClearCache(self, force=False): |
assert force |
self.clear_cache_calls += 1 |
def EvaluateJavaScript(self, _): |
return 1 |
+ def Navigate(self, url): |
+ self.navigated_urls.append(url) |
def WaitForJavaScriptExpression(self, _, __): |
pass |
@property |
@@ -73,6 +77,13 @@ class FakeBrowser(object): |
def platform(self): |
return FakePlatform() |
+ @property |
+ def http_server(self): |
+ class FakeHttpServer(object): |
+ def UrlOf(self, url_path): |
+ return 'http://fakeserver:99999/%s' % url_path |
+ return FakeHttpServer() |
+ |
class FakePlatform(object): |
def GetOSName(self): |
@@ -213,3 +224,16 @@ class PageCyclerUnitTest(unittest.TestCase): |
self.assertEqual(value.units, '%') |
cycler.DidNavigateToPage(page, tab) |
+ |
+ def testLegacyPagesAvoidCrossRenderNavigation(self): |
+ # For legacy page cyclers with file URLs, verify that WillNavigateToPage |
+ # does an initial navigate to avoid paying for a cross-renderer navigation. |
+ cycler = self.SetUpCycler([], True) |
+ pages = [FakePage('file://fakepage1.com'), FakePage('file://fakepage2.com')] |
+ tab = FakeTab() |
+ |
+ self.assertEqual([], tab.navigated_urls) |
+ for page in pages * 2: |
+ cycler.WillNavigateToPage(page, tab) |
+ self.assertEqual( |
+ ['http://fakeserver:99999/nonexistent.html'], tab.navigated_urls) |