Changeset 161226 in webkit


Ignore:
Timestamp:
Jan 2, 2014 2:20:05 PM (10 years ago)
Author:
barraclough@apple.com
Message:

Refactor ViewState handling for drawing area / plugins
https://bugs.webkit.org/show_bug.cgi?id=126272

Reviewed by Tim Horton.

Instead of all ViewState changes being handled by the WebPage, notify the DrawingArea & PluginView to better encapsulate.

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::viewStateDidChange):
(WebKit::PluginView::platformViewStateDidChange):

  • added, handle changes in ViewState relevant to PluginView.

(WebKit::PluginView::didInitializePlugin):

  • helper function removed.
  • WebProcess/Plugins/PluginView.h:
    • added/removed function declarations.
  • WebProcess/WebPage/DrawingArea.h:

(WebKit::DrawingArea::viewStateDidChange):

  • declare viewStateDidChange.
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setActive):

  • no need to notify plugin.

(WebKit::WebPage::setViewIsVisible):

  • no need to notify drawing area.

(WebKit::WebPage::setViewState):

  • send viewStateDidChange to drawing area / plugin.

(WebKit::WebPage::setWindowIsVisible):

  • no need to notify plugin.
  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::layerHostingMode):

  • removed setLayerHostingMode.
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
    • declare viewStateDidChange.
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::viewStateDidChange):

  • added, handle changes in ViewState relevant to DrawingArea.
