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