summaryrefslogtreecommitdiffstats
path: root/src/webengine
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-08-04 07:29:26 +0200
committerLiang Qi <liang.qi@qt.io>2016-08-05 11:35:18 +0200
commit179463fd2b17343dae291ab6f7617311bcfbdb75 (patch)
treee32e298ca5d6e2b6e206dab7d42538a6ce68eba1 /src/webengine
parentc8851dd1a77e730bc6a3c17b7c75b1a4c6b41f53 (diff)
parent336e706cbc839dd7b7c1d461b6b015600b5f009e (diff)
Merge remote-tracking branch 'origin/5.7' into dev
Also blacklist tst_QWebEnginePage::comboBoxPopupPositionAfterChildMove() and comboBoxPopupPositionAfterMove(). Conflicts: .qmake.conf src/3rdparty src/core/render_widget_host_view_qt.cpp src/core/resources/resources.gyp src/webengine/doc/src/qtwebengine-platform-notes.qdoc src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h tests/auto/widgets/qwebenginepage/BLACKLIST tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp tools/qmake/mkspecs/features/functions.prf Task-number: QTBUG-55158 Change-Id: I1d73ac9b3ca5293ad3c7e3a56f4c395da930e6f4
Diffstat (limited to 'src/webengine')
-rw-r--r--src/webengine/api/qquickwebenginecontextmenudata.cpp16
-rw-r--r--src/webengine/api/qquickwebenginenewviewrequest_p.h2
-rw-r--r--src/webengine/api/qquickwebengineview.cpp48
-rw-r--r--src/webengine/api/qquickwebengineview_p_p.h6
-rw-r--r--src/webengine/doc/images/qtwebengine-architecture.pngbin8098 -> 9890 bytes
-rw-r--r--src/webengine/doc/images/qtwebengine-model.qmodel626
-rw-r--r--src/webengine/doc/images/qtwebengine-modules-model.qmodel500
-rw-r--r--src/webengine/doc/images/qtwebenginewidgets-model.qmodel789
-rw-r--r--src/webengine/doc/src/qtwebengine-deploying.qdoc44
-rw-r--r--src/webengine/doc/src/qtwebengine-index.qdoc5
-rw-r--r--src/webengine/doc/src/qtwebengine-overview.qdoc105
-rw-r--r--src/webengine/doc/src/qtwebengine-platform-notes.qdoc8
-rw-r--r--src/webengine/doc/src/qtwebengine-qmlmodule.qdoc2
-rw-r--r--src/webengine/doc/src/webengineview.qdoc37
-rw-r--r--src/webengine/render_widget_host_view_qt_delegate_quick.cpp12
-rw-r--r--src/webengine/render_widget_host_view_qt_delegate_quick.h1
16 files changed, 2096 insertions, 105 deletions
diff --git a/src/webengine/api/qquickwebenginecontextmenudata.cpp b/src/webengine/api/qquickwebenginecontextmenudata.cpp
index 16cb4ff69..269d655a2 100644
--- a/src/webengine/api/qquickwebenginecontextmenudata.cpp
+++ b/src/webengine/api/qquickwebenginecontextmenudata.cpp
@@ -74,7 +74,7 @@ QQuickWebEngineContextMenuData::~QQuickWebEngineContextMenuData()
}
/*!
- \qmlproperty bool WebEngineDownloadItem::isValid
+ \qmlproperty bool WebEngineContextMenuData::isValid
Is \c true if the context data is valid; otherwise \c false.
*/
@@ -84,7 +84,7 @@ bool QQuickWebEngineContextMenuData::isValid() const
}
/*!
- \qmlproperty QPoint WebEngineDownloadItem::position
+ \qmlproperty QPoint WebEngineContextMenuData::position
Returns the position of the context, usually the mouse position where the context menu event was triggered.
@@ -95,7 +95,7 @@ QPoint QQuickWebEngineContextMenuData::position() const
}
/*!
- \qmlproperty QString WebEngineDownloadItem::linkText
+ \qmlproperty QString WebEngineContextMenuData::linkText
Returns the text of a link if the context is a link.
*/
@@ -105,7 +105,7 @@ QString QQuickWebEngineContextMenuData::linkText() const
}
/*!
- \qmlproperty QUrl WebEngineDownloadItem::linkUrl
+ \qmlproperty QUrl WebEngineContextMenuData::linkUrl
Returns the URL of a link if the context is a link.
*/
@@ -115,7 +115,7 @@ QUrl QQuickWebEngineContextMenuData::linkUrl() const
}
/*!
- \qmlproperty QString WebEngineDownloadItem::selectedText
+ \qmlproperty QString WebEngineContextMenuData::selectedText
Returns the selected text of the context.
*/
@@ -125,7 +125,7 @@ QString QQuickWebEngineContextMenuData::selectedText() const
}
/*!
- \qmlproperty QUrl WebEngineDownloadItem::mediaUrl
+ \qmlproperty QUrl WebEngineContextMenuData::mediaUrl
If the context is a media element, returns the URL of that media.
*/
@@ -135,7 +135,7 @@ QUrl QQuickWebEngineContextMenuData::mediaUrl() const
}
/*!
- \qmlproperty MediaType WebEngineDownloadItem::mediaType
+ \qmlproperty MediaType WebEngineContextMenuData::mediaType
Returns the type of the media element or \c MediaTypeNone if the context is not a media element.
@@ -161,7 +161,7 @@ QQuickWebEngineContextMenuData::MediaType QQuickWebEngineContextMenuData::mediaT
}
/*!
- \qmlproperty bool WebEngineDownloadItem::isContentEditable
+ \qmlproperty bool WebEngineContextMenuData::isContentEditable
Returns \c true if the content is editable by the user; otherwise returns \c false.
*/
diff --git a/src/webengine/api/qquickwebenginenewviewrequest_p.h b/src/webengine/api/qquickwebenginenewviewrequest_p.h
index e8665ba45..fd7fc42f4 100644
--- a/src/webengine/api/qquickwebenginenewviewrequest_p.h
+++ b/src/webengine/api/qquickwebenginenewviewrequest_p.h
@@ -75,7 +75,7 @@ private:
QQuickWebEngineNewViewRequest();
QQuickWebEngineView::NewViewDestination m_destination;
bool m_isUserInitiated;
- QExplicitlySharedDataPointer<QtWebEngineCore::WebContentsAdapter> m_adapter;
+ QSharedPointer<QtWebEngineCore::WebContentsAdapter> m_adapter;
QUrl m_requestedUrl;
friend class QQuickWebEngineView;
friend class QQuickWebEngineViewPrivate;
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index 0170018e7..02484548b 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -93,6 +93,27 @@
QT_BEGIN_NAMESPACE
using namespace QtWebEngineCore;
+QQuickWebEngineView::WebAction editorActionForKeyEvent(QKeyEvent* event)
+{
+ static struct {
+ QKeySequence::StandardKey standardKey;
+ QQuickWebEngineView::WebAction action;
+ } editorActions[] = {
+ { QKeySequence::Cut, QQuickWebEngineView::Cut },
+ { QKeySequence::Copy, QQuickWebEngineView::Copy },
+ { QKeySequence::Paste, QQuickWebEngineView::Paste },
+ { QKeySequence::Undo, QQuickWebEngineView::Undo },
+ { QKeySequence::Redo, QQuickWebEngineView::Redo },
+ { QKeySequence::SelectAll, QQuickWebEngineView::SelectAll },
+ { QKeySequence::UnknownKey, QQuickWebEngineView::NoWebAction }
+ };
+ for (int i = 0; editorActions[i].standardKey != QKeySequence::UnknownKey; ++i)
+ if (event == editorActions[i].standardKey)
+ return editorActions[i].action;
+
+ return QQuickWebEngineView::NoWebAction;
+}
+
#ifndef QT_NO_ACCESSIBILITY
static QAccessibleInterface *webAccessibleFactory(const QString &, QObject *object)
{
@@ -356,7 +377,8 @@ void QQuickWebEngineViewPrivate::allowCertificateError(const QSharedPointer<Cert
Q_Q(QQuickWebEngineView);
QQuickWebEngineCertificateError *quickController = new QQuickWebEngineCertificateError(errorController);
- QQmlEngine::setObjectOwnership(quickController, QQmlEngine::JavaScriptOwnership);
+ // mark the object for gc by creating temporary jsvalue
+ qmlEngine(q)->newQObject(quickController);
Q_EMIT q->certificateError(quickController);
if (!quickController->deferred() && !quickController->answered())
quickController->rejectCertificate();
@@ -539,11 +561,23 @@ void QQuickWebEngineViewPrivate::focusContainer()
void QQuickWebEngineViewPrivate::unhandledKeyEvent(QKeyEvent *event)
{
Q_Q(QQuickWebEngineView);
+#ifdef Q_OS_OSX
+ if (event->type() == QEvent::KeyPress) {
+ QQuickWebEngineView::WebAction action = editorActionForKeyEvent(event);
+ if (action != QQuickWebEngineView::NoWebAction) {
+ // Try triggering a registered short-cut
+ if (QGuiApplicationPrivate::instance()->shortcutMap.tryShortcut(event))
+ return;
+ q->triggerWebAction(action);
+ return;
+ }
+ }
+#endif
if (q->parentItem())
q->window()->sendEvent(q->parentItem(), event);
}
-void QQuickWebEngineViewPrivate::adoptNewWindow(WebContentsAdapter *newWebContents, WindowOpenDisposition disposition, bool userGesture, const QRect &)
+void QQuickWebEngineViewPrivate::adoptNewWindow(QSharedPointer<WebContentsAdapter> newWebContents, WindowOpenDisposition disposition, bool userGesture, const QRect &)
{
Q_Q(QQuickWebEngineView);
QQuickWebEngineNewViewRequest request;
@@ -749,7 +783,7 @@ QAccessible::State QQuickWebEngineViewAccessible::state() const
class WebContentsAdapterOwner : public QObject
{
public:
- typedef QExplicitlySharedDataPointer<QtWebEngineCore::WebContentsAdapter> AdapterPtr;
+ typedef QSharedPointer<QtWebEngineCore::WebContentsAdapter> AdapterPtr;
WebContentsAdapterOwner(const AdapterPtr &ptr)
: adapter(ptr)
{}
@@ -776,9 +810,9 @@ void QQuickWebEngineViewPrivate::adoptWebContents(WebContentsAdapter *webContent
// This throws away the WebContentsAdapter that has been used until now.
// All its states, particularly the loading URL, are replaced by the adopted WebContentsAdapter.
- WebContentsAdapterOwner *adapterOwner = new WebContentsAdapterOwner(adapter);
+ WebContentsAdapterOwner *adapterOwner = new WebContentsAdapterOwner(adapter->sharedFromThis());
adapterOwner->deleteLater();
- adapter = webContents;
+ adapter = webContents->sharedFromThis();
adapter->initialize(this);
// associate the webChannel with the new adapter
@@ -835,7 +869,7 @@ void QQuickWebEngineViewPrivate::ensureContentsAdapter()
{
Q_Q(QQuickWebEngineView);
if (!adapter) {
- adapter = new WebContentsAdapter();
+ adapter = QSharedPointer<WebContentsAdapter>::create();
adapter->initialize(this);
if (m_backgroundColor != Qt::white)
adapter->backgroundColorChanged();
@@ -995,7 +1029,7 @@ void QQuickWebEngineViewPrivate::setProfile(QQuickWebEngineProfile *profile)
if (adapter && adapter->browserContext() != browserContextAdapter()->browserContext()) {
// When the profile changes we need to create a new WebContentAdapter and reload the active URL.
QUrl activeUrl = adapter->activeUrl();
- adapter = 0;
+ adapter.reset();
ensureContentsAdapter();
if (!explicitUrl.isValid() && activeUrl.isValid())
diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h
index 45332ddb1..66952ca6e 100644
--- a/src/webengine/api/qquickwebengineview_p_p.h
+++ b/src/webengine/api/qquickwebengineview_p_p.h
@@ -73,6 +73,8 @@ class QQmlContext;
class QQuickWebEngineSettings;
class QQuickWebEngineFaviconProvider;
+QQuickWebEngineView::WebAction editorActionForKeyEvent(QKeyEvent* event);
+
#ifdef ENABLE_QML_TESTSUPPORT_API
class QQuickWebEngineTestSupport;
#endif
@@ -150,7 +152,7 @@ public:
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(QtWebEngineCore::WebContentsAdapter *newWebContents, WindowOpenDisposition disposition, bool userGesture, const QRect &) Q_DECL_OVERRIDE;
+ virtual void adoptNewWindow(QSharedPointer<QtWebEngineCore::WebContentsAdapter> newWebContents, WindowOpenDisposition disposition, bool userGesture, const QRect &) Q_DECL_OVERRIDE;
virtual bool isBeingAdopted() Q_DECL_OVERRIDE;
virtual void close() Q_DECL_OVERRIDE;
virtual void windowCloseRejected() Q_DECL_OVERRIDE;
@@ -206,7 +208,7 @@ public:
static QQuickWebEngineScript *userScripts_at(QQmlListProperty<QQuickWebEngineScript> *p, int idx);
static void userScripts_clear(QQmlListProperty<QQuickWebEngineScript> *p);
- QExplicitlySharedDataPointer<QtWebEngineCore::WebContentsAdapter> adapter;
+ QSharedPointer<QtWebEngineCore::WebContentsAdapter> adapter;
QScopedPointer<QQuickWebEngineViewExperimental> e;
QScopedPointer<QQuickWebEngineViewport> v;
QScopedPointer<QQuickWebEngineHistory> m_history;
diff --git a/src/webengine/doc/images/qtwebengine-architecture.png b/src/webengine/doc/images/qtwebengine-architecture.png
index 1c94d385f..979a0ad3f 100644
--- a/src/webengine/doc/images/qtwebengine-architecture.png
+++ b/src/webengine/doc/images/qtwebengine-architecture.png
Binary files differ
diff --git a/src/webengine/doc/images/qtwebengine-model.qmodel b/src/webengine/doc/images/qtwebengine-model.qmodel
new file mode 100644
index 000000000..f3d5cb52b
--- /dev/null
+++ b/src/webengine/doc/images/qtwebengine-model.qmodel
@@ -0,0 +1,626 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qmt>
+ <project>
+ <uid>{b4b96dcf-b444-4b48-96a0-0ced0222fbe4}</uid>
+ <root-package>
+ <instance>
+ <MPackage>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{4b17cf3d-b45a-4ca8-b6c2-f0a9db0a0d9e}</uid>
+ </MElement>
+ </base-MElement>
+ <name>qtwebengine-model</name>
+ <children>
+ <handles>
+ <handles>
+ <qlist>
+ <item>
+ <handle>
+ <uid>{d0623590-2a20-468b-9ec5-51987e78ae47}</uid>
+ <target>
+ <instance type="MCanvasDiagram">
+ <MCanvasDiagram>
+ <base-MDiagram>
+ <MDiagram>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{d0623590-2a20-468b-9ec5-51987e78ae47}</uid>
+ </MElement>
+ </base-MElement>
+ <name>qtwebengine-model</name>
+ </MObject>
+ </base-MObject>
+ <elements>
+ <qlist>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{e1622bc8-530c-4d18-ba77-202bad11f1e0}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{3507c733-97ee-4b84-835b-4d90f039ca72}</object>
+ <name>View</name>
+ <pos>x:260;y:70</pos>
+ <rect>x:-45;y:-30;w:90;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{0bb9e92a-910d-4a32-877b-fd7e37710f79}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{ab5f0d96-cf38-430d-bef3-b7bd78952fdb}</object>
+ <name>Profile</name>
+ <pos>x:415;y:155</pos>
+ <rect>x:-50;y:-30;w:100;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{54c2f051-8fdb-48f2-b528-2caa8fd1f854}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{999dd0f9-53f0-47bd-90ea-714c0dea50d7}</object>
+ <name>History</name>
+ <pos>x:110;y:155</pos>
+ <rect>x:-50;y:-30;w:100;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{ae2fed61-96c0-4755-aad1-2d02fbc6e36e}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{b2ea9c4f-8b35-46c3-b2a5-3f22d72069e7}</object>
+ <name>Settings</name>
+ <pos>x:260;y:240</pos>
+ <rect>x:-50;y:-30;w:100;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{95fafacc-66c7-42d0-b27e-e92a69964adf}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{e3429382-8484-481e-8690-792b1c1a257e}</object>
+ <a>{e1622bc8-530c-4d18-ba77-202bad11f1e0}</a>
+ <b>{0bb9e92a-910d-4a32-877b-fd7e37710f79}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{673bc9c1-a5ff-44ba-b9a6-d17807014a8e}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{e505b9c3-2332-4056-b3f0-dbd71a5ccbae}</object>
+ <a>{e1622bc8-530c-4d18-ba77-202bad11f1e0}</a>
+ <b>{54c2f051-8fdb-48f2-b528-2caa8fd1f854}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{78e57691-4776-4e73-b0f0-232a1e80da10}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{9cfdd75f-182e-4511-bf4c-19f30309318e}</object>
+ <a>{0bb9e92a-910d-4a32-877b-fd7e37710f79}</a>
+ <b>{ae2fed61-96c0-4755-aad1-2d02fbc6e36e}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{e76fa55e-b2df-4713-9fab-78434c3c7ed3}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{ff72261f-19e3-4983-b10c-856f6070637b}</object>
+ <name>Action</name>
+ <pos>x:260;y:155</pos>
+ <rect>x:-50;y:-30;w:100;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{305524c2-f2c7-44ba-b30b-51fbfdc81063}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{911f495e-313f-4b28-95d6-440b06a05a83}</object>
+ <a>{e1622bc8-530c-4d18-ba77-202bad11f1e0}</a>
+ <b>{e76fa55e-b2df-4713-9fab-78434c3c7ed3}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{28ea46b1-ce73-432f-89a6-a97821dbac59}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{f1e3fd14-d433-4d95-8ea4-1c4b5aaf4334}</object>
+ <name>Script</name>
+ <pos>x:415;y:240</pos>
+ <rect>x:-45;y:-30;w:90;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{41e806b6-c8fd-4ae5-865d-db55feeb5570}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{96788086-5e67-482c-ac8b-0f2a7f0729ff}</object>
+ <name>Cookie</name>
+ <pos>x:555;y:240</pos>
+ <rect>x:-50;y:-30;w:100;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{99a53c8d-8dc1-4ee5-83bf-ec2ff2677817}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{dc399de7-f3b9-4071-84af-b6e5dfa3affe}</object>
+ <a>{0bb9e92a-910d-4a32-877b-fd7e37710f79}</a>
+ <b>{28ea46b1-ce73-432f-89a6-a97821dbac59}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{f3833f3d-d01b-4c7c-bfde-91d014aff654}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{4dc013fb-ced4-4cc0-99e3-3f4a32acebf7}</object>
+ <a>{0bb9e92a-910d-4a32-877b-fd7e37710f79}</a>
+ <b>{41e806b6-c8fd-4ae5-865d-db55feeb5570}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ </qlist>
+ </elements>
+ <last-modified>1455888691589</last-modified>
+ <toolbarid>General</toolbarid>
+ </MDiagram>
+ </base-MDiagram>
+ </MCanvasDiagram>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{3507c733-97ee-4b84-835b-4d90f039ca72}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{3507c733-97ee-4b84-835b-4d90f039ca72}</uid>
+ </MElement>
+ </base-MElement>
+ <name>View</name>
+ <relations>
+ <handles>
+ <handles>
+ <qlist>
+ <item>
+ <handle>
+ <uid>{e3429382-8484-481e-8690-792b1c1a257e}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{e3429382-8484-481e-8690-792b1c1a257e}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{3507c733-97ee-4b84-835b-4d90f039ca72}</a>
+ <b>{ab5f0d96-cf38-430d-bef3-b7bd78952fdb}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{e505b9c3-2332-4056-b3f0-dbd71a5ccbae}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{e505b9c3-2332-4056-b3f0-dbd71a5ccbae}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{3507c733-97ee-4b84-835b-4d90f039ca72}</a>
+ <b>{999dd0f9-53f0-47bd-90ea-714c0dea50d7}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{4d826dd3-e455-46f3-8dfc-bb74551f3f00}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{4d826dd3-e455-46f3-8dfc-bb74551f3f00}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{3507c733-97ee-4b84-835b-4d90f039ca72}</a>
+ <b>{b2ea9c4f-8b35-46c3-b2a5-3f22d72069e7}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{911f495e-313f-4b28-95d6-440b06a05a83}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{911f495e-313f-4b28-95d6-440b06a05a83}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{3507c733-97ee-4b84-835b-4d90f039ca72}</a>
+ <b>{ff72261f-19e3-4983-b10c-856f6070637b}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ </qlist>
+ </handles>
+ </handles>
+ </relations>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{ab5f0d96-cf38-430d-bef3-b7bd78952fdb}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{ab5f0d96-cf38-430d-bef3-b7bd78952fdb}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Profile</name>
+ <relations>
+ <handles>
+ <handles>
+ <qlist>
+ <item>
+ <handle>
+ <uid>{9cfdd75f-182e-4511-bf4c-19f30309318e}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{9cfdd75f-182e-4511-bf4c-19f30309318e}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{ab5f0d96-cf38-430d-bef3-b7bd78952fdb}</a>
+ <b>{b2ea9c4f-8b35-46c3-b2a5-3f22d72069e7}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{dc399de7-f3b9-4071-84af-b6e5dfa3affe}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{dc399de7-f3b9-4071-84af-b6e5dfa3affe}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{ab5f0d96-cf38-430d-bef3-b7bd78952fdb}</a>
+ <b>{f1e3fd14-d433-4d95-8ea4-1c4b5aaf4334}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{4dc013fb-ced4-4cc0-99e3-3f4a32acebf7}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{4dc013fb-ced4-4cc0-99e3-3f4a32acebf7}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{ab5f0d96-cf38-430d-bef3-b7bd78952fdb}</a>
+ <b>{96788086-5e67-482c-ac8b-0f2a7f0729ff}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ </qlist>
+ </handles>
+ </handles>
+ </relations>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{999dd0f9-53f0-47bd-90ea-714c0dea50d7}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{999dd0f9-53f0-47bd-90ea-714c0dea50d7}</uid>
+ </MElement>
+ </base-MElement>
+ <name>History</name>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{b2ea9c4f-8b35-46c3-b2a5-3f22d72069e7}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{b2ea9c4f-8b35-46c3-b2a5-3f22d72069e7}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Settings</name>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{ff72261f-19e3-4983-b10c-856f6070637b}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{ff72261f-19e3-4983-b10c-856f6070637b}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Action</name>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{f1e3fd14-d433-4d95-8ea4-1c4b5aaf4334}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{f1e3fd14-d433-4d95-8ea4-1c4b5aaf4334}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Script</name>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{96788086-5e67-482c-ac8b-0f2a7f0729ff}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{96788086-5e67-482c-ac8b-0f2a7f0729ff}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Cookie</name>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ </qlist>
+ </handles>
+ </handles>
+ </children>
+ </MObject>
+ </base-MObject>
+ </MPackage>
+ </instance>
+ </root-package>
+ </project>
+</qmt>
diff --git a/src/webengine/doc/images/qtwebengine-modules-model.qmodel b/src/webengine/doc/images/qtwebengine-modules-model.qmodel
new file mode 100644
index 000000000..c1d64b617
--- /dev/null
+++ b/src/webengine/doc/images/qtwebengine-modules-model.qmodel
@@ -0,0 +1,500 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qmt>
+ <project>
+ <uid>{4a2bfe98-50e2-435d-8702-93dc2ccbd56b}</uid>
+ <root-package>
+ <instance>
+ <MPackage>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{11ff33c5-f533-494d-9add-55ea216b97a6}</uid>
+ </MElement>
+ </base-MElement>
+ <name>qtwebengine-modules-model</name>
+ <children>
+ <handles>
+ <handles>
+ <qlist>
+ <item>
+ <handle>
+ <uid>{9e8325b8-5731-4c87-9203-fe941456ee06}</uid>
+ <target>
+ <instance type="MCanvasDiagram">
+ <MCanvasDiagram>
+ <base-MDiagram>
+ <MDiagram>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{9e8325b8-5731-4c87-9203-fe941456ee06}</uid>
+ </MElement>
+ </base-MElement>
+ <name>qtwebengine-modules-model</name>
+ </MObject>
+ </base-MObject>
+ <elements>
+ <qlist>
+ <item>
+ <instance type="DPackage">
+ <DPackage>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{aee48ad9-14be-47bb-8ebf-1a9b44f1e219}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{4d3871a4-ad9d-4b1a-ab68-acfce8ba5f00}</object>
+ <name>Qt WebEngine Module</name>
+ <pos>x:300;y:70</pos>
+ <rect>x:-275;y:-145;w:550;h:290</rect>
+ <auto-sized>false</auto-sized>
+ <visual-role>0</visual-role>
+ <stereotype-display>0</stereotype-display>
+ </DObject>
+ </base-DObject>
+ </DPackage>
+ </instance>
+ </item>
+ <item>
+ <instance type="DPackage">
+ <DPackage>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{b667049f-5302-4e68-8679-c26a7c4c37af}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{71104fca-42f0-4145-bf3a-afed38493c8b}</object>
+ <context>Qt WebEngine Module</context>
+ <name>Qt WebEngine </name>
+ <pos>x:300;y:15</pos>
+ <rect>x:-75;y:-35;w:150;h:70</rect>
+ <auto-sized>false</auto-sized>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DPackage>
+ </instance>
+ </item>
+ <item>
+ <instance type="DPackage">
+ <DPackage>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{6d84908c-9500-4b4f-95b8-b723ff8f2fc3}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{8e8c6646-1175-4ee1-aa02-cd5669cdf92a}</object>
+ <context>Qt WebEngine Module</context>
+ <name> Qt WebEngine Widgets</name>
+ <pos>x:105;y:15</pos>
+ <rect>x:-75;y:-35;w:150;h:70</rect>
+ <auto-sized>false</auto-sized>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DPackage>
+ </instance>
+ </item>
+ <item>
+ <instance type="DPackage">
+ <DPackage>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{d1260089-4eb6-4465-ac5f-e36ba1ef2311}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{c0946aaa-51df-48db-9ceb-351cd32089be}</object>
+ <context>Qt WebEngine Module</context>
+ <name> Qt WebEngine Process</name>
+ <pos>x:495;y:15</pos>
+ <rect>x:-75;y:-35;w:150;h:70</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DPackage>
+ </instance>
+ </item>
+ <item>
+ <instance type="DPackage">
+ <DPackage>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{7e01513b-4cfc-4154-b445-a9b341b392a3}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{6ee7f00e-5dc3-4f45-a3ca-428390b4c74c}</object>
+ <context>Qt WebEngine Module</context>
+ <name>Qt WebEngine Core</name>
+ <pos>x:300;y:150</pos>
+ <rect>x:-270;y:-60;w:540;h:120</rect>
+ <auto-sized>false</auto-sized>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DPackage>
+ </instance>
+ </item>
+ <item>
+ <instance type="DPackage">
+ <DPackage>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{620a2a3d-3a6c-4afc-a9ba-e2a0651b81b8}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{ce1e329b-b2ec-465f-bbc7-3cc75160da1a}</object>
+ <context>Qt WebEngine Core</context>
+ <name>Chromium</name>
+ <pos>x:300;y:165</pos>
+ <rect>x:-260;y:-35;w:520;h:70</rect>
+ <auto-sized>false</auto-sized>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DPackage>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{d0b02baa-0ce3-437e-a962-0896efb0b2d0}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{342a09ff-ab96-40d2-b9f9-300d1f2a067b}</object>
+ <a>{6d84908c-9500-4b4f-95b8-b723ff8f2fc3}</a>
+ <b>{7e01513b-4cfc-4154-b445-a9b341b392a3}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{e59a5c27-7bda-44f6-8b7d-a729c2d04ff5}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{45bf7ccd-aafc-4ec1-a846-bb2661aa9def}</object>
+ <a>{b667049f-5302-4e68-8679-c26a7c4c37af}</a>
+ <b>{7e01513b-4cfc-4154-b445-a9b341b392a3}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{8ae66be6-ad8a-442f-a85d-58e53a684249}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{6875416f-210d-4957-b0dc-d1a92a4238ef}</object>
+ <a>{d1260089-4eb6-4465-ac5f-e36ba1ef2311}</a>
+ <b>{7e01513b-4cfc-4154-b445-a9b341b392a3}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ </qlist>
+ </elements>
+ <last-modified>1469021602971</last-modified>
+ <toolbarid>General</toolbarid>
+ </MDiagram>
+ </base-MDiagram>
+ </MCanvasDiagram>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{4d3871a4-ad9d-4b1a-ab68-acfce8ba5f00}</uid>
+ <target>
+ <instance type="MPackage">
+ <MPackage>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{4d3871a4-ad9d-4b1a-ab68-acfce8ba5f00}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Qt WebEngine Module</name>
+ <children>
+ <handles>
+ <handles>
+ <qlist>
+ <item>
+ <handle>
+ <uid>{71104fca-42f0-4145-bf3a-afed38493c8b}</uid>
+ <target>
+ <instance type="MPackage">
+ <MPackage>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{71104fca-42f0-4145-bf3a-afed38493c8b}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Qt WebEngine </name>
+ <relations>
+ <handles>
+ <handles>
+ <qlist>
+ <item>
+ <handle>
+ <uid>{45bf7ccd-aafc-4ec1-a846-bb2661aa9def}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{45bf7ccd-aafc-4ec1-a846-bb2661aa9def}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{71104fca-42f0-4145-bf3a-afed38493c8b}</a>
+ <b>{6ee7f00e-5dc3-4f45-a3ca-428390b4c74c}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ </qlist>
+ </handles>
+ </handles>
+ </relations>
+ </MObject>
+ </base-MObject>
+ </MPackage>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{8e8c6646-1175-4ee1-aa02-cd5669cdf92a}</uid>
+ <target>
+ <instance type="MPackage">
+ <MPackage>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{8e8c6646-1175-4ee1-aa02-cd5669cdf92a}</uid>
+ </MElement>
+ </base-MElement>
+ <name> Qt WebEngine Widgets</name>
+ <relations>
+ <handles>
+ <handles>
+ <qlist>
+ <item>
+ <handle>
+ <uid>{342a09ff-ab96-40d2-b9f9-300d1f2a067b}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{342a09ff-ab96-40d2-b9f9-300d1f2a067b}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{8e8c6646-1175-4ee1-aa02-cd5669cdf92a}</a>
+ <b>{6ee7f00e-5dc3-4f45-a3ca-428390b4c74c}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{483712c1-3ec0-4271-b02e-b268de07897b}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{483712c1-3ec0-4271-b02e-b268de07897b}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{8e8c6646-1175-4ee1-aa02-cd5669cdf92a}</a>
+ <b>{71104fca-42f0-4145-bf3a-afed38493c8b}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ </qlist>
+ </handles>
+ </handles>
+ </relations>
+ </MObject>
+ </base-MObject>
+ </MPackage>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{c0946aaa-51df-48db-9ceb-351cd32089be}</uid>
+ <target>
+ <instance type="MPackage">
+ <MPackage>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{c0946aaa-51df-48db-9ceb-351cd32089be}</uid>
+ </MElement>
+ </base-MElement>
+ <name> Qt WebEngine Process</name>
+ <relations>
+ <handles>
+ <handles>
+ <qlist>
+ <item>
+ <handle>
+ <uid>{6875416f-210d-4957-b0dc-d1a92a4238ef}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{6875416f-210d-4957-b0dc-d1a92a4238ef}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{c0946aaa-51df-48db-9ceb-351cd32089be}</a>
+ <b>{6ee7f00e-5dc3-4f45-a3ca-428390b4c74c}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ </qlist>
+ </handles>
+ </handles>
+ </relations>
+ </MObject>
+ </base-MObject>
+ </MPackage>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{6ee7f00e-5dc3-4f45-a3ca-428390b4c74c}</uid>
+ <target>
+ <instance type="MPackage">
+ <MPackage>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{6ee7f00e-5dc3-4f45-a3ca-428390b4c74c}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Qt WebEngine Core</name>
+ <children>
+ <handles>
+ <handles>
+ <qlist>
+ <item>
+ <handle>
+ <uid>{ce1e329b-b2ec-465f-bbc7-3cc75160da1a}</uid>
+ <target>
+ <instance type="MPackage">
+ <MPackage>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{ce1e329b-b2ec-465f-bbc7-3cc75160da1a}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Chromium</name>
+ </MObject>
+ </base-MObject>
+ </MPackage>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ </qlist>
+ </handles>
+ </handles>
+ </children>
+ </MObject>
+ </base-MObject>
+ </MPackage>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ </qlist>
+ </handles>
+ </handles>
+ </children>
+ </MObject>
+ </base-MObject>
+ </MPackage>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ </qlist>
+ </handles>
+ </handles>
+ </children>
+ </MObject>
+ </base-MObject>
+ </MPackage>
+ </instance>
+ </root-package>
+ </project>
+</qmt>
diff --git a/src/webengine/doc/images/qtwebenginewidgets-model.qmodel b/src/webengine/doc/images/qtwebenginewidgets-model.qmodel
new file mode 100644
index 000000000..aa59f7b8f
--- /dev/null
+++ b/src/webengine/doc/images/qtwebenginewidgets-model.qmodel
@@ -0,0 +1,789 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qmt>
+ <project>
+ <uid>{388ed80a-d45a-4746-9b42-b201bdfbe66d}</uid>
+ <root-package>
+ <instance>
+ <MPackage>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{cf413898-e1a1-48a2-be84-dee757d150e1}</uid>
+ </MElement>
+ </base-MElement>
+ <name>qtwebenginewidgets-model</name>
+ <children>
+ <handles>
+ <handles>
+ <qlist>
+ <item>
+ <handle>
+ <uid>{cb7c93b6-ed69-4e54-bca7-23edd2432e88}</uid>
+ <target>
+ <instance type="MCanvasDiagram">
+ <MCanvasDiagram>
+ <base-MDiagram>
+ <MDiagram>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{cb7c93b6-ed69-4e54-bca7-23edd2432e88}</uid>
+ </MElement>
+ </base-MElement>
+ <name>qtwebenginewidgets-model</name>
+ </MObject>
+ </base-MObject>
+ <elements>
+ <qlist>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{9d9a12d1-d237-4d4f-9b55-bdbbc99bd2b1}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{1a4983f6-27db-4f8c-90ed-f72df621c50f}</object>
+ <name>View</name>
+ <pos>x:235;y:-280</pos>
+ <rect>x:-45;y:-30;w:90;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{81687d47-fbb1-4843-a394-7d7e5e57a2ff}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</object>
+ <name>Page</name>
+ <pos>x:235;y:-195</pos>
+ <rect>x:-45;y:-30;w:90;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{e6d92a82-f898-448f-945e-26b508249746}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{99e69e48-e844-4fc0-942c-aacef280c616}</object>
+ <name>History</name>
+ <pos>x:90;y:-110</pos>
+ <rect>x:-50;y:-30;w:100;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{9ba8a864-bd21-48e5-9df4-c7065d3ab474}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{6b572233-bf3a-43a2-bfe2-e61d57a59a2e}</object>
+ <name>Settings</name>
+ <pos>x:235;y:-20</pos>
+ <rect>x:-50;y:-30;w:100;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{62872913-7080-421b-b12c-d3c094faa37d}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{8afe2dfe-878f-4c40-9f07-c6128611f853}</object>
+ <name>Profile</name>
+ <pos>x:380;y:-110</pos>
+ <rect>x:-50;y:-30;w:100;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{54a21438-6274-4484-9225-97a47d3514ea}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{8e94476c-6a26-4bbc-b134-54a7203a0242}</object>
+ <a>{9d9a12d1-d237-4d4f-9b55-bdbbc99bd2b1}</a>
+ <b>{81687d47-fbb1-4843-a394-7d7e5e57a2ff}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{b3f6b700-e506-471b-9341-78a57b55fb20}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{48d2b9ae-8462-4c93-9772-77f2520e2bcb}</object>
+ <a>{81687d47-fbb1-4843-a394-7d7e5e57a2ff}</a>
+ <b>{e6d92a82-f898-448f-945e-26b508249746}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{5870be46-b8c5-480b-89d0-2ecd38fea9e1}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{2ec57f83-da38-4ed1-970c-d416a5f76425}</object>
+ <a>{81687d47-fbb1-4843-a394-7d7e5e57a2ff}</a>
+ <b>{62872913-7080-421b-b12c-d3c094faa37d}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{9140249c-7a62-4e4d-846a-398e794e34c6}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{9c6691bd-75e5-40af-a662-ecb04e60744e}</object>
+ <a>{62872913-7080-421b-b12c-d3c094faa37d}</a>
+ <b>{9ba8a864-bd21-48e5-9df4-c7065d3ab474}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{97fe6f5f-a947-4c62-880d-e2d9258814dd}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{2dfae517-4615-42b9-bb33-63369291468f}</object>
+ <name>Script</name>
+ <pos>x:380;y:-20</pos>
+ <rect>x:-45;y:-30;w:90;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{3cb4f4a2-0a1d-4adb-8b72-c438a8102a2b}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{8f64c8e2-637e-482e-8565-1bbdcd203709}</object>
+ <name>Action</name>
+ <pos>x:235;y:-110</pos>
+ <rect>x:-50;y:-30;w:100;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{c962daa4-09b9-411d-a0d1-d1c7b9bd1489}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{31cff752-95b7-4994-a5fc-8794dd8a013f}</object>
+ <a>{62872913-7080-421b-b12c-d3c094faa37d}</a>
+ <b>{97fe6f5f-a947-4c62-880d-e2d9258814dd}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{a8f88107-5699-4e25-8945-1113d642fdd0}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{acca28ee-b184-4cbe-9aaa-befeac08c3bd}</object>
+ <a>{81687d47-fbb1-4843-a394-7d7e5e57a2ff}</a>
+ <b>{3cb4f4a2-0a1d-4adb-8b72-c438a8102a2b}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ <item>
+ <instance type="DComponent">
+ <DComponent>
+ <base-DObject>
+ <DObject>
+ <base-DElement>
+ <DElement>
+ <uid>{6208171a-1515-424a-bb4e-5f115b4c21fa}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{b19ba8d3-84ca-4718-b62c-575aa5d95c95}</object>
+ <name>Cookie</name>
+ <pos>x:525;y:-20</pos>
+ <rect>x:-50;y:-30;w:100;h:60</rect>
+ <visual-role>0</visual-role>
+ </DObject>
+ </base-DObject>
+ </DComponent>
+ </instance>
+ </item>
+ <item>
+ <instance type="DDependency">
+ <DDependency>
+ <base-DRelation>
+ <DRelation>
+ <base-DElement>
+ <DElement>
+ <uid>{57732b45-63fc-4d87-91fe-c9e9cbdd69ee}</uid>
+ </DElement>
+ </base-DElement>
+ <object>{b98164e7-ff69-40e7-ac1b-fe4985f451e7}</object>
+ <a>{62872913-7080-421b-b12c-d3c094faa37d}</a>
+ <b>{6208171a-1515-424a-bb4e-5f115b4c21fa}</b>
+ </DRelation>
+ </base-DRelation>
+ </DDependency>
+ </instance>
+ </item>
+ </qlist>
+ </elements>
+ <last-modified>1455889165432</last-modified>
+ <toolbarid>General</toolbarid>
+ </MDiagram>
+ </base-MDiagram>
+ </MCanvasDiagram>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{1a4983f6-27db-4f8c-90ed-f72df621c50f}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{1a4983f6-27db-4f8c-90ed-f72df621c50f}</uid>
+ </MElement>
+ </base-MElement>
+ <name>View</name>
+ <relations>
+ <handles>
+ <handles>
+ <qlist>
+ <item>
+ <handle>
+ <uid>{8e94476c-6a26-4bbc-b134-54a7203a0242}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{8e94476c-6a26-4bbc-b134-54a7203a0242}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{1a4983f6-27db-4f8c-90ed-f72df621c50f}</a>
+ <b>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ </qlist>
+ </handles>
+ </handles>
+ </relations>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Page</name>
+ <relations>
+ <handles>
+ <handles>
+ <qlist>
+ <item>
+ <handle>
+ <uid>{48d2b9ae-8462-4c93-9772-77f2520e2bcb}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{48d2b9ae-8462-4c93-9772-77f2520e2bcb}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</a>
+ <b>{99e69e48-e844-4fc0-942c-aacef280c616}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{2ec57f83-da38-4ed1-970c-d416a5f76425}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{2ec57f83-da38-4ed1-970c-d416a5f76425}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</a>
+ <b>{8afe2dfe-878f-4c40-9f07-c6128611f853}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{30d6d5e4-eb6b-4816-817d-5a921f823dae}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{30d6d5e4-eb6b-4816-817d-5a921f823dae}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</a>
+ <b>{6b572233-bf3a-43a2-bfe2-e61d57a59a2e}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{0011e11e-283e-4ad9-94b0-749d4465eac8}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{0011e11e-283e-4ad9-94b0-749d4465eac8}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</a>
+ <b>{2dfae517-4615-42b9-bb33-63369291468f}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{c354a766-0dba-439d-9f6c-538772784181}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{c354a766-0dba-439d-9f6c-538772784181}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</a>
+ <b>{8f64c8e2-637e-482e-8565-1bbdcd203709}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{acca28ee-b184-4cbe-9aaa-befeac08c3bd}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{acca28ee-b184-4cbe-9aaa-befeac08c3bd}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</a>
+ <b>{8f64c8e2-637e-482e-8565-1bbdcd203709}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ </qlist>
+ </handles>
+ </handles>
+ </relations>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{99e69e48-e844-4fc0-942c-aacef280c616}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{99e69e48-e844-4fc0-942c-aacef280c616}</uid>
+ </MElement>
+ </base-MElement>
+ <name>History</name>
+ <relations>
+ <handles>
+ <handles>
+ <qlist>
+ <item>
+ <handle>
+ <uid>{bca413d3-d869-44ce-a68d-38e8ba6de291}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{bca413d3-d869-44ce-a68d-38e8ba6de291}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{99e69e48-e844-4fc0-942c-aacef280c616}</a>
+ <b>{6b572233-bf3a-43a2-bfe2-e61d57a59a2e}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ </qlist>
+ </handles>
+ </handles>
+ </relations>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{6b572233-bf3a-43a2-bfe2-e61d57a59a2e}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{6b572233-bf3a-43a2-bfe2-e61d57a59a2e}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Settings</name>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{8afe2dfe-878f-4c40-9f07-c6128611f853}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{8afe2dfe-878f-4c40-9f07-c6128611f853}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Profile</name>
+ <relations>
+ <handles>
+ <handles>
+ <qlist>
+ <item>
+ <handle>
+ <uid>{9c6691bd-75e5-40af-a662-ecb04e60744e}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{9c6691bd-75e5-40af-a662-ecb04e60744e}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{8afe2dfe-878f-4c40-9f07-c6128611f853}</a>
+ <b>{6b572233-bf3a-43a2-bfe2-e61d57a59a2e}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{31cff752-95b7-4994-a5fc-8794dd8a013f}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{31cff752-95b7-4994-a5fc-8794dd8a013f}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{8afe2dfe-878f-4c40-9f07-c6128611f853}</a>
+ <b>{2dfae517-4615-42b9-bb33-63369291468f}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{b98164e7-ff69-40e7-ac1b-fe4985f451e7}</uid>
+ <target>
+ <instance type="MDependency">
+ <MDependency>
+ <base-MRelation>
+ <MRelation>
+ <base-MElement>
+ <MElement>
+ <uid>{b98164e7-ff69-40e7-ac1b-fe4985f451e7}</uid>
+ </MElement>
+ </base-MElement>
+ <a>{8afe2dfe-878f-4c40-9f07-c6128611f853}</a>
+ <b>{b19ba8d3-84ca-4718-b62c-575aa5d95c95}</b>
+ </MRelation>
+ </base-MRelation>
+ </MDependency>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ </qlist>
+ </handles>
+ </handles>
+ </relations>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{2dfae517-4615-42b9-bb33-63369291468f}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{2dfae517-4615-42b9-bb33-63369291468f}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Script</name>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{8f64c8e2-637e-482e-8565-1bbdcd203709}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{8f64c8e2-637e-482e-8565-1bbdcd203709}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Action</name>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ <item>
+ <handle>
+ <uid>{b19ba8d3-84ca-4718-b62c-575aa5d95c95}</uid>
+ <target>
+ <instance type="MComponent">
+ <MComponent>
+ <base-MObject>
+ <MObject>
+ <base-MElement>
+ <MElement>
+ <uid>{b19ba8d3-84ca-4718-b62c-575aa5d95c95}</uid>
+ </MElement>
+ </base-MElement>
+ <name>Cookie</name>
+ </MObject>
+ </base-MObject>
+ </MComponent>
+ </instance>
+ </target>
+ </handle>
+ </item>
+ </qlist>
+ </handles>
+ </handles>
+ </children>
+ </MObject>
+ </base-MObject>
+ </MPackage>
+ </instance>
+ </root-package>
+ </project>
+</qmt>
diff --git a/src/webengine/doc/src/qtwebengine-deploying.qdoc b/src/webengine/doc/src/qtwebengine-deploying.qdoc
new file mode 100644
index 000000000..4aa57c0df
--- /dev/null
+++ b/src/webengine/doc/src/qtwebengine-deploying.qdoc
@@ -0,0 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** 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 The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page qtwebengine-deploying.html
+ \title Deploying Qt WebEngine Applications
+
+ Qt WebEngine takes advantage of the multi process model that the Chromium
+ project offers. The multi process model requires the QtWebEngineProcess
+ executable to be deployed alongside your application. To do this, we
+ recommend the use of Qt's cross-platform deployment tools.
+
+ Alternatively, if you are carrying out manual deployment, you will find the
+ QtWebEngineProcess executable in the libexec directory of your Qt
+ installation. On Windows, QtWebEngineProcess.exe is located in the bin
+ directory of your Qt application.
+
+ For more information on deploying Qt applications, please see
+ \l {Deploying Qt Applications}.
+*/
diff --git a/src/webengine/doc/src/qtwebengine-index.qdoc b/src/webengine/doc/src/qtwebengine-index.qdoc
index e7314fcf9..c4be591ff 100644
--- a/src/webengine/doc/src/qtwebengine-index.qdoc
+++ b/src/webengine/doc/src/qtwebengine-index.qdoc
@@ -38,10 +38,6 @@
\annotatedlist qtwebengine-modules
- For Qt Quick applications, Qt WebEngine provides the following QML modules:
-
- \annotatedlist qtwebengine-qmlmodules
-
\section1 Articles and Guides
\list
@@ -50,6 +46,7 @@
\li \l{Qt WebEngine Platform Notes}
\li \l{Qt WebEngine Licensing}
\li \l{Qt WebEngine Debugging and Profiling}
+ \li \l{Deploying Qt WebEngine Applications}
\li \l{Porting from Qt WebKit to Qt WebEngine}
\endlist
diff --git a/src/webengine/doc/src/qtwebengine-overview.qdoc b/src/webengine/doc/src/qtwebengine-overview.qdoc
index 064dfb44b..f34b4514b 100644
--- a/src/webengine/doc/src/qtwebengine-overview.qdoc
+++ b/src/webengine/doc/src/qtwebengine-overview.qdoc
@@ -31,28 +31,12 @@
The Qt WebEngine module provides a web browser engine that makes it easy to embed content from
the World Wide Web into your Qt application on platforms that do not have a native web engine.
- The web engine is not intended to function as a \e {Web Runtime}; to display web content in a
- QML application by using APIs native to the platform, use the \l{Qt WebView} module, instead.
Qt WebEngine provides C++ classes and QML types for rendering HTML, XHTML, and SVG documents,
styled using Cascading Style Sheets (CSS) and scripted with JavaScript. HTML documents can be
made fully editable by the user through the use of the \c{contenteditable} attribute on HTML
elements.
- Qt WebEngine supercedes the \l{http://doc.qt.io/archives/qt-5.3/qtwebkit-index.html}{Qt WebKit}
- module, which is based on the
- WebKit project, but has not been actively synchronized with the upstream WebKit code since
- Qt 5.2 and has been deprecated in Qt 5.5. For tips on how to change a Qt WebKit widgets
- application to use Qt WebEngine widgets, see \l{Porting from Qt WebKit to Qt WebEngine}. For new
- applications, we recommend using Qt Quick and the WebEngineView QML type.
-
- For more information about the requirements for building Qt WebEngine from source on the
- supported platforms and for other platform-specific information, see
- \l{Qt WebEngine Platform Notes}.
-
- The \l {Qt WebChannel} module can be used to create a bi-directional communication channel
- between QObject objects on the C++ side and JavaScript on the QML side.
-
\section1 Qt WebEngine Architecture
\image qtwebengine-architecture.png
@@ -82,57 +66,37 @@
\e cookies. Profiles can be used to isolate pages from each other. A typical use case is a
dedicated profile for a \e {private browsing} mode, where no information is permanently saved.
+ \note The Qt WebEngine Widgets module uses the \l{Qt Quick Scene Graph}{Qt Quick scene graph}
+ to compose the elements of a web page into one view. This means that the UI process
+ requires OpenGL ES 2.0 or OpenGL 2.0 for its rendering.
+
\section2 Qt WebEngine Module
\image qtwebengine-model.png
- The Qt WebEngine QML implementation contains the same elements as the C++ implementation,
- except that there is no separately accessible web engine page. The supported page functionality
- is integrated into the web engine view.
+ The Qt WebEngine QML implementation contains the same elements as the Qt WebEngine Widgets
+ implementation, except that there is no separately accessible web engine page.
+ The supported page functionality is integrated into the web engine view.
\section2 Qt WebEngine Core Module
The Qt WebEngine core is based on the \l {Chromium Project}. Chromium provides its own network
- and painting engines and is developed tightly together with its dependent modules, and
- therefore Qt WebEngine provides better and more reliable support for the latest HTML5
- specification than Qt WebKit. However, Qt WebEngine is thus heavier than Qt WebKit and does
- not provide direct access to the network stack and the HTML document through C++ APIs.
+ and painting engines and is developed tightly together with its dependent modules.
- Please note that Qt WebEngine is based on Chromium, but does not contain or use any services
+ \note Qt WebEngine is based on Chromium, but does not contain or use any services
or add-ons that might be part of the Chrome browser that is built and delivered by Google.
You can find more detailed information about the differences between Chromium and Chrome in this
\l{https://chromium.googlesource.com/chromium/src/+/master/docs/chromium_browser_vs_google_chrome.md}{overview}
that is part of the documentation in the \l {Chromium Project} upstream source tree.
- This version of Qt WebEngine is based on Chromium version 45.0.2554.101, with
+ This version of Qt WebEngine is based on Chromium version 49.0.2623.111, with
additional security fixes from newer versions.
\section2 Qt WebEngine Process
- The Qt WebEngine Process renders web pages and executes JavaScript.
-
- Chromium is tightly integrated to the \l{Qt Quick Scene Graph}{Qt Quick scene graph}, which is
- based on OpenGL ES 2.0 or OpenGL 2.0 for its rendering. This provides you with one-pass
- compositing of web content and all the Qt Quick UI. The integration to Chromium is transparent
- to developers, who just work with Qt and JavaScript.
-
- The document object model (DOM) of a page is constructed when the document is ready, typically
- when the page is completely loaded. Therefore, executing scripts as soon as a document is
- created is not suitable for DOM operations, where one has to wait until the DOM is ready.
-
- In addition, an injected script shares the same \e world as the other scripts executed on the
- page, which might lead to conflicts. To avoid this, the QWebEngineScript class and the
- WebEngineScript QML type provide implementations of the Chromium API for
- \e{Content Script Extensions}. They specify the
- script to run, the injection point, and the world where the script is run. This enables
- accessing the DOM to manipulate it within a world.
-
- \note Chromium extensions, such as \c @include, \c @match, and \c @exclude, are not supported.
-
- Because the render process is separated from the GUI process, they should ideally share an
- OpenGL context to enable one process to access the resources uploaded by the other, such as
- images or textures. However, some inter-process communication is needed for safety and
- reliability, because it enables restarting a crashed process.
+ The Qt WebEngine Process is a separate executable that is used to render web pages and
+ execute JavaScript. This mitigates security issues and isolates crashes caused by specific
+ content.
\section1 Embedding Web Content into Widget Based Applications
@@ -201,6 +165,24 @@
\skipto import
\printuntil /^\}/
+ \section1 Script Injection
+
+ Qt WebEngine does not allow direct access to the document object model (DOM) of a page.
+ However, the DOM can be inspected and adapted by injecting scripts.
+
+ The DOM of a page is constructed when the document is ready, typically
+ when the page is completely loaded. Therefore, executing scripts as soon as a document is
+ created is not suitable for DOM operations, where one has to wait until the DOM is ready.
+
+ In addition, an injected script shares the same \e world as the other scripts executed on the
+ page, which might lead to conflicts. To avoid this, the QWebEngineScript class and the
+ WebEngineScript QML type provide implementations of the Chromium API for
+ \e{Content Script Extensions}. They specify the
+ script to run, the injection point, and the world where the script is run. This enables
+ accessing the DOM to manipulate it within a world.
+
+ \note Chromium extensions, such as \c @include, \c @match, and \c @exclude, are not supported.
+
\section1 Managing Certificates
Qt WebEngine uses its own network stack, and therefore QSslConfiguration is not used to
@@ -238,15 +220,24 @@
The functions can be used to synchronize cookies with QNetworkAccessManager, as well as to set,
delete, and intercept cookies during navigation.
- \section1 Deploying Qt WebEngine Applications
+ \section1 Platform Notes
+
+ Qt WebEngine currently supports only Windows, Linux, and OS X. Due to Chromium build
+ requirements it also often requires a newer compiler than the rest of Qt. See
+ \l{Qt WebEngine Platform Notes} for further details.
+
+ \section1 Related Modules
- Qt WebEngine takes advantage of the multi process model that the Chromium project offers.
- The multi process model requires the QtWebEngineProcess executable to be deployed alongside your application.
- To do this, we recommend the use of Qt's cross-platform deployment tools.
+ Qt WebEngine supersedes the \l{http://doc.qt.io/archives/qt-5.3/qtwebkit-index.html}{Qt WebKit}
+ module, which is based on the
+ WebKit project, but has not been actively synchronized with the upstream WebKit code since
+ Qt 5.2 and has been deprecated in Qt 5.5. For tips on how to change a Qt WebKit widgets
+ application to use Qt WebEngine widgets, see \l{Porting from Qt WebKit to Qt WebEngine}.
- Alternatively, if you are carrying out manual deployment, you will find the QtWebEngineProcess executable in the
- libexec directory of your Qt installation.
- On Windows, QtWebEngineProcess.exe is located in the bin directory of your Qt application.
+ The \l{Qt WebView} module allows to use a native web browser on platforms where one is
+ available.
+
+ The \l{Qt WebChannel} module can be used to create a bi-directional communication channel
+ between QObject objects on the C++ side and JavaScript on the QML side.
- For more information on deploying Qt applications, please see \l {Deploying Qt Applications}.
*/
diff --git a/src/webengine/doc/src/qtwebengine-platform-notes.qdoc b/src/webengine/doc/src/qtwebengine-platform-notes.qdoc
index 286d849c0..b66e7874d 100644
--- a/src/webengine/doc/src/qtwebengine-platform-notes.qdoc
+++ b/src/webengine/doc/src/qtwebengine-platform-notes.qdoc
@@ -114,7 +114,13 @@
\section2 OS X
- On OS X, Xcode version 6.3 or later on OS X 10.10 or later is required.
+ On OS X, the following are required:
+
+ \list
+ \li OS X 10.10 or later
+ \li Xcode 6.3 or later
+ \li OS X 10.10 SDK or later
+ \endlist
\note Qt WebEngine cannot be built for the 32-bit mode of OS X (using the
\c macx-clang-32 \c mkspec).
diff --git a/src/webengine/doc/src/qtwebengine-qmlmodule.qdoc b/src/webengine/doc/src/qtwebengine-qmlmodule.qdoc
index c749b468b..9d22d3f36 100644
--- a/src/webengine/doc/src/qtwebengine-qmlmodule.qdoc
+++ b/src/webengine/doc/src/qtwebengine-qmlmodule.qdoc
@@ -27,7 +27,7 @@
\qmlmodule QtWebEngine 1.4
\title Qt WebEngine QML Types
\brief Provides QML types for rendering web content within a QML application
- \ingroup qtwebengine-qmlmodules
+ \ingroup qtwebengine-modules
The QML types can be imported into your application using the following import statements in
your .qml file:
diff --git a/src/webengine/doc/src/webengineview.qdoc b/src/webengine/doc/src/webengineview.qdoc
index 83eadd563..6fd9ba45b 100644
--- a/src/webengine/doc/src/webengineview.qdoc
+++ b/src/webengine/doc/src/webengineview.qdoc
@@ -504,10 +504,9 @@
*/
/*!
- \qmlsignal WebEngineView::loadingChanged(loadRequest)
+ \qmlsignal WebEngineView::loadingChanged(WebEngineLoadRequest loadRequest)
This signal is emitted when a page load begins, ends, or fails.
- The corresponding handler is \c onLoadingChanged.
When handling the signal with \c onLoadingChanged, various read-only
parameters are available on the \a loadRequest:
@@ -537,33 +536,27 @@
*/
/*!
- \qmlsignal WebEngineView::certificateError(error)
+ \qmlsignal WebEngineView::certificateError(WebEngineCertificateError error)
\since QtWebEngine 1.1
This signal is emitted when an invalid certificate error is raised while loading a given request.
The certificate error can be handled by using the methods of the WebEngineCertificateError
type.
-
- The corresponding handler is \c onCertificateError.
-
- \sa WebEngineCertificateError
*/
/*!
- \qmlsignal WebEngineView::linkHovered(hoveredUrl)
+ \qmlsignal WebEngineView::linkHovered(url 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.
-
- The corresponding handler is \c onLinkHovered.
*/
/*!
- \qmlsignal WebEngineView::javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, message, lineNumber, sourceID)
+ \qmlsignal WebEngineView::javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, string message, int lineNumber, string sourceID)
This signal is emitted when a JavaScript program tries to print a \a message to the web browser's console.
For example, in case of evaluation errors the source URL may be provided in \a sourceID as well
@@ -572,14 +565,14 @@
\a level indicates the severity of the event that triggered the message, that is, whether it
was triggered by an error or a less severe event.
- The corresponding handler is \c onJavaScriptConsoleMessage. If no handler is specified,
- the view will log the messages into a \c js \l{QLoggingCategory}{logging category}.
+ If no handler is specified, the view will log the messages into a \c js
+ \l{QLoggingCategory}{logging category}.
\sa{Console Logging}
*/
/*!
- \qmlsignal WebEngineView::newViewRequested(request)
+ \qmlsignal WebEngineView::newViewRequested(WebEngineViewRequest request)
\since QtWebEngine 1.1
This signal is emitted when a page load is requested to happen in a separate
@@ -594,9 +587,7 @@
\snippet snippets/qtwebengine_webengineview_newviewrequested.qml 0
- The corresponding handler is \c onNewViewRequested.
-
- \sa WebEngineNewViewRequest, NewViewDestination, {WebEngine Quick Nano Browser}
+ \sa NewViewDestination, {WebEngine Quick Nano Browser}
*/
/*!
@@ -606,13 +597,11 @@
This signal is emitted when the web page requests fullscreen mode through the
JavaScript API.
- The corresponding handler is \c onFullScreenRequested.
-
- \sa WebEngineFullScreenRequest, isFullScreen
+ \sa isFullScreen
*/
/*!
- \qmlsignal WebEngineView::activeFocusOnPressChanged(bool)
+ \qmlsignal WebEngineView::activeFocusOnPressChanged(bool activeFocusOnPress)
\since QtWebEngine 1.2
This signal is emitted when the ability of the web engine view to get focus when clicked
@@ -646,8 +635,6 @@
This signal is emitted whenever the page requests the web browser window to be closed,
for example through the JavaScript \c{window.close()} call.
-
- The corresponding handler is \c onWindowCloseRequested.
*/
/*!
@@ -799,7 +786,9 @@
\value ToggleMediaMute
Mute or unmute the hovered audio or video element. (Added in Qt 5.6)
\value DownloadLinkToDisk
- Download the current link to the disk. (Added in Qt 5.6)
+ Download the current link to the disk. To implement download
+ actions, connect to the QWebEngineProfile::downloadRequested signal.
+ (Added in Qt 5.6)
\value DownloadImageToDisk
Download the highlighted image to the disk. (Added in Qt 5.6)
\value DownloadMediaToDisk
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 3b86e623e..c04e20a5e 100644
--- a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp
+++ b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp
@@ -237,6 +237,18 @@ void RenderWidgetHostViewQtDelegateQuick::inputMethodStateChanged(bool editorVis
}
+bool RenderWidgetHostViewQtDelegateQuick::event(QEvent *event)
+{
+ if (event->type() == QEvent::ShortcutOverride) {
+ if (editorActionForKeyEvent(static_cast<QKeyEvent*>(event)) != QQuickWebEngineView::NoWebAction) {
+ event->accept();
+ return true;
+ }
+ }
+
+ return QQuickItem::event(event);
+}
+
void RenderWidgetHostViewQtDelegateQuick::focusInEvent(QFocusEvent *event)
{
m_client->forwardEvent(event);
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 2267a131b..de3aff291 100644
--- a/src/webengine/render_widget_host_view_qt_delegate_quick.h
+++ b/src/webengine/render_widget_host_view_qt_delegate_quick.h
@@ -78,6 +78,7 @@ public:
virtual void setClearColor(const QColor &) Q_DECL_OVERRIDE { }
protected:
+ virtual bool event(QEvent *event) Q_DECL_OVERRIDE;
virtual void focusInEvent(QFocusEvent *event) Q_DECL_OVERRIDE;
virtual void focusOutEvent(QFocusEvent *event) Q_DECL_OVERRIDE;
virtual void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;