Index: third_party/WebKit/Source/core/inspector/InspectorBaseAgent.h |
diff --git a/third_party/WebKit/Source/core/inspector/InspectorBaseAgent.h b/third_party/WebKit/Source/core/inspector/InspectorBaseAgent.h |
index 5a01808083bee5ee96686c598851d39a2d86968e..0d64424f9155cd40aecfc33c44af8dff666e038c 100644 |
--- a/third_party/WebKit/Source/core/inspector/InspectorBaseAgent.h |
+++ b/third_party/WebKit/Source/core/inspector/InspectorBaseAgent.h |
@@ -40,67 +40,28 @@ |
#include "platform/inspector_protocol/TypeBuilder.h" |
#include "platform/inspector_protocol/Values.h" |
#include "wtf/Forward.h" |
-#include "wtf/Vector.h" |
#include "wtf/text/WTFString.h" |
namespace blink { |
-class Frontend; |
-class InstrumentingAgents; |
class LocalFrame; |
using protocol::Maybe; |
class CORE_EXPORT InspectorAgent : public GarbageCollectedFinalized<InspectorAgent> { |
public: |
- explicit InspectorAgent(const String&); |
- virtual ~InspectorAgent(); |
- DECLARE_VIRTUAL_TRACE(); |
+ InspectorAgent() { } |
+ virtual ~InspectorAgent() { } |
+ DEFINE_INLINE_VIRTUAL_TRACE() { } |
- virtual void init() { } |
- virtual void setFrontend(protocol::Frontend*) = 0; |
- virtual void clearFrontend() = 0; |
virtual void disable(ErrorString*) { } |
virtual void restore() { } |
- virtual void registerInDispatcher(protocol::Dispatcher*) = 0; |
virtual void discardAgent() { } |
virtual void didCommitLoadForLocalFrame(LocalFrame*) { } |
virtual void flushPendingProtocolNotifications() { } |
- virtual void setState(protocol::DictionaryValue*); |
- String name() const { return m_name; } |
- void appended(InstrumentingAgents*); |
- |
-protected: |
- Member<InstrumentingAgents> m_instrumentingAgents; |
- protocol::DictionaryValue* m_state; |
- |
-private: |
- String m_name; |
-}; |
- |
-class CORE_EXPORT InspectorAgentRegistry final { |
- DISALLOW_NEW(); |
- WTF_MAKE_NONCOPYABLE(InspectorAgentRegistry); |
-public: |
- explicit InspectorAgentRegistry(InstrumentingAgents*); |
- void append(InspectorAgent*); |
- |
- void setFrontend(protocol::Frontend*); |
- void clearFrontend(); |
- void restore(const String& savedState); |
- void registerInDispatcher(protocol::Dispatcher*); |
- void discardAgents(); |
- void flushPendingProtocolNotifications(); |
- void didCommitLoadForLocalFrame(LocalFrame*); |
- String state(); |
- |
- DECLARE_TRACE(); |
- |
-private: |
- Member<InstrumentingAgents> m_instrumentingAgents; |
- OwnPtr<protocol::DictionaryValue> m_state; |
- HeapVector<Member<InspectorAgent>> m_agents; |
+ virtual void init(InstrumentingAgents*, protocol::Frontend*, protocol::Dispatcher*, protocol::DictionaryValue*) = 0; |
+ virtual void dispose() = 0; |
}; |
template<typename AgentClass, typename FrontendClass> |
@@ -108,43 +69,53 @@ class InspectorBaseAgent : public InspectorAgent { |
public: |
~InspectorBaseAgent() override { } |
- void setFrontend(protocol::Frontend* frontend) override |
+ void init(InstrumentingAgents* instrumentingAgents, protocol::Frontend* frontend, protocol::Dispatcher* dispatcher, protocol::DictionaryValue* state) override |
{ |
- ASSERT(!m_frontend); |
+ m_instrumentingAgents = instrumentingAgents; |
m_frontend = FrontendClass::from(frontend); |
+ dispatcher->registerAgent(static_cast<AgentClass*>(this)); |
+ |
+ m_state = state->getObject(m_name); |
+ if (!m_state) { |
+ OwnPtr<protocol::DictionaryValue> newState = protocol::DictionaryValue::create(); |
+ m_state = newState.get(); |
+ state->setObject(m_name, newState.release()); |
+ } |
} |
- void clearFrontend() override |
+ void dispose() override |
{ |
ErrorString error; |
disable(&error); |
- ASSERT(m_frontend); |
m_frontend = nullptr; |
+ m_state = nullptr; |
+ m_instrumentingAgents = nullptr; |
+ discardAgent(); |
} |
- void registerInDispatcher(protocol::Dispatcher* dispatcher) final |
+ DEFINE_INLINE_VIRTUAL_TRACE() |
{ |
- dispatcher->registerAgent(static_cast<AgentClass*>(this)); |
+ visitor->trace(m_instrumentingAgents); |
+ InspectorAgent::trace(visitor); |
} |
protected: |
explicit InspectorBaseAgent(const String& name) |
- : InspectorAgent(name) |
+ : InspectorAgent() |
+ , m_name(name) |
, m_frontend(nullptr) |
{ |
} |
FrontendClass* frontend() const { return m_frontend; } |
+ Member<InstrumentingAgents> m_instrumentingAgents; |
+ protocol::DictionaryValue* m_state; |
private: |
+ String m_name; |
FrontendClass* m_frontend; |
}; |
-inline bool asBool(const bool* const b) |
-{ |
- return b ? *b : false; |
-} |
- |
} // namespace blink |
#endif // !defined(InspectorBaseAgent_h) |