Changeset 147913 in webkit


Ignore:
Timestamp:
Apr 8, 2013 7:49:47 AM (11 years ago)
Author:
mikhail.pozdnyakov@intel.com
Message:

[WK2][EFL] WebView: Add callbacks to the WKViewClient to remove direct access to page viewport controller
https://bugs.webkit.org/show_bug.cgi?id=110741

Reviewed by Anders Carlsson.

Provided WKViewClient with didRequestScroll, didRenderFrame and didCompletePageTransition
callbacks so that direct access from WebView to page viewport controller is avoided.

Implementation of callbacks is also added to keep the current EFL WK2 functionality.

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

(WebKit::PageLoadClientEfl::didCommitLoadForFrame):

Moved here code from deleted WebView::didCommitLoad.

  • UIProcess/efl/ViewClientEfl.cpp:

(WebKit::ViewClientEfl::didChangeContentsPosition):
(WebKit):
(WebKit::ViewClientEfl::didRenderFrame):
(WebKit::ViewClientEfl::didCompletePageTransition):
(WebKit::ViewClientEfl::ViewClientEfl):

  • UIProcess/efl/ViewClientEfl.h:

(ViewClientEfl):

  • UIProcess/efl/WebView.cpp:

(WebKit::WebView::pageDidRequestScroll):
(WebKit::WebView::didRenderFrame):
(WebKit::WebView::pageTransitionViewportReady):

  • UIProcess/efl/WebViewClient.cpp:

(WebKit::WebViewClient::didChangeContentsPosition):
(WebKit):
(WebKit::WebViewClient::didRenderFrame):
(WebKit::WebViewClient::didCompletePageTransition):

  • UIProcess/efl/WebViewClient.h:

(WebCore):

