#include "config.h"
#include "core/html/HTMLDocument.h"
-#include "HTMLNames.h"
-#include "bindings/v8/ScriptController.h"
+#include "bindings/core/v8/ScriptController.h"
+#include "core/HTMLNames.h"
+#include "core/frame/LocalDOMWindow.h"
+#include "core/frame/FrameView.h"
+#include "core/frame/LocalFrame.h"
#include "core/html/HTMLBodyElement.h"
#include "core/page/FocusController.h"
-#include "core/frame/Frame.h"
#include "core/page/FrameTree.h"
-#include "core/frame/FrameView.h"
#include "core/page/Page.h"
+#include "wtf/text/StringBuilder.h"
-namespace WebCore {
+namespace blink {
using namespace HTMLNames;
HTMLDocument::HTMLDocument(const DocumentInit& initializer, DocumentClassFlags extendedDocumentClasses)
: Document(initializer, HTMLDocumentClass | extendedDocumentClasses)
{
- ScriptWrappable::init(this);
clearXMLVersion();
+ if (isSrcdocDocument() || initializer.importsController()) {
+ ASSERT(inNoQuirksMode());
+ lockCompatibilityMode();
+ }
}
HTMLDocument::~HTMLDocument()
{
}
-String HTMLDocument::dir()
-{
- HTMLElement* b = body();
- if (!b)
- return String();
- return b->getAttribute(dirAttr);
-}
-
-void HTMLDocument::setDir(const String& value)
-{
- HTMLElement* b = body();
- if (b)
- b->setAttribute(dirAttr, value);
-}
-
-String HTMLDocument::designMode() const
-{
- return inDesignMode() ? "on" : "off";
-}
-
-void HTMLDocument::setDesignMode(const String& value)
-{
- InheritedBool mode;
- if (equalIgnoringCase(value, "on"))
- mode = on;
- else if (equalIgnoringCase(value, "off"))
- mode = off;
- else
- mode = inherit;
- Document::setDesignMode(mode);
-}
-
-Element* HTMLDocument::activeElement()
-{
- if (Element* element = treeScope().adjustedFocusedElement())
- return element;
- return body();
-}
-
-bool HTMLDocument::hasFocus()
-{
- Page* page = this->page();
- if (!page)
- return false;
- if (!page->focusController().isActive() || !page->focusController().isFocused())
- return false;
- if (Frame* focusedFrame = page->focusController().focusedFrame()) {
- if (focusedFrame->tree().isDescendantOf(frame()))
- return true;
- }
- return false;
-}
-
HTMLBodyElement* HTMLDocument::htmlBodyElement() const
{
HTMLElement* body = this->body();
- return (body && body->hasTagName(bodyTag)) ? toHTMLBodyElement(body) : 0;
+ return isHTMLBodyElement(body) ? toHTMLBodyElement(body) : 0;
}
const AtomicString& HTMLDocument::bodyAttributeValue(const QualifiedName& name) const
setBodyAttribute(vlinkAttr, value);
}
-PassRefPtr<Document> HTMLDocument::cloneDocumentWithoutChildren()
+PassRefPtrWillBeRawPtr<Document> HTMLDocument::cloneDocumentWithoutChildren()
{
return create(DocumentInit(url()).withRegistrationContext(registrationContext()));
}
if (name.isEmpty())
return;
map.add(name);
- if (Frame* f = frame())
+ if (LocalFrame* f = frame())
f->script().namedItemAdded(this, name);
}
if (name.isEmpty())
return;
map.remove(name);
- if (Frame* f = frame())
+ if (LocalFrame* f = frame())
f->script().namedItemRemoved(this, name);
}
return !isPossibleHTMLAttr || !htmlCaseInsensitiveAttributesSet->contains(attributeName.localName().impl());
}
-void HTMLDocument::clear()
+void HTMLDocument::write(LocalDOMWindow* callingWindow, const Vector<String>& text, ExceptionState& exceptionState)
+{
+ ASSERT(callingWindow);
+ StringBuilder builder;
+ for (const String& string : text)
+ builder.append(string);
+ write(builder.toString(), callingWindow->document(), exceptionState);
+}
+
+void HTMLDocument::writeln(LocalDOMWindow* callingWindow, const Vector<String>& text, ExceptionState& exceptionState)
{
- // FIXME: This does nothing, and that seems unlikely to be correct.
- // We've long had a comment saying that IE doesn't support this.
- // But I do see it in the documentation for Mozilla.
+ ASSERT(callingWindow);
+ StringBuilder builder;
+ for (const String& string : text)
+ builder.append(string);
+ writeln(builder.toString(), callingWindow->document(), exceptionState);
}
}