diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-04-30 10:39:42 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-04-30 10:40:26 +0200 |
commit | 4181db05fc8f1c96d0bbf2e88a64e6d3bb11c6cf (patch) | |
tree | f4f9127216f92102f3420949f82e3186fee15e54 /src | |
parent | b546cea1b5ba6721bf7fcb687c6c069d4442ba34 (diff) | |
parent | 26ac59af2306b4f6f83e791bb3e828b9f7b1a721 (diff) |
Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I051052a70a6e764202a90d77fc1a0f73688d3704
Diffstat (limited to 'src')
-rw-r--r-- | src/core/api/qwebengineurlscheme.cpp | 5 | ||||
-rw-r--r-- | src/core/config/windows.pri | 2 | ||||
-rw-r--r-- | src/core/printing/print_view_manager_qt.cpp | 28 | ||||
-rw-r--r-- | src/core/profile_qt.cpp | 4 | ||||
-rw-r--r-- | src/core/profile_qt.h | 2 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.cpp | 7 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.cpp | 2 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineview_p.h | 1 |
8 files changed, 37 insertions, 14 deletions
diff --git a/src/core/api/qwebengineurlscheme.cpp b/src/core/api/qwebengineurlscheme.cpp index 9b04f46c5..9cc5b5056 100644 --- a/src/core/api/qwebengineurlscheme.cpp +++ b/src/core/api/qwebengineurlscheme.cpp @@ -378,6 +378,11 @@ void QWebEngineUrlScheme::registerScheme(const QWebEngineUrlScheme &scheme) return; } + if (url::IsStandard(scheme.d->name.data(), url::Component(0, scheme.d->name.size()))) { + qWarning() << "QWebEngineUrlScheme::registerScheme: Scheme" << scheme.name() << "is a standard scheme"; + return; + } + if (g_schemesLocked) { qWarning() << "QWebEngineUrlScheme::registerScheme: Too late to register scheme" << scheme.name(); return; diff --git a/src/core/config/windows.pri b/src/core/config/windows.pri index 9eb15830d..730b38a35 100644 --- a/src/core/config/windows.pri +++ b/src/core/config/windows.pri @@ -56,6 +56,8 @@ msvc:contains(QT_ARCH, "i386"):!usingMSVC32BitCrossCompiler() { msvc { equals(MSVC_VER, 15.0) { MSVS_VERSION = 2017 + } else: equals(MSVC_VER, 16.0) { + MSVS_VERSION = 2019 } else { error("Visual Studio compiler version \"$$MSVC_VER\" is not supported by Qt WebEngine") } diff --git a/src/core/printing/print_view_manager_qt.cpp b/src/core/printing/print_view_manager_qt.cpp index 2bf11990a..b6a2b42ec 100644 --- a/src/core/printing/print_view_manager_qt.cpp +++ b/src/core/printing/print_view_manager_qt.cpp @@ -151,21 +151,12 @@ static base::DictionaryValue *createPrintSettingsFromQPageLayout(const QPageLayo bool useCustomMargins) { base::DictionaryValue *printSettings = createPrintSettings(); - - //Set page size attributes, chromium expects these in micrometers - QRectF pageSizeInMillimeter = pageLayout.pageSize().rect(QPageSize::Millimeter); - if (!useCustomMargins) { - // QPrinter will extend this size with its margins - QMarginsF margins = pageLayout.margins(QPageLayout::Millimeter); - pageSizeInMillimeter = pageSizeInMillimeter.marginsRemoved(margins); - } - std::unique_ptr<base::DictionaryValue> sizeDict(new base::DictionaryValue); - sizeDict->SetInteger(printing::kSettingMediaSizeWidthMicrons, pageSizeInMillimeter.width() * kMicronsToMillimeter); - sizeDict->SetInteger(printing::kSettingMediaSizeHeightMicrons, pageSizeInMillimeter.height() * kMicronsToMillimeter); - printSettings->Set(printing::kSettingMediaSize, std::move(sizeDict)); + QRectF pageSizeInMillimeter; if (useCustomMargins) { // Apply page margins when printing to PDF + pageSizeInMillimeter = pageLayout.pageSize().rect(QPageSize::Millimeter); + QMargins pageMarginsInPoints = pageLayout.marginsPoints(); std::unique_ptr<base::DictionaryValue> marginsDict(new base::DictionaryValue); marginsDict->SetInteger(printing::kSettingMarginTop, pageMarginsInPoints.top()); @@ -175,12 +166,23 @@ static base::DictionaryValue *createPrintSettingsFromQPageLayout(const QPageLayo printSettings->Set(printing::kSettingMarginsCustom, std::move(marginsDict)); printSettings->SetInteger(printing::kSettingMarginsType, printing::CUSTOM_MARGINS); + + // pageSizeInMillimeter is in portrait orientation. Transpose it if necessary. + printSettings->SetBoolean(printing::kSettingLandscape, pageLayout.orientation() == QPageLayout::Landscape); } else { // QPrinter will handle margins + pageSizeInMillimeter = pageLayout.paintRect(QPageLayout::Millimeter); printSettings->SetInteger(printing::kSettingMarginsType, printing::NO_MARGINS); + + // pageSizeInMillimeter already contains the orientation. + printSettings->SetBoolean(printing::kSettingLandscape, false); } - printSettings->SetBoolean(printing::kSettingLandscape, pageLayout.orientation() == QPageLayout::Landscape); + //Set page size attributes, chromium expects these in micrometers + std::unique_ptr<base::DictionaryValue> sizeDict(new base::DictionaryValue); + sizeDict->SetInteger(printing::kSettingMediaSizeWidthMicrons, pageSizeInMillimeter.width() * kMicronsToMillimeter); + sizeDict->SetInteger(printing::kSettingMediaSizeHeightMicrons, pageSizeInMillimeter.height() * kMicronsToMillimeter); + printSettings->Set(printing::kSettingMediaSize, std::move(sizeDict)); return printSettings; } diff --git a/src/core/profile_qt.cpp b/src/core/profile_qt.cpp index 14a39de49..5977a28a8 100644 --- a/src/core/profile_qt.cpp +++ b/src/core/profile_qt.cpp @@ -246,7 +246,9 @@ content::BackgroundSyncController* ProfileQt::GetBackgroundSyncController() content::BrowsingDataRemoverDelegate *ProfileQt::GetBrowsingDataRemoverDelegate() { - return new BrowsingDataRemoverDelegateQt(); + if (!m_removerDelegate) + m_removerDelegate.reset(new BrowsingDataRemoverDelegateQt); + return m_removerDelegate.get(); } content::PermissionControllerDelegate *ProfileQt::GetPermissionControllerDelegate() diff --git a/src/core/profile_qt.h b/src/core/profile_qt.h index 5a602f56a..704c5a6e4 100644 --- a/src/core/profile_qt.h +++ b/src/core/profile_qt.h @@ -60,6 +60,7 @@ class ExtensionSystemQt; namespace QtWebEngineCore { +class BrowsingDataRemoverDelegateQt; class ProfileAdapter; class PermissionManagerQt; class SSLHostStateDelegateQt; @@ -130,6 +131,7 @@ private: friend class ContentBrowserClientQt; friend class WebContentsAdapter; scoped_refptr<net::URLRequestContextGetter> m_urlRequestContextGetter; + std::unique_ptr<BrowsingDataRemoverDelegateQt> m_removerDelegate; std::unique_ptr<PermissionManagerQt> m_permissionManager; std::unique_ptr<SSLHostStateDelegateQt> m_sslHostStateDelegate; std::unique_ptr<PrefService> m_prefService; diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 9c6749f39..4c0a7a21f 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -715,6 +715,13 @@ void QWebEnginePagePrivate::bindPageAndView(QWebEnginePage *page, QWebEngineView view->d_func()->pageChanged(oldPage, page); if (oldWidget != widget) view->d_func()->widgetChanged(oldWidget, widget); + + // At this point m_ownsPage should still refer to oldPage, + // it is only set for the new page after binding. + if (view->d_func()->m_ownsPage) { + delete oldPage; + view->d_func()->m_ownsPage = false; + } } } diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index 91fc86cdf..6c08df343 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -126,6 +126,7 @@ static QAccessibleInterface *webAccessibleFactory(const QString &, QObject *obje QWebEngineViewPrivate::QWebEngineViewPrivate() : page(0) , m_dragEntered(false) + , m_ownsPage(false) { #ifndef QT_NO_ACCESSIBILITY QAccessible::installFactory(&webAccessibleFactory); @@ -176,6 +177,7 @@ QWebEnginePage* QWebEngineView::page() const if (!d->page) { QWebEngineView *that = const_cast<QWebEngineView*>(this); that->setPage(new QWebEnginePage(that)); + d->m_ownsPage = true; } return d->page; } diff --git a/src/webenginewidgets/api/qwebengineview_p.h b/src/webenginewidgets/api/qwebengineview_p.h index 28fb883aa..7848e0cf3 100644 --- a/src/webenginewidgets/api/qwebengineview_p.h +++ b/src/webenginewidgets/api/qwebengineview_p.h @@ -77,6 +77,7 @@ public: QWebEnginePage *page; bool m_dragEntered; + mutable bool m_ownsPage; }; #ifndef QT_NO_ACCESSIBILITY |