From 17a923b9de4ea2897620a86be9048aa810ba5259 Mon Sep 17 00:00:00 2001 From: vladest Date: Tue, 12 Sep 2017 15:48:47 +0200 Subject: [PATCH 1/3] Temporarily disable WebView flickable until new solution will be investigated --- .../qml/controls/FlickableWebViewCore.qml | 60 +------------------ 1 file changed, 3 insertions(+), 57 deletions(-) diff --git a/interface/resources/qml/controls/FlickableWebViewCore.qml b/interface/resources/qml/controls/FlickableWebViewCore.qml index 13a435c4e5..55be37883c 100644 --- a/interface/resources/qml/controls/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/FlickableWebViewCore.qml @@ -6,7 +6,7 @@ import QtQuick.Controls 2.2 import "../styles-uit" as StylesUIt -Flickable { +Item { id: flick property alias url: _webview.url @@ -19,38 +19,15 @@ Flickable { signal newViewRequestedCallback(var request) signal loadingChangedCallback(var loadRequest) - pressDelay: 300 - boundsBehavior: Flickable.StopAtBounds + property bool interactive: false StylesUIt.HifiConstants { id: hifi } - onHeightChanged: { - if (height > 0) { - //reload page since window dimentions changed, - //so web engine should recalculate page render dimentions - reloadTimer.start() - } - } - - ScrollBar.vertical: ScrollBar { - id: scrollBar - visible: flick.contentHeight > flick.height - - contentItem: Rectangle { - opacity: 0.75 - implicitWidth: hifi.dimensions.scrollbarHandleWidth - radius: height / 2 - color: hifi.colors.tableScrollHandleDark - } - } - function onLoadingChanged(loadRequest) { if (WebEngineView.LoadStartedStatus === loadRequest.status) { - flick.contentWidth = flick.width - flick.contentHeight = flick.height // Required to support clicking on "hifi://" links var url = loadRequest.url.toString(); @@ -67,32 +44,13 @@ Flickable { if (WebEngineView.LoadSucceededStatus === loadRequest.status) { //disable Chromium's scroll bars - _webview.runJavaScript("document.body.style.overflow = 'hidden';"); - //calculate page height - _webview.runJavaScript("document.body.scrollHeight;", function (i_actualPageHeight) { - if (i_actualPageHeight !== undefined) { - flick.contentHeight = i_actualPageHeight - } else { - flick.contentHeight = flick.height; - } - }) - flick.contentWidth = flick.width - } - } - - Timer { - id: reloadTimer - interval: 100 - repeat: false - onTriggered: { - _webview.reload() } } WebEngineView { id: _webview - height: parent.height + anchors.fill: parent profile: HFWebEngineProfile; @@ -125,7 +83,6 @@ Flickable { property string newUrl: "" Component.onCompleted: { - width = Qt.binding(function() { return flick.width; }); webChannel.registerObject("eventBridge", eventBridge); webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); // Ensure the JS from the web-engine makes it to our logging @@ -140,10 +97,6 @@ Flickable { grantFeaturePermission(securityOrigin, feature, true); } - onContentsSizeChanged: { - flick.contentHeight = Math.max(contentsSize.height, flick.height); - flick.contentWidth = flick.width - } //disable popup onContextMenuRequested: { request.accepted = true; @@ -168,11 +121,4 @@ Flickable { playing: visible z: 10000 } - - MouseArea { - anchors.fill: parent - onWheel: { - flick.flick(0, wheel.angleDelta.y*10) - } - } } From 08deba35ae2bccc578765d734fbdc590f65dd022 Mon Sep 17 00:00:00 2001 From: vladest Date: Tue, 12 Sep 2017 16:22:53 +0200 Subject: [PATCH 2/3] Take in account current WebEngine profile to make sure all features are in place, like download --- .../resources/qml/controls/FlickableWebViewCore.qml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/controls/FlickableWebViewCore.qml b/interface/resources/qml/controls/FlickableWebViewCore.qml index 55be37883c..9e09a4797d 100644 --- a/interface/resources/qml/controls/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/FlickableWebViewCore.qml @@ -13,6 +13,7 @@ Item { property alias canGoBack: _webview.canGoBack property alias webViewCore: _webview property alias webViewCoreProfile: _webview.profile + property string webViewCoreUserAgent property string userScriptUrl: "" property string urlTag: "noDownload=false"; @@ -31,6 +32,7 @@ Item { // Required to support clicking on "hifi://" links var url = loadRequest.url.toString(); + url = (url.indexOf("?") >= 0) ? url + urlTag : url + "?" + urlTag; if (urlHandler.canHandleUrl(url)) { if (urlHandler.handleUrl(url)) { _webview.stop(); @@ -53,6 +55,9 @@ Item { anchors.fill: parent profile: HFWebEngineProfile; + settings.pluginsEnabled: true + settings.touchIconsEnabled: true + settings.allowRunningInsecureContent: true // creates a global EventBridge object. WebEngineScript { @@ -89,8 +94,11 @@ Item { _webview.javaScriptConsoleMessage.connect(function(level, message, lineNumber, sourceID) { console.log("Web Entity JS message: " + sourceID + " " + lineNumber + " " + message); }); - _webview.profile.httpUserAgent = "Mozilla/5.0 Chrome (HighFidelityInterface)"; - + if (webViewCoreUserAgent !== undefined) { + _webview.profile.httpUserAgent = webViewCoreUserAgent + } else { + _webview.profile.httpUserAgent += " (HighFidelityInterface)"; + } } onFeaturePermissionRequested: { From 92a83328c00cb90ee1ab24f6bd12f325a8055a92 Mon Sep 17 00:00:00 2001 From: vladest Date: Tue, 12 Sep 2017 19:17:49 +0200 Subject: [PATCH 3/3] Follow naming convention --- .../qml/controls/FlickableWebViewCore.qml | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/interface/resources/qml/controls/FlickableWebViewCore.qml b/interface/resources/qml/controls/FlickableWebViewCore.qml index 9e09a4797d..cbc4d19334 100644 --- a/interface/resources/qml/controls/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/FlickableWebViewCore.qml @@ -9,10 +9,10 @@ import "../styles-uit" as StylesUIt Item { id: flick - property alias url: _webview.url - property alias canGoBack: _webview.canGoBack - property alias webViewCore: _webview - property alias webViewCoreProfile: _webview.profile + property alias url: webViewCore.url + property alias canGoBack: webViewCore.canGoBack + property alias webViewCore: webViewCore + property alias webViewCoreProfile: webViewCore.profile property string webViewCoreUserAgent property string userScriptUrl: "" @@ -35,7 +35,7 @@ Item { url = (url.indexOf("?") >= 0) ? url + urlTag : url + "?" + urlTag; if (urlHandler.canHandleUrl(url)) { if (urlHandler.handleUrl(url)) { - _webview.stop(); + webViewCore.stop(); } } } @@ -50,7 +50,7 @@ Item { } WebEngineView { - id: _webview + id: webViewCore anchors.fill: parent @@ -91,13 +91,13 @@ Item { webChannel.registerObject("eventBridge", eventBridge); webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); // Ensure the JS from the web-engine makes it to our logging - _webview.javaScriptConsoleMessage.connect(function(level, message, lineNumber, sourceID) { + webViewCore.javaScriptConsoleMessage.connect(function(level, message, lineNumber, sourceID) { console.log("Web Entity JS message: " + sourceID + " " + lineNumber + " " + message); }); if (webViewCoreUserAgent !== undefined) { - _webview.profile.httpUserAgent = webViewCoreUserAgent + webViewCore.profile.httpUserAgent = webViewCoreUserAgent } else { - _webview.profile.httpUserAgent += " (HighFidelityInterface)"; + webViewCore.profile.httpUserAgent += " (HighFidelityInterface)"; } } @@ -125,7 +125,7 @@ Item { x: flick.width/2 - width/2 y: flick.height/2 - height/2 source: "../../icons/loader-snake-64-w.gif" - visible: _webview.loading && /^(http.*|)$/i.test(_webview.url.toString()) + visible: webViewCore.loading && /^(http.*|)$/i.test(webViewCore.url.toString()) playing: visible z: 10000 }