| Index: inspector/InspectorController.cpp
|
| ===================================================================
|
| --- inspector/InspectorController.cpp (revision 53180)
|
| +++ inspector/InspectorController.cpp (working copy)
|
| @@ -143,7 +143,6 @@
|
| , m_inspectorBackend(InspectorBackend::create(this))
|
| , m_inspectorFrontendHost(InspectorFrontendHost::create(this, client))
|
| , m_injectedScriptHost(InjectedScriptHost::create(this))
|
| - , m_lastBoundObjectId(1)
|
| #if ENABLE(JAVASCRIPT_DEBUGGER)
|
| , m_debuggerEnabled(false)
|
| , m_attachDebuggerWhenShown(false)
|
| @@ -375,7 +374,7 @@
|
| m_expiredConsoleMessageCount = 0;
|
| m_previousMessage = 0;
|
| m_groupLevel = 0;
|
| - releaseWrapperObjectGroup("console");
|
| + m_injectedScriptHost->releaseWrapperObjectGroup(0 /* release the group in all scripts */, "console");
|
| if (m_domAgent)
|
| m_domAgent->releaseDanglingNodes();
|
| if (m_frontend)
|
| @@ -500,7 +499,7 @@
|
| {
|
| if (!enabled() || !m_frontend || frame != m_inspectedPage->mainFrame())
|
| return;
|
| - resetInjectedScript();
|
| + m_injectedScriptHost->discardInjectedScripts();
|
| }
|
|
|
| void InspectorController::windowScriptObjectAvailable()
|
| @@ -513,7 +512,6 @@
|
| m_scriptState = scriptStateFromPage(debuggerWorld(), m_page);
|
| ScriptGlobalObject::set(m_scriptState, "InspectorBackend", m_inspectorBackend.get());
|
| ScriptGlobalObject::set(m_scriptState, "InspectorFrontendHost", m_inspectorFrontendHost.get());
|
| - ScriptGlobalObject::set(m_scriptState, "InjectedScriptHost", m_injectedScriptHost.get());
|
| }
|
|
|
| void InspectorController::scriptObjectReady()
|
| @@ -526,8 +524,6 @@
|
| if (!ScriptGlobalObject::get(m_scriptState, "WebInspector", webInspectorObj))
|
| return;
|
| ScriptObject injectedScriptObj;
|
| - if (!ScriptGlobalObject::get(m_scriptState, "InjectedScript", injectedScriptObj))
|
| - return;
|
| setFrontendProxyObject(m_scriptState, webInspectorObj, injectedScriptObj);
|
|
|
| #if ENABLE(JAVASCRIPT_DEBUGGER)
|
| @@ -545,10 +541,9 @@
|
| m_client->inspectorWindowObjectCleared();
|
| }
|
|
|
| -void InspectorController::setFrontendProxyObject(ScriptState* scriptState, ScriptObject webInspectorObj, ScriptObject injectedScriptObj)
|
| +void InspectorController::setFrontendProxyObject(ScriptState* scriptState, ScriptObject webInspectorObj, ScriptObject)
|
| {
|
| m_scriptState = scriptState;
|
| - m_injectedScriptObj = injectedScriptObj;
|
| m_frontend.set(new InspectorFrontend(this, scriptState, webInspectorObj));
|
| releaseDOMAgent();
|
| m_domAgent = InspectorDOMAgent::create(m_frontend.get());
|
| @@ -606,7 +601,6 @@
|
| #endif
|
| closeWindow();
|
|
|
| - m_injectedScriptObj = ScriptObject();
|
| releaseDOMAgent();
|
| m_frontend.set(0);
|
| m_timelineAgent = 0;
|
| @@ -715,8 +709,6 @@
|
|
|
| m_frontend->reset();
|
| m_domAgent->reset();
|
| - m_objectGroups.clear();
|
| - m_idToWrappedObject.clear();
|
| }
|
|
|
| void InspectorController::pruneResources(ResourcesMap* resourceMap, DocumentLoader* loaderToKeep)
|
| @@ -1591,8 +1583,14 @@
|
|
|
| void InspectorController::didPause()
|
| {
|
| - ScriptFunctionCall function(m_scriptState, m_injectedScriptObj, "getCallFrames");
|
| - ScriptValue callFrames = function.call();
|
| + JavaScriptCallFrame* callFrame = m_injectedScriptHost->currentCallFrame();
|
| + ScriptState* scriptState = callFrame->scopeChain()->globalObject->globalExec();
|
| + ASSERT(scriptState);
|
| + ScriptObject injectedScriptObj = m_injectedScriptHost->injectedScriptFor(scriptState);
|
| + ScriptFunctionCall function(scriptState, injectedScriptObj, "getCallFrames");
|
| + ScriptValue callFramesValue = function.call();
|
| + String callFrames = callFramesValue.toString(scriptState);
|
| +
|
| m_frontend->pausedScript(callFrames);
|
| }
|
|
|
| @@ -1820,50 +1818,6 @@
|
| return ElementsPanel;
|
| }
|
|
|
| -ScriptValue InspectorController::wrapObject(const ScriptValue& quarantinedObject, const String& objectGroup)
|
| -{
|
| - ScriptFunctionCall function(m_scriptState, m_injectedScriptObj, "createProxyObject");
|
| - function.appendArgument(quarantinedObject);
|
| - if (quarantinedObject.isObject()) {
|
| - long id = m_lastBoundObjectId++;
|
| - String objectId = String::format("object#%ld", id);
|
| - m_idToWrappedObject.set(objectId, quarantinedObject);
|
| - ObjectGroupsMap::iterator it = m_objectGroups.find(objectGroup);
|
| - if (it == m_objectGroups.end())
|
| - it = m_objectGroups.set(objectGroup, Vector<String>()).first;
|
| - it->second.append(objectId);
|
| - function.appendArgument(objectId);
|
| - }
|
| - ScriptValue wrapper = function.call();
|
| - return wrapper;
|
| -}
|
| -
|
| -ScriptValue InspectorController::unwrapObject(const String& objectId)
|
| -{
|
| - HashMap<String, ScriptValue>::iterator it = m_idToWrappedObject.find(objectId);
|
| - if (it != m_idToWrappedObject.end())
|
| - return it->second;
|
| - return ScriptValue();
|
| -}
|
| -
|
| -void InspectorController::releaseWrapperObjectGroup(const String& objectGroup)
|
| -{
|
| - ObjectGroupsMap::iterator groupIt = m_objectGroups.find(objectGroup);
|
| - if (groupIt == m_objectGroups.end())
|
| - return;
|
| -
|
| - Vector<String>& groupIds = groupIt->second;
|
| - for (Vector<String>::iterator it = groupIds.begin(); it != groupIds.end(); ++it)
|
| - m_idToWrappedObject.remove(*it);
|
| - m_objectGroups.remove(groupIt);
|
| -}
|
| -
|
| -void InspectorController::resetInjectedScript()
|
| -{
|
| - ScriptFunctionCall function(m_scriptState, m_injectedScriptObj, "reset");
|
| - function.call();
|
| -}
|
| -
|
| void InspectorController::deleteCookie(const String& cookieName, const String& domain)
|
| {
|
| ResourcesMap::iterator resourcesEnd = m_resources.end();
|
| @@ -1892,6 +1846,27 @@
|
| m_domAgent->didModifyDOMAttr(element);
|
| }
|
|
|
| -} // namespace WebCore
|
| +ScriptObject InspectorController::injectedScriptForNodeId(long id)
|
| +{
|
| +
|
| + Frame* frame = 0;
|
| + if (id) {
|
| + ASSERT(m_domAgent);
|
| + Node* node = m_domAgent->nodeForId(id);
|
| + if (node) {
|
| + Document* document = node->ownerDocument();
|
| + if (document)
|
| + frame = document->frame();
|
| + }
|
| + } else
|
| + frame = m_inspectedPage->mainFrame();
|
| +
|
| + if (frame)
|
| + return m_injectedScriptHost->injectedScriptFor(frame->script()->mainWorldScriptState());
|
| +
|
| + return ScriptObject();
|
| +}
|
| +
|
| +} // namespace WebCore
|
|
|
| #endif // ENABLE(INSPECTOR)
|
|
|