From e07a1045a8fe2128eedf30051aa9606ebcf20bb1 Mon Sep 17 00:00:00 2001 From: Jay Kamat Date: Mon, 8 May 2017 22:00:11 -0700 Subject: [PATCH] Add is_link method to webelem --- qutebrowser/browser/webelem.py | 10 +++++++--- qutebrowser/browser/webkit/webkitelem.py | 3 +-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/qutebrowser/browser/webelem.py b/qutebrowser/browser/webelem.py index 5dd263da3..de6b9cfda 100644 --- a/qutebrowser/browser/webelem.py +++ b/qutebrowser/browser/webelem.py @@ -306,6 +306,11 @@ class AbstractWebElement(collections.abc.MutableMapping): qtutils.ensure_valid(url) return url + def is_link(self): + """Return True if this AbstractWebElement is a link.""" + href_tags = ['a', 'area', 'link'] + return self.tag_name() in href_tags + def _mouse_pos(self): """Get the position to click/hover.""" # Click the center of the largest square fitting into the top/left @@ -403,9 +408,8 @@ class AbstractWebElement(collections.abc.MutableMapping): self._click_fake_event(click_target) return - href_tags = ['a', 'area', 'link'] if click_target == usertypes.ClickTarget.normal: - if self.tag_name() in href_tags: + if self.is_link(): log.webelem.debug("Clicking via JS click()") self._click_js(click_target) elif self.is_editable(strict=True): @@ -418,7 +422,7 @@ class AbstractWebElement(collections.abc.MutableMapping): elif click_target in [usertypes.ClickTarget.tab, usertypes.ClickTarget.tab_bg, usertypes.ClickTarget.window]: - if self.tag_name() in href_tags: + if self.is_link(): self._click_href(click_target) else: self._click_fake_event(click_target) diff --git a/qutebrowser/browser/webkit/webkitelem.py b/qutebrowser/browser/webkit/webkitelem.py index ba15e4a66..a570eae3c 100644 --- a/qutebrowser/browser/webkit/webkitelem.py +++ b/qutebrowser/browser/webkit/webkitelem.py @@ -285,8 +285,7 @@ class WebKitElement(webelem.AbstractWebElement): for _ in range(5): if elem is None: break - tag = elem.tag_name() - if tag == 'a' or tag == 'area': + if elem.is_link(): if elem.get('target', None) == '_blank': elem['target'] = '_top' break