Changeset 147617 in webkit


Ignore:
Timestamp:
Apr 4, 2013 3:47:46 AM (11 years ago)
Author:
mikhail.pozdnyakov@intel.com
Message:

[WK2][EFL] WebView should own view size
https://bugs.webkit.org/show_bug.cgi?id=110753

Reviewed by Andreas Kling.

WebView owns view size. WKViewGetSize and WKViewSetSize API
is exposed accordingly. Usage of EFL-specific ewkView inside
toolkit-agnostic WebView class is reduced.

  • UIProcess/API/C/efl/WKView.cpp:

(WKViewGetSize):
(WKViewSetSize):

  • UIProcess/API/C/efl/WKView.h:
  • UIProcess/API/efl/EwkView.cpp:

(EwkView::setDeviceScaleFactor):
(EwkView::size):
(EwkView::deviceSize):
(EwkView::scheduleUpdateDisplay):
(EwkView::handleEvasObjectCalculate):

  • UIProcess/API/efl/EwkView.h:

(EwkView):

  • UIProcess/efl/WebView.cpp:

(WebKit::WebView::setSize):
(WebKit):
(WebKit::WebView::paintToCurrentGLContext):
(WebKit::WebView::updateViewportSize):
(WebKit::WebView::viewSize):
(WebKit::WebView::dipSize):

  • UIProcess/efl/WebView.h:

(WebView):
(WebKit::WebView::size):

Location:
trunk/Source/WebKit2
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r147598 r147617  
     12013-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
    1352013-04-03  Anders Carlsson  <andersca@apple.com>
    236
  • trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.cpp

    r146265 r147617  
    3939{
    4040    toImpl(viewRef)->initialize();
     41}
     42
     43WKSize WKViewGetSize(WKViewRef viewRef)
     44{
     45    return toAPI(toImpl(viewRef)->size());
     46}
     47
     48void WKViewSetSize(WKViewRef viewRef, WKSize size)
     49{
     50    toImpl(viewRef)->setSize(toIntSize(size));
    4151}
    4252
  • trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.h

    r146265 r147617  
    5353
    5454WK_EXPORT void WKViewInitialize(WKViewRef);
     55
     56WK_EXPORT WKSize WKViewGetSize(WKViewRef);
     57WK_EXPORT void WKViewSetSize(WKViewRef, WKSize size);
     58
    5559WK_EXPORT void WKViewSetViewClient(WKViewRef, const WKViewClient*);
    5660
  • trunk/Source/WebKit2/UIProcess/API/efl/EwkView.cpp

    r146265 r147617  
    466466void EwkView::setDeviceScaleFactor(float scale)
    467467{
     468    const WKSize& deviceSize = WKViewGetSize(wkView());
    468469    page()->setIntrinsicDeviceScaleFactor(scale);
    469470
    470471    // Update internal viewport size after device-scale change.
    471     setDeviceSize(deviceSize());
     472    WKViewSetSize(wkView(), deviceSize);
    472473}
    473474
     
    475476{
    476477    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() const
    492 {
    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() const
    500 {
    501     return m_deviceSize;
    502478}
    503479
     
    540516}
    541517
     518inline 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
     526inline IntSize EwkView::deviceSize() const
     527{
     528    return toIntSize(WKViewGetSize(wkView()));
     529}
     530
    542531void EwkView::displayTimerFired(Timer<EwkView>*)
    543532{
     
    572561void EwkView::scheduleUpdateDisplay()
    573562{
    574     if (m_deviceSize.isEmpty())
     563    if (deviceSize().isEmpty())
    575564        return;
    576565
     
    11261115        smartData->view.h = height;
    11271116
    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
    11291121        self->setNeedsSurfaceResize();
    11301122    }
  • trunk/Source/WebKit2/UIProcess/API/efl/EwkView.h

    r146265 r147617  
    126126    float deviceScaleFactor() const;
    127127
    128     WebCore::IntSize size() const;
    129     WebCore::IntSize deviceSize() const;
    130 
    131128    WebCore::AffineTransform transformToScreen() const;
    132129
     
    212209    void setDeviceSize(const WebCore::IntSize&);
    213210    Ewk_View_Smart_Data* smartData() const;
     211
     212    WebCore::IntSize size() const;
     213    WebCore::IntSize deviceSize() const;
    214214
    215215    void displayTimerFired(WebCore::Timer<EwkView>*);
     
    252252    OwnPtr<WebKit::EvasGLContext> m_evasGLContext;
    253253    OwnPtr<WebKit::EvasGLSurface> m_evasGLSurface;
    254     WebCore::IntSize m_deviceSize;
    255254    WebCore::TransformationMatrix m_userViewportTransform;
    256255    bool m_pendingSurfaceResize;
  • trunk/Source/WebKit2/UIProcess/efl/WebView.cpp

    r146265 r147617  
    9696}
    9797
     98void WebView::setSize(const WebCore::IntSize& size)
     99{
     100    m_size = size;
     101
     102    updateViewportSize();
     103}
     104
    98105void WebView::setUserViewportTranslation(double tx, double ty)
    99106{
     
    114121    // FIXME: We need to clean up this code as it is split over CoordGfx and Page.
    115122    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
    118125    scene->paintToCurrentGLContext(transformToScene().toTransformationMatrix(), /* opacity */ 1, viewport);
    119126}
     
    205212    }
    206213    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());
    218214}
    219215
     
    253249}
    254250
     251void 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
     260inline WebCore::FloatSize WebView::dipSize() const
     261{
     262    FloatSize dipSize(size());
     263    dipSize.scale(1 / m_page->deviceScaleFactor());
     264
     265    return dipSize;
     266}
     267
    255268// Page Client
    256269
     
    278291WebCore::IntSize WebView::viewSize()
    279292{
    280     return m_ewkView->size();
     293    return roundedIntSize(dipSize());
    281294}
    282295
  • trunk/Source/WebKit2/UIProcess/efl/WebView.h

    r147403 r147617  
    5858    void initialize();
    5959
     60    void setSize(const WebCore::IntSize&);
     61    const WebCore::IntSize& size() const { return m_size; }
     62
    6063    void setUserViewportTranslation(double tx, double ty);
    6164    WebCore::IntPoint userViewportToContents(const WebCore::IntPoint&) const;
     
    9093    WebPageProxy* page() { return m_page.get(); }
    9194
    92     void didCommitLoad();
    93     void updateViewportSize();
     95    void didCommitLoad();   
    9496    void didChangeContentsSize(const WebCore::IntSize&);
    9597
     
    102104    WebCore::CoordinatedGraphicsScene* coordinatedGraphicsScene();
    103105
     106    void updateViewportSize();
     107    WebCore::FloatSize dipSize() const;
    104108    // PageClient
    105109    PassOwnPtr<DrawingAreaProxy> createDrawingAreaProxy() OVERRIDE;
     
    181185    DefaultUndoController m_undoController;
    182186    WebCore::TransformationMatrix m_userViewportTransform;
     187    WebCore::IntSize m_size; // Size in device units.
    183188};
    184189
Note: See TracChangeset for help on using the changeset viewer.