43 {
44 InjectedScriptManager::disconnect();
45
46 m_commandLineAPIHost->disconnect();
47 m_commandLineAPIHost = nullptr;
48 }
49
50 void WebInjectedScriptManager::didCreateInjectedScript(InjectedScript injectedScript)
51 {
52 CommandLineAPIModule::injectIfNeeded(this, injectedScript);
53 }
54
55 void WebInjectedScriptManager::discardInjectedScriptsFor(DOMWindow* window)
56 {
57 if (m_scriptStateToId.isEmpty())
58 return;
59
60 Vector<long> idsToRemove;
61 for (const auto& it : m_idToInjectedScript) {
62 JSC::ExecState* scriptState = it.value.scriptState();
63 // JDK-8164960
64 if (scriptState == nullptr || window != domWindowFromExecState(scriptState))
65 continue;
66 m_scriptStateToId.remove(scriptState);
67 idsToRemove.append(it.key);
68 }
69
70 for (size_t i = 0; i < idsToRemove.size(); i++)
71 m_idToInjectedScript.remove(idsToRemove[i]);
72
73 // Now remove script states that have id but no injected script.
74 Vector<JSC::ExecState*> scriptStatesToRemove;
75 for (const auto& it : m_scriptStateToId) {
76 JSC::ExecState* scriptState = it.key;
77 if (window == domWindowFromExecState(scriptState))
78 scriptStatesToRemove.append(scriptState);
79 }
80
81 for (size_t i = 0; i < scriptStatesToRemove.size(); i++)
82 m_scriptStateToId.remove(scriptStatesToRemove[i]);
83 }
|
43 {
44 InjectedScriptManager::disconnect();
45
46 m_commandLineAPIHost->disconnect();
47 m_commandLineAPIHost = nullptr;
48 }
49
50 void WebInjectedScriptManager::didCreateInjectedScript(InjectedScript injectedScript)
51 {
52 CommandLineAPIModule::injectIfNeeded(this, injectedScript);
53 }
54
55 void WebInjectedScriptManager::discardInjectedScriptsFor(DOMWindow* window)
56 {
57 if (m_scriptStateToId.isEmpty())
58 return;
59
60 Vector<long> idsToRemove;
61 for (const auto& it : m_idToInjectedScript) {
62 JSC::ExecState* scriptState = it.value.scriptState();
63 // JDK-8164076
64 if (scriptState == nullptr || window != domWindowFromExecState(scriptState))
65 continue;
66 m_scriptStateToId.remove(scriptState);
67 idsToRemove.append(it.key);
68 }
69
70 for (size_t i = 0; i < idsToRemove.size(); i++)
71 m_idToInjectedScript.remove(idsToRemove[i]);
72
73 // Now remove script states that have id but no injected script.
74 Vector<JSC::ExecState*> scriptStatesToRemove;
75 for (const auto& it : m_scriptStateToId) {
76 JSC::ExecState* scriptState = it.key;
77 if (window == domWindowFromExecState(scriptState))
78 scriptStatesToRemove.append(scriptState);
79 }
80
81 for (size_t i = 0; i < scriptStatesToRemove.size(); i++)
82 m_scriptStateToId.remove(scriptStatesToRemove[i]);
83 }
|