Title: [147913] trunk/Source/WebKit2
Revision
147913
Author
[email protected]
Date
2013-04-08 07:49:47 -0700 (Mon, 08 Apr 2013)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (147912 => 147913)


--- trunk/Source/WebKit2/ChangeLog	2013-04-08 13:35:18 UTC (rev 147912)
+++ trunk/Source/WebKit2/ChangeLog	2013-04-08 14:49:47 UTC (rev 147913)
@@ -1,3 +1,41 @@
+2013-04-08  Mikhail Pozdnyakov  <[email protected]>
+
+        [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):
+
 2013-04-08  Andras Becsi  <[email protected]>
 
         [Qt][WK2] WebView's interactive property is not fully respected

Modified: trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.h (147912 => 147913)


--- trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.h	2013-04-08 13:35:18 UTC (rev 147912)
+++ trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.h	2013-04-08 14:49:47 UTC (rev 147913)
@@ -34,6 +34,8 @@
 typedef void (*WKViewViewNeedsDisplayCallback)(WKViewRef view, WKRect area, const void* clientInfo);
 typedef void (*WKViewPageDidChangeContentsSizeCallback)(WKViewRef view, WKSize size, const void* clientInfo);
 typedef void (*WKViewWebProcessCrashedCallback)(WKViewRef view, WKURLRef url, const void* clientInfo);
+typedef void (*WKViewPageDidChangeContentsPositionCallback)(WKViewRef view, WKPoint position, const void* clientInfo);
+typedef void (*WKViewPageDidRenderFrameCallback)(WKViewRef view, WKSize contentsSize, WKRect coveredRect, const void* clientInfo);
 
 struct WKViewClient {
     int                                              version;
@@ -44,6 +46,9 @@
     WKViewPageDidChangeContentsSizeCallback          didChangeContentsSize;
     WKViewWebProcessCrashedCallback                  webProcessCrashed;
     WKViewCallback                                   webProcessDidRelaunch;
+    WKViewPageDidChangeContentsPositionCallback      didChangeContentsPosition;
+    WKViewPageDidRenderFrameCallback                 didRenderFrame;
+    WKViewCallback                                   didCompletePageTransition;
 };
 typedef struct WKViewClient WKViewClient;
 

Modified: trunk/Source/WebKit2/UIProcess/efl/PageLoadClientEfl.cpp (147912 => 147913)


--- trunk/Source/WebKit2/UIProcess/efl/PageLoadClientEfl.cpp	2013-04-08 13:35:18 UTC (rev 147912)
+++ trunk/Source/WebKit2/UIProcess/efl/PageLoadClientEfl.cpp	2013-04-08 14:49:47 UTC (rev 147913)
@@ -27,6 +27,7 @@
 #include "PageLoadClientEfl.h"
 
 #include "EwkView.h"
+#include "PageViewportController.h"
 #include "WKAPICast.h"
 #include "WKFrame.h"
 #include "WKPage.h"
@@ -116,7 +117,14 @@
         return;
 
     EwkView* view = toPageLoadClientEfl(clientInfo)->view();
-    view->webView()->didCommitLoad();
+    if (WKPageUseFixedLayout(view->wkPage())) {
+#if USE(ACCELERATED_COMPOSITING)
+        view->pageViewportController()->didCommitLoad();
+#endif
+        return;
+    }
+
+    view->scheduleUpdateDisplay();
 }
 
 void PageLoadClientEfl::didChangeBackForwardList(WKPageRef, WKBackForwardListItemRef addedItem, WKArrayRef removedItems, const void* clientInfo)

Modified: trunk/Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp (147912 => 147913)


--- trunk/Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp	2013-04-08 13:35:18 UTC (rev 147912)
+++ trunk/Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp	2013-04-08 14:49:47 UTC (rev 147913)
@@ -32,6 +32,7 @@
 #include <WebKit2/WKView.h>
 
 using namespace EwkViewCallbacks;
+using namespace WebCore;
 
 namespace WebKit {
 
@@ -91,6 +92,45 @@
         WKViewSetThemePath(viewRef, adoptWK(WKStringCreateWithUTF8CString(themePath)).get());
 }
 
