Title: [90647] trunk
Revision
90647
Author
[email protected]
Date
2011-07-08 11:37:38 -0700 (Fri, 08 Jul 2011)

Log Message

[Qt][WK2] Views should expose QActions for basic navigation.
https://bugs.webkit.org/show_bug.cgi?id=64174

Source/WebKit2: 

Add navigationAction() methods to the views to provide default
QActions for Back, Forward, Stop and Reload.

Reviewed by Benjamin Poulain.

* UIProcess/API/qt/WKView.h:
* UIProcess/API/qt/qdesktopwebview.cpp:
(QDesktopWebView::navigationAction):
* UIProcess/API/qt/qdesktopwebview.h:
* UIProcess/API/qt/qtouchwebpage.cpp:
(QTouchWebPage::navigationAction):
* UIProcess/API/qt/qtouchwebpage.h:
* UIProcess/API/qt/qwebkittypes.h: Added.
* UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp:
(tst_CommonViewTests::backAndForward):
(tst_CommonViewTests::reload):
(tst_CommonViewTests::stop):
* UIProcess/API/qt/tests/commonviewtests/webviewabstraction.cpp:
(WebViewAbstraction::triggerNavigationAction):
* UIProcess/API/qt/tests/commonviewtests/webviewabstraction.h:
* UIProcess/API/qt/tests/html/basic_page2.html: Added.
* UIProcess/qt/QtWebPageProxy.cpp:
(QtWebPageProxy::navigationAction):
* UIProcess/qt/QtWebPageProxy.h:
* WebKit2API.pri:

Tools: 

Reviewed by Benjamin Poulain.

Bring the toolbar in Qt's MiniBrowser back to life.

* MiniBrowser/qt/BrowserView.cpp:
(BrowserView::navigationAction):
* MiniBrowser/qt/BrowserView.h:
* MiniBrowser/qt/BrowserWindow.cpp:
(BrowserWindow::BrowserWindow):

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (90646 => 90647)


--- trunk/Source/WebKit2/ChangeLog	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Source/WebKit2/ChangeLog	2011-07-08 18:37:38 UTC (rev 90647)
@@ -1,3 +1,34 @@
+2011-07-08  Andreas Kling  <[email protected]>
+
+        [Qt][WK2] Views should expose QActions for basic navigation.
+        https://bugs.webkit.org/show_bug.cgi?id=64174
+
+        Add navigationAction() methods to the views to provide default
+        QActions for Back, Forward, Stop and Reload.
+
+        Reviewed by Benjamin Poulain.
+
+        * UIProcess/API/qt/WKView.h:
+        * UIProcess/API/qt/qdesktopwebview.cpp:
+        (QDesktopWebView::navigationAction):
+        * UIProcess/API/qt/qdesktopwebview.h:
+        * UIProcess/API/qt/qtouchwebpage.cpp:
+        (QTouchWebPage::navigationAction):
+        * UIProcess/API/qt/qtouchwebpage.h:
+        * UIProcess/API/qt/qwebkittypes.h: Added.
+        * UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp:
+        (tst_CommonViewTests::backAndForward):
+        (tst_CommonViewTests::reload):
+        (tst_CommonViewTests::stop):
+        * UIProcess/API/qt/tests/commonviewtests/webviewabstraction.cpp:
+        (WebViewAbstraction::triggerNavigationAction):
+        * UIProcess/API/qt/tests/commonviewtests/webviewabstraction.h:
+        * UIProcess/API/qt/tests/html/basic_page2.html: Added.
+        * UIProcess/qt/QtWebPageProxy.cpp:
+        (QtWebPageProxy::navigationAction):
+        * UIProcess/qt/QtWebPageProxy.h:
+        * WebKit2API.pri:
+
 2011-07-08  Benjamin Poulain  <[email protected]>
 
         [Qt][WK2] Get rid of the check for TILED_BACKING_STORE in Qt

