summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-06-26 14:05:08 +0200
committerLiang Qi <liang.qi@theqtcompany.com>2015-06-26 14:05:09 +0200
commit6bef847c1e03acdf4aa2ffb81153eee65b70d0df (patch)
treeba5618cce726218588095f07ad523fa9c32f0922 /src/webenginewidgets
parentdd78b4c3d9673b12eb3006140b80056273d4a815 (diff)
parent5da2b1ae6284c7da608eda15a00f43d42928ecbb (diff)
Merge remote-tracking branch 'origin/5.5.0' into 5.5
Diffstat (limited to 'src/webenginewidgets')
-rw-r--r--src/webenginewidgets/api/qwebenginedownloaditem.cpp28
-rw-r--r--src/webenginewidgets/api/qwebenginedownloaditem.h14
-rw-r--r--src/webenginewidgets/api/qwebengineprofile.cpp10
-rw-r--r--src/webenginewidgets/api/qwebengineprofile.h2
-rw-r--r--src/webenginewidgets/api/qwebengineprofile_p.h3
-rw-r--r--src/webenginewidgets/api/qwebenginescript.cpp113
-rw-r--r--src/webenginewidgets/api/qwebenginescriptcollection.cpp62
-rw-r--r--src/webenginewidgets/api/qwebenginescriptcollection.h5
-rw-r--r--src/webenginewidgets/api/qwebenginescriptcollection_p.h2
-rw-r--r--src/webenginewidgets/doc/src/qtwebenginewidgets.qdoc2
10 files changed, 206 insertions, 35 deletions
diff --git a/src/webenginewidgets/api/qwebenginedownloaditem.cpp b/src/webenginewidgets/api/qwebenginedownloaditem.cpp
index 703570587..7df044e66 100644
--- a/src/webenginewidgets/api/qwebenginedownloaditem.cpp
+++ b/src/webenginewidgets/api/qwebenginedownloaditem.cpp
@@ -156,9 +156,9 @@ void QWebEngineDownloadItem::cancel()
Returns the download item's id.
*/
-quint32 QWebEngineDownloadItem::id()
+quint32 QWebEngineDownloadItem::id() const
{
- Q_D(QWebEngineDownloadItem);
+ Q_D(const QWebEngineDownloadItem);
return d->downloadId;
}
@@ -205,9 +205,9 @@ quint32 QWebEngineDownloadItem::id()
\sa QWebEngineDownloadItem::DownloadState
*/
-QWebEngineDownloadItem::DownloadState QWebEngineDownloadItem::state()
+QWebEngineDownloadItem::DownloadState QWebEngineDownloadItem::state() const
{
- Q_D(QWebEngineDownloadItem);
+ Q_D(const QWebEngineDownloadItem);
return d->downloadState;
}
@@ -217,9 +217,9 @@ QWebEngineDownloadItem::DownloadState QWebEngineDownloadItem::state()
-1 means the size is unknown.
*/
-qint64 QWebEngineDownloadItem::totalBytes()
+qint64 QWebEngineDownloadItem::totalBytes() const
{
- Q_D(QWebEngineDownloadItem);
+ Q_D(const QWebEngineDownloadItem);
return d->totalBytes;
}
@@ -229,9 +229,9 @@ qint64 QWebEngineDownloadItem::totalBytes()
-1 means the size is unknown.
*/
-qint64 QWebEngineDownloadItem::receivedBytes()
+qint64 QWebEngineDownloadItem::receivedBytes() const
{
- Q_D(QWebEngineDownloadItem);
+ Q_D(const QWebEngineDownloadItem);
return d->receivedBytes;
}
@@ -239,9 +239,9 @@ qint64 QWebEngineDownloadItem::receivedBytes()
Returns the download's origin url.
*/
-QUrl QWebEngineDownloadItem::url()
+QUrl QWebEngineDownloadItem::url() const
{
- Q_D(QWebEngineDownloadItem);
+ Q_D(const QWebEngineDownloadItem);
return d->downloadUrl;
}
@@ -252,9 +252,9 @@ QUrl QWebEngineDownloadItem::url()
and file name is deduced not to overwrite already existing files.
*/
-QString QWebEngineDownloadItem::path()
+QString QWebEngineDownloadItem::path() const
{
- Q_D(QWebEngineDownloadItem);
+ Q_D(const QWebEngineDownloadItem);
return d->downloadPath;
}
@@ -282,9 +282,9 @@ void QWebEngineDownloadItem::setPath(QString path)
\sa finished(), state(),
*/
-bool QWebEngineDownloadItem::isFinished()
+bool QWebEngineDownloadItem::isFinished() const
{
- Q_D(QWebEngineDownloadItem);
+ Q_D(const QWebEngineDownloadItem);
return d->downloadFinished;
}
diff --git a/src/webenginewidgets/api/qwebenginedownloaditem.h b/src/webenginewidgets/api/qwebenginedownloaditem.h
index ee3ab221d..d362131f2 100644
--- a/src/webenginewidgets/api/qwebenginedownloaditem.h
+++ b/src/webenginewidgets/api/qwebenginedownloaditem.h
@@ -61,14 +61,14 @@ public:
};
Q_ENUMS(DownloadState)
- quint32 id();
- DownloadState state();
- qint64 totalBytes();
- qint64 receivedBytes();
- QUrl url();
- QString path();
+ quint32 id() const;
+ DownloadState state() const;
+ qint64 totalBytes() const;
+ qint64 receivedBytes() const;
+ QUrl url() const;
+ QString path() const;
void setPath(QString path);
- bool isFinished();
+ bool isFinished() const;
public Q_SLOTS:
void accept();
diff --git a/src/webenginewidgets/api/qwebengineprofile.cpp b/src/webenginewidgets/api/qwebengineprofile.cpp
index adccfca2a..2e5f685fd 100644
--- a/src/webenginewidgets/api/qwebengineprofile.cpp
+++ b/src/webenginewidgets/api/qwebengineprofile.cpp
@@ -103,8 +103,8 @@ using QtWebEngineCore::BrowserContextAdapter;
*/
QWebEngineProfilePrivate::QWebEngineProfilePrivate(BrowserContextAdapter* browserContext)
- : scriptCollection(new QWebEngineScriptCollectionPrivate(browserContext->userScriptController()))
- , m_settings(new QWebEngineSettings())
+ : m_settings(new QWebEngineSettings())
+ , m_scriptCollection(new QWebEngineScriptCollection(new QWebEngineScriptCollectionPrivate(browserContext->userScriptController())))
, m_browserContextRef(browserContext)
{
m_browserContextRef->addClient(this);
@@ -438,10 +438,10 @@ bool QWebEngineProfile::visitedLinksContainsUrl(const QUrl &url) const
Returns the script collection used by this profile.
\sa QWebEngineScriptCollection
*/
-QWebEngineScriptCollection &QWebEngineProfile::scripts()
+QWebEngineScriptCollection *QWebEngineProfile::scripts() const
{
- Q_D(QWebEngineProfile);
- return d->scriptCollection;
+ Q_D(const QWebEngineProfile);
+ return d->m_scriptCollection.data();
}
/*!
diff --git a/src/webenginewidgets/api/qwebengineprofile.h b/src/webenginewidgets/api/qwebengineprofile.h
index d65db24ab..4308fe75d 100644
--- a/src/webenginewidgets/api/qwebengineprofile.h
+++ b/src/webenginewidgets/api/qwebengineprofile.h
@@ -98,7 +98,7 @@ public:
bool visitedLinksContainsUrl(const QUrl &url) const;
QWebEngineSettings *settings() const;
- QWebEngineScriptCollection &scripts();
+ QWebEngineScriptCollection *scripts() const;
static QWebEngineProfile *defaultProfile();
diff --git a/src/webenginewidgets/api/qwebengineprofile_p.h b/src/webenginewidgets/api/qwebengineprofile_p.h
index b0bfc88b9..55941580d 100644
--- a/src/webenginewidgets/api/qwebengineprofile_p.h
+++ b/src/webenginewidgets/api/qwebengineprofile_p.h
@@ -43,6 +43,7 @@
#include "qwebenginescriptcollection.h"
#include <QMap>
#include <QPointer>
+#include <QScopedPointer>
namespace QtWebEngineCore {
class BrowserContextAdapter;
@@ -72,10 +73,10 @@ public:
void removeUrlSchemeHandler(QWebEngineUrlSchemeHandler *);
void clearUrlSchemeHandlers();
- QWebEngineScriptCollection scriptCollection;
private:
QWebEngineProfile *q_ptr;
QWebEngineSettings *m_settings;
+ QScopedPointer<QWebEngineScriptCollection> m_scriptCollection;
QExplicitlySharedDataPointer<QtWebEngineCore::BrowserContextAdapter> m_browserContextRef;
QMap<quint32, QPointer<QWebEngineDownloadItem> > m_ongoingDownloads;
QMap<QByteArray, QPointer<QWebEngineUrlSchemeHandler> > m_urlSchemeHandlers;
diff --git a/src/webenginewidgets/api/qwebenginescript.cpp b/src/webenginewidgets/api/qwebenginescript.cpp
index e2f267330..e834c5067 100644
--- a/src/webenginewidgets/api/qwebenginescript.cpp
+++ b/src/webenginewidgets/api/qwebenginescript.cpp
@@ -41,10 +41,63 @@
using QtWebEngineCore::UserScript;
+/*!
+ \class QWebEngineScript
+ \inmodule QtWebEngineWidgets
+ \since 5.5
+ \brief The QWebEngineScript class encapsulates a JavaScript program.
+ \preliminary
+
+ QWebEngineScript allows the programatic injection of so called "user scripts" in the
+ javascript engine at different points, determined by injectionPoint(), during the loading of web contents.
+
+ Scripts can be executed either in the main javascript world, along with the rest of the JavaScript coming
+ from the web contents, or in their own isolated world. While the DOM of the page can be accessed from any world,
+ JavaScript variables a function defined in one world are not accessible from a different one.
+ ScriptWorldId provides some predefined ids for this purpose.
+
+*/
+/*!
+ \enum QWebEngineScript::InjectionPoint
+
+ This enum describes the timing for when the script injection should happen.
+
+ \value DocumentCreation The script will be executed as soon as the document is created. This is not suitable for
+ any DOM operation.
+ \value DocumentReady The script will run as soon as the DOM is ready. This is equivalent to the DOMContentLoaded
+ event firing in JavaScript.
+ \value Deferred The script will run when the page load finishes, or 500ms after the document is ready, whichever
+ comes first.
+
+*/
+/*!
+ \enum QWebEngineScript::ScriptWorldId
+
+ This enum provides pre defined world ids for isolating user scripts into different worlds.
+
+ \value MainWorld The world used by the page's web contents. It can be useful in order to expose custom functionality
+ to web contents in certain scenarios.
+ \value ApplicationWorld The default isolated world used for application level functionality implemented in JavaScript.
+ \value UserWorld The first isolated world to be used by scripts set by users if the application is not making use
+ of more worlds. As a rule of thumbs, if that functionality is exposed to the application users, each individual script
+ should probably get its own isolated world.
+
+*/
+
+/*!
+ * \brief QWebEngineScript::QWebEngineScript
+ *
+ * Constructs a null script.
+ */
+
QWebEngineScript::QWebEngineScript()
: d(new UserScript)
{
}
+/*!
+ * \brief QWebEngineScript::isNull
+ * \return \c true is the script is null, \c false otherwise.
+ */
QWebEngineScript::QWebEngineScript(const QWebEngineScript &other)
: d(other.d)
@@ -66,11 +119,24 @@ bool QWebEngineScript::isNull() const
return d->isNull();
}
+/*!
+ * \brief QWebEngineScript::name
+ * \return The name of the script. Can be useful to retrieve a given script from a QWebEngineScriptCollection.
+ *
+ * \sa QWebEngineScriptCollection::findScript(), QWebEngineScriptCollection::findScripts()
+ */
+
QString QWebEngineScript::name() const
{
return d->name();
}
+/*!
+ * \brief QWebEngineScript::setName
+ * \param scriptName
+ *
+ * Sets the script name to \a scriptName.
+ */
void QWebEngineScript::setName(const QString &scriptName)
{
if (scriptName == name())
@@ -78,11 +144,20 @@ void QWebEngineScript::setName(const QString &scriptName)
d->setName(scriptName);
}
+/*!
+ * \brief QWebEngineScript::sourceCode
+ * \return the source of the script.
+ */
QString QWebEngineScript::sourceCode() const
{
return d->sourceCode();
}
+/*!
+ * \brief QWebEngineScript::setSourceCode
+ * \param scriptSource
+ * Sets the script source to \a scriptSource.
+ */
void QWebEngineScript::setSourceCode(const QString &scriptSource)
{
if (scriptSource == sourceCode())
@@ -94,11 +169,24 @@ ASSERT_ENUMS_MATCH(QWebEngineScript::Deferred, UserScript::AfterLoad)
ASSERT_ENUMS_MATCH(QWebEngineScript::DocumentReady, UserScript::DocumentLoadFinished)
ASSERT_ENUMS_MATCH(QWebEngineScript::DocumentCreation, UserScript::DocumentElementCreation)
+/*!
+ * \brief QWebEngineScript::injectionPoint
+ * \return the point in the loading process at which the script will be executed.
+ * The default value is QWebEngineScript::Deferred.
+ *
+ * \sa setInjectionPoint
+ */
QWebEngineScript::InjectionPoint QWebEngineScript::injectionPoint() const
{
return static_cast<QWebEngineScript::InjectionPoint>(d->injectionPoint());
}
-
+/*!
+ * \brief QWebEngineScript::setInjectionPoint
+ * \param p
+ * Sets the point at which to execute the script to be \p.
+ *
+ * \sa QWebEngineScript::InjectionPoint
+ */
void QWebEngineScript::setInjectionPoint(QWebEngineScript::InjectionPoint p)
{
if (p == injectionPoint())
@@ -106,11 +194,20 @@ void QWebEngineScript::setInjectionPoint(QWebEngineScript::InjectionPoint p)
d->setInjectionPoint(static_cast<UserScript::InjectionPoint>(p));
}
+/*!
+ * \brief QWebEngineScript::worldId
+ * \return the world id defining which world the script is executed in.
+ */
quint32 QWebEngineScript::worldId() const
{
return d->worldId();
}
+/*!
+ * \brief QWebEngineScript::setWorldId
+ * \param id
+ * Sets the world id of the isolated world to use when running this script.
+ */
void QWebEngineScript::setWorldId(quint32 id)
{
if (id == d->worldId())
@@ -118,11 +215,20 @@ void QWebEngineScript::setWorldId(quint32 id)
d->setWorldId(id);
}
+/*!
+ * \brief QWebEngineScript::runsOnSubFrames
+ * \return \c true if the script is executed on every frame in the page, \c false if it is only ran for the main frame.
+ */
bool QWebEngineScript::runsOnSubFrames() const
{
return d->runsOnSubFrames();
}
+/*!
+ * \brief QWebEngineScript::setRunsOnSubFrames
+ * \param on
+ * Sets whether or not the script is executed on sub frames in addition to the main frame.
+ */
void QWebEngineScript::setRunsOnSubFrames(bool on)
{
if (runsOnSubFrames() == on)
@@ -130,6 +236,11 @@ void QWebEngineScript::setRunsOnSubFrames(bool on)
d->setRunsOnSubFrames(on);
}
+/*!
+ * \brief QWebEngineScript::operator ==
+ * \param other
+ * \return \c true if this QWebEngineScript is equal to \a other, otherwise returns \c false.
+ */
bool QWebEngineScript::operator==(const QWebEngineScript &other) const
{
return d == other.d || *d == *(other.d);
diff --git a/src/webenginewidgets/api/qwebenginescriptcollection.cpp b/src/webenginewidgets/api/qwebenginescriptcollection.cpp
index 2f1f31b0e..21cb0d05e 100644
--- a/src/webenginewidgets/api/qwebenginescriptcollection.cpp
+++ b/src/webenginewidgets/api/qwebenginescriptcollection.cpp
@@ -41,6 +41,14 @@
using QtWebEngineCore::UserScript;
+/*!
+ \class QWebEngineScriptCollection
+ \inmodule QtWebEngineWidgets
+ \since 5.5
+ \brief The QWebEngineScriptCollection class represents a collection of user scripts.
+
+*/
+
QWebEngineScriptCollection::QWebEngineScriptCollection(QWebEngineScriptCollectionPrivate *collectionPrivate)
:d(collectionPrivate)
{
@@ -50,31 +58,67 @@ QWebEngineScriptCollection::~QWebEngineScriptCollection()
{
}
+/*!
+ * \brief QWebEngineScriptCollection::count
+ * \return the number of elements in the collection.
+ */
+
int QWebEngineScriptCollection::count() const
{
return d->count();
}
+/*!
+ * \brief QWebEngineScriptCollection::contains
+ * \param value
+ * \return \c true if the collection contains an occurrence of \a value; otherwise returns false.
+ */
+
bool QWebEngineScriptCollection::contains(const QWebEngineScript &value) const
{
return d->contains(value);
}
+/*!
+ * \brief QWebEngineScriptCollection::findScript
+ * \param name
+ * \return the first script found in collection the name property of which is \a name, or a null QWebEngineScript if none was found.
+ * \note the order in which the script collection is traversed is undefined, which means this should be used when the unicity is
+ * guaranteed at the application level.
+ * \sa findScripts()
+ */
+
QWebEngineScript QWebEngineScriptCollection::findScript(const QString &name) const
{
return d->find(name);
}
+/*!
+ * \brief QWebEngineScriptCollection::findScripts
+ * \param name
+ * \return the list of scripts in the collection the name property of which is \a name, or an empty list if none was found.
+ */
+
QList<QWebEngineScript> QWebEngineScriptCollection::findScripts(const QString &name) const
{
return d->toList(name);
}
-
+/*!
+ * \brief QWebEngineScriptCollection::insert
+ * \param s
+ *
+ * Inserts script \c s into the collection.
+ */
void QWebEngineScriptCollection::insert(const QWebEngineScript &s)
{
d->insert(s);
}
-
+/*!
+ * \brief QWebEngineScriptCollection::insert
+ * \param list
+ *
+ * Inserts scripts \c list into the collection.
+ */
void QWebEngineScriptCollection::insert(const QList<QWebEngineScript> &list)
{
d->reserve(list.size());
@@ -82,16 +126,30 @@ void QWebEngineScriptCollection::insert(const QList<QWebEngineScript> &list)
d->insert(s);
}
+/*!
+ * \brief QWebEngineScriptCollection::remove
+ * \param script
+ * Removes \a script from the collection, if it is present.
+ * \return \c true if the script was found and successfully removed from the collection, \c false otherwise.
+ */
bool QWebEngineScriptCollection::remove(const QWebEngineScript &script)
{
return d->remove(script);
}
+/*!
+ * \brief QWebEngineScriptCollection::clear
+ * Removes all scripts from this collection.
+ */
void QWebEngineScriptCollection::clear()
{
d->clear();
}
+/*!
+ * \brief QWebEngineScriptCollection::toList
+ * \return a QList with the values of the scripts used in this collection.
+ */
QList<QWebEngineScript> QWebEngineScriptCollection::toList() const
{
return d->toList();
diff --git a/src/webenginewidgets/api/qwebenginescriptcollection.h b/src/webenginewidgets/api/qwebenginescriptcollection.h
index c8e40c5da..fe3ce2861 100644
--- a/src/webenginewidgets/api/qwebenginescriptcollection.h
+++ b/src/webenginewidgets/api/qwebenginescriptcollection.h
@@ -37,7 +37,7 @@
#ifndef QWEBENGINESCRIPTCOLLECTION_H
#define QWEBENGINESCRIPTCOLLECTION_H
-#include "qtwebengineglobal.h"
+#include "qtwebenginewidgetsglobal.h"
#include "qwebenginescript.h"
#include <QtCore/QScopedPointer>
@@ -47,7 +47,7 @@
QT_BEGIN_NAMESPACE
class QWebEngineScriptCollectionPrivate;
-class Q_WEBENGINE_EXPORT QWebEngineScriptCollection {
+class QWEBENGINEWIDGETS_EXPORT QWebEngineScriptCollection {
public:
~QWebEngineScriptCollection();
bool isEmpty() const { return !count(); }
@@ -67,6 +67,7 @@ public:
QList<QWebEngineScript> toList() const;
private:
+ Q_DISABLE_COPY(QWebEngineScriptCollection)
friend class QWebEnginePagePrivate;
friend class QWebEngineProfilePrivate;
QWebEngineScriptCollection(QWebEngineScriptCollectionPrivate *);
diff --git a/src/webenginewidgets/api/qwebenginescriptcollection_p.h b/src/webenginewidgets/api/qwebenginescriptcollection_p.h
index 9a3a425ba..76267c70c 100644
--- a/src/webenginewidgets/api/qwebenginescriptcollection_p.h
+++ b/src/webenginewidgets/api/qwebenginescriptcollection_p.h
@@ -37,7 +37,7 @@
#ifndef QWEBENGINESCRIPTCOLLECTION_P_H
#define QWEBENGINESCRIPTCOLLECTION_P_H
-#include "qtwebengineglobal.h"
+#include "qtwebenginewidgetsglobal.h"
#include "qwebenginescript.h"
diff --git a/src/webenginewidgets/doc/src/qtwebenginewidgets.qdoc b/src/webenginewidgets/doc/src/qtwebenginewidgets.qdoc
index 9b7de27e2..702019f8e 100644
--- a/src/webenginewidgets/doc/src/qtwebenginewidgets.qdoc
+++ b/src/webenginewidgets/doc/src/qtwebenginewidgets.qdoc
@@ -131,7 +131,7 @@
GNU Library General Public License (LGPLv2).
Developers using the Open Source Edition can choose to redistribute
- the module under the GNU LGPLv3.
+ the module under the GNU LGPLv3 or GPLv2 and up.
\legalese