summaryrefslogtreecommitdiffstats
path: root/src/core
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/core
parent4cc28c7c89f794d469f5e8f778ff05effe8c646f (diff)
parent1173d48149a8133b607894b67e1ec32de68e21e8 (diff)
Merge branch '5.6' into dev
Diffstat (limited to 'src/core')
-rw-r--r--src/core/api/qwebenginecallback.h7
-rw-r--r--src/core/api/qwebenginecallback_p.h6
-rw-r--r--src/core/api/qwebenginecookiestoreclient.cpp4
-rw-r--r--src/core/api/qwebenginecookiestoreclient.h2
-rw-r--r--src/core/api/qwebenginecookiestoreclient_p.h11
-rw-r--r--src/core/api/qwebengineurlschemehandler.cpp1
-rw-r--r--src/core/api/qwebengineurlschemehandler.h3
-rw-r--r--src/core/chrome_qt.gyp14
-rw-r--r--src/core/common/qt_messages.h12
-rw-r--r--src/core/common/user_script_data.h6
-rw-r--r--src/core/config/linux.pri4
-rw-r--r--src/core/cookie_monster_delegate_qt.h1
-rw-r--r--src/core/core_gyp_generator.pro12
-rw-r--r--src/core/delegated_frame_node.cpp27
-rw-r--r--src/core/delegated_frame_node.h6
-rw-r--r--src/core/gl_context_qt.cpp8
-rw-r--r--src/core/location_provider_qt.cpp26
-rw-r--r--src/core/permission_manager_qt.cpp3
-rw-r--r--src/core/qtwebengine.gypi2
-rw-r--r--src/core/render_view_observer_host_qt.cpp (renamed from src/core/qt_render_view_observer_host.cpp)28
-rw-r--r--src/core/render_view_observer_host_qt.h (renamed from src/core/qt_render_view_observer_host.h)10
-rw-r--r--src/core/render_widget_host_view_qt.cpp17
-rw-r--r--src/core/renderer/content_renderer_client_qt.cpp11
-rw-r--r--src/core/renderer/content_renderer_client_qt.h5
-rw-r--r--src/core/renderer/render_frame_observer_qt.cpp (renamed from src/core/renderer/qt_render_frame_observer.cpp)8
-rw-r--r--src/core/renderer/render_frame_observer_qt.h (renamed from src/core/renderer/qt_render_frame_observer.h)14
-rw-r--r--src/core/renderer/render_view_observer_qt.cpp (renamed from src/core/renderer/qt_render_view_observer.cpp)38
-rw-r--r--src/core/renderer/render_view_observer_qt.h (renamed from src/core/renderer/qt_render_view_observer.h)20
-rw-r--r--src/core/resources/devtools_discovery_page.html106
-rw-r--r--src/core/stream_video_node.cpp39
-rw-r--r--src/core/stream_video_node.h19
-rw-r--r--src/core/web_contents_adapter.cpp4
-rw-r--r--src/core/web_contents_adapter_p.h4
-rw-r--r--src/core/web_contents_delegate_qt.cpp7
-rw-r--r--src/core/web_contents_delegate_qt.h4
-rw-r--r--src/core/web_engine_context.cpp2
-rw-r--r--src/core/web_engine_settings.cpp120
-rw-r--r--src/core/web_engine_settings.h4
-rw-r--r--src/core/yuv_video_node.cpp4
-rw-r--r--src/core/yuv_video_node.h14
40 files changed, 414 insertions, 219 deletions
diff --git a/src/core/api/qwebenginecallback.h b/src/core/api/qwebenginecallback.h
index ddee20d06..b675438f5 100644
--- a/src/core/api/qwebenginecallback.h
+++ b/src/core/api/qwebenginecallback.h
@@ -81,12 +81,19 @@ public:
: d(new QtWebEnginePrivate::QWebEngineCallbackPrivate<T, F>(f))
{ }
QWebEngineCallback() { }
+ void swap(QWebEngineCallback &other) Q_DECL_NOTHROW { qSwap(d, other.d); }
operator bool() const { return d; }
private:
friend class QtWebEngineCore::CallbackDirectory;
QExplicitlySharedDataPointer<QtWebEnginePrivate::QWebEngineCallbackPrivateBase<T> > d;
};
+Q_DECLARE_SHARED(QWebEngineCallback<int>)
+Q_DECLARE_SHARED(QWebEngineCallback<const QByteArray &>)
+Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QWebEngineCallback<bool>)
+Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QWebEngineCallback<const QString &>)
+Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QWebEngineCallback<const QVariant &>)
+
QT_END_NAMESPACE
#endif // QWEBENGINECALLBACK_H
diff --git a/src/core/api/qwebenginecallback_p.h b/src/core/api/qwebenginecallback_p.h
index f0c25fe9e..9bc9b9727 100644
--- a/src/core/api/qwebenginecallback_p.h
+++ b/src/core/api/qwebenginecallback_p.h
@@ -47,6 +47,7 @@
#include <QVariant>
#include <type_traits>
+// keep in sync with Q_DECLARE_SHARED... in qwebenginecallback.h
#define FOR_EACH_TYPE(F) \
F(bool) \
F(int) \
@@ -227,6 +228,11 @@ void CallbackDirectory::CallbackSharedDataPointer<T>::invokeEmpty()
parent->invokeEmptyInternal(callback);
}
+#define CHECK_RELOCATABLE(x) \
+ Q_STATIC_ASSERT((QTypeInfoQuery<QWebEngineCallback< x > >::isRelocatable));
+FOR_EACH_TYPE(CHECK_RELOCATABLE)
+#undef CHECK_RELOCATABLE
+
} // namespace QtWebEngineCore
#endif // QWEBENGINECALLBACK_P_H
diff --git a/src/core/api/qwebenginecookiestoreclient.cpp b/src/core/api/qwebenginecookiestoreclient.cpp
index 167b3f68c..bd43b871d 100644
--- a/src/core/api/qwebenginecookiestoreclient.cpp
+++ b/src/core/api/qwebenginecookiestoreclient.cpp
@@ -181,7 +181,7 @@ bool QWebEngineCookieStoreClientPrivate::canSetCookie(const QUrl &firstPartyUrl,
request.firstPartyUrl = firstPartyUrl;
request.cookieLine = cookieLine;
request.cookieSource = url;
- callbackDirectory.invokeDirectly<const QWebEngineCookieStoreClient::FilterRequest&>(filterCallback, request);
+ callbackDirectory.invokeDirectly<QWebEngineCookieStoreClient::FilterRequest&>(filterCallback, request);
return request.accepted;
}
return true;
@@ -394,7 +394,7 @@ void QWebEngineCookieStoreClient::deleteAllCookies()
\sa deleteAllCookiesWithCallback(), getAllCookies()
*/
-void QWebEngineCookieStoreClient::setCookieFilter(const QWebEngineCallback<const QWebEngineCookieStoreClient::FilterRequest&> &filter)
+void QWebEngineCookieStoreClient::setCookieFilter(const QWebEngineCallback<QWebEngineCookieStoreClient::FilterRequest&> &filter)
{
Q_D(QWebEngineCookieStoreClient);
d->filterCallback = filter;
diff --git a/src/core/api/qwebenginecookiestoreclient.h b/src/core/api/qwebenginecookiestoreclient.h
index 8bdb988e2..4664a8459 100644
--- a/src/core/api/qwebenginecookiestoreclient.h
+++ b/src/core/api/qwebenginecookiestoreclient.h
@@ -77,7 +77,7 @@ public:
void deleteSessionCookiesWithCallback(const QWebEngineCallback<int> &resultCallback);
void deleteAllCookiesWithCallback(const QWebEngineCallback<int> &resultCallback);
void getAllCookies(const QWebEngineCallback<const QByteArray&> &resultCallback);
- void setCookieFilter(const QWebEngineCallback<const FilterRequest&> &filterCallback);
+ void setCookieFilter(const QWebEngineCallback<FilterRequest&> &filterCallback);
#endif
void setCookie(const QNetworkCookie &cookie, const QUrl &origin = QUrl());
void deleteCookie(const QNetworkCookie &cookie, const QUrl &origin = QUrl());
diff --git a/src/core/api/qwebenginecookiestoreclient_p.h b/src/core/api/qwebenginecookiestoreclient_p.h
index 43652fba6..54f3b9eb7 100644
--- a/src/core/api/qwebenginecookiestoreclient_p.h
+++ b/src/core/api/qwebenginecookiestoreclient_p.h
@@ -53,8 +53,7 @@
#include "qwebenginecallback_p.h"
#include "qwebenginecookiestoreclient.h"
-#include <QList>
-#include <QMap>
+#include <QVector>
#include <QNetworkCookie>
#include <QUrl>
@@ -70,12 +69,12 @@ class QWEBENGINE_PRIVATE_EXPORT QWebEngineCookieStoreClientPrivate {
QNetworkCookie cookie;
QUrl origin;
};
-
+ friend class QTypeInfo<CookieData>;
public:
Q_DECLARE_PUBLIC(QWebEngineCookieStoreClient)
QtWebEngineCore::CallbackDirectory callbackDirectory;
- QWebEngineCallback<const QWebEngineCookieStoreClient::FilterRequest&> filterCallback;
- QList<CookieData> m_pendingUserCookies;
+ QWebEngineCallback<QWebEngineCookieStoreClient::FilterRequest&> filterCallback;
+ QVector<CookieData> m_pendingUserCookies;
quint64 m_nextCallbackId;
bool m_deleteSessionCookiesPending;
bool m_deleteAllCookiesPending;
@@ -102,6 +101,8 @@ public:
void onCookieChanged(const QNetworkCookie &cookie, bool removed);
};
+Q_DECLARE_TYPEINFO(QWebEngineCookieStoreClientPrivate::CookieData, Q_MOVABLE_TYPE);
+
QT_END_NAMESPACE
#endif // QWEBENGINECOOKIESTORECLIENT_P_H
diff --git a/src/core/api/qwebengineurlschemehandler.cpp b/src/core/api/qwebengineurlschemehandler.cpp
index f887e4e98..7f9ebaf48 100644
--- a/src/core/api/qwebengineurlschemehandler.cpp
+++ b/src/core/api/qwebengineurlschemehandler.cpp
@@ -75,7 +75,6 @@ QWebEngineUrlSchemeHandler::QWebEngineUrlSchemeHandler(QObject *parent)
QWebEngineUrlSchemeHandler::~QWebEngineUrlSchemeHandler()
{
Q_EMIT destroyed(this);
- delete d_ptr;
}
/*!
diff --git a/src/core/api/qwebengineurlschemehandler.h b/src/core/api/qwebengineurlschemehandler.h
index 8c1e52646..66aebe00d 100644
--- a/src/core/api/qwebengineurlschemehandler.h
+++ b/src/core/api/qwebengineurlschemehandler.h
@@ -48,7 +48,6 @@ class URLRequestContextGetterQt;
QT_BEGIN_NAMESPACE
class QWebEngineUrlRequestJob;
-class QWebEngineUrlSchemeHandlerPrivate;
class QWEBENGINE_EXPORT QWebEngineUrlSchemeHandler : public QObject {
Q_OBJECT
@@ -63,8 +62,6 @@ Q_SIGNALS:
private:
Q_DISABLE_COPY(QWebEngineUrlSchemeHandler)
- Q_DECLARE_PRIVATE(QWebEngineUrlSchemeHandler)
- QWebEngineUrlSchemeHandlerPrivate *d_ptr;
};
QT_END_NAMESPACE
diff --git a/src/core/chrome_qt.gyp b/src/core/chrome_qt.gyp
index 2d2abe802..6c8e0d4d6 100644
--- a/src/core/chrome_qt.gyp
+++ b/src/core/chrome_qt.gyp
@@ -20,13 +20,13 @@
'<(SHARED_INTERMEDIATE_DIR)/components/strings',
],
'sources': [
- '<(chromium_src_dir)/chrome/browser/media/desktop_streams_registry.cc',
- '<(chromium_src_dir)/chrome/browser/media/desktop_streams_registry.h',
- '<(chromium_src_dir)/chrome/browser/media/desktop_media_list.h',
- '<(chromium_src_dir)/chrome/common/chrome_switches.cc',
- '<(chromium_src_dir)/chrome/common/chrome_switches.h',
- '<(chromium_src_dir)/chrome/common/localized_error.cc',
- '<(chromium_src_dir)/chrome/common/localized_error.h',
+ '<(DEPTH)/chrome/browser/media/desktop_streams_registry.cc',
+ '<(DEPTH)/chrome/browser/media/desktop_streams_registry.h',
+ '<(DEPTH)/chrome/browser/media/desktop_media_list.h',
+ '<(DEPTH)/chrome/common/chrome_switches.cc',
+ '<(DEPTH)/chrome/common/chrome_switches.h',
+ '<(DEPTH)/chrome/common/localized_error.cc',
+ '<(DEPTH)/chrome/common/localized_error.h',
],
},
{
diff --git a/src/core/common/qt_messages.h b/src/core/common/qt_messages.h
index 25a995b27..ae36a0d7f 100644
--- a/src/core/common/qt_messages.h
+++ b/src/core/common/qt_messages.h
@@ -25,13 +25,13 @@ IPC_STRUCT_TRAITS_END()
// RenderView messages
// These are messages sent from the browser to the renderer process.
-IPC_MESSAGE_ROUTED1(QtRenderViewObserver_FetchDocumentMarkup,
+IPC_MESSAGE_ROUTED1(RenderViewObserverQt_FetchDocumentMarkup,
uint64 /* requestId */)
-IPC_MESSAGE_ROUTED1(QtRenderViewObserver_FetchDocumentInnerText,
+IPC_MESSAGE_ROUTED1(RenderViewObserverQt_FetchDocumentInnerText,
uint64 /* requestId */)
-IPC_MESSAGE_ROUTED1(QtRenderViewObserver_SetBackgroundColor,
+IPC_MESSAGE_ROUTED1(RenderViewObserverQt_SetBackgroundColor,
uint32 /* color */)
IPC_MESSAGE_ROUTED1(WebChannelIPCTransport_Message, std::vector<char> /*binaryJSON*/)
@@ -51,14 +51,14 @@ IPC_MESSAGE_CONTROL0(UserScriptController_ClearScripts)
// WebContents messages
// These are messages sent from the renderer back to the browser process.
-IPC_MESSAGE_ROUTED2(QtRenderViewObserverHost_DidFetchDocumentMarkup,
+IPC_MESSAGE_ROUTED2(RenderViewObserverHostQt_DidFetchDocumentMarkup,
uint64 /* requestId */,
base::string16 /* markup */)
-IPC_MESSAGE_ROUTED2(QtRenderViewObserverHost_DidFetchDocumentInnerText,
+IPC_MESSAGE_ROUTED2(RenderViewObserverHostQt_DidFetchDocumentInnerText,
uint64 /* requestId */,
base::string16 /* innerText */)
-IPC_MESSAGE_ROUTED0(QtRenderViewObserverHost_DidFirstVisuallyNonEmptyLayout)
+IPC_MESSAGE_ROUTED0(RenderViewObserverHostQt_DidFirstVisuallyNonEmptyLayout)
IPC_MESSAGE_ROUTED1(WebChannelIPCTransportHost_SendMessage, std::vector<char> /*binaryJSON*/)
diff --git a/src/core/common/user_script_data.h b/src/core/common/user_script_data.h
index 3dfec0ec3..d0856e02a 100644
--- a/src/core/common/user_script_data.h
+++ b/src/core/common/user_script_data.h
@@ -60,4 +60,10 @@ struct UserScriptData {
uint64 scriptId;
};
+QT_BEGIN_NAMESPACE
+
+Q_DECLARE_TYPEINFO(UserScriptData, Q_MOVABLE_TYPE);
+
+QT_END_NAMESPACE
+
#endif // USER_SCRIPT_DATA_H
diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri
index 85dfe69ae..c3398757e 100644
--- a/src/core/config/linux.pri
+++ b/src/core/config/linux.pri
@@ -27,9 +27,9 @@ GYP_CONFIG += \
contains(QT_CONFIG, system-zlib): use?(system_minizip): GYP_CONFIG += use_system_zlib=1
contains(QT_CONFIG, system-png): GYP_CONFIG += use_system_libpng=1
contains(QT_CONFIG, system-jpeg): GYP_CONFIG += use_system_libjpeg=1
+contains(QT_CONFIG, system-harfbuzz): GYP_CONFIG += use_system_harfbuzz=1
!contains(QT_CONFIG, pulseaudio): GYP_CONFIG += use_pulseaudio=0
-
-use?(system_harfbuzz): GYP_CONFIG += use_system_harfbuzz=1
+!contains(QT_CONFIG, glib): GYP_CONFIG += use_glib=0
use?(system_libevent): GYP_CONFIG += use_system_libevent=1
use?(system_libwebp): GYP_CONFIG += use_system_libwebp=1
use?(system_libsrtp): GYP_CONFIG += use_system_libsrtp=1
diff --git a/src/core/cookie_monster_delegate_qt.h b/src/core/cookie_monster_delegate_qt.h
index 7592d57fa..db80bf0a1 100644
--- a/src/core/cookie_monster_delegate_qt.h
+++ b/src/core/cookie_monster_delegate_qt.h
@@ -47,7 +47,6 @@ QT_WARNING_DISABLE_CLANG("-Wunused-parameter")
#include "net/cookies/cookie_monster.h"
QT_WARNING_POP
-#include <QList>
#include <QNetworkCookie>
#include <QPointer>
diff --git a/src/core/core_gyp_generator.pro b/src/core/core_gyp_generator.pro
index 813626dc3..14b8d78e2 100644
--- a/src/core/core_gyp_generator.pro
+++ b/src/core/core_gyp_generator.pro
@@ -62,15 +62,15 @@ SOURCES = \
process_main.cpp \
proxy_config_service_qt.cpp \
qrc_protocol_handler_qt.cpp \
- qt_render_view_observer_host.cpp \
+ render_view_observer_host_qt.cpp \
render_widget_host_view_qt.cpp \
renderer/content_renderer_client_qt.cpp \
renderer/pepper/pepper_flash_browser_host_qt.cpp \
renderer/pepper/pepper_flash_renderer_host_qt.cpp \
renderer/pepper/pepper_host_factory_qt.cpp \
renderer/pepper/pepper_renderer_host_factory_qt.cpp \
- renderer/qt_render_frame_observer.cpp \
- renderer/qt_render_view_observer.cpp \
+ renderer/render_frame_observer_qt.cpp \
+ renderer/render_view_observer_qt.cpp \
renderer/user_script_controller.cpp \
renderer/web_channel_ipc_transport.cpp \
resource_bundle_qt.cpp \
@@ -134,7 +134,7 @@ HEADERS = \
process_main.h \
proxy_config_service_qt.h \
qrc_protocol_handler_qt.h \
- qt_render_view_observer_host.h \
+ render_view_observer_host_qt.h \
render_widget_host_view_qt.h \
render_widget_host_view_qt_delegate.h \
renderer/content_renderer_client_qt.h \
@@ -142,8 +142,8 @@ HEADERS = \
renderer/pepper/pepper_flash_renderer_host_qt.h \
renderer/pepper/pepper_host_factory_qt.h \
renderer/pepper/pepper_renderer_host_factory_qt.h \
- renderer/qt_render_frame_observer.h \
- renderer/qt_render_view_observer.h \
+ renderer/render_frame_observer_qt.h \
+ renderer/render_view_observer_qt.h \
renderer/user_script_controller.h \
renderer/web_channel_ipc_transport.h \
resource_context_qt.h \
diff --git a/src/core/delegated_frame_node.cpp b/src/core/delegated_frame_node.cpp
index 724c2c9bc..a2836d5e6 100644
--- a/src/core/delegated_frame_node.cpp
+++ b/src/core/delegated_frame_node.cpp
@@ -56,6 +56,7 @@
#include "cc/output/delegated_frame_data.h"
#include "cc/quads/debug_border_draw_quad.h"
#include "cc/quads/draw_quad.h"
+#include "cc/quads/io_surface_draw_quad.h"
#include "cc/quads/render_pass_draw_quad.h"
#include "cc/quads/solid_color_draw_quad.h"
#include "cc/quads/stream_video_draw_quad.h"
@@ -79,6 +80,10 @@
#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull
#endif
+#ifndef GL_TEXTURE_RECTANGLE
+#define GL_TEXTURE_RECTANGLE 0x84F5
+#endif
+
namespace QtWebEngineCore {
class MailboxTexture : public QSGTexture, protected QOpenGLFunctions {
@@ -130,7 +135,7 @@ private:
QSGGeometry m_geometry;
};
-static inline QSharedPointer<QSGLayer> findRenderPassLayer(const cc::RenderPassId &id, const QList<QPair<cc::RenderPassId, QSharedPointer<QSGLayer> > > &list)
+static inline QSharedPointer<QSGLayer> findRenderPassLayer(const cc::RenderPassId &id, const QVector<QPair<cc::RenderPassId, QSharedPointer<QSGLayer> > > &list)
{
typedef QPair<cc::RenderPassId, QSharedPointer<QSGLayer> > Pair;
Q_FOREACH (const Pair &pair, list)
@@ -646,13 +651,29 @@ void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData,
MailboxTexture *texture = static_cast<MailboxTexture *>(initAndHoldTexture(resource, quad->ShouldDrawWithBlending()));
texture->setTarget(GL_TEXTURE_EXTERNAL_OES); // since this is not default TEXTURE_2D type
- StreamVideoNode *svideoNode = new StreamVideoNode(texture);
+ StreamVideoNode *svideoNode = new StreamVideoNode(texture, false, ExternalTarget);
svideoNode->setRect(toQt(squad->rect));
svideoNode->setTextureMatrix(toQt(squad->matrix.matrix()));
currentLayerChain->appendChildNode(svideoNode);
break;
#endif
- } default:
+ }
+ case cc::DrawQuad::IO_SURFACE_CONTENT: {
+ const cc::IOSurfaceDrawQuad *ioquad = cc::IOSurfaceDrawQuad::MaterialCast(quad);
+ ResourceHolder *resource = findAndHoldResource(ioquad->io_surface_resource_id(), resourceCandidates);
+ MailboxTexture *texture = static_cast<MailboxTexture *>(initAndHoldTexture(resource, quad->ShouldDrawWithBlending()));
+ texture->setTarget(GL_TEXTURE_RECTANGLE);
+
+ bool flip = ioquad->orientation != cc::IOSurfaceDrawQuad::FLIPPED;
+ StreamVideoNode *svideoNode = new StreamVideoNode(texture, flip, RectangleTarget);
+ QMatrix4x4 matrix;
+ matrix.scale(ioquad->io_surface_size.width(), ioquad->io_surface_size.height());
+ svideoNode->setRect(toQt(ioquad->rect));
+ svideoNode->setTextureMatrix(matrix);
+ currentLayerChain->appendChildNode(svideoNode);
+ break;
+ }
+ default:
qWarning("Unimplemented quad material: %d", quad->material);
}
}
diff --git a/src/core/delegated_frame_node.h b/src/core/delegated_frame_node.h
index 60a1535d2..eed03fadd 100644
--- a/src/core/delegated_frame_node.h
+++ b/src/core/delegated_frame_node.h
@@ -90,9 +90,9 @@ private:
QExplicitlySharedDataPointer<ChromiumCompositorData> m_chromiumCompositorData;
struct SGObjects {
- QList<QPair<cc::RenderPassId, QSharedPointer<QSGLayer> > > renderPassLayers;
- QList<QSharedPointer<QSGRootNode> > renderPassRootNodes;
- QList<QSharedPointer<QSGTexture> > textureStrongRefs;
+ QVector<QPair<cc::RenderPassId, QSharedPointer<QSGLayer> > > renderPassLayers;
+ QVector<QSharedPointer<QSGRootNode> > renderPassRootNodes;
+ QVector<QSharedPointer<QSGTexture> > textureStrongRefs;
} m_sgObjects;
int m_numPendingSyncPoints;
QMap<uint32, gfx::TransferableFence> m_mailboxGLFences;
diff --git a/src/core/gl_context_qt.cpp b/src/core/gl_context_qt.cpp
index b350c3c5b..3c3b8225d 100644
--- a/src/core/gl_context_qt.cpp
+++ b/src/core/gl_context_qt.cpp
@@ -146,10 +146,14 @@ scoped_refptr<GLContext> GLContext::CreateGLContext(GLShareGroup* share_group, G
{
#if defined(OS_WIN)
scoped_refptr<GLContext> context;
- if (GetGLImplementation() == kGLImplementationDesktopGL)
+ if (GetGLImplementation() == kGLImplementationDesktopGL) {
context = new GLContextWGL(share_group);
- else
+ if (!context->Initialize(compatible_surface, gpu_preference))
+ return nullptr;
+ return context;
+ } else {
context = new GLContextEGL(share_group);
+ }
#else
scoped_refptr<GLContext> context = new GLContextEGL(share_group);
#endif
diff --git a/src/core/location_provider_qt.cpp b/src/core/location_provider_qt.cpp
index e3be01b36..222d15354 100644
--- a/src/core/location_provider_qt.cpp
+++ b/src/core/location_provider_qt.cpp
@@ -88,12 +88,15 @@ QtPositioningHelper::~QtPositioningHelper()
m_locationProvider->m_positioningHelper = 0;
}
+static bool isHighAccuracySource(const QGeoPositionInfoSource *source)
+{
+ return source->supportedPositioningMethods().testFlag(
+ QGeoPositionInfoSource::SatellitePositioningMethods);
+}
+
void QtPositioningHelper::start(bool highAccuracy)
{
DCHECK_CURRENTLY_ON(BrowserThread::UI);
- Q_UNUSED(highAccuracy);
- // FIXME: go through availableSources until one supports QGeoPositionInfoSource::SatellitePositioningMethods
- // for the highAccuracy case.
m_positionInfoSource = QGeoPositionInfoSource::createDefaultSource(this);
if (!m_positionInfoSource) {
qWarning("Failed to initialize location provider: The system either has no default "
@@ -103,6 +106,23 @@ void QtPositioningHelper::start(bool highAccuracy)
return;
}
+ // Find high accuracy source if the default source is not already one.
+ if (highAccuracy && !isHighAccuracySource(m_positionInfoSource)) {
+ Q_FOREACH (const QString &name, QGeoPositionInfoSource::availableSources()) {
+ if (name == m_positionInfoSource->sourceName())
+ continue;
+ QGeoPositionInfoSource *source = QGeoPositionInfoSource::createSource(name, this);
+ if (source && isHighAccuracySource(source)) {
+ delete m_positionInfoSource;
+ m_positionInfoSource = source;
+ break;
+ }
+ delete source;
+ }
+ m_positionInfoSource->setPreferredPositioningMethods(
+ QGeoPositionInfoSource::SatellitePositioningMethods);
+ }
+
connect(m_positionInfoSource, &QGeoPositionInfoSource::positionUpdated, this, &QtPositioningHelper::updatePosition);
// disambiguate the error getter and the signal in QGeoPositionInfoSource.
connect(m_positionInfoSource, static_cast<void (QGeoPositionInfoSource::*)(QGeoPositionInfoSource::Error)>(&QGeoPositionInfoSource::error)
diff --git a/src/core/permission_manager_qt.cpp b/src/core/permission_manager_qt.cpp
index d93f9c331..19204b270 100644
--- a/src/core/permission_manager_qt.cpp
+++ b/src/core/permission_manager_qt.cpp
@@ -83,8 +83,7 @@ void PermissionManagerQt::permissionRequestReply(const QUrl &origin, BrowserCont
m_permissions[key] = reply;
content::PermissionStatus status = reply ? content::PERMISSION_STATUS_GRANTED : content::PERMISSION_STATUS_DENIED;
auto it = m_requests.begin();
- const auto end = m_requests.end();
- while (it != end) {
+ while (it != m_requests.end()) {
if (it->origin == origin && it->type == type) {
it->callback.Run(status);
it = m_requests.erase(it);
diff --git a/src/core/qtwebengine.gypi b/src/core/qtwebengine.gypi
index a420918a0..96b48e2ca 100644
--- a/src/core/qtwebengine.gypi
+++ b/src/core/qtwebengine.gypi
@@ -13,6 +13,8 @@
'<(chromium_src_dir)/components/components.gyp:error_page_renderer',
'<(chromium_src_dir)/components/components.gyp:visitedlink_browser',
'<(chromium_src_dir)/components/components.gyp:visitedlink_renderer',
+ '<(chromium_src_dir)/components/components.gyp:web_cache_browser',
+ '<(chromium_src_dir)/components/components.gyp:web_cache_renderer',
'<(chromium_src_dir)/content/content.gyp:content',
'<(chromium_src_dir)/content/content.gyp:content_app_browser',
'<(chromium_src_dir)/content/content.gyp:content_browser',
diff --git a/src/core/qt_render_view_observer_host.cpp b/src/core/render_view_observer_host_qt.cpp
index 97d001ed6..03c9d241f 100644
--- a/src/core/qt_render_view_observer_host.cpp
+++ b/src/core/render_view_observer_host_qt.cpp
@@ -34,7 +34,7 @@
**
****************************************************************************/
-#include "qt_render_view_observer_host.h"
+#include "render_view_observer_host_qt.h"
#include "common/qt_messages.h"
#include "content/public/browser/web_contents.h"
@@ -44,31 +44,31 @@
namespace QtWebEngineCore {
-QtRenderViewObserverHost::QtRenderViewObserverHost(content::WebContents *webContents, WebContentsAdapterClient *adapterClient)
+RenderViewObserverHostQt::RenderViewObserverHostQt(content::WebContents *webContents, WebContentsAdapterClient *adapterClient)
: content::WebContentsObserver(webContents)
, m_adapterClient(adapterClient)
{
}
-void QtRenderViewObserverHost::fetchDocumentMarkup(quint64 requestId)
+void RenderViewObserverHostQt::fetchDocumentMarkup(quint64 requestId)
{
- Send(new QtRenderViewObserver_FetchDocumentMarkup(routing_id(), requestId));
+ Send(new RenderViewObserverQt_FetchDocumentMarkup(routing_id(), requestId));
}
-void QtRenderViewObserverHost::fetchDocumentInnerText(quint64 requestId)
+void RenderViewObserverHostQt::fetchDocumentInnerText(quint64 requestId)
{
- Send(new QtRenderViewObserver_FetchDocumentInnerText(routing_id(), requestId));
+ Send(new RenderViewObserverQt_FetchDocumentInnerText(routing_id(), requestId));
}
-bool QtRenderViewObserverHost::OnMessageReceived(const IPC::Message& message)
+bool RenderViewObserverHostQt::OnMessageReceived(const IPC::Message& message)
{
bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(QtRenderViewObserverHost, message)
- IPC_MESSAGE_HANDLER(QtRenderViewObserverHost_DidFetchDocumentMarkup,
+ IPC_BEGIN_MESSAGE_MAP(RenderViewObserverHostQt, message)
+ IPC_MESSAGE_HANDLER(RenderViewObserverHostQt_DidFetchDocumentMarkup,
onDidFetchDocumentMarkup)
- IPC_MESSAGE_HANDLER(QtRenderViewObserverHost_DidFetchDocumentInnerText,
+ IPC_MESSAGE_HANDLER(RenderViewObserverHostQt_DidFetchDocumentInnerText,
onDidFetchDocumentInnerText)
- IPC_MESSAGE_HANDLER(QtRenderViewObserverHost_DidFirstVisuallyNonEmptyLayout,
+ IPC_MESSAGE_HANDLER(RenderViewObserverHostQt_DidFirstVisuallyNonEmptyLayout,
onDidFirstVisuallyNonEmptyLayout)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
@@ -76,17 +76,17 @@ bool QtRenderViewObserverHost::OnMessageReceived(const IPC::Message& message)
}
-void QtRenderViewObserverHost::onDidFetchDocumentMarkup(quint64 requestId, const base::string16& markup)
+void RenderViewObserverHostQt::onDidFetchDocumentMarkup(quint64 requestId, const base::string16& markup)
{
m_adapterClient->didFetchDocumentMarkup(requestId, toQt(markup));
}
-void QtRenderViewObserverHost::onDidFetchDocumentInnerText(quint64 requestId, const base::string16& innerText)
+void RenderViewObserverHostQt::onDidFetchDocumentInnerText(quint64 requestId, const base::string16& innerText)
{
m_adapterClient->didFetchDocumentInnerText(requestId, toQt(innerText));
}
-void QtRenderViewObserverHost::onDidFirstVisuallyNonEmptyLayout()
+void RenderViewObserverHostQt::onDidFirstVisuallyNonEmptyLayout()
{
RenderWidgetHostViewQt *rwhv = static_cast<RenderWidgetHostViewQt*>(web_contents()->GetRenderWidgetHostView());
if (rwhv)
diff --git a/src/core/qt_render_view_observer_host.h b/src/core/render_view_observer_host_qt.h
index 148fcb9da..2683e5807 100644
--- a/src/core/qt_render_view_observer_host.h
+++ b/src/core/render_view_observer_host_qt.h
@@ -34,8 +34,8 @@
**
****************************************************************************/
-#ifndef QT_RENDER_VIEW_OBSERVER_HOST_H
-#define QT_RENDER_VIEW_OBSERVER_HOST_H
+#ifndef RENDER_VIEW_OBSERVER_HOST_QT_H
+#define RENDER_VIEW_OBSERVER_HOST_QT_H
#include "content/public/browser/web_contents_observer.h"
@@ -49,10 +49,10 @@ namespace QtWebEngineCore {
class WebContentsAdapterClient;
-class QtRenderViewObserverHost : public content::WebContentsObserver
+class RenderViewObserverHostQt : public content::WebContentsObserver
{
public:
- QtRenderViewObserverHost(content::WebContents*, WebContentsAdapterClient *adapterClient);
+ RenderViewObserverHostQt(content::WebContents*, WebContentsAdapterClient *adapterClient);
void fetchDocumentMarkup(quint64 requestId);
void fetchDocumentInnerText(quint64 requestId);
@@ -67,4 +67,4 @@ private:
} // namespace QtWebEngineCore
-#endif // QT_RENDER_VIEW_OBSERVER_HOST_H
+#endif // RENDER_VIEW_OBSERVER_HOST_QT_H
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index 94b459e74..d2d292ee9 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -186,13 +186,14 @@ static inline int flagsFromModifiers(Qt::KeyboardModifiers modifiers)
static uint32 s_eventId = 0;
class MotionEventQt : public ui::MotionEvent {
public:
- MotionEventQt(const QList<QTouchEvent::TouchPoint> &touchPoints, const base::TimeTicks &eventTime, Action action, const Qt::KeyboardModifiers modifiers, int index = -1)
+ MotionEventQt(const QList<QTouchEvent::TouchPoint> &touchPoints, const base::TimeTicks &eventTime, Action action, const Qt::KeyboardModifiers modifiers, float dpiScale, int index = -1)
: touchPoints(touchPoints)
, eventTime(eventTime)
, action(action)
, eventId(++s_eventId)
, flags(flagsFromModifiers(modifiers))
, index(index)
+ , dpiScale(dpiScale)
{
// ACTION_DOWN and ACTION_UP must be accesssed through pointer_index 0
Q_ASSERT((action != ACTION_DOWN && action != ACTION_UP) || index == 0);
@@ -203,8 +204,8 @@ public:
virtual int GetActionIndex() const Q_DECL_OVERRIDE { return index; }
virtual size_t GetPointerCount() const Q_DECL_OVERRIDE { return touchPoints.size(); }
virtual int GetPointerId(size_t pointer_index) const Q_DECL_OVERRIDE { return touchPoints.at(pointer_index).id(); }
- virtual float GetX(size_t pointer_index) const Q_DECL_OVERRIDE { return touchPoints.at(pointer_index).pos().x(); }
- virtual float GetY(size_t pointer_index) const Q_DECL_OVERRIDE { return touchPoints.at(pointer_index).pos().y(); }
+ virtual float GetX(size_t pointer_index) const Q_DECL_OVERRIDE { return touchPoints.at(pointer_index).pos().x() / dpiScale; }
+ virtual float GetY(size_t pointer_index) const Q_DECL_OVERRIDE { return touchPoints.at(pointer_index).pos().y() / dpiScale; }
virtual float GetRawX(size_t pointer_index) const Q_DECL_OVERRIDE { return touchPoints.at(pointer_index).screenPos().x(); }
virtual float GetRawY(size_t pointer_index) const Q_DECL_OVERRIDE { return touchPoints.at(pointer_index).screenPos().y(); }
virtual float GetTouchMajor(size_t pointer_index) const Q_DECL_OVERRIDE
@@ -240,6 +241,7 @@ private:
const uint32 eventId;
int flags;
int index;
+ float dpiScale;
};
RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost* widget)
@@ -413,12 +415,13 @@ gfx::Rect RenderWidgetHostViewQt::GetViewBounds() const
return gfx::BoundingRect(p1, p2);
}
-void RenderWidgetHostViewQt::SetBackgroundColor(SkColor color) {
+void RenderWidgetHostViewQt::SetBackgroundColor(SkColor color)
+{
RenderWidgetHostViewBase::SetBackgroundColor(color);
// Set the background of the compositor if necessary
m_delegate->setClearColor(toQt(color));
// Set the background of the blink::FrameView
- m_host->Send(new QtRenderViewObserver_SetBackgroundColor(m_host->GetRoutingID(), color));
+ m_host->Send(new RenderViewObserverQt_SetBackgroundColor(m_host->GetRoutingID(), color));
}
// Return value indicates whether the mouse is locked successfully or not.
@@ -997,7 +1000,7 @@ void RenderWidgetHostViewQt::handleTouchEvent(QTouchEvent *ev)
QList<QTouchEvent::TouchPoint> touchPoints = mapTouchPointIds(ev->touchPoints());
if (ev->type() == QEvent::TouchCancel) {
- MotionEventQt cancelEvent(touchPoints, eventTimestamp, ui::MotionEvent::ACTION_CANCEL, ev->modifiers());
+ MotionEventQt cancelEvent(touchPoints, eventTimestamp, ui::MotionEvent::ACTION_CANCEL, ev->modifiers(), dpiScale());
processMotionEvent(cancelEvent);
return;
}
@@ -1030,7 +1033,7 @@ void RenderWidgetHostViewQt::handleTouchEvent(QTouchEvent *ev)
continue;
}
- MotionEventQt motionEvent(touchPoints, eventTimestamp, action, ev->modifiers(), i);
+ MotionEventQt motionEvent(touchPoints, eventTimestamp, action, ev->modifiers(), dpiScale(), i);
processMotionEvent(motionEvent);
}
}
diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp
index 0b8262c76..db50caad8 100644
--- a/src/core/renderer/content_renderer_client_qt.cpp
+++ b/src/core/renderer/content_renderer_client_qt.cpp
@@ -40,6 +40,7 @@
#include "chrome/common/localized_error.h"
#include "components/error_page/common/error_page_params.h"
#include "components/visitedlink/renderer/visitedlink_slave.h"
+#include "components/web_cache/renderer/web_cache_render_process_observer.h"
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_thread.h"
#include "content/public/renderer/render_view.h"
@@ -53,8 +54,8 @@
#include "content/public/common/web_preferences.h"
#include "renderer/web_channel_ipc_transport.h"
-#include "renderer/qt_render_frame_observer.h"
-#include "renderer/qt_render_view_observer.h"
+#include "renderer/render_frame_observer_qt.h"
+#include "renderer/render_view_observer_qt.h"
#include "renderer/user_script_controller.h"
#include "grit/renderer_resources.h"
@@ -77,7 +78,9 @@ void ContentRendererClientQt::RenderThreadStarted()
content::RenderThread *renderThread = content::RenderThread::Get();
renderThread->RegisterExtension(WebChannelIPCTransport::getV8Extension());
m_visitedLinkSlave.reset(new visitedlink::VisitedLinkSlave);
+ m_webCacheObserver.reset(new web_cache::WebCacheRenderProcessObserver());
renderThread->AddObserver(m_visitedLinkSlave.data());
+ renderThread->AddObserver(m_webCacheObserver.data());
renderThread->AddObserver(UserScriptController::instance());
// mark qrc as a secure scheme (avoids deprecation warnings)
@@ -87,14 +90,14 @@ void ContentRendererClientQt::RenderThreadStarted()
void ContentRendererClientQt::RenderViewCreated(content::RenderView* render_view)
{
// RenderViewObservers destroy themselves with their RenderView.
- new QtRenderViewObserver(render_view);
+ new RenderViewObserverQt(render_view, m_webCacheObserver.data());
new WebChannelIPCTransport(render_view);
UserScriptController::instance()->renderViewCreated(render_view);
}
void ContentRendererClientQt::RenderFrameCreated(content::RenderFrame* render_frame)
{
- new QtWebEngineCore::QtRenderFrameObserver(render_frame);
+ new QtWebEngineCore::RenderFrameObserverQt(render_frame);
}
bool ContentRendererClientQt::HasErrorPage(int httpStatusCode, std::string *errorDomain)
diff --git a/src/core/renderer/content_renderer_client_qt.h b/src/core/renderer/content_renderer_client_qt.h
index fab88441f..eb55156ad 100644
--- a/src/core/renderer/content_renderer_client_qt.h
+++ b/src/core/renderer/content_renderer_client_qt.h
@@ -45,6 +45,10 @@ namespace visitedlink {
class VisitedLinkSlave;
}
+namespace web_cache {
+class WebCacheRenderProcessObserver;
+}
+
namespace QtWebEngineCore {
class ContentRendererClientQt : public content::ContentRendererClient {
@@ -64,6 +68,7 @@ public:
private:
QScopedPointer<visitedlink::VisitedLinkSlave> m_visitedLinkSlave;
+ QScopedPointer<web_cache::WebCacheRenderProcessObserver> m_webCacheObserver;
};
} // namespace
diff --git a/src/core/renderer/qt_render_frame_observer.cpp b/src/core/renderer/render_frame_observer_qt.cpp
index 5f06d1e4e..8130cc53a 100644
--- a/src/core/renderer/qt_render_frame_observer.cpp
+++ b/src/core/renderer/render_frame_observer_qt.cpp
@@ -34,7 +34,7 @@
**
****************************************************************************/
-#include "qt_render_frame_observer.h"
+#include "render_frame_observer_qt.h"
#include "content/public/renderer/renderer_ppapi_host.h"
#include "ppapi/host/ppapi_host.h"
@@ -44,17 +44,17 @@
namespace QtWebEngineCore {
-QtRenderFrameObserver::QtRenderFrameObserver(content::RenderFrame* render_frame)
+RenderFrameObserverQt::RenderFrameObserverQt(content::RenderFrame* render_frame)
: RenderFrameObserver(render_frame)
{
}
-QtRenderFrameObserver::~QtRenderFrameObserver()
+RenderFrameObserverQt::~RenderFrameObserverQt()
{
}
#if defined(ENABLE_PLUGINS)
-void QtRenderFrameObserver::DidCreatePepperPlugin(content::RendererPpapiHost* host)
+void RenderFrameObserverQt::DidCreatePepperPlugin(content::RendererPpapiHost* host)
{
host->GetPpapiHost()->AddHostFactoryFilter(
scoped_ptr<ppapi::host::HostFactory>(
diff --git a/src/core/renderer/qt_render_frame_observer.h b/src/core/renderer/render_frame_observer_qt.h
index 42f2b7464..4835e442e 100644
--- a/src/core/renderer/qt_render_frame_observer.h
+++ b/src/core/renderer/render_frame_observer_qt.h
@@ -34,8 +34,8 @@
**
****************************************************************************/
-#ifndef QT_RENDER_FRAME_OBSERVER_H
-#define QT_RENDER_FRAME_OBSERVER_H
+#ifndef RENDER_FRAME_OBSERVER_QT_H
+#define RENDER_FRAME_OBSERVER_QT_H
#include "base/basictypes.h"
#include "base/compiler_specific.h"
@@ -48,19 +48,19 @@ class RenderFrame;
namespace QtWebEngineCore {
-class QtRenderFrameObserver : public content::RenderFrameObserver {
+class RenderFrameObserverQt : public content::RenderFrameObserver {
public:
- explicit QtRenderFrameObserver(content::RenderFrame* render_frame);
- ~QtRenderFrameObserver();
+ explicit RenderFrameObserverQt(content::RenderFrame* render_frame);
+ ~RenderFrameObserverQt();
#if defined(ENABLE_PLUGINS)
void DidCreatePepperPlugin(content::RendererPpapiHost* host) override;
#endif
private:
- DISALLOW_COPY_AND_ASSIGN(QtRenderFrameObserver);
+ DISALLOW_COPY_AND_ASSIGN(RenderFrameObserverQt);
};
} // namespace QtWebEngineCore
-#endif // QT_RENDER_FRAME_OBSERVER_H
+#endif // RENDER_FRAME_OBSERVER_QT_H
diff --git a/src/core/renderer/qt_render_view_observer.cpp b/src/core/renderer/render_view_observer_qt.cpp
index ba91e54ae..47efd07e4 100644
--- a/src/core/renderer/qt_render_view_observer.cpp
+++ b/src/core/renderer/render_view_observer_qt.cpp
@@ -34,55 +34,65 @@
**
****************************************************************************/
-#include "renderer/qt_render_view_observer.h"
+#include "renderer/render_view_observer_qt.h"
#include "common/qt_messages.h"
+#include "components/web_cache/renderer/web_cache_render_process_observer.h"
#include "content/public/renderer/render_view.h"
#include "third_party/WebKit/public/web/WebDocument.h"
#include "third_party/WebKit/public/web/WebElement.h"
#include "third_party/WebKit/public/web/WebFrame.h"
#include "third_party/WebKit/public/web/WebView.h"
-QtRenderViewObserver::QtRenderViewObserver(content::RenderView* render_view)
+RenderViewObserverQt::RenderViewObserverQt(
+ content::RenderView* render_view,
+ web_cache::WebCacheRenderProcessObserver* web_cache_render_process_observer)
: content::RenderViewObserver(render_view)
+ , m_web_cache_render_process_observer(web_cache_render_process_observer)
{
}
-void QtRenderViewObserver::onFetchDocumentMarkup(quint64 requestId)
+void RenderViewObserverQt::onFetchDocumentMarkup(quint64 requestId)
{
- Send(new QtRenderViewObserverHost_DidFetchDocumentMarkup(
+ Send(new RenderViewObserverHostQt_DidFetchDocumentMarkup(
routing_id(),
requestId,
render_view()->GetWebView()->mainFrame()->contentAsMarkup()));
}
-void QtRenderViewObserver::onFetchDocumentInnerText(quint64 requestId)
+void RenderViewObserverQt::onFetchDocumentInnerText(quint64 requestId)
{
- Send(new QtRenderViewObserverHost_DidFetchDocumentInnerText(
+ Send(new RenderViewObserverHostQt_DidFetchDocumentInnerText(
routing_id(),
requestId,
render_view()->GetWebView()->mainFrame()->contentAsText(std::numeric_limits<std::size_t>::max())));
}
-void QtRenderViewObserver::onSetBackgroundColor(quint32 color)
+void RenderViewObserverQt::onSetBackgroundColor(quint32 color)
{
render_view()->GetWebView()->setBaseBackgroundColor(color);
}
-void QtRenderViewObserver::OnFirstVisuallyNonEmptyLayout()
+void RenderViewObserverQt::OnFirstVisuallyNonEmptyLayout()
{
- Send(new QtRenderViewObserverHost_DidFirstVisuallyNonEmptyLayout(routing_id()));
+ Send(new RenderViewObserverHostQt_DidFirstVisuallyNonEmptyLayout(routing_id()));
}
-bool QtRenderViewObserver::OnMessageReceived(const IPC::Message& message)
+bool RenderViewObserverQt::OnMessageReceived(const IPC::Message& message)
{
bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(QtRenderViewObserver, message)
- IPC_MESSAGE_HANDLER(QtRenderViewObserver_FetchDocumentMarkup, onFetchDocumentMarkup)
- IPC_MESSAGE_HANDLER(QtRenderViewObserver_FetchDocumentInnerText, onFetchDocumentInnerText)
- IPC_MESSAGE_HANDLER(QtRenderViewObserver_SetBackgroundColor, onSetBackgroundColor)
+ IPC_BEGIN_MESSAGE_MAP(RenderViewObserverQt, message)
+ IPC_MESSAGE_HANDLER(RenderViewObserverQt_FetchDocumentMarkup, onFetchDocumentMarkup)
+ IPC_MESSAGE_HANDLER(RenderViewObserverQt_FetchDocumentInnerText, onFetchDocumentInnerText)
+ IPC_MESSAGE_HANDLER(RenderViewObserverQt_SetBackgroundColor, onSetBackgroundColor)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
}
+
+void RenderViewObserverQt::Navigate(const GURL &)
+{
+ if (m_web_cache_render_process_observer)
+ m_web_cache_render_process_observer->ExecutePendingClearCache();
+}
diff --git a/src/core/renderer/qt_render_view_observer.h b/src/core/renderer/render_view_observer_qt.h
index 3f7829a92..166dcc9ea 100644
--- a/src/core/renderer/qt_render_view_observer.h
+++ b/src/core/renderer/render_view_observer_qt.h
@@ -33,16 +33,21 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-#ifndef QT_RENDER_VIEW_OBSERVER_H
-#define QT_RENDER_VIEW_OBSERVER_H
+#ifndef RENDER_VIEW_OBSERVER_QT_H
+#define RENDER_VIEW_OBSERVER_QT_H
#include "content/public/renderer/render_view_observer.h"
#include <QtGlobal>
-class QtRenderViewObserver : public content::RenderViewObserver {
+namespace web_cache {
+class WebCacheRenderProcessObserver;
+}
+
+class RenderViewObserverQt : public content::RenderViewObserver {
public:
- QtRenderViewObserver(content::RenderView* render_view);
+ RenderViewObserverQt(content::RenderView* render_view,
+ web_cache::WebCacheRenderProcessObserver* web_cache_render_process_observer);
private:
void onFetchDocumentMarkup(quint64 requestId);
@@ -52,8 +57,11 @@ private:
void OnFirstVisuallyNonEmptyLayout() Q_DECL_OVERRIDE;
virtual bool OnMessageReceived(const IPC::Message& message) Q_DECL_OVERRIDE;
+ virtual void Navigate(const GURL& url) Q_DECL_OVERRIDE;
+
+ web_cache::WebCacheRenderProcessObserver* m_web_cache_render_process_observer;
- DISALLOW_COPY_AND_ASSIGN(QtRenderViewObserver);
+ DISALLOW_COPY_AND_ASSIGN(RenderViewObserverQt);
};
-#endif // QT_RENDER_VIEW_OBSERVER_H
+#endif // RENDER_VIEW_OBSERVER_QT_H
diff --git a/src/core/resources/devtools_discovery_page.html b/src/core/resources/devtools_discovery_page.html
index 7aac74932..d37dbfcf4 100644
--- a/src/core/resources/devtools_discovery_page.html
+++ b/src/core/resources/devtools_discovery_page.html
@@ -3,44 +3,68 @@
<title>QtWebEngine Remote Debugging</title>
<style>
body {
- background-color: rgb(245, 245, 245);
+ color: #222;
font-family: Helvetica, Arial, sans-serif;
+ margin: 0;
text-shadow: rgba(255, 255, 255, 0.496094) 0px 1px 0px;
}
#caption {
- color: black;
font-size: 16px;
- margin-top: 30px;
- margin-bottom: 0px;
- margin-left: 70px;
+ margin-top: 15px;
+ margin-bottom: 10px;
+ margin-left: 20px;
height: 20px;
text-align: left;
}
#items {
- margin-left: 60px;
- margin-right: 60px;
- -webkit-box-orient: horizontal;
- -webkit-box-lines: multiple;
+ display: flex;
+ flex-direction: column;
+ margin: 10px;
+}
+
+.item {
+ color: #222;
+ display: flex;
+ flex-direction: row;
+ text-decoration: none;
+ padding: 10px;
+ -webkit-transition-property: background-color, border-color;
+ -webkit-transition: background-color 0.15s, 0.15s;
+ -webkit-transition-delay: 0ms, 0ms;
}
-.frontend_ref {
+.item:not(.connected):hover {
+ background-color: rgba(242, 242, 242, 1);
+ border-color: rgba(110, 116, 128, 1);
color: black;
- text-decoration: initial;
}
-.text {
- background: no-repeat 0;
- background-size: 16px;
- font-size: 12px;
- margin: 4px 0px 0px 4px;
+.item.connected:hover {
+ border-color: rgba(184, 184, 184, 1);
+ color: rgb(110, 116, 128);
+}
+
+.description {
+ display: flex;
+ flex-direction: column;
+}
+
+.title, .subtitle {
+ font-size: 13px;
+ margin: 4px 0px 0px 6px;
overflow: hidden;
- padding: 2px 0px 0px 20px;
- text-align: left;
- text-overflow: ellipsis;
- white-space: nowrap;
+ padding-left: 20px;
}
+
+.title {
+ background-repeat: no-repeat;
+ background-size: 16px;
+ font-size: 15px;
+}
+
+
</style>
<script>
@@ -74,35 +98,43 @@ function overrideFrontendUrl(item) {
}
function appendItem(item_object) {
- var frontend_ref;
+ var item_element;
if (item_object.devtoolsFrontendUrl) {
- frontend_ref = document.createElement('a');
- frontend_ref.href = overrideFrontendUrl(item_object);
- frontend_ref.title = item_object.title;
+ item_element = document.createElement('a');
+ item_element.href = overrideFrontendUrl(item_object);
+ item_element.title = item_object.title;
} else {
- frontend_ref = document.createElement('div');
- frontend_ref.title = 'The tab already has an active debug session';
+ item_element = document.createElement('div');
+ item_element.className = 'connected';
+ item_element.title = 'The tab already has an active debug session';
}
- frontend_ref.className = 'frontend_ref';
+ item_element.classList.add('item');
- var text = document.createElement('div');
- text.className = 'text';
- text.innerText = item_object.description || item_object.title;
- text.style.cssText = 'background-image:url(' +
- item_object.faviconUrl + ')';
- frontend_ref.appendChild(text);
+ var description = document.createElement('div');
+ description.className = 'description';
- var item = document.createElement('p');
- item.appendChild(frontend_ref);
+ var title = document.createElement('div');
+ title.className = 'title';
+ title.textContent = item_object.description || item_object.title;
+ title.style.cssText = 'background-image:url(' +
+ item_object.faviconUrl + ')';
+ description.appendChild(title);
- document.getElementById('items').appendChild(item);
+ var subtitle = document.createElement('div');
+ subtitle.className = 'subtitle';
+ subtitle.textContent = (item_object.url || '').substring(0, 300);
+ description.appendChild(subtitle);
+
+ item_element.appendChild(description);
+
+ document.getElementById('items').appendChild(item_element);
}
</script>
</head>
<body onload='onLoad()'>
<div id='caption'>Inspectable pages</div>
+ <hr>
<div id='items'>
</div>
- <hr>
</body>
</html>
diff --git a/src/core/stream_video_node.cpp b/src/core/stream_video_node.cpp
index a5a6041f3..fdae5fee2 100644
--- a/src/core/stream_video_node.cpp
+++ b/src/core/stream_video_node.cpp
@@ -38,9 +38,12 @@
#include <QtQuick/qsgtexture.h>
+namespace QtWebEngineCore {
+
class StreamVideoMaterialShader : public QSGMaterialShader
{
public:
+ StreamVideoMaterialShader(TextureTarget target) : m_target(target) { }
virtual void updateState(const RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial);
virtual char const *const *attributeNames() const Q_DECL_OVERRIDE {
@@ -55,7 +58,7 @@ public:
protected:
virtual const char *vertexShader() const Q_DECL_OVERRIDE {
// Keep in sync with cc::VertexShaderVideoTransform
- const char *shader =
+ static const char *shader =
"attribute highp vec4 a_position;\n"
"attribute mediump vec2 a_texCoord;\n"
"uniform highp mat4 matrix;\n"
@@ -70,7 +73,7 @@ protected:
virtual const char *fragmentShader() const Q_DECL_OVERRIDE {
// Keep in sync with cc::FragmentShaderRGBATexAlpha
- static const char *shader =
+ static const char *shaderExternal =
"#extension GL_OES_EGL_image_external : require\n"
"varying mediump vec2 v_texCoord;\n"
"uniform samplerExternalOES s_texture;\n"
@@ -79,7 +82,19 @@ protected:
" lowp vec4 texColor = texture2D(s_texture, v_texCoord);\n"
" gl_FragColor = texColor * alpha;\n"
"}";
- return shader;
+ static const char *shader2DRect =
+ "#extension GL_ARB_texture_rectangle : require\n"
+ "varying mediump vec2 v_texCoord;\n"
+ "uniform sampler2DRect s_texture;\n"
+ "uniform lowp float alpha;\n"
+ "void main() {\n"
+ " lowp vec4 texColor = texture2DRect(s_texture, v_texCoord);\n"
+ " gl_FragColor = texColor * alpha;\n"
+ "}";
+ if (m_target == ExternalTarget)
+ return shaderExternal;
+ else
+ return shader2DRect;
}
virtual void initialize() {
@@ -93,6 +108,7 @@ protected:
int m_id_texMatrix;
int m_id_sTexture;
int m_id_opacity;
+ TextureTarget m_target;
};
void StreamVideoMaterialShader::updateState(const RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial)
@@ -113,31 +129,38 @@ void StreamVideoMaterialShader::updateState(const RenderState &state, QSGMateria
program()->setUniformValue(m_id_texMatrix, mat->m_texMatrix);
}
-StreamVideoMaterial::StreamVideoMaterial(QSGTexture *texture)
+StreamVideoMaterial::StreamVideoMaterial(QSGTexture *texture, TextureTarget target)
: m_texture(texture)
+ , m_target(target)
{
}
QSGMaterialShader *StreamVideoMaterial::createShader() const
{
- return new StreamVideoMaterialShader;
+ return new StreamVideoMaterialShader(m_target);
}
-StreamVideoNode::StreamVideoNode(QSGTexture *texture)
+StreamVideoNode::StreamVideoNode(QSGTexture *texture, bool flip, TextureTarget target)
: m_geometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4)
+ , m_flip(flip)
{
setGeometry(&m_geometry);
setFlag(QSGNode::OwnsMaterial);
- m_material = new StreamVideoMaterial(texture);
+ m_material = new StreamVideoMaterial(texture, target);
setMaterial(m_material);
}
void StreamVideoNode::setRect(const QRectF &rect)
{
- QSGGeometry::updateTexturedRectGeometry(geometry(), rect, QRectF(0, 0, 1, 1));
+ if (m_flip)
+ QSGGeometry::updateTexturedRectGeometry(geometry(), rect, QRectF(0, 1, 1, -1));
+ else
+ QSGGeometry::updateTexturedRectGeometry(geometry(), rect, QRectF(0, 0, 1, 1));
}
void StreamVideoNode::setTextureMatrix(const QMatrix4x4 &matrix)
{
m_material->m_texMatrix = matrix;
}
+
+} // namespace
diff --git a/src/core/stream_video_node.h b/src/core/stream_video_node.h
index f808bb609..92c640811 100644
--- a/src/core/stream_video_node.h
+++ b/src/core/stream_video_node.h
@@ -40,19 +40,22 @@
#include <QtQuick/qsgmaterial.h>
#include <QtQuick/qsgnode.h>
-QT_BEGIN_NAMESPACE
-class QSGTexture;
-QT_END_NAMESPACE
+QT_FORWARD_DECLARE_CLASS(QSGTexture)
+
+namespace QtWebEngineCore {
// These classes duplicate, QtQuick style, the logic of GLRenderer::DrawStreamVideoQuad.
// Their behavior should stay as close as possible to GLRenderer.
+enum TextureTarget { ExternalTarget, RectangleTarget };
+
class StreamVideoMaterial : public QSGMaterial
{
public:
- StreamVideoMaterial(QSGTexture *texture);
+ StreamVideoMaterial(QSGTexture *texture, TextureTarget target);
- virtual QSGMaterialType *type() const Q_DECL_OVERRIDE{
+ virtual QSGMaterialType *type() const Q_DECL_OVERRIDE
+ {
static QSGMaterialType theType;
return &theType;
}
@@ -61,18 +64,22 @@ public:
QSGTexture *m_texture;
QMatrix4x4 m_texMatrix;
+ TextureTarget m_target;
};
class StreamVideoNode : public QSGGeometryNode
{
public:
- StreamVideoNode(QSGTexture *texture);
+ StreamVideoNode(QSGTexture *texture, bool flip, TextureTarget target);
void setRect(const QRectF &rect);
void setTextureMatrix(const QMatrix4x4 &matrix);
private:
QSGGeometry m_geometry;
+ bool m_flip;
StreamVideoMaterial *m_material;
};
+} // namespace
+
#endif // STREAM_VIDEO_NODE_H
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index 8d3345d1c..84c4e50f3 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -45,8 +45,8 @@
#include "browser_context_adapter.h"
#include "browser_context_qt.h"
#include "media_capture_devices_dispatcher.h"
-#include "qt_render_view_observer_host.h"
#include "qwebenginecallback_p.h"
+#include "render_view_observer_host_qt.h"
#include "type_conversion.h"
#include "web_channel_ipc_transport_host.h"
#include "web_contents_adapter_client.h"
@@ -385,7 +385,7 @@ void WebContentsAdapter::initialize(WebContentsAdapterClient *adapterClient)
// Create and attach observers to the WebContents.
d->webContentsDelegate.reset(new WebContentsDelegateQt(d->webContents.get(), adapterClient));
- d->renderViewObserverHost.reset(new QtRenderViewObserverHost(d->webContents.get(), adapterClient));
+ d->renderViewObserverHost.reset(new RenderViewObserverHostQt(d->webContents.get(), adapterClient));
// Let the WebContent's view know about the WebContentsAdapterClient.
WebContentsViewQt* contentsView = static_cast<WebContentsViewQt*>(static_cast<content::WebContentsImpl*>(d->webContents.get())->GetView());
diff --git a/src/core/web_contents_adapter_p.h b/src/core/web_contents_adapter_p.h
index 9b4128749..093b9059d 100644
--- a/src/core/web_contents_adapter_p.h
+++ b/src/core/web_contents_adapter_p.h
@@ -60,7 +60,7 @@ QT_FORWARD_DECLARE_CLASS(QWebChannel)
namespace QtWebEngineCore {
class BrowserContextAdapter;
-class QtRenderViewObserverHost;
+class RenderViewObserverHostQt;
class UserScriptControllerHost;
class WebChannelIPCTransportHost;
class WebContentsAdapterClient;
@@ -75,7 +75,7 @@ public:
QExplicitlySharedDataPointer<BrowserContextAdapter> browserContextAdapter;
scoped_ptr<content::WebContents> webContents;
scoped_ptr<WebContentsDelegateQt> webContentsDelegate;
- scoped_ptr<QtRenderViewObserverHost> renderViewObserverHost;
+ scoped_ptr<RenderViewObserverHostQt> renderViewObserverHost;
scoped_ptr<WebChannelIPCTransportHost> webChannelTransport;
QWebChannel *webChannel;
WebContentsAdapterClient *adapterClient;
diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp
index 1f789161a..1897664e3 100644
--- a/src/core/web_contents_delegate_qt.cpp
+++ b/src/core/web_contents_delegate_qt.cpp
@@ -51,12 +51,14 @@
#include "web_engine_settings.h"
#include "web_engine_visited_links_manager.h"
+#include "components/web_cache/browser/web_cache_manager.h"
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/public/browser/favicon_status.h"
#include "content/public/browser/invalidate_type.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/favicon_url.h"
#include "content/public/common/file_chooser_params.h"
@@ -315,6 +317,11 @@ void WebContentsDelegateQt::DidNavigateAnyFrame(content::RenderFrameHost* render
m_viewClient->browserContextAdapter()->visitedLinksManager()->addUrl(params.url);
}
+void WebContentsDelegateQt::WasShown()
+{
+ web_cache::WebCacheManager::GetInstance()->ObserveActivity(web_contents()->GetRenderProcessHost()->GetID());
+}
+
void WebContentsDelegateQt::RequestToLockMouse(content::WebContents *web_contents, bool user_gesture, bool last_unlocked_by_target)
{
Q_UNUSED(user_gesture);
diff --git a/src/core/web_contents_delegate_qt.h b/src/core/web_contents_delegate_qt.h
index abdf75fe5..d3075cfbf 100644
--- a/src/core/web_contents_delegate_qt.h
+++ b/src/core/web_contents_delegate_qt.h
@@ -44,6 +44,7 @@
#include "base/callback.h"
#include "javascript_dialog_manager_qt.h"
+#include <QtCore/qvector.h>
#include <QtCore/qcompilerdetection.h>
QT_FORWARD_DECLARE_CLASS(CertificateErrorController)
@@ -104,6 +105,7 @@ public:
virtual void DidFinishLoad(content::RenderFrameHost *render_frame_host, const GURL &validated_url) Q_DECL_OVERRIDE;
virtual void DidUpdateFaviconURL(const std::vector<content::FaviconURL> &candidates) Q_DECL_OVERRIDE;
virtual void DidNavigateAnyFrame(content::RenderFrameHost *render_frame_host, const content::LoadCommittedDetails &details, const content::FrameNavigateParams &params) Q_DECL_OVERRIDE;
+ virtual void WasShown() Q_DECL_OVERRIDE;
void overrideWebPreferences(content::WebContents *, content::WebPreferences*);
void allowCertificateError(const QSharedPointer<CertificateErrorController> &) ;
@@ -116,7 +118,7 @@ private:
WebContentsAdapterClient *m_viewClient;
QString m_lastSearchedString;
int m_lastReceivedFindReply;
- QList<int64> m_loadingErrorFrameList;
+ QVector<int64> m_loadingErrorFrameList;
};
} // namespace QtWebEngineCore
diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp
index 5be35b348..4d1cbf3d4 100644
--- a/src/core/web_engine_context.cpp
+++ b/src/core/web_engine_context.cpp
@@ -200,7 +200,7 @@ WebEngineContext::WebEngineContext()
, m_browserRunner(content::BrowserMainRunner::Create())
, m_globalQObject(new QObject())
{
- QList<QByteArray> args;
+ QVector<QByteArray> args;
Q_FOREACH (const QString& arg, QCoreApplication::arguments())
args << arg.toUtf8();
diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp
index c8d1cc27f..88d8a0c5c 100644
--- a/src/core/web_engine_settings.cpp
+++ b/src/core/web_engine_settings.cpp
@@ -46,6 +46,10 @@
namespace QtWebEngineCore {
+QHash<WebEngineSettings::Attribute, bool> WebEngineSettings::m_defaultAttributes;
+QHash<WebEngineSettings::FontFamily, QString> WebEngineSettings::m_defaultFontFamilies;
+QHash<WebEngineSettings::FontSize, int> WebEngineSettings::m_defaultFontSizes;
+
static const int batchTimerTimeout = 0;
class BatchTimer : public QTimer {
@@ -132,9 +136,12 @@ bool WebEngineSettings::testAttribute(WebEngineSettings::Attribute attr) const
void WebEngineSettings::resetAttribute(WebEngineSettings::Attribute attr)
{
- if (!parentSettings) // FIXME: Set initial defaults.
- return;
- m_attributes.remove(attr);
+ if (!parentSettings) {
+ Q_ASSERT(m_defaultAttributes.contains(attr));
+ m_attributes.insert(attr, m_defaultAttributes.value(attr));
+ } else {
+ m_attributes.remove(attr);
+ }
scheduleApplyRecursively();
}
@@ -155,9 +162,12 @@ QString WebEngineSettings::fontFamily(WebEngineSettings::FontFamily which)
void WebEngineSettings::resetFontFamily(WebEngineSettings::FontFamily which)
{
- if (!parentSettings) // FIXME: Set initial defaults.
- return;
- m_fontFamilies.remove(which);
+ if (!parentSettings) {
+ Q_ASSERT(m_defaultFontFamilies.contains(which));
+ m_fontFamilies.insert(which, m_defaultFontFamilies.value(which));
+ } else {
+ m_fontFamilies.remove(which);
+ }
scheduleApplyRecursively();
}
@@ -178,9 +188,12 @@ int WebEngineSettings::fontSize(WebEngineSettings::FontSize type) const
void WebEngineSettings::resetFontSize(WebEngineSettings::FontSize type)
{
- if (!parentSettings) // FIXME: Set initial defaults.
- return;
- m_fontSizes.remove(type);
+ if (!parentSettings) {
+ Q_ASSERT(m_defaultFontSizes.contains(type));
+ m_fontSizes.insert(type, m_defaultFontSizes.value(type));
+ } else {
+ m_fontSizes.remove(type);
+ }
scheduleApplyRecursively();
}
@@ -199,46 +212,55 @@ QString WebEngineSettings::defaultTextEncoding() const
void WebEngineSettings::initDefaults(bool offTheRecord)
{
- // Initialize the default settings.
- m_attributes.insert(AutoLoadImages, true);
- m_attributes.insert(JavascriptEnabled, true);
- m_attributes.insert(JavascriptCanOpenWindows, true);
- m_attributes.insert(JavascriptCanAccessClipboard, false);
- m_attributes.insert(LinksIncludedInFocusChain, true);
- m_attributes.insert(LocalStorageEnabled, !offTheRecord);
- m_attributes.insert(LocalContentCanAccessRemoteUrls, false);
- m_attributes.insert(XSSAuditingEnabled, false);
- m_attributes.insert(SpatialNavigationEnabled, false);
- m_attributes.insert(LocalContentCanAccessFileUrls, true);
- m_attributes.insert(HyperlinkAuditingEnabled, false);
- m_attributes.insert(ScrollAnimatorEnabled, false);
- m_attributes.insert(ErrorPageEnabled, true);
- m_attributes.insert(PluginsEnabled, false);
- m_attributes.insert(FullScreenSupportEnabled, false);
- m_attributes.insert(ScreenCaptureEnabled, false);
-
- // Default fonts
- QFont defaultFont;
- defaultFont.setStyleHint(QFont::Serif);
- m_fontFamilies.insert(StandardFont, defaultFont.defaultFamily());
- m_fontFamilies.insert(SerifFont, defaultFont.defaultFamily());
-
- defaultFont.setStyleHint(QFont::Fantasy);
- m_fontFamilies.insert(FantasyFont, defaultFont.defaultFamily());
-
- defaultFont.setStyleHint(QFont::Cursive);
- m_fontFamilies.insert(CursiveFont, defaultFont.defaultFamily());
-
- defaultFont.setStyleHint(QFont::SansSerif);
- m_fontFamilies.insert(SansSerifFont, defaultFont.defaultFamily());
-
- defaultFont.setStyleHint(QFont::Monospace);
- m_fontFamilies.insert(FixedFont, defaultFont.defaultFamily());
-
- m_fontSizes.insert(MinimumFontSize, 0);
- m_fontSizes.insert(MinimumLogicalFontSize, 6);
- m_fontSizes.insert(DefaultFixedFontSize, 13);
- m_fontSizes.insert(DefaultFontSize, 16);
+ if (m_defaultAttributes.isEmpty()) {
+ // Initialize the default settings.
+ m_defaultAttributes.insert(AutoLoadImages, true);
+ m_defaultAttributes.insert(JavascriptEnabled, true);
+ m_defaultAttributes.insert(JavascriptCanOpenWindows, true);
+ m_defaultAttributes.insert(JavascriptCanAccessClipboard, false);
+ m_defaultAttributes.insert(LinksIncludedInFocusChain, true);
+ m_defaultAttributes.insert(LocalStorageEnabled, !offTheRecord);
+ m_defaultAttributes.insert(LocalContentCanAccessRemoteUrls, false);
+ m_defaultAttributes.insert(XSSAuditingEnabled, false);
+ m_defaultAttributes.insert(SpatialNavigationEnabled, false);
+ m_defaultAttributes.insert(LocalContentCanAccessFileUrls, true);
+ m_defaultAttributes.insert(HyperlinkAuditingEnabled, false);
+ m_defaultAttributes.insert(ScrollAnimatorEnabled, false);
+ m_defaultAttributes.insert(ErrorPageEnabled, true);
+ m_defaultAttributes.insert(PluginsEnabled, false);
+ m_defaultAttributes.insert(FullScreenSupportEnabled, false);
+ m_defaultAttributes.insert(ScreenCaptureEnabled, false);
+ }
+ m_attributes = m_defaultAttributes;
+
+ if (m_defaultFontFamilies.isEmpty()) {
+ // Default fonts
+ QFont defaultFont;
+ defaultFont.setStyleHint(QFont::Serif);
+ m_defaultFontFamilies.insert(StandardFont, defaultFont.defaultFamily());
+ m_defaultFontFamilies.insert(SerifFont, defaultFont.defaultFamily());
+
+ defaultFont.setStyleHint(QFont::Fantasy);
+ m_defaultFontFamilies.insert(FantasyFont, defaultFont.defaultFamily());
+
+ defaultFont.setStyleHint(QFont::Cursive);
+ m_defaultFontFamilies.insert(CursiveFont, defaultFont.defaultFamily());
+
+ defaultFont.setStyleHint(QFont::SansSerif);
+ m_defaultFontFamilies.insert(SansSerifFont, defaultFont.defaultFamily());
+
+ defaultFont.setStyleHint(QFont::Monospace);
+ m_defaultFontFamilies.insert(FixedFont, defaultFont.defaultFamily());
+ }
+ m_fontFamilies = m_defaultFontFamilies;
+
+ if (m_defaultFontSizes.isEmpty()) {
+ m_defaultFontSizes.insert(MinimumFontSize, 0);
+ m_defaultFontSizes.insert(MinimumLogicalFontSize, 6);
+ m_defaultFontSizes.insert(DefaultFixedFontSize, 13);
+ m_defaultFontSizes.insert(DefaultFontSize, 16);
+ }
+ m_fontSizes = m_defaultFontSizes;
m_defaultEncoding = QStringLiteral("ISO-8859-1");
}
diff --git a/src/core/web_engine_settings.h b/src/core/web_engine_settings.h
index d850bd1ef..4104ec67c 100644
--- a/src/core/web_engine_settings.h
+++ b/src/core/web_engine_settings.h
@@ -137,6 +137,10 @@ private:
WebEngineSettings *parentSettings;
QSet<WebEngineSettings *> childSettings;
+ static QHash<Attribute, bool> m_defaultAttributes;
+ static QHash<FontFamily, QString> m_defaultFontFamilies;
+ static QHash<FontSize, int> m_defaultFontSizes;
+
friend class BatchTimer;
friend class WebContentsAdapter;
};
diff --git a/src/core/yuv_video_node.cpp b/src/core/yuv_video_node.cpp
index 815ea7d51..7deeb5802 100644
--- a/src/core/yuv_video_node.cpp
+++ b/src/core/yuv_video_node.cpp
@@ -40,6 +40,8 @@
#include <QtGui/qopenglfunctions.h>
#include <QtQuick/qsgtexture.h>
+namespace QtWebEngineCore {
+
class YUVVideoMaterialShader : public QSGMaterialShader
{
public:
@@ -369,3 +371,5 @@ void YUVVideoNode::setRect(const QRectF &rect)
{
QSGGeometry::updateTexturedRectGeometry(geometry(), rect, QRectF(0, 0, 1, 1));
}
+
+} // namespace
diff --git a/src/core/yuv_video_node.h b/src/core/yuv_video_node.h
index 457c2c7fe..5b13879d3 100644
--- a/src/core/yuv_video_node.h
+++ b/src/core/yuv_video_node.h
@@ -40,9 +40,9 @@
#include <QtQuick/qsgmaterial.h>
#include <QtQuick/qsgnode.h>
-QT_BEGIN_NAMESPACE
-class QSGTexture;
-QT_END_NAMESPACE
+QT_FORWARD_DECLARE_CLASS(QSGTexture)
+
+namespace QtWebEngineCore {
// These classes duplicate, QtQuick style, the logic of GLRenderer::DrawYUVVideoQuad.
// Their behavior should stay as close as possible to GLRenderer.
@@ -59,7 +59,8 @@ public:
const QRectF &yaTexCoordRect, const QRectF &uvTexCoordRect, const QSizeF &yaTexSize, const QSizeF &uvTexSize,
ColorSpace colorspace);
- virtual QSGMaterialType *type() const Q_DECL_OVERRIDE {
+ virtual QSGMaterialType *type() const Q_DECL_OVERRIDE
+ {
static QSGMaterialType theType;
return &theType;
}
@@ -85,7 +86,8 @@ public:
const QRectF &yaTexCoordRect, const QRectF &uvTexCoordRect, const QSizeF &yaTexSize, const QSizeF &uvTexSize,
ColorSpace colorspace);
- virtual QSGMaterialType *type() const Q_DECL_OVERRIDE{
+ virtual QSGMaterialType *type() const Q_DECL_OVERRIDE
+ {
static QSGMaterialType theType;
return &theType;
}
@@ -109,4 +111,6 @@ private:
YUVVideoMaterial *m_material;
};
+} // namespace
+
#endif // YUV_VIDEO_NODE_H