| 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');""") | 
|  |