Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / inspector / InspectorDOMAgent.h
index fc8d3f3..48fa345 100644 (file)
@@ -45,7 +45,7 @@
 #include "wtf/Vector.h"
 #include "wtf/text/AtomicString.h"
 
-namespace WebCore {
+namespace blink {
 
 class CharacterData;
 class DOMEditor;
@@ -57,8 +57,6 @@ class InspectorFrontend;
 class InspectorHistory;
 class InspectorOverlay;
 class InspectorPageAgent;
-class InspectorState;
-class InstrumentingAgents;
 class Node;
 class PlatformGestureEvent;
 class PlatformTouchEvent;
@@ -83,10 +81,10 @@ struct EventListenerInfo {
     const EventListenerVector eventListenerVector;
 };
 
-class InspectorDOMAgent FINAL : public InspectorBaseAgent<InspectorDOMAgent>, public InspectorBackendDispatcher::DOMCommandHandler {
+class InspectorDOMAgent final : public InspectorBaseAgent<InspectorDOMAgent>, public InspectorBackendDispatcher::DOMCommandHandler {
     WTF_MAKE_NONCOPYABLE(InspectorDOMAgent);
 public:
-    struct DOMListener {
+    struct DOMListener : public WillBeGarbageCollectedMixin {
         virtual ~DOMListener()
         {
         }
@@ -95,66 +93,67 @@ public:
         virtual void didModifyDOMAttr(Element*) = 0;
     };
 
-    static PassOwnPtr<InspectorDOMAgent> create(InspectorPageAgent* pageAgent, InjectedScriptManager* injectedScriptManager, InspectorOverlay* overlay)
+    static PassOwnPtrWillBeRawPtr<InspectorDOMAgent> create(InspectorPageAgent* pageAgent, InjectedScriptManager* injectedScriptManager, InspectorOverlay* overlay)
     {
-        return adoptPtr(new InspectorDOMAgent(pageAgent, injectedScriptManager, overlay));
+        return adoptPtrWillBeNoop(new InspectorDOMAgent(pageAgent, injectedScriptManager, overlay));
     }
 
     static String toErrorString(ExceptionState&);
 
     virtual ~InspectorDOMAgent();
+    virtual void trace(Visitor*) override;
 
-    virtual void setFrontend(InspectorFrontend*) OVERRIDE;
-    virtual void clearFrontend() OVERRIDE;
-    virtual void restore() OVERRIDE;
+    virtual void setFrontend(InspectorFrontend*) override;
+    virtual void clearFrontend() override;
+    virtual void restore() override;
 
-    Vector<Document*> documents();
+    WillBeHeapVector<RawPtrWillBeMember<Document> > documents();
     void reset();
 
     // Methods called from the frontend for DOM nodes inspection.
-    virtual void enable(ErrorString*) OVERRIDE;
-    virtual void disable(ErrorString*) OVERRIDE;
-    virtual void querySelector(ErrorString*, int nodeId, const String& selectors, int* elementId) OVERRIDE;
-    virtual void querySelectorAll(ErrorString*, int nodeId, const String& selectors, RefPtr<TypeBuilder::Array<int> >& result) OVERRIDE;
-    virtual void getDocument(ErrorString*, RefPtr<TypeBuilder::DOM::Node>& root) OVERRIDE;
-    virtual void requestChildNodes(ErrorString*, int nodeId, const int* depth) OVERRIDE;
-    virtual void setAttributeValue(ErrorString*, int elementId, const String& name, const String& value) OVERRIDE;
-    virtual void setAttributesAsText(ErrorString*, int elementId, const String& text, const String* name) OVERRIDE;
-    virtual void removeAttribute(ErrorString*, int elementId, const String& name) OVERRIDE;
-    virtual void removeNode(ErrorString*, int nodeId) OVERRIDE;
-    virtual void setNodeName(ErrorString*, int nodeId, const String& name, int* newId) OVERRIDE;
-    virtual void getOuterHTML(ErrorString*, int nodeId, WTF::String* outerHTML) OVERRIDE;
-    virtual void setOuterHTML(ErrorString*, int nodeId, const String& outerHTML) OVERRIDE;
-    virtual void setNodeValue(ErrorString*, int nodeId, const String& value) OVERRIDE;
-    virtual void getEventListenersForNode(ErrorString*, int nodeId, const WTF::String* objectGroup, RefPtr<TypeBuilder::Array<TypeBuilder::DOM::EventListener> >& listenersArray) OVERRIDE;
-    virtual void performSearch(ErrorString*, const String& whitespaceTrimmedQuery, String* searchId, int* resultCount) OVERRIDE;
-    virtual void getSearchResults(ErrorString*, const String& searchId, int fromIndex, int toIndex, RefPtr<TypeBuilder::Array<int> >&) OVERRIDE;
-    virtual void discardSearchResults(ErrorString*, const String& searchId) OVERRIDE;
-    virtual void resolveNode(ErrorString*, int nodeId, const String* objectGroup, RefPtr<TypeBuilder::Runtime::RemoteObject>& result) OVERRIDE;
-    virtual void getAttributes(ErrorString*, int nodeId, RefPtr<TypeBuilder::Array<String> >& result) OVERRIDE;
-    virtual void setInspectModeEnabled(ErrorString*, bool enabled, const bool* inspectUAShadowDOM, const RefPtr<JSONObject>* highlightConfig) OVERRIDE;
-    virtual void requestNode(ErrorString*, const String& objectId, int* nodeId) OVERRIDE;
-    virtual void pushNodeByPathToFrontend(ErrorString*, const String& path, int* nodeId) OVERRIDE;
-    virtual void pushNodesByBackendIdsToFrontend(ErrorString*, const RefPtr<JSONArray>& nodeIds, RefPtr<TypeBuilder::Array<int> >&) OVERRIDE;
-    virtual void hideHighlight(ErrorString*) OVERRIDE;
-    virtual void highlightRect(ErrorString*, int x, int y, int width, int height, const RefPtr<JSONObject>* color, const RefPtr<JSONObject>* outlineColor) OVERRIDE;
-    virtual void highlightQuad(ErrorString*, const RefPtr<JSONArray>& quad, const RefPtr<JSONObject>* color, const RefPtr<JSONObject>* outlineColor) OVERRIDE;
-    virtual void highlightNode(ErrorString*, const RefPtr<JSONObject>& highlightConfig, const int* nodeId, const String* objectId) OVERRIDE;
-    virtual void highlightFrame(ErrorString*, const String& frameId, const RefPtr<JSONObject>* color, const RefPtr<JSONObject>* outlineColor) OVERRIDE;
-
-    virtual void moveTo(ErrorString*, int nodeId, int targetNodeId, const int* anchorNodeId, int* newNodeId) OVERRIDE;
-    virtual void undo(ErrorString*) OVERRIDE;
-    virtual void redo(ErrorString*) OVERRIDE;
-    virtual void markUndoableState(ErrorString*) OVERRIDE;
-    virtual void focus(ErrorString*, int nodeId) OVERRIDE;
-    virtual void setFileInputFiles(ErrorString*, int nodeId, const RefPtr<JSONArray>& files) OVERRIDE;
-    virtual void getBoxModel(ErrorString*, int nodeId, RefPtr<TypeBuilder::DOM::BoxModel>&) OVERRIDE;
-    virtual void getNodeForLocation(ErrorString*, int x, int y, int* nodeId) OVERRIDE;
-    virtual void getRelayoutBoundary(ErrorString*, int nodeId, int* relayoutBoundaryNodeId) OVERRIDE;
-
+    virtual void enable(ErrorString*) override;
+    virtual void disable(ErrorString*) override;
+    virtual void querySelector(ErrorString*, int nodeId, const String& selectors, int* elementId) override;
+    virtual void querySelectorAll(ErrorString*, int nodeId, const String& selectors, RefPtr<TypeBuilder::Array<int> >& result) override;
+    virtual void getDocument(ErrorString*, RefPtr<TypeBuilder::DOM::Node>& root) override;
+    virtual void requestChildNodes(ErrorString*, int nodeId, const int* depth) override;
+    virtual void setAttributeValue(ErrorString*, int elementId, const String& name, const String& value) override;
+    virtual void setAttributesAsText(ErrorString*, int elementId, const String& text, const String* name) override;
+    virtual void removeAttribute(ErrorString*, int elementId, const String& name) override;
+    virtual void removeNode(ErrorString*, int nodeId) override;
+    virtual void setNodeName(ErrorString*, int nodeId, const String& name, int* newId) override;
+    virtual void getOuterHTML(ErrorString*, int nodeId, WTF::String* outerHTML) override;
+    virtual void setOuterHTML(ErrorString*, int nodeId, const String& outerHTML) override;
+    virtual void setNodeValue(ErrorString*, int nodeId, const String& value) override;
+    virtual void getEventListenersForNode(ErrorString*, int nodeId, const WTF::String* objectGroup, RefPtr<TypeBuilder::Array<TypeBuilder::DOM::EventListener> >& listenersArray) override;
+    virtual void performSearch(ErrorString*, const String& whitespaceTrimmedQuery, const bool* includeUserAgentShadowDOM, String* searchId, int* resultCount) override;
+    virtual void getSearchResults(ErrorString*, const String& searchId, int fromIndex, int toIndex, RefPtr<TypeBuilder::Array<int> >&) override;
+    virtual void discardSearchResults(ErrorString*, const String& searchId) override;
+    virtual void resolveNode(ErrorString*, int nodeId, const String* objectGroup, RefPtr<TypeBuilder::Runtime::RemoteObject>& result) override;
+    virtual void getAttributes(ErrorString*, int nodeId, RefPtr<TypeBuilder::Array<String> >& result) override;
+    virtual void setInspectModeEnabled(ErrorString*, bool enabled, const bool* inspectUAShadowDOM, const RefPtr<JSONObject>* highlightConfig) override;
+    virtual void requestNode(ErrorString*, const String& objectId, int* nodeId) override;
+    virtual void pushNodeByPathToFrontend(ErrorString*, const String& path, int* nodeId) override;
+    virtual void pushNodesByBackendIdsToFrontend(ErrorString*, const RefPtr<JSONArray>& nodeIds, RefPtr<TypeBuilder::Array<int> >&) override;
+    virtual void hideHighlight(ErrorString*) override;
+    virtual void highlightRect(ErrorString*, int x, int y, int width, int height, const RefPtr<JSONObject>* color, const RefPtr<JSONObject>* outlineColor) override;
+    virtual void highlightQuad(ErrorString*, const RefPtr<JSONArray>& quad, const RefPtr<JSONObject>* color, const RefPtr<JSONObject>* outlineColor) override;
+    virtual void highlightNode(ErrorString*, const RefPtr<JSONObject>& highlightConfig, const int* nodeId, const String* objectId) override;
+    virtual void highlightFrame(ErrorString*, const String& frameId, const RefPtr<JSONObject>* color, const RefPtr<JSONObject>* outlineColor) override;
+
+    virtual void copyTo(ErrorString*, int nodeId, int targetElementId, const int* anchorNodeId, int* newNodeId) override;
+    virtual void moveTo(ErrorString*, int nodeId, int targetNodeId, const int* anchorNodeId, int* newNodeId) override;
+    virtual void undo(ErrorString*) override;
+    virtual void redo(ErrorString*) override;
+    virtual void markUndoableState(ErrorString*) override;
+    virtual void focus(ErrorString*, int nodeId) override;
+    virtual void setFileInputFiles(ErrorString*, int nodeId, const RefPtr<JSONArray>& files) override;
+    virtual void getBoxModel(ErrorString*, int nodeId, RefPtr<TypeBuilder::DOM::BoxModel>&) override;
+    virtual void getNodeForLocation(ErrorString*, int x, int y, int* nodeId) override;
+    virtual void getRelayoutBoundary(ErrorString*, int nodeId, int* relayoutBoundaryNodeId) override;
     static void getEventListeners(EventTarget*, Vector<EventListenerInfo>& listenersArray, bool includeAncestors);
 
-    class Listener {
+    class Listener : public WillBeGarbageCollectedMixin {
     public:
         virtual ~Listener() { }
         virtual void domAgentWasEnabled() = 0;
@@ -174,8 +173,8 @@ public:
     void didInsertDOMNode(Node*);
     void willRemoveDOMNode(Node*);
     void willModifyDOMAttr(Element*, const AtomicString& oldValue, const AtomicString& newValue);
-    void didModifyDOMAttr(Element*, const AtomicString& name, const AtomicString& value);
-    void didRemoveDOMAttr(Element*, const AtomicString& name);
+    void didModifyDOMAttr(Element*, const String& name, const AtomicString& value);
+    void didRemoveDOMAttr(Element*, const String& name);
     void styleAttributeInvalidated(const WillBeHeapVector<RawPtrWillBeMember<Element> >& elements);
     void characterDataModified(CharacterData*);
     void didInvalidateStyleAttr(Node*);
@@ -195,7 +194,7 @@ public:
     bool handleMousePress();
     bool handleGestureEvent(LocalFrame*, const PlatformGestureEvent&);
     bool handleTouchEvent(LocalFrame*, const PlatformTouchEvent&);
-    void handleMouseMove(LocalFrame*, const PlatformMouseEvent&);
+    bool handleMouseMove(LocalFrame*, const PlatformMouseEvent&);
 
     InspectorHistory* history() { return m_history.get(); }
 
@@ -217,6 +216,8 @@ private:
 
     InspectorDOMAgent(InspectorPageAgent*, InjectedScriptManager*, InspectorOverlay*);
 
+    void innerEnable();
+
     void setSearchingForNode(ErrorString*, SearchMode, JSONObject* highlightConfig);
     PassOwnPtr<HighlightConfig> highlightConfigFromInspectorObject(ErrorString*, JSONObject* highlightInspectorObject);
 
@@ -226,6 +227,7 @@ private:
     void unbind(Node*, NodeToIdMap*);
 
     Node* assertEditableNode(ErrorString*, int nodeId);
+    Node* assertEditableChildNode(ErrorString*, Element* parentElement, int nodeId);
     Element* assertEditableElement(ErrorString*, int nodeId);
 
     void inspect(Node*);
@@ -235,10 +237,6 @@ private:
 
     void invalidateFrameOwnerElement(LocalFrame*);
 
-    bool hasBreakpoint(Node*, int type);
-    void updateSubtreeBreakpoints(Node* root, uint32_t rootMask, bool value);
-    void descriptionForDOMEvent(Node* target, int breakpointType, bool insertion, PassRefPtr<JSONObject> description);
-
     PassRefPtr<TypeBuilder::DOM::Node> buildObjectForNode(Node*, int depth, NodeToIdMap*);
     PassRefPtr<TypeBuilder::Array<String> > buildArrayForElementAttributes(Element*);
     PassRefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > buildArrayForContainerChildren(Node* container, int depth, NodeToIdMap* nodesMap);
@@ -253,32 +251,32 @@ private:
 
     bool pushDocumentUponHandlelessOperation(ErrorString*);
 
-    InspectorPageAgent* m_pageAgent;
-    InjectedScriptManager* m_injectedScriptManager;
+    RawPtrWillBeMember<InspectorPageAgent> m_pageAgent;
+    RawPtrWillBeMember<InjectedScriptManager> m_injectedScriptManager;
     InspectorOverlay* m_overlay;
     InspectorFrontend::DOM* m_frontend;
-    DOMListener* m_domListener;
-    OwnPtrWillBePersistent<NodeToIdMap> m_documentNodeToIdMap;
+    RawPtrWillBeMember<DOMListener> m_domListener;
+    OwnPtrWillBeMember<NodeToIdMap> m_documentNodeToIdMap;
     // Owns node mappings for dangling nodes.
-    WillBePersistentHeapVector<OwnPtrWillBeMember<NodeToIdMap> > m_danglingNodeToIdMaps;
-    WillBePersistentHeapHashMap<int, RawPtrWillBeMember<Node> > m_idToNode;
-    WillBePersistentHeapHashMap<int, RawPtrWillBeMember<NodeToIdMap> > m_idToNodesMap;
+    WillBeHeapVector<OwnPtrWillBeMember<NodeToIdMap> > m_danglingNodeToIdMaps;
+    WillBeHeapHashMap<int, RawPtrWillBeMember<Node> > m_idToNode;
+    WillBeHeapHashMap<int, RawPtrWillBeMember<NodeToIdMap> > m_idToNodesMap;
     HashSet<int> m_childrenRequested;
     HashMap<int, int> m_cachedChildCount;
     int m_lastNodeId;
-    RefPtrWillBePersistent<Document> m_document;
-    typedef WillBePersistentHeapHashMap<String, WillBeHeapVector<RefPtrWillBeMember<Node> > > SearchResults;
+    RefPtrWillBeMember<Document> m_document;
+    typedef WillBeHeapHashMap<String, WillBeHeapVector<RefPtrWillBeMember<Node> > > SearchResults;
     SearchResults m_searchResults;
-    OwnPtr<RevalidateStyleAttributeTask> m_revalidateStyleAttrTask;
+    OwnPtrWillBeMember<RevalidateStyleAttributeTask> m_revalidateStyleAttrTask;
     SearchMode m_searchingForNode;
     OwnPtr<HighlightConfig> m_inspectModeHighlightConfig;
-    OwnPtrWillBePersistent<InspectorHistory> m_history;
-    OwnPtrWillBePersistent<DOMEditor> m_domEditor;
+    OwnPtrWillBeMember<InspectorHistory> m_history;
+    OwnPtrWillBeMember<DOMEditor> m_domEditor;
     bool m_suppressAttributeModifiedEvent;
-    Listener* m_listener;
+    RawPtrWillBeMember<Listener> m_listener;
 };
 
 
-} // namespace WebCore
+} // namespace blink
 
 #endif // !defined(InspectorDOMAgent_h)