Title: [91985] trunk/Source/WebKit2
Revision
91985
Author
[email protected]
Date
2011-07-29 04:55:06 -0700 (Fri, 29 Jul 2011)

Log Message

[Qt] Make QDesktopWebView/QTouchWebView loadProgress property more usable in QML.
https://bugs.webkit.org/show_bug.cgi?id=65315

Reviewed by Benjamin Poulain.

In order to use the loadProgress value in QML we need to make it
a Q_PROPERTY, therefore we need a getter to get it.

* UIProcess/API/qt/qdesktopwebview.cpp:
(QDesktopWebViewPrivate::didChangeLoadProgress):
(QDesktopWebView::url):
(QDesktopWebView::loadProgress):
* UIProcess/API/qt/qdesktopwebview.h:
* UIProcess/API/qt/qtouchwebpage.cpp:
(QTouchWebPage::loadProgress):
* UIProcess/API/qt/qtouchwebpage.h:
* UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp:
(tst_CommonViewTests::stop):
(tst_CommonViewTests::loadProgress):
* UIProcess/API/qt/tests/commonviewtests/webviewabstraction.cpp:
(WebViewAbstraction::WebViewAbstraction):
(WebViewAbstraction::loadProgress):
(WebViewAbstraction::desktopViewLoadFailed):
(WebViewAbstraction::touchViewLoadProgressChanged):
(WebViewAbstraction::desktopViewLoadProgressChanged):
* UIProcess/API/qt/tests/commonviewtests/webviewabstraction.h:
* UIProcess/qt/QtWebPageProxy.cpp:
(QtWebPageProxy::QtWebPageProxy):
(QtWebPageProxy::didChangeLoadProgress):
* UIProcess/qt/QtWebPageProxy.h:
(QtWebPageProxy::loadProgress):
* UIProcess/qt/TouchViewInterface.cpp:
(WebKit::TouchViewInterface::didChangeLoadProgress):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (91984 => 91985)


--- trunk/Source/WebKit2/ChangeLog	2011-07-29 11:30:45 UTC (rev 91984)
+++ trunk/Source/WebKit2/ChangeLog	2011-07-29 11:55:06 UTC (rev 91985)
@@ -1,3 +1,39 @@
+2011-07-29  Alexis Menard  <[email protected]>
+
+        [Qt] Make QDesktopWebView/QTouchWebView loadProgress property more usable in QML.
+        https://bugs.webkit.org/show_bug.cgi?id=65315
+
+        Reviewed by Benjamin Poulain.
+
+        In order to use the loadProgress value in QML we need to make it
+        a Q_PROPERTY, therefore we need a getter to get it.
+
+        * UIProcess/API/qt/qdesktopwebview.cpp:
+        (QDesktopWebViewPrivate::didChangeLoadProgress):
+        (QDesktopWebView::url):
+        (QDesktopWebView::loadProgress):
+        * UIProcess/API/qt/qdesktopwebview.h:
+        * UIProcess/API/qt/qtouchwebpage.cpp:
+        (QTouchWebPage::loadProgress):
+        * UIProcess/API/qt/qtouchwebpage.h:
+        * UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp:
+        (tst_CommonViewTests::stop):
+        (tst_CommonViewTests::loadProgress):
+        * UIProcess/API/qt/tests/commonviewtests/webviewabstraction.cpp:
+        (WebViewAbstraction::WebViewAbstraction):
+        (WebViewAbstraction::loadProgress):
+        (WebViewAbstraction::desktopViewLoadFailed):
+        (WebViewAbstraction::touchViewLoadProgressChanged):
+        (WebViewAbstraction::desktopViewLoadProgressChanged):
+        * UIProcess/API/qt/tests/commonviewtests/webviewabstraction.h:
+        * UIProcess/qt/QtWebPageProxy.cpp:
+        (QtWebPageProxy::QtWebPageProxy):
+        (QtWebPageProxy::didChangeLoadProgress):
+        * UIProcess/qt/QtWebPageProxy.h:
+        (QtWebPageProxy::loadProgress):
+        * UIProcess/qt/TouchViewInterface.cpp:
+        (WebKit::TouchViewInterface::didChangeLoadProgress):
+
 2011-07-27  Jocelyn Turcotte  <[email protected]>
 
         TiledDrawingArea: Use tile sets to paint old content while rendering for a new scale.

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


