Chromium Code Reviews| Index: chrome/test/functional/indexeddb.py |
| diff --git a/chrome/test/functional/indexeddb.py b/chrome/test/functional/indexeddb.py |
| index 87a3c68d4692b153069b751f9ed11422686db43c..83d19b2a643a5a095ebaf462fcb33021adeb79d2 100755 |
| --- a/chrome/test/functional/indexeddb.py |
| +++ b/chrome/test/functional/indexeddb.py |
| @@ -11,50 +11,77 @@ import test_utils |
| class IndexedDBTest(pyauto.PyUITest): |
| """Test of IndexedDB.""" |
| + _SESSION_STARTUP_NTP = 5 |
| + |
| + def _GetInnerText(self, selector, **kwargs): |
|
Nirnimesh
2012/04/25 19:38:38
please explicitly use tab_index arg, instead of **
jsbell
2012/04/25 20:42:04
Done.
|
| + """Return the value of the innerText property of the target node. |
| + The target node is identified by CSS selector, e.g. #id""" |
| + |
| + expression = 'document.querySelector("' + selector + '").innerText' |
| + return self.GetDOMValue(expression, **kwargs) |
| + |
| + def _WaitForAndAssertResult(self, expected, **kwargs): |
|
Nirnimesh
2012/04/25 19:38:38
please explicitly use tab_index arg, instead of **
jsbell
2012/04/25 20:42:04
Done.
|
| + """Wait for the element with id="result" to exist, and verify the value.""" |
| + self.WaitForDomNode('id("result")', **kwargs) |
| + self.assertEqual(self._GetInnerText('#result', **kwargs), expected) |
| + |
| + def _ClearResult(self, **kwargs): |
|
jsbell
2012/04/25 20:42:04
Dropped kwargs here too.
|
| + """Delete the element with id="result" if it exists.""" |
| + expression = """(function() { |
| + var e = document.querySelector('#result'); |
| + if (e) |
| + e.parentNode.removeChild(e); |
| + return "ok"; |
| + }())""" |
| + self.assertEqual(self.GetDOMValue(expression, **kwargs), "ok") |
|
Nirnimesh
2012/04/25 19:38:38
use single quotes for string
jsbell
2012/04/25 20:42:04
Done.
|
| + |
| + def _AssertNewTabPage(self): |
| + """Assert that the current tab is the new tab page, not a restored tab.""" |
| + self.assertEqual(self.GetBrowserInfo()['windows'][0]['tabs'][0]['url'], |
| + 'chrome://newtab/') |
| + |
| def testIndexedDBNullKeyPathPersistence(self): |
| """Verify null key path persists after restarting browser.""" |
| + # Don't restore tabs after restart |
| + self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_NTP) |
| + |
| url = self.GetHttpURLForDataPath('indexeddb', 'bug_90635.html') |
| self.NavigateToURL(url + '#part1') |
| - self.assertTrue(self.WaitUntil(self.GetActiveTabTitle, |
| - expect_retval='pass - first run'), |
| - msg='Key paths had unexpected values') |
| + self._WaitForAndAssertResult('pass - first run') |
| self.RestartBrowser(clear_profile=False) |
| + self._AssertNewTabPage() |
| self.NavigateToURL(url + '#part2') |
| - self.assertTrue(self.WaitUntil(self.GetActiveTabTitle, |
| - expect_retval='pass - second run'), |
| - msg='Key paths had unexpected values') |
| + self._WaitForAndAssertResult('pass - second run') |
| def testVersionChangeCrashResilience(self): |
| """Verify that a VERSION_CHANGE transaction is rolled back |
| after a renderer/browser crash""" |
| + # Don't restore tabs after restart |
| + self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_NTP) |
| + |
| url = self.GetHttpURLForDataPath('indexeddb', 'version_change_crash.html') |
| self.NavigateToURL(url + '#part1') |
| - self.assertTrue(self.WaitUntil(self.GetActiveTabTitle, |
| - expect_retval='pass - part1 - complete'), |
| - msg='Failed to prepare database') |
| + self._WaitForAndAssertResult('pass - part1 - complete') |
| self.RestartBrowser(clear_profile=False) |
| + self._AssertNewTabPage() |
| self.NavigateToURL(url + '#part2') |
| - self.assertTrue(self.WaitUntil(self.GetActiveTabTitle, |
| - expect_retval='pass - part2 - crash me'), |
| - msg='Failed to start transaction') |
| - |
| + self._WaitForAndAssertResult('pass - part2 - crash me') |
| test_utils.CrashBrowser(self) |
| self.RestartBrowser(clear_profile=False) |
| + self._AssertNewTabPage() |
| self.NavigateToURL(url + '#part3') |
| - self.assertTrue(self.WaitUntil(self.GetActiveTabTitle, |
| - expect_retval='pass - part3 - rolled back'), |
| - msg='VERSION_CHANGE not completely aborted') |
| + self._WaitForAndAssertResult('pass - part3 - rolled back') |
| def testConnectionsClosedOnTabClose(self): |
| """Verify that open DB connections are closed when a tab is destroyed.""" |
| @@ -63,20 +90,19 @@ class IndexedDBTest(pyauto.PyUITest): |
| self.NavigateToURL(url + '#tab1') |
| pid = self.GetBrowserInfo()['windows'][0]['tabs'][0]['renderer_pid'] |
| - self.assertTrue(self.WaitUntil(self.GetActiveTabTitle, |
| - expect_retval='setVersion(1) complete'), |
| - msg='Version change failed') |
| + self._WaitForAndAssertResult('setVersion(1) complete') |
| - # Start to a different URL to force a new renderer process |
| + # Start on a different URL to force a new renderer process. |
| self.AppendTab(pyauto.GURL('about:blank')) |
| self.NavigateToURL(url + '#tab2') |
| - self.assertTrue(self.WaitUntil(self.GetActiveTabTitle, |
| - expect_retval='setVersion(2) blocked'), |
| - msg='Version change not blocked as expected') |
| + self._WaitForAndAssertResult('setVersion(2) blocked', tab_index=1) |
| + self._ClearResult(tab_index=1) |
| + |
| self.KillRendererProcess(pid) |
| - self.assertTrue(self.WaitUntil(self.GetActiveTabTitle, |
| - expect_retval='setVersion(2) complete'), |
| - msg='Version change never unblocked') |
| + self.assertEqual(self.GetTabCount(), 2) |
| + self.GetBrowserWindow(0).GetTab(0).Close(True) |
| + |
| + self._WaitForAndAssertResult('setVersion(2) complete') |
| if __name__ == '__main__': |