18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (C) 1999 Antti Koivisto (koivisto@kde.org) 4231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Copyright (C) 2004, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef HTMLObjectElement_h 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define HTMLObjectElement_h 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 26f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "FormAssociatedElement.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "HTMLPlugInImageElement.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 31f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochclass HTMLFormElement; 32f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 33f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochclass HTMLObjectElement : public HTMLPlugInImageElement, public FormAssociatedElement { 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 35f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch static PassRefPtr<HTMLObjectElement> create(const QualifiedName&, Document*, HTMLFormElement*, bool createdByParser); 36f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual ~HTMLObjectElement(); 37231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 38231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block bool isDocNamedItem() const { return m_docNamedItem; } 39231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 40231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block const String& classId() const { return m_classId; } 41231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 42231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block bool containsJavaApplet() const; 43231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 445ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen virtual bool useFallbackContent() const { return m_useFallbackContent; } 455abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick void renderFallbackContent(); 465ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 47f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch // Implementations of FormAssociatedElement 48f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch HTMLFormElement* form() const { return FormAssociatedElement::form(); } 49f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 50f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual bool isFormControlElement() const { return false; } 51f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 52f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual bool isEnumeratable() const { return true; } 53f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual bool appendFormData(FormDataList&, bool); 54f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 55f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch // Implementations of constraint validation API. 56f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch // Note that the object elements are always barred from constraint validation. 57f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch String validationMessage() { return String(); } 58f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch bool checkValidity() { return true; } 59f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void setCustomValidity(const String&) { } 60f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 61f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual void attributeChanged(Attribute*, bool preserveDecls = false); 62f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 63f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch using TreeShared<ContainerNode>::ref; 64f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch using TreeShared<ContainerNode>::deref; 65f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 66231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockprivate: 67f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch HTMLObjectElement(const QualifiedName&, Document*, HTMLFormElement*, bool createdByParser); 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 69e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block virtual void parseMappedAttribute(Attribute*); 70f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual void insertedIntoTree(bool deep); 71f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual void removedFromTree(bool deep); 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool rendererIsNeeded(RenderStyle*); 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void insertedIntoDocument(); 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void removedFromDocument(); 7665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void willMoveToNewOwnerDocument(); 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0); 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool isURLAttribute(Attribute*) const; 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual const QualifiedName& imageSourceAttributeName() const; 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual RenderWidget* renderWidgetForJSBindings() const; 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 85635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void addSubresourceAttributeURLs(ListHashSet<KURL>&) const; 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 872fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void updateWidget(PluginCreationOption); 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void updateDocNamedItem(); 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 905abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick bool hasFallbackContent() const; 915abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 925abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick // FIXME: This function should not deal with url or serviceType 935abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick // so that we can better share code between <object> and <embed>. 945abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick void parametersForPlugin(Vector<String>& paramNames, Vector<String>& paramValues, String& url, String& serviceType); 95e14391e94c850b8bd03680c23b38978db68687a8John Reck 96e14391e94c850b8bd03680c23b38978db68687a8John Reck bool hasValidClassId(); 975abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 98f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual void refFormAssociatedElement() { ref(); } 99f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual void derefFormAssociatedElement() { deref(); } 1002fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual HTMLFormElement* virtualForm() const; 101f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 102f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual const AtomicString& formControlName() const; 103f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AtomicString m_id; 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String m_classId; 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_docNamedItem : 1; 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_useFallbackContent : 1; 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 113