void PageGroup::removeUserScriptFromWorld(DOMWrapperWorld* world, const KURL& url) { ASSERT_ARG(world, world); if (!m_userScripts) return; UserScriptMap::iterator it = m_userScripts->find(world); if (it == m_userScripts->end()) return; UserScriptVector* scripts = it->value.get(); for (int i = scripts->size() - 1; i >= 0; --i) { if (scripts->at(i)->url() == url) scripts->remove(i); } if (scripts->isEmpty()) m_userScripts->remove(it); }
void Frame::injectUserScriptsForWorld(DOMWrapperWorld* world, const UserScriptVector& userScripts, UserScriptInjectionTime injectionTime) { if (userScripts.isEmpty()) return; Document* doc = document(); if (!doc) return; Vector<ScriptSourceCode> sourceCode; unsigned count = userScripts.size(); for (unsigned i = 0; i < count; ++i) { UserScript* script = userScripts[i].get(); if (script->injectedFrames() == InjectInTopFrameOnly && ownerElement()) continue; if (script->injectionTime() == injectionTime && UserContentURLPattern::matchesPatterns(doc->url(), script->whitelist(), script->blacklist())) m_script.evaluateInWorld(ScriptSourceCode(script->source(), script->url()), world); } }
void PageGroup::removeUserScriptFromWorld(unsigned worldID, const KURL& url) { if (!m_userScripts) return; UserScriptMap::iterator it = m_userScripts->find(worldID); if (it == m_userScripts->end()) return; UserScriptVector* scripts = it->second; for (int i = scripts->size() - 1; i >= 0; --i) { if (scripts->at(i)->url() == url) scripts->remove(i); } if (!scripts->isEmpty()) return; delete it->second; m_userScripts->remove(it); }
void Frame::injectUserScriptsForWorld(DOMWrapperWorld& world, const UserScriptVector& userScripts, UserScriptInjectionTime injectionTime) { if (userScripts.isEmpty()) return; Document* doc = document(); if (!doc) return; for (auto& script : userScripts) { if (script->injectedFrames() == InjectInTopFrameOnly && ownerElement()) continue; if (script->injectionTime() == injectionTime && UserContentURLPattern::matchesPatterns(doc->url(), script->whitelist(), script->blacklist())) m_script->evaluateInWorld(ScriptSourceCode(script->source(), script->url()), world); } }