WebCore:
authoradele <adele@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 6 Nov 2007 19:53:18 +0000 (19:53 +0000)
committeradele <adele@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 6 Nov 2007 19:53:18 +0000 (19:53 +0000)
        Reviewed by Darin.

        Switched all uses of HTMLImageLoader to use OwnPtrs.

        * html/HTMLInputElement.h:
        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::init):
        (WebCore::HTMLInputElement::~HTMLInputElement):
        (WebCore::HTMLInputElement::setInputType):
        (WebCore::HTMLInputElement::parseMappedAttribute):
        (WebCore::HTMLInputElement::attach):
        * html/HTMLObjectElement.h:
        * html/HTMLObjectElement.cpp:
        (WebCore::HTMLObjectElement::HTMLObjectElement):
        (WebCore::HTMLObjectElement::~HTMLObjectElement):
        (WebCore::HTMLObjectElement::parseMappedAttribute):
        (WebCore::HTMLObjectElement::attach):
        * html/HTMLVideoElement.h:
        * html/HTMLVideoElement.cpp:
        (WebCore::HTMLVideoElement::HTMLVideoElement):
        (WebCore::HTMLVideoElement::attach):
        (WebCore::HTMLVideoElement::detach):
        (WebCore::HTMLVideoElement::parseMappedAttribute):

LayoutTests:

        Reviewed by Darin.

        Added test for poster attribute.

        * media/content/abe.png: Added.
        * media/content/greenbox.png: Added.
        * media/video-poster-expected.txt: Added.
        * media/video-poster.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@27485 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 files changed:
LayoutTests/ChangeLog
LayoutTests/media/content/abe.png [new file with mode: 0644]
LayoutTests/media/content/greenbox.png [new file with mode: 0644]
LayoutTests/media/video-poster-expected.txt [new file with mode: 0644]
LayoutTests/media/video-poster.html [new file with mode: 0644]
WebCore/ChangeLog
WebCore/html/HTMLInputElement.cpp
WebCore/html/HTMLInputElement.h
WebCore/html/HTMLObjectElement.cpp
WebCore/html/HTMLObjectElement.h
WebCore/html/HTMLVideoElement.cpp
WebCore/html/HTMLVideoElement.h

index b0250a4464f87f8713a34cac979af0de3086e318..00c15f6e22101a8a0c2c3e43edc21fe7886eb555 100644 (file)
@@ -1,3 +1,14 @@
+2007-11-05  Adele Peterson  <adele@apple.com>
+
+        Reviewed by Darin.
+
+        Added test for poster attribute.
+
+        * media/content/abe.png: Added.
+        * media/content/greenbox.png: Added.
+        * media/video-poster-expected.txt: Added.
+        * media/video-poster.html: Added.
+
 2007-11-06  Antti Koivisto  <antti@apple.com>
 
         Reviewed by Darin.
diff --git a/LayoutTests/media/content/abe.png b/LayoutTests/media/content/abe.png
new file mode 100644 (file)
index 0000000..c932536
Binary files /dev/null and b/LayoutTests/media/content/abe.png differ
diff --git a/LayoutTests/media/content/greenbox.png b/LayoutTests/media/content/greenbox.png
new file mode 100644 (file)
index 0000000..6e555e3
Binary files /dev/null and b/LayoutTests/media/content/greenbox.png differ
diff --git a/LayoutTests/media/video-poster-expected.txt b/LayoutTests/media/video-poster-expected.txt
new file mode 100644 (file)
index 0000000..b5d073b
--- /dev/null
@@ -0,0 +1,7 @@
+
+TEST(video.getAttribute('poster') == 'content/greenbox.png') OK
+TEST(relativeURL(video.poster) == 'content/greenbox.png') OK
+TEST(video.getAttribute('poster') == 'content/abe.png') OK
+TEST(relativeURL(video.poster) == 'content/abe.png') OK
+END OF TEST
+
diff --git a/LayoutTests/media/video-poster.html b/LayoutTests/media/video-poster.html
new file mode 100644 (file)
index 0000000..8b46861
--- /dev/null
@@ -0,0 +1,10 @@
+<video poster="content/greenbox.png"></video>
+<script src=video-test.js></script>
+<script>
+test("video.getAttribute('poster') == 'content/greenbox.png'");
+test("relativeURL(video.poster) == 'content/greenbox.png'");
+video.setAttribute('poster', 'content/abe.png');
+test("video.getAttribute('poster') == 'content/abe.png'");
+test("relativeURL(video.poster) == 'content/abe.png'");
+endTest();
+</script>
index 070ce7a06aae16fd148b80d9680bc77771a26c0e..1d52892fc3ab98b4be7966924397e545fb42632f 100644 (file)
@@ -1,3 +1,29 @@
+2007-11-06  Adele Peterson  <adele@apple.com>
+
+        Reviewed by Darin.
+
+        Switched all uses of HTMLImageLoader to use OwnPtrs.
+
+        * html/HTMLInputElement.h:
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::init):
+        (WebCore::HTMLInputElement::~HTMLInputElement):
+        (WebCore::HTMLInputElement::setInputType):
+        (WebCore::HTMLInputElement::parseMappedAttribute):
+        (WebCore::HTMLInputElement::attach):
+        * html/HTMLObjectElement.h:
+        * html/HTMLObjectElement.cpp:
+        (WebCore::HTMLObjectElement::HTMLObjectElement):
+        (WebCore::HTMLObjectElement::~HTMLObjectElement):
+        (WebCore::HTMLObjectElement::parseMappedAttribute):
+        (WebCore::HTMLObjectElement::attach):
+        * html/HTMLVideoElement.h:
+        * html/HTMLVideoElement.cpp:
+        (WebCore::HTMLVideoElement::HTMLVideoElement):
+        (WebCore::HTMLVideoElement::attach):
+        (WebCore::HTMLVideoElement::detach):
+        (WebCore::HTMLVideoElement::parseMappedAttribute):
+
 2007-11-06  Antti Koivisto  <antti@apple.com>
 
         Reviewed by Darin.