Modified: trunk/Source/WebKit2/UIProcess/API/qt/WKView.h (90646 => 90647)


--- trunk/Source/WebKit2/UIProcess/API/qt/WKView.h	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Source/WebKit2/UIProcess/API/qt/WKView.h	2011-07-08 18:37:38 UTC (rev 90647)
@@ -20,6 +20,7 @@
 #ifndef WKView_h
 #define WKView_h
 
+#include <WebKit2/qwebkittypes.h>
 #include <WebKit2/qdesktopwebview.h>
 #include <WebKit2/qtouchwebview.h>
 #include <WebKit2/qtouchwebpage.h>

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp (90646 => 90647)


--- trunk/Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp	2011-07-08 18:37:38 UTC (rev 90647)
@@ -184,6 +184,11 @@
     return d->page.title();
 }
 
+QAction* QDesktopWebView::navigationAction(QtWebKit::NavigationAction which) const
+{
+    return d->page.navigationAction(which);
+}
+
 void QDesktopWebView::resizeEvent(QGraphicsSceneResizeEvent* ev)
 {
     d->page.setDrawingAreaSize(ev->newSize().toSize());

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qdesktopwebview.h (90646 => 90647)


--- trunk/Source/WebKit2/UIProcess/API/qt/qdesktopwebview.h	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qdesktopwebview.h	2011-07-08 18:37:38 UTC (rev 90647)
@@ -22,6 +22,7 @@
 #define qdesktopwebview_h
 
 #include "qwebkitglobal.h"
+#include "qwebkittypes.h"
 #include <WebKit2/WKBase.h>
 
 #include <QGraphicsWidget>
@@ -45,6 +46,8 @@
     QUrl url() const;
     QString title() const;
 
+    QAction* navigationAction(QtWebKit::NavigationAction which) const;
+
 public Q_SLOTS:
      void load(const QUrl&);
 

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qtouchwebpage.cpp (90646 => 90647)


--- trunk/Source/WebKit2/UIProcess/API/qt/qtouchwebpage.cpp	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qtouchwebpage.cpp	2011-07-08 18:37:38 UTC (rev 90647)
@@ -141,6 +141,11 @@
     QGraphicsWidget::resizeEvent(ev);
 }
 
+QAction* QTouchWebPage::navigationAction(QtWebKit::NavigationAction which)
+{
+    return d->page->navigationAction(which);
+}
+
 QTouchWebPagePrivate::QTouchWebPagePrivate(QTouchWebPage* view)
     : q(view)
     , page(0)

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qtouchwebpage.h (90646 => 90647)


--- trunk/Source/WebKit2/UIProcess/API/qt/qtouchwebpage.h	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qtouchwebpage.h	2011-07-08 18:37:38 UTC (rev 90647)
@@ -22,6 +22,7 @@
 #define qtouchwebpage_h
 
 #include "qwebkitglobal.h"
+#include "qwebkittypes.h"
 
 #include <QGraphicsWidget>
 #include <QSharedPointer>
@@ -48,6 +49,8 @@
 
     Q_INVOKABLE QString title() const;
 
+    QAction* navigationAction(QtWebKit::NavigationAction which);
+
     virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
     virtual bool event(QEvent*);
 

Added: trunk/Source/WebKit2/UIProcess/API/qt/qwebkittypes.h (0 => 90647)


--- trunk/Source/WebKit2/UIProcess/API/qt/qwebkittypes.h	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qwebkittypes.h	2011-07-08 18:37:38 UTC (rev 90647)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2011 Andreas Kling <[email protected]>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this program; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef qwebkittypes_h
+#define qwebkittypes_h
+
+namespace QtWebKit {
+
+enum NavigationAction {
+    Back,
+    Forward,
+    Stop,
+    Reload,
+
+    NavigationActionCount
+};
+
+}
+
+#endif /* qwebkittypes_h */

Modified: trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp (90646 => 90647)


--- trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp	2011-07-08 18:37:38 UTC (rev 90647)
@@ -33,6 +33,9 @@
     void loadEmptyUrl();
     void loadEmptyPageViewVisible();
     void loadEmptyPageViewHidden();
+    void backAndForward();
+    void reload();
+    void stop();
 
     void show();
 private:
@@ -79,6 +82,63 @@
     QCOMPARE(loadStartedSpy.size(), 1);
 }
 
+void tst_CommonViewTests::backAndForward()
+{
+    viewAbstraction->load(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/basic_page.html")));
+    QVERIFY(waitForSignal(viewAbstraction.data(), SIGNAL(loadSucceeded())));
+
+    QUrl url;
+    QVERIFY(viewAbstraction->url(url));
+    QCOMPARE(url.path(), QLatin1String(TESTS_SOURCE_DIR "/html/basic_page.html"));
+
+    viewAbstraction->load(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/basic_page2.html")));
+    QVERIFY(waitForSignal(viewAbstraction.data(), SIGNAL(loadSucceeded())));
+
+    QVERIFY(viewAbstraction->url(url));
+    QCOMPARE(url.path(), QLatin1String(TESTS_SOURCE_DIR "/html/basic_page2.html"));
+
+    viewAbstraction->triggerNavigationAction(QtWebKit::Back);
+    QVERIFY(waitForSignal(viewAbstraction.data(), SIGNAL(loadSucceeded())));
+
+    QVERIFY(viewAbstraction->url(url));
+    QCOMPARE(url.path(), QLatin1String(TESTS_SOURCE_DIR "/html/basic_page.html"));
+
+    viewAbstraction->triggerNavigationAction(QtWebKit::Forward);
+    QVERIFY(waitForSignal(viewAbstraction.data(), SIGNAL(loadSucceeded())));
+
+    QVERIFY(viewAbstraction->url(url));
+    QCOMPARE(url.path(), QLatin1String(TESTS_SOURCE_DIR "/html/basic_page2.html"));
+}
+
+void tst_CommonViewTests::reload()
+{
+    viewAbstraction->load(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/basic_page.html")));
+    QVERIFY(waitForSignal(viewAbstraction.data(), SIGNAL(loadSucceeded())));
+
+    QUrl url;
+    QVERIFY(viewAbstraction->url(url));
+    QCOMPARE(url.path(), QLatin1String(TESTS_SOURCE_DIR "/html/basic_page.html"));
+
+    viewAbstraction->triggerNavigationAction(QtWebKit::Reload);
+    QVERIFY(waitForSignal(viewAbstraction.data(), SIGNAL(loadSucceeded())));
+
+    QVERIFY(viewAbstraction->url(url));
+    QCOMPARE(url.path(), QLatin1String(TESTS_SOURCE_DIR "/html/basic_page.html"));
+}
+
+void tst_CommonViewTests::stop()
+{
+    viewAbstraction->load(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/basic_page.html")));
+    QVERIFY(waitForSignal(viewAbstraction.data(), SIGNAL(loadSucceeded())));
+
+    QUrl url;
+    QVERIFY(viewAbstraction->url(url));
+    QCOMPARE(url.path(), QLatin1String(TESTS_SOURCE_DIR "/html/basic_page.html"));
+
+    // FIXME: This test should be fleshed out. Right now it's just here to make sure we don't crash.
+    viewAbstraction->triggerNavigationAction(QtWebKit::Stop);
+}
+
 void tst_CommonViewTests::show()
 {
     // This should not crash.

Modified: trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.cpp (90646 => 90647)


--- trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.cpp	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.cpp	2011-07-08 18:37:38 UTC (rev 90647)
@@ -17,6 +17,7 @@
     Boston, MA 02110-1301, USA.
 */
 
+#include <QAction>
 #include <QApplication>
 #include <QDesktopWidget>
 #include "webviewabstraction.h"
@@ -76,6 +77,14 @@
     return true;
 }
 
+void WebViewAbstraction::triggerNavigationAction(QtWebKit::NavigationAction which)
+{
+    QAction* touchAction = touchWebView()->page()->navigationAction(which);
+    touchAction->trigger();
+    QAction* desktopAction = desktopWebView()->navigationAction(which);
+    desktopAction->trigger();
+}
+
 void WebViewAbstraction::touchViewLoadStarted()
 {
     m_touchViewSignalsCounter[SIGNAL(loadStarted())]++;

Modified: trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.h (90646 => 90647)


--- trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.h	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.h	2011-07-08 18:37:38 UTC (rev 90647)
@@ -40,6 +40,8 @@
     void load(const QUrl&);
     bool url(QUrl&) const;
 
+    void triggerNavigationAction(QtWebKit::NavigationAction);
+
 Q_SIGNALS:
     void loadStarted();
     void loadSucceeded();

Added: trunk/Source/WebKit2/UIProcess/API/qt/tests/html/basic_page2.html (0 => 90647)


--- trunk/Source/WebKit2/UIProcess/API/qt/tests/html/basic_page2.html	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/qt/tests/html/basic_page2.html	2011-07-08 18:37:38 UTC (rev 90647)
@@ -0,0 +1 @@
+<h1>Basic page 2</h1>

Modified: trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp (90646 => 90647)


--- trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp	2011-07-08 18:37:38 UTC (rev 90647)
@@ -648,6 +648,22 @@
     m_webPageProxy->contextMenuItemSelected(menuItemData);
 }
 
+QAction* QtWebPageProxy::navigationAction(QtWebKit::NavigationAction which) const
+{
+    switch (which) {
+    case QtWebKit::Back:
+        return action(QtWebPageProxy::Back);
+    case QtWebKit::Forward:
+        return action(QtWebPageProxy::Forward);
+    case QtWebKit::Reload:
+        return action(QtWebPageProxy::Reload);
+    case QtWebKit::Stop:
+        return action(QtWebPageProxy::Stop);
+    }
+
+    return 0;
+}
+
 QAction* QtWebPageProxy::action(WebAction action) const
 {
     if (action == QtWebPageProxy::NoWebAction || action >= WebActionCount)

Modified: trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.h (90646 => 90647)


--- trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.h	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.h	2011-07-08 18:37:38 UTC (rev 90647)
@@ -25,6 +25,7 @@
 
 #include "LayerTreeContext.h"
 #include "PageClient.h"
+#include "qwebkittypes.h"
 #include "ShareableBitmap.h"
 #include "ViewportArguments.h"
 #include "ViewInterface.h"
@@ -172,6 +173,8 @@
 
     void setResizesToContentsUsingLayoutSize(const QSize& targetLayoutSize);
 
+    QAction* navigationAction(QtWebKit::NavigationAction) const;
+
     QAction* action(WebAction action) const;
     void triggerAction(WebAction action, bool checked = false);
     void setCreateNewPageFunction(CreateNewPageFn function);

Modified: trunk/Source/WebKit2/WebKit2API.pri (90646 => 90647)


--- trunk/Source/WebKit2/WebKit2API.pri	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Source/WebKit2/WebKit2API.pri	2011-07-08 18:37:38 UTC (rev 90647)
@@ -125,6 +125,7 @@
     $$SOURCE_DIR/WebKit2/UIProcess/API/qt/qtouchwebpage_p.h \
     $$SOURCE_DIR/WebKit2/UIProcess/API/qt/qtouchwebview.h \
     $$SOURCE_DIR/WebKit2/UIProcess/API/qt/qtouchwebview_p.h \
+    $$SOURCE_DIR/WebKit2/UIProcess/API/qt/qwebkittypes.h \
     $$SOURCE_DIR/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleBackForwardList.h \
     $$SOURCE_DIR/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.h \
     $$SOURCE_DIR/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.h \

Modified: trunk/Tools/ChangeLog (90646 => 90647)


--- trunk/Tools/ChangeLog	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Tools/ChangeLog	2011-07-08 18:37:38 UTC (rev 90647)
@@ -1,3 +1,18 @@
+2011-07-08  Andreas Kling  <[email protected]>
+
+        [Qt][WK2] Views should expose QActions for basic navigation.
+        https://bugs.webkit.org/show_bug.cgi?id=64174
+
+        Reviewed by Benjamin Poulain.
+
+        Bring the toolbar in Qt's MiniBrowser back to life.
+
+        * MiniBrowser/qt/BrowserView.cpp:
+        (BrowserView::navigationAction):
+        * MiniBrowser/qt/BrowserView.h:
+        * MiniBrowser/qt/BrowserWindow.cpp:
+        (BrowserWindow::BrowserWindow):
+
 2011-07-08  Adam Roben  <[email protected]>
 
         Teach TestFailures how to find test names in commit-log-editor-style commit messages

Modified: trunk/Tools/MiniBrowser/qt/BrowserView.cpp (90646 => 90647)


--- trunk/Tools/MiniBrowser/qt/BrowserView.cpp	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Tools/MiniBrowser/qt/BrowserView.cpp	2011-07-08 18:37:38 UTC (rev 90647)
@@ -88,3 +88,13 @@
 {
     return qobject_cast<QDesktopWebView*>(m_item);
 }
+
+QAction* BrowserView::navigationAction(QtWebKit::NavigationAction which) const
+{
+    if (desktopWebView())
+        return desktopWebView()->navigationAction(which);
+    if (touchWebView())
+        return touchWebView()->page()->navigationAction(which);
+    Q_ASSERT(false);
+    return 0;
+}

Modified: trunk/Tools/MiniBrowser/qt/BrowserView.h (90646 => 90647)


--- trunk/Tools/MiniBrowser/qt/BrowserView.h	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Tools/MiniBrowser/qt/BrowserView.h	2011-07-08 18:37:38 UTC (rev 90647)
@@ -30,6 +30,7 @@
 #define BrowserView_h
 
 #include <QGraphicsView>
+#include <qwebkittypes.h>
 
 class QDesktopWebView;
 class QTouchWebView;
@@ -44,6 +45,8 @@
     void load(const QString&);
     QGraphicsWidget* view() const;
 
+    QAction* navigationAction(QtWebKit::NavigationAction which) const;
+
     QTouchWebView* touchWebView() const;
     QDesktopWebView* desktopWebView() const;
 

Modified: trunk/Tools/MiniBrowser/qt/BrowserWindow.cpp (90646 => 90647)


--- trunk/Tools/MiniBrowser/qt/BrowserWindow.cpp	2011-07-08 18:33:00 UTC (rev 90646)
+++ trunk/Tools/MiniBrowser/qt/BrowserWindow.cpp	2011-07-08 18:37:38 UTC (rev 90647)
@@ -127,12 +127,10 @@
     connect(m_addressBar, SIGNAL(returnPressed()), SLOT(changeLocation()));
 
     QToolBar* bar = addToolBar("Navigation");
-#if 0
-    bar->addAction(page()->action(QWKPage::Back));
-    bar->addAction(page()->action(QWKPage::Forward));
-    bar->addAction(page()->action(QWKPage::Reload));
-    bar->addAction(page()->action(QWKPage::Stop));
-#endif
+    bar->addAction(m_browser->navigationAction(QtWebKit::Back));
+    bar->addAction(m_browser->navigationAction(QtWebKit::Forward));
+    bar->addAction(m_browser->navigationAction(QtWebKit::Reload));
+    bar->addAction(m_browser->navigationAction(QtWebKit::Stop));
     bar->addWidget(m_addressBar);
 
     QShortcut* selectAddressBar = new QShortcut(Qt::CTRL | Qt::Key_L, this);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to