def __findElement(self): """ Private method to find the element belonging to this ClickToFlash instance. """ parent = self.parentWidget() view = None while parent is not None: if isinstance(parent, QWebView): view = parent break parent = parent.parentWidget() if view is None: return objectPos = view.mapFromGlobal(self.loadFlashButton.mapToGlobal( self.loadFlashButton.pos())) objectFrame = view.page().frameAt(objectPos) hitResult = QWebHitTestResult() hitElement = QWebElement() if objectFrame is not None: hitResult = objectFrame.hitTestContent(objectPos) hitElement = hitResult.element() if not hitElement.isNull() and \ hitElement.tagName().lower() in ["embed", "object"]: self.__element = hitElement return # hit test failed, trying to find element by src # attribute in elements of all frames on page (although less accurate frames = [] frames.append(view.page().mainFrame()) while frames: frame = frames.pop(0) if not frame: continue docElement = frame.documentElement() elements = QWebElementCollection() elements.append(docElement.findAll("embed")) elements.append(docElement.findAll("object")) for element in elements: if not self.__checkElement(element) and \ not self.__checkUrlOnElement(element, view): continue self.__element = element return frames.extend(frame.childFrames())
def __findElement(self): """ Private method to find the element belonging to this ClickToFlash instance. """ parent = self.parentWidget() view = None while parent is not None: if isinstance(parent, QWebView): view = parent break parent = parent.parentWidget() if view is None: return objectPos = view.mapFromGlobal( self.loadFlashButton.mapToGlobal(self.loadFlashButton.pos())) objectFrame = view.page().frameAt(objectPos) hitResult = QWebHitTestResult() hitElement = QWebElement() if objectFrame is not None: hitResult = objectFrame.hitTestContent(objectPos) hitElement = hitResult.element() if not hitElement.isNull() and \ hitElement.tagName().lower() in ["embed", "object"]: self.__element = hitElement return # hit test failed, trying to find element by src # attribute in elements of all frames on page (although less accurate frames = [] frames.append(view.page().mainFrame()) while frames: frame = frames.pop(0) if not frame: continue docElement = frame.documentElement() elements = QWebElementCollection() elements.append(docElement.findAll("embed")) elements.append(docElement.findAll("object")) for element in elements: if not self.__checkElement(element) and \ not self.__checkUrlOnElement(element, view): continue self.__element = element return frames.extend(frame.childFrames())