summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-11-20 16:01:37 +0100
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-11-20 16:04:42 +0100
commit1f474fcc4cd47a85ce8d99f07d18b46ef2af5898 (patch)
treed4e52b5ac98343b4c2417d622164bf320d781a59 /src/webenginewidgets
parent4cc28c7c89f794d469f5e8f778ff05effe8c646f (diff)
parent1173d48149a8133b607894b67e1ec32de68e21e8 (diff)
Merge branch '5.6' into dev
Diffstat (limited to 'src/webenginewidgets')
-rw-r--r--src/webenginewidgets/api/qwebenginedownloaditem.h2
-rw-r--r--src/webenginewidgets/api/qwebenginefullscreenrequest.cpp22
-rw-r--r--src/webenginewidgets/api/qwebenginefullscreenrequest.h15
-rw-r--r--src/webenginewidgets/api/qwebenginehistory.h4
-rw-r--r--src/webenginewidgets/api/qwebenginepage.cpp48
-rw-r--r--src/webenginewidgets/api/qwebenginepage.h3
-rw-r--r--src/webenginewidgets/api/qwebenginepage_p.h3
-rw-r--r--src/webenginewidgets/api/qwebengineprofile.cpp8
-rw-r--r--src/webenginewidgets/api/qwebenginescript.cpp3
-rw-r--r--src/webenginewidgets/api/qwebenginescript.h2
-rw-r--r--src/webenginewidgets/api/qwebenginescriptcollection.cpp5
-rw-r--r--src/webenginewidgets/api/qwebengineview.cpp18
-rw-r--r--src/webenginewidgets/api/qwebengineview.h2
-rw-r--r--src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc5
-rw-r--r--src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp9
-rw-r--r--src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h1
16 files changed, 117 insertions, 33 deletions
diff --git a/src/webenginewidgets/api/qwebenginedownloaditem.h b/src/webenginewidgets/api/qwebenginedownloaditem.h
index 05e0f8765..38b9a4ad8 100644
--- a/src/webenginewidgets/api/qwebenginedownloaditem.h
+++ b/src/webenginewidgets/api/qwebenginedownloaditem.h
@@ -59,7 +59,7 @@ public:
DownloadCancelled,
DownloadInterrupted
};
- Q_ENUMS(DownloadState)
+ Q_ENUM(DownloadState)
quint32 id() const;
DownloadState state() const;
diff --git a/src/webenginewidgets/api/qwebenginefullscreenrequest.cpp b/src/webenginewidgets/api/qwebenginefullscreenrequest.cpp
index 6223c070d..7db86e6f2 100644
--- a/src/webenginewidgets/api/qwebenginefullscreenrequest.cpp
+++ b/src/webenginewidgets/api/qwebenginefullscreenrequest.cpp
@@ -39,21 +39,31 @@
QT_BEGIN_NAMESPACE
-QWebEngineFullScreenRequest::QWebEngineFullScreenRequest(QWebEnginePagePrivate *pagePrivate, const QUrl &origin, bool fullscreen)
- : m_pagePrivate(pagePrivate)
+QWebEngineFullScreenRequest::QWebEngineFullScreenRequest(QWebEnginePage *page, const QUrl &origin, bool fullscreen)
+ : m_page(page)
, m_origin(origin)
, m_toggleOn(fullscreen)
{
}
-void QWebEngineFullScreenRequest::reject() const
+void QWebEngineFullScreenRequest::reject()
{
- m_pagePrivate->setFullScreenMode(!m_toggleOn);
+ if (!m_page) {
+ qWarning("Cannot reject QWebEngineFullScreenRequest: Originating page is already deleted");
+ return;
+ }
+
+ m_page->d_func()->setFullScreenMode(!m_toggleOn);
}
-void QWebEngineFullScreenRequest::accept() const
+void QWebEngineFullScreenRequest::accept()
{
- m_pagePrivate->setFullScreenMode(m_toggleOn);
+ if (!m_page) {
+ qWarning("Cannot accept QWebEngineFullScreenRequest: Originating page is already deleted");
+ return;
+ }
+
+ m_page->d_func()->setFullScreenMode(m_toggleOn);
}
QT_END_NAMESPACE
diff --git a/src/webenginewidgets/api/qwebenginefullscreenrequest.h b/src/webenginewidgets/api/qwebenginefullscreenrequest.h
index c6768f4d6..26f7247e0 100644
--- a/src/webenginewidgets/api/qwebenginefullscreenrequest.h
+++ b/src/webenginewidgets/api/qwebenginefullscreenrequest.h
@@ -38,26 +38,25 @@
#define QWEBENGINEFULLSCREENREQUEST_H
#include <qtwebenginewidgetsglobal.h>
-#include <qwebenginepage.h>
-#include <QtCore/qurl.h>
+#include <qurl.h>
+#include <qpointer.h>
QT_BEGIN_NAMESPACE
-class QWebEnginePagePrivate;
+class QWebEnginePage;
class QWEBENGINEWIDGETS_EXPORT QWebEngineFullScreenRequest {
Q_GADGET
Q_PROPERTY(bool toggleOn READ toggleOn)
Q_PROPERTY(QUrl origin READ origin)
public:
- Q_INVOKABLE void reject() const;
- Q_INVOKABLE void accept() const;
+ Q_INVOKABLE void reject();
+ Q_INVOKABLE void accept();
bool toggleOn() const { return m_toggleOn; }
const QUrl &origin() const { return m_origin; }
private:
- Q_DISABLE_COPY(QWebEngineFullScreenRequest)
- QWebEngineFullScreenRequest(QWebEnginePagePrivate *pagePrivate, const QUrl &origin, bool toggleOn);
- QWebEnginePagePrivate *m_pagePrivate;
+ QWebEngineFullScreenRequest(QWebEnginePage *page, const QUrl &origin, bool toggleOn);
+ QPointer<QWebEnginePage> m_page;
const QUrl m_origin;
const bool m_toggleOn;
friend class QWebEnginePagePrivate;
diff --git a/src/webenginewidgets/api/qwebenginehistory.h b/src/webenginewidgets/api/qwebenginehistory.h
index 0471e28e6..3dcea9469 100644
--- a/src/webenginewidgets/api/qwebenginehistory.h
+++ b/src/webenginewidgets/api/qwebenginehistory.h
@@ -65,6 +65,9 @@ public:
QUrl iconUrl() const;
bool isValid() const;
+
+ void swap(QWebEngineHistoryItem &other) Q_DECL_NOTHROW { qSwap(d, other.d); }
+
private:
QWebEngineHistoryItem(QWebEngineHistoryItemPrivate *priv);
Q_DECLARE_PRIVATE_D(d.data(), QWebEngineHistoryItem)
@@ -73,6 +76,7 @@ private:
friend class QWebEngineHistoryPrivate;
};
+Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QWebEngineHistoryItem)
class QWebEngineHistoryPrivate;
class QWEBENGINEWIDGETS_EXPORT QWebEngineHistory {
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
index dd71db6a0..e85021832 100644
--- a/src/webenginewidgets/api/qwebenginepage.cpp
+++ b/src/webenginewidgets/api/qwebenginepage.cpp
@@ -55,6 +55,7 @@
#include <QIcon>
#include <QInputDialog>
#include <QLayout>
+#include <QLoggingCategory>
#include <QMenu>
#include <QMessageBox>
#include <QMimeData>
@@ -431,7 +432,7 @@ QWebEnginePage::QWebEnginePage(QObject* parent)
*/
/*!
- \fn QWebEnginePage::fullScreenRequested(const QWebEngineFullScreenRequest &request)
+ \fn QWebEnginePage::fullScreenRequested(QWebEngineFullScreenRequest request)
This signal is emitted when the web page issues the request to enter fullscreen mode for
a web-element, usually a video element.
@@ -877,9 +878,19 @@ bool QWebEnginePage::event(QEvent *e)
return QObject::event(e);
}
+void QWebEnginePagePrivate::wasShown()
+{
+ adapter->wasShown();
+}
+
+void QWebEnginePagePrivate::wasHidden()
+{
+ adapter->wasHidden();
+}
+
bool QWebEnginePagePrivate::contextMenuRequested(const WebEngineContextMenuData &data)
{
- if (!view)
+ if (!view || !view->d_func()->m_pendingContextMenuEvent)
return false;
m_menuData = WebEngineContextMenuData();
@@ -905,7 +916,6 @@ bool QWebEnginePagePrivate::contextMenuRequested(const WebEngineContextMenuData
return false;
break;
}
- Q_ASSERT(view->d_func()->m_pendingContextMenuEvent);
view->d_func()->m_pendingContextMenuEvent = false;
return true;
}
@@ -920,7 +930,7 @@ void QWebEnginePagePrivate::navigationRequested(int navigationType, const QUrl &
void QWebEnginePagePrivate::requestFullScreenMode(const QUrl &origin, bool fullscreen)
{
Q_Q(QWebEnginePage);
- QWebEngineFullScreenRequest request(this, origin, fullscreen);
+ QWebEngineFullScreenRequest request(q, origin, fullscreen);
Q_EMIT q->fullScreenRequested(request);
}
@@ -1230,8 +1240,12 @@ void QWebEnginePage::runJavaScript(const QString& scriptSource, const QWebEngine
}
/*!
- Returns the script collection used by this page.
- \sa QWebEngineScriptCollection
+ Returns the collection of scripts that are injected into the page.
+
+ In addition, a page might also execute scripts
+ added through QWebEngineProfile::scripts().
+
+ \sa QWebEngineScriptCollection, QWebEngineScript
*/
QWebEngineScriptCollection &QWebEnginePage::scripts()
@@ -1309,10 +1323,24 @@ bool QWebEnginePage::javaScriptPrompt(const QUrl &securityOrigin, const QString
void QWebEnginePage::javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID)
{
- Q_UNUSED(level);
- Q_UNUSED(message);
- Q_UNUSED(lineNumber);
- Q_UNUSED(sourceID);
+ static QLoggingCategory loggingCategory("js", QtWarningMsg);
+ static QByteArray file = sourceID.toUtf8();
+ QMessageLogger logger(file.constData(), lineNumber, nullptr, loggingCategory.categoryName());
+
+ switch (level) {
+ case JavaScriptConsoleMessageLevel::InfoMessageLevel:
+ if (loggingCategory.isInfoEnabled())
+ logger.info().noquote() << message;
+ break;
+ case JavaScriptConsoleMessageLevel::WarningMessageLevel:
+ if (loggingCategory.isWarningEnabled())
+ logger.warning().noquote() << message;
+ break;
+ case JavaScriptConsoleMessageLevel::ErrorMessageLevel:
+ if (loggingCategory.isCriticalEnabled())
+ logger.critical().noquote() << message;
+ break;
+ }
}
bool QWebEnginePage::certificateError(const QWebEngineCertificateError &)
diff --git a/src/webenginewidgets/api/qwebenginepage.h b/src/webenginewidgets/api/qwebenginepage.h
index 9740c89c9..69f8822b1 100644
--- a/src/webenginewidgets/api/qwebenginepage.h
+++ b/src/webenginewidgets/api/qwebenginepage.h
@@ -258,7 +258,7 @@ Q_SIGNALS:
void featurePermissionRequested(const QUrl &securityOrigin, QWebEnginePage::Feature feature);
void featurePermissionRequestCanceled(const QUrl &securityOrigin, QWebEnginePage::Feature feature);
- void fullScreenRequested(const QWebEngineFullScreenRequest &fullScreenRequest);
+ void fullScreenRequested(QWebEngineFullScreenRequest fullScreenRequest);
void authenticationRequired(const QUrl &requestUrl, QAuthenticator *authenticator);
void proxyAuthenticationRequired(const QUrl &requestUrl, QAuthenticator *authenticator, const QString &proxyHost);
@@ -292,6 +292,7 @@ private:
Q_PRIVATE_SLOT(d_func(), void _q_webActionTriggered(bool checked))
#endif
+ friend class QWebEngineFullScreenRequest;
friend class QWebEngineView;
friend class QWebEngineViewPrivate;
#ifndef QT_NO_ACCESSIBILITY
diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h
index 66a2cf35b..dd43b08c8 100644
--- a/src/webenginewidgets/api/qwebenginepage_p.h
+++ b/src/webenginewidgets/api/qwebenginepage_p.h
@@ -131,6 +131,9 @@ public:
void updateNavigationActions();
void _q_webActionTriggered(bool checked);
+ void wasShown();
+ void wasHidden();
+
QtWebEngineCore::WebContentsAdapter *webContents() { return adapter.data(); }
void recreateFromSerializedHistory(QDataStream &input);
diff --git a/src/webenginewidgets/api/qwebengineprofile.cpp b/src/webenginewidgets/api/qwebengineprofile.cpp
index 2edebdfeb..5fbc4d63c 100644
--- a/src/webenginewidgets/api/qwebengineprofile.cpp
+++ b/src/webenginewidgets/api/qwebengineprofile.cpp
@@ -199,7 +199,7 @@ void QWebEngineProfilePrivate::downloadUpdated(const DownloadItemInfo &info)
*/
QWebEngineProfile::QWebEngineProfile(QObject *parent)
: QObject(parent)
- , d_ptr(new QWebEngineProfilePrivate(new BrowserContextAdapter(false)))
+ , d_ptr(new QWebEngineProfilePrivate(new BrowserContextAdapter(true)))
{
d_ptr->q_ptr = this;
}
@@ -490,8 +490,10 @@ bool QWebEngineProfile::visitedLinksContainsUrl(const QUrl &url) const
}
/*!
- Returns the script collection used by this profile.
- \sa QWebEngineScriptCollection
+ Returns the collection of scripts that are injected into all pages that share
+ this profile.
+
+ \sa QWebEngineScriptCollection, QWebEngineScript, QWebEnginePage::scripts()
*/
QWebEngineScriptCollection *QWebEngineProfile::scripts() const
{
diff --git a/src/webenginewidgets/api/qwebenginescript.cpp b/src/webenginewidgets/api/qwebenginescript.cpp
index 1bd56604d..058f58475 100644
--- a/src/webenginewidgets/api/qwebenginescript.cpp
+++ b/src/webenginewidgets/api/qwebenginescript.cpp
@@ -58,6 +58,9 @@ using QtWebEngineCore::UserScript;
not accessible from a different one. ScriptWorldId provides some predefined IDs for this
purpose.
+ Use QWebEnginePage::scripts() and QWebEngineProfile::scripts() to access
+ the collection of scripts associated with a single page or a
+ number of pages sharing the same profile.
*/
/*!
\enum QWebEngineScript::InjectionPoint
diff --git a/src/webenginewidgets/api/qwebenginescript.h b/src/webenginewidgets/api/qwebenginescript.h
index 4cff2631d..29126b110 100644
--- a/src/webenginewidgets/api/qwebenginescript.h
+++ b/src/webenginewidgets/api/qwebenginescript.h
@@ -99,7 +99,7 @@ private:
QSharedDataPointer<QtWebEngineCore::UserScript> d;
};
-Q_DECLARE_SHARED(QWebEngineScript)
+Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QWebEngineScript)
#ifndef QT_NO_DEBUG_STREAM
QWEBENGINEWIDGETS_EXPORT QDebug operator<<(QDebug, const QWebEngineScript &);
diff --git a/src/webenginewidgets/api/qwebenginescriptcollection.cpp b/src/webenginewidgets/api/qwebenginescriptcollection.cpp
index 80a7f9b6e..9967cde85 100644
--- a/src/webenginewidgets/api/qwebenginescriptcollection.cpp
+++ b/src/webenginewidgets/api/qwebenginescriptcollection.cpp
@@ -47,6 +47,11 @@ using QtWebEngineCore::UserScript;
\since 5.5
\brief The QWebEngineScriptCollection class represents a collection of user scripts.
+ QWebEngineScriptCollection manages a set of user scripts.
+
+ Use QWebEnginePage::scripts() and QWebEngineProfile::scripts() to access
+ the collection of scripts associated with a single page or a
+ number of pages sharing the same profile.
*/
/*!
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp
index 9baa8e34a..362849732 100644
--- a/src/webenginewidgets/api/qwebengineview.cpp
+++ b/src/webenginewidgets/api/qwebengineview.cpp
@@ -294,6 +294,24 @@ void QWebEngineView::contextMenuEvent(QContextMenuEvent *event)
menu->popup(event->globalPos());
}
+/*!
+ * \reimp
+ */
+void QWebEngineView::showEvent(QShowEvent *event)
+{
+ QWidget::showEvent(event);
+ page()->d_ptr->wasShown();
+}
+
+/*!
+ * \reimp
+ */
+void QWebEngineView::hideEvent(QHideEvent *event)
+{
+ QWidget::hideEvent(event);
+ page()->d_ptr->wasHidden();
+}
+
#ifndef QT_NO_ACCESSIBILITY
int QWebEngineViewAccessible::childCount() const
{
diff --git a/src/webenginewidgets/api/qwebengineview.h b/src/webenginewidgets/api/qwebengineview.h
index ae38e6c5c..e16bbf4af 100644
--- a/src/webenginewidgets/api/qwebengineview.h
+++ b/src/webenginewidgets/api/qwebengineview.h
@@ -120,6 +120,8 @@ protected:
virtual QWebEngineView *createWindow(QWebEnginePage::WebWindowType type);
virtual void contextMenuEvent(QContextMenuEvent*) Q_DECL_OVERRIDE;
virtual bool event(QEvent*) Q_DECL_OVERRIDE;
+ virtual void showEvent(QShowEvent *) Q_DECL_OVERRIDE;
+ virtual void hideEvent(QHideEvent *) Q_DECL_OVERRIDE;
private:
Q_DISABLE_COPY(QWebEngineView)
diff --git a/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc b/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc
index b7b3bf022..17dd15630 100644
--- a/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc
+++ b/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc
@@ -262,7 +262,10 @@
\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 default implementation prints nothing.
+ Since Qt 5.6, the default implementation logs the messages in a \c js
+ \l{QLoggingCategory}{logging category}.
+
+ \sa{Console Logging}
*/
/*!
diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
index 76ca8d354..57631c4cc 100644
--- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
@@ -139,14 +139,12 @@ void RenderWidgetHostViewQtDelegateWidget::show()
// want to show anything else than popups as top-level.
if (parent() || m_isPopup) {
QOpenGLWidget::show();
- m_client->notifyShown();
}
}
void RenderWidgetHostViewQtDelegateWidget::hide()
{
QOpenGLWidget::hide();
- m_client->notifyHidden();
}
bool RenderWidgetHostViewQtDelegateWidget::isVisible() const
@@ -257,6 +255,13 @@ void RenderWidgetHostViewQtDelegateWidget::showEvent(QShowEvent *event)
m_windowConnections.append(connect(w, SIGNAL(yChanged(int)), SLOT(onWindowPosChanged())));
}
m_client->windowChanged();
+ m_client->notifyShown();
+}
+
+void RenderWidgetHostViewQtDelegateWidget::hideEvent(QHideEvent *event)
+{
+ QOpenGLWidget::hideEvent(event);
+ m_client->notifyHidden();
}
bool RenderWidgetHostViewQtDelegateWidget::event(QEvent *event)
diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h
index d228bd487..fddc79c2f 100644
--- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h
+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h
@@ -84,6 +84,7 @@ protected:
bool event(QEvent *event) Q_DECL_OVERRIDE;
void resizeEvent(QResizeEvent *resizeEvent) Q_DECL_OVERRIDE;
void showEvent(QShowEvent *) Q_DECL_OVERRIDE;
+ void hideEvent(QHideEvent *) Q_DECL_OVERRIDE;
void initializeGL() Q_DECL_OVERRIDE;
void paintGL() Q_DECL_OVERRIDE;