1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// found in the LICENSE file. 4868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)function moduleDidLoad() { 6868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)function postThreadFunc(numThreads) { 9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return function () { 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch common.naclModule.postMessage({'message' : 'set_threads', 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 'value' : numThreads}); 12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Add event listeners after the NaCl module has loaded. These listeners will 16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// forward messages to the NaCl module via postMessage() 17868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)function attachListeners() { 18868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) document.getElementById('benchmark').addEventListener('click', 19868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) function() { 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch common.naclModule.postMessage({'message' : 'run_benchmark'}); 21868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) common.updateStatus('BENCHMARKING... (please wait)'); 22868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) }); 23868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) document.getElementById('drawPoints').addEventListener('click', 24868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) function() { 25868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) var checked = document.getElementById('drawPoints').checked; 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch common.naclModule.postMessage({'message' : 'draw_points', 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 'value' : checked}); 28868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) }); 29868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) document.getElementById('drawInteriors').addEventListener('click', 30868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) function() { 31868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) var checked = document.getElementById('drawInteriors').checked; 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch common.naclModule.postMessage({'message' : 'draw_interiors', 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 'value' : checked}); 34868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) }); 35868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) var threads = [0, 1, 2, 4, 6, 8, 12, 16, 24, 32]; 36868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) for (var i = 0; i < threads.length; i++) { 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch document.getElementById('radio' + i).addEventListener('click', 38868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) postThreadFunc(threads[i])); 39868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) document.getElementById('pointRange').addEventListener('input', 41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) function() { 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch var value = parseFloat(document.getElementById('pointRange').value); 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch common.naclModule.postMessage({'message' : 'set_points', 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 'value' : value}); 45868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) document.getElementById('pointCount').textContent = value + ' points'; 46868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) }); 47868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 48868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 49868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Handle a message coming from the NaCl module. 50868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// In the Voronoi example, the only message will be the benchmark result. 51868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)function handleMessage(message_event) { 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (message_event.data['message'] == 'benchmark_result') { 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch var x = (Math.round(message_event.data['value'] * 1000) / 1000).toFixed(3); 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch document.getElementById('result').textContent = 55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 'Result: ' + x + ' seconds'; 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch common.updateStatus('SUCCESS') 57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 58868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 59868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 60