summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorArvid Nilsson <anilsson@blackberry.com>2013-10-02 16:58:25 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-04 12:22:53 +0200
commitf7842507b94bd21ce2ed3d4f0d34e8cd83a1731a (patch)
tree812aebc21ce476667ad94b46a9e5bd433cd86f4c /lib
parentef6cb53a1d49de616067126c8f49d2406c9a7f43 (diff)
Add loadProgress API
This exposes loadProgress in both widget and quick webengineviews. However, the progress will not change until we get an upstream change in Chromium where the content LoadProgressChanged API is exposed to all ports, not just Android. The upstream change is https://src.chromium.org/viewvc/chrome?revision=221010&view=revision Once we get that change, you'll see the widget example browser start to paint a blue progress rectangle in the background of the URL bar. Also, a progress bar was added to the quicknanobrowser, but it will be stuck at 0 for now. Change-Id: Icbaa01b86c013e0052b3abb7672c38e57128f44a Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/quick/qquickwebengineview.cpp14
-rw-r--r--lib/quick/qquickwebengineview_p.h3
-rw-r--r--lib/quick/qquickwebengineview_p_p.h2
-rw-r--r--lib/web_contents_adapter_client.h1
-rw-r--r--lib/web_contents_delegate_qt.cpp5
-rw-r--r--lib/web_contents_delegate_qt.h1
-rw-r--r--lib/widgets/Api/qwebenginepage.cpp6
-rw-r--r--lib/widgets/Api/qwebenginepage_p.h1
-rw-r--r--lib/widgets/Api/qwebengineview.cpp1
9 files changed, 34 insertions, 0 deletions
diff --git a/lib/quick/qquickwebengineview.cpp b/lib/quick/qquickwebengineview.cpp
index aa942c017..55d871093 100644
--- a/lib/quick/qquickwebengineview.cpp
+++ b/lib/quick/qquickwebengineview.cpp
@@ -51,6 +51,7 @@ QT_BEGIN_NAMESPACE
QQuickWebEngineViewPrivate::QQuickWebEngineViewPrivate()
: adapter(new WebContentsAdapter)
+ , loadProgress(0)
{
adapter->initialize(this);
}
@@ -87,6 +88,13 @@ void QQuickWebEngineViewPrivate::loadingStateChanged()
Q_EMIT q->loadingStateChanged();
}
+void QQuickWebEngineViewPrivate::loadProgressChanged(int progress)
+{
+ Q_Q(QQuickWebEngineView);
+ loadProgress = progress;
+ Q_EMIT q->loadProgressChanged();
+}
+
QRectF QQuickWebEngineViewPrivate::viewportRect() const
{
Q_Q(const QQuickWebEngineView);
@@ -170,6 +178,12 @@ bool QQuickWebEngineView::isLoading() const
return d->adapter->isLoading();
}
+int QQuickWebEngineView::loadProgress() const
+{
+ Q_D(const QQuickWebEngineView);
+ return d->loadProgress;
+}
+
QString QQuickWebEngineView::title() const
{
Q_D(const QQuickWebEngineView);
diff --git a/lib/quick/qquickwebengineview_p.h b/lib/quick/qquickwebengineview_p.h
index 1c3e27732..87e7403d6 100644
--- a/lib/quick/qquickwebengineview_p.h
+++ b/lib/quick/qquickwebengineview_p.h
@@ -53,6 +53,7 @@ class QQuickWebEngineView : public QQuickItem {
Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged)
Q_PROPERTY(QUrl icon READ icon NOTIFY iconChanged)
Q_PROPERTY(bool loading READ isLoading NOTIFY loadingStateChanged)
+ Q_PROPERTY(int loadProgress READ loadProgress NOTIFY loadProgressChanged)
Q_PROPERTY(QString title READ title NOTIFY titleChanged)
Q_PROPERTY(bool canGoBack READ canGoBack NOTIFY loadingStateChanged)
Q_PROPERTY(bool canGoForward READ canGoForward NOTIFY loadingStateChanged)
@@ -65,6 +66,7 @@ public:
void setUrl(const QUrl&);
QUrl icon() const;
bool isLoading() const;
+ int loadProgress() const;
QString title() const;
bool canGoBack() const;
bool canGoForward() const;
@@ -80,6 +82,7 @@ Q_SIGNALS:
void urlChanged();
void iconChanged();
void loadingStateChanged();
+ void loadProgressChanged();
protected:
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry);
diff --git a/lib/quick/qquickwebengineview_p_p.h b/lib/quick/qquickwebengineview_p_p.h
index 38621b44d..947886c44 100644
--- a/lib/quick/qquickwebengineview_p_p.h
+++ b/lib/quick/qquickwebengineview_p_p.h
@@ -63,6 +63,7 @@ public:
virtual void urlChanged(const QUrl&) Q_DECL_OVERRIDE;
virtual void iconChanged(const QUrl&) Q_DECL_OVERRIDE;
virtual void loadingStateChanged() Q_DECL_OVERRIDE;
+ virtual void loadProgressChanged(int progress) Q_DECL_OVERRIDE;
virtual QRectF viewportRect() const Q_DECL_OVERRIDE;
virtual void loadFinished(bool success) Q_DECL_OVERRIDE;
virtual void focusContainer() Q_DECL_OVERRIDE;
@@ -70,6 +71,7 @@ public:
QExplicitlySharedDataPointer<WebContentsAdapter> adapter;
QUrl icon;
+ int loadProgress;
};
QT_END_NAMESPACE
diff --git a/lib/web_contents_adapter_client.h b/lib/web_contents_adapter_client.h
index ea6e5a666..39968a8a5 100644
--- a/lib/web_contents_adapter_client.h
+++ b/lib/web_contents_adapter_client.h
@@ -82,6 +82,7 @@ public:
virtual void urlChanged(const QUrl&) = 0;
virtual void iconChanged(const QUrl&) = 0;
virtual void loadingStateChanged() = 0;
+ virtual void loadProgressChanged(int progress) = 0;
virtual QRectF viewportRect() const = 0;
virtual void loadFinished(bool success) = 0;
virtual void focusContainer() = 0;
diff --git a/lib/web_contents_delegate_qt.cpp b/lib/web_contents_delegate_qt.cpp
index 12a00481c..877d1cafc 100644
--- a/lib/web_contents_delegate_qt.cpp
+++ b/lib/web_contents_delegate_qt.cpp
@@ -86,6 +86,11 @@ void WebContentsDelegateQt::LoadingStateChanged(content::WebContents* source)
m_viewClient->loadingStateChanged();
}
+void WebContentsDelegateQt::LoadProgressChanged(content::WebContents* source, double progress)
+{
+ m_viewClient->loadProgressChanged(qRound(progress * 100));
+}
+
void WebContentsDelegateQt::DidFailLoad(int64 frame_id, const GURL &validated_url, bool is_main_frame, int error_code, const string16 &error_description, content::RenderViewHost *render_view_host)
{
if (is_main_frame)
diff --git a/lib/web_contents_delegate_qt.h b/lib/web_contents_delegate_qt.h
index 629fd5c6c..b9720eac2 100644
--- a/lib/web_contents_delegate_qt.h
+++ b/lib/web_contents_delegate_qt.h
@@ -62,6 +62,7 @@ public:
virtual void NavigationStateChanged(const content::WebContents* source, unsigned changed_flags);
virtual void AddNewContents(content::WebContents* source, content::WebContents* new_contents, WindowOpenDisposition disposition, const gfx::Rect& initial_pos, bool user_gesture, bool* was_blocked);
virtual void LoadingStateChanged(content::WebContents* source);
+ virtual void LoadProgressChanged(content::WebContents* source, double progress);
virtual void DidFailLoad(int64 frame_id, const GURL &validated_url, bool is_main_frame, int error_code, const string16 &error_description, content::RenderViewHost *render_view_host);
virtual void DidFinishLoad(int64 frame_id, const GURL &validated_url, bool is_main_frame, content::RenderViewHost *render_view_host);
virtual void DidUpdateFaviconURL(int32 page_id, const std::vector<content::FaviconURL>& candidates);
diff --git a/lib/widgets/Api/qwebenginepage.cpp b/lib/widgets/Api/qwebenginepage.cpp
index ab3b1e675..8fafb3c47 100644
--- a/lib/widgets/Api/qwebenginepage.cpp
+++ b/lib/widgets/Api/qwebenginepage.cpp
@@ -86,6 +86,12 @@ void QWebEnginePagePrivate::loadingStateChanged()
updateNavigationActions();
}
+void QWebEnginePagePrivate::loadProgressChanged(int progress)
+{
+ Q_Q(QWebEnginePage);
+ Q_EMIT q->loadProgress(progress);
+}
+
QRectF QWebEnginePagePrivate::viewportRect() const
{
return view ? view->geometry() : QRectF();
diff --git a/lib/widgets/Api/qwebenginepage_p.h b/lib/widgets/Api/qwebenginepage_p.h
index ad1de0047..e8f511d2d 100644
--- a/lib/widgets/Api/qwebenginepage_p.h
+++ b/lib/widgets/Api/qwebenginepage_p.h
@@ -69,6 +69,7 @@ public:
virtual void urlChanged(const QUrl&) Q_DECL_OVERRIDE;
virtual void iconChanged(const QUrl&) Q_DECL_OVERRIDE;
virtual void loadingStateChanged() Q_DECL_OVERRIDE;
+ virtual void loadProgressChanged(int progress) Q_DECL_OVERRIDE;
virtual QRectF viewportRect() const Q_DECL_OVERRIDE;
virtual void loadFinished(bool success) Q_DECL_OVERRIDE;
virtual void focusContainer() Q_DECL_OVERRIDE;
diff --git a/lib/widgets/Api/qwebengineview.cpp b/lib/widgets/Api/qwebengineview.cpp
index a1b4fbc27..d07e710ab 100644
--- a/lib/widgets/Api/qwebengineview.cpp
+++ b/lib/widgets/Api/qwebengineview.cpp
@@ -75,6 +75,7 @@ void QWebEngineViewPrivate::bind(QWebEngineView *view, QWebEnginePage *page)
QObject::connect(page, &QWebEnginePage::titleChanged, view, &QWebEngineView::titleChanged);
QObject::connect(page, &QWebEnginePage::urlChanged, view, &QWebEngineView::urlChanged);
QObject::connect(page, &QWebEnginePage::loadStarted, view, &QWebEngineView::loadStarted);
+ QObject::connect(page, &QWebEnginePage::loadProgress, view, &QWebEngineView::loadProgress);
QObject::connect(page, &QWebEnginePage::loadFinished, view, &QWebEngineView::loadFinished);
}
}