Changeset 56824 in webkit


Ignore:
Timestamp:
Mar 30, 2010 9:35:40 PM (14 years ago)
Author:
tkent@chromium.org
Message:

2010-03-30 Kent Tamura <tkent@chromium.org>

Reviewed by Brady Eidson.

REGRESSION (r56439) - Crash when a renderer for a file upload control
with a selected file is recreated
https://bugs.webkit.org/show_bug.cgi?id=36723

  • fast/forms/input-file-re-render.html: Force to do re-layout to check the regression.

2010-03-30 Kent Tamura <tkent@chromium.org>

Reviewed by Brady Eidson.

REGRESSION (r56439) - Crash when a renderer for a file upload control
with a selected file is recreated
https://bugs.webkit.org/show_bug.cgi?id=36723

RenderFileUploadControl::chooseIconForFiles was called before
m_fileChooser was initialized.

  • platform/FileChooser.cpp: (WebCore::FileChooser::FileChooser): Introduce m_isInitializing flag to avoid FileChooserClient::repaint() call. (WebCore::FileChooser::loadIcon): (WebCore::FileChooser::iconLoaded):
  • platform/FileChooser.h: Add a FielChooser parameter to FileChooserClient::chooseIconForFiles().
  • rendering/RenderFileUploadControl.cpp: (WebCore::RenderFileUploadControl::chooseIconForFiles): (WebCore::RenderFileUploadControl::paintObject): Add an assertion.
  • rendering/RenderFileUploadControl.h:
Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r56821 r56824  
     12010-03-30  Kent Tamura  <tkent@chromium.org>
     2
     3        Reviewed by Brady Eidson.
     4
     5        REGRESSION (r56439) - Crash when a renderer for a file upload control
     6        with a selected file is recreated
     7        https://bugs.webkit.org/show_bug.cgi?id=36723
     8
     9        * fast/forms/input-file-re-render.html:
     10          Force to do re-layout to check the regression.
     11
    1122010-03-30  Yuzo Fujishima  <yuzo@google.com>
    213
  • trunk/LayoutTests/fast/forms/input-file-re-render.html

    r50868 r56824  
    1919    // Delete the renderer.
    2020    input.style.display = 'none';
     21    input.offsetWidth; // Force to do layout
    2122
    2223    // Attach a renderer again.
  • trunk/WebCore/ChangeLog

    r56822 r56824  
     12010-03-30  Kent Tamura  <tkent@chromium.org>
     2
     3        Reviewed by Brady Eidson.
     4
     5        REGRESSION (r56439) - Crash when a renderer for a file upload control
     6        with a selected file is recreated
     7        https://bugs.webkit.org/show_bug.cgi?id=36723
     8
     9        RenderFileUploadControl::chooseIconForFiles was called before
     10        m_fileChooser was initialized.
     11
     12        * platform/FileChooser.cpp:
     13        (WebCore::FileChooser::FileChooser): Introduce m_isInitializing flag to
     14          avoid FileChooserClient::repaint() call.
     15        (WebCore::FileChooser::loadIcon):
     16        (WebCore::FileChooser::iconLoaded):
     17        * platform/FileChooser.h: Add a FielChooser parameter to
     18          FileChooserClient::chooseIconForFiles().
     19        * rendering/RenderFileUploadControl.cpp:
     20        (WebCore::RenderFileUploadControl::chooseIconForFiles):
     21        (WebCore::RenderFileUploadControl::paintObject): Add an assertion.
     22        * rendering/RenderFileUploadControl.h:
     23
    1242010-03-30  Stanislav Paltis  <Stanislav.Paltis@nokia.com>
    225
  • trunk/WebCore/platform/FileChooser.cpp

    r56439 r56824  
    4040inline FileChooser::FileChooser(FileChooserClient* client, const Vector<String>& initialFilenames)
    4141    : m_client(client)
     42    , m_isInitializing(true)
    4243{
    4344    m_filenames = initialFilenames;
    4445    loadIcon();
     46    m_isInitializing = false;
    4547}
    4648
     
    8082{
    8183    if (m_filenames.size() && m_client)
    82         m_client->chooseIconForFiles(m_filenames);
     84        m_client->chooseIconForFiles(this, m_filenames);
    8385}
    8486
     
    8688{
    8789    m_icon = icon;
    88     if (m_icon && m_client)
     90    if (!m_isInitializing && m_icon && m_client)
    8991        m_client->repaint();
    9092}
  • trunk/WebCore/platform/FileChooser.h

    r56439 r56824  
    3636namespace WebCore {
    3737
     38class FileChooser;
    3839class Font;
    3940class Icon;
     
    4546    virtual bool allowsMultipleFiles() = 0;
    4647    virtual String acceptTypes() = 0;
    47     virtual void chooseIconForFiles(const Vector<String>&) = 0;
     48    virtual void chooseIconForFiles(FileChooser*, const Vector<String>&) = 0;
    4849    virtual ~FileChooserClient();
    4950};
     
    8081    Vector<String> m_filenames;
    8182    RefPtr<Icon> m_icon;
     83    bool m_isInitializing;
    8284};
    8385
  • trunk/WebCore/rendering/RenderFileUploadControl.cpp

    r56439 r56824  
    115115}
    116116
    117 void RenderFileUploadControl::chooseIconForFiles(const Vector<String>& filenames)
     117void RenderFileUploadControl::chooseIconForFiles(FileChooser* chooser, const Vector<String>& filenames)
    118118{
    119119    if (Chrome* chromePointer = chrome())
    120         chromePointer->chooseIconForFiles(filenames, m_fileChooser);
     120        chromePointer->chooseIconForFiles(filenames, chooser);
    121121}
    122122
     
    196196    if (style()->visibility() != VISIBLE)
    197197        return;
     198    ASSERT(m_fileChooser);
    198199   
    199200    // Push a clip.
  • trunk/WebCore/rendering/RenderFileUploadControl.h

    r56439 r56824  
    6262    bool allowsMultipleFiles();
    6363    String acceptTypes();
    64     void chooseIconForFiles(const Vector<String>&);
     64    void chooseIconForFiles(FileChooser*, const Vector<String>&);
    6565
    6666    Chrome* chrome() const;
Note: See TracChangeset for help on using the changeset viewer.