Changeset 148823 in webkit


Ignore:
Timestamp:
Apr 21, 2013 3:07:28 AM (11 years ago)
Author:
Carlos Garcia Campos
Message:

Widget should not depend on AXObjectCache
https://bugs.webkit.org/show_bug.cgi?id=114514

Reviewed by Chris Fleizach.

Source/WebCore:

Move AXObjectCache usage from platform files to FrameView.

  • WebCore.exp.in: Update symbols.
  • page/FrameView.cpp:

(WebCore::FrameView::didAddScrollbar): Handle scrollbar updates in
AXObjectCache.
(WebCore::FrameView::willRemoveScrollbar): Handle scrollbar
updates in AXObjectCache and remove the scrollbar from the cache.

  • page/FrameView.h:
  • platform/ScrollView.cpp:

(WebCore::ScrollView::setHasHorizontalScrollbar): Use
didAddScrollbar/willRemoveScrollbar
(WebCore::ScrollView::setHasVerticalScrollbar): Ditto.

  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::didAddScrollbar): This is the old
didAddVerticalScrollbar and didAddHorizontalScrollbar joined in a
single method that receives a ScrollbarOrientation parameter.
(WebCore::ScrollableArea::willRemoveScrollbar): This is the old
willRemoveVerticalScrollbar and
willRemoveHorizontalScrollbarScrollbar joined in a single method
that receives a ScrollbarOrientation parameter.

  • platform/ScrollableArea.h:

(ScrollableArea):

  • platform/Scrollbar.cpp:

(WebCore::Scrollbar::~Scrollbar): Remove AXObjectCache usage.

  • platform/Scrollbar.h:
  • platform/Widget.h:

(Widget): Remove axObjectCache() method.

  • platform/mac/ScrollAnimatorMac.h:

(ScrollAnimatorMac):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::createScrollbar): Use didAddScrollbar.
(WebCore::RenderLayer::destroyScrollbar): Use willRemoveScrollbar.

  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::createScrollbar): Use didAddScrollbar.
(WebCore::RenderListBox::destroyScrollbar): Use willRemoveScrollbar.

Source/WebKit2:

Update to API changes.

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::createScrollbar):

  • WebProcess/Plugins/PDF/SimplePDFPlugin.mm:

(WebKit::SimplePDFPlugin::createScrollbar):
(WebKit::SimplePDFPlugin::destroyScrollbar):

