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