blob: 5db71505d2ca019a7cd787d435fc6b087a9b9171 [file] [log] [blame]
# 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