Location:
trunk/Source
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r148802 r148823  
     12013-04-21  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        Widget should not depend on AXObjectCache
     4        https://bugs.webkit.org/show_bug.cgi?id=114514
     5
     6        Reviewed by Chris Fleizach.
     7
     8        Move AXObjectCache usage from platform files to FrameView.
     9
     10        * WebCore.exp.in: Update symbols.
     11        * page/FrameView.cpp:
     12        (WebCore::FrameView::didAddScrollbar): Handle scrollbar updates in
     13        AXObjectCache.
     14        (WebCore::FrameView::willRemoveScrollbar): Handle scrollbar
     15        updates in AXObjectCache and remove the scrollbar from the cache.
     16        * page/FrameView.h:
     17        * platform/ScrollView.cpp:
     18        (WebCore::ScrollView::setHasHorizontalScrollbar): Use
     19        didAddScrollbar/willRemoveScrollbar
     20        (WebCore::ScrollView::setHasVerticalScrollbar): Ditto.
     21        * platform/ScrollableArea.cpp:
     22        (WebCore::ScrollableArea::didAddScrollbar): This is the old
     23        didAddVerticalScrollbar and didAddHorizontalScrollbar joined in a
     24        single method that receives a ScrollbarOrientation parameter.
     25        (WebCore::ScrollableArea::willRemoveScrollbar): This is the old
     26        willRemoveVerticalScrollbar and
     27        willRemoveHorizontalScrollbarScrollbar joined in a single method
     28        that receives a ScrollbarOrientation parameter.
     29        * platform/ScrollableArea.h:
     30        (ScrollableArea):
     31        * platform/Scrollbar.cpp:
     32        (WebCore::Scrollbar::~Scrollbar): Remove AXObjectCache usage.
     33        * platform/Scrollbar.h:
     34        * platform/Widget.h:
     35        (Widget): Remove axObjectCache() method.
     36        * platform/mac/ScrollAnimatorMac.h:
     37        (ScrollAnimatorMac):
     38        * rendering/RenderLayer.cpp:
     39        (WebCore::RenderLayer::createScrollbar): Use didAddScrollbar.
     40        (WebCore::RenderLayer::destroyScrollbar): Use willRemoveScrollbar.
     41        * rendering/RenderListBox.cpp:
     42        (WebCore::RenderListBox::createScrollbar): Use didAddScrollbar.
     43        (WebCore::RenderListBox::destroyScrollbar): Use willRemoveScrollbar.
     44
    1452013-04-20  Dirk Schulze  <krit@webkit.org>
    246
  • trunk/Source/WebCore/WebCore.exp.in

    r148712 r148823  
    366366__ZN7WebCore14SchemeRegistry62registerURLSchemeAsAllowingLocalStorageAccessInPrivateBrowsingERKN3WTF6StringE
    367367__ZN7WebCore14ScrollableArea15contentsResizedEv
     368__ZN7WebCore14ScrollableArea15didAddScrollbarEPNS_9ScrollbarENS_20ScrollbarOrientationE
    368369__ZN7WebCore14ScrollableArea16handleWheelEventERKNS_18PlatformWheelEventE
    369370__ZN7WebCore14ScrollableArea17willEndLiveResizeEv
     371__ZN7WebCore14ScrollableArea19willRemoveScrollbarEPNS_9ScrollbarENS_20ScrollbarOrientationE
    370372__ZN7WebCore14ScrollableArea19willStartLiveResizeEv
    371373__ZN7WebCore14ScrollableArea19invalidateScrollbarEPNS_9ScrollbarERKNS_7IntRectE
    372374__ZNK7WebCore14ScrollableArea21mouseEnteredScrollbarEPNS_9ScrollbarE
    373375__ZN7WebCore14ScrollableArea22invalidateScrollCornerERKNS_7IntRectE
    374 __ZN7WebCore14ScrollableArea23didAddVerticalScrollbarEPNS_9ScrollbarE
    375376__ZN7WebCore14ScrollableArea24setScrollbarOverlayStyleENS_21ScrollbarOverlayStyleE
    376 __ZN7WebCore14ScrollableArea25didAddHorizontalScrollbarEPNS_9ScrollbarE
    377 __ZN7WebCore14ScrollableArea27willRemoveVerticalScrollbarEPNS_9ScrollbarE
    378377__ZN7WebCore14ScrollableArea27notifyScrollPositionChangedERKNS_8IntPointE
    379378__ZN7WebCore14ScrollableArea28setScrollOffsetFromInternalsERKNS_8IntPointE
    380 __ZN7WebCore14ScrollableArea29willRemoveHorizontalScrollbarEPNS_9ScrollbarE
    381379__ZN7WebCore14ScrollableArea30scrollToOffsetWithoutAnimationERKNS_10FloatPointE
    382380__ZN7WebCore14ScrollableArea6scrollENS_15ScrollDirectionENS_17ScrollGranularityEf
  • trunk/Source/WebCore/page/FrameView.cpp

    r148643 r148823  
    41304130}
    41314131
     4132void FrameView::didAddScrollbar(Scrollbar* scrollbar, ScrollbarOrientation orientation)
     4133{
     4134    ScrollableArea::didAddScrollbar(scrollbar, orientation);
     4135    if (AXObjectCache* cache = axObjectCache())
     4136        cache->handleScrollbarUpdate(this);
     4137}
     4138
     4139void FrameView::willRemoveScrollbar(Scrollbar* scrollbar, ScrollbarOrientation orientation)
     4140{
     4141    ScrollableArea::willRemoveScrollbar(scrollbar, orientation);
     4142    if (AXObjectCache* cache = axObjectCache()) {
     4143        cache->remove(scrollbar);
     4144        cache->handleScrollbarUpdate(this);
     4145    }
     4146}
     4147
    41324148} // namespace WebCore
  • trunk/Source/WebCore/page/FrameView.h

    r148545 r148823  
    3939namespace WebCore {
    4040
     41class AXObjectCache;
    4142class Element;
    4243class Event;
     
    486487#endif
    487488
     489    // Override scrollbar notifications to update the AXObject cache.
     490    virtual void didAddScrollbar(Scrollbar*, ScrollbarOrientation) OVERRIDE;
     491    virtual void willRemoveScrollbar(Scrollbar*, ScrollbarOrientation) OVERRIDE;
     492
    488493    void scheduleResizeEvent();
    489494    void sendResizeEvent();
  • trunk/Source/WebCore/platform/ScrollView.cpp

    r148643 r148823  
    2727#include "ScrollView.h"
    2828
    29 #include "AXObjectCache.h"
    3029#include "GraphicsContext.h"
    3130#include "GraphicsLayer.h"
     
    9291        m_horizontalScrollbar = createScrollbar(HorizontalScrollbar);
    9392        addChild(m_horizontalScrollbar.get());
    94         didAddHorizontalScrollbar(m_horizontalScrollbar.get());
     93        didAddScrollbar(m_horizontalScrollbar.get(), HorizontalScrollbar);
    9594        m_horizontalScrollbar->styleChanged();
    9695    } else if (!hasBar && m_horizontalScrollbar) {
    97         willRemoveHorizontalScrollbar(m_horizontalScrollbar.get());
     96        willRemoveScrollbar(m_horizontalScrollbar.get(), HorizontalScrollbar);
    9897        removeChild(m_horizontalScrollbar.get());
    9998        m_horizontalScrollbar = 0;
    10099    }
    101    
    102     if (AXObjectCache* cache = axObjectCache())
    103         cache->handleScrollbarUpdate(this);
    104100}
    105101
     
    110106        m_verticalScrollbar = createScrollbar(VerticalScrollbar);
    111107        addChild(m_verticalScrollbar.get());
    112         didAddVerticalScrollbar(m_verticalScrollbar.get());
     108        didAddScrollbar(m_verticalScrollbar.get(), VerticalScrollbar);
    113109        m_verticalScrollbar->styleChanged();
    114110    } else if (!hasBar && m_verticalScrollbar) {
    115         willRemoveVerticalScrollbar(m_verticalScrollbar.get());
     111        willRemoveScrollbar(m_verticalScrollbar.get(), VerticalScrollbar);
    116112        removeChild(m_verticalScrollbar.get());
    117113        m_verticalScrollbar = 0;
    118114    }
    119    
    120     if (AXObjectCache* cache = axObjectCache())
    121         cache->handleScrollbarUpdate(this);
    122115}
    123116
  • trunk/Source/WebCore/platform/ScrollableArea.cpp

    r147888 r148823  
    262262}
    263263
    264 void ScrollableArea::didAddVerticalScrollbar(Scrollbar* scrollbar)
    265 {
    266     scrollAnimator()->didAddVerticalScrollbar(scrollbar);
     264void ScrollableArea::didAddScrollbar(Scrollbar* scrollbar, ScrollbarOrientation orientation)
     265{
     266    if (orientation == VerticalScrollbar)
     267        scrollAnimator()->didAddVerticalScrollbar(scrollbar);
     268    else
     269        scrollAnimator()->didAddHorizontalScrollbar(scrollbar);
    267270
    268271    // <rdar://problem/9797253> AppKit resets the scrollbar's style when you attach a scrollbar
     
    270273}
    271274
    272 void ScrollableArea::willRemoveVerticalScrollbar(Scrollbar* scrollbar)
    273 {
    274     scrollAnimator()->willRemoveVerticalScrollbar(scrollbar);
    275 }
    276 
    277 void ScrollableArea::didAddHorizontalScrollbar(Scrollbar* scrollbar)
    278 {
    279     scrollAnimator()->didAddHorizontalScrollbar(scrollbar);
    280 
    281     // <rdar://problem/9797253> AppKit resets the scrollbar's style when you attach a scrollbar
    282     setScrollbarOverlayStyle(scrollbarOverlayStyle());
    283 }
    284 
    285 void ScrollableArea::willRemoveHorizontalScrollbar(Scrollbar* scrollbar)
    286 {
    287     scrollAnimator()->willRemoveHorizontalScrollbar(scrollbar);
     275void ScrollableArea::willRemoveScrollbar(Scrollbar* scrollbar, ScrollbarOrientation orientation)
     276{
     277    if (orientation == VerticalScrollbar)
     278        scrollAnimator()->willRemoveVerticalScrollbar(scrollbar);
     279    else
     280        scrollAnimator()->willRemoveHorizontalScrollbar(scrollbar);
    288281}
    289282
  • trunk/Source/WebCore/platform/ScrollableArea.h

    r148031 r148823  
    8484    void finishCurrentScrollAnimations() const;
    8585
    86     void didAddVerticalScrollbar(Scrollbar*);
    87     void willRemoveVerticalScrollbar(Scrollbar*);
    88     virtual void didAddHorizontalScrollbar(Scrollbar*);
    89     virtual void willRemoveHorizontalScrollbar(Scrollbar*);
     86    virtual void didAddScrollbar(Scrollbar*, ScrollbarOrientation);
     87    virtual void willRemoveScrollbar(Scrollbar*, ScrollbarOrientation);
    9088
    9189    virtual void contentsResized();
  • trunk/Source/WebCore/platform/Scrollbar.cpp

    r147888 r148823  
    3939
    4040// FIXME: The following #includes are a layering violation and should be removed.
    41 #include "AXObjectCache.h"
    42 #include "AccessibilityScrollbar.h"
    43 #include "Document.h"
    4441#include "EventHandler.h"
    4542#include "Frame.h"
     
    111108Scrollbar::~Scrollbar()
    112109{
    113     if (AXObjectCache* cache = existingAXObjectCache())
    114         cache->remove(this);
    115    
    116110    stopTimerIfNeeded();
    117111   
     
    568562}
    569563
    570 AXObjectCache* Scrollbar::existingAXObjectCache() const
    571 {
    572     if (!parent())
    573         return 0;
    574    
    575     return parent()->axObjectCache();
    576 }
    577 
    578564void Scrollbar::invalidateRect(const IntRect& rect)
    579565{
  • trunk/Source/WebCore/platform/Scrollbar.h

    r146726 r148823  
    207207private:
    208208    virtual bool isScrollbar() const { return true; }
    209     virtual AXObjectCache* existingAXObjectCache() const;
    210209};
    211210
  • trunk/Source/WebCore/platform/Widget.h

    r147888 r148823  
    9898namespace WebCore {
    9999
    100 class AXObjectCache;
    101100class Cursor;
    102101class Event;
     
    232231    virtual IntPoint convertFromContainingView(const IntPoint&) const;
    233232
    234     // A means to access the AX cache when this object can get a pointer to it.
    235     virtual AXObjectCache* axObjectCache() const { return 0; }
    236    
    237233private:
    238234    void init(PlatformWidget); // Must be called by all Widget constructors to initialize cross-platform data.
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r148765 r148823  
    28772877    else {
    28782878        widget = Scrollbar::createNativeScrollbar(this, orientation, RegularScrollbar);
    2879         if (orientation == HorizontalScrollbar)
    2880             didAddHorizontalScrollbar(widget.get());
    2881         else
    2882             didAddVerticalScrollbar(widget.get());
     2879        didAddScrollbar(widget.get(), orientation);
    28832880    }
    28842881    renderer()->document()->view()->addChild(widget.get());       
     
    28922889        return;
    28932890
    2894     if (!scrollbar->isCustomScrollbar()) {
    2895         if (orientation == HorizontalScrollbar)
    2896             willRemoveHorizontalScrollbar(scrollbar.get());
    2897         else
    2898             willRemoveVerticalScrollbar(scrollbar.get());
    2899     }
     2891    if (!scrollbar->isCustomScrollbar())
     2892        willRemoveScrollbar(scrollbar.get(), orientation);
    29002893
    29012894    scrollbar->removeFromParent();
  • trunk/Source/WebCore/rendering/RenderListBox.cpp

    r148536 r148823  
    851851    else {
    852852        widget = Scrollbar::createNativeScrollbar(this, VerticalScrollbar, theme()->scrollbarControlSizeForPart(ListboxPart));
    853         didAddVerticalScrollbar(widget.get());
     853        didAddScrollbar(widget.get(), VerticalScrollbar);
    854854    }
    855855    document()->view()->addChild(widget.get());       
     
    863863
    864864    if (!m_vBar->isCustomScrollbar())
    865         ScrollableArea::willRemoveVerticalScrollbar(m_vBar.get());
     865        ScrollableArea::willRemoveScrollbar(m_vBar.get(), VerticalScrollbar);
    866866    m_vBar->removeFromParent();
    867867    m_vBar->disconnectFromScrollableArea();
  • trunk/Source/WebKit2/ChangeLog

    r148788 r148823  
     12013-04-21  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        Widget should not depend on AXObjectCache
     4        https://bugs.webkit.org/show_bug.cgi?id=114514
     5
     6        Reviewed by Chris Fleizach.
     7
     8        Update to API changes.
     9
     10        * WebProcess/Plugins/PDF/PDFPlugin.mm:
     11        (WebKit::PDFPlugin::createScrollbar):
     12        * WebProcess/Plugins/PDF/SimplePDFPlugin.mm:
     13        (WebKit::SimplePDFPlugin::createScrollbar):
     14        (WebKit::SimplePDFPlugin::destroyScrollbar):
     15
    1162013-04-20  Manuel Rego Casasnovas  <rego@igalia.com>
    217
  • trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm

    r148719 r148823  
    276276        m_horizontalScrollbarLayer.adoptNS([[WKPDFPluginScrollbarLayer alloc] initWithPDFPlugin:this]);
    277277        [m_containerLayer.get() addSublayer:m_horizontalScrollbarLayer.get()];
    278        
    279         didAddHorizontalScrollbar(widget.get());
    280278    } else {
    281279        m_verticalScrollbarLayer.adoptNS([[WKPDFPluginScrollbarLayer alloc] initWithPDFPlugin:this]);
    282280        [m_containerLayer.get() addSublayer:m_verticalScrollbarLayer.get()];
    283        
    284         didAddVerticalScrollbar(widget.get());
    285     }
     281    }
     282    didAddScrollbar(widget.get(), orientation);
    286283    pluginView()->frame()->view()->addChild(widget.get());
    287284    return widget.release();
  • trunk/Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.mm

    r145477 r148823  
    261261{
    262262    RefPtr<Scrollbar> widget = Scrollbar::createNativeScrollbar(this, orientation, RegularScrollbar);
    263     if (orientation == HorizontalScrollbar)
    264         didAddHorizontalScrollbar(widget.get());
    265     else
    266         didAddVerticalScrollbar(widget.get());
     263    didAddScrollbar(widget.get(), orientation);
    267264    pluginView()->frame()->view()->addChild(widget.get());
    268265    return widget.release();
     
    275272        return;
    276273
    277     if (orientation == HorizontalScrollbar)
    278         willRemoveHorizontalScrollbar(scrollbar.get());
    279     else
    280         willRemoveVerticalScrollbar(scrollbar.get());
    281 
     274    willRemoveScrollbar(scrollbar.get(), orientation);
    282275    scrollbar->removeFromParent();
    283276    scrollbar->disconnectFromScrollableArea();
Note: See TracChangeset for help on using the changeset viewer.