Changeset 66653 in webkit
- Timestamp:
- Sep 2, 2010 3:05:36 AM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r66652 r66653 1 2010-09-02 Eric Seidel <eric@webkit.org> 2 3 Reviewed by Dimitri Glazkov. 4 5 Share more code between HTMLObjectElement and HTMLEmbedElement 6 https://bugs.webkit.org/show_bug.cgi?id=45054 7 8 This pushes more of HTMLObjectElement code down into 9 HTMLPlugInImageElement so that it can be shared with HTMLEmbedElement. 10 11 I also moved a little code from HTMLPluginElement to HTMLPlugInImageElement 12 since HTMLAppletElement does not need to share this same widget update logic. 13 This is a small correction from the previous change. 14 15 This patch was originally written in one piece and reviewed by Dimitri. 16 I'm landing it as three separate changes for easier readability and less 17 chance of regression. 18 19 No functional change, thus no tests. 20 21 * html/HTMLEmbedElement.cpp: 22 * html/HTMLEmbedElement.h: 23 * html/HTMLObjectElement.cpp: 24 (WebCore::HTMLObjectElement::attach): 25 (WebCore::HTMLObjectElement::finishParsingChildren): 26 (WebCore::HTMLObjectElement::detach): 27 (WebCore::HTMLObjectElement::recalcStyle): 28 (WebCore::HTMLObjectElement::childrenChanged): 29 (WebCore::HTMLObjectElement::renderFallbackContent): 30 * html/HTMLObjectElement.h: 31 (WebCore::HTMLObjectElement::useFallbackContent): 32 * html/HTMLPlugInElement.cpp: 33 * html/HTMLPlugInElement.h: 34 * html/HTMLPlugInImageElement.cpp: 35 (WebCore::HTMLPlugInImageElement::createRenderer): 36 (WebCore::HTMLPlugInImageElement::updateWidget): 37 (WebCore::HTMLPlugInImageElement::updateWidgetCallback): 38 * html/HTMLPlugInImageElement.h: 39 (WebCore::HTMLPlugInImageElement::canLazyAttach): 40 (WebCore::HTMLPlugInImageElement::useFallbackContent): 41 1 42 2010-09-02 Jer Noble <jer.noble@apple.com> 2 43 -
trunk/WebCore/html/HTMLEmbedElement.cpp
r66650 r66653 152 152 } 153 153 154 RenderObject* HTMLEmbedElement::createRenderer(RenderArena* arena, RenderStyle*)155 {156 if (isImageType()) {157 RenderImage* image = new (arena) RenderImage(this);158 image->setImageResource(RenderImageResource::create());159 return image;160 }161 return new (arena) RenderEmbeddedObject(this);162 }163 164 154 void HTMLEmbedElement::attach() 165 155 { … … 181 171 toRenderImage(renderer())->imageResource()->setCachedImage(m_imageLoader->image()); 182 172 } 183 }184 185 void HTMLEmbedElement::updateWidget()186 {187 document()->updateStyleIfNeeded();188 if (needsWidgetUpdate() && renderEmbeddedObject() && !isImageType())189 renderEmbeddedObject()->updateWidget(true);190 173 } 191 174 -
trunk/WebCore/html/HTMLEmbedElement.h
r66650 r66653 39 39 40 40 virtual void attach(); 41 virtual bool canLazyAttach() { return false; }42 41 virtual bool rendererIsNeeded(RenderStyle*); 43 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);44 42 virtual void insertedIntoDocument(); 45 43 virtual void removedFromDocument(); … … 48 46 virtual bool isURLAttribute(Attribute*) const; 49 47 virtual const QualifiedName& imageSourceAttributeName() const; 50 51 virtual void updateWidget();52 48 53 49 virtual RenderWidget* renderWidgetForJSBindings() const; -
trunk/WebCore/html/HTMLObjectElement.cpp
r66650 r66653 132 132 } 133 133 134 RenderObject* HTMLObjectElement::createRenderer(RenderArena* arena, RenderStyle* style)135 {136 // Fallback content breaks the DOM->Renderer class relationship of this137 // class and all superclasses because createObject won't necessarily138 // return a RenderEmbeddedObject, RenderPart or even RenderWidget.139 if (m_useFallbackContent)140 return RenderObject::createObject(this, style);141 if (isImageType()) {142 RenderImage* image = new (arena) RenderImage(this);143 image->setImageResource(RenderImageResource::create());144 return image;145 }146 return new (arena) RenderEmbeddedObject(this);147 }148 149 134 void HTMLObjectElement::attach() 150 135 { … … 156 141 HTMLPlugInImageElement::attach(); 157 142 158 if (isImage && renderer() && ! m_useFallbackContent) {143 if (isImage && renderer() && !useFallbackContent()) { 159 144 if (!m_imageLoader) 160 145 m_imageLoader = adoptPtr(new HTMLImageLoader(this)); … … 163 148 } 164 149 165 void HTMLObjectElement::updateWidget()166 {167 document()->updateStyleIfNeeded();168 if (needsWidgetUpdate() && renderEmbeddedObject() && !m_useFallbackContent && !isImageType())169 renderEmbeddedObject()->updateWidget(true);170 }171 172 150 void HTMLObjectElement::finishParsingChildren() 173 151 { 174 152 HTMLPlugInImageElement::finishParsingChildren(); 175 if (! m_useFallbackContent) {153 if (!useFallbackContent()) { 176 154 setNeedsWidgetUpdate(true); 177 155 if (inDocument()) … … 182 160 void HTMLObjectElement::detach() 183 161 { 184 if (attached() && renderer() && ! m_useFallbackContent)162 if (attached() && renderer() && !useFallbackContent()) 185 163 // Update the widget the next time we attach (detaching destroys the plugin). 186 164 setNeedsWidgetUpdate(true); … … 212 190 void HTMLObjectElement::recalcStyle(StyleChange ch) 213 191 { 214 if (! m_useFallbackContent&& needsWidgetUpdate() && renderer() && !isImageType()) {192 if (!useFallbackContent() && needsWidgetUpdate() && renderer() && !isImageType()) { 215 193 detach(); 216 194 attach(); … … 222 200 { 223 201 updateDocNamedItem(); 224 if (inDocument() && ! m_useFallbackContent) {202 if (inDocument() && !useFallbackContent()) { 225 203 setNeedsWidgetUpdate(true); 226 204 setNeedsStyleRecalc(); … … 241 219 void HTMLObjectElement::renderFallbackContent() 242 220 { 243 if ( m_useFallbackContent)221 if (useFallbackContent()) 244 222 return; 245 223 -
trunk/WebCore/html/HTMLObjectElement.h
r66650 r66653 40 40 bool containsJavaApplet() const; 41 41 42 bool useFallbackContent() const { return m_useFallbackContent; }42 virtual bool useFallbackContent() const { return m_useFallbackContent; } 43 43 44 44 private: … … 48 48 49 49 virtual void attach(); 50 virtual bool canLazyAttach() { return false; }51 50 virtual bool rendererIsNeeded(RenderStyle*); 52 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);53 51 virtual void finishParsingChildren(); 54 52 virtual void detach(); … … 61 59 virtual bool isURLAttribute(Attribute*) const; 62 60 virtual const QualifiedName& imageSourceAttributeName() const; 63 64 virtual void updateWidget();65 61 66 62 virtual RenderWidget* renderWidgetForJSBindings() const; -
trunk/WebCore/html/HTMLPlugInElement.cpp
r66650 r66653 178 178 #endif /* ENABLE(NETSCAPE_PLUGIN_API) */ 179 179 180 void HTMLPlugInElement::updateWidgetCallback(Node* n)181 {182 static_cast<HTMLPlugInElement*>(n)->updateWidget();183 180 } 184 185 } -
trunk/WebCore/html/HTMLPlugInElement.h
r66650 r66653 57 57 virtual void detach(); 58 58 59 static void updateWidgetCallback(Node*);60 61 59 virtual bool mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const; 62 60 virtual void parseMappedAttribute(Attribute*); … … 66 64 67 65 virtual RenderWidget* renderWidgetForJSBindings() const = 0; 68 69 virtual void updateWidget() { }70 66 71 67 protected: -
trunk/WebCore/html/HTMLPlugInImageElement.cpp
r66650 r66653 28 28 #include "Image.h" 29 29 #include "RenderEmbeddedObject.h" 30 #include "RenderImage.h" 30 31 31 32 namespace WebCore { … … 59 60 } 60 61 62 RenderObject* HTMLPlugInImageElement::createRenderer(RenderArena* arena, RenderStyle* style) 63 { 64 // Fallback content breaks the DOM->Renderer class relationship of this 65 // class and all superclasses because createObject won't necessarily 66 // return a RenderEmbeddedObject, RenderPart or even RenderWidget. 67 if (useFallbackContent()) 68 return RenderObject::createObject(this, style); 69 if (isImageType()) { 70 RenderImage* image = new (arena) RenderImage(this); 71 image->setImageResource(RenderImageResource::create()); 72 return image; 73 } 74 return new (arena) RenderEmbeddedObject(this); 75 } 76 77 void HTMLPlugInImageElement::updateWidget() 78 { 79 document()->updateStyleIfNeeded(); 80 if (needsWidgetUpdate() && renderEmbeddedObject() && !useFallbackContent() && !isImageType()) 81 renderEmbeddedObject()->updateWidget(true); 82 } 83 61 84 void HTMLPlugInImageElement::willMoveToNewOwnerDocument() 62 85 { … … 66 89 } 67 90 91 void HTMLPlugInImageElement::updateWidgetCallback(Node* n) 92 { 93 static_cast<HTMLPlugInImageElement*>(n)->updateWidget(); 94 } 95 68 96 } // namespace WebCore -
trunk/WebCore/html/HTMLPlugInImageElement.h
r66650 r66653 45 45 bool isImageType(); 46 46 47 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*); 48 49 static void updateWidgetCallback(Node*); 50 47 51 OwnPtr<HTMLImageLoader> m_imageLoader; 48 52 String m_serviceType; … … 50 54 51 55 private: 56 virtual bool canLazyAttach() { return false; } 57 52 58 virtual void willMoveToNewOwnerDocument(); 53 59 60 void updateWidget(); 61 virtual bool useFallbackContent() const { return false; } 62 54 63 bool m_needsWidgetUpdate; 55 64 };
Note: See TracChangeset
for help on using the changeset viewer.