From 25bd6fa2c13e827859a04b7076cbab1106465548 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 20 Jan 2017 10:27:08 -0800 Subject: [PATCH 1/3] move recording interface to Agent/Application only --- assignment-client/src/Agent.cpp | 3 +++ interface/src/Application.cpp | 3 +++ libraries/script-engine/src/ScriptEngine.cpp | 3 --- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 234ae239cd..c462139ae9 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -376,6 +376,9 @@ void Agent::executeScript() { _scriptEngine->registerGlobalObject("EntityViewer", &_entityViewer); + auto recordingInterface = DependencyManager::get(); + _scriptEngine->registerGlobalObject("Recording", recordingInterface.data()); + // we need to make sure that init has been called for our EntityScriptingInterface // so that it actually has a jurisdiction listener when we ask it for it next entityScriptingInterface->init(); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 5d32a830d0..ad2faa1047 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5485,6 +5485,9 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEngine* scri scriptEngine->registerGlobalObject("Controller", scriptingInterface.data()); UserInputMapper::registerControllerTypes(scriptEngine); + auto recordingInterface = DependencyManager::get(); + _scriptEngine->registerGlobalObject("Recording", recordingInterface.data()); + // connect this script engines printedMessage signal to the global ScriptEngines these various messages connect(scriptEngine, &ScriptEngine::printedMessage, DependencyManager::get().data(), &ScriptEngines::onPrintedMessage); connect(scriptEngine, &ScriptEngine::errorMessage, DependencyManager::get().data(), &ScriptEngines::onErrorMessage); diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index cedf5a4ed8..dd1f5a707f 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -562,9 +562,6 @@ void ScriptEngine::init() { // constants globalObject().setProperty("TREE_SCALE", newVariant(QVariant(TREE_SCALE))); - auto recordingInterface = DependencyManager::get(); - registerGlobalObject("Recording", recordingInterface.data()); - registerGlobalObject("Assets", &_assetScriptingInterface); registerGlobalObject("Resources", DependencyManager::get().data()); } From eb033c797a01a2bdc17e2530f25acffb5c5a582f Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 20 Jan 2017 10:36:57 -0800 Subject: [PATCH 2/3] fallback if local URL empty when loading default scripts --- libraries/script-engine/src/ScriptsModel.cpp | 67 ++++++++++---------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/libraries/script-engine/src/ScriptsModel.cpp b/libraries/script-engine/src/ScriptsModel.cpp index 82ca26a03a..31f3a96fbd 100644 --- a/libraries/script-engine/src/ScriptsModel.cpp +++ b/libraries/script-engine/src/ScriptsModel.cpp @@ -156,39 +156,42 @@ void ScriptsModel::reloadDefaultFiles() { void ScriptsModel::requestDefaultFiles(QString marker) { QUrl url(defaultScriptsLocation()); - if (url.isLocalFile()) { - // if the url indicates a local directory, use QDirIterator - QString localDir = expandScriptUrl(url).toLocalFile(); - int localDirPartCount = localDir.split("/").size(); - if (localDir.endsWith("/")) { - localDirPartCount--; - } - #ifdef Q_OS_WIN - localDirPartCount++; // one for the drive letter - #endif - QDirIterator it(localDir, QStringList() << "*.js", QDir::Files, QDirIterator::Subdirectories); - while (it.hasNext()) { - QUrl jsFullPath = QUrl::fromLocalFile(it.next()); - QString jsPartialPath = jsFullPath.path().split("/").mid(localDirPartCount).join("/"); - jsFullPath = normalizeScriptURL(jsFullPath); - _treeNodes.append(new TreeNodeScript(jsPartialPath, jsFullPath.toString(), SCRIPT_ORIGIN_DEFAULT)); - } - _loadingScripts = false; - } else { - // the url indicates http(s), use QNetworkRequest - QUrlQuery query; - query.addQueryItem(PREFIX_PARAMETER_NAME, "."); - if (!marker.isEmpty()) { - query.addQueryItem(MARKER_PARAMETER_NAME, marker); - } - url.setQuery(query); + // targets that don't have a scripts folder in the appropriate location will have an empty URL here + if (!url.isEmpty()) { + if (url.isLocalFile()) { + // if the url indicates a local directory, use QDirIterator + QString localDir = expandScriptUrl(url).toLocalFile(); + int localDirPartCount = localDir.split("/").size(); + if (localDir.endsWith("/")) { + localDirPartCount--; + } +#ifdef Q_OS_WIN + localDirPartCount++; // one for the drive letter +#endif + QDirIterator it(localDir, QStringList() << "*.js", QDir::Files, QDirIterator::Subdirectories); + while (it.hasNext()) { + QUrl jsFullPath = QUrl::fromLocalFile(it.next()); + QString jsPartialPath = jsFullPath.path().split("/").mid(localDirPartCount).join("/"); + jsFullPath = normalizeScriptURL(jsFullPath); + _treeNodes.append(new TreeNodeScript(jsPartialPath, jsFullPath.toString(), SCRIPT_ORIGIN_DEFAULT)); + } + _loadingScripts = false; + } else { + // the url indicates http(s), use QNetworkRequest + QUrlQuery query; + query.addQueryItem(PREFIX_PARAMETER_NAME, "."); + if (!marker.isEmpty()) { + query.addQueryItem(MARKER_PARAMETER_NAME, marker); + } + url.setQuery(query); - QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); - QNetworkRequest request(url); - request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); - request.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT); - QNetworkReply* reply = networkAccessManager.get(request); - connect(reply, SIGNAL(finished()), SLOT(downloadFinished())); + QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); + QNetworkRequest request(url); + request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); + request.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT); + QNetworkReply* reply = networkAccessManager.get(request); + connect(reply, SIGNAL(finished()), SLOT(downloadFinished())); + } } } From 1b778a3ee04533d219dd4c61c6c3a18184dd8289 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 20 Jan 2017 10:42:07 -0800 Subject: [PATCH 3/3] fail quietly if local injection cannot happen --- libraries/audio/src/AudioInjector.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/audio/src/AudioInjector.cpp index 48b44bd3d3..86cbc98d84 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/audio/src/AudioInjector.cpp @@ -180,9 +180,6 @@ bool AudioInjector::injectLocally() { } else { qCDebug(audio) << "AudioInjector::injectLocally called without any data in Sound QByteArray"; } - - } else { - qCDebug(audio) << "AudioInjector::injectLocally cannot inject locally with no local audio interface present."; } return success;