# Copyright 2014 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import re from telemetry.page import page as page_module from telemetry.page import page_set as page_set_module def _CreateXpathFunction(xpath): return ('document.evaluate("%s",' 'document,' 'null,' 'XPathResult.FIRST_ORDERED_NODE_TYPE,' 'null)' '.singleNodeValue' % re.escape(xpath)) class IndexeddbOfflinePage(page_module.Page): """ Why: Simulates user input while offline and sync while online. """ def __init__(self, page_set): super(IndexeddbOfflinePage, self).__init__( url='file://endure/indexeddb_app.html', page_set=page_set, name='indexeddb_offline') self.user_agent_type = 'desktop' def RunNavigateSteps(self, action_runner): action_runner.NavigateToPage(self) action_runner.WaitForElement(text='initialized') def RunEndure(self, action_runner): action_runner.WaitForElement('button[id="online"]:not(disabled)') action_runner.ClickElement('button[id="online"]:not(disabled)') action_runner.WaitForElement( element_function=_CreateXpathFunction('id("state")[text()="online"]')) action_runner.Wait(1) action_runner.WaitForElement('button[id="offline"]:not(disabled)') action_runner.ClickElement('button[id="offline"]:not(disabled)') action_runner.WaitForElement( element_function=_CreateXpathFunction('id("state")[text()="offline"]')) class IndexeddbOfflinePageSet(page_set_module.PageSet): """ Chrome Endure test for IndexedDB. """ def __init__(self): super(IndexeddbOfflinePageSet, self).__init__( user_agent_type='desktop') self.AddPage(IndexeddbOfflinePage(self))