Title: [89526] trunk/Source/WebCore
Revision
89526
Author
[email protected]
Date
2011-06-22 20:55:53 -0700 (Wed, 22 Jun 2011)

Log Message

2011-06-22  Dimitri Glazkov  <[email protected]>

        Reviewed by Kent Tamura.

        Convert FileIconLoaderClient to "smart client" pattern, just like FileChooserClient.
        https://bugs.webkit.org/show_bug.cgi?id=63224

        Refactoring, covered by existing tests.

        * platform/FileIconLoader.cpp:
        (WebCore::FileIconLoaderClient::~FileIconLoaderClient): Changed to discard loader.
        (WebCore::FileIconLoaderClient::newFileIconLoader): Added.
        (WebCore::FileIconLoaderClient::discardLoader): Added.
        * platform/FileIconLoader.h: Updated defs.
        * rendering/RenderFileUploadControl.cpp:
        (WebCore::RenderFileUploadControl::RenderFileUploadControl): Removed initialization of icon loader.
        (WebCore::RenderFileUploadControl::~RenderFileUploadControl): Remove discarding of loader.
        (WebCore::RenderFileUploadControl::requestIcon): Changed to use newFileIconLoader.
        * rendering/RenderFileUploadControl.h: Updated defs.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (89525 => 89526)


--- trunk/Source/WebCore/ChangeLog	2011-06-23 03:49:06 UTC (rev 89525)
+++ trunk/Source/WebCore/ChangeLog	2011-06-23 03:55:53 UTC (rev 89526)
@@ -1,3 +1,23 @@
+2011-06-22  Dimitri Glazkov  <[email protected]>
+
+        Reviewed by Kent Tamura.
+
+        Convert FileIconLoaderClient to "smart client" pattern, just like FileChooserClient.
+        https://bugs.webkit.org/show_bug.cgi?id=63224
+
+        Refactoring, covered by existing tests.
+
+        * platform/FileIconLoader.cpp:
+        (WebCore::FileIconLoaderClient::~FileIconLoaderClient): Changed to discard loader.
+        (WebCore::FileIconLoaderClient::newFileIconLoader): Added.
+        (WebCore::FileIconLoaderClient::discardLoader): Added.
+        * platform/FileIconLoader.h: Updated defs.
+        * rendering/RenderFileUploadControl.cpp:
+        (WebCore::RenderFileUploadControl::RenderFileUploadControl): Removed initialization of icon loader.
+        (WebCore::RenderFileUploadControl::~RenderFileUploadControl): Remove discarding of loader.
+        (WebCore::RenderFileUploadControl::requestIcon): Changed to use newFileIconLoader.
+        * rendering/RenderFileUploadControl.h: Updated defs.
+
 2011-06-22  Yael Aharon  <[email protected]>
 
         Another unreviewed build fix after r89472.

Modified: trunk/Source/WebCore/platform/FileIconLoader.cpp (89525 => 89526)


--- trunk/Source/WebCore/platform/FileIconLoader.cpp	2011-06-23 03:49:06 UTC (rev 89525)
+++ trunk/Source/WebCore/platform/FileIconLoader.cpp	2011-06-23 03:55:53 UTC (rev 89526)
@@ -36,8 +36,23 @@
 
 FileIconLoaderClient::~FileIconLoaderClient()
 {
+    discardLoader();
 }
 
+FileIconLoader* FileIconLoaderClient::newFileIconLoader()
+{
+    discardLoader();
+
+    m_loader = FileIconLoader::create(this);
+    return m_loader.get();
+}
+
+void FileIconLoaderClient::discardLoader()
+{
+    if (m_loader)
+        m_loader->disconnectClient();
+}
+
 PassRefPtr<FileIconLoader> FileIconLoader::create(FileIconLoaderClient* client)
 {
     return adoptRef(new FileIconLoader(client));

Modified: trunk/Source/WebCore/platform/FileIconLoader.h (89525 => 89526)


--- trunk/Source/WebCore/platform/FileIconLoader.h	2011-06-23 03:49:06 UTC (rev 89525)
+++ trunk/Source/WebCore/platform/FileIconLoader.h	2011-06-23 03:55:53 UTC (rev 89526)
@@ -31,17 +31,26 @@
 #ifndef FileIconLoader_h
 #define FileIconLoader_h
 
-#include <wtf/PassRefPtr.h>
+#include <wtf/RefPtr.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
 
+class FileIconLoader;
 class Icon;
 
 class FileIconLoaderClient {
 public:
     virtual void updateRendering(PassRefPtr<Icon>) = 0;
     virtual ~FileIconLoaderClient();
+
+protected:
+    FileIconLoader* newFileIconLoader();
+
+private:
+    void discardLoader();
+
+    RefPtr<FileIconLoader> m_loader;
 };
 
 class FileIconLoader : public RefCounted<FileIconLoader> {

Modified: trunk/Source/WebCore/rendering/RenderFileUploadControl.cpp (89525 => 89526)


--- trunk/Source/WebCore/rendering/RenderFileUploadControl.cpp	2011-06-23 03:49:06 UTC (rev 89525)
+++ trunk/Source/WebCore/rendering/RenderFileUploadControl.cpp	2011-06-23 03:55:53 UTC (rev 89526)
@@ -56,7 +56,6 @@
 
 RenderFileUploadControl::RenderFileUploadControl(HTMLInputElement* input)
     : RenderBlock(input)
-    , m_iconLoader(FileIconLoader::create(this))
 {
     ASSERT(input->files());
     requestIcon(input->files()->filenames());
@@ -64,16 +63,15 @@
 
 RenderFileUploadControl::~RenderFileUploadControl()
 {
-    m_iconLoader->disconnectClient();
 }
 
-void RenderFileUploadControl::requestIcon(const Vector<String>& filenames) const
+void RenderFileUploadControl::requestIcon(const Vector<String>& filenames)
 {
     if (!filenames.size())
         return;
 
     if (Chrome* chrome = this->chrome())
-        chrome->loadIconForFiles(filenames, m_iconLoader.get());
+        chrome->loadIconForFiles(filenames, newFileIconLoader());
 }
 
 void RenderFileUploadControl::filesChosen(const Vector<String>& filenames)

Modified: trunk/Source/WebCore/rendering/RenderFileUploadControl.h (89525 => 89526)


--- trunk/Source/WebCore/rendering/RenderFileUploadControl.h	2011-06-23 03:49:06 UTC (rev 89525)
+++ trunk/Source/WebCore/rendering/RenderFileUploadControl.h	2011-06-23 03:55:53 UTC (rev 89526)
@@ -73,9 +73,8 @@
     virtual VisiblePosition positionForPoint(const IntPoint&);
 
     HTMLInputElement* uploadButton() const;
-    void requestIcon(const Vector<String>&) const;
+    void requestIcon(const Vector<String>&);
 
-    RefPtr<FileIconLoader> m_iconLoader;
     RefPtr<Icon> m_icon;
 };
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to