diff options
Diffstat (limited to 'webkit/glue/webframe_impl.cc')
-rw-r--r-- | webkit/glue/webframe_impl.cc | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/webkit/glue/webframe_impl.cc b/webkit/glue/webframe_impl.cc index 36affe7..dfdb7b3 100644 --- a/webkit/glue/webframe_impl.cc +++ b/webkit/glue/webframe_impl.cc @@ -701,7 +701,8 @@ v8::Local<v8::Context> WebFrameImpl::mainWorldScriptContext() const { } #endif -bool WebFrameImpl::insertStyleText(const WebString& css) { +bool WebFrameImpl::insertStyleText( + const WebString& css, const WebString& id) { Document* document = frame()->document(); if (!document) return false; @@ -709,9 +710,24 @@ bool WebFrameImpl::insertStyleText(const WebString& css) { if (!document_element) return false; + ExceptionCode err = 0; + + if (!id.isEmpty()) { + WebCore::Element* old_element = + document->getElementById(webkit_glue::WebStringToString(id)); + if (old_element) { + Node* parent = old_element->parent(); + if (!parent) + return false; + parent->removeChild(old_element, err); + } + } + RefPtr<WebCore::Element> stylesheet = document->createElement( WebCore::HTMLNames::styleTag, false); - ExceptionCode err = 0; + if (!id.isEmpty()) + stylesheet->setAttribute(WebCore::HTMLNames::idAttr, + webkit_glue::WebStringToString(id)); stylesheet->setTextContent(webkit_glue::WebStringToString(css), err); DCHECK(!err) << "Failed to set style element content"; WebCore::Node* first = document_element->firstChild(); |