--- trunk/Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp	2011-07-29 11:30:45 UTC (rev 91984)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp	2011-07-29 11:55:06 UTC (rev 91985)
@@ -132,7 +132,7 @@
 
 void QDesktopWebViewPrivate::didChangeLoadProgress(int percentageLoaded)
 {
-    emit q->loadProgress(percentageLoaded);
+    emit q->loadProgressChanged(percentageLoaded);
 }
 
 void QDesktopWebViewPrivate::showContextMenu(QSharedPointer<QMenu> menu)
@@ -198,6 +198,11 @@
     return d->page.url();
 }
 
+int QDesktopWebView::loadProgress() const
+{
+    return d->page.loadProgress();
+}
+
 QString QDesktopWebView::title() const
 {
     return d->page.title();

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


--- trunk/Source/WebKit2/UIProcess/API/qt/qdesktopwebview.h	2011-07-29 11:30:45 UTC (rev 91984)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qdesktopwebview.h	2011-07-29 11:55:06 UTC (rev 91985)
@@ -51,15 +51,18 @@
     Q_OBJECT
     Q_PROPERTY(QString title READ title NOTIFY titleChanged)
     Q_PROPERTY(QUrl url READ url NOTIFY urlChanged)
+    Q_PROPERTY(int loadProgress READ loadProgress NOTIFY loadProgressChanged)
 
     Q_ENUMS(NavigationAction)
 
 public:
+
     QDesktopWebView(QSGItem* parent = 0);
     virtual ~QDesktopWebView();
 
     QUrl url() const;
     QString title() const;
+    int loadProgress() const;
 
     Q_INVOKABLE QAction* navigationAction(QtWebKit::NavigationAction which) const;
 
@@ -72,7 +75,7 @@
     void loadStarted();
     void loadSucceeded();
     void loadFailed(const QWebError&);
-    void loadProgress(int progress);
+    void loadProgressChanged(int progress);
     void urlChanged(const QUrl&);
 
 protected:

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


--- trunk/Source/WebKit2/UIProcess/API/qt/qtouchwebpage.cpp	2011-07-29 11:30:45 UTC (rev 91984)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qtouchwebpage.cpp	2011-07-29 11:55:06 UTC (rev 91985)
@@ -60,6 +60,11 @@
     return d->page->title();
 }
 
+int QTouchWebPage::loadProgress() const
+{
+    return d->page->loadProgress();
+}
+
 /*! \reimp
 */
 bool QTouchWebPage::event(QEvent* ev)

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


--- trunk/Source/WebKit2/UIProcess/API/qt/qtouchwebpage.h	2011-07-29 11:30:45 UTC (rev 91984)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qtouchwebpage.h	2011-07-29 11:55:06 UTC (rev 91985)
@@ -39,6 +39,7 @@
     Q_OBJECT
     Q_PROPERTY(QString title READ title NOTIFY titleChanged)
     Q_PROPERTY(QUrl url READ url NOTIFY urlChanged)
+    Q_PROPERTY(int loadProgress READ loadProgress NOTIFY loadProgressChanged)
 
 public:
     QTouchWebPage(QSGItem* parent = 0);
@@ -49,6 +50,7 @@
     Q_INVOKABLE QUrl url() const;
 
     Q_INVOKABLE QString title() const;
+    int loadProgress() const;
 
     QAction* navigationAction(QtWebKit::NavigationAction which);
 
@@ -61,7 +63,7 @@
     void loadStarted();
     void loadSucceeded();
     void loadFailed(const QWebError&);