index dca77aa1a02c10cbe511c767df219e7546c6d802..9620b13e823c7a3692a425bcdddfa88e50d400b6 100644 (file)
@@ -111,7 +111,6 @@ HTMLInputElement::HTMLInputElement(const QualifiedName& tagName, Document* doc,
 
 void HTMLInputElement::init()
 {
-    m_imageLoader = 0;
     m_type = TEXT;
     m_maxLen = cMaxLen;
     m_size = 20;
@@ -145,8 +144,6 @@ HTMLInputElement::~HTMLInputElement()
 
     document()->checkedRadioButtons().removeButton(this);
 
-    delete m_imageLoader;
-
     // Need to remove this from the form while it is still an HTMLInputElement,
     // so can't wait for the base class's destructor to do it.
     removeFromForm();
@@ -345,10 +342,8 @@ void HTMLInputElement::setInputType(const String& t)
     }
     m_haveType = true;
 
-    if (inputType() != IMAGE && m_imageLoader) {
-        delete m_imageLoader;
-        m_imageLoader = 0;
-    }
+    if (inputType() != IMAGE && m_imageLoader)
+        m_imageLoader.clear();
 }
 
 const AtomicString& HTMLInputElement::type() const
@@ -615,7 +610,7 @@ void HTMLInputElement::parseMappedAttribute(MappedAttribute *attr)
     } else if (attr->name() == srcAttr) {
         if (renderer() && inputType() == IMAGE) {
             if (!m_imageLoader)
-                m_imageLoader = new HTMLImageLoader(this);
+                m_imageLoader.set(new HTMLImageLoader(this));
             m_imageLoader->updateFromElement();
         }
     } else if (attr->name() == usemapAttr ||
@@ -735,7 +730,7 @@ void HTMLInputElement::attach()
 
     if (inputType() == IMAGE) {
         if (!m_imageLoader)
-            m_imageLoader = new HTMLImageLoader(this);
+            m_imageLoader.set(new HTMLImageLoader(this));
         m_imageLoader->updateFromElement();
         if (renderer()) {
             RenderImage* imageObj = static_cast<RenderImage*>(renderer());
index a5d0371d51930ff4c3de81be9b9172772e976336..694adf54b2c1539a088b52672a5edcb3094392f7 100644 (file)
@@ -25,6 +25,7 @@
 #define HTMLInputElement_h
 
 #include "HTMLGenericFormElement.h"
+#include <wtf/OwnPtr.h>
 
 namespace WebCore {
 
@@ -205,7 +206,7 @@ private:
 
     short m_maxResults;
 
-    HTMLImageLoader* m_imageLoader;
+    OwnPtr<HTMLImageLoader> m_imageLoader;
 
     unsigned m_type : 4; // InputType 
     bool m_checked : 1;
index d0d05929dca00cf2d2f65244b142c3bd23c2edfd..d446389d0de4f2f04d05ac9a8120a83221d2956b 100644 (file)
@@ -55,7 +55,6 @@ HTMLObjectElement::HTMLObjectElement(Document* doc)
     : HTMLPlugInElement(objectTag, doc)
     , m_needWidgetUpdate(false)
     , m_useFallbackContent(false)
-    , m_imageLoader(0)
     , m_complete(false)
     , m_docNamedItem(true)
 {
@@ -67,8 +66,6 @@ HTMLObjectElement::~HTMLObjectElement()
     // m_instance should have been cleaned up in detach().
     ASSERT(!m_instance);
 #endif
-    
-    delete m_imageLoader;
 }
 
 #if USE(JAVASCRIPTCORE_BINDINGS)
@@ -104,17 +101,15 @@ void HTMLObjectElement::parseMappedAttribute(MappedAttribute *attr)
           m_serviceType = m_serviceType.left(pos);
         if (renderer())
           m_needWidgetUpdate = true;
-        if (!isImageType() && m_imageLoader) {
-          delete m_imageLoader;
-          m_imageLoader = 0;
-        }
+        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 = new HTMLImageLoader(this);
+              m_imageLoader.set(new HTMLImageLoader(this));
           m_imageLoader->updateFromElement();
         }
     } else if (attr->name() == classidAttr) {
@@ -175,7 +170,7 @@ void HTMLObjectElement::attach()
     if (renderer() && !m_useFallbackContent) {
         if (isImageType()) {
             if (!m_imageLoader)
-                m_imageLoader = new HTMLImageLoader(this);
+                m_imageLoader.set(new HTMLImageLoader(this));
             m_imageLoader->updateFromElement();
             if (renderer()) {
                 RenderImage* imageObj = static_cast<RenderImage*>(renderer());
index cb3831399b8fb6970e7ab6d42dc47d253c6f4f7e..909b8a05a763518bf876f90a6685a5d42b50be75 100644 (file)
@@ -24,6 +24,7 @@
 #define HTMLObjectElement_h
 
 #include "HTMLPlugInElement.h"
+#include <wtf/OwnPtr.h>
 
 namespace WebCore {
 
@@ -118,7 +119,7 @@ public:
     String m_classId;
     bool m_needWidgetUpdate : 1;
     bool m_useFallbackContent : 1;
-    HTMLImageLoader* m_imageLoader;
+    OwnPtr<HTMLImageLoader> m_imageLoader;
 
 private:
     void updateDocNamedItem();
index 2e6155ebc7a563616eba0a5cfb0b36be1a977a8e..7aa7a2199e9764d3493b37873cc962ed4140a4ff 100644 (file)
@@ -42,7 +42,6 @@ using namespace HTMLNames;
 
 HTMLVideoElement::HTMLVideoElement(Document* doc)
     : HTMLMediaElement(HTMLNames::videoTag, doc)
-    , m_imageLoader(0)
     , m_shouldShowPosterImage(false)
 {
 }
@@ -65,7 +64,7 @@ void HTMLVideoElement::attach()
     
     if (m_shouldShowPosterImage) {
         if (!m_imageLoader)
-            m_imageLoader = new HTMLImageLoader(this);
+            m_imageLoader.set(new HTMLImageLoader(this));
         m_imageLoader->updateFromElement();
         if (renderer() && renderer()->isImage()) {
             RenderImage* imageRenderer = static_cast<RenderImage*>(renderer());
@@ -80,10 +79,8 @@ void HTMLVideoElement::detach()
     HTMLMediaElement::detach();
     
     if (!m_shouldShowPosterImage)
-        if (m_imageLoader) {
-            delete m_imageLoader;
-            m_imageLoader = 0;
-        }
+        if (m_imageLoader)
+            m_imageLoader.clear();
 }
 
 void HTMLVideoElement::parseMappedAttribute(MappedAttribute *attr)
@@ -94,7 +91,7 @@ void HTMLVideoElement::parseMappedAttribute(MappedAttribute *attr)
         updatePosterImage();
         if (m_shouldShowPosterImage) {
             if (!m_imageLoader)
-                m_imageLoader = new HTMLImageLoader(this);
+                m_imageLoader.set(new HTMLImageLoader(this));
             m_imageLoader->updateFromElement();
         }
     } else if (attrName == widthAttr)
index 574a0f765df8dc25e023484ce5988a6b0ec23199..8d9be2c62df9bd81500f0629cf5505dcb366ee8e 100644 (file)
@@ -29,6 +29,7 @@
 #if ENABLE(VIDEO)
 
 #include "HTMLMediaElement.h"
+#include <wtf/OwnPtr.h>
 
 namespace WebCore {
 
@@ -63,7 +64,7 @@ public:
     void updatePosterImage();
 
 private:
-    HTMLImageLoader* m_imageLoader;
+    OwnPtr<HTMLImageLoader> m_imageLoader;
     bool m_shouldShowPosterImage;
 };