diff options
author | Adam Kallai <kadam@inf.u-szeged.hu> | 2014-01-06 06:30:02 -0800 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-15 09:50:13 +0100 |
commit | e2382d300c2620d476ba2afad210a7ed0424bf8c (patch) | |
tree | 9241c2733f8870c67f9dfe80bca3704d554af0f0 /src/webengine/api/qquickwebengineview.cpp | |
parent | 74ffcbf0cfe0235b5c09515231ff13543388d28b (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.cpp | 40 |
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(); } |