| # 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. |
| |
| _check_webgl_supported_script = """ |
| (function () { |
| var c = document.createElement('canvas'); |
| var gl = c.getContext('webgl', { failIfMajorPerformanceCaveat: true }); |
| if (gl == null) { |
| gl = c.getContext('experimental-webgl', |
| { failIfMajorPerformanceCaveat: true }); |
| if (gl == null) { |
| return false; |
| } |
| } |
| return true; |
| })(); |
| """ |
| |
| class BrowserInfo(object): |
| """A wrapper around browser object that allows looking up infos of the |
| browser. |
| """ |
| def __init__(self, browser): |
| self._browser = browser |
| |
| def HasWebGLSupport(self): |
| result = False |
| # If no tab is opened, open one and close it after evaluate |
| # _check_webgl_supported_script |
| if len(self._browser.tabs) == 0 and self._browser.supports_tab_control: |
| self._browser.tabs.New() |
| tab = self._browser.tabs[0] |
| result = tab.EvaluateJavaScript(_check_webgl_supported_script) |
| tab.Close() |
| elif len(self._browser.tabs) > 0: |
| tab = self._browser.tabs[0] |
| result = tab.EvaluateJavaScript(_check_webgl_supported_script) |
| return result |
| |
| def HasFlingGestureSupport(self): |
| # Synthetic fling gestures weren't properly tracked by telemetry until |
| # Chromium branch number 2339 (see crrev.com/1003023002). |
| # TODO(jdduke): Resolve lack of branch number support for content_shell |
| # targets, see crbug.com/470273. |
| branch_num = ( |
| self._browser._browser_backend.devtools_client.GetChromeBranchNumber()) |
| return branch_num >= 2339 |
| |
| def HasDiagonalScrollingSupport(self): |
| # Diagonal scrolling was not supported in the ScrollAction until |
| # Chromium branch number 2332 |
| branch_num = ( |
| self._browser._browser_backend.devtools_client.GetChromeBranchNumber()) |
| return branch_num >= 2332 |
| |
| def HasRepeatableSynthesizeScrollGesture(self): |
| # Repeatable SynthesizeScrollGesture scrolling was not supported until |
| # Chromium branch number 2480 |
| branch_num = ( |
| self._browser._browser_backend.devtools_client.GetChromeBranchNumber()) |
| return branch_num >= 2480 |
| |
| @property |
| def browser_type(self): |
| return self._browser.browser_type |
| |
| @property |
| def browser(self): |
| return self._browser |