Index: native_client_sdk/src/gonacl_appengine/static/pnacl-demo/example.js |
diff --git a/native_client_sdk/src/gonacl_appengine/static/pnacl-demo/example.js b/native_client_sdk/src/gonacl_appengine/static/pnacl-demo/example.js |
index 9abdc0eedbcf38cd3cef7217c849ad94952064bf..f43e4a72c2f874ba3c4dc41b68fac040c4579999 100644 |
--- a/native_client_sdk/src/gonacl_appengine/static/pnacl-demo/example.js |
+++ b/native_client_sdk/src/gonacl_appengine/static/pnacl-demo/example.js |
@@ -66,6 +66,7 @@ function createNaClModule(name, width, height, attrs) { |
function attachDefaultListeners() { |
var listenerDiv = document.getElementById('listener'); |
listenerDiv.addEventListener('load', moduleDidLoad, true); |
+ listenerDiv.addEventListener('error', moduleLoadError, true); |
listenerDiv.addEventListener('progress', moduleLoadProgress, true); |
listenerDiv.addEventListener('message', handleMessage, true); |
listenerDiv.addEventListener('crash', handleCrash, true); |
@@ -102,9 +103,16 @@ function moduleDidLoad() { |
bar.value = 100; |
bar.max = 100; |
naclModule = document.getElementById('nacl_module'); |
- updateStatus('RUNNING'); |
+ hideStatus(); |
+} |
+ |
+function hideStatus() { |
+ document.getElementById('statusField').style.display = 'none'; |
+ document.getElementById('progress').style.display = 'none'; |
+} |
- setAuxElementsVisibility(true); |
+function moduleLoadError(event) { |
+ updateStatus('Load failed.'); |
} |
/** |
@@ -113,6 +121,8 @@ function moduleDidLoad() { |
* @param {Object} event |
*/ |
function moduleLoadProgress(event) { |
+ document.getElementById('progress').style.display = 'block'; |
+ |
var loadPercent = 0.0; |
var bar = document.getElementById('progress'); |
bar.max = 100; |
@@ -139,53 +149,6 @@ function startsWith(s, prefix) { |
} |
/** |
- * Add a message to an element with id "log". |
- * |
- * This function is used by the default "log:" message handler. |
- * |
- * @param {string} message The message to log. |
- */ |
-function logMessage(message) { |
- document.getElementById('log').textContent = logMessageArray.join(''); |
- console.log(message); |
-} |
- |
-var defaultMessageTypes = { |
- 'alert': alert, |
- 'log': logMessage |
-}; |
- |
-/** |
- * Called when the NaCl module sends a message to JavaScript (via |
- * PPB_Messaging.PostMessage()) |
- * |
- * This event listener is registered in createNaClModule above. |
- * |
- * @param {Event} message_event A message event. message_event.data contains |
- * the data sent from the NaCl module. |
- */ |
-function handleMessage(message_event) { |
- if (typeof message_event.data === 'string') { |
- for (var type in defaultMessageTypes) { |
- if (defaultMessageTypes.hasOwnProperty(type)) { |
- if (startsWith(message_event.data, type + ':')) { |
- func = defaultMessageTypes[type]; |
- func(message_event.data.slice(type.length + 1)); |
- return; |
- } |
- } |
- } |
- } |
- |
- if (typeof window.handleMessage !== 'undefined') { |
- window.handleMessage(message_event); |
- return; |
- } |
- |
- logMessage('Unhandled message: ' + message_event.data + '\n'); |
-} |
- |
-/** |
* Called when the DOM content has loaded; i.e. the page's document is fully |
* parsed. At this point, we can safely query any elements in the document via |
* document.querySelector, document.getElementById, etc. |
@@ -196,11 +159,7 @@ function handleMessage(message_event) { |
* @param {Object} attrs Optional dictionary of additional attributes. |
*/ |
function domContentLoaded(name, width, height, attrs) { |
- // If the page loads before the Native Client module loads, then set the |
- // status message indicating that the module is still loading. Otherwise, |
- // do not change the status message. |
- setAuxElementsVisibility(false); |
- updateStatus('Page loaded.'); |
+ updateStatus('Loading...'); |
if (!browserSupportsPNaCl()) { |
updateStatus('Browser does not support PNaCl or PNaCl is disabled'); |
} else if (naclModule == null) { |
@@ -228,25 +187,20 @@ function domContentLoaded(name, width, height, attrs) { |
function updateStatus(opt_message) { |
var statusField = document.getElementById('statusField'); |
if (statusField) { |
- statusField.innerHTML = opt_message; |
- } |
-} |
- |
-function postThreadFunc(numThreads) { |
- return function() { |
- naclModule.postMessage({'message' : 'set_threads', |
- 'value' : numThreads}); |
+ statusField.style.display = 'block'; |
+ statusField.textContent = opt_message; |
} |
} |
// Add event listeners after the NaCl module has loaded. These listeners will |
// forward messages to the NaCl module via postMessage() |
function attachListeners() { |
- var threads = [0, 1, 2, 4, 6, 8, 12, 16, 24, 32]; |
- for (var i = 0; i < threads.length; i++) { |
- document.getElementById('radio' + i).addEventListener('click', |
- postThreadFunc(threads[i])); |
- } |
+ document.getElementById('threadCount').addEventListener('change', |
+ function() { |
+ var value = parseInt(document.getElementById('threadCount').value); |
+ naclModule.postMessage({'message': 'set_threads', |
+ 'value': value}); |
+ }); |
document.getElementById('zoomRange').addEventListener('change', |
function() { |
var value = parseFloat(document.getElementById('zoomRange').value); |