summaryrefslogtreecommitdiff
path: root/daemon/jskitmanager.cpp
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2014-12-06 21:14:24 +0100
committerJavier <dev.git@javispedro.com>2014-12-06 21:14:24 +0100
commit3785de21ec2e466535a45183b6f9082b5dfba976 (patch)
treedeb5087ad98aca7491f1ac37560bd8c7aa96c8c4 /daemon/jskitmanager.cpp
parent0a92face6b035a26aad3d4d7ffa5a72b463e4c2a (diff)
add a polyfill for typed arrays, and many other compat changes
Diffstat (limited to 'daemon/jskitmanager.cpp')
-rw-r--r--daemon/jskitmanager.cpp45
1 files changed, 28 insertions, 17 deletions
diff --git a/daemon/jskitmanager.cpp b/daemon/jskitmanager.cpp
index 894d6f5..c5a80e9 100644
--- a/daemon/jskitmanager.cpp
+++ b/daemon/jskitmanager.cpp
@@ -100,6 +100,29 @@ void JSKitManager::handleAppMessage(const QUuid &uuid, const QVariantMap &data)
}
}
+bool JSKitManager::loadJsFile(const QString &filename)
+{
+ Q_ASSERT(_engine);
+
+ QFile file(filename);
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ logger()->warn() << "Failed to load JS file:" << file.fileName();
+ return false;
+ }
+
+ logger()->debug() << "now parsing" << file.fileName();
+
+ QJSValue result = _engine->evaluate(QString::fromUtf8(file.readAll()), file.fileName());
+ if (result.isError()) {
+ logger()->warn() << "error while evaluating JS script:" << describeError(result);
+ return false;
+ }
+
+ logger()->debug() << "JS script evaluated";
+
+ return true;
+}
+
void JSKitManager::startJsApp()
{
if (_engine) stopJsApp();
@@ -136,24 +159,13 @@ void JSKitManager::startJsApp()
);
Q_ASSERT(!result.isError());
- QFile scriptFile(_curApp.path() + "/pebble-js-app.js");
- if (!scriptFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
- logger()->warn() << "Failed to open JS file at:" << scriptFile.fileName();
- stopJsApp();
- return;
- }
-
- QString script = QString::fromUtf8(scriptFile.readAll());
+ // Polyfills...
+ loadJsFile("/usr/share/pebble/js/typedarray.js");
- logger()->debug() << "now parsing" << scriptFile.fileName();
-
- result = _engine->evaluate(script, scriptFile.fileName());
- if (result.isError()) {
- logger()->warn() << "error while evaluating JSKit script:" << describeError(result);
- }
-
- logger()->debug() << "JS script evaluated";
+ // Now load the actual script
+ loadJsFile(_curApp.path() + "/pebble-js-app.js");
+ // We try to invoke the callbacks even if script parsing resulted in error...
_jspebble->invokeCallbacks("ready");
}
@@ -173,5 +185,4 @@ void JSKitManager::stopJsApp()
_jsgeo = 0;
_jspebble->deleteLater();
_jspebble = 0;
-
}