summaryrefslogtreecommitdiffstats
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
parentdd78b4c3d9673b12eb3006140b80056273d4a815 (diff)
parent5da2b1ae6284c7da608eda15a00f43d42928ecbb (diff)
Merge remote-tracking branch 'origin/5.5.0' into 5.5
-rw-r--r--LICENSE.GPLv2292
-rw-r--r--dist/changes-5.5.084
-rw-r--r--examples/webenginewidgets/browser/browserapplication.cpp6
-rw-r--r--src/core/config/embedded_linux.pri1
-rw-r--r--src/webengine/api/qquickwebengineview.cpp9
-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
15 files changed, 595 insertions, 38 deletions
diff --git a/LICENSE.GPLv2 b/LICENSE.GPLv2
new file mode 100644
index 000000000..6dbb032fd
--- /dev/null
+++ b/LICENSE.GPLv2
@@ -0,0 +1,292 @@
+ GNU GENERAL PUBLIC LICENSE
+
+ The Qt Toolkit is Copyright (C) 2015 The Qt Company Ltd.
+ Contact: http://www.qt.io/licensing/
+
+ You may use, distribute and copy the Qt GUI Toolkit under the terms of
+ GNU General Public License version 2, which is displayed below.
+
+-------------------------------------------------------------------------
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+Preamble
+
+ The licenses for most software are designed to take away your freedom
+to share and change it. By contrast, the GNU General Public License is
+intended to guarantee your freedom to share and change free software
+--to make sure the software is free for all its users. This General
+Public License applies to most of the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+(Some other Free Software Foundation software is covered by the GNU
+Lesser General Public License instead.) You can apply it to your
+programs, too.
+
+When we speak of free software, we are referring to freedom, not price.
+Our General Public Licenses are designed to make sure that you have the
+freedom to distribute copies of free software (and charge for this
+service if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone
+to deny you these rights or to ask you to surrender the rights. These
+restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis
+ or for a fee, you must give the recipients all the rights that you
+have. You must make sure that they, too, receive or can get the source
+code. And you must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+Finally, any free program is threatened constantly by software patents.
+We wish to avoid the danger that redistributors of a free program will
+individually obtain patent licenses, in effect making the program
+proprietary. To prevent this, we have made it clear that any patent
+must be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and
+modification follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a
+notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of running
+the Program is not restricted, and the output from the Program is
+covered only if its contents constitute a work based on the Program
+(independent of having been made by running the Program). Whether that
+is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously
+and appropriately publish on each copy an appropriate copyright notice
+and disclaimer of warranty; keep intact all the notices that refer to
+this License and to the absence of any warranty; and give any other
+recipients of the Program a copy of this License along with the
+Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of
+it, thus forming a work based on the Program, and copy and distribute
+such modifications or work under the terms of Section 1 above, provided
+that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but does
+ not normally print such an announcement, your work based on the
+ Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of a
+storage or distribution medium does not bring the other work under the
+scope of this License.
+
+3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software
+ interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your cost
+ of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to control
+compilation and installation of the executable. However, as a special
+exception, the source code distributed need not include anything that
+is normally distributed (in either source or binary form) with the
+major components (compiler, kernel, and so on) of the operating system
+on which the executable runs, unless that component itself accompanies
+the executable.
+
+If distribution of executable or object code is made by offering access
+to copy from a designated place, then offering equivalent access to
+copy the source code from the same place counts as distribution of the
+source code, even though third parties are not compelled to copy the
+source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt otherwise
+to copy, modify, sublicense or distribute the Program is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this License
+will not have their licenses terminated so long as such parties remain
+in full compliance.
+
+5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further restrictions
+on the recipients' exercise of the rights granted herein. You are not
+responsible for enforcing compliance by third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent license
+would not permit royalty-free redistribution of the Program by all
+those who receive copies directly or indirectly through you, then the
+only way you could satisfy both it and this License would be to refrain
+entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License may
+add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among countries
+not thus excluded. In such case, this License incorporates the limitation
+as if written in the body of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail
+to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Program does not specify a version
+number of this License, you may choose any version ever published by
+the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the
+author to ask for permission. For software which is copyrighted by
+the Free Software Foundation, write to the Free Software Foundation;
+we sometimes make exceptions for this. Our decision will be guided by
+the two goals of preserving the free status of all derivatives of our
+free software and of promoting the sharing and reuse of software
+generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND,
+EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
+ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
+YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
+MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE
+TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+END OF TERMS AND CONDITIONS
diff --git a/dist/changes-5.5.0 b/dist/changes-5.5.0
new file mode 100644
index 000000000..3b5c9f6ed
--- /dev/null
+++ b/dist/changes-5.5.0
@@ -0,0 +1,84 @@
+Qt 5.5 introduces many new features and improvements as well as bugfixes
+over the 5.4.x series. For more details, refer to the online documentation
+included in this distribution. The documentation is also available online:
+
+ http://doc.qt.io/qt-5/index.html
+
+The Qt version 5.5 series is binary compatible with the 5.4.x series.
+Applications compiled for 5.4 will continue to run with 5.5.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+ https://bugreports.qt.io/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+* General *
+****************************************************************************
+
+ - Chromium Snapshot:
+ * The Chromium version has been updated to 40.0.2214.115.
+ * The ninja version has been updated to 1.5.3.
+
+ - Platform Support:
+ * Support for embedded Android has been removed from Qt WebEngine.
+ * [QTBUG-45796] Fix prefix build.
+ * Localization fixes and support for --lang command line switch
+
+ - Web Features:
+ * Windows: WebGL and accelerated 2D Canvas are enabled,
+ when using an ANGLE-based Qt-build.
+
+****************************************************************************
+* QtWebEngineQML *
+****************************************************************************
+
+ - QQuickWebEngineDownloadItem:
+ * A new API for handling downloads in QtQuick had been added.
+
+ - QQuickWebEngineCertificateError:
+ * A new API for handling certificate errors has been added.
+
+ - QQuickWebEngineProfile:
+ * Add a new API for profiles applying to groups of QQuickWebEnginePages.
+
+ - QQuickWebEngineViewExperimental:
+ * The inspectable property has been replaced by an environment variable
+ QTWEBENGINE_REMOTE_DEBUGGING
+
+ - QQuickWebEngineView:
+ * New API has been added to allow installing of user scripts.
+ * The findText function was moved to public API.
+ * Public API was added to react to javascript requestFullScreen.
+ * Support for HTML5 form validation has been added.
+ * The featurePermissionRequested API was made public.
+ * An integration for using QtWebChannel over chromium IPC has been added.
+
+****************************************************************************
+* QtWebEngineWidgets *
+****************************************************************************
+
+ - QWebEngineDownloadItem:
+ * An API for handling downloads in Widgets has been added.
+
+ - QWebEngineProfile:
+ * Add a new API for profiles applying to groups of QWebEnginePages.
+ * New API has been added to allow installing of user scripts.
+
+ - QWebEnginePage:
+ * New API has been added to deal with certificate errors.
+
+ - QWebEngineView:
+ * Support for HTML5 form validation was added.
+
+****************************************************************************
+* Examples *
+****************************************************************************
+
+ - WebEngineWidgets Example Browser:
+ * [QTBUG-44633] Fix example on retina display.
+ * Re-add user stylesheets example.
+ * Private browsing mode has been re-introduced.
diff --git a/examples/webenginewidgets/browser/browserapplication.cpp b/examples/webenginewidgets/browser/browserapplication.cpp
index 8961bf7fb..ca28b2d0b 100644
--- a/examples/webenginewidgets/browser/browserapplication.cpp
+++ b/examples/webenginewidgets/browser/browserapplication.cpp
@@ -83,11 +83,11 @@ static void setUserStyleSheet(QWebEngineProfile *profile, const QString &styleSh
Q_ASSERT(profile);
QString scriptName(QStringLiteral("userStyleSheet"));
QWebEngineScript script;
- QList<QWebEngineScript> styleSheets = profile->scripts().findScripts(scriptName);
+ QList<QWebEngineScript> styleSheets = profile->scripts()->findScripts(scriptName);
if (!styleSheets.isEmpty())
script = styleSheets.first();
Q_FOREACH (const QWebEngineScript &s, styleSheets)
- profile->scripts().remove(s);
+ profile->scripts()->remove(s);
if (script.isNull()) {
script.setName(scriptName);
@@ -106,7 +106,7 @@ static void setUserStyleSheet(QWebEngineProfile *profile, const QString &styleSh
"css.innerText = \"%1\";"\
"})()").arg(styleSheet);
script.setSourceCode(source);
- profile->scripts().insert(script);
+ profile->scripts()->insert(script);
// run the script on the already loaded views
// this has to be deferred as it could mess with the storage initialization on startup
if (mainWindow)
diff --git a/src/core/config/embedded_linux.pri b/src/core/config/embedded_linux.pri
index 91b14003c..cc8c40f8e 100644
--- a/src/core/config/embedded_linux.pri
+++ b/src/core/config/embedded_linux.pri
@@ -43,6 +43,7 @@ GYP_CONFIG += \
use_openssl=1 \
use_ozone=1 \
use_pango=0 \
+ use_system_fontconfig=1 \
use_system_icu=1 \
icu_use_data_file_flag=0 \
use_x11=0 \
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index 8b2adab58..7405cae44 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -705,6 +705,15 @@ void QQuickWebEngineView::setProfile(QQuickWebEngineProfile *profile)
Q_D(QQuickWebEngineView);
d->setProfile(profile);
}
+/*!
+ * \qmlproperty WebEngineSettings QQuickWebEngineView::settings
+ * \readonly settings
+ * \since QtWebEngine 1.1
+ *
+ * The \a settings property holds the settings used by this view.
+ *
+ * \sa WebEngineSettings
+ */
QQuickWebEngineSettings *QQuickWebEngineView::settings() const
{
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