Chromium Code Reviews| Index: tools/chrome_proxy/webdriver/decorators.py |
| diff --git a/tools/chrome_proxy/webdriver/decorators.py b/tools/chrome_proxy/webdriver/decorators.py |
| index 5da3650523d7dc0cbfe7a41c8f4e27ee38b0440b..c04055febc8a641e8aae6a77c1ecfee5480d0d44 100644 |
| --- a/tools/chrome_proxy/webdriver/decorators.py |
| +++ b/tools/chrome_proxy/webdriver/decorators.py |
| @@ -2,7 +2,10 @@ |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| +import re |
| + |
| from common import ParseFlags |
| +from common import TestDriver |
| # Platform-specific decorators. |
| @@ -72,3 +75,45 @@ def NotMac(func): |
| else: |
| args[0].skipTest('This test does not run on Mac OS.') |
| return wrapper |
| + |
| +chrome_version = None |
| + |
| +def GetChromeVersion(): |
| + with TestDriver() as t: |
| + t.LoadURL('http://check.googlezip.net/connect') |
|
bengr
2017/05/05 17:53:28
Maybe use a standard gen_204 page, or just scrape
|
| + ua = t.ExecuteJavascriptStatement('navigator.userAgent') |
| + match = re.search('Chrome/[0-9\.]+', ua) |
| + if not match: |
| + raise Exception('Could not find Chrome version in User-Agent: %s' % ua) |
| + chrome_version = ua[match.start():match.end()] |
| + version = chrome_version[chrome_version.find('/') + 1:] |
| + version_split = version.split('.') |
| + milestone = int(version_split[0]) |
| + print 'Running on Chrome M%d (%s)' % (milestone, version) |
| + return milestone |
| + |
| +def ChromeVersionBeforeM(milestone): |
| + def puesdo_wrapper(func): |
| + def wrapper(*args, **kwargs): |
| + global chrome_version |
| + if chrome_version == None: |
| + chrome_version = GetChromeVersion() |
| + if chrome_version < milestone: |
| + func(*args, **kwargs) |
| + else: |
| + args[0].skipTest('This test does not run above M%d.' % milestone) |
| + return wrapper |
| + return puesdo_wrapper |
| + |
| +def ChromeVersionAfterM(milestone): |
| + def puesdo_wrapper(func): |
| + def wrapper(*args, **kwargs): |
| + global chrome_version |
| + if chrome_version == None: |
| + chrome_version = GetChromeVersion() |
| + if chrome_version >= milestone: |
| + func(*args, **kwargs) |
| + else: |
| + args[0].skipTest('This test does not run below M%d.' % milestone) |
| + return wrapper |
| + return puesdo_wrapper |