Index: third_party/WebKit/Source/core/inspector/InspectorBaseAgent.cpp |
diff --git a/third_party/WebKit/Source/core/inspector/InspectorBaseAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorBaseAgent.cpp |
index 77789b4d4d061dcc28b05d7c88f48ecc2813d5e8..1f89f3f4d2e29d2d27b271185712c9b50e14bc2c 100644 |
--- a/third_party/WebKit/Source/core/inspector/InspectorBaseAgent.cpp |
+++ b/third_party/WebKit/Source/core/inspector/InspectorBaseAgent.cpp |
@@ -30,7 +30,7 @@ |
#include "core/inspector/InspectorBaseAgent.h" |
-#include "core/inspector/InspectorState.h" |
+#include "core/inspector/JSONParser.h" |
#include "wtf/PassOwnPtr.h" |
namespace blink { |
@@ -49,22 +49,30 @@ DEFINE_TRACE(InspectorAgent) |
visitor->trace(m_instrumentingAgents); |
} |
-void InspectorAgent::appended(InstrumentingAgents* instrumentingAgents, InspectorState* inspectorState) |
+void InspectorAgent::appended(InstrumentingAgents* instrumentingAgents) |
{ |
m_instrumentingAgents = instrumentingAgents; |
- m_state = inspectorState; |
init(); |
} |
-InspectorAgentRegistry::InspectorAgentRegistry(InstrumentingAgents* instrumentingAgents, InspectorCompositeState* inspectorState) |
+void InspectorAgent::setState(PassRefPtr<JSONObject> state) |
+{ |
+ m_state = state; |
+} |
+ |
+InspectorAgentRegistry::InspectorAgentRegistry(InstrumentingAgents* instrumentingAgents) |
: m_instrumentingAgents(instrumentingAgents) |
- , m_inspectorState(inspectorState) |
+ , m_state(JSONObject::create()) |
{ |
} |
void InspectorAgentRegistry::append(PassOwnPtrWillBeRawPtr<InspectorAgent> agent) |
{ |
- agent->appended(m_instrumentingAgents, m_inspectorState->createAgentState(agent->name())); |
+ ASSERT(m_state->find(agent->name()) == m_state->end()); |
+ RefPtr<JSONObject> agentState = JSONObject::create(); |
+ m_state->setObject(agent->name(), agentState); |
+ agent->setState(agentState); |
+ agent->appended(m_instrumentingAgents); |
m_agents.append(agent); |
} |
@@ -80,12 +88,32 @@ void InspectorAgentRegistry::clearFrontend() |
m_agents[i]->clearFrontend(); |
} |
-void InspectorAgentRegistry::restore() |
+void InspectorAgentRegistry::restore(const String& savedState) |
{ |
+ RefPtr<JSONValue> state = parseJSON(savedState); |
+ if (state) |
+ m_state = state->asObject(); |
+ if (!m_state) |
+ m_state = JSONObject::create(); |
+ |
+ for (size_t i = 0; i < m_agents.size(); i++) { |
+ RefPtr<JSONObject> agentState = m_state->getObject(m_agents[i]->name()); |
+ if (!agentState) { |
+ agentState = JSONObject::create(); |
+ m_state->setObject(m_agents[i]->name(), agentState); |
+ } |
+ m_agents[i]->setState(agentState); |
+ } |
+ |
for (size_t i = 0; i < m_agents.size(); i++) |
m_agents[i]->restore(); |
} |
+String InspectorAgentRegistry::state() |
+{ |
+ return m_state->toJSONString(); |
+} |
+ |
void InspectorAgentRegistry::registerInDispatcher(InspectorBackendDispatcher* dispatcher) |
{ |
for (size_t i = 0; i < m_agents.size(); i++) |