Location:
trunk/Source/WebKit2
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r147909 r147913  
     12013-04-08  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
     2
     3        [WK2][EFL] WebView: Add callbacks to the WKViewClient to remove direct access to page viewport controller
     4        https://bugs.webkit.org/show_bug.cgi?id=110741
     5
     6        Reviewed by Anders Carlsson.
     7
     8        Provided WKViewClient with didRequestScroll, didRenderFrame and didCompletePageTransition
     9        callbacks so that direct access from WebView to page viewport controller is avoided.
     10
     11        Implementation of callbacks is also added to keep the current EFL WK2 functionality.
     12
     13        * UIProcess/API/C/efl/WKView.h:
     14        * UIProcess/efl/PageLoadClientEfl.cpp:
     15        (WebKit::PageLoadClientEfl::didCommitLoadForFrame):
     16
     17            Moved here code from deleted WebView::didCommitLoad.
     18
     19        * UIProcess/efl/ViewClientEfl.cpp:
     20        (WebKit::ViewClientEfl::didChangeContentsPosition):
     21        (WebKit):
     22        (WebKit::ViewClientEfl::didRenderFrame):
     23        (WebKit::ViewClientEfl::didCompletePageTransition):
     24        (WebKit::ViewClientEfl::ViewClientEfl):
     25        * UIProcess/efl/ViewClientEfl.h:
     26        (ViewClientEfl):
     27        * UIProcess/efl/WebView.cpp:
     28        (WebKit::WebView::pageDidRequestScroll):
     29        (WebKit::WebView::didRenderFrame):
     30        (WebKit::WebView::pageTransitionViewportReady):
     31        * UIProcess/efl/WebViewClient.cpp:
     32        (WebKit::WebViewClient::didChangeContentsPosition):
     33        (WebKit):
     34        (WebKit::WebViewClient::didRenderFrame):
     35        (WebKit::WebViewClient::didCompletePageTransition):
     36        * UIProcess/efl/WebViewClient.h:
     37        (WebCore):
     38
    1392013-04-08  Andras Becsi  <andras.becsi@digia.com>
    240
  • trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.h

    r147741 r147913  
    3535typedef void (*WKViewPageDidChangeContentsSizeCallback)(WKViewRef view, WKSize size, const void* clientInfo);
    3636typedef void (*WKViewWebProcessCrashedCallback)(WKViewRef view, WKURLRef url, const void* clientInfo);
     37typedef void (*WKViewPageDidChangeContentsPositionCallback)(WKViewRef view, WKPoint position, const void* clientInfo);
     38typedef void (*WKViewPageDidRenderFrameCallback)(WKViewRef view, WKSize contentsSize, WKRect coveredRect, const void* clientInfo);
    3739
    3840struct WKViewClient {
     
    4547    WKViewWebProcessCrashedCallback                  webProcessCrashed;
    4648    WKViewCallback                                   webProcessDidRelaunch;
     49    WKViewPageDidChangeContentsPositionCallback      didChangeContentsPosition;
     50    WKViewPageDidRenderFrameCallback                 didRenderFrame;
     51    WKViewCallback                                   didCompletePageTransition;
    4752};
    4853typedef struct WKViewClient WKViewClient;
  • trunk/Source/WebKit2/UIProcess/efl/PageLoadClientEfl.cpp

    r143004 r147913  
    2828
    2929#include "EwkView.h"
     30#include "PageViewportController.h"
    3031#include "WKAPICast.h"
    3132#include "WKFrame.h"
     
    117118
    118119    EwkView* view = toPageLoadClientEfl(clientInfo)->view();
    119     view->webView()->didCommitLoad();
     120    if (WKPageUseFixedLayout(view->wkPage())) {
     121#if USE(ACCELERATED_COMPOSITING)
     122        view->pageViewportController()->didCommitLoad();
     123#endif
     124        return;
     125    }
     126
     127    view->scheduleUpdateDisplay();
    120128}
    121129
  • trunk/Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp

    r147792 r147913  
    3333
    3434using namespace EwkViewCallbacks;
     35using namespace WebCore;
    3536
    3637namespace WebKit {
     
    9293}
    9394
     95void ViewClientEfl::didChangeContentsPosition(WKViewRef, WKPoint position, const void* clientInfo)
     96{
     97    EwkView* ewkView = toEwkView(clientInfo);
     98    if (WKPageUseFixedLayout(ewkView->wkPage())) {
     99#if USE(ACCELERATED_COMPOSITING)
     100        ewkView->pageViewportController()->pageDidRequestScroll(toIntPoint(position));
     101#endif
     102        return;
     103    }
     104
     105    ewkView->scheduleUpdateDisplay();
     106}
     107
     108void ViewClientEfl::didRenderFrame(WKViewRef, WKSize contentsSize, WKRect coveredRect, const void* clientInfo)
     109{
     110    EwkView* ewkView = toEwkView(clientInfo);
     111    if (WKPageUseFixedLayout(ewkView->wkPage())) {
     112#if USE(ACCELERATED_COMPOSITING)
     113        ewkView->pageViewportController()->didRenderFrame(toIntSize(contentsSize), toIntRect(coveredRect));
     114#endif
     115        return;
     116    }
     117
     118    ewkView->scheduleUpdateDisplay();
     119}
     120
     121void ViewClientEfl::didCompletePageTransition(WKViewRef, const void* clientInfo)
     122{
     123    EwkView* ewkView = toEwkView(clientInfo);
     124    if (WKPageUseFixedLayout(ewkView->wkPage())) {
     125#if USE(ACCELERATED_COMPOSITING)
     126        ewkView->pageViewportController()->pageTransitionViewportReady();
     127#endif
     128        return;
     129    }
     130
     131    ewkView->scheduleUpdateDisplay();
     132}
     133
    94134ViewClientEfl::ViewClientEfl(EwkView* view)
    95135    : m_view(view)
     
    105145    viewClient.webProcessCrashed = webProcessCrashed;
    106146    viewClient.webProcessDidRelaunch = webProcessDidRelaunch;
     147    viewClient.didChangeContentsPosition = didChangeContentsPosition;
     148    viewClient.didRenderFrame = didRenderFrame;
     149    viewClient.didCompletePageTransition = didCompletePageTransition;
    107150
    108151    WKViewSetViewClient(m_view->wkView(), &viewClient);
  • trunk/Source/WebKit2/UIProcess/efl/ViewClientEfl.h

    r144664 r147913  
    5252    static void webProcessCrashed(WKViewRef, WKURLRef, const void* clientInfo);
    5353    static void webProcessDidRelaunch(WKViewRef, const void* clientInfo);
     54    static void didChangeContentsPosition(WKViewRef, WKPoint, const void* clientInfo);
     55    static void didRenderFrame(WKViewRef, WKSize, WKRect, const void* clientInfo);
     56    static void didCompletePageTransition(WKViewRef, const void* clientInfo);
    5457
    5558    EwkView* m_view;
  • trunk/Source/WebKit2/UIProcess/efl/WebView.cpp

    r147792 r147913  
    232232}
    233233
    234 void WebView::didCommitLoad()
    235 {
    236     if (m_page->useFixedLayout()) {
    237 #if USE(ACCELERATED_COMPOSITING)
    238         m_ewkView->pageViewportController()->didCommitLoad();
    239 #endif
    240         return;
    241     }
    242     m_ewkView->scheduleUpdateDisplay();
    243 }
    244 
    245234void WebView::didChangeContentsSize(const WebCore::IntSize& size)
    246235{
     
    552541void WebView::pageDidRequestScroll(const IntPoint& position)
    553542{
    554     if (m_page->useFixedLayout()) {
    555 #if USE(ACCELERATED_COMPOSITING)
    556         m_ewkView->pageViewportController()->pageDidRequestScroll(position);
    557 #endif
    558         return;
    559     }
    560543    FloatPoint uiPosition(position);
    561544    uiPosition.scale(contentScaleFactor(), contentScaleFactor());
    562545    setContentPosition(uiPosition);
    563     m_ewkView->scheduleUpdateDisplay();
     546
     547    m_client.didChangeContentsPosition(this, position);
    564548}
    565549
    566550void WebView::didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect)
    567551{
    568     if (m_page->useFixedLayout()) {
    569 #if USE(ACCELERATED_COMPOSITING)
    570         m_ewkView->pageViewportController()->didRenderFrame(contentsSize, coveredRect);
    571 #endif
    572         return;
    573     }
    574     m_ewkView->scheduleUpdateDisplay();
     552    m_client.didRenderFrame(this, contentsSize, coveredRect);
    575553}
    576554
    577555void WebView::pageTransitionViewportReady()
    578556{
    579     if (m_page->useFixedLayout()) {
    580 #if USE(ACCELERATED_COMPOSITING)
    581         m_ewkView->pageViewportController()->pageTransitionViewportReady();
    582 #endif
    583         return;
    584     }
    585     m_ewkView->scheduleUpdateDisplay();
     557    m_client.didCompletePageTransition(this);
    586558}
    587559
  • trunk/Source/WebKit2/UIProcess/efl/WebView.h

    r147741 r147913  
    105105    WebPageProxy* page() { return m_page.get(); }
    106106
    107     void didCommitLoad();   
    108107    void didChangeContentsSize(const WebCore::IntSize&);
    109108
  • trunk/Source/WebKit2/UIProcess/efl/WebViewClient.cpp

    r144664 r147913  
    6666}
    6767
     68void WebViewClient::didChangeContentsPosition(WebView* view, const WebCore::IntPoint& point)
     69{
     70    if (!m_client.didChangeContentsPosition)
     71        return;
     72
     73    m_client.didChangeContentsPosition(toAPI(view), toAPI(point), m_client.clientInfo);
     74}
     75
     76void WebViewClient::didRenderFrame(WebView* view, const WebCore::IntSize& size, const WebCore::IntRect& coveredRect)
     77{
     78    if (!m_client.didRenderFrame)
     79        return;
     80
     81    m_client.didRenderFrame(toAPI(view), toAPI(size), toAPI(coveredRect), m_client.clientInfo);
     82}
     83
     84void WebViewClient::didCompletePageTransition(WebView* view)
     85{
     86    if (!m_client.didCompletePageTransition)
     87        return;
     88
     89    m_client.didCompletePageTransition(toAPI(view), m_client.clientInfo);
     90}
     91
    6892} // namespace WebKit
  • trunk/Source/WebKit2/UIProcess/efl/WebViewClient.h

    r144664 r147913  
    3232
    3333namespace WebCore {
     34class IntPoint;
    3435class IntRect;
    3536class IntSize;
     
    4647    void webProcessCrashed(WebView*, const String& url);
    4748    void webProcessDidRelaunch(WebView*);
     49    void didChangeContentsPosition(WebView*, const WebCore::IntPoint&);
     50    void didRenderFrame(WebView*, const WebCore::IntSize&, const WebCore::IntRect&);
     51    void didCompletePageTransition(WebView*);
    4852};
    4953
Note: See TracChangeset for help on using the changeset viewer.