def _follow_selected_cb(self, js_elem, tab=False): """Callback for javascript which clicks the selected element. Args: js_elem: The element serialized from javascript. tab: Open in a new tab. """ if js_elem is None: return if js_elem == "focused": # we had a focused element, not a selected one. Just send <enter> self._follow_enter(tab) return assert isinstance(js_elem, dict), js_elem elem = webengineelem.WebEngineElement(js_elem, tab=self._tab) if tab: click_type = usertypes.ClickTarget.tab else: click_type = usertypes.ClickTarget.normal # Only click if we see a link if elem.is_link(): log.webview.debug("Found link in selection, clicking. ClickTarget " "{}, elem {}".format(click_type, elem)) elem.click(click_type)
def _js_cb_multiple(self, callback, js_elems): """Handle found elements coming from JS and call the real callback. Args: callback: The callback to call with the found elements. js_elems: The elements serialized from javascript. """ elems = [] for js_elem in js_elems: elem = webengineelem.WebEngineElement(js_elem, tab=self._tab) elems.append(elem) callback(elems)
def _js_cb_single(self, callback, js_elem): """Handle a found focus elem coming from JS and call the real callback. Args: callback: The callback to call with the found element. Called with a WebEngineElement or None. js_elem: The element serialized from javascript. """ log.webview.debug("Got element from JS: {!r}".format(js_elem)) if js_elem is None: callback(None) else: elem = webengineelem.WebEngineElement(js_elem, tab=self._tab) callback(elem)