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)');
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
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) {
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
);