+void ViewClientEfl::didChangeContentsPosition(WKViewRef, WKPoint position, const void* clientInfo)
+{
+    EwkView* ewkView = toEwkView(clientInfo);
+    if (WKPageUseFixedLayout(ewkView->wkPage())) {
+#if USE(ACCELERATED_COMPOSITING)
+        ewkView->pageViewportController()->pageDidRequestScroll(toIntPoint(position));
+#endif
+        return;
+    }
+
+    ewkView->scheduleUpdateDisplay();
+}
+
+void ViewClientEfl::didRenderFrame(WKViewRef, WKSize contentsSize, WKRect coveredRect, const void* clientInfo)
+{
+    EwkView* ewkView = toEwkView(clientInfo);
+    if (WKPageUseFixedLayout(ewkView->wkPage())) {
+#if USE(ACCELERATED_COMPOSITING)
+        ewkView->pageViewportController()->didRenderFrame(toIntSize(contentsSize), toIntRect(coveredRect));
+#endif
+        return;
+    }
+
+    ewkView->scheduleUpdateDisplay();
+}
+
+void ViewClientEfl::didCompletePageTransition(WKViewRef, const void* clientInfo)
+{
+    EwkView* ewkView = toEwkView(clientInfo);
+    if (WKPageUseFixedLayout(ewkView->wkPage())) {
+#if USE(ACCELERATED_COMPOSITING)
+        ewkView->pageViewportController()->pageTransitionViewportReady();
+#endif
+        return;
+    }
+
+    ewkView->scheduleUpdateDisplay();
+}
+
 ViewClientEfl::ViewClientEfl(EwkView* view)
     : m_view(view)
 {
@@ -104,6 +144,9 @@
     viewClient.viewNeedsDisplay = viewNeedsDisplay;
     viewClient.webProcessCrashed = webProcessCrashed;
     viewClient.webProcessDidRelaunch = webProcessDidRelaunch;
+    viewClient.didChangeContentsPosition = didChangeContentsPosition;
+    viewClient.didRenderFrame = didRenderFrame;
+    viewClient.didCompletePageTransition = didCompletePageTransition;
 
     WKViewSetViewClient(m_view->wkView(), &viewClient);
 }

Modified: trunk/Source/WebKit2/UIProcess/efl/ViewClientEfl.h (147912 => 147913)


--- trunk/Source/WebKit2/UIProcess/efl/ViewClientEfl.h	2013-04-08 13:35:18 UTC (rev 147912)
+++ trunk/Source/WebKit2/UIProcess/efl/ViewClientEfl.h	2013-04-08 14:49:47 UTC (rev 147913)
@@ -51,6 +51,9 @@
     static void didChangeContentsSize(WKViewRef, WKSize, const void* clientInfo);
     static void webProcessCrashed(WKViewRef, WKURLRef, const void* clientInfo);
     static void webProcessDidRelaunch(WKViewRef, const void* clientInfo);
+    static void didChangeContentsPosition(WKViewRef, WKPoint, const void* clientInfo);
+    static void didRenderFrame(WKViewRef, WKSize, WKRect, const void* clientInfo);
+    static void didCompletePageTransition(WKViewRef, const void* clientInfo);
 
     EwkView* m_view;
 };

Modified: trunk/Source/WebKit2/UIProcess/efl/WebView.cpp (147912 => 147913)


--- trunk/Source/WebKit2/UIProcess/efl/WebView.cpp	2013-04-08 13:35:18 UTC (rev 147912)
+++ trunk/Source/WebKit2/UIProcess/efl/WebView.cpp	2013-04-08 14:49:47 UTC (rev 147913)
@@ -231,17 +231,6 @@
     m_client.initialize(client);
 }
 
