summaryrefslogtreecommitdiffstats
path: root/src/webengine/api/qquickwebengineview.cpp
diff options
context:
space:
mode:
authorAdam Kallai <kadam@inf.u-szeged.hu>2014-01-06 06:30:02 -0800
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-15 09:50:13 +0100
commite2382d300c2620d476ba2afad210a7ed0424bf8c (patch)
tree9241c2733f8870c67f9dfe80bca3704d554af0f0 /src/webengine/api/qquickwebengineview.cpp
parent74ffcbf0cfe0235b5c09515231ff13543388d28b (diff)
Implement QQuickWebEngineLoadRequest class
It contains information about a requested load of a web page. Change-Id: Ie45706adb51ee5bce98e7af01252d9a8389db57d Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com> Reviewed-by: Andras Becsi <andras.becsi@digia.com>
Diffstat (limited to 'src/webengine/api/qquickwebengineview.cpp')
-rw-r--r--src/webengine/api/qquickwebengineview.cpp40
1 files changed, 35 insertions, 5 deletions
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index d159ed8fc..ac2dc681e 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -42,7 +42,10 @@
#include "qquickwebengineview_p.h"
#include "qquickwebengineview_p_p.h"
+#include "net/base/net_errors.h"
+#include "qquickwebengineloadrequest_p.h"
#include "web_contents_adapter.h"
+#include "web_engine_error.h"
#include "render_widget_host_view_qt_delegate_quick.h"
#include <QScreen>
@@ -57,6 +60,7 @@ QQuickWebEngineViewPrivate::QQuickWebEngineViewPrivate()
, v(new QQuickWebEngineViewport(this))
, loadProgress(0)
, inspectable(false)
+ , m_isLoading(false)
, devicePixelRatio(QGuiApplication::primaryScreen()->devicePixelRatio())
, m_dpiScale(1.0)
{
@@ -123,7 +127,12 @@ void QQuickWebEngineViewPrivate::iconChanged(const QUrl &url)
void QQuickWebEngineViewPrivate::loadingStateChanged()
{
Q_Q(QQuickWebEngineView);
- Q_EMIT q->loadingStateChanged();
+ const bool wasLoading = m_isLoading;
+ m_isLoading = adapter->isLoading();
+ if (m_isLoading && !wasLoading) {
+ QQuickWebEngineLoadRequest loadRequest(q->url(), QQuickWebEngineView::LoadStartedStatus);
+ Q_EMIT q->loadingStateChanged(&loadRequest);
+ }
}
void QQuickWebEngineViewPrivate::loadProgressChanged(int progress)
@@ -144,11 +153,29 @@ qreal QQuickWebEngineViewPrivate::dpiScale() const
return m_dpiScale;
}
-void QQuickWebEngineViewPrivate::loadFinished(bool success)
+void QQuickWebEngineViewPrivate::loadFinished(bool success, int error_code, const QString &error_description)
{
Q_Q(QQuickWebEngineView);
- Q_UNUSED(success);
- Q_EMIT q->loadingStateChanged();
+ if (error_code == net::ERR_ABORTED) {
+ QQuickWebEngineLoadRequest loadRequest(q->url(), QQuickWebEngineView::LoadStoppedStatus);
+ Q_EMIT q->loadingStateChanged(&loadRequest);
+ return;
+ }
+ if (success) {
+ QQuickWebEngineLoadRequest loadRequest(q->url(), QQuickWebEngineView::LoadSucceededStatus);
+ Q_EMIT q->loadingStateChanged(&loadRequest);
+ return;
+ }
+
+ Q_ASSERT(error_code);
+ QQuickWebEngineLoadRequest loadRequest(
+ q->url(),
+ QQuickWebEngineView::LoadFailedStatus,
+ error_description,
+ error_code,
+ static_cast<QQuickWebEngineView::ErrorDomain>(WebEngineError::toQtErrorDomain(error_code)));
+ Q_EMIT q->loadingStateChanged(&loadRequest);
+ return;
}
void QQuickWebEngineViewPrivate::focusContainer()
@@ -391,7 +418,10 @@ void QQuickWebEngineViewExperimental::adoptHandle(QQuickWebEngineViewHandle *vie
emit q->titleChanged();
emit q->urlChanged();
emit q->iconChanged();
- emit q->loadingStateChanged();
+ // FIXME: The current loading state should be stored in the WebContentAdapter
+ // and it should be checked here if the signal emission is really necessary.
+ QQuickWebEngineLoadRequest loadRequest(viewHandle->adapter->activeUrl(), QQuickWebEngineView::LoadSucceededStatus);
+ emit q->loadingStateChanged(&loadRequest);
emit q->loadProgressChanged();
}