diff options
author | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-30 08:19:40 +0000 |
---|---|---|
committer | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-30 08:19:40 +0000 |
commit | 46ce4c7d272138e15282ee102f9c6ff0508353c7 (patch) | |
tree | b0e00ae8d60ae169aa27f7cb8a522a8b255c21d1 /webkit/glue/devtools/dom_agent_impl.cc | |
parent | 646dce40970192643ce533518888dfaf9c736815 (diff) | |
download | chromium_src-46ce4c7d272138e15282ee102f9c6ff0508353c7.zip chromium_src-46ce4c7d272138e15282ee102f9c6ff0508353c7.tar.gz chromium_src-46ce4c7d272138e15282ee102f9c6ff0508353c7.tar.bz2 |
DevTools: Implement basic DOM edit operations.
Review URL: http://codereview.chromium.org/56005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12765 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/devtools/dom_agent_impl.cc')
-rw-r--r-- | webkit/glue/devtools/dom_agent_impl.cc | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/webkit/glue/devtools/dom_agent_impl.cc b/webkit/glue/devtools/dom_agent_impl.cc index 6d6471c..d946a7e 100644 --- a/webkit/glue/devtools/dom_agent_impl.cc +++ b/webkit/glue/devtools/dom_agent_impl.cc @@ -69,7 +69,9 @@ DomAgentImpl::~DomAgentImpl() { } void DomAgentImpl::SetDocument(Document* doc) { - DiscardBindings(); + if (documents_.size() && doc == documents_.begin()->get()) { + return; + } ListHashSet<RefPtr<Document> > copy = documents_; for (ListHashSet<RefPtr<Document> >::iterator it = copy.begin(); @@ -84,6 +86,8 @@ void DomAgentImpl::SetDocument(Document* doc) { GetDocumentElement(); document_element_requested_ = false; } + } else { + DiscardBindings(); } } @@ -289,33 +293,49 @@ int DomAgentImpl::PushNodePathToClient(Node* node_to_select) { } void DomAgentImpl::SetAttribute( + int call_id, int element_id, const String& name, const String& value) { Node* node = GetNodeForId(element_id); if (node && (node->nodeType() == Node::ELEMENT_NODE)) { Element* element = static_cast<Element*>(node); - ExceptionCode ec = 0; + ExceptionCode ec = 0; element->setAttribute(name, value, ec); + delegate_->DidApplyDomChange(call_id, ec == 0); + } else { + delegate_->DidApplyDomChange(call_id, false); } } -void DomAgentImpl::RemoveAttribute(int element_id, const String& name) { +void DomAgentImpl::RemoveAttribute( + int call_id, + int element_id, + const String& name) { Node* node = GetNodeForId(element_id); if (node && (node->nodeType() == Node::ELEMENT_NODE)) { Element* element = static_cast<Element*>(node); ExceptionCode ec = 0; element->removeAttribute(name, ec); + delegate_->DidApplyDomChange(call_id, ec == 0); + } else { + delegate_->DidApplyDomChange(call_id, false); } } -void DomAgentImpl::SetTextNodeValue(int element_id, const String& value) { +void DomAgentImpl::SetTextNodeValue( + int call_id, + int element_id, + const String& value) { Node* node = GetNodeForId(element_id); if (node && (node->nodeType() == Node::TEXT_NODE)) { Text* text_node = static_cast<Text*>(node); ExceptionCode ec = 0; // TODO(pfeldman): Add error handling text_node->replaceWholeText(value, ec); + delegate_->DidApplyDomChange(call_id, ec == 0); + } else { + delegate_->DidApplyDomChange(call_id, false); } } |