-    void loadProgress(int progress);
+    void loadProgressChanged(int progress);
 
 protected:
     virtual void keyPressEvent(QKeyEvent*);

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


--- trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp	2011-07-29 11:30:45 UTC (rev 91984)
+++ trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp	2011-07-29 11:55:06 UTC (rev 91985)
@@ -37,6 +37,7 @@
     void backAndForward();
     void reload();
     void stop();
+    void loadProgress();
 
     void show();
 private:
@@ -150,6 +151,19 @@
     viewAbstraction->triggerNavigationAction(QtWebKit::Stop);
 }
 
+void tst_CommonViewTests::loadProgress()
+{
+    QCOMPARE(viewAbstraction->loadProgress(), 0);
+
+    viewAbstraction->load(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/basic_page.html")));
+    QSignalSpy loadProgressChangedSpy(viewAbstraction.data(), SIGNAL(loadProgressChanged(int)));
+    QVERIFY(waitForSignal(viewAbstraction.data(), SIGNAL(loadSucceeded())));
+
+    QVERIFY(loadProgressChangedSpy.count() >= 1);
+
+    QCOMPARE(viewAbstraction->loadProgress(), 100);
+}
+
 void tst_CommonViewTests::show()
 {
     // This should not crash.

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


--- trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.cpp	2011-07-29 11:30:45 UTC (rev 91984)
+++ trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.cpp	2011-07-29 11:55:06 UTC (rev 91985)
@@ -35,6 +35,7 @@
     connect(touchWebView()->page(), SIGNAL(loadStarted()), this, SLOT(touchViewLoadStarted()));
     connect(touchWebView()->page(), SIGNAL(loadSucceeded()), this, SLOT(touchViewLoadSucceeded()));
     connect(touchWebView()->page(), SIGNAL(loadFailed(QWebError)), this, SLOT(touchViewLoadFailed(QWebError)));
+    connect(touchWebView()->page(), SIGNAL(loadProgressChanged(int)), this, SLOT(touchViewLoadProgressChanged(int)));
 
     screenHalf.moveLeft(screenHalf.right());
     m_desktopWebViewWindow.setGeometry(screenHalf);
@@ -42,6 +43,7 @@
     connect(desktopWebView(), SIGNAL(loadStarted()), this, SLOT(desktopViewLoadStarted()));
     connect(desktopWebView(), SIGNAL(loadSucceeded()), this, SLOT(desktopViewLoadSucceeded()));
     connect(desktopWebView(), SIGNAL(loadFailed(QWebError)), this, SLOT(desktopViewLoadFailed(QWebError)));
+    connect(desktopWebView(), SIGNAL(loadProgressChanged(int)), this, SLOT(desktopViewLoadProgressChanged(int)));
 }
 
 void WebViewAbstraction::show()
@@ -79,6 +81,21 @@
     return true;
 }
 
+int WebViewAbstraction::loadProgress() const
+{
+    int touchViewProgress = touchWebView()->page()->loadProgress();
+    int desktopViewProgress = desktopWebView()->loadProgress();
+
+    if (touchViewProgress != desktopViewProgress) {
+        qWarning() << "WebViewAbstraction::loadProgress(): the load progress are different.";
+        qWarning() << "QTouchView's load progress = " << touchViewProgress;
+        qWarning() << "QDesktopView's load progress = " << desktopViewProgress;
+        return -1;
+    }
+
+    return touchViewProgress;
+}
+
 void WebViewAbstraction::triggerNavigationAction(QtWebKit::NavigationAction which)
 {
     QAction* touchAction = touchWebView()->page()->navigationAction(which);
@@ -129,6 +146,20 @@
         emit loadFailed(error);
 }
 
