Changeset 199811 in webkit


Ignore:
Timestamp:
Apr 21, 2016 3:53:51 AM (8 years ago)
Author:
Carlos Garcia Campos
Message:

[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.

Source/WebKit2:

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:

Tools:

Add test case to check the WebKitWebView preferred size.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:

(testWebViewPreferredSize):
(beforeAll):

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r199810 r199811  
     12016-04-21  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] WebKitWebView should claim the contents size as its natural size
     4        https://bugs.webkit.org/show_bug.cgi?id=156835
     5
     6        Reviewed by Žan Doberšek.
     7
     8        And keep claiming 0 as its minimum size since it's scrollable.
     9
     10        * UIProcess/API/gtk/PageClientImpl.cpp:
     11        (WebKit::PageClientImpl::didChangeContentSize): Call webkitWebViewBaseSetContentsSize().
     12        * UIProcess/API/gtk/PageClientImpl.h:
     13        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
     14        (webkitWebViewBaseGetPreferredWidth): Return the contents width as natural width.
     15        (webkitWebViewBaseGetPreferredHeight): Return the contents height as natural height.
     16        (webkit_web_view_base_class_init): Add implementations of get_preferred_width/height.
     17        (webkitWebViewBaseSetContentsSize): Save the contents size.
     18        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
     19
    1202016-04-21  Carlos Garcia Campos  <cgarcia@igalia.com>
    221
  • trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp

    r199810 r199811  
    254254}
    255255
     256void PageClientImpl::didChangeContentSize(const IntSize& size)
     257{
     258    webkitWebViewBaseSetContentsSize(WEBKIT_WEB_VIEW_BASE(m_viewWidget), size);
     259}
     260
    256261#if ENABLE(DRAG_SUPPORT)
    257262void PageClientImpl::startDrag(const WebCore::DragData& dragData, PassRefPtr<ShareableBitmap> dragImage)
  • trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h

    r199810 r199811  
    9696
    9797    void handleDownloadRequest(DownloadProxy*) override;
    98     void didChangeContentSize(const WebCore::IntSize&) override { }
     98    void didChangeContentSize(const WebCore::IntSize&) override;
    9999    void didCommitLoadForMainFrame(const String& mimeType, bool useCustomContentProvider) override;
    100100    void didFailLoadForMainFrame() override { }
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp

    r199810 r199811  
    192192    KeyBindingTranslator keyBindingTranslator;
    193193    TouchEventsMap touchEvents;
     194    IntSize contentsSize;
    194195
    195196    GtkWindow* toplevelOnScreenWindow;
     
    697698}
    698699
     700static void webkitWebViewBaseGetPreferredWidth(GtkWidget* widget, gint* minimumSize, gint* naturalSize)
     701{
     702    WebKitWebViewBasePrivate* priv = WEBKIT_WEB_VIEW_BASE(widget)->priv;
     703    *minimumSize = 0;
     704    *naturalSize = priv->contentsSize.width();
     705}
     706
     707static void webkitWebViewBaseGetPreferredHeight(GtkWidget* widget, gint* minimumSize, gint* naturalSize)
     708{
     709    WebKitWebViewBasePrivate* priv = WEBKIT_WEB_VIEW_BASE(widget)->priv;
     710    *minimumSize = 0;
     711    *naturalSize = priv->contentsSize.height();
     712}
     713
    699714static void webkitWebViewBaseMap(GtkWidget* widget)
    700715{
     
    11661181    widgetClass->draw = webkitWebViewBaseDraw;
    11671182    widgetClass->size_allocate = webkitWebViewBaseSizeAllocate;
     1183    widgetClass->get_preferred_width = webkitWebViewBaseGetPreferredWidth;
     1184    widgetClass->get_preferred_height = webkitWebViewBaseGetPreferredHeight;
    11681185    widgetClass->map = webkitWebViewBaseMap;
    11691186    widgetClass->unmap = webkitWebViewBaseUnmap;
     
    15101527}
    15111528
     1529void webkitWebViewBaseSetContentsSize(WebKitWebViewBase* webkitWebViewBase, const IntSize& contentsSize)
     1530{
     1531    WebKitWebViewBasePrivate* priv = webkitWebViewBase->priv;
     1532    if (priv->contentsSize == contentsSize)
     1533        return;
     1534    priv->contentsSize = contentsSize;
     1535}
     1536
    15121537void webkitWebViewBaseResetClickCounter(WebKitWebViewBase* webkitWebViewBase)
    15131538{
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h

    r199810 r199811  
    5656void webkitWebViewBaseSetInputMethodState(WebKitWebViewBase*, bool enabled);
    5757void webkitWebViewBaseUpdateTextInputState(WebKitWebViewBase*);
     58void webkitWebViewBaseSetContentsSize(WebKitWebViewBase*, const WebCore::IntSize&);
    5859
    5960void webkitWebViewBaseSetFocus(WebKitWebViewBase*, bool focused);
  • trunk/Tools/ChangeLog

    r199808 r199811  
     12016-04-21  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] WebKitWebView should claim the contents size as its natural size
     4        https://bugs.webkit.org/show_bug.cgi?id=156835
     5
     6        Reviewed by Žan Doberšek.
     7
     8        Add test case to check the WebKitWebView preferred size.
     9
     10        * TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:
     11        (testWebViewPreferredSize):
     12        (beforeAll):
     13
    1142016-04-20  Simon Fraser  <simon.fraser@apple.com>
    215
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp

    r193721 r199811  
    854854}
    855855
     856static void testWebViewPreferredSize(WebViewTest* test, gconstpointer)
     857{
     858    test->loadHtml("<html style='width: 325px; height: 615px'></html>", nullptr);
     859    test->waitUntilLoadFinished();
     860    test->showInWindowAndWaitUntilMapped();
     861    GtkRequisition minimunSize, naturalSize;
     862    gtk_widget_get_preferred_size(GTK_WIDGET(test->m_webView), &minimunSize, &naturalSize);
     863    g_assert_cmpint(minimunSize.width, ==, 0);
     864    g_assert_cmpint(minimunSize.height, ==, 0);
     865    g_assert_cmpint(naturalSize.width, ==, 325);
     866    g_assert_cmpint(naturalSize.height, ==, 615);
     867}
     868
    856869static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
    857870{
     
    888901    IsPlayingAudioWebViewTest::add("WebKitWebView", "is-playing-audio", testWebViewIsPlayingAudio);
    889902    WebViewTest::add("WebKitWebView", "background-color", testWebViewBackgroundColor);
     903    WebViewTest::add("WebKitWebView", "preferred-size", testWebViewPreferredSize);
    890904}
    891905
Note: See TracChangeset for help on using the changeset viewer.