Fix scripting URL injection, I hope

This commit is contained in:
Brad Davis 2017-11-08 12:00:29 -08:00
parent b7f31eb5b9
commit 1a58aee385
2 changed files with 20 additions and 17 deletions

View file

@ -81,21 +81,23 @@ Item {
}) })
} }
function loadWebOnTop(url, injectJavaScriptUrl) { function loadWebContent(source, url, injectJavaScriptUrl) {
tabletApps.append({"appUrl": loader.source, "isWebUrl": true, "scriptUrl": injectJavaScriptUrl, "appWebUrl": url}); tabletApps.append({"appUrl": source, "isWebUrl": true, "scriptUrl": injectJavaScriptUrl, "appWebUrl": url});
loader.item.url = tabletApps.get(currentApp).appWebUrl; loader.load(source, function() {
loader.item.scriptUrl = tabletApps.get(currentApp).scriptUrl; loader.item.url = tabletApps.get(currentApp).appWebUrl;
if (loader.item.hasOwnProperty("gotoPreviousApp")) { loader.item.scriptUrl = tabletApps.get(currentApp).scriptUrl;
loader.item.gotoPreviousApp = true; if (loader.item.hasOwnProperty("gotoPreviousApp")) {
} loader.item.gotoPreviousApp = true;
}
});
} }
function loadWebBase() { function loadWebBase(url, injectJavaScriptUrl) {
loader.load("hifi/tablet/TabletWebView.qml"); loadWebContent("hifi/tablet/TabletWebView.qml", url, injectJavaScriptUrl);
} }
function loadTabletWebBase() { function loadTabletWebBase(url, injectJavaScriptUrl) {
loader.load("hifi/tablet/BlocksWebView.qml"); loadWebContent("hifi/tablet/BlocksWebView.qml", url, injectJavaScriptUrl);
} }
function returnToPreviousApp() { function returnToPreviousApp() {

View file

@ -679,19 +679,20 @@ void TabletProxy::gotoWebScreen(const QString& url, const QString& injectedJavaS
if (root) { if (root) {
if (loadOtherBase) { if (loadOtherBase) {
QMetaObject::invokeMethod(root, "loadTabletWebBase"); QMetaObject::invokeMethod(root, "loadTabletWebBase", Q_ARG(const QVariant&, QVariant(url)), Q_ARG(const QVariant&, QVariant(injectedJavaScriptUrl)));
} else { } else {
QMetaObject::invokeMethod(root, "loadWebBase"); QMetaObject::invokeMethod(root, "loadWebBase", Q_ARG(const QVariant&, QVariant(url)), Q_ARG(const QVariant&, QVariant(injectedJavaScriptUrl)));
} }
QMetaObject::invokeMethod(root, "setShown", Q_ARG(const QVariant&, QVariant(true))); QMetaObject::invokeMethod(root, "setShown", Q_ARG(const QVariant&, QVariant(true)));
if (_toolbarMode && _desktopWindow) { if (_toolbarMode && _desktopWindow) {
QMetaObject::invokeMethod(root, "setResizable", Q_ARG(const QVariant&, QVariant(false))); QMetaObject::invokeMethod(root, "setResizable", Q_ARG(const QVariant&, QVariant(false)));
} }
QMetaObject::invokeMethod(root, "loadWebUrl", Q_ARG(const QVariant&, QVariant(url)), Q_ARG(const QVariant&, QVariant(injectedJavaScriptUrl))); _state = State::Web;
emit screenChanged(QVariant("Web"), QVariant(url));
_currentPathLoaded = QVariant(url);
} else {
qWarning() << "Unable to load web content due to missing root";
} }
_state = State::Web;
emit screenChanged(QVariant("Web"), QVariant(url));
_currentPathLoaded = QVariant(url);
} }
TabletButtonProxy* TabletProxy::addButton(const QVariant& properties) { TabletButtonProxy* TabletProxy::addButton(const QVariant& properties) {