Replace WebElement.frame() by .has_frame()

This commit is contained in:
Florian Bruhin 2016-08-17 17:53:14 +02:00
parent 91b43c5cef
commit 6f24221c54
5 changed files with 21 additions and 14 deletions

View File

@ -117,7 +117,7 @@ class HintLabel(QLabel):
@pyqtSlot()
def _move_to_elem(self):
"""Reposition the label to its element."""
if self.elem.frame() is None:
if not self.elem.has_frame():
# This sometimes happens for some reason...
log.hints.debug("Frame for {!r} vanished!".format(self))
self.hide()
@ -329,10 +329,14 @@ class HintActions(QObject):
else:
prompt = None
# FIXME:qtwebengine get a proper API for this
# pylint: disable=protected-access
page = elem._elem.webFrame().page()
# pylint: enable=protected-access
download_manager = objreg.get('download-manager', scope='window',
window=self._win_id)
download_manager.get(url, page=elem.frame().page(),
prompt_download_directory=prompt)
download_manager.get(url, page=page, prompt_download_directory=prompt)
def call_userscript(self, elem, context):
"""Call a userscript from a hint.
@ -897,7 +901,7 @@ class HintManager(QObject):
}
elem = self._context.labels[keystr].elem
if elem.frame() is None:
if not elem.has_frame():
message.error(self._win_id,
"This element has no webframe.",
immediately=True)

View File

@ -103,9 +103,8 @@ class AbstractWebElement(collections.abc.MutableMapping):
html = None
return utils.get_repr(self, html=html)
def frame(self):
"""Get the main frame of this element."""
# FIXME:qtwebengine get rid of this?
def has_frame(self):
"""Check if this element has a valid frame attached."""
raise NotImplementedError
def geometry(self):

View File

@ -58,9 +58,8 @@ class WebEngineElement(webelem.AbstractWebElement):
def __len__(self):
return len(self._js_dict['attributes'])
def frame(self):
log.stub()
return None
def has_frame(self):
return True
def geometry(self):
log.stub()

View File

@ -83,9 +83,9 @@ class WebKitElement(webelem.AbstractWebElement):
if self._elem.isNull():
raise IsNullError('Element {} vanished!'.format(self._elem))
def frame(self):
def has_frame(self):
self._check_vanished()
return self._elem.webFrame()
return self._elem.webFrame() is not None
def geometry(self):
self._check_vanished()

View File

@ -255,7 +255,7 @@ class TestWebKitElement:
lambda e: None in e,
list, # __iter__
len,
lambda e: e.frame(),
lambda e: e.has_frame(),
lambda e: e.geometry(),
lambda e: e.style_property('visibility', strategy='computed'),
lambda e: e.text(),
@ -394,7 +394,6 @@ class TestWebKitElement:
assert elem.debug_text() == expected
@pytest.mark.parametrize('attribute, code', [
('webFrame', lambda e: e.frame()),
('geometry', lambda e: e.geometry()),
('toOuterXml', lambda e: e.outer_xml()),
])
@ -404,6 +403,12 @@ class TestWebKitElement:
setattr(mock, 'return_value', sentinel)
assert code(elem) is sentinel
@pytest.mark.parametrize('frame, expected', [
(object(), True), (None, False)])
def test_has_frame(self, elem, frame, expected):
elem._elem.webFrame.return_value = frame
assert elem.has_frame() == expected
def test_tag_name(self, elem):
elem._elem.tagName.return_value = 'SPAN'
assert elem.tag_name() == 'span'