bool ScriptController::anyPageIsProcessingUserGesture() const { Page* page = m_frame->page(); if (!page) return false; const HashSet<Page*>& pages = page->group().pages(); HashSet<Page*>::const_iterator end = pages.end(); for (HashSet<Page*>::const_iterator it = pages.begin(); it != end; ++it) { for (Frame* frame = page->mainFrame(); frame; frame = frame->tree()->traverseNext()) { ScriptController* script = frame->script(); if (script->m_allowPopupsFromPlugin) return true; const ShellMap::const_iterator iterEnd = m_windowShells.end(); for (ShellMap::const_iterator iter = m_windowShells.begin(); iter != iterEnd; ++iter) { JSDOMWindowShell* shell = iter->second.get(); Event* event = shell->window()->currentEvent(); if (event && event->fromUserGesture()) return true; } if (isJavaScriptAnchorNavigation()) return true; } } return false; }
bool ScriptController::processingUserGesture(DOMWrapperWorld* world) const { if (m_allowPopupsFromPlugin || isJavaScriptAnchorNavigation()) return true; // If a DOM event is being processed, check that it was initiated by the user // and that it is in the whitelist of event types allowed to generate pop-ups. if (JSDOMWindowShell* shell = existingWindowShell(world)) if (Event* event = shell->window()->currentEvent()) return event->fromUserGesture(); return UserGestureIndicator::processingUserGesture(); }
bool ScriptController::processingUserGesture() const { return processingUserGestureEvent() || isJavaScriptAnchorNavigation(); }