Changeset 142755 in webkit


Ignore:
Timestamp:
Feb 13, 2013 9:21:42 AM (11 years ago)
Author:
allan.jensen@digia.com
Message:

[Qt] window.open passes height and width parameters even if not defined in a page
https://bugs.webkit.org/show_bug.cgi?id=107705

Reviewed by Kenneth Rohde Christiansen.

Source/WebCore:

Do not override width or height of 0, as that indicates default size, and not minimum size.

Tested by tst_qwebpage.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::adjustWindowRect):

Source/WebKit/efl:

Do not resize window when default size is requested.

  • WebCoreSupport/ChromeClientEfl.cpp:

(WebCore::ChromeClientEfl::setWindowRect):

Source/WebKit/gtk:

Do not resize window when default size is requested.

  • WebCoreSupport/ChromeClientGtk.cpp:

(WebKit::ChromeClient::setWindowRect):

Source/WebKit/qt:

Test that minimum size is applied only when the requested size is too small,
not when default is requested.

  • tests/qwebpage/tst_qwebpage.cpp:

(tst_QWebPage):
(TestPage):
(TestPage::TestPage):
(TestPage::createWindow):
(TestPage::slotGeometryChangeRequested):
(tst_QWebPage::openWindowDefaultSize):

Location:
trunk/Source
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r142754 r142755  
     12013-02-13  Allan Sandfeld Jensen  <allan.jensen@digia.com>
     2
     3        [Qt] window.open passes height and width parameters even if not defined in a page
     4        https://bugs.webkit.org/show_bug.cgi?id=107705
     5
     6        Reviewed by Kenneth Rohde Christiansen.
     7
     8        Do not override width or height of 0, as that indicates default size, and not minimum size.
     9
     10        Tested by tst_qwebpage.
     11
     12        * page/DOMWindow.cpp:
     13        (WebCore::DOMWindow::adjustWindowRect):
     14
    1152013-02-13  Rashmi Shyamasundar  <rashmi.s2@samsung.com>
    216
  • trunk/Source/WebCore/page/DOMWindow.cpp

    r142739 r142755  
    342342
    343343    FloatSize minimumSize = page->chrome()->client()->minimumWindowSize();
    344     window.setWidth(min(max(minimumSize.width(), window.width()), screen.width()));
    345     window.setHeight(min(max(minimumSize.height(), window.height()), screen.height()));
     344    // Let size 0 pass through, since that indicates default size, not minimum size.
     345    if (window.width())
     346        window.setWidth(min(max(minimumSize.width(), window.width()), screen.width()));
     347    if (window.height())
     348        window.setHeight(min(max(minimumSize.height(), window.height()), screen.height()));
    346349
    347350    // Constrain the window position within the valid screen area.
  • trunk/Source/WebKit/efl/ChangeLog

    r142595 r142755  
     12013-02-13  Allan Sandfeld Jensen  <allan.jensen@digia.com>
     2
     3        [Qt] window.open passes height and width parameters even if not defined in a page
     4        https://bugs.webkit.org/show_bug.cgi?id=107705
     5
     6        Reviewed by Kenneth Rohde Christiansen.
     7
     8        Do not resize window when default size is requested.
     9
     10        * WebCoreSupport/ChromeClientEfl.cpp:
     11        (WebCore::ChromeClientEfl::setWindowRect):
     12
    1132013-02-12  Huang Dongsung  <luxtella@company100.net>
    214
  • trunk/Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp

    r139078 r142755  
    129129void ChromeClientEfl::setWindowRect(const FloatRect& rect)
    130130{
    131     if (!ewk_view_setting_enable_auto_resize_window_get(m_view))
     131    if (!ewk_view_setting_enable_auto_resize_window_get(m_view) || rect.isEmpty())
    132132        return;
    133133
  • trunk/Source/WebKit/gtk/ChangeLog

    r142731 r142755  
     12013-02-13  Allan Sandfeld Jensen  <allan.jensen@digia.com>
     2
     3        [Qt] window.open passes height and width parameters even if not defined in a page
     4        https://bugs.webkit.org/show_bug.cgi?id=107705
     5
     6        Reviewed by Kenneth Rohde Christiansen.
     7
     8        Do not resize window when default size is requested.
     9
     10        * WebCoreSupport/ChromeClientGtk.cpp:
     11        (WebKit::ChromeClient::setWindowRect):
     12
    1132013-02-13  Andrew Wilson  <atwilson@chromium.org>
    214
  • trunk/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp

    r142094 r142755  
    143143    if (widgetIsOnscreenToplevelWindow(window)) {
    144144        gtk_window_move(GTK_WINDOW(window), intrect.x(), intrect.y());
    145         gtk_window_resize(GTK_WINDOW(window), intrect.width(), intrect.height());
     145        if (!intrect.isEmpty())
     146            gtk_window_resize(GTK_WINDOW(window), intrect.width(), intrect.height());
    146147    }
    147148}
  • trunk/Source/WebKit/qt/ChangeLog

    r142595 r142755  
     12013-02-13  Allan Sandfeld Jensen  <allan.jensen@digia.com>
     2
     3        [Qt] window.open passes height and width parameters even if not defined in a page
     4        https://bugs.webkit.org/show_bug.cgi?id=107705
     5
     6        Reviewed by Kenneth Rohde Christiansen.
     7
     8        Test that minimum size is applied only when the requested size is too small,
     9        not when default is requested.
     10
     11        * tests/qwebpage/tst_qwebpage.cpp:
     12        (tst_QWebPage):
     13        (TestPage):
     14        (TestPage::TestPage):
     15        (TestPage::createWindow):
     16        (TestPage::slotGeometryChangeRequested):
     17        (tst_QWebPage::openWindowDefaultSize):
     18
    1192013-02-12  Huang Dongsung  <luxtella@company100.net>
    220
  • trunk/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp

    r141582 r142755  
    187187    void loadSignalsOrder_data();
    188188    void loadSignalsOrder();
     189    void openWindowDefaultSize();
    189190
    190191#ifdef Q_OS_MAC
     
    411412}
    412413
    413 class TestPage : public QWebPage
    414 {
     414class TestPage : public QWebPage {
     415    Q_OBJECT
    415416public:
    416     TestPage(QObject* parent = 0) : QWebPage(parent) {}
     417    TestPage(QObject* parent = 0) : QWebPage(parent)
     418    {
     419        connect(this, SIGNAL(geometryChangeRequested(QRect)), this, SLOT(slotGeometryChangeRequested(QRect)));
     420    }
    417421
    418422    struct Navigation {
     
    423427
    424428    QList<Navigation> navigations;
    425     QList<QWebPage*> createdWindows;
     429    QList<TestPage*> createdWindows;
     430    QRect requestedGeometry;
    426431
    427432    virtual bool acceptNavigationRequest(QWebFrame* frame, const QNetworkRequest &request, NavigationType type) {
     
    435440
    436441    virtual QWebPage* createWindow(WebWindowType) {
    437         QWebPage* page = new TestPage(this);
     442        TestPage* page = new TestPage(this);
    438443        createdWindows.append(page);
    439444        return page;
     445    }
     446
     447private Q_SLOTS:
     448    void slotGeometryChangeRequested(const QRect& geom) {
     449        requestedGeometry = geom;
    440450    }
    441451};
     
    32533263}
    32543264
     3265void tst_QWebPage::openWindowDefaultSize()
     3266{
     3267    TestPage page;
     3268    page.settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
     3269    // Open a default window.
     3270    page.mainFrame()->evaluateJavaScript("window.open()");
     3271    // Open a too small window.
     3272    page.mainFrame()->evaluateJavaScript("window.open('', '', 'width=10,height=10')");
     3273
     3274    QTest::qWait(500);
     3275    // The number of popups created should be two.
     3276    QVERIFY(page.createdWindows.size() == 2);
     3277
     3278    QRect requestedGeometry = page.createdWindows[0]->requestedGeometry;
     3279    // Check default size has been requested.
     3280    QVERIFY(requestedGeometry.width() == 0);
     3281    QVERIFY(requestedGeometry.height() == 0);
     3282
     3283    requestedGeometry = page.createdWindows[1]->requestedGeometry;
     3284    // Check minimum size has been requested.
     3285    QVERIFY(requestedGeometry.width() == 100);
     3286    QVERIFY(requestedGeometry.height() == 100);
     3287}
     3288
    32553289QTEST_MAIN(tst_QWebPage)
    32563290#include "tst_qwebpage.moc"
Note: See TracChangeset for help on using the changeset viewer.