+void WebViewAbstraction::touchViewLoadProgressChanged(int progress)
+{
+    m_touchViewSignalsCounter[SIGNAL(loadProgressChanged(int))]++;
+    if (m_touchViewSignalsCounter[SIGNAL(loadProgressChanged(int))] == m_desktopViewSignalsCounter[SIGNAL(loadProgressChanged(int))])
+        emit loadProgressChanged(progress);
+}
+
+void WebViewAbstraction::desktopViewLoadProgressChanged(int progress)
+{
+    m_desktopViewSignalsCounter[SIGNAL(loadProgressChanged(int))]++;
+    if (m_touchViewSignalsCounter[SIGNAL(loadProgressChanged(int))] == m_desktopViewSignalsCounter[SIGNAL(loadProgressChanged(int))])
+        emit loadProgressChanged(progress);
+}
+
 QTouchWebView* WebViewAbstraction::touchWebView() const
 {
     return static_cast<QTouchWebView*>(m_touchWebViewWindow.webView.data());

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


--- trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.h	2011-07-29 11:30:45 UTC (rev 91984)
+++ trunk/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.h	2011-07-29 11:55:06 UTC (rev 91985)
@@ -39,6 +39,7 @@
 
     void load(const QUrl&);
     bool url(QUrl&) const;
+    int loadProgress() const;
 
     void triggerNavigationAction(QtWebKit::NavigationAction);
 
@@ -46,6 +47,7 @@
     void loadStarted();
     void loadSucceeded();
     void loadFailed(const QWebError&);
+    void loadProgressChanged(int);
 
 private Q_SLOTS:
     void touchViewLoadStarted();
@@ -54,6 +56,8 @@
     void desktopViewLoadSucceeded();
     void touchViewLoadFailed(const QWebError&);
     void desktopViewLoadFailed(const QWebError&);
+    void touchViewLoadProgressChanged(int);
+    void desktopViewLoadProgressChanged(int);
 
 private:
     QTouchWebView* touchWebView() const;

Modified: trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp (91984 => 91985)


--- trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp	2011-07-29 11:30:45 UTC (rev 91984)
+++ trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp	2011-07-29 11:55:06 UTC (rev 91985)
@@ -99,6 +99,7 @@
     , m_context(c)
     , m_preferences(0)
     , m_undoStack(adoptPtr(new QUndoStack(this)))
+    , m_loadProgress(0)
 {
     ASSERT(viewInterface);
     memset(m_actions, 0, sizeof(m_actions));
@@ -426,6 +427,7 @@
 
 void QtWebPageProxy::didChangeLoadProgress(int newLoadProgress)
 {
+    m_loadProgress = newLoadProgress;
     m_viewInterface->didChangeLoadProgress(newLoadProgress);
 }
 

Modified: trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.h (91984 => 91985)


--- trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.h	2011-07-29 11:30:45 UTC (rev 91984)
+++ trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.h	2011-07-29 11:55:06 UTC (rev 91985)
@@ -134,6 +134,7 @@
     void loadDidSucceed();
     void loadDidFail(const QWebError&);
     void didChangeLoadProgress(int);
+    int loadProgress() const { return m_loadProgress; }
 
     void paint(QPainter* painter, QRect);
 
@@ -197,6 +198,7 @@
     mutable QWKPreferences* m_preferences;
 
     OwnPtr<QUndoStack> m_undoStack;
+    int m_loadProgress;
 };
 
 #endif /* QtWebPageProxy_h */

Modified: trunk/Source/WebKit2/UIProcess/qt/TouchViewInterface.cpp (91984 => 91985)


--- trunk/Source/WebKit2/UIProcess/qt/TouchViewInterface.cpp	2011-07-29 11:30:45 UTC (rev 91984)
+++ trunk/Source/WebKit2/UIProcess/qt/TouchViewInterface.cpp	2011-07-29 11:55:06 UTC (rev 91985)
@@ -177,7 +177,7 @@
 
 void TouchViewInterface::didChangeLoadProgress(int percentageLoaded)
 {
-    emit m_pageView->loadProgress(percentageLoaded);
+    emit m_pageView->loadProgressChanged(percentageLoaded);
 }
 
 void TouchViewInterface::showContextMenu(QSharedPointer<QMenu>)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to