Changeset 89216 in webkit


Ignore:
Timestamp:
Jun 19, 2011 10:00:27 AM (13 years ago)
Author:
Dimitri Glazkov
Message:

2011-06-18 Dimitri Glazkov <Dimitri Glazkov>

Reviewed by Darin Adler.

Separate concerns of loading file icons and choosing files.
https://bugs.webkit.org/show_bug.cgi?id=62931

Loading an icon and choosing files have similar async nature, but completely different
lifetimes: FileChooser should only exist when we are actually attempting to choose a file,
not anytime we need to render an input with a proper icon.

This patch introduces FileIconLoader, a separate abstraction for loading an icon, and removes
any notion of an icon from the FileChooser.

Also, the loaded icon is now stored on the RenderFileUploadControl, which better matches its
purpose.

Refactoring, covered by existing tests.

  • CMakeLists.txt: Added FileIconLoader to build system.
  • GNUmakefile.list.am: Ditto.
  • WebCore.exp.in: Updated.
  • WebCore.gypi: Added FileIconLoader to build system.
  • WebCore.pro: Ditto.
  • WebCore.vcproj/WebCore.vcproj: Ditto.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • loader/EmptyClients.h: Updated. (WebCore::EmptyChromeClient::loadIconForFiles): Renamed function to better reflect what it does.
  • page/Chrome.cpp: (WebCore::Chrome::loadIconForFiles): Ditto.
  • page/Chrome.h: Ditto.
  • page/ChromeClient.h: Ditto.
  • platform/FileChooser.cpp: (WebCore::FileChooser::FileChooser): Removed now-unnecessary bool. (WebCore::FileChooser::create): Removed the tangled web. (WebCore::FileChooser::clear): Removed icon-related code. (WebCore::FileChooser::chooseFiles): Ditto.
  • platform/FileChooser.h:
  • platform/FileIconLoader.cpp: Copied from Source/WebCore/platform/FileChooser.cpp. (WebCore::FileIconLoaderClient::~FileIconLoaderClient): Added. (WebCore::FileIconLoader::create): Added. (WebCore::FileIconLoader::disconnectClient): Added. (WebCore::FileIconLoader::notifyFinished): Added. (WebCore::FileIconLoader::FileIconLoader): Added.
  • platform/FileIconLoader.h: Copied from Source/WebCore/platform/FileChooser.cpp.
  • rendering/RenderFileUploadControl.cpp: (WebCore::RenderFileUploadControl::RenderFileUploadControl): Added new member initializations. (WebCore::RenderFileUploadControl::~RenderFileUploadControl): Added FileIconLoader disconnect.s (WebCore::RenderFileUploadControl::requestIcon): Added a helper. (WebCore::RenderFileUploadControl::valueChanged): Changed to request an icon load. (WebCore::RenderFileUploadControl::updateRendering): Added implementation of FileIconLoaderClient func. (WebCore::RenderFileUploadControl::updateFromElement): Added clearing of icon. (WebCore::RenderFileUploadControl::maxFilenameWidth): Changed to use new member directly. (WebCore::RenderFileUploadControl::paintObject): Ditto. (WebCore::RenderFileUploadControl::fileTextValue): Ditto.
  • rendering/RenderFileUploadControl.h: Updated decls.

2011-06-18 Dimitri Glazkov <Dimitri Glazkov>

Reviewed by Darin Adler.

Separate concerns of loading file icons and choosing files.
https://bugs.webkit.org/show_bug.cgi?id=62931

  • src/ChromeClientImpl.cpp: (WebKit::ChromeClientImpl::loadIconForFiles): Renamed to better reflect the intent.
  • src/ChromeClientImpl.h: Ditto.
  • src/WebIconLoadingCompletionImpl.cpp: (WebKit::WebIconLoadingCompletionImpl::WebIconLoadingCompletionImpl): Changed to use FileIconLoader. (WebKit::WebIconLoadingCompletionImpl::didLoadIcon): Ditto.
  • src/WebIconLoadingCompletionImpl.h: Dito.

2011-06-18 Dimitri Glazkov <Dimitri Glazkov>

Reviewed by Darin Adler.

Separate concerns of loading file icons and choosing files.
https://bugs.webkit.org/show_bug.cgi?id=62931

  • WebCoreSupport/ChromeClientEfl.cpp: (WebCore::ChromeClientEfl::loadIconForFiles): Renamed.
  • WebCoreSupport/ChromeClientEfl.h:

2011-06-18 Dimitri Glazkov <Dimitri Glazkov>

Reviewed by Darin Adler.

Separate concerns of loading file icons and choosing files.
https://bugs.webkit.org/show_bug.cgi?id=62931

  • WebCoreSupport/ChromeClientGtk.cpp: (WebKit::ChromeClient::loadIconForFiles): Renamed.
  • WebCoreSupport/ChromeClientGtk.h:

2011-06-18 Dimitri Glazkov <Dimitri Glazkov>

Reviewed by Darin Adler.

Separate concerns of loading file icons and choosing files.
https://bugs.webkit.org/show_bug.cgi?id=62931

  • WebCoreSupport/ChromeClientHaiku.cpp: (WebCore::ChromeClientHaiku::loadIconForFiles): Renamed.
  • WebCoreSupport/ChromeClientHaiku.h:

2011-06-18 Dimitri Glazkov <Dimitri Glazkov>

Reviewed by Darin Adler.

Separate concerns of loading file icons and choosing files.
https://bugs.webkit.org/show_bug.cgi?id=62931

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm: (WebChromeClient::loadIconForFiles): Renamed.

2011-06-18 Dimitri Glazkov <Dimitri Glazkov>

Reviewed by Darin Adler.

Separate concerns of loading file icons and choosing files.
https://bugs.webkit.org/show_bug.cgi?id=62931

  • WebCoreSupport/ChromeClientQt.cpp: (WebCore::ChromeClientQt::loadIconForFiles): Renamed.
  • WebCoreSupport/ChromeClientQt.h:

2011-06-18 Dimitri Glazkov <Dimitri Glazkov>

Reviewed by Darin Adler.

Separate concerns of loading file icons and choosing files.
https://bugs.webkit.org/show_bug.cgi?id=62931

  • WebCoreSupport/WebChromeClient.cpp: (WebChromeClient::loadIconForFiles): Renamed.
  • WebCoreSupport/WebChromeClient.h:

2011-06-18 Dimitri Glazkov <Dimitri Glazkov>

Reviewed by Darin Adler.

Separate concerns of loading file icons and choosing files.
https://bugs.webkit.org/show_bug.cgi?id=62931

  • WebCoreSupport/ChromeClientWinCE.cpp: (WebKit::ChromeClientWinCE::loadIconForFiles): Renamed.
  • WebCoreSupport/ChromeClientWinCE.h:

2011-06-18 Dimitri Glazkov <Dimitri Glazkov>

Reviewed by Darin Adler.

