Diff
Modified: trunk/Source/WebKit2/ChangeLog (199810 => 199811)
--- trunk/Source/WebKit2/ChangeLog 2016-04-21 10:50:59 UTC (rev 199810)
+++ trunk/Source/WebKit2/ChangeLog 2016-04-21 10:53:51 UTC (rev 199811)
@@ -1,5 +1,24 @@
2016-04-21 Carlos Garcia Campos <cgar...@igalia.com>
+ [GTK] WebKitWebView should claim the contents size as its natural size
+ https://bugs.webkit.org/show_bug.cgi?id=156835
+
+ Reviewed by Žan Doberšek.
+
+ And keep claiming 0 as its minimum size since it's scrollable.
+
+ * UIProcess/API/gtk/PageClientImpl.cpp:
+ (WebKit::PageClientImpl::didChangeContentSize): Call webkitWebViewBaseSetContentsSize().
+ * UIProcess/API/gtk/PageClientImpl.h:
+ * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+ (webkitWebViewBaseGetPreferredWidth): Return the contents width as natural width.
+ (webkitWebViewBaseGetPreferredHeight): Return the contents height as natural height.
+ (webkit_web_view_base_class_init): Add implementations of get_preferred_width/height.
+ (webkitWebViewBaseSetContentsSize): Save the contents size.
+ * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
+
+2016-04-21 Carlos Garcia Campos <cgar...@igalia.com>
+
[GTK] WebKitWebView should propagate wheel events not handled by the web process
https://bugs.webkit.org/show_bug.cgi?id=156834
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp (199810 => 199811)
--- trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp 2016-04-21 10:50:59 UTC (rev 199810)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp 2016-04-21 10:53:51 UTC (rev 199811)
@@ -253,6 +253,11 @@
webkitWebViewSelectionDidChange(WEBKIT_WEB_VIEW(m_viewWidget));
}
+void PageClientImpl::didChangeContentSize(const IntSize& size)
+{
+ webkitWebViewBaseSetContentsSize(WEBKIT_WEB_VIEW_BASE(m_viewWidget), size);
+}
+
#if ENABLE(DRAG_SUPPORT)
void PageClientImpl::startDrag(const WebCore::DragData& dragData, PassRefPtr<ShareableBitmap> dragImage)
{
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h (199810 => 199811)
--- trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h 2016-04-21 10:50:59 UTC (rev 199810)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h 2016-04-21 10:53:51 UTC (rev 199811)
@@ -95,7 +95,7 @@
void willEnterAcceleratedCompositingMode() override;
void handleDownloadRequest(DownloadProxy*) override;
- void didChangeContentSize(const WebCore::IntSize&) override { }
+ void didChangeContentSize(const WebCore::IntSize&) override;
void didCommitLoadForMainFrame(const String& mimeType, bool useCustomContentProvider) override;
void didFailLoadForMainFrame() override { }
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp (199810 => 199811)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp 2016-04-21 10:50:59 UTC (rev 199810)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp 2016-04-21 10:53:51 UTC (rev 199811)
@@ -191,6 +191,7 @@
InputMethodFilter inputMethodFilter;
KeyBindingTranslator keyBindingTranslator;
TouchEventsMap touchEvents;
+ IntSize contentsSize;
GtkWindow* toplevelOnScreenWindow;
unsigned long toplevelFocusInEventID;
@@ -696,6 +697,20 @@
drawingArea->setSize(viewRect.size(), IntSize(), IntSize());
}
+static void webkitWebViewBaseGetPreferredWidth(GtkWidget* widget, gint* minimumSize, gint* naturalSize)
+{
+ WebKitWebViewBasePrivate* priv = WEBKIT_WEB_VIEW_BASE(widget)->priv;
+ *minimumSize = 0;
+ *naturalSize = priv->contentsSize.width();
+}
+
+static void webkitWebViewBaseGetPreferredHeight(GtkWidget* widget, gint* minimumSize, gint* naturalSize)
+{
+ WebKitWebViewBasePrivate* priv = WEBKIT_WEB_VIEW_BASE(widget)->priv;
+ *minimumSize = 0;
+ *naturalSize = priv->contentsSize.height();
+}
+
static void webkitWebViewBaseMap(GtkWidget* widget)
{
GTK_WIDGET_CLASS(webkit_web_view_base_parent_class)->map(widget);
@@ -1165,6 +1180,8 @@
widgetClass->unrealize = webkitWebViewBaseUnrealize;
widgetClass->draw = webkitWebViewBaseDraw;
widgetClass->size_allocate = webkitWebViewBaseSizeAllocate;
+ widgetClass->get_preferred_width = webkitWebViewBaseGetPreferredWidth;
+ widgetClass->get_preferred_height = webkitWebViewBaseGetPreferredHeight;
widgetClass->map = webkitWebViewBaseMap;
widgetClass->unmap = webkitWebViewBaseUnmap;
widgetClass->focus = webkitWebViewBaseFocus;
@@ -1509,6 +1526,14 @@
webkitWebViewBase->priv->inputMethodFilter.setCursorRect(editorState.postLayoutData().caretRectAtStart);
}
+void webkitWebViewBaseSetContentsSize(WebKitWebViewBase* webkitWebViewBase, const IntSize& contentsSize)
+{
+ WebKitWebViewBasePrivate* priv = webkitWebViewBase->priv;
+ if (priv->contentsSize == contentsSize)
+ return;
+ priv->contentsSize = contentsSize;
+}
+
void webkitWebViewBaseResetClickCounter(WebKitWebViewBase* webkitWebViewBase)
{
webkitWebViewBase->priv->clickCounter.reset();
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h (199810 => 199811)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h 2016-04-21 10:50:59 UTC (rev 199810)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h 2016-04-21 10:53:51 UTC (rev 199811)
@@ -55,6 +55,7 @@
GdkEvent* webkitWebViewBaseTakeContextMenuEvent(WebKitWebViewBase*);
void webkitWebViewBaseSetInputMethodState(WebKitWebViewBase*, bool enabled);
void webkitWebViewBaseUpdateTextInputState(WebKitWebViewBase*);
+void webkitWebViewBaseSetContentsSize(WebKitWebViewBase*, const WebCore::IntSize&);
void webkitWebViewBaseSetFocus(WebKitWebViewBase*, bool focused);
bool webkitWebViewBaseIsInWindowActive(WebKitWebViewBase*);
Modified: trunk/Tools/ChangeLog (199810 => 199811)
--- trunk/Tools/ChangeLog 2016-04-21 10:50:59 UTC (rev 199810)
+++ trunk/Tools/ChangeLog 2016-04-21 10:53:51 UTC (rev 199811)
@@ -1,3 +1,16 @@
+2016-04-21 Carlos Garcia Campos <cgar...@igalia.com>
+
+ [GTK] WebKitWebView should claim the contents size as its natural size
+ https://bugs.webkit.org/show_bug.cgi?id=156835
+
+ Reviewed by Žan Doberšek.
+
+ Add test case to check the WebKitWebView preferred size.
+
+ * TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:
+ (testWebViewPreferredSize):
+ (beforeAll):
+
2016-04-20 Simon Fraser <simon.fra...@apple.com>
Add content animation tests to benchmark_runner, and allow the runner to collect device data as part of the results
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp (199810 => 199811)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp 2016-04-21 10:50:59 UTC (rev 199810)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp 2016-04-21 10:53:51 UTC (rev 199811)
@@ -853,6 +853,19 @@
// MiniBrowser --bg-color="<color-value>" for manually testing this API.
}
+static void testWebViewPreferredSize(WebViewTest* test, gconstpointer)
+{
+ test->loadHtml("<html style='width: 325px; height: 615px'></html>", nullptr);
+ test->waitUntilLoadFinished();
+ test->showInWindowAndWaitUntilMapped();
+ GtkRequisition minimunSize, naturalSize;
+ gtk_widget_get_preferred_size(GTK_WIDGET(test->m_webView), &minimunSize, &naturalSize);
+ g_assert_cmpint(minimunSize.width, ==, 0);
+ g_assert_cmpint(minimunSize.height, ==, 0);
+ g_assert_cmpint(naturalSize.width, ==, 325);
+ g_assert_cmpint(naturalSize.height, ==, 615);
+}
+
static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
{
if (message->method != SOUP_METHOD_GET) {
@@ -887,6 +900,7 @@
NotificationWebViewTest::add("WebKitWebView", "notification", testWebViewNotification);
IsPlayingAudioWebViewTest::add("WebKitWebView", "is-playing-audio", testWebViewIsPlayingAudio);
WebViewTest::add("WebKitWebView", "background-color", testWebViewBackgroundColor);
+ WebViewTest::add("WebKitWebView", "preferred-size", testWebViewPreferredSize);
}
void afterAll()