Index: native_client_sdk/src/examples/demo/nacl_io/example.js |
diff --git a/native_client_sdk/src/examples/demo/nacl_io/example.js b/native_client_sdk/src/examples/demo/nacl_io/example.js |
deleted file mode 100644 |
index 128bcd037013552b9f62742984e069d5f908498e..0000000000000000000000000000000000000000 |
--- a/native_client_sdk/src/examples/demo/nacl_io/example.js |
+++ /dev/null |
@@ -1,349 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-function moduleDidLoad() { |
- common.hideModule(); |
-} |
- |
-function $(id) { |
- return document.getElementById(id); |
-} |
- |
-// Called by the common.js module. |
-function domContentLoaded(name, tc, config, width, height) { |
- navigator.webkitPersistentStorage.requestQuota(1024 * 1024, |
- function(bytes) { |
- common.updateStatus( |
- 'Allocated ' + bytes + ' bytes of persistant storage.'); |
- common.attachDefaultListeners(); |
- common.createNaClModule(name, tc, config, width, height); |
- }, |
- function(e) { alert('Failed to allocate space') }); |
-} |
- |
-// Called by the common.js module. |
-function attachListeners() { |
- var radioEls = document.querySelectorAll('input[type="radio"]'); |
- for (var i = 0; i < radioEls.length; ++i) { |
- radioEls[i].addEventListener('click', onRadioClicked); |
- } |
- |
- // Wire up the 'click' event for each function's button. |
- var functionEls = document.querySelectorAll('.function'); |
- for (var i = 0; i < functionEls.length; ++i) { |
- var functionEl = functionEls[i]; |
- var id = functionEl.getAttribute('id'); |
- var buttonEl = functionEl.querySelector('button'); |
- |
- // The function name matches the element id. |
- var func = window[id]; |
- buttonEl.addEventListener('click', func); |
- } |
- |
- $('pipe_input_box').addEventListener('keypress', onPipeInput) |
- $('pipe_output').disabled = true; |
- |
- $('pipe_name').addEventListener('change', |
- function() { $('pipe_output').value = ''; }) |
-} |
- |
-// Called with keypress events on the pipe input box |
-function onPipeInput(e) { |
- // Create an arraybuffer containing the 16-bit char code |
- // from the keypress event. |
- var buffer = new ArrayBuffer(1*2); |
- var bufferView = new Uint16Array(buffer); |
- bufferView[0] = e.charCode; |
- |
- // Pass the buffer in a dictionary over the NaCl module |
- var pipeSelect = $('pipe_name'); |
- var pipeName = pipeSelect[pipeSelect.selectedIndex].value; |
- var message = { |
- pipe: pipeName, |
- operation: 'write', |
- payload: buffer, |
- }; |
- nacl_module.postMessage(message); |
- e.preventDefault(); |
- return false; |
-} |
- |
-function onRadioClicked(e) { |
- var divId = this.id.slice(5); // skip "radio" |
- var functionEls = document.querySelectorAll('.function'); |
- for (var i = 0; i < functionEls.length; ++i) { |
- var visible = functionEls[i].id === divId; |
- if (functionEls[i].id === divId) |
- functionEls[i].removeAttribute('hidden'); |
- else |
- functionEls[i].setAttribute('hidden', ''); |
- } |
-} |
- |
-function addNameToSelectElements(cssClass, handle, name) { |
- var text = '[' + handle + '] ' + name; |
- var selectEls = document.querySelectorAll(cssClass); |
- for (var i = 0; i < selectEls.length; ++i) { |
- var optionEl = document.createElement('option'); |
- optionEl.setAttribute('value', handle); |
- optionEl.appendChild(document.createTextNode(text)); |
- selectEls[i].appendChild(optionEl); |
- } |
-} |
- |
-function removeNameFromSelectElements(cssClass, handle) { |
- var optionEls = document.querySelectorAll(cssClass + ' > option'); |
- for (var i = 0; i < optionEls.length; ++i) { |
- var optionEl = optionEls[i]; |
- if (optionEl.value == handle) { |
- var selectEl = optionEl.parentNode; |
- selectEl.removeChild(optionEl); |
- } |
- } |
-} |
- |
-var filehandle_map = {}; |
-var dirhandle_map = {}; |
- |
-function fopen(e) { |
- var filename = $('fopenFilename').value; |
- var access = $('fopenMode').value; |
- postCall('fopen', filename, access, function(filename, filehandle) { |
- filehandle_map[filehandle] = filename; |
- |
- addNameToSelectElements('.file-handle', filehandle, filename); |
- common.logMessage('File ' + filename + ' opened successfully.'); |
- }); |
-} |
- |
-function fclose(e) { |
- var filehandle = parseInt($('fcloseHandle').value, 10); |
- postCall('fclose', filehandle, function(filehandle) { |
- var filename = filehandle_map[filehandle]; |
- removeNameFromSelectElements('.file-handle', filehandle, filename); |
- common.logMessage('File ' + filename + ' closed successfully.'); |
- }); |
-} |
- |
-function fread(e) { |
- var filehandle = parseInt($('freadHandle').value, 10); |
- var numBytes = parseInt($('freadBytes').value, 10); |
- postCall('fread', filehandle, numBytes, function(filehandle, data) { |
- var filename = filehandle_map[filehandle]; |
- common.logMessage('Read "' + data + '" from file ' + filename + '.'); |
- }); |
-} |
- |
-function fwrite(e) { |
- var filehandle = parseInt($('fwriteHandle').value, 10); |
- var data = $('fwriteData').value; |
- postCall('fwrite', filehandle, data, function(filehandle, bytesWritten) { |
- var filename = filehandle_map[filehandle]; |
- common.logMessage('Wrote ' + bytesWritten + ' bytes to file ' + filename + |
- '.'); |
- }); |
-} |
- |
-function fseek(e) { |
- var filehandle = parseInt($('fseekHandle').value, 10); |
- var offset = parseInt($('fseekOffset').value, 10); |
- var whence = parseInt($('fseekWhence').value, 10); |
- postCall('fseek', filehandle, offset, whence, function(filehandle, filepos) { |
- var filename = filehandle_map[filehandle]; |
- common.logMessage('Seeked to location ' + filepos + ' in file ' + filename + |
- '.'); |
- }); |
-} |
- |
-function fflush(e) { |
- var filehandle = parseInt($('fflushHandle').value, 10); |
- postCall('fflush', filehandle, function(filehandle, filepos) { |
- var filename = filehandle_map[filehandle]; |
- common.logMessage('flushed ' + filename + '.'); |
- }); |
-} |
- |
-function stat(e) { |
- var filename = $('statFilename').value; |
- postCall('stat', filename, function(filename, size) { |
- common.logMessage('File ' + filename + ' has size ' + size + '.'); |
- }); |
-} |
- |
-function opendir(e) { |
- var dirname = $('opendirDirname').value; |
- postCall('opendir', dirname, function(dirname, dirhandle) { |
- dirhandle_map[dirhandle] = dirname; |
- |
- addNameToSelectElements('.dir-handle', dirhandle, dirname); |
- common.logMessage('Directory ' + dirname + ' opened successfully.'); |
- }); |
-} |
- |
-function readdir(e) { |
- var dirhandle = parseInt($('readdirHandle').value, 10); |
- postCall('readdir', dirhandle, function(dirhandle, ino, name) { |
- var dirname = dirhandle_map[dirhandle]; |
- if (ino === undefined) { |
- common.logMessage('End of directory.'); |
- } else { |
- common.logMessage('Read entry ("' + name + '", ino = ' + ino + |
- ') from directory ' + dirname + '.'); |
- } |
- }); |
-} |
- |
-function closedir(e) { |
- var dirhandle = parseInt($('closedirHandle').value, 10); |
- postCall('closedir', dirhandle, function(dirhandle) { |
- var dirname = dirhandle_map[dirhandle]; |
- delete dirhandle_map[dirhandle]; |
- |
- removeNameFromSelectElements('.dir-handle', dirhandle, dirname); |
- common.logMessage('Directory ' + dirname + ' closed successfully.'); |
- }); |
-} |
- |
-function mkdir(e) { |
- var dirname = $('mkdirDirname').value; |
- var mode = parseInt($('mkdirMode').value, 10); |
- postCall('mkdir', dirname, mode, function(dirname) { |
- common.logMessage('Directory ' + dirname + ' created successfully.'); |
- }); |
-} |
- |
-function rmdir(e) { |
- var dirname = $('rmdirDirname').value; |
- postCall('rmdir', dirname, function(dirname) { |
- common.logMessage('Directory ' + dirname + ' removed successfully.'); |
- }); |
-} |
- |
-function chdir(e) { |
- var dirname = $('chdirDirname').value; |
- postCall('chdir', dirname, function(dirname) { |
- common.logMessage('Changed directory to: ' + dirname + '.'); |
- }); |
-} |
- |
-function getcwd(e) { |
- postCall('getcwd', function(dirname) { |
- common.logMessage('getcwd: ' + dirname + '.'); |
- }); |
-} |
- |
-function getaddrinfo(e) { |
- var name = $('getaddrinfoName').value; |
- var family = $('getaddrinfoFamily').value; |
- postCall('getaddrinfo', name, family, function(name, addrType) { |
- common.logMessage('getaddrinfo returned successfully'); |
- common.logMessage('ai_cannonname = ' + name + '.'); |
- var count = 1; |
- for (var i = 1; i < arguments.length; i+=2) { |
- var msg = 'Address number ' + count + ' = ' + arguments[i] + |
- ' (' + arguments[i+1] + ')'; |
- common.logMessage(msg); |
- count += 1; |
- } |
- }); |
-} |
- |
-function gethostbyname(e) { |
- var name = $('gethostbynameName').value; |
- postCall('gethostbyname', name, function(name, addrType) { |
- common.logMessage('gethostbyname returned successfully'); |
- common.logMessage('h_name = ' + name + '.'); |
- common.logMessage('h_addr_type = ' + addrType + '.'); |
- for (var i = 2; i < arguments.length; i++) { |
- common.logMessage('Address number ' + (i-1) + ' = ' + arguments[i] + '.'); |
- } |
- }); |
-} |
- |
-function connect(e) { |
- var host = $('connectHost').value; |
- var port = parseInt($('connectPort').value, 10); |
- postCall('connect', host, port, function(sockhandle) { |
- common.logMessage('connected'); |
- addNameToSelectElements('.sock-handle', sockhandle, '[socket]'); |
- }); |
-} |
- |
-function recv(e) { |
- var handle = parseInt($('recvHandle').value, 10); |
- var bufferSize = parseInt($('recvBufferSize').value, 10); |
- postCall('recv', handle, bufferSize, function(messageLen, message) { |
- common.logMessage("received " + messageLen + ' bytes: ' + message); |
- }); |
-} |
- |
-function send(e) { |
- var handle = parseInt($('sendHandle').value, 10); |
- var message = $('sendMessage').value; |
- postCall('send', handle, message, function(sentBytes) { |
- common.logMessage("sent bytes: " + sentBytes); |
- }); |
-} |
- |
-function close(e) { |
- var handle = parseInt($('closeHandle').value, 10); |
- postCall('close', handle, function(sock) { |
- removeNameFromSelectElements('.sock-handle', sock, "[socket]"); |
- common.logMessage("closed socket: " + sock); |
- }); |
-} |
- |
-var funcToCallback = {}; |
- |
-function postCall(func) { |
- var callback = arguments[arguments.length - 1]; |
- funcToCallback[func] = callback; |
- |
- nacl_module.postMessage({ |
- cmd: func, |
- args: Array.prototype.slice.call(arguments, 1, -1) |
- }); |
-} |
- |
-function ArrayBufferToString(buf) { |
- return String.fromCharCode.apply(null, new Uint16Array(buf)); |
-} |
- |
-// Called by the common.js module. |
-function handleMessage(message_event) { |
- var data = message_event.data; |
- if ((typeof(data) === 'string' || data instanceof String)) { |
- common.logMessage(data); |
- } else if (data instanceof Object) { |
- var pipeName = data['pipe'] |
- if (pipeName !== undefined) { |
- // Message for JavaScript I/O pipe |
- var operation = data['operation']; |
- if (operation == 'write') { |
- $('pipe_output').value += ArrayBufferToString(data['payload']); |
- } else if (operation == 'ack') { |
- common.logMessage(pipeName + ": ack:" + data['payload']); |
- } else { |
- common.logMessage('Got unexpected pipe operation: ' + operation); |
- } |
- } else { |
- // Result from a function call. |
- var params = data.args; |
- var funcName = data.cmd; |
- var callback = funcToCallback[funcName]; |
- |
- if (!callback) { |
- common.logMessage('Error: Bad message ' + funcName + |
- ' received from NaCl module.'); |
- return; |
- } |
- |
- delete funcToCallback[funcName]; |
- callback.apply(null, params); |
- } |
- } else { |
- common.logMessage('Error: Unknow message `' + data + |
- '` received from NaCl module.'); |
- } |
-} |