summaryrefslogtreecommitdiffstats
path: root/o3d/samples/interactive_sampler_assets/utils.js
diff options
context:
space:
mode:
authorgspencer@google.com <gspencer@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-27 23:15:42 +0000
committergspencer@google.com <gspencer@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-27 23:15:42 +0000
commit05b47f7a8c5451f858dc220df0e3a97542edace6 (patch)
treea2273d619f0625c9d44d40842845ccce2eac1045 /o3d/samples/interactive_sampler_assets/utils.js
parent5cdc8bdb4c847cefe7f4542bd10c9880c2c557a0 (diff)
downloadchromium_src-05b47f7a8c5451f858dc220df0e3a97542edace6.zip
chromium_src-05b47f7a8c5451f858dc220df0e3a97542edace6.tar.gz
chromium_src-05b47f7a8c5451f858dc220df0e3a97542edace6.tar.bz2
This is the O3D source tree's initial commit to the Chromium tree. It
is not built or referenced at all by the chrome build yet, and doesn't yet build in it's new home. We'll change that shortly. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17035 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'o3d/samples/interactive_sampler_assets/utils.js')
-rw-r--r--o3d/samples/interactive_sampler_assets/utils.js200
1 files changed, 200 insertions, 0 deletions
diff --git a/o3d/samples/interactive_sampler_assets/utils.js b/o3d/samples/interactive_sampler_assets/utils.js
new file mode 100644
index 0000000..8132df1
--- /dev/null
+++ b/o3d/samples/interactive_sampler_assets/utils.js
@@ -0,0 +1,200 @@
+/*
+ * Copyright 2009, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+/**
+ * @fileoverview This file contains utility functions for the interactive
+ * sample runner.
+ *
+ */
+
+var ie;
+var opera;
+var safari;
+var gecko;
+
+
+if (typeof console == 'undefined') {
+ var console = {
+ log : function() {}
+ };
+}
+
+function readFile(relativePathToFile) {
+ var curPath = location.href;
+ var fileLoc = curPath.indexOf('file:///');
+ var lastSlash = curPath.lastIndexOf('/');
+ curPath = curPath.substring(0, lastSlash + 1);
+ if (fileLoc != -1) {
+ curPath = curPath.substring(fileLoc + 8);
+ }
+ var filepath = curPath + relativePathToFile;
+ filepath = filepath.replace(/\//g, '\\');
+ filepath = filepath.replace(/%20/g, ' ');
+
+ try {
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+ } catch (e) {
+ return null;
+ }
+ var file = Components.classes["@mozilla.org/file/local;1"].createInstance(
+ Components.interfaces.nsILocalFile);
+ file.initWithPath( filepath );
+ if ( file.exists() == false ) {
+ alert("File does not exist");
+ }
+ var is = Components.classes["@mozilla.org/network/file-input-stream;1"].
+ createInstance(Components.interfaces.nsIFileInputStream);
+ is.init( file,0x01, 00004, null);
+ var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].
+ createInstance(Components.interfaces.nsIScriptableInputStream);
+ sis.init(is);
+ var output = sis.read( sis.available() );
+ return output;
+}
+
+/**
+* Returns an XMLHttp instance to use for asynchronous
+* downloading. This method will never throw an exception, but will
+* return NULL if the browser does not support XmlHttp for any reason.
+* @return {XMLHttpRequest|Null}
+*/
+function createXmlHttpRequest() {
+ try {
+ if (typeof ActiveXObject != 'undefined') {
+ return new ActiveXObject('Microsoft.XMLHTTP');
+ } else if (window["XMLHttpRequest"]) {
+ return new XMLHttpRequest();
+ }
+ } catch (e) {
+ changeStatus(e);
+ }
+ return null;
+};
+
+/**
+* This functions wraps XMLHttpRequest open/send function.
+* It lets you specify a URL and will call the callback if
+* it gets a status code of 200.
+* @param {String} url The URL to retrieve
+* @param {Function} callback The function to call once retrieved.
+*/
+function downloadUrl(url, callback) {
+ var status = -1;
+ var request = createXmlHttpRequest();
+ if (!request) {
+ return false;
+ }
+
+ request.onreadystatechange = function() {
+ if (request.readyState == 4) {
+ try {
+ status = request.status;
+ } catch (e) {
+ // Usually indicates request timed out in FF.
+ }
+ if (status == 200) {
+ callback(request.responseText, request.status);
+ request.onreadystatechange = function() {};
+ }
+ }
+ };
+
+ request.open('GET', url, true);
+ try {
+ request.send(null);
+ } catch (e) {
+ changeStatus(e);
+ }
+}
+
+
+function deepObjCopy(dupeObj) {
+ var retObj = new Object();
+ if (typeof(dupeObj) == 'object') {
+ if (typeof(dupeObj.length) != 'undefined')
+ var retObj = new Array();
+ for (var objInd in dupeObj) {
+ if (typeof(dupeObj[objInd]) == 'object') {
+ retObj[objInd] = deepObjCopy(dupeObj[objInd]);
+ } else if (typeof(dupeObj[objInd]) == 'string') {
+ retObj[objInd] = dupeObj[objInd];
+ } else if (typeof(dupeObj[objInd]) == 'number') {
+ retObj[objInd] = dupeObj[objInd];
+ } else if (typeof(dupeObj[objInd]) == 'boolean') {
+ ((dupeObj[objInd] == true) ?
+ retObj[objInd] = true : retObj[objInd] = false);
+ }
+ }
+ }
+ return retObj;
+}
+
+function singleLevelKeyCopy(dupeObj) {
+ var retObj = new Object();
+ for (var objInd in dupeObj) {
+ retObj[objInd] = true;
+ }
+ return retObj;
+}
+
+function browserFun() {
+ // Browser fun.
+ if (window.ActiveXObject) {
+ ie = this[window.XMLHttpRequest ? 'ie7' : 'ie6'] = true;
+ } else if (window.opera) {
+ opera = true;
+ } else if (document.childNodes && !document.all && !navigator.taintEnabled) {
+ safari = true;
+ } else if (document.getBoxObjectFor != null) {
+ gecko = true;
+ }
+}
+
+function _cel(name) {
+ return document.createElement(name);
+}
+
+function _gel(name) {
+ return document.getElementById(name);
+}
+
+function addEvent(a,b,c,d) {
+ if (a.addEventListener) {
+ a.addEventListener(b,c,d?true:false);
+ } else if(a.attachEvent) {
+ a.attachEvent('on'+b,c);
+ } else{
+ a['on'+b]=c;
+ }
+}
+
+browserFun();