diff options
-rw-r--r-- | AUTHORS | 1 | ||||
-rw-r--r-- | src/closure-externs.js | 60 | ||||
-rw-r--r-- | src/runtime.js | 5 | ||||
-rw-r--r-- | tools/profile_stripper.py | 24 | ||||
-rw-r--r-- | tools/profile_used.py | 11 |
5 files changed, 89 insertions, 12 deletions
@@ -130,4 +130,5 @@ a license to everyone to use it as detailed in LICENSE.) * Nicolas Peri <nicox@shivaengine.com> (copyright owned by ShiVa Technologies, SAS) * Bernhard Fey <e-male@web.de> * Dave Nicponski <dave.nicponski@gmail.com> +* Jonathan Jarri <noxalus@gmail.com> diff --git a/src/closure-externs.js b/src/closure-externs.js index a82aa669..fe6d84aa 100644 --- a/src/closure-externs.js +++ b/src/closure-externs.js @@ -108,3 +108,63 @@ var flags = {}; flags.binary; +/** + * @fileoverview Definitions for W3C's Gamepad specification. + * @see http://www.w3.org/TR/gamepad/ + * @externs + */ + +/** + * @typedef {{id: string, index: number, timestamp: number, axes: Array.<number>, buttons: Array.<number>}} + */ +var Gamepad; + +/** +* @type {Array.<number>} +*/ +Gamepad.buttons; + +/** +* @type {Array.<number>} +*/ +Gamepad.axes; + +/** +* @type {number} +*/ +Gamepad.index; + +/** +* @type {string} +*/ +Gamepad.id; + +/** +* @type {number} +*/ +Gamepad.timestamp; + +/** + * @return {Array.<Gamepad>} + */ +navigator.getGamepads = function() {}; + +/** + * @return {Array.<Gamepad>} + */ +navigator.webkitGetGamepads = function() {}; + +/** + * @return {Array.<Gamepad>} + */ +navigator.webkitGamepads = function() {}; + +/** + * @return {Array.<Gamepad>} + */ +navigator.mozGamepads = function() {}; + +/** + * @return {Array.<Gamepad>} + */ +navigator.gamepads = function() {}; diff --git a/src/runtime.js b/src/runtime.js index 97de7473..2ae68279 100644 --- a/src/runtime.js +++ b/src/runtime.js @@ -484,6 +484,11 @@ var Runtime = { return ret; } this.processJSString = function processJSString(string) { + /* TODO: use TextEncoder when present, + var encoder = new TextEncoder(); + encoder['encoding'] = "utf-8"; + var utf8Array = encoder['encode'](aMsg.data); + */ string = unescape(encodeURIComponent(string)); var ret = []; for (var i = 0; i < string.length; i++) { diff --git a/tools/profile_stripper.py b/tools/profile_stripper.py index bbc23937..3e538ef3 100644 --- a/tools/profile_stripper.py +++ b/tools/profile_stripper.py @@ -7,15 +7,37 @@ import sys, json used = json.loads(open(sys.argv[1]).read()) show = True +in_table = False for orig in open(sys.argv[2]).readlines(): line = orig.strip() + if orig.startswith('function _') and line.endswith(('){', ') {')): name = line.split(' ')[1].split('(')[0] if name.startswith('_') and not used.get(name): #print >> sys.stderr, 'remove', name show = False - if show: print orig, + + if line.startswith('var FUNCTION_TABLE'): + in_table = True + + if in_table: + start = 0 + if 'var ' in line: + start = line.index('[')+1 + end = len(line) + if ']' in line: + end = line.index(']') + contents = line[start:end] + fixed = map(lambda name: '"' + name + '"' if not used.get(name) else name, contents.split(',')) + print (line[:start] + ','.join(fixed) + line[end:]).replace('""', '') + else: + if show: + print orig, + if orig.startswith('}'): show = True + if in_table and line.endswith(';'): + in_table = False + diff --git a/tools/profile_used.py b/tools/profile_used.py index b954f7d1..45420e0f 100644 --- a/tools/profile_used.py +++ b/tools/profile_used.py @@ -7,10 +7,6 @@ dump(JSON.stringify(usedFunctions)) import sys print 'var usedFunctions = {};' -#print "function getFuncName(f) { return f.toString().split(' ')[1].split('(')[0] }" -print "function getFuncName(f) { return f.name }" - -last = [] for line in open(sys.argv[1]).readlines(): line = line.strip() @@ -18,11 +14,4 @@ for line in open(sys.argv[1]).readlines(): if line.startswith('function _') and line.endswith(('){', ') {')): name = line.split(' ')[1].split('(')[0] print 'usedFunctions["%s"] = 1;' % name - if line.startswith('var FUNCTION_TABLE'): - name = line.split(' ')[1].split('=')[0] - last += ['for (var i = 0; i < %s.length; i++) if (typeof %s[i] === "function") usedFunctions[getFuncName(%s[i])] = 1;' % (name, name, name)] - if len(last) > 0 and line.endswith(';'): - for l in last: - print l - last = [] |