[Do not revert] Roll-back V8 to version 4.4.63.
[chromium-blink-merge.git] / native_client_sdk / src / examples / tutorial / load_progress / example.js
blob3f45f6ab0d002357cf18a7d529335721d6ee6260
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // Called by the common.js module.
6 function domContentLoaded(name, tc, config, width, height) {
7 var listener = document.getElementById('listener');
8 listener.addEventListener('loadstart', moduleDidStartLoad, true);
9 listener.addEventListener('progress', moduleLoadProgress, true);
10 listener.addEventListener('error', moduleLoadError, true);
11 listener.addEventListener('abort', moduleLoadAbort, true);
12 listener.addEventListener('load', moduleDidLoad, true);
13 listener.addEventListener('loadend', moduleDidEndLoad, true);
14 listener.addEventListener('message', handleMessage, true);
16 common.createNaClModule(name, tc, config, width, height);
19 // Handler that gets called when the NaCl module starts loading. This
20 // event is always triggered when an <EMBED> tag has a MIME type of
21 // application/x-nacl.
22 function moduleDidStartLoad() {
23 common.logMessage('loadstart');
26 // Progress event handler. |event| contains a couple of interesting
27 // properties that are used in this example:
28 // total The size of the NaCl module in bytes. Note that this value
29 // is 0 until |lengthComputable| is true. In particular, this
30 // value is 0 for the first 'progress' event.
31 // loaded The number of bytes loaded so far.
32 // lengthComputable A boolean indicating that the |total| field
33 // represents a valid length.
35 // event The ProgressEvent that triggered this handler.
36 function moduleLoadProgress(event) {
37 var loadPercent = 0.0;
38 var loadPercentString;
39 if (event.lengthComputable && event.total > 0) {
40 loadPercent = event.loaded / event.total * 100.0;
41 loadPercentString = loadPercent + '%';
42 common.logMessage('progress: ' + event.url + ' ' + loadPercentString +
43 ' (' + event.loaded + ' of ' + event.total + ' bytes)');
44 } else {
45 // The total length is not yet known.
46 common.logMessage('progress: Computing...');
50 // Handler that gets called if an error occurred while loading the NaCl
51 // module. Note that the event does not carry any meaningful data about
52 // the error, you have to check lastError on the <EMBED> element to find
53 // out what happened.
54 function moduleLoadError() {
55 common.logMessage('error: ' + common.naclModule.lastError);
58 // Handler that gets called if the NaCl module load is aborted.
59 function moduleLoadAbort() {
60 common.logMessage('abort');
63 // When the NaCl module has loaded indicate success.
64 function moduleDidLoad() {
65 common.logMessage('load');
66 common.updateStatus('LOADED');
69 // Handler that gets called when the NaCl module loading has completed.
70 // You will always get one of these events, regardless of whether the NaCl
71 // module loaded successfully or not. For example, if there is an error
72 // during load, you will get an 'error' event and a 'loadend' event. Note
73 // that if the NaCl module loads successfully, you will get both a 'load'
74 // event and a 'loadend' event.
75 function moduleDidEndLoad() {
76 common.logMessage('loadend');
77 var lastError = event.target.lastError;
78 if (lastError == undefined || lastError.length == 0) {
79 lastError = '<none>';
81 common.logMessage('lastError: ' + lastError);
84 // Handle a message coming from the NaCl module.
85 function handleMessage(message_event) {
86 common.logMessage('Received PostMessage: ' + message_event.data);