| Index: telemetry/telemetry/page/cache_temperature.py
|
| diff --git a/telemetry/telemetry/page/cache_temperature.py b/telemetry/telemetry/page/cache_temperature.py
|
| index 01bae7c86cb3f946c3ce5de8ae485c61d70e3690..004896ee5c61fbe1ac56b8f9b75698b23dd799b6 100644
|
| --- a/telemetry/telemetry/page/cache_temperature.py
|
| +++ b/telemetry/telemetry/page/cache_temperature.py
|
| @@ -10,6 +10,9 @@ See design doc for details:
|
| https://docs.google.com/document/u/1/d/12D7tkhZi887g9d0U2askU9JypU_wYiEI7Lw0bfwxUgA
|
| """
|
|
|
| +import logging
|
| +from telemetry.core import util
|
| +
|
| # Default Cache Temperature. The page doesn't care which browser cache state
|
| # it is run on.
|
| ANY = 'any'
|
| @@ -19,3 +22,35 @@ PCV1_COLD = 'pcv1-cold'
|
| # Emulates PageCycler V1 warm runs. Ensures that the page was visited at least
|
| # once just before the run.
|
| PCV1_WARM = 'pcv1-warm'
|
| +
|
| +
|
| +def EnsurePageCacheTemperature(page, browser, previous_page=None):
|
| + temperature = page.cache_temperature
|
| + logging.info('PageCacheTemperature: %s', temperature)
|
| +
|
| + if temperature == ANY:
|
| + return
|
| + elif temperature == PCV1_COLD:
|
| + any_valid_tab = browser.tabs[0]
|
| + any_valid_tab.ClearCache(force=True)
|
| + elif temperature == PCV1_WARM:
|
| + if (previous_page is not None and
|
| + previous_page.url == page.url and
|
| + (previous_page.cache_temperature == PCV1_COLD or
|
| + previous_page.cache_temperature == PCV1_WARM)):
|
| + return
|
| +
|
| + tab = browser.tabs[0]
|
| + tab.ExecuteJavaScript(
|
| + """console.time('telemetry.internal.warmCache.start');""")
|
| + tab.ExecuteJavaScript(
|
| + """console.timeEnd('telemetry.internal.warmCache.start');""")
|
| + tab.Navigate(page.url)
|
| + util.WaitFor(tab.HasReachedQuiescence, 60)
|
| + tab.WaitForDocumentReadyStateToBeComplete()
|
| + tab.Navigate("about:blank")
|
| + tab.WaitForDocumentReadyStateToBeComplete()
|
| + tab.ExecuteJavaScript(
|
| + """console.time('telemetry.internal.warmCache.end');""")
|
| + tab.ExecuteJavaScript(
|
| + """console.timeEnd('telemetry.internal.warmCache.end');""")
|
|
|