Separate concerns of loading file icons and choosing files.
https://bugs.webkit.org/show_bug.cgi?id=62931

  • WebKitSupport/ChromeClientWx.cpp: (WebCore::ChromeClientWx::chooseIconForFiles): Renamed.
  • WebKitSupport/ChromeClientWx.h:

2011-06-18 Dimitri Glazkov <Dimitri Glazkov>

Reviewed by Darin Adler.

Separate concerns of loading file icons and choosing files.
https://bugs.webkit.org/show_bug.cgi?id=62931

  • WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::loadIconForFiles): Renamed.
  • WebProcess/WebCoreSupport/WebChromeClient.h:
Location:
trunk/Source
Files:
49 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/CMakeLists.txt

    r89187 r89216  
    10261026    platform/DragImage.cpp
    10271027    platform/FileChooser.cpp
     1028    platform/FileIconLoader.cpp
    10281029    platform/FileSystem.cpp
    10291030    platform/GeolocationService.cpp
  • trunk/Source/WebCore/ChangeLog

    r89214 r89216  
     12011-06-18  Dimitri Glazkov  <dglazkov@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Separate concerns of loading file icons and choosing files.
     6        https://bugs.webkit.org/show_bug.cgi?id=62931
     7
     8        Loading an icon and choosing files have similar async nature, but completely different
     9        lifetimes: FileChooser should only exist when we are actually attempting to choose a file,
     10        not anytime we need to render an input with a proper icon.
     11
     12        This patch introduces FileIconLoader, a separate abstraction for loading an icon, and removes
     13        any notion of an icon from the FileChooser.
     14
     15        Also, the loaded icon is now stored on the RenderFileUploadControl, which better matches its
     16        purpose.
     17
     18        Refactoring, covered by existing tests.
     19
     20        * CMakeLists.txt: Added FileIconLoader to build system.
     21        * GNUmakefile.list.am: Ditto.
     22        * WebCore.exp.in: Updated.
     23        * WebCore.gypi: Added FileIconLoader to build system.
     24        * WebCore.pro: Ditto.
     25        * WebCore.vcproj/WebCore.vcproj: Ditto.
     26        * WebCore.xcodeproj/project.pbxproj: Ditto.
     27        * loader/EmptyClients.h: Updated.
     28        (WebCore::EmptyChromeClient::loadIconForFiles): Renamed function to better reflect what it does.
     29        * page/Chrome.cpp:
     30        (WebCore::Chrome::loadIconForFiles): Ditto.
     31        * page/Chrome.h: Ditto.
     32        * page/ChromeClient.h: Ditto.
     33        * platform/FileChooser.cpp:
     34        (WebCore::FileChooser::FileChooser): Removed now-unnecessary bool.
     35        (WebCore::FileChooser::create): Removed the tangled web.
     36        (WebCore::FileChooser::clear): Removed icon-related code.
     37        (WebCore::FileChooser::chooseFiles): Ditto.
     38        * platform/FileChooser.h:
     39        * platform/FileIconLoader.cpp: Copied from Source/WebCore/platform/FileChooser.cpp.
     40        (WebCore::FileIconLoaderClient::~FileIconLoaderClient): Added.
     41        (WebCore::FileIconLoader::create): Added.
     42        (WebCore::FileIconLoader::disconnectClient): Added.
     43        (WebCore::FileIconLoader::notifyFinished): Added.
     44        (WebCore::FileIconLoader::FileIconLoader): Added.
     45        * platform/FileIconLoader.h: Copied from Source/WebCore/platform/FileChooser.cpp.
     46        * rendering/RenderFileUploadControl.cpp:
     47        (WebCore::RenderFileUploadControl::RenderFileUploadControl): Added new member initializations.
     48        (WebCore::RenderFileUploadControl::~RenderFileUploadControl): Added FileIconLoader disconnect.s
     49        (WebCore::RenderFileUploadControl::requestIcon): Added a helper.
     50        (WebCore::RenderFileUploadControl::valueChanged): Changed to request an icon load.
     51        (WebCore::RenderFileUploadControl::updateRendering): Added implementation of FileIconLoaderClient func.
     52        (WebCore::RenderFileUploadControl::updateFromElement): Added clearing of icon.
     53        (WebCore::RenderFileUploadControl::maxFilenameWidth): Changed to use new member directly.
     54        (WebCore::RenderFileUploadControl::paintObject): Ditto.
     55        (WebCore::RenderFileUploadControl::fileTextValue): Ditto.
     56        * rendering/RenderFileUploadControl.h: Updated decls.
     57
    1582011-06-19  Michael Saboff  <msaboff@apple.com>
    259
  • trunk/Source/WebCore/GNUmakefile.list.am

    r89187 r89216  
    23682368        Source/WebCore/platform/FileChooser.cpp \
    23692369        Source/WebCore/platform/FileChooser.h \
     2370        Source/WebCore/platform/FileIconLoader.cpp \
     2371        Source/WebCore/platform/FileIconLoader.h \
    23702372        Source/WebCore/platform/FileMetadata.h \
    23712373        Source/WebCore/platform/FileStreamClient.h \
  • trunk/Source/WebCore/WebCore.exp.in

    r89079 r89216  
    157157__ZN7WebCore11EditCommand7unapplyEv
    158158__ZN7WebCore11FileChooser10chooseFileERKN3WTF6StringE
    159 __ZN7WebCore11FileChooser10iconLoadedEN3WTF10PassRefPtrINS_4IconEEE
    160159__ZN7WebCore11FileChooser11chooseFilesERKN3WTF6VectorINS1_6StringELm0EEE
    161160__ZN7WebCore11FileChooserD1Ev
     
    347346__ZN7WebCore14DocumentLoaderD2Ev
    348347__ZN7WebCore14DocumentWriter11setEncodingERKN3WTF6StringEb
     348__ZN7WebCore14FileIconLoader14notifyFinishedEN3WTF10PassRefPtrINS_4IconEEE
    349349__ZN7WebCore14FrameSelection10setFocusedEb
    350350__ZN7WebCore14FrameSelection12setSelectionERKNS_16VisibleSelectionEjNS0_19CursorAlignOnScrollENS_15TextGranularityENS_20DirectionalityPolicyE
  • trunk/Source/WebCore/WebCore.gypi

    r89187 r89216  
    36263626            'platform/EventLoop.h',
    36273627            'platform/FileChooser.cpp',
     3628            'platform/FileIconLoader.cpp',
     3629            'platform/FileIconLoader.h',
    36283630            'platform/FileMetadata.h',
    36293631            'platform/FileStream.cpp',
  • trunk/Source/WebCore/WebCore.pro

    r89187 r89216  
    971971    platform/DragImage.cpp \
    972972    platform/FileChooser.cpp \
     973    platform/FileIconLoader.cpp \
    973974    platform/FileStream.cpp \
    974975    platform/FileSystem.cpp \
  • trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj

    r89146 r89216  
    2639126391                        </File>
    2639226392                        <File
     26393                                RelativePath="..\platform\FileIconLoader.cpp"
     26394                                >
     26395                        </File>
     26396                        <File
     26397                                RelativePath="..\platform\FileIconLoader.h"
     26398                                >
     26399                        </File>
     26400                        <File
    2639326401                                RelativePath="..\platform\FileMetadata.h"
    2639426402                                >
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r89187 r89216  
    861861                4138D3351244054800323D33 /* EventContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 4138D3331244054800323D33 /* EventContext.h */; };
    862862                4138D3361244054800323D33 /* EventContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4138D3341244054800323D33 /* EventContext.cpp */; };
     863                414B867313AD074E00B4B373 /* FileIconLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 414B867113AD074E00B4B373 /* FileIconLoader.cpp */; };
     864                414B867413AD074E00B4B373 /* FileIconLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 414B867213AD074E00B4B373 /* FileIconLoader.h */; settings = {ATTRIBUTES = (Private, ); }; };
    863865                4150F9F112B6E0E70008C860 /* SliderThumbElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4150F9EF12B6E0E70008C860 /* SliderThumbElement.h */; };
    864866                4150F9F212B6E0E70008C860 /* SliderThumbElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4150F9F012B6E0E70008C860 /* SliderThumbElement.cpp */; };
     
    72887290                4138D3331244054800323D33 /* EventContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventContext.h; sourceTree = "<group>"; };
    72897291                4138D3341244054800323D33 /* EventContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventContext.cpp; sourceTree = "<group>"; };
     7292                414B867113AD074E00B4B373 /* FileIconLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileIconLoader.cpp; sourceTree = "<group>"; };
     7293                414B867213AD074E00B4B373 /* FileIconLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileIconLoader.h; sourceTree = "<group>"; };
    72907294                4150F9EF12B6E0E70008C860 /* SliderThumbElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SliderThumbElement.h; sourceTree = "<group>"; };
    72917295                4150F9F012B6E0E70008C860 /* SliderThumbElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SliderThumbElement.cpp; sourceTree = "<group>"; };
     
    1876218766                                934FE9E40B5CA539003E4A73 /* FileChooser.cpp */,
    1876318767                                066C772A0AB603B700238CC4 /* FileChooser.h */,
     18768                                414B867113AD074E00B4B373 /* FileIconLoader.cpp */,
     18769                                414B867213AD074E00B4B373 /* FileIconLoader.h */,
    1876418770                                2EF1BFE8121C9F4200C27627 /* FileStream.cpp */,
    1876518771                                2EF1BFE9121C9F4200C27627 /* FileStream.h */,
     
    2106021066                                976D6C83122B8A3D001FD1F7 /* FileError.h in Headers */,
    2106121067                                2EDF369F122C94C8002F7D4E /* FileException.h in Headers */,
     21068                                414B867413AD074E00B4B373 /* FileIconLoader.h in Headers */,
    2106221069                                F55B3DBE1251F12D003EF269 /* FileInputType.h in Headers */,
    2106321070                                976D6C86122B8A3D001FD1F7 /* FileList.h in Headers */,
     
    2397223979                                89878561122CA064003AABDA /* FileEntry.cpp in Sources */,
    2397323980                                893C480E1248BD3A002B3D86 /* FileEntrySync.cpp in Sources */,
     23981                                414B867313AD074E00B4B373 /* FileIconLoader.cpp in Sources */,
    2397423982                                F55B3DBD1251F12D003EF269 /* FileInputType.cpp in Sources */,
    2397523983                                976D6C85122B8A3D001FD1F7 /* FileList.cpp in Sources */,
  • trunk/Source/WebCore/loader/EmptyClients.h

    r88628 r89216  
    198198
    199199    virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>) { }
    200     virtual void chooseIconForFiles(const Vector<String>&, FileChooser*) { }
     200    virtual void loadIconForFiles(const Vector<String>&, FileIconLoader*) { }
    201201
    202202    virtual void formStateDidChange(const Node*) { }
  • trunk/Source/WebCore/page/Chrome.cpp

    r87521 r89216  
    2525#include "DNS.h"
    2626#include "Document.h"
     27#include "FileIconLoader.h"
    2728#include "FileChooser.h"
    2829#include "FileList.h"
     
    3536#include "HTMLNames.h"
    3637#include "HitTestResult.h"
     38#include "Icon.h"
    3739#include "InspectorInstrumentation.h"
    3840#include "Page.h"
     
    463465}
    464466
    465 void Chrome::chooseIconForFiles(const Vector<String>& filenames, FileChooser* fileChooser)
    466 {
    467     m_client->chooseIconForFiles(filenames, fileChooser);
     467void Chrome::loadIconForFiles(const Vector<String>& filenames, FileIconLoader* loader)
     468{
     469    m_client->loadIconForFiles(filenames, loader);
    468470}
    469471
  • trunk/Source/WebCore/page/Chrome.h

    r87521 r89216  
    3838    class ChromeClient;
    3939    class FileChooser;
     40    class FileIconLoader;
    4041    class FloatRect;
    4142    class Frame;
     
    153154
    154155        void runOpenPanel(Frame*, PassRefPtr<FileChooser>);
    155         void chooseIconForFiles(const Vector<String>&, FileChooser*);
     156        void loadIconForFiles(const Vector<String>&, FileIconLoader*);
    156157#if ENABLE(DIRECTORY_UPLOAD)
    157158        void enumerateChosenDirectory(const String&, FileChooser*);
  • trunk/Source/WebCore/page/ChromeClient.h

    r88284 r89216  
    4747    class Element;
    4848    class FileChooser;
     49    class FileIconLoader;
    4950    class FloatRect;
    5051    class Frame;
     
    227228        virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>) = 0;
    228229        // Asynchronous request to load an icon for specified filenames.
    229         virtual void chooseIconForFiles(const Vector<String>&, FileChooser*) = 0;
     230        virtual void loadIconForFiles(const Vector<String>&, FileIconLoader*) = 0;
    230231
    231232#if ENABLE(DIRECTORY_UPLOAD)
  • trunk/Source/WebCore/platform/FileChooser.cpp

    r88977 r89216  
    3030#include "FileChooser.h"
    3131
    32 #include "Icon.h"
     32namespace WebCore {
    3333
    34 namespace WebCore {
    35    
    3634FileChooserClient::~FileChooserClient()
    3735{
     
    4038inline FileChooser::FileChooser(FileChooserClient* client, const Vector<String>& initialFilenames)
    4139    : m_client(client)
    42     , m_isInitializing(true)
    4340{
    4441    m_filenames = initialFilenames;
     
    4744PassRefPtr<FileChooser> FileChooser::create(FileChooserClient* client, const Vector<String>& initialFilenames)
    4845{
    49     RefPtr<FileChooser> chooser(adoptRef(new FileChooser(client, initialFilenames)));
    50     chooser->loadIcon();
    51     chooser->m_isInitializing = false;
    52     return chooser;
     46    return adoptRef(new FileChooser(client, initialFilenames));
    5347}
    5448
     
    6054{
    6155    m_filenames.clear();
    62     m_icon = 0;
    6356}
    6457
     
    7568        return;
    7669    m_filenames = filenames;
    77     loadIcon();
    7870    if (m_client)
    7971        m_client->valueChanged();
    8072}
    8173
    82 void FileChooser::loadIcon()
    83 {
    84     if (m_filenames.size() && m_client)
    85         m_client->chooseIconForFiles(this, m_filenames);
    8674}
    87 
    88 void FileChooser::iconLoaded(PassRefPtr<Icon> icon)
    89 {
    90     m_icon = icon;
    91     if (!m_isInitializing && m_icon && m_client)
    92         m_client->repaint();
    93 }
    94 
    95 }
  • trunk/Source/WebCore/platform/FileChooser.h

    r89039 r89216  
    3737
    3838class FileChooser;
    39 class Font;
    40 class Icon;
    4139
    4240class FileChooserClient {
    4341public:
    4442    virtual void valueChanged() = 0;
    45     virtual void repaint() = 0;
    4643    virtual bool allowsMultipleFiles() = 0;
    4744#if ENABLE(DIRECTORY_UPLOAD)
     
    4946#endif
    5047    virtual String acceptTypes() = 0;
    51     virtual void chooseIconForFiles(FileChooser*, const Vector<String>&) = 0;
    5248    virtual ~FileChooserClient();
    5349};
     
    6359    const Vector<String>& filenames() const { return m_filenames; }
    6460
    65     Icon* icon() const { return m_icon.get(); }
    66 
    6761    void clear(); // for use by client; does not call valueChanged
    6862
    6963    void chooseFile(const String& path);
    7064    void chooseFiles(const Vector<String>& paths);
    71     // Called when FileChooserClient finishes to load an icon requested by iconForFiles().
    72     void iconLoaded(PassRefPtr<Icon>);
    7365
    7466    bool allowsMultipleFiles() const { return m_client ? m_client->allowsMultipleFiles() : false; }
     
    8173private:
    8274    FileChooser(FileChooserClient*, const Vector<String>& initialFilenames);
    83     void loadIcon();
    8475
    8576    FileChooserClient* m_client;
    8677    Vector<String> m_filenames;
    87     RefPtr<Icon> m_icon;
    88     bool m_isInitializing;
    8978};
    9079
  • trunk/Source/WebCore/platform/FileIconLoader.cpp

    r89215 r89216  
    11/*
    22 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
     3 * Copyright (C) 2011 Google Inc. All rights reserved.
    34 *
    45 * Redistribution and use in source and binary forms, with or without
     
    2829
    2930#include "config.h"
    30 #include "FileChooser.h"
     31#include "FileIconLoader.h"
    3132
    3233#include "Icon.h"
    3334
    3435namespace WebCore {
    35    
    36 FileChooserClient::~FileChooserClient()
     36
     37FileIconLoaderClient::~FileIconLoaderClient()
    3738{
    3839}
    3940
    40 inline FileChooser::FileChooser(FileChooserClient* client, const Vector<String>& initialFilenames)
    41     : m_client(client)
    42     , m_isInitializing(true)
     41PassRefPtr<FileIconLoader> FileIconLoader::create(FileIconLoaderClient* client)
    4342{
    44     m_filenames = initialFilenames;
     43    return adoptRef(new FileIconLoader(client));
    4544}
    4645
    47 PassRefPtr<FileChooser> FileChooser::create(FileChooserClient* client, const Vector<String>& initialFilenames)
     46void FileIconLoader::disconnectClient()
    4847{
    49     RefPtr<FileChooser> chooser(adoptRef(new FileChooser(client, initialFilenames)));
    50     chooser->loadIcon();
    51     chooser->m_isInitializing = false;
    52     return chooser;
     48    m_client = 0;
    5349}
    5450
    55 FileChooser::~FileChooser()
     51void FileIconLoader::notifyFinished(PassRefPtr<Icon> icon)
     52{
     53    if (m_client)
     54        m_client->updateRendering(icon);
     55}
     56
     57FileIconLoader::FileIconLoader(FileIconLoaderClient* client)
     58    : m_client(client)
    5659{
    5760}
    5861
    59 void FileChooser::clear()
    60 {
    61     m_filenames.clear();
    62     m_icon = 0;
    6362}
    64 
    65 void FileChooser::chooseFile(const String& filename)
    66 {
    67     Vector<String> filenames;
    68     filenames.append(filename);
    69     chooseFiles(filenames);
    70 }
    71 
    72 void FileChooser::chooseFiles(const Vector<String>& filenames)
    73 {
    74     if (m_filenames == filenames)
    75         return;
    76     m_filenames = filenames;
    77     loadIcon();
    78     if (m_client)
    79         m_client->valueChanged();
    80 }
    81 
    82 void FileChooser::loadIcon()
    83 {
    84     if (m_filenames.size() && m_client)
    85         m_client->chooseIconForFiles(this, m_filenames);
    86 }
    87 
    88 void FileChooser::iconLoaded(PassRefPtr<Icon> icon)
    89 {
    90     m_icon = icon;
    91     if (!m_isInitializing && m_icon && m_client)
    92         m_client->repaint();
    93 }
    94 
    95 }
  • trunk/Source/WebCore/platform/FileIconLoader.h

    r89215 r89216  
    11/*
    2  * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
     2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
     3 * Copyright (C) 2011 Google Inc. All rights reserved.
    34 *
    45 * Redistribution and use in source and binary forms, with or without
     
    2526 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
    2627 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     28 *
    2729 */
    2830
    29 #include "config.h"
    30 #include "FileChooser.h"
     31#ifndef FileIconLoader_h
     32#define FileIconLoader_h
    3133
    32 #include "Icon.h"
     34#include <wtf/PassRefPtr.h>
     35#include <wtf/RefCounted.h>
    3336
    3437namespace WebCore {
    35    
    36 FileChooserClient::~FileChooserClient()
    37 {
    38 }
    3938
    40 inline FileChooser::FileChooser(FileChooserClient* client, const Vector<String>& initialFilenames)
    41     : m_client(client)
    42     , m_isInitializing(true)
    43 {
    44     m_filenames = initialFilenames;
    45 }
     39class Icon;
    4640
    47 PassRefPtr<FileChooser> FileChooser::create(FileChooserClient* client, const Vector<String>& initialFilenames)
    48 {
    49     RefPtr<FileChooser> chooser(adoptRef(new FileChooser(client, initialFilenames)));
    50     chooser->loadIcon();
    51     chooser->m_isInitializing = false;
    52     return chooser;
    53 }
     41class FileIconLoaderClient {
     42public:
     43    virtual void updateRendering(PassRefPtr<Icon>) = 0;
     44    virtual ~FileIconLoaderClient();
     45};
    5446
    55 FileChooser::~FileChooser()
    56 {
    57 }
     47class FileIconLoader : public RefCounted<FileIconLoader> {
     48public:
     49    static PassRefPtr<FileIconLoader> create(FileIconLoaderClient*);
    5850
    59 void FileChooser::clear()
    60 {
    61     m_filenames.clear();
    62     m_icon = 0;
    63 }
     51    void disconnectClient();
     52    void notifyFinished(PassRefPtr<Icon>);
    6453
    65 void FileChooser::chooseFile(const String& filename)
    66 {
    67     Vector<String> filenames;
    68     filenames.append(filename);
    69     chooseFiles(filenames);
    70 }
     54private:
     55    explicit FileIconLoader(FileIconLoaderClient*);
    7156
    72 void FileChooser::chooseFiles(const Vector<String>& filenames)
    73 {
    74     if (m_filenames == filenames)
    75         return;
    76     m_filenames = filenames;
    77     loadIcon();
    78     if (m_client)
    79         m_client->valueChanged();
    80 }
     57    FileIconLoaderClient* m_client;
     58};
    8159
    82 void FileChooser::loadIcon()
    83 {
    84     if (m_filenames.size() && m_client)
    85         m_client->chooseIconForFiles(this, m_filenames);
    86 }
     60} // namespace WebCore
    8761
    88 void FileChooser::iconLoaded(PassRefPtr<Icon> icon)
    89 {
    90     m_icon = icon;
    91     if (!m_isInitializing && m_icon && m_client)
    92         m_client->repaint();
    93 }
    94 
    95 }
     62#endif
  • trunk/Source/WebCore/rendering/RenderFileUploadControl.cpp

    r89039 r89216  
    5757RenderFileUploadControl::RenderFileUploadControl(HTMLInputElement* input)
    5858    : RenderBlock(input)
     59    , m_iconLoader(FileIconLoader::create(this))
    5960{
    6061    FileList* list = input->files();
     
    6465        filenames.append(list->item(i)->path());
    6566    m_fileChooser = FileChooser::create(this, filenames);
     67    requestIcon(filenames);
    6668}
    6769
    6870RenderFileUploadControl::~RenderFileUploadControl()
    6971{
     72    m_iconLoader->disconnectClient();
    7073    m_fileChooser->disconnectClient();
     74}
     75
     76void RenderFileUploadControl::requestIcon(const Vector<String>& filenames) const
     77{
     78    if (!filenames.size())
     79        return;
     80
     81    if (Chrome* chrome = this->chrome())
     82        chrome->loadIconForFiles(filenames, m_iconLoader.get());
    7183}
    7284
     
    7991    inputElement->setFileListFromRenderer(fileChooser->filenames());
    8092    inputElement->dispatchFormControlChangeEvent();
    81  
    82     // only repaint if it doesn't seem we have been destroyed
    83     if (!fileChooser->disconnected())
    84         repaint();
     93    if (fileChooser->disconnected())
     94        return;
     95
     96    requestIcon(fileChooser->filenames());
     97    repaint();
    8598}
    8699
     
    105118void RenderFileUploadControl::receiveDropForDirectoryUpload(const Vector<String>& paths)
    106119{
    107     if (Chrome* chromePointer = chrome())
    108         chromePointer->enumerateChosenDirectory(paths[0], m_fileChooser.get());
     120    if (Chrome* chrome = this->chrome())
     121        chrome->enumerateChosenDirectory(paths[0], m_fileChooser.get());
    109122}
    110123#endif
     
    115128}
    116129
    117 void RenderFileUploadControl::chooseIconForFiles(FileChooser* chooser, const Vector<String>& filenames)
    118 {
    119     if (Chrome* chromePointer = chrome())
    120         chromePointer->chooseIconForFiles(filenames, chooser);
     130void RenderFileUploadControl::updateRendering(PassRefPtr<Icon> icon)
     131{
     132    if (m_icon == icon)
     133        return;
     134
     135    m_icon = icon;
     136    repaint();
    121137}
    122138
     
    125141    if (!ScriptController::processingUserGesture())
    126142        return;
    127     if (Chrome* chromePointer = chrome())
    128         chromePointer->runOpenPanel(frame(), m_fileChooser);
     143    if (Chrome* chrome = this->chrome())
     144        chrome->runOpenPanel(frame(), m_fileChooser);
    129145}
    130146
     
    155171    if (files && files->isEmpty() && !m_fileChooser->filenames().isEmpty()) {
    156172        m_fileChooser->clear();
     173        m_icon = 0;
    157174        repaint();
    158175    }
     
    167184{
    168185    return max(0, contentWidth() - nodeWidth(uploadButton()) - afterButtonSpacing
    169         - (m_fileChooser->icon() ? iconWidth + iconFilenameSpacing : 0));
     186        - (m_icon ? iconWidth + iconFilenameSpacing : 0));
    170187}
    171188
     
    174191    if (style()->visibility() != VISIBLE)
    175192        return;
    176     ASSERT(m_fileChooser);
    177193   
    178194    // Push a clip.
     
    200216        int buttonWidth = nodeWidth(button);
    201217        int buttonAndIconWidth = buttonWidth + afterButtonSpacing
    202             + (m_fileChooser->icon() ? iconWidth + iconFilenameSpacing : 0);
     218            + (m_icon ? iconWidth + iconFilenameSpacing : 0);
    203219        int textX;
    204220        if (style()->isLeftToRightDirection())
     
    217233        paintInfo.context->drawBidiText(font, textRun, IntPoint(textX, textY));
    218234       
    219         if (m_fileChooser->icon()) {
     235        if (m_icon) {
    220236            // Determine where the icon should be placed
    221237            int iconY = paintOffset.y() + borderTop() + paddingTop() + (contentHeight() - iconHeight) / 2;
     
    227243
    228244            // Draw the file icon
    229             m_fileChooser->icon()->paint(paintInfo.context, IntRect(iconX, iconY, iconWidth, iconHeight));
     245            m_icon->paint(paintInfo.context, IntRect(iconX, iconY, iconWidth, iconHeight));
    230246        }
    231247    }
     
    316332String RenderFileUploadControl::fileTextValue() const
    317333{
     334    ASSERT(m_fileChooser);
    318335    return theme()->fileListNameForWidth(m_fileChooser->filenames(), style()->font(), maxFilenameWidth());
    319336}
  • trunk/Source/WebCore/rendering/RenderFileUploadControl.h

    r88115 r89216  
    2323
    2424#include "FileChooser.h"
     25#include "FileIconLoader.h"
    2526#include "RenderBlock.h"
    2627
     
    3435// associated with it to receive click/hover events.
    3536
    36 class RenderFileUploadControl : public RenderBlock, private FileChooserClient {
     37class RenderFileUploadControl : public RenderBlock, private FileChooserClient, private FileIconLoaderClient {
    3738public:
    3839    RenderFileUploadControl(HTMLInputElement*);
     
    5758    virtual bool requiresForcedStyleRecalcPropagation() const { return true; }
    5859
    59     // FileChooserClient methods.
    60     void valueChanged();
    61     void repaint() { RenderBlock::repaint(); }
    62     bool allowsMultipleFiles();
     60    // FileChooserClient functions.
     61    virtual void valueChanged();
     62    virtual bool allowsMultipleFiles();
    6363#if ENABLE(DIRECTORY_UPLOAD)
    64     bool allowsDirectoryUpload();
    65     void receiveDropForDirectoryUpload(const Vector<String>&);
     64    virtual bool allowsDirectoryUpload();
     65    virtual void receiveDropForDirectoryUpload(const Vector<String>&);
    6666#endif
    67     String acceptTypes();
    68     void chooseIconForFiles(FileChooser*, const Vector<String>&);
     67    virtual String acceptTypes();
     68
     69    // FileIconLoaderClient functions.
     70    virtual void updateRendering(PassRefPtr<Icon>);
    6971
    7072    Chrome* chrome() const;
    7173    int maxFilenameWidth() const;
    72     PassRefPtr<RenderStyle> createButtonStyle(const RenderStyle* parentStyle) const;
    7374   
    7475    virtual VisiblePosition positionForPoint(const IntPoint&);
    7576
    7677    HTMLInputElement* uploadButton() const;
     78    void requestIcon(const Vector<String>&) const;
    7779
    7880    RefPtr<FileChooser> m_fileChooser;
     81    RefPtr<FileIconLoader> m_iconLoader;
     82    RefPtr<Icon> m_icon;
    7983};
    8084
  • trunk/Source/WebCore/svg/graphics/SVGImage.cpp

    r84851 r89216  
    3232#include "DocumentLoader.h"
    3333#include "FileChooser.h"
     34#include "FileIconLoader.h"
    3435#include "FloatRect.h"
    3536#include "Frame.h"
  • trunk/Source/WebKit/chromium/ChangeLog

    r89212 r89216  
     12011-06-18  Dimitri Glazkov  <dglazkov@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Separate concerns of loading file icons and choosing files.
     6        https://bugs.webkit.org/show_bug.cgi?id=62931
     7
     8        * src/ChromeClientImpl.cpp:
     9        (WebKit::ChromeClientImpl::loadIconForFiles): Renamed to better reflect the intent.
     10        * src/ChromeClientImpl.h: Ditto.
     11        * src/WebIconLoadingCompletionImpl.cpp:
     12        (WebKit::WebIconLoadingCompletionImpl::WebIconLoadingCompletionImpl): Changed to use FileIconLoader.
     13        (WebKit::WebIconLoadingCompletionImpl::didLoadIcon): Ditto.
     14        * src/WebIconLoadingCompletionImpl.h: Dito.
     15
    1162011-06-18  Yufeng Shen  <miletus@chromium.org>
    217
  • trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp

    r89065 r89216  
    4242#include "ExternalPopupMenu.h"
    4343#include "FileChooser.h"
     44#include "FileIconLoader.h"
    4445#include "FloatRect.h"
    4546#include "FrameLoadRequest.h"
     
    5051#include "HTMLNames.h"
    5152#include "HitTestResult.h"
     53#include "Icon.h"
    5254#include "IntRect.h"
    5355#include "NavigationAction.h"
     
    687689}
    688690
    689 void ChromeClientImpl::chooseIconForFiles(const Vector<String>& filenames, FileChooser* fileChooser)
     691void ChromeClientImpl::loadIconForFiles(const Vector<String>& filenames, FileIconLoader* loader)
    690692{
    691693    if (!m_webView->client())
    692694        return;
    693     WebIconLoadingCompletionImpl* iconCompletion = new WebIconLoadingCompletionImpl(fileChooser);
     695    WebIconLoadingCompletionImpl* iconCompletion = new WebIconLoadingCompletionImpl(loader);
    694696    if (!m_webView->client()->queryIconForFiles(filenames, iconCompletion))
    695697        iconCompletion->didLoadIcon(WebData());
  • trunk/Source/WebKit/chromium/src/ChromeClientImpl.h

    r87521 r89216  
    140140    virtual void cancelGeolocationPermissionRequestForFrame(WebCore::Frame*, WebCore::Geolocation*);
    141141    virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
    142     virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*);
     142    virtual void loadIconForFiles(const Vector<WTF::String>&, WebCore::FileIconLoader*);
    143143#if ENABLE(DIRECTORY_UPLOAD)
    144144    virtual void enumerateChosenDirectory(const WTF::String&, WebCore::FileChooser*);
  • trunk/Source/WebKit/chromium/src/WebIconLoadingCompletionImpl.cpp

    r76491 r89216  
    4040namespace WebKit {
    4141
    42 WebIconLoadingCompletionImpl::WebIconLoadingCompletionImpl(FileChooser* chooser)
    43     : m_fileChooser(chooser)
     42WebIconLoadingCompletionImpl::WebIconLoadingCompletionImpl(FileIconLoader* fileIconLoader)
     43    : m_fileIconLoader(fileIconLoader)
    4444{
    4545}
     
    5454        RefPtr<Image> image = BitmapImage::create();
    5555        image->setData(iconData, true);
    56         m_fileChooser->iconLoaded(Icon::create(image));
     56        m_fileIconLoader->notifyFinished(Icon::create(image));
    5757    }
    5858    // This object is no longer needed.
  • trunk/Source/WebKit/chromium/src/WebIconLoadingCompletionImpl.h

    r76491 r89216  
    3232#define WebIconLoadingCompletionImpl_h
    3333
    34 #include "FileChooser.h"
     34#include "FileIconLoader.h"
    3535#include "WebData.h"
    3636#include "WebIconLoadingCompletion.h"
    3737#include <wtf/PassRefPtr.h>
     38#include <wtf/RefPtr.h>
    3839
    3940using WebKit::WebIconLoadingCompletion;
     
    4445class WebIconLoadingCompletionImpl : public WebIconLoadingCompletion {
    4546public:
    46     WebIconLoadingCompletionImpl(WebCore::FileChooser*);
     47    WebIconLoadingCompletionImpl(WebCore::FileIconLoader*);
    4748    virtual void didLoadIcon(const WebData&);
    4849
     
    5051    ~WebIconLoadingCompletionImpl();
    5152
    52     RefPtr<WebCore::FileChooser> m_fileChooser;
     53    RefPtr<WebCore::FileIconLoader> m_fileIconLoader;
    5354};
    5455
  • trunk/Source/WebKit/efl/ChangeLog

    r88947 r89216  
     12011-06-18  Dimitri Glazkov  <dglazkov@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Separate concerns of loading file icons and choosing files.
     6        https://bugs.webkit.org/show_bug.cgi?id=62931
     7
     8        * WebCoreSupport/ChromeClientEfl.cpp:
     9        (WebCore::ChromeClientEfl::loadIconForFiles): Renamed.
     10        * WebCoreSupport/ChromeClientEfl.h:
     11
    1122011-06-15  Grzegorz Czajkowski  <g.czajkowski@samsung.com>
    213
  • trunk/Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp

    r88518 r89216  
    4141#include "EWebKit.h"
    4242#include "FileChooser.h"
     43#include "FileIconLoader.h"
    4344#include "FloatRect.h"
    4445#include "FrameLoader.h"
     
    528529}
    529530
    530 void ChromeClientEfl::chooseIconForFiles(const Vector<String>&, FileChooser*)
     531void ChromeClientEfl::loadIconForFiles(const Vector<String>&, FileIconLoader*)
    531532{
    532533    notImplemented();
  • trunk/Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.h

    r88518 r89216  
    134134
    135135    virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>);
    136     virtual void chooseIconForFiles(const Vector<String>&, FileChooser*);
     136    virtual void loadIconForFiles(const Vector<String>&, FileIconLoader*);
    137137    virtual void formStateDidChange(const Node*);
    138138
  • trunk/Source/WebKit/gtk/ChangeLog

    r89133 r89216  
     12011-06-18  Dimitri Glazkov  <dglazkov@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Separate concerns of loading file icons and choosing files.
     6        https://bugs.webkit.org/show_bug.cgi?id=62931
     7
     8        * WebCoreSupport/ChromeClientGtk.cpp:
     9        (WebKit::ChromeClient::loadIconForFiles): Renamed.
     10        * WebCoreSupport/ChromeClientGtk.h:
     11
    1122011-06-17  Joone Hur  <joone.hur@collabora.co.uk>
    213
  • trunk/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp

    r88802 r89216  
    3030#include "Element.h"
    3131#include "FileChooser.h"
     32#include "FileIconLoader.h"
    3233#include "FileSystem.h"
    3334#include "FloatRect.h"
     
    643644}
    644645
    645 void ChromeClient::chooseIconForFiles(const Vector<WTF::String>& filenames, WebCore::FileChooser* chooser)
    646 {
    647     chooser->iconLoaded(Icon::createIconForFiles(filenames));
     646void ChromeClient::loadIconForFiles(const Vector<WTF::String>& filenames, WebCore::FileIconLoader* loader)
     647{
     648    loader->notifyFinished(Icon::createIconForFiles(filenames));
    648649}
    649650
  • trunk/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h

    r88754 r89216  
    129129#endif
    130130        virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
    131         virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*);
     131        virtual void loadIconForFiles(const Vector<WTF::String>&, WebCore::FileIconLoader*);
    132132
    133133        virtual void formStateDidChange(const WebCore::Node*) { }
  • trunk/Source/WebKit/haiku/ChangeLog

    r88628 r89216  
     12011-06-18  Dimitri Glazkov  <dglazkov@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Separate concerns of loading file icons and choosing files.
     6        https://bugs.webkit.org/show_bug.cgi?id=62931
     7
     8        * WebCoreSupport/ChromeClientHaiku.cpp:
     9        (WebCore::ChromeClientHaiku::loadIconForFiles): Renamed.
     10        * WebCoreSupport/ChromeClientHaiku.h:
     11
    1122011-06-12  Adam Barth  <abarth@webkit.org>
    213
  • trunk/Source/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.cpp

    r80279 r89216  
    3030#include "ChromeClientHaiku.h"
    3131
     32#include "FileIconLoader.h"
    3233#include "Frame.h"
    3334#include "FrameLoadRequest.h"
     
    372373}
    373374
    374 void ChromeClientHaiku::chooseIconForFiles(const Vector<String>& filenames, FileChooser* chooser)
    375 {
    376     chooser->iconLoaded(Icon::createIconForFiles(filenames));
     375void ChromeClientHaiku::loadIconForFiles(const Vector<String>& filenames, FileIconLoader* loader)
     376{
     377    loader->notifyFinished(Icon::createIconForFiles(filenames));
    377378}
    378379
  • trunk/Source/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.h

    r86584 r89216  
    153153
    154154        virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>);
    155         virtual void chooseIconForFiles(const Vector<String>&, FileChooser*);
     155        virtual void loadIconForFiles(const Vector<String>&, FileIconLoader*);
    156156
    157157        virtual void setCursor(const Cursor&);
  • trunk/Source/WebKit/mac/ChangeLog

    r89207 r89216  
     12011-06-18  Dimitri Glazkov  <dglazkov@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Separate concerns of loading file icons and choosing files.
     6        https://bugs.webkit.org/show_bug.cgi?id=62931
     7
     8        * WebCoreSupport/WebChromeClient.h:
     9        * WebCoreSupport/WebChromeClient.mm:
     10        (WebChromeClient::loadIconForFiles): Renamed.
     11
    1122011-06-18  Andrew Wellington  <andrew@webkit.org>
    213
  • trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.h

    r86988 r89216  
    126126
    127127    virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
    128     virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*);
     128    virtual void loadIconForFiles(const Vector<WTF::String>&, WebCore::FileIconLoader*);
    129129
    130130    virtual void setCursor(const WebCore::Cursor&);
  • trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm

    r86988 r89216  
    5656#import <WebCore/Element.h>
    5757#import <WebCore/FileChooser.h>
     58#import <WebCore/FileIconLoader.h>
    5859#import <WebCore/FloatRect.h>
    5960#import <WebCore/Frame.h>
     
    785786}
    786787
    787 void WebChromeClient::chooseIconForFiles(const Vector<String>& filenames, FileChooser* chooser)
    788 {
    789     chooser->iconLoaded(Icon::createIconForFiles(filenames));
     788void WebChromeClient::loadIconForFiles(const Vector<String>& filenames, FileIconLoader* iconLoader)
     789{
     790    iconLoader->notifyFinished(Icon::createIconForFiles(filenames));
    790791}
    791792
  • trunk/Source/WebKit/qt/ChangeLog

    r89137 r89216  
     12011-06-18  Dimitri Glazkov  <dglazkov@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Separate concerns of loading file icons and choosing files.
     6        https://bugs.webkit.org/show_bug.cgi?id=62931
     7
     8        * WebCoreSupport/ChromeClientQt.cpp:
     9        (WebCore::ChromeClientQt::loadIconForFiles): Renamed.
     10        * WebCoreSupport/ChromeClientQt.h:
     11
    1122011-06-17  Alexis Menard  <alexis.menard@openbossa.org>
    213
  • trunk/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp

    r87623 r89216  
    3535#include "Document.h"
    3636#include "FileChooser.h"
     37#include "FileIconLoader.h"
    3738#include "Frame.h"
    3839#include "FrameLoadRequest.h"
     
    609610}
    610611
    611 void ChromeClientQt::chooseIconForFiles(const Vector<String>& filenames, FileChooser* chooser)
    612 {
    613     chooser->iconLoaded(Icon::createIconForFiles(filenames));
     612void ChromeClientQt::loadIconForFiles(const Vector<String>& filenames, FileIconLoader* loader)
     613{
     614    loader->notifyFinished(Icon::createIconForFiles(filenames));
    614615}
    615616
  • trunk/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h

    r86706 r89216  
    4747
    4848class FileChooser;
     49class FileIconLoader;
    4950class FloatRect;
    5051class Page;
     
    175176#endif
    176177     virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>);
    177      virtual void chooseIconForFiles(const Vector<String>&, FileChooser*);
     178     virtual void loadIconForFiles(const Vector<String>&, FileIconLoader*);
    178179
    179180    virtual void formStateDidChange(const Node*) { }
  • trunk/Source/WebKit/win/ChangeLog

    r89044 r89216  
     12011-06-18  Dimitri Glazkov  <dglazkov@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Separate concerns of loading file icons and choosing files.
     6        https://bugs.webkit.org/show_bug.cgi?id=62931
     7
     8        * WebCoreSupport/WebChromeClient.cpp:
     9        (WebChromeClient::loadIconForFiles): Renamed.
     10        * WebCoreSupport/WebChromeClient.h:
     11
    1122011-06-16  Sheriff Bot  <webkit.review.bot@gmail.com>
    213
  • trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.cpp

    r86451 r89216  
    4343#include <WebCore/Cursor.h>
    4444#include <WebCore/FileChooser.h>
     45#include <WebCore/FileIconLoader.h>
    4546#include <WebCore/FloatRect.h>
    4647#include <WebCore/Frame.h>
     
    790791}
    791792
    792 void WebChromeClient::chooseIconForFiles(const Vector<WTF::String>& filenames, WebCore::FileChooser* chooser)
    793 {
    794     chooser->iconLoaded(Icon::createIconForFiles(filenames));
     793void WebChromeClient::loadIconForFiles(const Vector<WTF::String>& filenames, WebCore::FileIconLoader* loader)
     794{
     795    loader->notifyFinished(Icon::createIconForFiles(filenames));
    795796}
    796797
  • trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.h

    r86584 r89216  
    137137
    138138    virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
    139     virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*);
     139    virtual void loadIconForFiles(const Vector<WTF::String>&, WebCore::FileIconLoader*);
    140140
    141141    virtual void setCursor(const WebCore::Cursor&);
  • trunk/Source/WebKit/wince/ChangeLog

    r88628 r89216  
     12011-06-18  Dimitri Glazkov  <dglazkov@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Separate concerns of loading file icons and choosing files.
     6        https://bugs.webkit.org/show_bug.cgi?id=62931
     7
     8        * WebCoreSupport/ChromeClientWinCE.cpp:
     9        (WebKit::ChromeClientWinCE::loadIconForFiles): Renamed.
     10        * WebCoreSupport/ChromeClientWinCE.h:
     11
    1122011-06-12  Adam Barth  <abarth@webkit.org>
    213
  • trunk/Source/WebKit/wince/WebCoreSupport/ChromeClientWinCE.cpp

    r80279 r89216  
    2727
    2828#include "FileChooser.h"
     29#include "FileIconLoader.h"
    2930#include "Icon.h"
    3031#include "NotImplemented.h"
     
    351352}
    352353
    353 void ChromeClientWinCE::chooseIconForFiles(const Vector<String>& filenames, FileChooser* chooser)
    354 {
    355     chooser->iconLoaded(Icon::createIconForFiles(filenames));
     354void ChromeClientWinCE::loadIconForFiles(const Vector<String>& filenames, FileIconLoader* loader)
     355{
     356    loader->notifyFinished(Icon::createIconForFiles(filenames));
    356357}
    357358
  • trunk/Source/WebKit/wince/WebCoreSupport/ChromeClientWinCE.h

    r86584 r89216  
    150150    virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
    151151    // Asynchronous request to load an icon for specified filenames.
    152     virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*);
     152    virtual void loadIconForFiles(const Vector<WTF::String>&, WebCore::FileIconLoader*);
    153153
    154154    // Notification that the given form element has changed. This function
  • trunk/Source/WebKit/wx/ChangeLog

    r89197 r89216  
     12011-06-18  Dimitri Glazkov  <dglazkov@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Separate concerns of loading file icons and choosing files.
     6        https://bugs.webkit.org/show_bug.cgi?id=62931
     7
     8        * WebKitSupport/ChromeClientWx.cpp:
     9        (WebCore::ChromeClientWx::chooseIconForFiles): Renamed.
     10        * WebKitSupport/ChromeClientWx.h:
     11
    1122011-06-18  Holger Hans Peter Freyther  <holger@moiji-mobile.com>
    213
  • trunk/Source/WebKit/wx/WebKitSupport/ChromeClientWx.cpp

    r83869 r89216  
    3434#endif
    3535#include "FileChooser.h"
     36#include "FileIconLoader.h"
    3637#include "FloatRect.h"
    3738#include "Frame.h"
     
    456457}
    457458
    458 void ChromeClientWx::chooseIconForFiles(const Vector<String>& filenames, FileChooser* chooser)
    459 {
    460     chooser->iconLoaded(Icon::createIconForFiles(filenames));
     459void ChromeClientWx::chooseIconForFiles(const Vector<String>& filenames, FileIconLoader* loader)
     460{
     461    loader->notifyFinished(Icon::createIconForFiles(filenames));
    461462}
    462463
  • trunk/Source/WebKit/wx/WebKitSupport/ChromeClientWx.h

    r86584 r89216  
    137137
    138138    virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>);
    139     virtual void chooseIconForFiles(const Vector<String>&, FileChooser*);
     139    virtual void loadIconForFiles(const Vector<String>&, FileIconLoader*);
    140140
    141141    virtual void formStateDidChange(const Node*) { }
  • trunk/Source/WebKit2/ChangeLog

    r89211 r89216  
     12011-06-18  Dimitri Glazkov  <dglazkov@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Separate concerns of loading file icons and choosing files.
     6        https://bugs.webkit.org/show_bug.cgi?id=62931
     7
     8        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
     9        (WebKit::WebChromeClient::loadIconForFiles): Renamed.
     10        * WebProcess/WebCoreSupport/WebChromeClient.h:
     11
    1122011-06-18  Eunmi Lee  <eunmi15.lee@samsung.com>
    213
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp

    r88669 r89216  
    4747#include <WebCore/DatabaseTracker.h>
    4848#include <WebCore/FileChooser.h>
     49#include <WebCore/FileIconLoader.h>
    4950#include <WebCore/Frame.h>
    5051#include <WebCore/FrameLoader.h>
     
    637638}
    638639
    639 void WebChromeClient::chooseIconForFiles(const Vector<String>& filenames, FileChooser* chooser)
    640 {
    641     chooser->iconLoaded(Icon::createIconForFiles(filenames));
     640void WebChromeClient::loadIconForFiles(const Vector<String>& filenames, FileIconLoader* loader)
     641{
     642    loader->notifyFinished(Icon::createIconForFiles(filenames));
    642643}
    643644
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h

    r88284 r89216  
    170170
    171171    virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
    172     virtual void chooseIconForFiles(const Vector<String>&, WebCore::FileChooser*);
     172    virtual void loadIconForFiles(const Vector<String>&, WebCore::FileIconLoader*);
    173173
    174174    virtual void setCursor(const WebCore::Cursor&);
Note: See TracChangeset for help on using the changeset viewer.