Changeset 87444 in webkit


Ignore:
Timestamp:
May 26, 2011 3:49:48 PM (13 years ago)
Author:
levin@chromium.org
Message:

Need a callback for when the preferred rendered size changed.
https://bugs.webkit.org/show_bug.cgi?id=61309

Reviewed by Darin Fisher.

Source/WebCore:

No new tests needed since no new functionality is exposed.

  • page/Chrome.cpp:

(WebCore::Chrome::contentsPreferredSizeChanged): Plumbed through the call.

  • page/Chrome.h: Added the new method.
  • page/ChromeClient.h: Ditto.
  • page/FrameView.cpp:

(WebCore::FrameView::setContentsSize): Added calculations for the preferred size
and the call to contentsPreferredSizeChanged.

Source/WebKit/chromium:

  • public/WebFrameClient.h

(WebKit::WebFrameClient::didChangeContentsPreferredSize): Added stub.

  • src/ChromeClientImpl.h:

(WebKit::ChromeClientImpl::contentsPreferredSizeChanged): Added declaration.

  • src/ChromeClientImpl.cpp:

(WebKit::ChromeClientImpl::contentsPreferredSizeChanged): Added call to WebFrameClient::didChangeContentsPreferredSize.

Location:
trunk/Source
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r87443 r87444  
     12011-05-26  David Levin  <levin@chromium.org>
     2
     3        Reviewed by Darin Fisher.
     4
     5        Need a callback for when the preferred rendered size changed.
     6        https://bugs.webkit.org/show_bug.cgi?id=61309
     7
     8        No new tests needed since no new functionality is exposed.
     9
     10        * page/Chrome.cpp:
     11        (WebCore::Chrome::contentsPreferredSizeChanged): Plumbed through the call.
     12        * page/Chrome.h: Added the new method.
     13        * page/ChromeClient.h: Ditto.
     14        * page/FrameView.cpp:
     15        (WebCore::FrameView::setContentsSize): Added calculations for the preferred size
     16        and the call to contentsPreferredSizeChanged.
     17
    1182011-05-25  Levi Weintraub  <leviw@chromium.org>
    219
  • trunk/Source/WebCore/page/Chrome.cpp

    r86325 r87444  
    115115}
    116116
     117void Chrome::contentsPreferredSizeChanged(Frame* frame, const IntSize& size) const
     118{
     119    m_client->contentsPreferredSizeChanged(frame, size);
     120}
     121
    117122void Chrome::scrollRectIntoView(const IntRect& rect) const
    118123{
  • trunk/Source/WebCore/page/Chrome.h

    r86325 r87444  
    8585
    8686        void contentsSizeChanged(Frame*, const IntSize&) const;
     87        void contentsPreferredSizeChanged(Frame*, const IntSize&) const;
    8788
    8889        void setWindowRect(const FloatRect&) const;
  • trunk/Source/WebCore/page/ChromeClient.h

    r86988 r87444  
    162162
    163163        virtual void contentsSizeChanged(Frame*, const IntSize&) const = 0;
     164        virtual void contentsPreferredSizeChanged(Frame*, const IntSize&) const { }
    164165        virtual void scrollRectIntoView(const IntRect&, const ScrollView*) const = 0; // Currently only Mac has a non empty implementation.
    165166       
  • trunk/Source/WebCore/page/FrameView.cpp

    r87303 r87444  
    476476void FrameView::setContentsSize(const IntSize& size)
    477477{
    478     if (size == contentsSize())
    479         return;
    480 
    481     m_deferSetNeedsLayouts++;
    482 
    483     ScrollView::setContentsSize(size);
    484     scrollAnimator()->contentsResized();
    485    
     478    bool contentsSizeChanged = size != contentsSize();
    486479    Page* page = frame() ? frame()->page() : 0;
    487     if (!page)
    488         return;
    489 
    490     page->chrome()->contentsSizeChanged(frame(), size); //notify only
    491 
    492     m_deferSetNeedsLayouts--;
    493    
    494     if (!m_deferSetNeedsLayouts)
    495         m_setNeedsLayoutWasDeferred = false; // FIXME: Find a way to make the deferred layout actually happen.
     480    if (contentsSizeChanged) {
     481        m_deferSetNeedsLayouts++;
     482
     483        ScrollView::setContentsSize(size);
     484        scrollAnimator()->contentsResized();
     485        if (page)
     486            page->chrome()->contentsSizeChanged(frame(), size); // notify only
     487    }
     488
     489    if (page) {
     490        Document* document = frame()->document();
     491        if (document && document->renderView() && document->documentElement()) {
     492            IntSize preferedSize(document->renderView()->minPreferredLogicalWidth(),
     493                                 document->documentElement()->scrollHeight());
     494            if (preferedSize != m_lastPreferedSize) {
     495                m_lastPreferedSize = preferedSize;
     496                page->chrome()->contentsPreferredSizeChanged(frame(), preferedSize);
     497            }
     498        }
     499    }
     500
     501    if (contentsSizeChanged) {
     502        m_deferSetNeedsLayouts--;
     503
     504        if (!m_deferSetNeedsLayouts)
     505            m_setNeedsLayoutWasDeferred = false; // FIXME: Find a way to make the deferred layout actually happen.
     506    }
    496507}
    497508
  • trunk/Source/WebCore/page/FrameView.h

    r86584 r87444  
    393393    Color m_baseBackgroundColor;
    394394    IntSize m_lastLayoutSize;
     395    IntSize m_lastPreferedSize;
    395396    float m_lastZoomFactor;
    396397
  • trunk/Source/WebKit/chromium/ChangeLog

    r87423 r87444  
     12011-05-26  David Levin  <levin@chromium.org>
     2
     3        Reviewed by Darin Fisher.
     4
     5        Need a callback for when the preferred rendered size changed.
     6        https://bugs.webkit.org/show_bug.cgi?id=61309
     7
     8        * public/WebFrameClient.h
     9        (WebKit::WebFrameClient::didChangeContentsPreferredSize): Added stub.
     10        * src/ChromeClientImpl.h:
     11        (WebKit::ChromeClientImpl::contentsPreferredSizeChanged): Added declaration.
     12        * src/ChromeClientImpl.cpp:
     13        (WebKit::ChromeClientImpl::contentsPreferredSizeChanged): Added call to WebFrameClient::didChangeContentsPreferredSize.
     14
    1152011-05-26  Mihai Parparita  <mihaip@chromium.org>
    216
  • trunk/Source/WebKit/chromium/public/WebFrameClient.h

    r86721 r87444  
    308308    virtual void didChangeContentsSize(WebFrame*, const WebSize&) { }
    309309
     310    // The preferred dimensions for the rendered HTML contents changed.
     311    virtual void didChangeContentsPreferredSize(WebFrame*, const WebSize&) const { }
     312
    310313    // The main frame scrolled.
    311314    virtual void didChangeScrollOffset(WebFrame*) { }
  • trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp

    r85823 r87444  
    589589}
    590590
     591void ChromeClientImpl::contentsPreferredSizeChanged(Frame* frame, const IntSize& size) const
     592{
     593    WebFrameImpl* webframe = WebFrameImpl::fromFrame(frame);
     594    if (webframe->client())
     595        webframe->client()->didChangeContentsPreferredSize(webframe, size);
     596}
     597
    591598void ChromeClientImpl::scrollbarsModeDidChange() const
    592599{
  • trunk/Source/WebKit/chromium/src/ChromeClientImpl.h

    r86584 r87444  
    120120    virtual PlatformPageClient platformPageClient() const { return 0; }
    121121    virtual void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&) const;
     122    virtual void contentsPreferredSizeChanged(WebCore::Frame*, const WebCore::IntSize&) const;
    122123    virtual void scrollRectIntoView(
    123124        const WebCore::IntRect&, const WebCore::ScrollView*) const { }
Note: See TracChangeset for help on using the changeset viewer.