summaryrefslogtreecommitdiffstats
path: root/WebCore/html/HTMLObjectElement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/html/HTMLObjectElement.cpp')
-rw-r--r--WebCore/html/HTMLObjectElement.cpp446
1 files changed, 0 insertions, 446 deletions
diff --git a/WebCore/html/HTMLObjectElement.cpp b/WebCore/html/HTMLObjectElement.cpp
deleted file mode 100644
index 940d0b4..0000000
--- a/WebCore/html/HTMLObjectElement.cpp
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
- * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
- * (C) 1999 Antti Koivisto (koivisto@kde.org)
- * (C) 2000 Stefan Schimanski (1Stein@gmx.de)
- * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-#include "HTMLObjectElement.h"
-
-#include "CSSHelper.h"
-#include "EventNames.h"
-#include "ExceptionCode.h"
-#include "Frame.h"
-#include "HTMLDocument.h"
-#include "HTMLFormElement.h"
-#include "HTMLImageLoader.h"
-#include "HTMLNames.h"
-#include "MIMETypeRegistry.h"
-#include "RenderImage.h"
-#include "RenderPartObject.h"
-#include "RenderWidget.h"
-#include "ScriptController.h"
-#include "Text.h"
-
-
-namespace WebCore {
-
-using namespace HTMLNames;
-
-HTMLObjectElement::HTMLObjectElement(Document* doc, bool createdByParser)
- : HTMLPlugInImageElement(objectTag, doc)
- , m_docNamedItem(true)
- , m_needWidgetUpdate(!createdByParser)
- , m_useFallbackContent(false)
-{
-}
-
-HTMLObjectElement::~HTMLObjectElement()
-{
-}
-
-RenderWidget* HTMLObjectElement::renderWidgetForJSBindings() const
-{
- RenderWidget* renderWidget = (renderer() && renderer()->isWidget()) ? static_cast<RenderWidget*>(renderer()) : 0;
- if (renderWidget && !renderWidget->widget()) {
- document()->updateLayoutIgnorePendingStylesheets();
- renderWidget = (renderer() && renderer()->isWidget()) ? static_cast<RenderWidget*>(renderer()) : 0;
- }
- return renderWidget;
-}
-
-void HTMLObjectElement::parseMappedAttribute(MappedAttribute *attr)
-{
- String val = attr->value();
- int pos;
- if (attr->name() == typeAttr) {
- m_serviceType = val.lower();
- pos = m_serviceType.find(";");
- if (pos != -1)
- m_serviceType = m_serviceType.left(pos);
- if (renderer())
- m_needWidgetUpdate = true;
- if (!isImageType() && m_imageLoader)
- m_imageLoader.clear();
- } else if (attr->name() == dataAttr) {
- m_url = parseURL(val);
- if (renderer())
- m_needWidgetUpdate = true;
- if (renderer() && isImageType()) {
- if (!m_imageLoader)
- m_imageLoader.set(new HTMLImageLoader(this));
- m_imageLoader->updateFromElement();
- }
- } else if (attr->name() == classidAttr) {
- m_classId = val;
- if (renderer())
- m_needWidgetUpdate = true;
- } else if (attr->name() == onloadAttr) {
- setInlineEventListenerForTypeAndAttribute(eventNames().loadEvent, attr);
- } else if (attr->name() == nameAttr) {
- const AtomicString& newName = attr->value();
- if (isDocNamedItem() && inDocument() && document()->isHTMLDocument()) {
- HTMLDocument* document = static_cast<HTMLDocument*>(this->document());
- document->removeNamedItem(m_name);
- document->addNamedItem(newName);
- }
- m_name = newName;
- } else if (attr->name() == idAttr) {
- const AtomicString& newId = attr->value();
- if (isDocNamedItem() && inDocument() && document()->isHTMLDocument()) {
- HTMLDocument* document = static_cast<HTMLDocument*>(this->document());
- document->removeExtraNamedItem(m_id);
- document->addExtraNamedItem(newId);
- }
- m_id = newId;
- // also call superclass
- HTMLPlugInElement::parseMappedAttribute(attr);
- } else
- HTMLPlugInElement::parseMappedAttribute(attr);
-}
-
-bool HTMLObjectElement::rendererIsNeeded(RenderStyle* style)
-{
- if (m_useFallbackContent || isImageType())
- return HTMLPlugInElement::rendererIsNeeded(style);
-
- Frame* frame = document()->frame();
- if (!frame)
- return false;
-
- return true;
-}
-
-RenderObject *HTMLObjectElement::createRenderer(RenderArena* arena, RenderStyle* style)
-{
- if (m_useFallbackContent)
- return RenderObject::createObject(this, style);
- if (isImageType())
- return new (arena) RenderImage(this);
- return new (arena) RenderPartObject(this);
-}
-
-void HTMLObjectElement::attach()
-{
- bool isImage = isImageType();
-
- if (!isImage)
- queuePostAttachCallback(&HTMLPlugInElement::updateWidgetCallback, this);
-
- HTMLPlugInElement::attach();
-
- if (isImage && renderer() && !m_useFallbackContent) {
- if (!m_imageLoader)
- m_imageLoader.set(new HTMLImageLoader(this));
- m_imageLoader->updateFromElement();
- // updateForElement() may have changed us to use fallback content and called detach() and attach().
- if (m_useFallbackContent)
- return;
-
- if (renderer())
- static_cast<RenderImage*>(renderer())->setCachedImage(m_imageLoader->image());
- }
-}
-
-void HTMLObjectElement::updateWidget()
-{
- document()->updateRendering();
- if (m_needWidgetUpdate && renderer() && !m_useFallbackContent && !isImageType())
- static_cast<RenderPartObject*>(renderer())->updateWidget(true);
-}
-
-void HTMLObjectElement::finishParsingChildren()
-{
- HTMLPlugInElement::finishParsingChildren();
- if (!m_useFallbackContent) {
- m_needWidgetUpdate = true;
- if (inDocument())
- setChanged();
- }
-}
-
-void HTMLObjectElement::detach()
-{
- if (attached() && renderer() && !m_useFallbackContent)
- // Update the widget the next time we attach (detaching destroys the plugin).
- m_needWidgetUpdate = true;
- HTMLPlugInElement::detach();
-}
-
-void HTMLObjectElement::insertedIntoDocument()
-{
- if (isDocNamedItem() && document()->isHTMLDocument()) {
- HTMLDocument* document = static_cast<HTMLDocument*>(this->document());
- document->addNamedItem(m_name);
- document->addExtraNamedItem(m_id);
- }
-
- HTMLPlugInElement::insertedIntoDocument();
-}
-
-void HTMLObjectElement::removedFromDocument()
-{
- if (isDocNamedItem() && document()->isHTMLDocument()) {
- HTMLDocument* document = static_cast<HTMLDocument*>(this->document());
- document->removeNamedItem(m_name);
- document->removeExtraNamedItem(m_id);
- }
-
- HTMLPlugInElement::removedFromDocument();
-}
-
-void HTMLObjectElement::recalcStyle(StyleChange ch)
-{
- if (!m_useFallbackContent && m_needWidgetUpdate && renderer() && !isImageType()) {
- detach();
- attach();
- }
- HTMLPlugInElement::recalcStyle(ch);
-}
-
-void HTMLObjectElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
-{
- updateDocNamedItem();
- if (inDocument() && !m_useFallbackContent) {
- m_needWidgetUpdate = true;
- setChanged();
- }
- HTMLPlugInElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
-}
-
-bool HTMLObjectElement::isURLAttribute(Attribute *attr) const
-{
- return (attr->name() == dataAttr || (attr->name() == usemapAttr && attr->value().string()[0] != '#'));
-}
-
-const QualifiedName& HTMLObjectElement::imageSourceAttributeName() const
-{
- return dataAttr;
-}
-
-void HTMLObjectElement::renderFallbackContent()
-{
- if (m_useFallbackContent)
- return;
-
- // Before we give up and use fallback content, check to see if this is a MIME type issue.
- if (m_imageLoader && m_imageLoader->image()) {
- m_serviceType = m_imageLoader->image()->response().mimeType();
- if (!isImageType()) {
- // If we don't think we have an image type anymore, then ditch the image loader.
- m_imageLoader.clear();
- detach();
- attach();
- return;
- }
- }
-
- // Mark ourselves as using the fallback content.
- m_useFallbackContent = true;
-
- // Now do a detach and reattach.
- // FIXME: Style gets recalculated which is suboptimal.
- detach();
- attach();
-}
-
-void HTMLObjectElement::updateDocNamedItem()
-{
- // The rule is "<object> elements with no children other than
- // <param> elements, unknown elements and whitespace can be
- // found by name in a document, and other <object> elements cannot."
- bool wasNamedItem = m_docNamedItem;
- bool isNamedItem = true;
- Node* child = firstChild();
- while (child && isNamedItem) {
- if (child->isElementNode()) {
- Element* element = static_cast<Element*>(child);
- if (HTMLElement::isRecognizedTagName(element->tagQName()) && !element->hasTagName(paramTag))
- isNamedItem = false;
- } else if (child->isTextNode()) {
- if (!static_cast<Text*>(child)->containsOnlyWhitespace())
- isNamedItem = false;
- } else
- isNamedItem = false;
- child = child->nextSibling();
- }
- if (isNamedItem != wasNamedItem && document()->isHTMLDocument()) {
- HTMLDocument* document = static_cast<HTMLDocument*>(this->document());
- if (isNamedItem) {
- document->addNamedItem(m_name);
- document->addExtraNamedItem(m_id);
- } else {
- document->removeNamedItem(m_name);
- document->removeExtraNamedItem(m_id);
- }
- }
- m_docNamedItem = isNamedItem;
-}
-
-String HTMLObjectElement::code() const
-{
- return getAttribute(codeAttr);
-}
-
-void HTMLObjectElement::setCode(const String& value)
-{
- setAttribute(codeAttr, value);
-}
-
-String HTMLObjectElement::archive() const
-{
- return getAttribute(archiveAttr);
-}
-
-void HTMLObjectElement::setArchive(const String& value)
-{
- setAttribute(archiveAttr, value);
-}
-
-String HTMLObjectElement::border() const
-{
- return getAttribute(borderAttr);
-}
-
-void HTMLObjectElement::setBorder(const String& value)
-{
- setAttribute(borderAttr, value);
-}
-
-String HTMLObjectElement::codeBase() const
-{
- return getAttribute(codebaseAttr);
-}
-
-void HTMLObjectElement::setCodeBase(const String& value)
-{
- setAttribute(codebaseAttr, value);
-}
-
-String HTMLObjectElement::codeType() const
-{
- return getAttribute(codetypeAttr);
-}
-
-void HTMLObjectElement::setCodeType(const String& value)
-{
- setAttribute(codetypeAttr, value);
-}
-
-KURL HTMLObjectElement::data() const
-{
- return document()->completeURL(getAttribute(dataAttr));
-}
-
-void HTMLObjectElement::setData(const String& value)
-{
- setAttribute(dataAttr, value);
-}
-
-bool HTMLObjectElement::declare() const
-{
- return !getAttribute(declareAttr).isNull();
-}
-
-void HTMLObjectElement::setDeclare(bool declare)
-{
- setAttribute(declareAttr, declare ? "" : 0);
-}
-
-int HTMLObjectElement::hspace() const
-{
- return getAttribute(hspaceAttr).toInt();
-}
-
-void HTMLObjectElement::setHspace(int value)
-{
- setAttribute(hspaceAttr, String::number(value));
-}
-
-String HTMLObjectElement::standby() const
-{
- return getAttribute(standbyAttr);
-}
-
-void HTMLObjectElement::setStandby(const String& value)
-{
- setAttribute(standbyAttr, value);
-}
-
-String HTMLObjectElement::type() const
-{
- return getAttribute(typeAttr);
-}
-
-void HTMLObjectElement::setType(const String& value)
-{
- setAttribute(typeAttr, value);
-}
-
-String HTMLObjectElement::useMap() const
-{
- return getAttribute(usemapAttr);
-}
-
-void HTMLObjectElement::setUseMap(const String& value)
-{
- setAttribute(usemapAttr, value);
-}
-
-int HTMLObjectElement::vspace() const
-{
- return getAttribute(vspaceAttr).toInt();
-}
-
-void HTMLObjectElement::setVspace(int value)
-{
- setAttribute(vspaceAttr, String::number(value));
-}
-
-bool HTMLObjectElement::containsJavaApplet() const
-{
- if (MIMETypeRegistry::isJavaAppletMIMEType(type()))
- return true;
-
- Node* child = firstChild();
- while (child) {
- if (child->isElementNode()) {
- Element* e = static_cast<Element*>(child);
- if (e->hasTagName(paramTag) && equalIgnoringCase(e->getAttribute(nameAttr), "type") && MIMETypeRegistry::isJavaAppletMIMEType(e->getAttribute(valueAttr).string()))
- return true;
- else if (e->hasTagName(objectTag) && static_cast<HTMLObjectElement*>(e)->containsJavaApplet())
- return true;
- else if (e->hasTagName(appletTag))
- return true;
- }
- child = child->nextSibling();
- }
-
- return false;
-}
-
-void HTMLObjectElement::getSubresourceAttributeStrings(Vector<String>& urls) const
-{
- urls.append(data().string());
- if (useMap().startsWith("#"))
- urls.append(useMap());
-}
-
-}