Chromium Code Reviews| Index: native_client_sdk/src/examples/common.js |
| diff --git a/native_client_sdk/src/examples/common.js b/native_client_sdk/src/examples/common.js |
| index 1562924d03e435e064e83c983ec40b63b1a09d82..8e044e4098beebe1cf8a617dc673af440c5e6865 100644 |
| --- a/native_client_sdk/src/examples/common.js |
| +++ b/native_client_sdk/src/examples/common.js |
| @@ -14,6 +14,42 @@ var isTest = false; |
| // code. |
| var common = (function() { |
| + function isHostToolchain(tool) { |
| + return tool == 'win' || tool == 'linux' || tool == 'mac'; |
| + } |
| + |
| + /** |
| + * Return the mime type for NaCl plugin. |
| + * |
| + * @param {string} tool The name of the toolchain, e.g. "glibc", "newlib" etc. |
| + * @param {bool} is_release True if this is a release build. |
|
binji
2013/07/23 18:29:32
add @return doc
jvoung (off chromium)
2013/07/23 19:57:45
Done.
|
| + */ |
| + function mimeTypeForTool(tool, is_release) { |
| + // For NaCl modules use application/x-nacl. |
| + var mimetype = 'application/x-nacl'; |
| + if (isHostToolchain(tool)) { |
| + // For non-NaCl PPAPI plugins use the x-ppapi-debug/release |
| + // mime type. |
| + if (is_release) |
| + mimetype = 'application/x-ppapi-release'; |
| + else |
| + mimetype = 'application/x-ppapi-debug'; |
| + } else if (tool == 'pnacl') { |
| + mimetype = 'application/x-pnacl'; |
| + } |
| + return mimetype; |
| + } |
| + |
| + /** |
| + * Return true if the browser supports NaCl plugins. |
| + * |
| + * @param {string} tool The name of the toolchain, e.g. "glibc", "newlib" etc. |
|
binji
2013/07/23 18:29:32
add @return doc
jvoung (off chromium)
2013/07/23 19:57:45
Done.
|
| + */ |
| + function browserSupportsNaCl(tool) { |
| + var mimetype = mimeTypeForTool(tool); |
| + return navigator.mimeTypes[mimetype] !== undefined; |
| + } |
| + |
| /** |
| * Create the Native Client <embed> element as a child of the DOM element |
| * named "listener". |
| @@ -41,19 +77,7 @@ var common = (function() { |
| } |
| } |
| - // For NaCL modules use application/x-nacl. |
| - var mimetype = 'application/x-nacl'; |
| - var isHost = tool == 'win' || tool == 'linux' || tool == 'mac'; |
| - if (isHost) { |
| - // For non-nacl PPAPI plugins use the x-ppapi-debug/release |
| - // mime type. |
| - if (path.toLowerCase().indexOf('release') != -1) |
| - mimetype = 'application/x-ppapi-release'; |
| - else |
| - mimetype = 'application/x-ppapi-debug'; |
| - } else if (tool == 'pnacl') { |
| - mimetype = 'application/x-pnacl'; |
| - } |
| + var mimetype = mimeTypeForTool(tool); |
| moduleEl.setAttribute('type', mimetype); |
| // The <EMBED> element is wrapped inside a <DIV>, which has both a 'load' |
| @@ -65,6 +89,7 @@ var common = (function() { |
| listenerDiv.appendChild(moduleEl); |
| // Host plugins don't send a moduleDidLoad message. We'll fake it here. |
| + var isHost = isHostToolchain(tool); |
| if (isHost) { |
| window.setTimeout(function() { |
| var evt = document.createEvent('Event'); |
| @@ -258,7 +283,11 @@ var common = (function() { |
| // status message indicating that the module is still loading. Otherwise, |
| // do not change the status message. |
| updateStatus('Page loaded.'); |
| - if (common.naclModule == null) { |
| + var is_release = path.toLowerCase().indexOf('release') != -1; |
|
binji
2013/07/23 18:29:32
nit: isRelease
jvoung (off chromium)
2013/07/23 19:57:45
Done.
Same code style for parameter names (above)
binji
2013/07/23 20:01:52
Yes, camelCase for all names in JavaScript.
|
| + if (!browserSupportsNaCl(tool, is_release)) { |
| + updateStatus( |
| + 'Browser does not support NaCl (' + tool + '), or NaCl is disabled'); |
| + } else if (common.naclModule == null) { |
| updateStatus('Creating embed: ' + tool); |
| // We use a non-zero sized embed to give Chrome space to place the bad |