-void WebView::didCommitLoad()
-{
-    if (m_page->useFixedLayout()) {
-#if USE(ACCELERATED_COMPOSITING)
-        m_ewkView->pageViewportController()->didCommitLoad();
-#endif
-        return;
-    }
-    m_ewkView->scheduleUpdateDisplay();
-}
-
 void WebView::didChangeContentsSize(const WebCore::IntSize& size)
 {
     m_client.didChangeContentsSize(this, size);
@@ -551,38 +540,21 @@
 
 void WebView::pageDidRequestScroll(const IntPoint& position)
 {
-    if (m_page->useFixedLayout()) {
-#if USE(ACCELERATED_COMPOSITING)
-        m_ewkView->pageViewportController()->pageDidRequestScroll(position);
-#endif
-        return;
-    }
     FloatPoint uiPosition(position);
     uiPosition.scale(contentScaleFactor(), contentScaleFactor());
     setContentPosition(uiPosition);
-    m_ewkView->scheduleUpdateDisplay();
+
+    m_client.didChangeContentsPosition(this, position);
 }
 
 void WebView::didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect)
 {
-    if (m_page->useFixedLayout()) {
-#if USE(ACCELERATED_COMPOSITING)
-        m_ewkView->pageViewportController()->didRenderFrame(contentsSize, coveredRect);
-#endif
-        return;
-    }
-    m_ewkView->scheduleUpdateDisplay();
+    m_client.didRenderFrame(this, contentsSize, coveredRect);
 }
 
 void WebView::pageTransitionViewportReady()
 {
-    if (m_page->useFixedLayout()) {
-#if USE(ACCELERATED_COMPOSITING)
-        m_ewkView->pageViewportController()->pageTransitionViewportReady();
-#endif
-        return;
-    }
-    m_ewkView->scheduleUpdateDisplay();
+    m_client.didCompletePageTransition(this);
 }
 
 } // namespace WebKit

Modified: trunk/Source/WebKit2/UIProcess/efl/WebView.h (147912 => 147913)


--- trunk/Source/WebKit2/UIProcess/efl/WebView.h	2013-04-08 13:35:18 UTC (rev 147912)
+++ trunk/Source/WebKit2/UIProcess/efl/WebView.h	2013-04-08 14:49:47 UTC (rev 147913)
@@ -104,7 +104,6 @@
     Evas_Object* evasObject();
     WebPageProxy* page() { return m_page.get(); }
 
-    void didCommitLoad();    
     void didChangeContentsSize(const WebCore::IntSize&);
 
     // FIXME: Should become private when Web Events creation is moved to WebView.

Modified: trunk/Source/WebKit2/UIProcess/efl/WebViewClient.cpp (147912 => 147913)


--- trunk/Source/WebKit2/UIProcess/efl/WebViewClient.cpp	2013-04-08 13:35:18 UTC (rev 147912)
+++ trunk/Source/WebKit2/UIProcess/efl/WebViewClient.cpp	2013-04-08 14:49:47 UTC (rev 147913)
@@ -65,4 +65,28 @@
     m_client.webProcessDidRelaunch(toAPI(view), m_client.clientInfo);
 }
 
+void WebViewClient::didChangeContentsPosition(WebView* view, const WebCore::IntPoint& point)
+{
+    if (!m_client.didChangeContentsPosition)
+        return;
+
+    m_client.didChangeContentsPosition(toAPI(view), toAPI(point), m_client.clientInfo);
+}
+
+void WebViewClient::didRenderFrame(WebView* view, const WebCore::IntSize& size, const WebCore::IntRect& coveredRect)
+{
+    if (!m_client.didRenderFrame)
+        return;
+
+    m_client.didRenderFrame(toAPI(view), toAPI(size), toAPI(coveredRect), m_client.clientInfo);
+}
+
+void WebViewClient::didCompletePageTransition(WebView* view)
+{
+    if (!m_client.didCompletePageTransition)
+        return;
+
+    m_client.didCompletePageTransition(toAPI(view), m_client.clientInfo);
+}
+
 } // namespace WebKit

Modified: trunk/Source/WebKit2/UIProcess/efl/WebViewClient.h (147912 => 147913)


--- trunk/Source/WebKit2/UIProcess/efl/WebViewClient.h	2013-04-08 13:35:18 UTC (rev 147912)
+++ trunk/Source/WebKit2/UIProcess/efl/WebViewClient.h	2013-04-08 14:49:47 UTC (rev 147913)
@@ -31,6 +31,7 @@
 #include <wtf/text/WTFString.h>
 
 namespace WebCore {
+class IntPoint;
 class IntRect;
 class IntSize;
 }
@@ -45,6 +46,9 @@
     void didChangeContentsSize(WebView*, const WebCore::IntSize&);
     void webProcessCrashed(WebView*, const String& url);
     void webProcessDidRelaunch(WebView*);
+    void didChangeContentsPosition(WebView*, const WebCore::IntPoint&);
+    void didRenderFrame(WebView*, const WebCore::IntSize&, const WebCore::IntRect&);
+    void didCompletePageTransition(WebView*);
 };
 
 } // namespace WebKit
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to