Changeset 162467 in webkit
- Timestamp:
- Jan 21, 2014 1:05:49 PM (10 years ago)
- Location:
- trunk/Source
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r162466 r162467 1 2014-01-21 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, rolling out r162452. 4 http://trac.webkit.org/changeset/162452 5 https://bugs.webkit.org/show_bug.cgi?id=127366 6 7 broke a few tests on all Mac WebKit1 bots (Requested by 8 thorton on #webkit). 9 10 * WebCore.exp.in: 11 * page/FocusController.cpp: 12 (WebCore::FocusController::FocusController): 13 (WebCore::FocusController::setFocused): 14 (WebCore::FocusController::setActive): 15 (WebCore::FocusController::setContentIsVisible): 16 * page/FocusController.h: 17 (WebCore::FocusController::isActive): 18 (WebCore::FocusController::isFocused): 19 * page/Page.cpp: 20 (WebCore::Page::Page): 21 (WebCore::Page::setIsInWindow): 22 (WebCore::Page::setIsVisuallyIdle): 23 (WebCore::Page::setIsVisible): 24 (WebCore::Page::visibilityState): 25 (WebCore::Page::hiddenPageCSSAnimationSuspensionStateChanged): 26 * page/Page.h: 27 (WebCore::Page::isVisible): 28 (WebCore::Page::isInWindow): 29 1 30 2014-01-21 Chris Fleizach <cfleizach@apple.com> 2 31 -
trunk/Source/WebCore/WebCore.exp.in
r162463 r162467 485 485 __ZN7WebCore15FocusController15setInitialFocusENS_14FocusDirectionEPNS_13KeyboardEventE 486 486 __ZN7WebCore15FocusController17setFocusedElementEPNS_7ElementEN3WTF10PassRefPtrINS_5FrameEEENS_14FocusDirectionE 487 __ZN7WebCore15FocusController19setContentIsVisibleEb 487 488 __ZN7WebCore15FocusController9setActiveEb 488 489 __ZN7WebCore15GraphicsContext10strokeRectERKNS_9FloatRectEf … … 975 976 __ZN7WebCore4Page12setGroupNameERKN3WTF6StringE 976 977 __ZN7WebCore4Page12setIsVisibleEbb 977 __ZN7WebCore4Page12setViewStateEjb978 978 __ZN7WebCore4Page13rangeOfStringERKN3WTF6StringEPNS_5RangeEj 979 979 __ZN7WebCore4Page13setIsInWindowEb … … 985 985 __ZN7WebCore4Page16setCanStartMediaEb 986 986 __ZN7WebCore4Page16setDefersLoadingEb 987 __ZN7WebCore4Page17setIsVisuallyIdleEb 987 988 __ZN7WebCore4Page18removeSchedulePairEN3WTF10PassRefPtrINS1_12SchedulePairEEE 988 989 __ZN7WebCore4Page18setPageScaleFactorEfRKNS_8IntPointE -
trunk/Source/WebCore/page/FocusController.cpp
r162452 r162467 159 159 } 160 160 161 FocusController::FocusController(Page& page , ViewState::Flags viewState)161 FocusController::FocusController(Page& page) 162 162 : m_page(page) 163 , m_isActive(false) 164 , m_isFocused(false) 163 165 , m_isChangingFocusedFrame(false) 164 , m_ viewState(viewState)166 , m_contentIsVisible(false) 165 167 { 166 168 } … … 204 206 void FocusController::setFocused(bool focused) 205 207 { 206 m_page.setViewState(focused ? m_viewState | ViewState::IsFocused : m_viewState & ~ViewState::IsFocused);207 } 208 209 void FocusController::setFocusedInternal(bool focused) 210 { 211 if (! isFocused())208 if (isFocused() == focused) 209 return; 210 211 m_isFocused = focused; 212 213 if (!m_isFocused) 212 214 focusedOrMainFrame().eventHandler().stopAutoscrollTimer(); 213 215 … … 634 636 } 635 637 636 void FocusController::setViewState(ViewState::Flags viewState)637 {638 ViewState::Flags changed = m_viewState ^ viewState;639 m_viewState = viewState;640 641 if (changed & ViewState::IsFocused)642 setFocusedInternal(viewState & ViewState::IsFocused);643 if (changed & ViewState::WindowIsActive)644 setActiveInternal(viewState & ViewState::WindowIsActive);645 if (changed & ViewState::IsVisible)646 setIsVisibleInternal(viewState & ViewState::IsVisible);647 }648 649 638 void FocusController::setActive(bool active) 650 639 { 651 m_page.setViewState(active ? m_viewState | ViewState::WindowIsActive : m_viewState & ~ViewState::WindowIsActive);652 } 653 654 void FocusController::setActiveInternal(bool active) 655 { 640 if (m_isActive == active) 641 return; 642 643 m_isActive = active; 644 656 645 if (FrameView* view = m_page.mainFrame().view()) { 657 646 if (!view->platformWidget()) { … … 675 664 } 676 665 677 void FocusController::setIsVisibleInternal(bool contentIsVisible) 678 { 666 void FocusController::setContentIsVisible(bool contentIsVisible) 667 { 668 if (m_contentIsVisible == contentIsVisible) 669 return; 670 671 m_contentIsVisible = contentIsVisible; 672 679 673 FrameView* view = m_page.mainFrame().view(); 680 674 if (!view) -
trunk/Source/WebCore/page/FocusController.h
r162452 r162467 29 29 #include "FocusDirection.h" 30 30 #include "LayoutRect.h" 31 #include "ViewState.h"32 31 #include <wtf/Forward.h> 33 32 #include <wtf/Noncopyable.h> … … 64 63 WTF_MAKE_NONCOPYABLE(FocusController); WTF_MAKE_FAST_ALLOCATED; 65 64 public: 66 explicit FocusController(Page& , ViewState::Flags);65 explicit FocusController(Page&); 67 66 68 67 void setFocusedFrame(PassRefPtr<Frame>); … … 75 74 bool setFocusedElement(Element*, PassRefPtr<Frame>, FocusDirection = FocusDirectionNone); 76 75 77 void setViewState(ViewState::Flags);78 79 76 void setActive(bool); 80 bool isActive() const { return m_ viewState & ViewState::WindowIsActive; }77 bool isActive() const { return m_isActive; } 81 78 82 79 void setFocused(bool); 83 bool isFocused() const { return m_ viewState & ViewState::IsFocused; }80 bool isFocused() const { return m_isFocused; } 84 81 85 bool contentIsVisible() const { return m_viewState & ViewState::IsVisible; }82 void setContentIsVisible(bool); 86 83 87 84 // These methods are used in WebCore/bindings/objc/DOM.mm. … … 90 87 91 88 private: 92 void setActiveInternal(bool);93 void setFocusedInternal(bool);94 void setIsVisibleInternal(bool);95 96 89 bool advanceFocusDirectionally(FocusDirection, KeyboardEvent*); 97 90 bool advanceFocusInDocumentOrder(FocusDirection, KeyboardEvent*, bool initialFocus); … … 119 112 Page& m_page; 120 113 RefPtr<Frame> m_focusedFrame; 114 bool m_isActive; 115 bool m_isFocused; 121 116 bool m_isChangingFocusedFrame; 122 ViewState::Flags m_viewState; 117 bool m_contentIsVisible; 118 123 119 }; 124 120 -
trunk/Source/WebCore/page/Page.cpp
r162452 r162467 125 125 } 126 126 127 static const ViewState::Flags PageInitialViewState = ViewState::IsVisible | ViewState::IsInWindow;128 129 127 Page::Page(PageClients& pageClients) 130 128 : m_chrome(std::make_unique<Chrome>(*this, *pageClients.chromeClient)) … … 133 131 , m_dragController(std::make_unique<DragController>(*this, *pageClients.dragClient)) 134 132 #endif 135 , m_focusController(std::make_unique<FocusController>(*this , PageInitialViewState))133 , m_focusController(std::make_unique<FocusController>(*this)) 136 134 #if ENABLE(CONTEXT_MENUS) 137 135 , m_contextMenuController(std::make_unique<ContextMenuController>(*this, *pageClients.contextMenuClient)) … … 175 173 , m_timerAlignmentInterval(Settings::defaultDOMTimerAlignmentInterval()) 176 174 , m_isEditable(false) 175 , m_isInWindow(true) 176 , m_isVisible(true) 177 177 , m_isPrerender(false) 178 , m_viewState(PageInitialViewState)179 178 , m_requestedLayoutMilestones(0) 180 179 , m_headerHeight(0) … … 883 882 void Page::setIsInWindow(bool isInWindow) 884 883 { 885 setViewState(isInWindow ? m_viewState | ViewState::IsInWindow : m_viewState & ~ViewState::IsInWindow);886 } 887 888 void Page::setIsInWindowInternal(bool isInWindow) 889 { 884 if (m_isInWindow == isInWindow) 885 return; 886 887 m_isInWindow = isInWindow; 888 890 889 for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) { 891 890 if (FrameView* frameView = frame->view()) … … 915 914 } 916 915 917 void Page::setIsVisuallyIdle Internal(bool isVisuallyIdle)916 void Page::setIsVisuallyIdle(bool isVisuallyIdle) 918 917 { 919 918 m_pageThrottler->setIsVisuallyIdle(isVisuallyIdle); … … 1218 1217 } 1219 1218 1220 void Page::setViewState(ViewState::Flags viewState, bool isInitialState)1221 {1222 ViewState::Flags changed = m_viewState ^ viewState;1223 m_viewState = viewState;1224 1225 // We want to make sure to update the active state while hidden, so if the view is going1226 // to be visible then update the focus controller first (it may currently still be hidden).1227 if (changed && (m_viewState & ViewState::IsVisible))1228 m_focusController->setViewState(viewState);1229 1230 if (changed & ViewState::IsVisible)1231 setIsVisibleInternal(viewState & ViewState::IsVisible, isInitialState);1232 if (changed & ViewState::IsInWindow)1233 setIsInWindowInternal(viewState & ViewState::IsInWindow);1234 if (changed & ViewState::IsVisuallyIdle)1235 setIsVisuallyIdleInternal(viewState & ViewState::IsVisuallyIdle);1236 1237 if (changed && !(m_viewState & ViewState::IsVisible))1238 m_focusController->setViewState(viewState);1239 }1240 1241 1219 void Page::setIsVisible(bool isVisible, bool isInitialState) 1242 {1243 setViewState(isVisible ? m_viewState | ViewState::IsVisible : m_viewState & ~ViewState::IsVisible, isInitialState);1244 }1245 1246 void Page::setIsVisibleInternal(bool isVisible, bool isInitialState)1247 1220 { 1248 1221 // FIXME: The visibility state should be stored on the top-level document. 1249 1222 // https://bugs.webkit.org/show_bug.cgi?id=116769 1223 1224 if (m_isVisible == isVisible) 1225 return; 1226 m_isVisible = isVisible; 1250 1227 1251 1228 if (isVisible) { … … 1310 1287 PageVisibilityState Page::visibilityState() const 1311 1288 { 1312 if ( isVisible())1289 if (m_isVisible) 1313 1290 return PageVisibilityStateVisible; 1314 1291 if (m_isPrerender) … … 1572 1549 void Page::hiddenPageCSSAnimationSuspensionStateChanged() 1573 1550 { 1574 if (! isVisible()) {1551 if (!m_isVisible) { 1575 1552 if (m_settings->hiddenPageCSSAnimationSuspensionEnabled()) 1576 1553 mainFrame().animation().suspendAnimations(); -
trunk/Source/WebCore/page/Page.h
r162452 r162467 32 32 #include "Region.h" 33 33 #include "Supplementable.h" 34 #include "ViewState.h"35 34 #include "ViewportArguments.h" 36 35 #include <wtf/Forward.h> … … 299 298 300 299 // Notifications when the Page starts and stops being presented via a native window. 301 void setViewState(ViewState::Flags, bool isInitial = false);302 300 void setIsVisible(bool isVisible, bool isInitial); 303 301 void setIsPrerender(); 304 bool isVisible() const { return m_ viewState & ViewState::IsVisible; }302 bool isVisible() const { return m_isVisible; } 305 303 306 304 // Notification that this Page was moved into or out of a native window. 307 305 void setIsInWindow(bool); 308 bool isInWindow() const { return m_ viewState & ViewState::IsInWindow; }306 bool isInWindow() const { return m_isInWindow; } 309 307 310 308 void suspendScriptedAnimations(); 311 309 void resumeScriptedAnimations(); 312 310 bool scriptedAnimationsSuspended() const { return m_scriptedAnimationsSuspended; } 311 void setIsVisuallyIdle(bool); 313 312 314 313 void userStyleSheetLocationChanged(); … … 427 426 void initGroup(); 428 427 429 void setIsInWindowInternal(bool);430 void setIsVisibleInternal(bool isVisible, bool isInitial);431 void setIsVisuallyIdleInternal(bool);432 433 428 #if ASSERT_DISABLED 434 429 void checkSubframeCountConsistency() const { } … … 534 529 535 530 bool m_isEditable; 531 bool m_isInWindow; 532 bool m_isVisible; 536 533 bool m_isPrerender; 537 ViewState::Flags m_viewState;538 534 539 535 LayoutMilestones m_requestedLayoutMilestones; -
trunk/Source/WebKit/mac/ChangeLog
r162452 r162467 1 2014-01-21 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, rolling out r162452. 4 http://trac.webkit.org/changeset/162452 5 https://bugs.webkit.org/show_bug.cgi?id=127366 6 7 broke a few tests on all Mac WebKit1 bots (Requested by 8 thorton on #webkit). 9 10 * WebView/WebView.mm: 11 (-[WebView _windowWillOrderOnScreen:]): 12 (-[WebView _windowWillOrderOffScreen:]): 13 1 14 2014-01-21 Gavin Barraclough <barraclough@apple.com> 2 15 -
trunk/Source/WebKit/mac/WebView/WebView.mm
r162452 r162467 5372 5372 [self doWindowDidChangeScreen]; 5373 5373 5374 if (_private && _private->page) 5374 if (_private && _private->page) { 5375 5375 _private->page->resumeScriptedAnimations(); 5376 _private->page->focusController().setContentIsVisible(true); 5377 } 5376 5378 } 5377 5379 … … 5383 5385 - (void)_windowWillOrderOffScreen:(NSNotification *)notification 5384 5386 { 5385 if (_private && _private->page) 5387 if (_private && _private->page) { 5386 5388 _private->page->suspendScriptedAnimations(); 5389 _private->page->focusController().setContentIsVisible(false); 5390 } 5387 5391 } 5388 5392 -
trunk/Source/WebKit2/ChangeLog
r162465 r162467 1 2014-01-21 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, rolling out r162452. 4 http://trac.webkit.org/changeset/162452 5 https://bugs.webkit.org/show_bug.cgi?id=127366 6 7 broke a few tests on all Mac WebKit1 bots (Requested by 8 thorton on #webkit). 9 10 * WebProcess/WebPage/WebPage.cpp: 11 (WebKit::WebPage::WebPage): 12 (WebKit::WebPage::setActive): 13 (WebKit::WebPage::setViewIsVisible): 14 (WebKit::WebPage::setFocused): 15 (WebKit::WebPage::setIsInWindow): 16 (WebKit::WebPage::setViewStateInternal): 17 (WebKit::WebPage::setIsVisuallyIdle): 18 * WebProcess/WebPage/WebPage.h: 19 1 20 2014-01-21 Martin Hock <mhock@apple.com> 2 21 -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
r162452 r162467 374 374 setMemoryCacheMessagesEnabled(parameters.areMemoryCacheClientCallsEnabled); 375 375 376 m_page->setViewState(m_viewState, true); 377 updateIsInWindow(true); 376 setActive(parameters.viewState & ViewState::WindowIsActive); 377 setFocused(parameters.viewState & ViewState::IsFocused); 378 379 // Page defaults to in-window, but setIsInWindow depends on it being a valid indicator of actually having been put into a window. 380 bool isInWindow = parameters.viewState & ViewState::IsInWindow; 381 if (!isInWindow) 382 m_page->setIsInWindow(false); 383 else 384 WebProcess::shared().pageDidEnterWindow(m_pageID); 385 386 setIsInWindow(isInWindow); 378 387 379 388 setMinimumLayoutSize(parameters.minimumLayoutSize); … … 419 428 WebProcess::shared().eventDispatcher().addScrollingTreeForPage(this); 420 429 #endif 430 431 m_page->setIsVisible(m_viewState & ViewState::IsVisible, true); 432 setIsVisuallyIdle(m_viewState & ViewState::IsVisuallyIdle); 421 433 } 422 434 … … 1913 1925 } 1914 1926 1927 void WebPage::setActive(bool isActive) 1928 { 1929 m_page->focusController().setActive(isActive); 1930 } 1931 1932 void WebPage::setViewIsVisible(bool isVisible) 1933 { 1934 corePage()->focusController().setContentIsVisible(isVisible); 1935 1936 m_page->setIsVisible(m_viewState & ViewState::IsVisible, false); 1937 } 1938 1915 1939 void WebPage::setDrawsBackground(bool drawsBackground) 1916 1940 { … … 1968 1992 } 1969 1993 1994 void WebPage::setFocused(bool isFocused) 1995 { 1996 m_page->focusController().setFocused(isFocused); 1997 } 1998 1970 1999 void WebPage::setInitialFocus(bool forward, bool isKeyboardEventValid, const WebKeyboardEvent& event) 1971 2000 { … … 2022 2051 } 2023 2052 2024 void WebPage:: updateIsInWindow(bool isInitialState)2025 { 2026 bool isInWindow = m_viewState & WebCore::ViewState::IsInWindow;2027 2053 void WebPage::setIsInWindow(bool isInWindow) 2054 { 2055 bool pageWasInWindow = m_page->isInWindow(); 2056 2028 2057 if (!isInWindow) { 2029 2058 m_setCanStartMediaTimer.stop(); 2030 2059 m_page->setCanStartMedia(false); 2031 2060 2032 // The WebProcess does not yet know about this page; no need to tell it we're leaving the window. 2033 if (!isInitialState) 2061 if (pageWasInWindow) 2034 2062 WebProcess::shared().pageWillLeaveWindow(m_pageID); 2035 2063 } else { … … 2040 2068 m_setCanStartMediaTimer.startOneShot(0); 2041 2069 2042 WebProcess::shared().pageDidEnterWindow(m_pageID); 2043 } 2070 if (!pageWasInWindow) 2071 WebProcess::shared().pageDidEnterWindow(m_pageID); 2072 } 2073 2074 m_page->setIsInWindow(isInWindow); 2044 2075 2045 2076 if (isInWindow) … … 2061 2092 2062 2093 m_drawingArea->viewStateDidChange(changed); 2063 m_page->setViewState(viewState, isInitialState); 2094 2095 // We want to make sure to update the active state while hidden, so if the view is hidden then update the active state 2096 // early (in case it becomes visible), and if the view was visible then update active state later (in case it hides). 2097 if (changed & ViewState::IsFocused) 2098 setFocused(viewState & ViewState::IsFocused); 2099 if (changed & ViewState::WindowIsActive && !(m_viewState & ViewState::IsVisible)) 2100 setActive(viewState & ViewState::WindowIsActive); 2101 if (changed & ViewState::IsVisible) 2102 setViewIsVisible(viewState & ViewState::IsVisible); 2103 if (changed & ViewState::WindowIsActive && m_viewState & ViewState::IsVisible) 2104 setActive(viewState & ViewState::WindowIsActive); 2105 if (changed & ViewState::IsInWindow) 2106 setIsInWindow(viewState & ViewState::IsInWindow); 2107 if (changed & ViewState::IsVisuallyIdle) 2108 setIsVisuallyIdle(viewState & ViewState::IsVisuallyIdle); 2109 2064 2110 for (auto* pluginView : m_pluginViews) 2065 2111 pluginView->viewStateDidChange(changed); 2066 2067 if (changed & ViewState::IsInWindow)2068 updateIsInWindow();2069 2112 } 2070 2113 … … 3670 3713 } 3671 3714 3715 void WebPage::setIsVisuallyIdle(bool isVisuallyIdle) 3716 { 3717 m_page->setIsVisuallyIdle(isVisuallyIdle); 3718 } 3719 3672 3720 void WebPage::setScrollingPerformanceLoggingEnabled(bool enabled) 3673 3721 { -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h
r162452 r162467 738 738 void setInitialFocus(bool forward, bool isKeyboardEventValid, const WebKeyboardEvent&); 739 739 void setWindowResizerSize(const WebCore::IntSize&); 740 void updateIsInWindow(bool isInitialState = false); 740 void setIsInWindow(bool); 741 void setIsVisuallyIdle(bool); 741 742 void setViewState(WebCore::ViewState::Flags, bool wantsDidUpdateViewState); 742 743 void setViewStateInternal(WebCore::ViewState::Flags, bool isInitialState);
Note: See TracChangeset
for help on using the changeset viewer.