aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--src/closure-externs.js60
-rw-r--r--src/runtime.js5
-rw-r--r--tools/profile_stripper.py24
-rw-r--r--tools/profile_used.py11
5 files changed, 89 insertions, 12 deletions
diff --git a/AUTHORS b/AUTHORS
index 076ce1cb..9d522b4e 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -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 = []