Location:
trunk/Source/WebKit2
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r161224 r161226  
     12014-01-02  Gavin Barraclough  <barraclough@apple.com>
     2
     3        Refactor ViewState handling for drawing area / plugins
     4        https://bugs.webkit.org/show_bug.cgi?id=126272
     5
     6        Reviewed by Tim Horton.
     7
     8        Instead of all ViewState changes being handled by the WebPage, notify the DrawingArea & PluginView to better encapsulate.
     9
     10        * WebProcess/Plugins/PluginView.cpp:
     11        (WebKit::PluginView::viewStateDidChange):
     12        (WebKit::PluginView::platformViewStateDidChange):
     13            - added, handle changes in ViewState relevant to PluginView.
     14        (WebKit::PluginView::didInitializePlugin):
     15            - helper function removed.
     16        * WebProcess/Plugins/PluginView.h:
     17            - added/removed function declarations.
     18        * WebProcess/WebPage/DrawingArea.h:
     19        (WebKit::DrawingArea::viewStateDidChange):
     20            - declare viewStateDidChange.
     21        * WebProcess/WebPage/WebPage.cpp:
     22        (WebKit::WebPage::setActive):
     23            - no need to notify plugin.
     24        (WebKit::WebPage::setViewIsVisible):
     25            - no need to notify drawing area.
     26        (WebKit::WebPage::setViewState):
     27            - send viewStateDidChange to drawing area / plugin.
     28        (WebKit::WebPage::setWindowIsVisible):
     29            - no need to notify plugin.
     30        * WebProcess/WebPage/WebPage.h:
     31        (WebKit::WebPage::layerHostingMode):
     32            - removed setLayerHostingMode.
     33        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
     34            - declare viewStateDidChange.
     35        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
     36        (WebKit::TiledCoreAnimationDrawingArea::viewStateDidChange):
     37            - added, handle changes in ViewState relevant to DrawingArea.
     38
    1392014-01-02  Alexey Proskuryakov  <ap@apple.com>
    240
  • trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp

    r160457 r161226  
    482482}
    483483
    484 #if PLATFORM(MAC)   
    485 void PluginView::setWindowIsVisible(bool windowIsVisible)
    486 {
    487     if (!m_isInitialized || !m_plugin)
    488         return;
    489 
    490     m_plugin->windowVisibilityChanged(windowIsVisible);
    491 }
    492 
    493 void PluginView::setWindowIsFocused(bool windowIsFocused)
    494 {
    495     if (!m_isInitialized || !m_plugin)
    496         return;
    497 
    498     m_plugin->windowFocusChanged(windowIsFocused);   
     484void PluginView::viewStateDidChange(ViewState::Flags changed)
     485{
     486#if PLATFORM(MAC)
     487    platformViewStateDidChange(changed);
     488#endif
     489}
     490
     491#if PLATFORM(MAC)
     492void PluginView::platformViewStateDidChange(ViewState::Flags changed)
     493{
     494    if (!m_plugin)
     495        return;
     496
     497    if (!m_isInitialized) {
     498#if HAVE(LAYER_HOSTING_IN_WINDOW_SERVER)
     499        m_parameters.layerHostingMode = m_webPage->layerHostingMode();
     500#endif
     501        return;
     502    }
     503
     504    if (changed & ViewState::WindowIsVisible)
     505        m_plugin->windowVisibilityChanged(m_webPage->windowIsVisible());
     506    if (changed & ViewState::WindowIsActive)
     507        m_plugin->windowFocusChanged(m_webPage->windowIsFocused());
     508#if HAVE(LAYER_HOSTING_IN_WINDOW_SERVER)
     509    if (changed & ViewState::IsLayerWindowServerHosted)
     510        m_plugin->setLayerHostingMode(m_webPage->layerHostingMode());
     511#endif
    499512}
    500513
     
    527540}
    528541
    529 void PluginView::setLayerHostingMode(LayerHostingMode layerHostingMode)
    530 {
    531     if (!m_plugin)
    532         return;
    533 
    534     if (!m_isInitialized) {
    535         m_parameters.layerHostingMode = layerHostingMode;
    536         return;
    537     }
    538 
    539     m_plugin->setLayerHostingMode(layerHostingMode);
    540 }
    541    
    542542NSObject *PluginView::accessibilityObject() const
    543543{
     
    625625    }
    626626
    627     setWindowIsVisible(m_webPage->windowIsVisible());
    628     setWindowIsFocused(m_webPage->windowIsFocused());
     627    m_plugin->windowVisibilityChanged(m_webPage->windowIsVisible());
     628    m_plugin->windowFocusChanged(m_webPage->windowIsFocused());
    629629#endif
    630630
  • trunk/Source/WebKit2/WebProcess/Plugins/PluginView.h

    r159001 r161226  
    3030#include "Plugin.h"
    3131#include "PluginController.h"
     32#include "ViewState.h"
    3233#include "WebFrame.h"
    3334#include <WebCore/FindOptions.h>
     
    6970    void manualLoadDidFail(const WebCore::ResourceError&);
    7071
     72    void viewStateDidChange(ViewState::Flags changed);
     73
    7174#if PLATFORM(MAC)
    72     void setWindowIsVisible(bool);
    73     void setWindowIsFocused(bool);
     75    void platformViewStateDidChange(ViewState::Flags changed);
    7476    void setDeviceScaleFactor(float);
    7577    void windowAndViewFramesChanged(const WebCore::FloatRect& windowFrameInScreenCoordinates, const WebCore::FloatRect& viewFrameInWindowCoordinates);
    7678    bool sendComplexTextInput(uint64_t pluginComplexTextInputIdentifier, const String& textInput);
    77     void setLayerHostingMode(LayerHostingMode);
    7879    RetainPtr<PDFDocument> pdfDocumentForPrinting() const { return m_plugin->pdfDocumentForPrinting(); }
    7980    NSObject *accessibilityObject() const;
  • trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h

    r161148 r161226  
    2929#include "DrawingAreaInfo.h"
    3030#include "LayerTreeContext.h"
     31#include "ViewState.h"
    3132#include <WebCore/FloatPoint.h>
    3233#include <WebCore/IntRect.h>
     
    106107    virtual void dispatchAfterEnsuringUpdatedScrollPosition(const Function<void ()>&);
    107108
    108     virtual void suspendPainting() { }
    109     virtual void resumePainting() { }
    110     virtual void setLayerHostingMode(LayerHostingMode) { }
     109    virtual void viewStateDidChange(ViewState::Flags changed) { }
    111110
    112111protected:
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r161223 r161226  
    19131913{
    19141914    m_page->focusController().setActive(isActive);
    1915 
    1916 #if PLATFORM(MAC)   
    1917     // Tell all our plug-in views that the window focus changed.
    1918     for (auto* pluginView : m_pluginViews)
    1919         pluginView->setWindowIsFocused(isActive);
    1920 #endif
    19211915}
    19221916
    19231917void WebPage::setViewIsVisible(bool isVisible)
    19241918{
    1925     if (isVisible)
    1926         m_drawingArea->resumePainting();
    1927     else
    1928         m_drawingArea->suspendPainting();
    1929 
    19301919    m_page->setIsVisible(m_viewState & ViewState::IsVisible, false);
    19311920}
     
    20772066    m_viewState = viewState;
    20782067
     2068    m_drawingArea->viewStateDidChange(changed);
     2069
    20792070    // We want to make sure to update the active state while hidden, so if the view is hidden then update the active state
    20802071    // early (in case it becomes visible), and if the view was visible then update active state later (in case it hides).
     
    20912082    if (changed & ViewState::IsInWindow)
    20922083        setIsInWindow(viewState & ViewState::IsInWindow);
    2093 #if HAVE(LAYER_HOSTING_IN_WINDOW_SERVER)
    2094     if (changed & ViewState::IsLayerWindowServerHosted)
    2095         setLayerHostingMode(layerHostingMode());
    2096 #endif
     2084
     2085    for (auto* pluginView : m_pluginViews)
     2086        pluginView->viewStateDidChange(changed);
    20972087
    20982088    if (wantsDidUpdateViewState)
     
    30533043
    30543044    corePage()->focusController().setContainingWindowIsVisible(windowIsVisible);
     3045}
    30553046
    30563047#if PLATFORM(MAC)
    3057     // Tell all our plug-in views that the window visibility changed.
    3058     for (auto* pluginView : m_pluginViews)
    3059         pluginView->setWindowIsVisible(windowIsVisible);
    3060 #endif
    3061 }
    3062 
    3063 #if PLATFORM(MAC)
    3064 void WebPage::setLayerHostingMode(LayerHostingMode layerHostingMode)
    3065 {
    3066     for (auto* pluginView : m_pluginViews)
    3067         pluginView->setLayerHostingMode(layerHostingMode);
    3068 
    3069     m_drawingArea->setLayerHostingMode(layerHostingMode);
    3070 }
    3071 
    30723048void WebPage::windowAndViewFramesChanged(const FloatRect& windowFrameInScreenCoordinates, const FloatRect& windowFrameInUnflippedScreenCoordinates, const FloatRect& viewFrameInWindowCoordinates, const FloatPoint& accessibilityViewCoordinates)
    30733049{
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h

    r161212 r161226  
    348348
    349349    bool windowIsVisible() const { return m_windowIsVisible; }
     350    bool isVisible() const { return m_viewState & ViewState::IsVisible; }
    350351
    351352#if PLATFORM(MAC)
     
    358359#endif
    359360    }
    360     void setLayerHostingMode(LayerHostingMode);
    361361
    362362    void updatePluginsActiveAndFocusedState();
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h

    r160977 r161226  
    5656    virtual ~TiledCoreAnimationDrawingArea();
    5757
    58     virtual void suspendPainting() OVERRIDE;
    59     virtual void resumePainting() OVERRIDE;
     58    virtual void viewStateDidChange(ViewState::Flags changed) OVERRIDE;
    6059
    6160private:
     
    102101    virtual void updateGeometry(const WebCore::IntSize& viewSize, const WebCore::IntSize& layerPosition) OVERRIDE;
    103102    virtual void setDeviceScaleFactor(float) OVERRIDE;
    104     virtual void setLayerHostingMode(LayerHostingMode) OVERRIDE;
     103    void suspendPainting();
     104    void resumePainting();
     105    void setLayerHostingMode(LayerHostingMode);
    105106    virtual void setColorSpace(const ColorSpaceData&) OVERRIDE;
    106107
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm

    r161212 r161226  
    390390}
    391391
     392void TiledCoreAnimationDrawingArea::viewStateDidChange(ViewState::Flags changed)
     393{
     394    if (changed & ViewState::IsVisible) {
     395        if (m_webPage->isVisible())
     396            resumePainting();
     397        else
     398            suspendPainting();
     399    }
     400
     401#if HAVE(LAYER_HOSTING_IN_WINDOW_SERVER)
     402    if (changed & ViewState::IsLayerWindowServerHosted)
     403        setLayerHostingMode(m_webPage->layerHostingMode());
     404#endif
     405}
     406
    392407void TiledCoreAnimationDrawingArea::suspendPainting()
    393408{
Note: See TracChangeset for help on using the changeset viewer.