Changeset 57277 in webkit
- Timestamp:
- Apr 8, 2010 7:38:12 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r57276 r57277 1 2010-04-01 Antonio Gomes <tonikitoo@webkit.org> 2 3 Reviewed by David Hyatt. 4 5 [Qt] REGRESSION:(r50665) QWebFrame::setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff) has no effect. 6 https://bugs.webkit.org/show_bug.cgi?id=29431 7 8 * fast/overflow/scrollbar-restored-and-then-locked-expected.txt: Added. 9 * fast/overflow/scrollbar-restored-and-then-locked.html: Added. 10 1 11 2010-04-08 Yury Semikhatsky <yurys@chromium.org> 2 12 -
trunk/LayoutTests/platform/gtk/Skipped
r57023 r57277 5893 5893 # https://bugs.webkit.org/show_bug.cgi?id=37034 5894 5894 http/tests/media/video-play-suspend.html 5895 5896 # Need to add functionality to DumpRenderTree to handle scrollbar police changes 5897 fast/overflow/scrollbar-restored-and-then-locked.html -
trunk/LayoutTests/platform/mac/Skipped
r57192 r57277 152 152 # https://bugs.webkit.org/show_bug.cgi?id=36642 153 153 fast/replaced/border-radius-clip.html 154 155 # Need to add functionality to DumpRenderTree to handle scrollbar police changes 156 fast/overflow/scrollbar-restored-and-then-locked.html -
trunk/LayoutTests/platform/win/Skipped
r57023 r57277 823 823 # Need expectations. See https://bugs.webkit.org/show_bug.cgi?id=36461 824 824 fast/repaint/overflow-scroll-body-appear.html 825 826 # Need to add functionality to DumpRenderTree to handle scrollbar police changes 827 fast/overflow/scrollbar-restored-and-then-locked.html -
trunk/WebCore/ChangeLog
r57276 r57277 1 2010-04-01 Antonio Gomes <tonikitoo@webkit.org> 2 3 Reviewed by David Hyatt. 4 5 [Qt] REGRESSION:(r50665) QWebFrame::setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff) has no effect. 6 https://bugs.webkit.org/show_bug.cgi?id=29431 7 8 Test: fast/overflow/scrollbar-restored-and-then-locked.html 9 10 Patch introduces a lock scrollbars concept to ScrollView, as in WebDynamicScrollBarsView.mm/h 11 on WebKit/mac. It is needed because in QtWebKit, we have Api for setting both vertical and 12 horizontal scrollbars on/off/auto. When it is set to off, for example, it should remain 13 as such, unless unset. 14 15 For the locking concept, optional 'lock' parameters were added to setScrollbarModes, 16 setHorizontalScrollbarMode and setVerticalScrollbarMode methods of ScrollView. As these 17 are all optional, any previous code calling them do not need modification. 18 19 Two optional parameters were also added to Frame's createView method, for horizontal and vertical 20 lock state persistence cross page loads. 21 22 * page/Frame.cpp: 23 (WebCore::Frame::createView): 24 * platform/ScrollView.cpp: 25 (WebCore::ScrollView::ScrollView): 26 (WebCore::ScrollView::setScrollbarModes): 27 (WebCore::ScrollView::setHorizontalScrollbarMode): 28 (WebCore::ScrollView::setVerticalScrollbarMode): 29 * platform/ScrollView.h: 30 (WebCore::ScrollView::setHorizontalScrollbarLock): 31 (WebCore::ScrollView::isHorizontalScrollbarLocked): 32 (WebCore::ScrollView::setVerticalScrollbarLock): 33 (WebCore::ScrollView::isVerticalScrollbarLocked): 34 (WebCore::ScrollView::setScrollingModesLocked): 35 1 36 2010-04-08 Yury Semikhatsky <yurys@chromium.org> 2 37 -
trunk/WebCore/WebCore.base.exp
r57215 r57277 136 136 __ZN3JSC8Bindings8Instance16newRuntimeObjectEPNS_9ExecStateE 137 137 __ZN7WebCore10MouseEventC1ERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_9DOMWindowEEEiiiiibbbbtNS5_INS_11EventTargetEEENS5_INS_9ClipboardEEEb 138 __ZN7WebCore10ScrollView17setScrollbarModesENS_13ScrollbarModeES1_139 138 __ZN7WebCore10ScrollView20setCanHaveScrollbarsEb 140 139 __ZN7WebCore10StringImpl11reverseFindEPS0_ib … … 531 530 __ZN7WebCore5Cache13getStatisticsEv 532 531 __ZN7WebCore5Cache13setCapacitiesEjjj 533 __ZN7WebCore5Frame10createViewERKNS_7IntSizeERKNS_5ColorEbS3_bNS_13ScrollbarModeES7_534 532 __ZN7WebCore5Frame10findStringERKNS_6StringEbbbb 535 533 __ZN7WebCore5Frame11shouldCloseEv -
trunk/WebCore/page/Frame.cpp
r57218 r57277 1781 1781 const Color& backgroundColor, bool transparent, 1782 1782 const IntSize& fixedLayoutSize, bool useFixedLayout, 1783 ScrollbarMode horizontalScrollbarMode, ScrollbarMode verticalScrollbarMode) 1783 ScrollbarMode horizontalScrollbarMode, bool horizontalLock, 1784 ScrollbarMode verticalScrollbarMode, bool verticalLock) 1784 1785 { 1785 1786 ASSERT(this); … … 1801 1802 frameView = FrameView::create(this); 1802 1803 1803 frameView->setScrollbarModes(horizontalScrollbarMode, verticalScrollbarMode );1804 frameView->setScrollbarModes(horizontalScrollbarMode, verticalScrollbarMode, horizontalLock, verticalLock); 1804 1805 1805 1806 setView(frameView); -
trunk/WebCore/page/Frame.h
r56938 r57277 120 120 121 121 void createView(const IntSize&, const Color&, bool, const IntSize &, bool, 122 ScrollbarMode = ScrollbarAuto, ScrollbarMode = ScrollbarAuto); 122 ScrollbarMode = ScrollbarAuto, bool horizontalLock = false, 123 ScrollbarMode = ScrollbarAuto, bool verticalLock = false); 123 124 124 125 void injectUserScripts(UserScriptInjectionTime); -
trunk/WebCore/platform/ScrollView.cpp
r57165 r57277 43 43 : m_horizontalScrollbarMode(ScrollbarAuto) 44 44 , m_verticalScrollbarMode(ScrollbarAuto) 45 , m_horizontalScrollbarLock(false) 46 , m_verticalScrollbarLock(false) 45 47 , m_prohibitsScrolling(false) 46 48 , m_canBlitOnScroll(true) … … 116 118 } 117 119 118 void ScrollView::setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode) 119 { 120 if (horizontalMode == horizontalScrollbarMode() && verticalMode == verticalScrollbarMode()) 121 return; 122 m_horizontalScrollbarMode = horizontalMode; 123 m_verticalScrollbarMode = verticalMode; 120 void ScrollView::setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode, 121 bool horizontalLock, bool verticalLock) 122 { 123 bool needsUpdate = false; 124 125 if (horizontalMode != horizontalScrollbarMode() && !m_horizontalScrollbarLock) { 126 m_horizontalScrollbarMode = horizontalMode; 127 needsUpdate = true; 128 } 129 130 if (verticalMode != verticalScrollbarMode() && !m_verticalScrollbarLock) { 131 m_verticalScrollbarMode = verticalMode; 132 needsUpdate = true; 133 } 134 135 if (horizontalLock) 136 setHorizontalScrollbarLock(); 137 138 if (verticalLock) 139 setVerticalScrollbarLock(); 140 141 if (!needsUpdate) 142 return; 143 124 144 if (platformWidget()) 125 145 platformSetScrollbarModes(); -
trunk/WebCore/platform/ScrollView.h
r57165 r57277 84 84 // Note that for platforms with native widgets, these modes are considered advisory. In other words the underlying native 85 85 // widget may choose not to honor the requested modes. 86 void setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode );87 void setHorizontalScrollbarMode(ScrollbarMode mode ) { setScrollbarModes(mode, verticalScrollbarMode()); }88 void setVerticalScrollbarMode(ScrollbarMode mode ) { setScrollbarModes(horizontalScrollbarMode(), mode); }86 void setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode, bool horizontalLock = false, bool verticalLock = false); 87 void setHorizontalScrollbarMode(ScrollbarMode mode, bool lock = false) { setScrollbarModes(mode, verticalScrollbarMode(), lock, verticalScrollbarLock()); } 88 void setVerticalScrollbarMode(ScrollbarMode mode, bool lock = false) { setScrollbarModes(horizontalScrollbarMode(), mode, horizontalScrollbarLock(), lock); }; 89 89 void scrollbarModes(ScrollbarMode& horizontalMode, ScrollbarMode& verticalMode) const; 90 90 ScrollbarMode horizontalScrollbarMode() const { ScrollbarMode horizontal, vertical; scrollbarModes(horizontal, vertical); return horizontal; } 91 91 ScrollbarMode verticalScrollbarMode() const { ScrollbarMode horizontal, vertical; scrollbarModes(horizontal, vertical); return vertical; } 92 93 void setHorizontalScrollbarLock(bool lock = true) { m_horizontalScrollbarLock = lock; } 94 bool horizontalScrollbarLock() const { return m_horizontalScrollbarLock; } 95 void setVerticalScrollbarLock(bool lock = true) { m_verticalScrollbarLock = lock; } 96 bool verticalScrollbarLock() const { return m_verticalScrollbarLock; } 97 98 void setScrollingModesLock(bool lock = true) { m_horizontalScrollbarLock = m_verticalScrollbarLock = lock; } 99 92 100 virtual void setCanHaveScrollbars(bool); 93 101 bool canHaveScrollbars() const { return horizontalScrollbarMode() != ScrollbarAlwaysOff || verticalScrollbarMode() != ScrollbarAlwaysOff; } … … 258 266 ScrollbarMode m_horizontalScrollbarMode; 259 267 ScrollbarMode m_verticalScrollbarMode; 268 269 bool m_horizontalScrollbarLock; 270 bool m_verticalScrollbarLock; 271 260 272 bool m_prohibitsScrolling; 261 273 -
trunk/WebCore/platform/gtk/ScrollViewGtk.cpp
r54620 r57277 169 169 } 170 170 171 void ScrollView::setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode )171 void ScrollView::setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode, bool, bool) 172 172 { 173 173 if (horizontalMode == m_horizontalScrollbarMode && verticalMode == m_verticalScrollbarMode) -
trunk/WebKit/qt/Api/qwebframe.cpp
r57266 r57277 1048 1048 d->horizontalScrollBarPolicy = policy; 1049 1049 if (d->frame->view()) { 1050 d->frame->view()->setHorizontalScrollbarMode((ScrollbarMode)policy );1050 d->frame->view()->setHorizontalScrollbarMode((ScrollbarMode)policy, policy != Qt::ScrollBarAsNeeded /* lock */); 1051 1051 d->frame->view()->updateCanHaveScrollbars(); 1052 1052 } … … 1054 1054 d->verticalScrollBarPolicy = policy; 1055 1055 if (d->frame->view()) { 1056 d->frame->view()->setVerticalScrollbarMode((ScrollbarMode)policy );1056 d->frame->view()->setVerticalScrollbarMode((ScrollbarMode)policy, policy != Qt::ScrollBarAsNeeded /* lock */); 1057 1057 d->frame->view()->updateCanHaveScrollbars(); 1058 1058 } -
trunk/WebKit/qt/ChangeLog
r57270 r57277 1 2010-04-01 Antonio Gomes <tonikitoo@webkit.org> 2 3 Reviewed by David Hyatt. 4 5 [Qt] REGRESSION:(r50665) QWebFrame::setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff) has no effect. 6 https://bugs.webkit.org/show_bug.cgi?id=29431 7 8 Make use of the new lock parameter of set{Vertical,Horizontal}ScrollbarMode. 9 10 Always added a qt auto test for set scrollbar policy feature. 11 12 * Api/qwebframe.cpp: 13 (QWebFrame::setScrollBarPolicy): 14 * tests/qwebframe/tst_qwebframe.cpp: 15 * WebCoreSupport/FrameLoaderClientQt.cpp: 16 (FrameLoaderClientQt::transitionToCommittedForNewPage): 17 1 18 2010-04-08 Joe Ligman <joseph.ligman@nokia.com> 2 19 -
trunk/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
r57210 r57277 216 216 const QSize preferredLayoutSize = page->preferredContentsSize(); 217 217 218 ScrollbarMode hScrollbar = (ScrollbarMode) m_webFrame->scrollBarPolicy(Qt::Horizontal); 219 ScrollbarMode vScrollbar = (ScrollbarMode) m_webFrame->scrollBarPolicy(Qt::Vertical); 220 bool hLock = hScrollbar != ScrollbarAuto; 221 bool vLock = vScrollbar != ScrollbarAuto; 222 218 223 m_frame->createView(m_webFrame->page()->viewportSize(), 219 224 backgroundColor, !backgroundColor.alpha(), 220 225 preferredLayoutSize.isValid() ? IntSize(preferredLayoutSize) : IntSize(), 221 226 preferredLayoutSize.isValid(), 222 (ScrollbarMode)m_webFrame->scrollBarPolicy(Qt::Horizontal),223 (ScrollbarMode)m_webFrame->scrollBarPolicy(Qt::Vertical));227 hScrollbar, hLock, 228 vScrollbar, vLock); 224 229 } 225 230 -
trunk/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
r56208 r57277 586 586 void scrollPosition(); 587 587 void scrollToAnchor(); 588 void scrollbarsOff(); 588 589 void evaluateWillCauseRepaint(); 589 590 void qObjectWrapperWithSameIdentity(); … … 2797 2798 } 2798 2799 2800 2801 void tst_QWebFrame::scrollbarsOff() 2802 { 2803 QWebView view; 2804 QWebFrame* mainFrame = view.page()->mainFrame(); 2805 2806 mainFrame->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff); 2807 mainFrame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff); 2808 2809 QString html("<script>" \ 2810 " function checkScrollbar() {" \ 2811 " if (innerWidth === document.documentElement.offsetWidth)" \ 2812 " document.getElementById('span1').innerText = 'SUCCESS';" \ 2813 " else" \ 2814 " document.getElementById('span1').innerText = 'FAIL';" \ 2815 " }" \ 2816 "</script>" \ 2817 "<body>" \ 2818 " <div style='margin-top:1000px ; margin-left:1000px'>" \ 2819 " <a id='offscreen' href='a'>End</a>" \ 2820 " </div>" \ 2821 "<span id='span1'></span>" \ 2822 "</body>"); 2823 2824 2825 view.setHtml(html); 2826 ::waitForSignal(&view, SIGNAL(loadFinished(bool))); 2827 2828 mainFrame->evaluateJavaScript("checkScrollbar();"); 2829 QCOMPARE(mainFrame->documentElement().findAll("span").at(0).toPlainText(), QString("SUCCESS")); 2830 } 2831 2799 2832 void tst_QWebFrame::evaluateWillCauseRepaint() 2800 2833 { -
trunk/WebKitTools/ChangeLog
r57265 r57277 1 2010-04-01 Antonio Gomes <tonikitoo@webkit.org> 2 3 Reviewed by David Hyatt. 4 5 [Qt] REGRESSION:(r50665) QWebFrame::setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff) has no effect. 6 https://bugs.webkit.org/show_bug.cgi?id=29431 7 8 Make possible to DRT to set scrollbar policies (on, off or auto). 9 10 * DumpRenderTree/qt/LayoutTestControllerQt.cpp: 11 (LayoutTestController::setScrollbarPolicy): 12 * DumpRenderTree/qt/LayoutTestControllerQt.h: 13 * QtLauncher/main.cpp: 14 (LauncherWindow::toggleScrollbars): 15 (LauncherWindow::createChrome): 16 1 17 2010-04-08 Adam Barth <abarth@webkit.org> 2 18 -
trunk/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp
r57131 r57277 448 448 qt_drt_clearFrameName(m_page->mainFrame()); 449 449 450 m_page->mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAsNeeded); 451 m_page->mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAsNeeded); 452 450 453 WorkQueue::shared()->clear(); 451 454 WorkQueue::shared()->setFrozen(false); -
trunk/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp
r56740 r57277 542 542 } 543 543 544 void LayoutTestController::setScrollbarPolicy(const QString& orientation, const QString& policy) 545 { 546 Qt::Orientation o; 547 Qt::ScrollBarPolicy p; 548 549 if (orientation == "vertical") 550 o = Qt::Vertical; 551 else if (orientation == "horizontal") 552 o = Qt::Horizontal; 553 else 554 return; 555 556 if (policy == "on") 557 p = Qt::ScrollBarAlwaysOn; 558 else if (policy == "auto") 559 p = Qt::ScrollBarAsNeeded; 560 else if (policy == "off") 561 p = Qt::ScrollBarAlwaysOff; 562 else 563 return; 564 565 m_drt->webPage()->mainFrame()->setScrollBarPolicy(o, p); 566 } 567 544 568 const unsigned LayoutTestController::maxViewWidth = 800; 545 569 const unsigned LayoutTestController::maxViewHeight = 600; -
trunk/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h
r56740 r57277 166 166 bool callShouldCloseOnWebView(); 167 167 168 /* 169 Policy values: 'on', 'auto' or 'off'. 170 Orientation values: 'vertical' or 'horizontal'. 171 */ 172 void setScrollbarPolicy(const QString& orientation, const QString& policy); 173 168 174 private slots: 169 175 void processWork();
Note: See TracChangeset
for help on using the changeset viewer.