summaryrefslogtreecommitdiffstats
path: root/src/webengine
diff options
context:
space:
mode:
Diffstat (limited to 'src/webengine')
-rw-r--r--src/webengine/api/qquickwebenginecertificateerror.cpp18
-rw-r--r--src/webengine/api/qquickwebenginecertificateerror_p.h1
-rw-r--r--src/webengine/api/qquickwebenginedownloaditem.cpp3
-rw-r--r--src/webengine/api/qquickwebenginedownloaditem_p_p.h5
-rw-r--r--src/webengine/api/qquickwebenginehistory.cpp2
-rw-r--r--src/webengine/api/qquickwebenginehistory_p.h2
-rw-r--r--src/webengine/api/qquickwebenginehistory_p_p.h8
-rw-r--r--src/webengine/api/qquickwebenginenewviewrequest_p.h4
-rw-r--r--src/webengine/api/qquickwebengineprofile.cpp2
-rw-r--r--src/webengine/api/qquickwebengineprofile_p.h4
-rw-r--r--src/webengine/api/qquickwebengineprofile_p_p.h12
-rw-r--r--src/webengine/api/qquickwebenginescript.cpp19
-rw-r--r--src/webengine/api/qquickwebenginescript_p.h13
-rw-r--r--src/webengine/api/qquickwebenginescript_p_p.h12
-rw-r--r--src/webengine/api/qquickwebenginesettings.cpp2
-rw-r--r--src/webengine/api/qquickwebenginesettings_p.h4
-rw-r--r--src/webengine/api/qquickwebenginetestsupport.cpp125
-rw-r--r--src/webengine/api/qquickwebenginetestsupport_p.h101
-rw-r--r--src/webengine/api/qquickwebengineview.cpp103
-rw-r--r--src/webengine/api/qquickwebengineview_p.h43
-rw-r--r--src/webengine/api/qquickwebengineview_p_p.h54
-rw-r--r--src/webengine/doc/src/qquickwebengineview_lgpl.qdoc57
-rw-r--r--src/webengine/plugin/plugin.cpp2
-rw-r--r--src/webengine/plugin/testsupport/plugin.cpp65
-rw-r--r--src/webengine/plugin/testsupport/qmldir3
-rw-r--r--src/webengine/plugin/testsupport/testsupport.pro13
-rw-r--r--src/webengine/render_widget_host_view_qt_delegate_quick.cpp4
-rw-r--r--src/webengine/render_widget_host_view_qt_delegate_quick.h5
-rw-r--r--src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp3
-rw-r--r--src/webengine/render_widget_host_view_qt_delegate_quickwindow.h4
-rw-r--r--src/webengine/ui_delegates_manager.cpp4
-rw-r--r--src/webengine/ui_delegates_manager.h10
-rw-r--r--src/webengine/webengine.pro7
33 files changed, 624 insertions, 90 deletions
diff --git a/src/webengine/api/qquickwebenginecertificateerror.cpp b/src/webengine/api/qquickwebenginecertificateerror.cpp
index ba22bf1f0..a39bbfb84 100644
--- a/src/webengine/api/qquickwebenginecertificateerror.cpp
+++ b/src/webengine/api/qquickwebenginecertificateerror.cpp
@@ -45,7 +45,8 @@ public:
error(static_cast<QQuickWebEngineCertificateError::Error>(static_cast<int>(controller->error()))),
description(controller->errorString()),
overridable(controller->overridable()),
- async(false)
+ async(false),
+ answered(false)
{
}
@@ -54,6 +55,7 @@ public:
QString description;
bool overridable;
bool async;
+ bool answered;
};
@@ -102,7 +104,9 @@ void QQuickWebEngineCertificateError::defer()
*/
void QQuickWebEngineCertificateError::ignoreCertificateError()
{
- Q_D(const QQuickWebEngineCertificateError);
+ Q_D(QQuickWebEngineCertificateError);
+
+ d->answered = true;
QSharedPointer<CertificateErrorController> strongRefCert = d->weakRefCertErrorController.toStrongRef();
if (strongRefCert)
@@ -116,7 +120,9 @@ void QQuickWebEngineCertificateError::ignoreCertificateError()
*/
void QQuickWebEngineCertificateError::rejectCertificate()
{
- Q_D(const QQuickWebEngineCertificateError);
+ Q_D(QQuickWebEngineCertificateError);
+
+ d->answered = true;
QSharedPointer<CertificateErrorController> strongRefCert = d->weakRefCertErrorController.toStrongRef();
if (strongRefCert)
@@ -169,5 +175,11 @@ bool QQuickWebEngineCertificateError::deferred() const
return d->async;
}
+bool QQuickWebEngineCertificateError::answered() const
+{
+ Q_D(const QQuickWebEngineCertificateError);
+ return d->answered;
+}
+
QT_END_NAMESPACE
diff --git a/src/webengine/api/qquickwebenginecertificateerror_p.h b/src/webengine/api/qquickwebenginecertificateerror_p.h
index 08ebc83b6..18a1f90e5 100644
--- a/src/webengine/api/qquickwebenginecertificateerror_p.h
+++ b/src/webengine/api/qquickwebenginecertificateerror_p.h
@@ -83,6 +83,7 @@ public:
QString description() const;
bool overridable() const;
bool deferred() const;
+ bool answered() const;
private:
Q_DISABLE_COPY(QQuickWebEngineCertificateError)
diff --git a/src/webengine/api/qquickwebenginedownloaditem.cpp b/src/webengine/api/qquickwebenginedownloaditem.cpp
index c1eaaadb1..c38f5ea1c 100644
--- a/src/webengine/api/qquickwebenginedownloaditem.cpp
+++ b/src/webengine/api/qquickwebenginedownloaditem.cpp
@@ -36,6 +36,9 @@
#include "qquickwebenginedownloaditem_p.h"
#include "qquickwebenginedownloaditem_p_p.h"
+#include "qquickwebengineprofile_p_p.h"
+
+using QtWebEngineCore::BrowserContextAdapterClient;
QT_BEGIN_NAMESPACE
diff --git a/src/webengine/api/qquickwebenginedownloaditem_p_p.h b/src/webengine/api/qquickwebenginedownloaditem_p_p.h
index 9d054f5e0..fe45ca2a3 100644
--- a/src/webengine/api/qquickwebenginedownloaditem_p_p.h
+++ b/src/webengine/api/qquickwebenginedownloaditem_p_p.h
@@ -37,12 +37,13 @@
#ifndef QQUICKWEBENGINEDOWNLOADITEM_P_P_H
#define QQUICKWEBENGINEDOWNLOADITEM_P_P_H
+#include "browser_context_adapter_client.h"
#include "qquickwebenginedownloaditem_p.h"
-#include "qquickwebengineprofile_p_p.h"
#include <private/qtwebengineglobal_p.h>
#include <QString>
QT_BEGIN_NAMESPACE
+class QQuickWebEngineProfilePrivate;
class QQuickWebEngineDownloadItemPrivate {
QQuickWebEngineDownloadItem *q_ptr;
@@ -59,7 +60,7 @@ public:
qint64 receivedBytes;
QString downloadPath;
- void update(const BrowserContextAdapterClient::DownloadItemInfo &info);
+ void update(const QtWebEngineCore::BrowserContextAdapterClient::DownloadItemInfo &info);
void updateState(QQuickWebEngineDownloadItem::DownloadState newState);
};
diff --git a/src/webengine/api/qquickwebenginehistory.cpp b/src/webengine/api/qquickwebenginehistory.cpp
index 3b6d7bb2f..9a737fbbe 100644
--- a/src/webengine/api/qquickwebenginehistory.cpp
+++ b/src/webengine/api/qquickwebenginehistory.cpp
@@ -68,7 +68,7 @@ int QQuickWebEngineHistoryListModelPrivate::offsetForIndex(int index) const
return index - adapter()->currentNavigationEntryIndex();
}
-WebContentsAdapter *QQuickWebEngineHistoryListModelPrivate::adapter() const
+QtWebEngineCore::WebContentsAdapter *QQuickWebEngineHistoryListModelPrivate::adapter() const
{
return view->adapter.data();
}
diff --git a/src/webengine/api/qquickwebenginehistory_p.h b/src/webengine/api/qquickwebenginehistory_p.h
index 02f29b35b..cb6aff2bc 100644
--- a/src/webengine/api/qquickwebenginehistory_p.h
+++ b/src/webengine/api/qquickwebenginehistory_p.h
@@ -46,8 +46,6 @@
QT_BEGIN_NAMESPACE
-class WebEngineHistory;
-class WebEngineHistoryItem;
class QQuickWebEngineHistory;
class QQuickWebEngineHistoryPrivate;
class QQuickWebEngineHistoryListModelPrivate;
diff --git a/src/webengine/api/qquickwebenginehistory_p_p.h b/src/webengine/api/qquickwebenginehistory_p_p.h
index 2ad2af26f..0d714b1b6 100644
--- a/src/webengine/api/qquickwebenginehistory_p_p.h
+++ b/src/webengine/api/qquickwebenginehistory_p_p.h
@@ -37,11 +37,13 @@
#ifndef QQUICKWEBENGINEHISTORY_P_P_H
#define QQUICKWEBENGINEHISTORY_P_P_H
+namespace QtWebEngineCore {
class WebContentsAdapter;
-class QQuickWebEngineHistoryListModel;
-class QQuickWebEngineViewPrivate;
+}
QT_BEGIN_NAMESPACE
+class QQuickWebEngineHistoryListModel;
+class QQuickWebEngineViewPrivate;
class QQuickWebEngineHistoryListModelPrivate {
public:
@@ -52,7 +54,7 @@ public:
virtual int index(int) const;
virtual int offsetForIndex(int) const;
- WebContentsAdapter *adapter() const;
+ QtWebEngineCore::WebContentsAdapter *adapter() const;
QQuickWebEngineViewPrivate *view;
};
diff --git a/src/webengine/api/qquickwebenginenewviewrequest_p.h b/src/webengine/api/qquickwebenginenewviewrequest_p.h
index a24ce3b79..062a2fa33 100644
--- a/src/webengine/api/qquickwebenginenewviewrequest_p.h
+++ b/src/webengine/api/qquickwebenginenewviewrequest_p.h
@@ -40,7 +40,9 @@
#include "qtwebengineglobal_p.h"
#include "qquickwebengineview_p.h"
+namespace QtWebEngineCore {
class WebContentsAdapter;
+}
QT_BEGIN_NAMESPACE
@@ -59,7 +61,7 @@ private:
QQuickWebEngineNewViewRequest();
QQuickWebEngineView::NewViewDestination m_destination;
bool m_isUserInitiated;
- QExplicitlySharedDataPointer<WebContentsAdapter> m_adapter;
+ QExplicitlySharedDataPointer<QtWebEngineCore::WebContentsAdapter> m_adapter;
friend class QQuickWebEngineViewPrivate;
};
diff --git a/src/webengine/api/qquickwebengineprofile.cpp b/src/webengine/api/qquickwebengineprofile.cpp
index 36992ca9f..718007c35 100644
--- a/src/webengine/api/qquickwebengineprofile.cpp
+++ b/src/webengine/api/qquickwebengineprofile.cpp
@@ -46,6 +46,8 @@
#include "browser_context_adapter.h"
#include "web_engine_settings.h"
+using QtWebEngineCore::BrowserContextAdapter;
+
QT_BEGIN_NAMESPACE
QQuickWebEngineProfilePrivate::QQuickWebEngineProfilePrivate(BrowserContextAdapter* browserContext, bool ownsContext)
diff --git a/src/webengine/api/qquickwebengineprofile_p.h b/src/webengine/api/qquickwebengineprofile_p.h
index a18d81be4..ee91d7728 100644
--- a/src/webengine/api/qquickwebengineprofile_p.h
+++ b/src/webengine/api/qquickwebengineprofile_p.h
@@ -43,6 +43,10 @@
#include <QScopedPointer>
#include <QString>
+namespace QtWebEngineCore {
+class BrowserContextAdapter;
+}
+
QT_BEGIN_NAMESPACE
class QQuickWebEngineDownloadItem;
diff --git a/src/webengine/api/qquickwebengineprofile_p_p.h b/src/webengine/api/qquickwebengineprofile_p_p.h
index 4810cec77..0cf11acec 100644
--- a/src/webengine/api/qquickwebengineprofile_p_p.h
+++ b/src/webengine/api/qquickwebengineprofile_p_p.h
@@ -37,8 +37,6 @@
#ifndef QQUICKWEBENGINEPROFILE_P_P_H
#define QQUICKWEBENGINEPROFILE_P_P_H
-class BrowserContextAdapter;
-
#include "browser_context_adapter_client.h"
#include "qquickwebengineprofile_p.h"
@@ -51,13 +49,13 @@ QT_BEGIN_NAMESPACE
class QQuickWebEngineDownloadItem;
class QQuickWebEngineSettings;
-class QQuickWebEngineProfilePrivate : public BrowserContextAdapterClient {
+class QQuickWebEngineProfilePrivate : public QtWebEngineCore::BrowserContextAdapterClient {
public:
Q_DECLARE_PUBLIC(QQuickWebEngineProfile)
- QQuickWebEngineProfilePrivate(BrowserContextAdapter* browserContext, bool ownsContext);
+ QQuickWebEngineProfilePrivate(QtWebEngineCore::BrowserContextAdapter* browserContext, bool ownsContext);
~QQuickWebEngineProfilePrivate();
- BrowserContextAdapter *browserContext() const { return m_browserContext; }
+ QtWebEngineCore::BrowserContextAdapter *browserContext() const { return m_browserContext; }
QQuickWebEngineSettings *settings() const { return m_settings.data(); }
void cancelDownload(quint32 downloadId);
@@ -70,8 +68,8 @@ private:
friend class QQuickWebEngineViewPrivate;
QQuickWebEngineProfile *q_ptr;
QScopedPointer<QQuickWebEngineSettings> m_settings;
- BrowserContextAdapter *m_browserContext;
- QExplicitlySharedDataPointer<BrowserContextAdapter> m_browserContextRef;
+ QtWebEngineCore::BrowserContextAdapter *m_browserContext;
+ QExplicitlySharedDataPointer<QtWebEngineCore::BrowserContextAdapter> m_browserContextRef;
QMap<quint32, QPointer<QQuickWebEngineDownloadItem> > m_ongoingDownloads;
};
diff --git a/src/webengine/api/qquickwebenginescript.cpp b/src/webengine/api/qquickwebenginescript.cpp
index 872ba1533..6ea6d01bc 100644
--- a/src/webengine/api/qquickwebenginescript.cpp
+++ b/src/webengine/api/qquickwebenginescript.cpp
@@ -41,6 +41,8 @@
#include <QtCore/QTimerEvent>
#include "user_script_controller_host.h"
+using QtWebEngineCore::UserScript;
+
QQuickWebEngineScript::QQuickWebEngineScript()
: d_ptr(new QQuickWebEngineScriptPrivate)
{
@@ -70,7 +72,7 @@ QString QQuickWebEngineScript::toString() const
}
ret.append(QString::number(d->coreScript.worldId()) % QStringLiteral(", ")
% (d->coreScript.runsOnSubFrames() ? QStringLiteral("true") : QStringLiteral("false"))
- % QStringLiteral(", ") % d->coreScript.source() % QLatin1Char(')'));
+ % QStringLiteral(", ") % d->coreScript.sourceCode() % QLatin1Char(')'));
return ret;
}
@@ -81,10 +83,10 @@ QString QQuickWebEngineScript::name() const
}
-QString QQuickWebEngineScript::source() const
+QString QQuickWebEngineScript::sourceCode() const
{
Q_D(const QQuickWebEngineScript);
- return d->coreScript.source();
+ return d->coreScript.sourceCode();
}
ASSERT_ENUMS_MATCH(QQuickWebEngineScript::Deferred, UserScript::AfterLoad)
@@ -122,17 +124,16 @@ void QQuickWebEngineScript::setName(QString arg)
Q_EMIT nameChanged(arg);
}
-void QQuickWebEngineScript::setSource(QString arg)
+void QQuickWebEngineScript::setSourceCode(QString arg)
{
Q_D(QQuickWebEngineScript);
- if (arg == source())
+ if (arg == sourceCode())
return;
d->aboutToUpdateUnderlyingScript();
- d->coreScript.setSource(arg);
- Q_EMIT sourceChanged(arg);
+ d->coreScript.setSourceCode(arg);
+ Q_EMIT sourceCodeChanged(arg);
}
-
void QQuickWebEngineScript::setInjectionPoint(QQuickWebEngineScript::InjectionPoint arg)
{
Q_D(QQuickWebEngineScript);
@@ -178,7 +179,7 @@ void QQuickWebEngineScript::timerEvent(QTimerEvent *e)
d->m_controllerHost->addUserScript(d->coreScript, d->m_adapter);
}
-void QQuickWebEngineScriptPrivate::bind(UserScriptControllerHost *scriptController, WebContentsAdapter *adapter)
+void QQuickWebEngineScriptPrivate::bind(QtWebEngineCore::UserScriptControllerHost *scriptController, QtWebEngineCore::WebContentsAdapter *adapter)
{
aboutToUpdateUnderlyingScript();
m_adapter = adapter;
diff --git a/src/webengine/api/qquickwebenginescript_p.h b/src/webengine/api/qquickwebenginescript_p.h
index a42aed41b..55f0c782d 100644
--- a/src/webengine/api/qquickwebenginescript_p.h
+++ b/src/webengine/api/qquickwebenginescript_p.h
@@ -40,9 +40,6 @@
#include <private/qtwebengineglobal_p.h>
#include <QtCore/QObject>
-class UserScriptControllerHost;
-class WebContentsAdapter;
-
QT_BEGIN_NAMESPACE
class QQuickWebEngineScriptPrivate;
class QQuickWebEngineView;
@@ -53,7 +50,7 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineScript : public QObject
Q_ENUMS(InjectionPoint)
Q_ENUMS(ScriptWorldId)
Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
- Q_PROPERTY(QString source READ source WRITE setSource NOTIFY sourceChanged)
+ Q_PROPERTY(QString sourceCode READ sourceCode WRITE setSourceCode NOTIFY sourceCodeChanged)
Q_PROPERTY(InjectionPoint injectionPoint READ injectionPoint WRITE setInjectionPoint NOTIFY injectionPointChanged)
Q_PROPERTY(ScriptWorldId worldId READ worldId WRITE setWorldId NOTIFY worldIdChanged)
Q_PROPERTY(bool runOnSubframes READ runOnSubframes WRITE setRunOnSubframes NOTIFY runOnSubframesChanged)
@@ -77,21 +74,21 @@ public:
Q_INVOKABLE QString toString() const;
QString name() const;
- QString source() const;
+ QString sourceCode() const;
InjectionPoint injectionPoint() const;
ScriptWorldId worldId() const;
bool runOnSubframes() const;
public Q_SLOTS:
void setName(QString arg);
- void setSource(QString arg);
+ void setSourceCode(QString arg);
void setInjectionPoint(InjectionPoint arg);
void setWorldId(ScriptWorldId arg);
void setRunOnSubframes(bool arg);
Q_SIGNALS:
void nameChanged(QString arg);
- void sourceChanged(QString arg);
+ void sourceCodeChanged(QString arg);
void injectionPointChanged(InjectionPoint arg);
void worldIdChanged(ScriptWorldId arg);
void runOnSubframesChanged(bool arg);
@@ -101,7 +98,7 @@ protected:
private:
friend class QQuickWebEngineViewPrivate;
- Q_DECLARE_PRIVATE(QQuickWebEngineScript);
+ Q_DECLARE_PRIVATE(QQuickWebEngineScript)
QScopedPointer<QQuickWebEngineScriptPrivate> d_ptr;
};
QT_END_NAMESPACE
diff --git a/src/webengine/api/qquickwebenginescript_p_p.h b/src/webengine/api/qquickwebenginescript_p_p.h
index 962a04cb2..7b5626fd1 100644
--- a/src/webengine/api/qquickwebenginescript_p_p.h
+++ b/src/webengine/api/qquickwebenginescript_p_p.h
@@ -43,6 +43,10 @@
#include "user_script.h"
#include "web_contents_adapter.h"
+namespace QtWebEngineCore {
+class UserScriptControllerHost;
+class WebContentsAdapter;
+} // namespace
QT_BEGIN_NAMESPACE
@@ -51,12 +55,12 @@ public:
Q_DECLARE_PUBLIC(QQuickWebEngineScript)
QQuickWebEngineScriptPrivate();
void aboutToUpdateUnderlyingScript();
- void bind(UserScriptControllerHost *, WebContentsAdapter * = 0);
+ void bind(QtWebEngineCore::UserScriptControllerHost *, QtWebEngineCore::WebContentsAdapter * = 0);
- UserScript coreScript;
+ QtWebEngineCore::UserScript coreScript;
QBasicTimer m_basicTimer;
- UserScriptControllerHost *m_controllerHost;
- WebContentsAdapter *m_adapter;
+ QtWebEngineCore::UserScriptControllerHost *m_controllerHost;
+ QtWebEngineCore::WebContentsAdapter *m_adapter;
private:
QQuickWebEngineScript *q_ptr;
diff --git a/src/webengine/api/qquickwebenginesettings.cpp b/src/webengine/api/qquickwebenginesettings.cpp
index 343ffef0e..70a9d4b59 100644
--- a/src/webengine/api/qquickwebenginesettings.cpp
+++ b/src/webengine/api/qquickwebenginesettings.cpp
@@ -43,6 +43,8 @@
QT_BEGIN_NAMESPACE
+using QtWebEngineCore::WebEngineSettings;
+
QQuickWebEngineSettings::QQuickWebEngineSettings(QQuickWebEngineSettings *parentSettings)
: d_ptr(new WebEngineSettings(parentSettings ? parentSettings->d_ptr.data() : 0))
{ }
diff --git a/src/webengine/api/qquickwebenginesettings_p.h b/src/webengine/api/qquickwebenginesettings_p.h
index 40d04fdf8..68c85ea7f 100644
--- a/src/webengine/api/qquickwebenginesettings_p.h
+++ b/src/webengine/api/qquickwebenginesettings_p.h
@@ -41,7 +41,9 @@
#include <QObject>
#include <QScopedPointer>
+namespace QtWebEngineCore {
class WebEngineSettings;
+}
QT_BEGIN_NAMESPACE
@@ -111,7 +113,7 @@ private:
void setParentSettings(QQuickWebEngineSettings *parentSettings);
- QScopedPointer<WebEngineSettings> d_ptr;
+ QScopedPointer<QtWebEngineCore::WebEngineSettings> d_ptr;
};
QT_END_NAMESPACE
diff --git a/src/webengine/api/qquickwebenginetestsupport.cpp b/src/webengine/api/qquickwebenginetestsupport.cpp
new file mode 100644
index 000000000..0bb16ae14
--- /dev/null
+++ b/src/webengine/api/qquickwebenginetestsupport.cpp
@@ -0,0 +1,125 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtWebEngine module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qquickwebenginetestsupport_p.h"
+
+#include "qquickwebengineloadrequest_p.h"
+
+QT_BEGIN_NAMESPACE
+using namespace QtWebEngineCore;
+
+QQuickWebEngineJavaScriptDialog::QQuickWebEngineJavaScriptDialog(QSharedPointer<JavaScriptDialogController> controller)
+{
+ m_dialogController = controller;
+}
+
+QString QQuickWebEngineJavaScriptDialog::message() const
+{
+ return m_dialogController->message();
+}
+
+QString QQuickWebEngineJavaScriptDialog::defaultValue() const
+{
+ return m_dialogController->defaultPrompt();
+}
+
+void QQuickWebEngineJavaScriptDialog::reject()
+{
+ QMetaObject::invokeMethod(m_dialogController.data(), "reject");
+}
+
+void QQuickWebEngineJavaScriptDialog::accept(const QString &input)
+{
+ if (!input.isNull())
+ QMetaObject::invokeMethod(m_dialogController.data(), "textProvided", Q_ARG(QString, input));
+ QMetaObject::invokeMethod(m_dialogController.data(), "accept");
+}
+
+QQuickWebEngineErrorPage::QQuickWebEngineErrorPage()
+{
+}
+
+void QQuickWebEngineErrorPage::loadFinished(bool success, const QUrl &url)
+{
+ // Loading of the error page should not fail.
+ Q_ASSERT(success);
+
+ QQuickWebEngineLoadRequest loadRequest(url, QQuickWebEngineView::LoadSucceededStatus);
+ Q_EMIT loadingChanged(&loadRequest);
+ return;
+}
+
+void QQuickWebEngineErrorPage::loadStarted(const QUrl &provisionalUrl)
+{
+ QQuickWebEngineLoadRequest loadRequest(provisionalUrl, QQuickWebEngineView::LoadStartedStatus);
+ Q_EMIT loadingChanged(&loadRequest);
+}
+
+QQuickWebEngineTestSupport::QQuickWebEngineTestSupport()
+ : m_errorPage(new QQuickWebEngineErrorPage())
+{
+}
+
+QQuickWebEngineErrorPage *QQuickWebEngineTestSupport::errorPage() const
+{
+ return m_errorPage.data();
+}
+
+void QQuickWebEngineTestSupport::testDialog(QSharedPointer<JavaScriptDialogController> dialogController)
+{
+ Q_ASSERT(!dialogController.isNull());
+
+ QQuickWebEngineJavaScriptDialog dialog(dialogController);
+ switch (dialogController->type()) {
+ case WebContentsAdapterClient::AlertDialog:
+ Q_EMIT alertDialog(&dialog);
+ break;
+ case WebContentsAdapterClient::ConfirmDialog:
+ Q_EMIT confirmDialog(&dialog);
+ break;
+ case WebContentsAdapterClient::PromptDialog:
+ Q_EMIT promptDialog(&dialog);
+ break;
+ case WebContentsAdapterClient::InternalAuthorizationDialog:
+ break;
+ default:
+ Q_UNREACHABLE();
+ }
+}
+
+QT_END_NAMESPACE
+
+#include "moc_qquickwebenginetestsupport_p.cpp"
diff --git a/src/webengine/api/qquickwebenginetestsupport_p.h b/src/webengine/api/qquickwebenginetestsupport_p.h
new file mode 100644
index 000000000..06950e416
--- /dev/null
+++ b/src/webengine/api/qquickwebenginetestsupport_p.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtWebEngine module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QQUICKWEBENGINETESTSUPPORT_P_H
+#define QQUICKWEBENGINETESTSUPPORT_P_H
+
+#include <private/qtwebengineglobal_p.h>
+
+#include "javascript_dialog_controller.h"
+#include <QObject>
+#include <QUrl>
+
+QT_BEGIN_NAMESPACE
+
+class QQuickWebEngineLoadRequest;
+
+class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineJavaScriptDialog : public QObject {
+ Q_OBJECT
+ Q_PROPERTY(QString message READ message CONSTANT)
+ Q_PROPERTY(QString defaultValue READ defaultValue CONSTANT)
+
+public:
+ QQuickWebEngineJavaScriptDialog(QSharedPointer<QtWebEngineCore::JavaScriptDialogController>);
+ QString message() const;
+ QString defaultValue() const;
+
+public Q_SLOTS:
+ void reject();
+ void accept(const QString &input = QString());
+
+private:
+ QSharedPointer<QtWebEngineCore::JavaScriptDialogController> m_dialogController;
+};
+
+class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineErrorPage : public QObject {
+ Q_OBJECT
+
+public:
+ QQuickWebEngineErrorPage();
+
+ void loadFinished(bool success, const QUrl &url);
+ void loadStarted(const QUrl &provisionalUrl);
+
+Q_SIGNALS:
+ void loadingChanged(QQuickWebEngineLoadRequest *loadRequest);
+};
+
+class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineTestSupport : public QObject {
+ Q_OBJECT
+ Q_PROPERTY(QQuickWebEngineErrorPage *errorPage READ errorPage)
+
+public:
+ QQuickWebEngineTestSupport();
+ QQuickWebEngineErrorPage *errorPage() const;
+ void testDialog(QSharedPointer<QtWebEngineCore::JavaScriptDialogController> dialog);
+
+Q_SIGNALS:
+ void alertDialog(QQuickWebEngineJavaScriptDialog *dialog);
+ void confirmDialog(QQuickWebEngineJavaScriptDialog *dialog);
+ void promptDialog(QQuickWebEngineJavaScriptDialog *dialog);
+
+private:
+ QScopedPointer<QQuickWebEngineErrorPage> m_errorPage;
+};
+
+QT_END_NAMESPACE
+
+#endif // QQUICKWEBENGINETESTSUPPORT_P_H
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index 48d741d20..9a64b9ac6 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -50,6 +50,11 @@
#include "qquickwebengineprofile_p_p.h"
#include "qquickwebenginesettings_p.h"
#include "qquickwebenginescript_p_p.h"
+
+#ifdef ENABLE_QML_TESTSUPPORT_API
+#include "qquickwebenginetestsupport_p.h"
+#endif
+
#include "render_widget_host_view_qt_delegate_quick.h"
#include "render_widget_host_view_qt_delegate_quickwindow.h"
#include "ui_delegates_manager.h"
@@ -73,6 +78,7 @@
#endif // QT_NO_ACCESSIBILITY
QT_BEGIN_NAMESPACE
+using namespace QtWebEngineCore;
#ifndef QT_NO_ACCESSIBILITY
static QAccessibleInterface *webAccessibleFactory(const QString &, QObject *object)
@@ -90,6 +96,9 @@ QQuickWebEngineViewPrivate::QQuickWebEngineViewPrivate()
, m_history(new QQuickWebEngineHistory(this))
, m_profile(QQuickWebEngineProfile::defaultProfile())
, m_settings(new QQuickWebEngineSettings(m_profile->settings()))
+#ifdef ENABLE_QML_TESTSUPPORT_API
+ , m_testSupport(0)
+#endif
, contextMenuExtraItems(0)
, loadProgress(0)
, m_isFullScreen(false)
@@ -221,6 +230,12 @@ void QQuickWebEngineViewPrivate::navigationRequested(int navigationType, const Q
void QQuickWebEngineViewPrivate::javascriptDialog(QSharedPointer<JavaScriptDialogController> dialog)
{
+#ifdef ENABLE_QML_TESTSUPPORT_API
+ if (m_testSupport) {
+ m_testSupport->testDialog(dialog);
+ return;
+ }
+#endif
ui()->showDialog(dialog);
}
@@ -228,12 +243,13 @@ void QQuickWebEngineViewPrivate::allowCertificateError(const QSharedPointer<Cert
{
Q_Q(QQuickWebEngineView);
- m_certificateErrorController = errorController;
QQuickWebEngineCertificateError *quickController = new QQuickWebEngineCertificateError(errorController);
QQmlEngine::setObjectOwnership(quickController, QQmlEngine::JavaScriptOwnership);
Q_EMIT q->certificateError(quickController);
- if (!quickController->deferred())
+ if (!quickController->deferred() && !quickController->answered())
quickController->rejectCertificate();
+ else
+ m_certificateErrorControllers.append(errorController);
}
void QQuickWebEngineViewPrivate::runGeolocationPermissionRequest(const QUrl &url)
@@ -300,11 +316,20 @@ qreal QQuickWebEngineViewPrivate::dpiScale() const
return m_dpiScale;
}
-void QQuickWebEngineViewPrivate::loadStarted(const QUrl &provisionalUrl)
+void QQuickWebEngineViewPrivate::loadStarted(const QUrl &provisionalUrl, bool isErrorPage)
{
Q_Q(QQuickWebEngineView);
+ if (isErrorPage) {
+#ifdef ENABLE_QML_TESTSUPPORT_API
+ if (m_testSupport)
+ m_testSupport->errorPage()->loadStarted(provisionalUrl);
+#endif
+ return;
+ }
+
isLoading = true;
m_history->reset();
+ m_certificateErrorControllers.clear();
QQuickWebEngineLoadRequest loadRequest(provisionalUrl, QQuickWebEngineView::LoadStartedStatus);
Q_EMIT q->loadingChanged(&loadRequest);
}
@@ -323,9 +348,18 @@ Q_STATIC_ASSERT(static_cast<int>(WebEngineError::NoErrorDomain) == static_cast<i
Q_STATIC_ASSERT(static_cast<int>(WebEngineError::CertificateErrorDomain) == static_cast<int>(QQuickWebEngineView::CertificateErrorDomain));
Q_STATIC_ASSERT(static_cast<int>(WebEngineError::DnsErrorDomain) == static_cast<int>(QQuickWebEngineView::DnsErrorDomain));
-void QQuickWebEngineViewPrivate::loadFinished(bool success, const QUrl &url, int errorCode, const QString &errorDescription)
+void QQuickWebEngineViewPrivate::loadFinished(bool success, const QUrl &url, bool isErrorPage, int errorCode, const QString &errorDescription)
{
Q_Q(QQuickWebEngineView);
+
+ if (isErrorPage) {
+#ifdef ENABLE_QML_TESTSUPPORT_API
+ if (m_testSupport)
+ m_testSupport->errorPage()->loadFinished(success, url);
+#endif
+ return;
+ }
+
isLoading = false;
m_history->reset();
if (errorCode == WebEngineError::UserAbortedError) {
@@ -400,12 +434,14 @@ void QQuickWebEngineViewPrivate::close()
void QQuickWebEngineViewPrivate::requestFullScreen(bool fullScreen)
{
- Q_EMIT e->fullScreenRequested(fullScreen);
+ Q_Q(QQuickWebEngineView);
+ QQuickWebEngineFullScreenRequest request(this, fullScreen);
+ Q_EMIT q->fullScreenRequested(request);
}
bool QQuickWebEngineViewPrivate::isFullScreen() const
{
- return e->isFullScreen();
+ return m_isFullScreen;
}
void QQuickWebEngineViewPrivate::javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString& message, int lineNumber, const QString& sourceID)
@@ -701,6 +737,20 @@ void QQuickWebEngineViewPrivate::setProfile(QQuickWebEngineProfile *profile)
}
}
+#ifdef ENABLE_QML_TESTSUPPORT_API
+QQuickWebEngineTestSupport *QQuickWebEngineView::testSupport() const
+{
+ Q_D(const QQuickWebEngineView);
+ return d->m_testSupport;
+}
+
+void QQuickWebEngineView::setTestSupport(QQuickWebEngineTestSupport *testSupport)
+{
+ Q_D(QQuickWebEngineView);
+ d->m_testSupport = testSupport;
+}
+#endif
+
void QQuickWebEngineViewPrivate::didRunJavaScript(quint64 requestId, const QVariant &result)
{
Q_Q(QQuickWebEngineView);
@@ -780,15 +830,11 @@ qreal QQuickWebEngineView::zoomFactor() const
return d->adapter->currentZoomFactor();
}
-void QQuickWebEngineViewExperimental::setIsFullScreen(bool fullscreen)
-{
- d_ptr->m_isFullScreen = fullscreen;
- emit isFullScreenChanged();
-}
-bool QQuickWebEngineViewExperimental::isFullScreen() const
+bool QQuickWebEngineView::isFullScreen() const
{
- return d_ptr->m_isFullScreen;
+ Q_D(const QQuickWebEngineView);
+ return d->m_isFullScreen;
}
void QQuickWebEngineViewExperimental::setExtraContextMenuEntriesComponent(QQmlComponent *contextMenuExtras)
@@ -804,7 +850,7 @@ QQmlComponent *QQuickWebEngineViewExperimental::extraContextMenuEntriesComponent
return d_ptr->contextMenuExtraItems;
}
-void QQuickWebEngineViewExperimental::findText(const QString &subString, FindFlags options, const QJSValue &callback)
+void QQuickWebEngineView::findText(const QString &subString, FindFlags options, const QJSValue &callback)
{
Q_D(QQuickWebEngineView);
if (!d->adapter)
@@ -906,6 +952,15 @@ void QQuickWebEngineView::goBackOrForward(int offset)
d->adapter->navigateToIndex(index);
}
+void QQuickWebEngineView::fullScreenCancelled()
+{
+ Q_D(QQuickWebEngineView);
+ if (d->m_isFullScreen) {
+ d->m_isFullScreen = false;
+ Q_EMIT isFullScreenChanged();
+ }
+}
+
void QQuickWebEngineView::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
QQuickItem::geometryChanged(newGeometry, oldGeometry);
@@ -969,6 +1024,26 @@ void QQuickWebEngineView::componentComplete()
d->ensureContentsAdapter();
}
+QQuickWebEngineFullScreenRequest::QQuickWebEngineFullScreenRequest()
+ : viewPrivate(0)
+ , m_toggleOn(false)
+{
+}
+
+QQuickWebEngineFullScreenRequest::QQuickWebEngineFullScreenRequest(QQuickWebEngineViewPrivate *viewPrivate, bool toggleOn)
+ : viewPrivate(viewPrivate)
+ , m_toggleOn(toggleOn)
+{
+}
+
+void QQuickWebEngineFullScreenRequest::accept()
+{
+ if (viewPrivate && viewPrivate->m_isFullScreen != m_toggleOn) {
+ viewPrivate->m_isFullScreen = m_toggleOn;
+ Q_EMIT viewPrivate->q_ptr->isFullScreenChanged();
+ }
+}
+
QQuickWebEngineViewExperimental::QQuickWebEngineViewExperimental(QQuickWebEngineViewPrivate *viewPrivate)
: q_ptr(0)
, d_ptr(viewPrivate)
diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h
index 93e9ad61b..248ee62b6 100644
--- a/src/webengine/api/qquickwebengineview_p.h
+++ b/src/webengine/api/qquickwebengineview_p.h
@@ -54,6 +54,25 @@ class QQuickWebEngineSettings;
class QQuickWebEngineViewExperimental;
class QQuickWebEngineViewPrivate;
+#ifdef ENABLE_QML_TESTSUPPORT_API
+class QQuickWebEngineTestSupport;
+#endif
+
+class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineFullScreenRequest {
+ Q_GADGET
+ Q_PROPERTY(bool toggleOn READ toggleOn)
+public:
+ QQuickWebEngineFullScreenRequest();
+ QQuickWebEngineFullScreenRequest(QQuickWebEngineViewPrivate *viewPrivate, bool toggleOn);
+
+ Q_INVOKABLE void accept();
+ bool toggleOn() { return m_toggleOn; }
+
+private:
+ QQuickWebEngineViewPrivate *viewPrivate;
+ bool m_toggleOn;
+};
+
class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineView : public QQuickItem {
Q_OBJECT
Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged)
@@ -63,18 +82,25 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineView : public QQuickItem {
Q_PROPERTY(QString title READ title NOTIFY titleChanged)
Q_PROPERTY(bool canGoBack READ canGoBack NOTIFY urlChanged)
Q_PROPERTY(bool canGoForward READ canGoForward NOTIFY urlChanged)
+ Q_PROPERTY(bool isFullScreen READ isFullScreen NOTIFY isFullScreenChanged REVISION 1)
Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged REVISION 1)
Q_PROPERTY(QQuickWebEngineProfile *profile READ profile WRITE setProfile FINAL REVISION 1)
Q_PROPERTY(QQuickWebEngineSettings *settings READ settings REVISION 1)
Q_PROPERTY(QQuickWebEngineHistory *navigationHistory READ navigationHistory CONSTANT FINAL REVISION 1)
Q_PROPERTY(QQmlWebChannel *webChannel READ webChannel WRITE setWebChannel NOTIFY webChannelChanged REVISION 1)
Q_PROPERTY(QQmlListProperty<QQuickWebEngineScript> userScripts READ userScripts FINAL)
+
+#ifdef ENABLE_QML_TESTSUPPORT_API
+ Q_PROPERTY(QQuickWebEngineTestSupport *testSupport READ testSupport WRITE setTestSupport FINAL)
+#endif
+
Q_ENUMS(NavigationRequestAction);
Q_ENUMS(NavigationType);
Q_ENUMS(LoadStatus);
Q_ENUMS(ErrorDomain);
Q_ENUMS(NewViewDestination);
Q_ENUMS(JavaScriptConsoleMessageLevel);
+ Q_FLAGS(FindFlags);
public:
QQuickWebEngineView(QQuickItem *parent = 0);
@@ -88,6 +114,7 @@ public:
QString title() const;
bool canGoBack() const;
bool canGoForward() const;
+ bool isFullScreen() const;
qreal zoomFactor() const;
void setZoomFactor(qreal arg);
@@ -142,6 +169,12 @@ public:
ErrorMessageLevel
};
+ enum FindFlag {
+ FindBackward = 1,
+ FindCaseSensitively = 2,
+ };
+ Q_DECLARE_FLAGS(FindFlags, FindFlag)
+
// QmlParserStatus
virtual void componentComplete() Q_DECL_OVERRIDE;
@@ -154,6 +187,11 @@ public:
void setWebChannel(QQmlWebChannel *);
QQuickWebEngineHistory *navigationHistory() const;
+#ifdef ENABLE_QML_TESTSUPPORT_API
+ QQuickWebEngineTestSupport *testSupport() const;
+ void setTestSupport(QQuickWebEngineTestSupport *testSupport);
+#endif
+
public Q_SLOTS:
void runJavaScript(const QString&, const QJSValue & = QJSValue());
void loadHtml(const QString &html, const QUrl &baseUrl = QUrl());
@@ -162,6 +200,8 @@ public Q_SLOTS:
void goBackOrForward(int index);
void reload();
void stop();
+ Q_REVISION(1) void findText(const QString &subString, FindFlags options = 0, const QJSValue &callback = QJSValue());
+ Q_REVISION(1) void fullScreenCancelled();
Q_SIGNALS:
void titleChanged();
@@ -173,6 +213,8 @@ Q_SIGNALS:
void navigationRequested(QQuickWebEngineNavigationRequest *request);
void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID);
Q_REVISION(1) void certificateError(QQuickWebEngineCertificateError *error);
+ Q_REVISION(1) void fullScreenRequested(const QQuickWebEngineFullScreenRequest &request);
+ Q_REVISION(1) void isFullScreenChanged();
Q_REVISION(1) void newViewRequested(QQuickWebEngineNewViewRequest *request);
Q_REVISION(1) void zoomFactorChanged(qreal arg);
Q_REVISION(1) void webChannelChanged();
@@ -197,5 +239,6 @@ private:
QT_END_NAMESPACE
QML_DECLARE_TYPE(QQuickWebEngineView)
+Q_DECLARE_METATYPE(QQuickWebEngineFullScreenRequest)
#endif // QQUICKWEBENGINEVIEW_P_H
diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h
index 98a7a9c5f..b3907d3a4 100644
--- a/src/webengine/api/qquickwebengineview_p_p.h
+++ b/src/webengine/api/qquickwebengineview_p_p.h
@@ -46,8 +46,10 @@
#include <QtCore/qcompilerdetection.h>
#include <QtGui/qaccessibleobject.h>
+namespace QtWebEngineCore {
class WebContentsAdapter;
class UIDelegatesManager;
+}
QT_BEGIN_NAMESPACE
class QQuickWebEngineView;
@@ -55,6 +57,10 @@ class QQmlComponent;
class QQmlContext;
class QQuickWebEngineSettings;
+#ifdef ENABLE_QML_TESTSUPPORT_API
+class QQuickWebEngineTestSupport;
+#endif
+
class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineViewport : public QObject {
Q_OBJECT
Q_PROPERTY(qreal devicePixelRatio READ devicePixelRatio WRITE setDevicePixelRatio NOTIFY devicePixelRatioChanged)
@@ -77,9 +83,7 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineViewExperimental : public QObjec
Q_OBJECT
Q_PROPERTY(QQuickWebEngineViewport *viewport READ viewport)
Q_PROPERTY(QQmlComponent *extraContextMenuEntriesComponent READ extraContextMenuEntriesComponent WRITE setExtraContextMenuEntriesComponent NOTIFY extraContextMenuEntriesComponentChanged)
- Q_PROPERTY(bool isFullScreen READ isFullScreen WRITE setIsFullScreen NOTIFY isFullScreenChanged)
Q_ENUMS(Feature)
- Q_FLAGS(FindFlags)
public:
enum Feature {
@@ -89,25 +93,14 @@ public:
Geolocation
};
- enum FindFlag {
- FindBackward = 1,
- FindCaseSensitively = 2,
- };
- Q_DECLARE_FLAGS(FindFlags, FindFlag)
-
- void setIsFullScreen(bool fullscreen);
- bool isFullScreen() const;
QQuickWebEngineViewport *viewport() const;
void setExtraContextMenuEntriesComponent(QQmlComponent *);
QQmlComponent *extraContextMenuEntriesComponent() const;
public Q_SLOTS:
- void findText(const QString&, FindFlags, const QJSValue & = QJSValue());
void grantFeaturePermission(const QUrl &securityOrigin, Feature, bool granted);
Q_SIGNALS:
- void fullScreenRequested(bool fullScreen);
- void isFullScreenChanged();
void extraContextMenuEntriesComponentChanged();
void featurePermissionRequested(const QUrl &securityOrigin, Feature feature);
void loadVisuallyCommitted();
@@ -121,7 +114,7 @@ private:
Q_DECLARE_PUBLIC(QQuickWebEngineView)
};
-class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineViewPrivate : public WebContentsAdapterClient
+class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineViewPrivate : public QtWebEngineCore::WebContentsAdapterClient
{
public:
Q_DECLARE_PUBLIC(QQuickWebEngineView)
@@ -131,10 +124,10 @@ public:
QQuickWebEngineViewExperimental *experimental() const;
QQuickWebEngineViewport *viewport() const;
- UIDelegatesManager *ui();
+ QtWebEngineCore::UIDelegatesManager *ui();
- virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQtDelegateClient *client) Q_DECL_OVERRIDE;
- virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegateForPopup(RenderWidgetHostViewQtDelegateClient *client) Q_DECL_OVERRIDE;
+ virtual QtWebEngineCore::RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(QtWebEngineCore::RenderWidgetHostViewQtDelegateClient *client) Q_DECL_OVERRIDE;
+ virtual QtWebEngineCore::RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegateForPopup(QtWebEngineCore::RenderWidgetHostViewQtDelegateClient *client) Q_DECL_OVERRIDE;
virtual void titleChanged(const QString&) Q_DECL_OVERRIDE;
virtual void urlChanged(const QUrl&) Q_DECL_OVERRIDE;
virtual void iconChanged(const QUrl&) Q_DECL_OVERRIDE;
@@ -143,20 +136,20 @@ public:
virtual void selectionChanged() Q_DECL_OVERRIDE { }
virtual QRectF viewportRect() const Q_DECL_OVERRIDE;
virtual qreal dpiScale() const Q_DECL_OVERRIDE;
- virtual void loadStarted(const QUrl &provisionalUrl) Q_DECL_OVERRIDE;
+ virtual void loadStarted(const QUrl &provisionalUrl, bool isErrorPage = false) Q_DECL_OVERRIDE;
virtual void loadCommitted() Q_DECL_OVERRIDE;
virtual void loadVisuallyCommitted() Q_DECL_OVERRIDE;
- virtual void loadFinished(bool success, const QUrl &url, int errorCode = 0, const QString &errorDescription = QString()) Q_DECL_OVERRIDE;
+ virtual void loadFinished(bool success, const QUrl &url, bool isErrorPage = false, int errorCode = 0, const QString &errorDescription = QString()) Q_DECL_OVERRIDE;
virtual void focusContainer() Q_DECL_OVERRIDE;
virtual void unhandledKeyEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- virtual void adoptNewWindow(WebContentsAdapter *newWebContents, WindowOpenDisposition disposition, bool userGesture, const QRect &) Q_DECL_OVERRIDE;
+ virtual void adoptNewWindow(QtWebEngineCore::WebContentsAdapter *newWebContents, WindowOpenDisposition disposition, bool userGesture, const QRect &) Q_DECL_OVERRIDE;
virtual void close() Q_DECL_OVERRIDE;
virtual void requestFullScreen(bool) Q_DECL_OVERRIDE;
virtual bool isFullScreen() const Q_DECL_OVERRIDE;
- virtual bool contextMenuRequested(const WebEngineContextMenuData &) Q_DECL_OVERRIDE;
+ virtual bool contextMenuRequested(const QtWebEngineCore::WebEngineContextMenuData &) Q_DECL_OVERRIDE;
virtual void navigationRequested(int navigationType, const QUrl &url, int &navigationRequestAction, bool isMainFrame) Q_DECL_OVERRIDE;
- virtual void javascriptDialog(QSharedPointer<JavaScriptDialogController>) Q_DECL_OVERRIDE;
- virtual void runFileChooser(FilePickerController *controller) Q_DECL_OVERRIDE;
+ virtual void javascriptDialog(QSharedPointer<QtWebEngineCore::JavaScriptDialogController>) Q_DECL_OVERRIDE;
+ virtual void runFileChooser(QtWebEngineCore::FilePickerController *controller) Q_DECL_OVERRIDE;
virtual void didRunJavaScript(quint64, const QVariant&) Q_DECL_OVERRIDE;
virtual void didFetchDocumentMarkup(quint64, const QString&) Q_DECL_OVERRIDE { }
virtual void didFetchDocumentInnerText(quint64, const QString&) Q_DECL_OVERRIDE { }
@@ -169,14 +162,14 @@ public:
#ifndef QT_NO_ACCESSIBILITY
virtual QObject *accessibilityParentObject() Q_DECL_OVERRIDE;
#endif // QT_NO_ACCESSIBILITY
- virtual WebEngineSettings *webEngineSettings() const Q_DECL_OVERRIDE;
+ virtual QtWebEngineCore::WebEngineSettings *webEngineSettings() const Q_DECL_OVERRIDE;
virtual void allowCertificateError(const QSharedPointer<CertificateErrorController> &errorController);
virtual void runGeolocationPermissionRequest(QUrl const&) Q_DECL_OVERRIDE;
- virtual BrowserContextAdapter *browserContextAdapter() Q_DECL_OVERRIDE;
+ virtual QtWebEngineCore::BrowserContextAdapter *browserContextAdapter() Q_DECL_OVERRIDE;
void setDevicePixelRatio(qreal);
- void adoptWebContents(WebContentsAdapter *webContents);
+ void adoptWebContents(QtWebEngineCore::WebContentsAdapter *webContents);
void setProfile(QQuickWebEngineProfile *profile);
void ensureContentsAdapter();
@@ -186,12 +179,15 @@ public:
static QQuickWebEngineScript *userScripts_at(QQmlListProperty<QQuickWebEngineScript> *p, int idx);
static void userScripts_clear(QQmlListProperty<QQuickWebEngineScript> *p);
- QExplicitlySharedDataPointer<WebContentsAdapter> adapter;
+ QExplicitlySharedDataPointer<QtWebEngineCore::WebContentsAdapter> adapter;
QScopedPointer<QQuickWebEngineViewExperimental> e;
QScopedPointer<QQuickWebEngineViewport> v;
QScopedPointer<QQuickWebEngineHistory> m_history;
QQuickWebEngineProfile *m_profile;
QScopedPointer<QQuickWebEngineSettings> m_settings;
+#ifdef ENABLE_QML_TESTSUPPORT_API
+ QQuickWebEngineTestSupport *m_testSupport;
+#endif
QQmlComponent *contextMenuExtraItems;
QUrl explicitUrl;
QUrl icon;
@@ -200,10 +196,10 @@ public:
bool isLoading;
qreal devicePixelRatio;
QMap<quint64, QJSValue> m_callbacks;
- QSharedPointer<CertificateErrorController> m_certificateErrorController;
+ QList<QSharedPointer<CertificateErrorController> > m_certificateErrorControllers;
private:
- QScopedPointer<UIDelegatesManager> m_uIDelegatesManager;
+ QScopedPointer<QtWebEngineCore::UIDelegatesManager> m_uIDelegatesManager;
QList<QQuickWebEngineScript *> m_userScripts;
qreal m_dpiScale;
};
diff --git a/src/webengine/doc/src/qquickwebengineview_lgpl.qdoc b/src/webengine/doc/src/qquickwebengineview_lgpl.qdoc
index 893c358ae..73c084dab 100644
--- a/src/webengine/doc/src/qquickwebengineview_lgpl.qdoc
+++ b/src/webengine/doc/src/qquickwebengineview_lgpl.qdoc
@@ -206,6 +206,45 @@
*/
/*!
+ \qmlmethod void WebEngineView::findText(string subString)
+ \since QtWebEngine 1.1
+ Finds the specified string, \a subString, in the page.
+
+ To clear the selection, just pass an empty string.
+*/
+
+/*!
+ \qmlmethod void WebEngineView::findText(string subString, FindFlags options)
+ \since QtWebEngine 1.1
+ Finds the specified string, \a subString, in the page, using the given \a options.
+
+ To clear the selection, just pass an empty string.
+
+ \code
+ findText("Qt", WebEngineView.FindBackward | WebEngineView.FindCaseSensitively);
+ \endcode
+*/
+
+/*!
+ \qmlmethod void WebEngineView::findText(string subString, FindFlags options, variant resultCallback)
+ \since QtWebEngine 1.1
+ Finds the specified string, \a subString, in the page, using the given \a options.
+
+ To clear the selection, just pass an empty string.
+
+ The \a resultCallback must take a boolean parameter. It will be called with
+ a value of true if the \a subString was found; otherwise the callback value
+ will be false.
+
+ \code
+ findText("Qt", WebEngineView.FindCaseSensitively, function(success) {
+ if (success)
+ console.log("Qt was found!");
+ });
+ \endcode
+*/
+
+/*!
\qmlsignal WebEngineView::loadingChanged(loadRequest)
This signal is emitted when a page load begins, ends, or fails.
@@ -245,14 +284,13 @@
*/
/*!
- \qmlsignal WebEngineView::linkHovered(hoveredUrl, hoveredTitle)
+ \qmlsignal WebEngineView::linkHovered(hoveredUrl)
Within a mouse-driven interface, this signal is emitted when a mouse
pointer passes over a link, corresponding to the \c{mouseover} DOM
event. This event may also occur in touch interfaces for \c{mouseover}
events that are not cancelled with \c{preventDefault()}. \a{hoveredUrl}
- provides the link's location, and \a{hoveredTitle} is any available
- link text.
+ provides the link's location.
The corresponding handler is onLinkHovered.
*/
@@ -365,3 +403,16 @@
\sa WebEngineNewViewRequest::destination
*/
+
+/*!
+ \qmlproperty enumeration WebEngineView::FindFlags
+
+ This enum describes the options available to the findText() function. The options
+ can be OR-ed together from the following list:
+
+ \value FindBackward Searches backwards instead of forwards.
+ \value FindCaseSensitively By default findText() works case insensitive. Specifying
+ this option changes the behavior to a case sensitive find operation.
+
+ \sa WebEngineView::findText()
+*/
diff --git a/src/webengine/plugin/plugin.cpp b/src/webengine/plugin/plugin.cpp
index dc10a50a7..c5ef11a5e 100644
--- a/src/webengine/plugin/plugin.cpp
+++ b/src/webengine/plugin/plugin.cpp
@@ -81,6 +81,8 @@ public:
QObject::tr("Cannot create a separate instance of NavigationHistory"));
qmlRegisterUncreatableType<QQuickWebEngineHistoryListModel>(uri, 1, 1, "NavigationHistoryListModel",
QObject::tr("Cannot create a separate instance of NavigationHistory"));
+ qmlRegisterUncreatableType<QQuickWebEngineFullScreenRequest>(uri, 1, 1, "FullScreenRequest",
+ QObject::tr("Cannot create a separate instance of FullScreenRequest"));
}
};
diff --git a/src/webengine/plugin/testsupport/plugin.cpp b/src/webengine/plugin/testsupport/plugin.cpp
new file mode 100644
index 000000000..667ffffd6
--- /dev/null
+++ b/src/webengine/plugin/testsupport/plugin.cpp
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtWebEngine module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtQml>
+
+#include "qquickwebenginetestsupport_p.h"
+
+QT_BEGIN_NAMESPACE
+
+class QtWebEngineTestSupportPlugin : public QQmlExtensionPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0")
+public:
+ virtual void registerTypes(const char *uri)
+ {
+ qWarning("\nWARNING: This project is using the testsupport QML API extensions for QtWebEngine and is therefore tied to a specific QtWebEngine release.\n"
+ "WARNING: The testsupport API will change from version to version, or even be removed. You have been warned!\n");
+
+ Q_ASSERT(QLatin1String(uri) == QLatin1String("QtWebEngine.testsupport"));
+
+ qmlRegisterType<QQuickWebEngineTestSupport>(uri, 1, 0, "WebEngineTestSupport");
+ qmlRegisterUncreatableType<QQuickWebEngineErrorPage>(uri, 1, 0, "WebEngineErrorPage",
+ QObject::tr("Cannot create a separate instance of WebEngineErrorPage"));
+ qmlRegisterUncreatableType<QQuickWebEngineJavaScriptDialog>(uri, 1, 0, "WebEngineJavaScriptDialog",
+ QObject::tr("Cannot create a separate instance of WebEngineJavaScriptDialog"));
+ }
+};
+
+QT_END_NAMESPACE
+
+#include "plugin.moc"
diff --git a/src/webengine/plugin/testsupport/qmldir b/src/webengine/plugin/testsupport/qmldir
new file mode 100644
index 000000000..588c9d2d4
--- /dev/null
+++ b/src/webengine/plugin/testsupport/qmldir
@@ -0,0 +1,3 @@
+module QtWebEngine.testsupport
+plugin qtwebenginetestsupportplugin
+typeinfo plugins.qmltypes
diff --git a/src/webengine/plugin/testsupport/testsupport.pro b/src/webengine/plugin/testsupport/testsupport.pro
new file mode 100644
index 000000000..1a45ad56a
--- /dev/null
+++ b/src/webengine/plugin/testsupport/testsupport.pro
@@ -0,0 +1,13 @@
+CXX_MODULE = qml
+TARGET = qtwebenginetestsupportplugin
+TARGETPATH = QtWebEngine/testsupport
+IMPORT_VERSION = 1.0
+
+QT += webengine qml quick
+QT_PRIVATE += webengine-private
+
+INCLUDEPATH += $$QTWEBENGINE_ROOT/src/core $$QTWEBENGINE_ROOT/src/webengine $$QTWEBENGINE_ROOT/src/webengine/api
+
+SOURCES = plugin.cpp
+
+load(qml_plugin)
diff --git a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp
index bfcda558b..0a534ac2c 100644
--- a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp
+++ b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp
@@ -46,6 +46,8 @@
#include <private/qquickwindow_p.h>
#include <private/qsgcontext_p.h>
+namespace QtWebEngineCore {
+
RenderWidgetHostViewQtDelegateQuick::RenderWidgetHostViewQtDelegateQuick(RenderWidgetHostViewQtDelegateClient *client, bool isPopup)
: m_client(client)
, m_isPopup(isPopup)
@@ -273,3 +275,5 @@ void RenderWidgetHostViewQtDelegateQuick::onWindowPosChanged()
{
m_client->windowBoundsChanged();
}
+
+} // namespace QtWebEngineCore
diff --git a/src/webengine/render_widget_host_view_qt_delegate_quick.h b/src/webengine/render_widget_host_view_qt_delegate_quick.h
index cb1b6a83f..ddd0e4d9e 100644
--- a/src/webengine/render_widget_host_view_qt_delegate_quick.h
+++ b/src/webengine/render_widget_host_view_qt_delegate_quick.h
@@ -41,6 +41,8 @@
#include <QQuickItem>
+namespace QtWebEngineCore {
+
class RenderWidgetHostViewQtDelegateQuick : public QQuickItem, public RenderWidgetHostViewQtDelegate
{
Q_OBJECT
@@ -95,4 +97,7 @@ private:
bool m_isPopup;
bool m_initialized;
};
+
+} // namespace QtWebEngineCore
+
#endif
diff --git a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp
index c395fdd4d..39c48ea5c 100644
--- a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp
+++ b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp
@@ -39,6 +39,7 @@
#include "qquickwebengineview_p_p.h"
#include <QQuickItem>
+namespace QtWebEngineCore {
RenderWidgetHostViewQtDelegateQuickWindow::RenderWidgetHostViewQtDelegateQuickWindow(RenderWidgetHostViewQtDelegate *realDelegate)
: m_realDelegate(realDelegate)
@@ -136,3 +137,5 @@ void RenderWidgetHostViewQtDelegateQuickWindow::setTooltip(const QString &toolti
{
Q_UNUSED(tooltip);
}
+
+} // namespace QtWebEngineCore
diff --git a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h
index 6bd21d15a..cda51a1ab 100644
--- a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h
+++ b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h
@@ -44,6 +44,8 @@
#include <QQuickWindow>
#include <QScopedPointer>
+namespace QtWebEngineCore {
+
class RenderWidgetHostViewQtDelegateQuickWindow : public QQuickWindow , public RenderWidgetHostViewQtDelegate {
public:
@@ -76,4 +78,6 @@ private:
QScopedPointer<RenderWidgetHostViewQtDelegate> m_realDelegate;
};
+} // namespace QtWebEngineCore
+
#endif // RENDER_WIDGET_HOST_VIEW_QT_DELEGATE_QUICKWINDOW_H
diff --git a/src/webengine/ui_delegates_manager.cpp b/src/webengine/ui_delegates_manager.cpp
index ed51bd8f2..44c763f37 100644
--- a/src/webengine/ui_delegates_manager.cpp
+++ b/src/webengine/ui_delegates_manager.cpp
@@ -52,6 +52,8 @@
// Uncomment for QML debugging
//#define UI_DELEGATES_DEBUG
+namespace QtWebEngineCore {
+
#define NO_SEPARATOR
#if defined(Q_OS_WIN)
#define FILE_NAME_CASE_STATEMENT(TYPE, COMPONENT) \
@@ -387,3 +389,5 @@ void UIDelegatesManager::showFilePicker(FilePickerController *controller)
QMetaObject::invokeMethod(filePicker, "open");
}
+
+} // namespace QtWebEngineCore
diff --git a/src/webengine/ui_delegates_manager.h b/src/webengine/ui_delegates_manager.h
index 797aaec74..9367bff30 100644
--- a/src/webengine/ui_delegates_manager.h
+++ b/src/webengine/ui_delegates_manager.h
@@ -63,14 +63,16 @@
#define MEMBER_DECLARATION(TYPE, COMPONENT) \
QQmlComponent *COMPONENT##Component
-class JavaScriptDialogController;
-class FilePickerController;
QT_BEGIN_NAMESPACE
class QObject;
class QQmlContext;
class QQuickWebEngineView;
QT_END_NAMESPACE
+namespace QtWebEngineCore {
+class JavaScriptDialogController;
+class FilePickerController;
+
const char *defaultPropertyName(QObject *obj);
class MenuItemHandler : public QObject {
@@ -130,8 +132,10 @@ private:
FOR_EACH_COMPONENT_TYPE(MEMBER_DECLARATION, SEMICOLON_SEPARATOR)
- Q_DISABLE_COPY(UIDelegatesManager);
+ Q_DISABLE_COPY(UIDelegatesManager)
};
+} // namespace QtWebEngineCore
+
#endif // UI_DELEGATES_MANAGER_H
diff --git a/src/webengine/webengine.pro b/src/webengine/webengine.pro
index 154286e9e..6cba9c5d9 100644
--- a/src/webengine/webengine.pro
+++ b/src/webengine/webengine.pro
@@ -48,4 +48,11 @@ HEADERS = \
render_widget_host_view_qt_delegate_quickwindow.h \
ui_delegates_manager.h
+isQMLTestSupportApiEnabled() {
+ SOURCES += api/qquickwebenginetestsupport.cpp
+ HEADERS += api/qquickwebenginetestsupport_p.h
+
+ DEFINES += ENABLE_QML_TESTSUPPORT_API
+}
+
load(qt_module)