Changeset 161226 in webkit
- Timestamp:
- Jan 2, 2014 2:20:05 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r161224 r161226 1 2014-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 1 39 2014-01-02 Alexey Proskuryakov <ap@apple.com> 2 40 -
trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp
r160457 r161226 482 482 } 483 483 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); 484 void PluginView::viewStateDidChange(ViewState::Flags changed) 485 { 486 #if PLATFORM(MAC) 487 platformViewStateDidChange(changed); 488 #endif 489 } 490 491 #if PLATFORM(MAC) 492 void 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 499 512 } 500 513 … … 527 540 } 528 541 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 542 542 NSObject *PluginView::accessibilityObject() const 543 543 { … … 625 625 } 626 626 627 setWindowIsVisible(m_webPage->windowIsVisible());628 setWindowIsFocused(m_webPage->windowIsFocused());627 m_plugin->windowVisibilityChanged(m_webPage->windowIsVisible()); 628 m_plugin->windowFocusChanged(m_webPage->windowIsFocused()); 629 629 #endif 630 630 -
trunk/Source/WebKit2/WebProcess/Plugins/PluginView.h
r159001 r161226 30 30 #include "Plugin.h" 31 31 #include "PluginController.h" 32 #include "ViewState.h" 32 33 #include "WebFrame.h" 33 34 #include <WebCore/FindOptions.h> … … 69 70 void manualLoadDidFail(const WebCore::ResourceError&); 70 71 72 void viewStateDidChange(ViewState::Flags changed); 73 71 74 #if PLATFORM(MAC) 72 void setWindowIsVisible(bool); 73 void setWindowIsFocused(bool); 75 void platformViewStateDidChange(ViewState::Flags changed); 74 76 void setDeviceScaleFactor(float); 75 77 void windowAndViewFramesChanged(const WebCore::FloatRect& windowFrameInScreenCoordinates, const WebCore::FloatRect& viewFrameInWindowCoordinates); 76 78 bool sendComplexTextInput(uint64_t pluginComplexTextInputIdentifier, const String& textInput); 77 void setLayerHostingMode(LayerHostingMode);78 79 RetainPtr<PDFDocument> pdfDocumentForPrinting() const { return m_plugin->pdfDocumentForPrinting(); } 79 80 NSObject *accessibilityObject() const; -
trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h
r161148 r161226 29 29 #include "DrawingAreaInfo.h" 30 30 #include "LayerTreeContext.h" 31 #include "ViewState.h" 31 32 #include <WebCore/FloatPoint.h> 32 33 #include <WebCore/IntRect.h> … … 106 107 virtual void dispatchAfterEnsuringUpdatedScrollPosition(const Function<void ()>&); 107 108 108 virtual void suspendPainting() { } 109 virtual void resumePainting() { } 110 virtual void setLayerHostingMode(LayerHostingMode) { } 109 virtual void viewStateDidChange(ViewState::Flags changed) { } 111 110 112 111 protected: -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
r161223 r161226 1913 1913 { 1914 1914 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 #endif1921 1915 } 1922 1916 1923 1917 void WebPage::setViewIsVisible(bool isVisible) 1924 1918 { 1925 if (isVisible)1926 m_drawingArea->resumePainting();1927 else1928 m_drawingArea->suspendPainting();1929 1930 1919 m_page->setIsVisible(m_viewState & ViewState::IsVisible, false); 1931 1920 } … … 2077 2066 m_viewState = viewState; 2078 2067 2068 m_drawingArea->viewStateDidChange(changed); 2069 2079 2070 // We want to make sure to update the active state while hidden, so if the view is hidden then update the active state 2080 2071 // early (in case it becomes visible), and if the view was visible then update active state later (in case it hides). … … 2091 2082 if (changed & ViewState::IsInWindow) 2092 2083 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); 2097 2087 2098 2088 if (wantsDidUpdateViewState) … … 3053 3043 3054 3044 corePage()->focusController().setContainingWindowIsVisible(windowIsVisible); 3045 } 3055 3046 3056 3047 #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 #endif3061 }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 3072 3048 void WebPage::windowAndViewFramesChanged(const FloatRect& windowFrameInScreenCoordinates, const FloatRect& windowFrameInUnflippedScreenCoordinates, const FloatRect& viewFrameInWindowCoordinates, const FloatPoint& accessibilityViewCoordinates) 3073 3049 { -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h
r161212 r161226 348 348 349 349 bool windowIsVisible() const { return m_windowIsVisible; } 350 bool isVisible() const { return m_viewState & ViewState::IsVisible; } 350 351 351 352 #if PLATFORM(MAC) … … 358 359 #endif 359 360 } 360 void setLayerHostingMode(LayerHostingMode);361 361 362 362 void updatePluginsActiveAndFocusedState(); -
trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h
r160977 r161226 56 56 virtual ~TiledCoreAnimationDrawingArea(); 57 57 58 virtual void suspendPainting() OVERRIDE; 59 virtual void resumePainting() OVERRIDE; 58 virtual void viewStateDidChange(ViewState::Flags changed) OVERRIDE; 60 59 61 60 private: … … 102 101 virtual void updateGeometry(const WebCore::IntSize& viewSize, const WebCore::IntSize& layerPosition) OVERRIDE; 103 102 virtual void setDeviceScaleFactor(float) OVERRIDE; 104 virtual void setLayerHostingMode(LayerHostingMode) OVERRIDE; 103 void suspendPainting(); 104 void resumePainting(); 105 void setLayerHostingMode(LayerHostingMode); 105 106 virtual void setColorSpace(const ColorSpaceData&) OVERRIDE; 106 107 -
trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm
r161212 r161226 390 390 } 391 391 392 void 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 392 407 void TiledCoreAnimationDrawingArea::suspendPainting() 393 408 {
Note: See TracChangeset
for help on using the changeset viewer.