Changeset 147617 in webkit
- Timestamp:
- Apr 4, 2013 3:47:46 AM (11 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r147598 r147617 1 2013-04-04 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> 2 3 [WK2][EFL] WebView should own view size 4 https://bugs.webkit.org/show_bug.cgi?id=110753 5 6 Reviewed by Andreas Kling. 7 8 WebView owns view size. WKViewGetSize and WKViewSetSize API 9 is exposed accordingly. Usage of EFL-specific ewkView inside 10 toolkit-agnostic WebView class is reduced. 11 12 * UIProcess/API/C/efl/WKView.cpp: 13 (WKViewGetSize): 14 (WKViewSetSize): 15 * UIProcess/API/C/efl/WKView.h: 16 * UIProcess/API/efl/EwkView.cpp: 17 (EwkView::setDeviceScaleFactor): 18 (EwkView::size): 19 (EwkView::deviceSize): 20 (EwkView::scheduleUpdateDisplay): 21 (EwkView::handleEvasObjectCalculate): 22 * UIProcess/API/efl/EwkView.h: 23 (EwkView): 24 * UIProcess/efl/WebView.cpp: 25 (WebKit::WebView::setSize): 26 (WebKit): 27 (WebKit::WebView::paintToCurrentGLContext): 28 (WebKit::WebView::updateViewportSize): 29 (WebKit::WebView::viewSize): 30 (WebKit::WebView::dipSize): 31 * UIProcess/efl/WebView.h: 32 (WebView): 33 (WebKit::WebView::size): 34 1 35 2013-04-03 Anders Carlsson <andersca@apple.com> 2 36 -
trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.cpp
r146265 r147617 39 39 { 40 40 toImpl(viewRef)->initialize(); 41 } 42 43 WKSize WKViewGetSize(WKViewRef viewRef) 44 { 45 return toAPI(toImpl(viewRef)->size()); 46 } 47 48 void WKViewSetSize(WKViewRef viewRef, WKSize size) 49 { 50 toImpl(viewRef)->setSize(toIntSize(size)); 41 51 } 42 52 -
trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.h
r146265 r147617 53 53 54 54 WK_EXPORT void WKViewInitialize(WKViewRef); 55 56 WK_EXPORT WKSize WKViewGetSize(WKViewRef); 57 WK_EXPORT void WKViewSetSize(WKViewRef, WKSize size); 58 55 59 WK_EXPORT void WKViewSetViewClient(WKViewRef, const WKViewClient*); 56 60 -
trunk/Source/WebKit2/UIProcess/API/efl/EwkView.cpp
r146265 r147617 466 466 void EwkView::setDeviceScaleFactor(float scale) 467 467 { 468 const WKSize& deviceSize = WKViewGetSize(wkView()); 468 469 page()->setIntrinsicDeviceScaleFactor(scale); 469 470 470 471 // Update internal viewport size after device-scale change. 471 setDeviceSize(deviceSize());472 WKViewSetSize(wkView(), deviceSize); 472 473 } 473 474 … … 475 476 { 476 477 return WKPageGetBackingScaleFactor(wkPage()); 477 }478 479 void EwkView::setDeviceSize(const IntSize& deviceSize)480 {481 m_deviceSize = deviceSize;482 483 DrawingAreaProxy* drawingArea = page()->drawingArea();484 if (!drawingArea)485 return;486 487 drawingArea->setSize(size(), IntSize());488 webView()->updateViewportSize();489 }490 491 IntSize EwkView::size() const492 {493 // WebPage expects a size in UI units, and not raw device units.494 FloatSize uiSize = m_deviceSize;495 uiSize.scale(1 / deviceScaleFactor());496 return roundedIntSize(uiSize);497 }498 499 IntSize EwkView::deviceSize() const500 {501 return m_deviceSize;502 478 } 503 479 … … 540 516 } 541 517 518 inline IntSize EwkView::size() const 519 { 520 // WebPage expects a size in UI units, and not raw device units. 521 FloatSize uiSize = deviceSize(); 522 uiSize.scale(1 / deviceScaleFactor()); 523 return roundedIntSize(uiSize); 524 } 525 526 inline IntSize EwkView::deviceSize() const 527 { 528 return toIntSize(WKViewGetSize(wkView())); 529 } 530 542 531 void EwkView::displayTimerFired(Timer<EwkView>*) 543 532 { … … 572 561 void EwkView::scheduleUpdateDisplay() 573 562 { 574 if ( m_deviceSize.isEmpty())563 if (deviceSize().isEmpty()) 575 564 return; 576 565 … … 1126 1115 smartData->view.h = height; 1127 1116 1128 self->setDeviceSize(IntSize(width, height)); 1117 WKViewSetSize(self->wkView(), WKSizeMake(width, height)); 1118 if (WKPageUseFixedLayout(self->wkPage())) 1119 self->pageViewportController()->didChangeViewportSize(self->size()); 1120 1129 1121 self->setNeedsSurfaceResize(); 1130 1122 } -
trunk/Source/WebKit2/UIProcess/API/efl/EwkView.h
r146265 r147617 126 126 float deviceScaleFactor() const; 127 127 128 WebCore::IntSize size() const;129 WebCore::IntSize deviceSize() const;130 131 128 WebCore::AffineTransform transformToScreen() const; 132 129 … … 212 209 void setDeviceSize(const WebCore::IntSize&); 213 210 Ewk_View_Smart_Data* smartData() const; 211 212 WebCore::IntSize size() const; 213 WebCore::IntSize deviceSize() const; 214 214 215 215 void displayTimerFired(WebCore::Timer<EwkView>*); … … 252 252 OwnPtr<WebKit::EvasGLContext> m_evasGLContext; 253 253 OwnPtr<WebKit::EvasGLSurface> m_evasGLSurface; 254 WebCore::IntSize m_deviceSize;255 254 WebCore::TransformationMatrix m_userViewportTransform; 256 255 bool m_pendingSurfaceResize; -
trunk/Source/WebKit2/UIProcess/efl/WebView.cpp
r146265 r147617 96 96 } 97 97 98 void WebView::setSize(const WebCore::IntSize& size) 99 { 100 m_size = size; 101 102 updateViewportSize(); 103 } 104 98 105 void WebView::setUserViewportTranslation(double tx, double ty) 99 106 { … … 114 121 // FIXME: We need to clean up this code as it is split over CoordGfx and Page. 115 122 scene->setDrawsBackground(m_page->drawsBackground()); 116 117 FloatRect viewport = m_userViewportTransform.mapRect(IntRect(IntPoint(), m_ewkView->deviceSize())); 123 const FloatRect& viewport = m_userViewportTransform.mapRect(IntRect(IntPoint(), m_size)); 124 118 125 scene->paintToCurrentGLContext(transformToScene().toTransformationMatrix(), /* opacity */ 1, viewport); 119 126 } … … 205 212 } 206 213 m_ewkView->scheduleUpdateDisplay(); 207 }208 209 void WebView::updateViewportSize()210 {211 if (m_page->useFixedLayout()) {212 m_ewkView->pageViewportController()->didChangeViewportSize(m_ewkView->size());213 return;214 }215 FloatPoint uiPosition(m_ewkView->pagePosition());216 uiPosition.scale(1 / m_ewkView->pageScaleFactor(), 1 / m_ewkView->pageScaleFactor());217 m_page->drawingArea()->setVisibleContentsRect(FloatRect(uiPosition, m_ewkView->size()), FloatPoint());218 214 } 219 215 … … 253 249 } 254 250 251 void WebView::updateViewportSize() 252 { 253 if (DrawingAreaProxy* drawingArea = page()->drawingArea()) { 254 // Web Process expects sizes in UI units, and not raw device units. 255 drawingArea->setSize(roundedIntSize(dipSize()), IntSize()); 256 drawingArea->setVisibleContentsRect(FloatRect(m_ewkView->pagePosition(), dipSize()), FloatPoint()); 257 } 258 } 259 260 inline WebCore::FloatSize WebView::dipSize() const 261 { 262 FloatSize dipSize(size()); 263 dipSize.scale(1 / m_page->deviceScaleFactor()); 264 265 return dipSize; 266 } 267 255 268 // Page Client 256 269 … … 278 291 WebCore::IntSize WebView::viewSize() 279 292 { 280 return m_ewkView->size();293 return roundedIntSize(dipSize()); 281 294 } 282 295 -
trunk/Source/WebKit2/UIProcess/efl/WebView.h
r147403 r147617 58 58 void initialize(); 59 59 60 void setSize(const WebCore::IntSize&); 61 const WebCore::IntSize& size() const { return m_size; } 62 60 63 void setUserViewportTranslation(double tx, double ty); 61 64 WebCore::IntPoint userViewportToContents(const WebCore::IntPoint&) const; … … 90 93 WebPageProxy* page() { return m_page.get(); } 91 94 92 void didCommitLoad(); 93 void updateViewportSize(); 95 void didCommitLoad(); 94 96 void didChangeContentsSize(const WebCore::IntSize&); 95 97 … … 102 104 WebCore::CoordinatedGraphicsScene* coordinatedGraphicsScene(); 103 105 106 void updateViewportSize(); 107 WebCore::FloatSize dipSize() const; 104 108 // PageClient 105 109 PassOwnPtr<DrawingAreaProxy> createDrawingAreaProxy() OVERRIDE; … … 181 185 DefaultUndoController m_undoController; 182 186 WebCore::TransformationMatrix m_userViewportTransform; 187 WebCore::IntSize m_size; // Size in device units. 183 188 }; 184 189
Note: See TracChangeset
for help on using the changeset viewer.