void ScriptController::attachDebugger(JSDOMWindowShell* shell, JSC::Debugger* debugger) { if (!shell) return; JSDOMWindow* globalObject = shell->window(); JSLockHolder lock(globalObject->vm()); if (debugger) debugger->attach(globalObject); else if (JSC::Debugger* currentDebugger = globalObject->debugger()) currentDebugger->detach(globalObject, JSC::Debugger::TerminatingDebuggingSession); }
ScriptCachedFrameData::ScriptCachedFrameData(Frame& frame) { JSLockHolder lock(JSDOMWindowBase::commonVM()); ScriptController& scriptController = frame.script(); ScriptController::ShellMap& windowShells = scriptController.m_windowShells; ScriptController::ShellMap::iterator windowShellsEnd = windowShells.end(); for (ScriptController::ShellMap::iterator iter = windowShells.begin(); iter != windowShellsEnd; ++iter) { JSDOMWindow* window = iter->value->window(); m_windows.add(iter->key.get(), Strong<JSDOMWindow>(window->vm(), window)); } scriptController.attachDebugger(0); }
ScriptCachedFrameData::ScriptCachedFrameData(Frame& frame) { JSLockHolder lock(JSDOMWindowBase::commonVM()); ScriptController& scriptController = frame.script(); Vector<JSC::Strong<JSDOMWindowShell>> windowShells = scriptController.windowShells(); for (size_t i = 0; i < windowShells.size(); ++i) { JSDOMWindowShell* windowShell = windowShells[i].get(); JSDOMWindow* window = windowShell->window(); m_windows.add(&windowShell->world(), Strong<JSDOMWindow>(window->vm(), window)); window->setConsoleClient(nullptr); } scriptController.attachDebugger(nullptr); }