From dd45197bcd174e16adc3b738bf390cc3018a5a28 Mon Sep 17 00:00:00 2001 From: obscuren Date: Mon, 5 May 2014 11:56:05 +0200 Subject: Added storage watch --- ethereal/assets/ethereum.js | 26 +++++++++++++++++++++++--- ethereal/assets/qml/webapp.qml | 16 ++++++++++++++-- ethereal/assets/samplecoin/samplecoin.html | 12 ++++++------ ethereal/ui/ext_app.go | 7 +++---- ethereal/ui/html_container.go | 5 ++--- 5 files changed, 48 insertions(+), 18 deletions(-) (limited to 'ethereal') diff --git a/ethereal/assets/ethereum.js b/ethereal/assets/ethereum.js index 64a7ff47c..e83d252b2 100644 --- a/ethereal/assets/ethereum.js +++ b/ethereal/assets/ethereum.js @@ -36,6 +36,7 @@ window.eth = { postData({call: "getKey"}, cb); }, + getBalanceAt: function(address, cb) { postData({call: "getBalance", args: [address]}, cb); }, @@ -101,7 +102,13 @@ window.eth = { var callbacks = eth._onCallbacks[event]; if(callbacks !== undefined) { for(var i = 0; i < callbacks.length; i++) { - callbacks[i](data); + // Figure out whether the returned data was an array + // array means multiple return arguments (multiple params) + if(data instanceof Array) { + callbacks[i].apply(this, data); + } else { + callbacks[i].call(this, data); + } } } }, @@ -109,6 +116,11 @@ window.eth = { window.eth._callbacks = {} window.eth._onCallbacks = {} +function hello() { + debug("hello") + window.dataTest = true; +} + function debug(/**/) { var args = arguments; var msg = "" @@ -120,6 +132,7 @@ function debug(/**/) { } } + postData({call:"debug", args:[msg]}) document.getElementById("debug").innerHTML += "
" + msg } @@ -146,8 +159,14 @@ navigator.qt.onmessage = function(ev) { if(data._seed) { var cb = eth._callbacks[data._seed]; if(cb) { - // Call the callback - cb(data.data); + // Figure out whether the returned data was an array + // array means multiple return arguments (multiple params) + if(data.data instanceof Array) { + cb.apply(this, data.data) + } else { + cb.call(this, data.data) + } + // Remove the "trigger" callback delete eth._callbacks[ev._seed]; } @@ -211,3 +230,4 @@ String.prototype.hex2bin = function() { String.prototype.num2bin = function() { return ("0x"+parseInt(this).toString(16)).bin() } + diff --git a/ethereal/assets/qml/webapp.qml b/ethereal/assets/qml/webapp.qml index 4bac12ef0..2267ab4bf 100644 --- a/ethereal/assets/qml/webapp.qml +++ b/ethereal/assets/qml/webapp.qml @@ -41,7 +41,7 @@ ApplicationWindow { experimental.preferences.developerExtrasEnabled: true experimental.userScripts: [ui.assetPath("ethereum.js")] experimental.onMessageReceived: { - //console.log("[onMessageReceived]: ", message.data) + console.log("[onMessageReceived]: ", message.data) // TODO move to messaging.js var data = JSON.parse(message.data) @@ -98,6 +98,15 @@ ApplicationWindow { window[key] = data.args[key]; } } + break; + case "debug": + console.log(data.args[0]); + break; + case "test": + console.log("in") + webview.experimental.evaluateJavaScript("hello()") + console.log("out") + break; } } catch(e) { console.log(data.call + ": " + e) @@ -124,7 +133,10 @@ ApplicationWindow { function onObjectChangeCb(stateObject) { postEvent("object:"+stateObject.address(), stateObject) } - function onStorageChangeCb() { + function onStorageChangeCb(storageObject) { + console.log("storage object cb", storageObject) + var ev = ["storage", storageObject.stateAddress, storageObject.address].join(":"); + postEvent(ev, [storageObject.address, storageObject.value]) } } diff --git a/ethereal/assets/samplecoin/samplecoin.html b/ethereal/assets/samplecoin/samplecoin.html index 02e2bd6ea..fb0c22c7f 100644 --- a/ethereal/assets/samplecoin/samplecoin.html +++ b/ethereal/assets/samplecoin/samplecoin.html @@ -5,9 +5,11 @@ +