pmaports/main/qt5-qtwebengine/patches-luna/0010-Update-additional-params-from-Chromium-53-56.patch

141 lines
6.6 KiB
Diff

From 1a5e631c99d55da3fa3e3d2e469d4ab95a5af5eb Mon Sep 17 00:00:00 2001
From: Herrie <github.com@herrie.org>
Date: Fri, 25 Aug 2017 21:12:16 +0200
Subject: [PATCH 10/10] Update additional params from Chromium 53->56
---
.../content/browser/web_contents/web_contents_impl.cc | 8 ++++++--
.../content/public/common/common_param_traits_macros.h | 1 +
.../third_party/WebKit/public/web/WebWindowFeatures.h | 15 +++++++++++----
.../WebKit/public/web/WindowFeaturesStructTraits.cpp | 2 ++
.../WebKit/public/web/WindowFeaturesStructTraits.h | 4 ++++
.../third_party/WebKit/public/web/window_features.mojom | 2 ++
6 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/src/3rdparty/chromium/content/browser/web_contents/web_contents_impl.cc b/src/3rdparty/chromium/content/browser/web_contents/web_contents_impl.cc
index 228b62a..c1a74a8 100644
--- a/src/3rdparty/chromium/content/browser/web_contents/web_contents_impl.cc
+++ b/src/3rdparty/chromium/content/browser/web_contents/web_contents_impl.cc
@@ -2094,6 +2094,10 @@ void WebContentsImpl::CreateNewWindow(
rfh->Init();
return;
}
+
+ std::vector<base::string16> additional_features;
+ for (auto webStr : params.features.additionalFeatures)
+ additional_features.push_back(webStr);
// Create the new web contents. This will automatically create the new
// WebContentsView. In the future, we may want to create the view separately.
@@ -2138,7 +2142,7 @@ void WebContentsImpl::CreateNewWindow(
// set the additional features required by the LuneOS app
// (ideally this information should be propagated using the IPC messaging)
- new_view->setWindowAdditionalFeatures(params.additional_features);
+ new_view->setWindowAdditionalFeatures(additional_features);
new_view->setInitialTargetURL(params.target_url);
// TODO(brettw): It seems bogus that we have to call this function on the
@@ -2168,7 +2172,7 @@ void WebContentsImpl::CreateNewWindow(
gfx::Rect initial_rect;
delegate_->AddNewContents(
this, new_contents, params.disposition, initial_rect,
- params.user_gesture, &was_blocked, params.additional_features);
+ params.user_gesture, &was_blocked, additional_features);
}
if (!was_blocked) {
OpenURLParams open_params(params.target_url, params.referrer,
diff --git a/src/3rdparty/chromium/content/public/common/common_param_traits_macros.h b/src/3rdparty/chromium/content/public/common/common_param_traits_macros.h
index c4568af..457fd2d 100644
--- a/src/3rdparty/chromium/content/public/common/common_param_traits_macros.h
+++ b/src/3rdparty/chromium/content/public/common/common_param_traits_macros.h
@@ -267,6 +267,7 @@ IPC_STRUCT_TRAITS_BEGIN(blink::WebWindowFeatures)
IPC_STRUCT_TRAITS_MEMBER(resizable)
IPC_STRUCT_TRAITS_MEMBER(fullscreen)
IPC_STRUCT_TRAITS_MEMBER(dialog)
+ IPC_STRUCT_TRAITS_MEMBER(additionalFeatures)
IPC_STRUCT_TRAITS_END()
IPC_ENUM_TRAITS_MAX_VALUE(ui::AXEvent, ui::AX_EVENT_LAST)
diff --git a/src/3rdparty/chromium/third_party/WebKit/public/web/WebWindowFeatures.h b/src/3rdparty/chromium/third_party/WebKit/public/web/WebWindowFeatures.h
index a1f6743..7c11a7d 100644
--- a/src/3rdparty/chromium/third_party/WebKit/public/web/WebWindowFeatures.h
+++ b/src/3rdparty/chromium/third_party/WebKit/public/web/WebWindowFeatures.h
@@ -60,7 +60,7 @@ struct WebWindowFeatures {
bool fullscreen;
bool dialog;
- WebVector<WebString> additionalFeatures;
+ std::vector<base::string16> additionalFeatures;
WebWindowFeatures()
: x(0),
@@ -97,8 +97,15 @@ struct WebWindowFeatures {
scrollbarsVisible(f.scrollbarsVisible),
resizable(f.resizable),
fullscreen(f.fullscreen),
- dialog(f.dialog),
- additionalFeatures(f.additionalFeatures) {}
+ dialog(f.dialog)
+ {
+ for(auto str: f.additionalFeatures) {
+ str.ensure16Bit();
+ base::string16 destStr((const base::char16*)str.characters16(), str.length());
+
+ additionalFeatures.push_back(destStr);
+ }
+ }
operator WindowFeatures() const {
WindowFeatures result;
@@ -119,7 +126,7 @@ struct WebWindowFeatures {
result.fullscreen = fullscreen;
result.dialog = dialog;
for (size_t i = 0; i < additionalFeatures.size(); ++i)
- result.additionalFeatures.append(additionalFeatures[i]);
+ result.additionalFeatures.append(WTF::String(additionalFeatures[i].data(), additionalFeatures[i].length()));
return result;
}
#endif
diff --git a/src/3rdparty/chromium/third_party/WebKit/public/web/WindowFeaturesStructTraits.cpp b/src/3rdparty/chromium/third_party/WebKit/public/web/WindowFeaturesStructTraits.cpp
index 69dce5b..d4b83fc 100644
--- a/src/3rdparty/chromium/third_party/WebKit/public/web/WindowFeaturesStructTraits.cpp
+++ b/src/3rdparty/chromium/third_party/WebKit/public/web/WindowFeaturesStructTraits.cpp
@@ -27,6 +27,8 @@ bool StructTraits<::blink::mojom::WindowFeaturesDataView,
out->resizable = data.resizable();
out->fullscreen = data.fullscreen();
out->dialog = data.dialog();
+
+ data.ReadAdditionalfeatures(&out->additionalFeatures);
return true;
}
diff --git a/src/3rdparty/chromium/third_party/WebKit/public/web/WindowFeaturesStructTraits.h b/src/3rdparty/chromium/third_party/WebKit/public/web/WindowFeaturesStructTraits.h
index ca776ed..405fb498 100644
--- a/src/3rdparty/chromium/third_party/WebKit/public/web/WindowFeaturesStructTraits.h
+++ b/src/3rdparty/chromium/third_party/WebKit/public/web/WindowFeaturesStructTraits.h
@@ -65,6 +65,10 @@ struct StructTraits<::blink::mojom::WindowFeaturesDataView,
return features.dialog;
}
+ static std::vector<base::string16> additionalFeatures(const ::blink::WebWindowFeatures& features) {
+ return features.additionalFeatures;
+ }
+
static bool Read(::blink::mojom::WindowFeaturesDataView,
::blink::WebWindowFeatures* out);
};
diff --git a/src/3rdparty/chromium/third_party/WebKit/public/web/window_features.mojom b/src/3rdparty/chromium/third_party/WebKit/public/web/window_features.mojom
index a26b8a3..cb21f15 100644
--- a/src/3rdparty/chromium/third_party/WebKit/public/web/window_features.mojom
+++ b/src/3rdparty/chromium/third_party/WebKit/public/web/window_features.mojom
@@ -30,4 +30,6 @@ struct WindowFeatures {
// NOTE: WebWindowFeatures::additionalFeatures is not mirrored by this
// mojom struct as it's never used by the browser and therefore doesn't need
// to be sent.
+ // ... but webOS/LuneOS apps need that to send additional info to the OS
+ array<string> additionalFeatures;
};
--
2.7.4