Merge pull request #175 from raphinesse/remove-unused-stuff

Remove unused stuff
diff --git a/.jshintrc b/.jshintrc
deleted file mode 100644
index b5f288c..0000000
--- a/.jshintrc
+++ /dev/null
@@ -1,141 +0,0 @@
-// Defaults as of jshint edition 2011-04-16
-{
-  // If the scan should stop on first error.
-  "passfail": false,
-  // Maximum errors before stopping.
-  "maxerr": 50,
-
-
-  // Predefined globals
-  // If the standard browser globals should be predefined.
-  "browser": true,
-  // If the Node.js environment globals should be predefined.
-  "node": true,
-  // If the Rhino environment globals should be predefined.
-  "rhino": false,
-  // If CouchDB globals should be predefined.
-  "couch": false,
-  // If the Windows Scripting Host environment globals should be predefined.
-  "wsh": false,
-
-  // If jQuery globals should be predefined.
-  "jquery": false,
-  // If Prototype and Scriptaculous globals should be predefined.
-  "prototypejs": false,
-  // If MooTools globals should be predefined.
-  "mootools": false,
-  // If Dojo Toolkit globals should be predefined.
-  "dojo": false,
-
-  // Custom predefined globals.
-  "predef": ["jasmine", "blackberry", "define", "alert", "prompt", "org", "deviceapis", "Osp", "_cordovaExec", "WinJS", "Windows", "MSApp", "PalmSystem", "PalmServiceBridge", "Acceleration", "webworks", "CORDOVA_JS_BUILD_LABEL", "PLATFORM_VERSION_BUILD_LABEL"],
-
-
-  // Development
-  // If debugger statements should be allowed.
-  "debug": false,
-  // If logging globals should be predefined (console, alert, etc.).
-  "devel": false,
-
-
-  // ECMAScript 5
-  // If ES5 syntax should be allowed.
-  "es5": false,
-  // Require the "use strict"; pragma.
-  "strict": false,
-  // If global "use strict"; should be allowed (also enables strict).
-  "globalstrict": false,
-
-
-  // The Good Parts
-  // If automatic semicolon insertion should be tolerated.
-  "asi": false,
-  // If line breaks should not be checked, e.g. `return [\n] x`.
-  "laxbreak": false,
-  // If bitwise operators (&, |, ^, etc.) should not be allowed.
-  "bitwise": false,
-  // If assignments inside if, for and while should be allowed. Usually
-  // conditions and loops are for comparison, not assignments.
-  "boss": true,
-  // If curly braces around all blocks should be required.
-  "curly": false,
-  // If === should be required.
-  "eqeqeq": false,
-  // If == null comparisons should be tolerated.
-  "eqnull": false,
-  // If eval should be allowed.
-  "evil": true,
-  // If ExpressionStatement should be allowed as Programs.
-  "expr": true,
-  // If `for in` loops must filter with `hasOwnPrototype`.
-  "forin": false,
-  // If immediate invocations must be wrapped in parens, e.g.
-  // `( function(){}() );`.
-  "immed": false,
-  // If use before define should not be tolerated.
-  "latedef": false,
-  // If functions should be allowed to be defined within loops.
-  "loopfunc": true,
-  // If arguments.caller and arguments.callee should be disallowed.
-  "noarg": false,
-  // If the . should not be allowed in regexp literals.
-  "regexp": false,
-  // If unescaped first/last dash (-) inside brackets should be tolerated.
-  "regexdash": false,
-  // If script-targeted URLs should be tolerated.
-  "scripturl": false,
-  // If variable shadowing should be tolerated.
-  "shadow": false,
-  // If `new function () { ... };` and `new Object;` should be tolerated.
-  "supernew": false,
-  // If variables should be declared before used.
-  "undef": true,
-  // If `this` inside a non-constructor function is valid.
-  "validthis": false,
-  // If smarttabs should be tolerated
-  // (http://www.emacswiki.org/emacs/SmartTabs).
-  "smarttabs": false,
-  // If the `__proto__` property should be allowed.
-  "proto": false,
-  // If one case switch statements should be allowed.
-  "onecase": false,
-  // If non-standard (but widely adopted) globals should be predefined.
-  "nonstandard": false,
-  // Allow multiline strings.
-  "multistr": false,
-  // If line breaks should not be checked around commas.
-  "laxcomma": false,
-  // If semicolons may be omitted for the trailing statements inside of a
-  // one-line blocks.
-  "lastsemic": false,
-  // If the `__iterator__` property should be allowed.
-  "iterator": false,
-  // If only function scope should be used for scope tests.
-  "funcscope": false,
-  // If es.next specific syntax should be allowed.
-  "esnext": false,
-
-
-  // Style preferences
-  // If constructor names must be capitalized.
-  "newcap": false,
-  // If empty blocks should be disallowed.
-  "noempty": false,
-  // If using `new` for side-effects should be disallowed.
-  "nonew": false,
-  // If names should be checked for leading or trailing underscores
-  // (object._attribute would be disallowed).
-  "nomen": false,
-  // If only one var statement per function should be allowed.
-  "onevar": false,
-  // If increment and decrement (`++` and `--`) should not be allowed.
-  "plusplus": false,
-  // If all forms of subscript notation are tolerated.
-  "sub": false,
-  // If trailing whitespace rules apply.
-  "trailing": true,
-  // Specify indentation.
-  "indent": 4,
-  // If strict whitespace rules apply.
-  "white": false
-}
diff --git a/.travis.yml b/.travis.yml
index 6dee84f..cad87e2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -12,13 +12,7 @@
   - cd ..
   - git clone https://github.com/apache/cordova-android --depth 10
   - git clone https://github.com/apache/cordova-ios --depth 10
-  - git clone https://github.com/apache/cordova-blackberry --depth 10
   - git clone https://github.com/apache/cordova-windows --depth 10
-  - git clone https://github.com/apache/cordova-wp8 --depth 10
-  - git clone https://github.com/apache/cordova-firefoxos --depth 10
-  - git clone https://github.com/apache/cordova-ubuntu --depth 10
   - git clone https://github.com/apache/cordova-browser --depth 10
-  - git clone https://github.com/apache/cordova-amazon-fireos --depth 10
-  - git clone https://github.com/apache/cordova-webos --depth 10
   - cd cordova-js
   - npm install
diff --git a/Gruntfile.js b/Gruntfile.js
index ceda0f7..b99ade3 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -21,17 +21,11 @@
     grunt.initConfig({
         pkg: grunt.file.readJSON('package.json'),
         compile: {
-            "amazon-fireos": {},
             "android": {},
-            "blackberry10": {},
             "ios": {},
             "osx": {},
             "test": {},
             "windows": { useWindowsLineEndings: true },
-            "wp8": { useWindowsLineEndings: true },
-            "firefoxos": {},
-            "webos": {},
-            "ubuntu": {},
             "browser": {}
         },
         clean: ['pkg'],
@@ -44,8 +38,7 @@
     grunt.loadTasks('tasks');
 
     // defaults
-    grunt.registerTask('default', ['build', 'test']);
-    grunt.registerTask('build', ['compile', 'whitespace-check']);
+    grunt.registerTask('default', ['compile', 'test']);
     grunt.registerTask('test', ['compile:test', '_test']);
     grunt.registerTask('cover', ['compile', '_cover']);
 };
diff --git a/appveyor.yml b/appveyor.yml
index a6f74de..954f4d1 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -15,13 +15,8 @@
   - cd ..
   - git clone https://github.com/apache/cordova-android --depth 10
   - git clone https://github.com/apache/cordova-ios --depth 10
-  - git clone https://github.com/apache/cordova-blackberry --depth 10
   - git clone https://github.com/apache/cordova-windows --depth 10
-  - git clone https://github.com/apache/cordova-wp8 --depth 10
-  - git clone https://github.com/apache/cordova-ubuntu --depth 10
   - git clone https://github.com/apache/cordova-browser --depth 10
-  - git clone https://github.com/apache/cordova-amazon-fireos --depth 10
-  - git clone https://github.com/apache/cordova-webos --depth 10
   - cd cordova-js
   - npm install --msvs_version=2013
 
diff --git a/package.json b/package.json
index 2bc6b7a..71598cc 100644
--- a/package.json
+++ b/package.json
@@ -75,7 +75,6 @@
     "eslint-plugin-node": "^5.1.1",
     "eslint-plugin-promise": "^3.5.0",
     "eslint-plugin-standard": "^3.0.1",
-    "express": "^4.16.3",
     "grunt": "^1.0.1",
     "grunt-contrib-clean": "^1.0.0",
     "istanbul": "^0.4.5",
@@ -86,14 +85,8 @@
   "cordova-platforms": {
     "cordova-android": "../cordova-android",
     "cordova-ios": "../cordova-ios",
-    "cordova-blackberry10": "../cordova-blackberry",
-    "cordova-firefoxos": "../cordova-firefoxos",
-    "cordova-ubuntu": "../cordova-ubuntu",
-    "cordova-amazon-fireos": "../cordova-amazon-fireos",
-    "cordova-wp8": "../cordova-wp8",
     "cordova-windows": "../cordova-windows",
     "cordova-osx": "../cordova-osx",
-    "cordova-browser": "../cordova-browser",
-    "cordova-webos": "../cordova-webos"
+    "cordova-browser": "../cordova-browser"
   }
 }
diff --git a/src/legacy-exec/test/test/mockxhr.js b/src/legacy-exec/test/test/mockxhr.js
index c016523..b0a001d 100644
--- a/src/legacy-exec/test/test/mockxhr.js
+++ b/src/legacy-exec/test/test/mockxhr.js
@@ -19,8 +19,6 @@
  *
 */
 
-/* jshint -W020 */
-
 var utils = require('cordova/utils');
 var activeXhrs = [];
 var isInstalled = false;
diff --git a/src/legacy-exec/test/test/modulereplacer.js b/src/legacy-exec/test/test/modulereplacer.js
deleted file mode 100644
index cc3abd7..0000000
--- a/src/legacy-exec/test/test/modulereplacer.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/* eslint-disable no-undef */
-var propertyreplacer = require('cordova/test/propertyreplacer');
-
-exports.replace = function (moduleName, newValue) {
-    propertyreplacer.stub(define.moduleMap, moduleName, null);
-    define.remove(moduleName);
-    define(moduleName, function (require, exports, module) {
-        module.exports = newValue;
-    });
-};
-/* eslint-enable no-undef */
diff --git a/src/scripts/require.js b/src/scripts/require.js
index 5c9bcd2..24c6a16 100644
--- a/src/scripts/require.js
+++ b/src/scripts/require.js
@@ -19,9 +19,6 @@
  *
 */
 
-/* jshint -W079 */
-/* jshint -W020 */
-
 var require;
 var define;
 
diff --git a/tasks/lib/gv-requires.js b/tasks/lib/gv-requires.js
deleted file mode 100755
index 46d9bed..0000000
--- a/tasks/lib/gv-requires.js
+++ /dev/null
@@ -1,133 +0,0 @@
-#!/usr/bin/env node
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-fs   = require('fs')
-path = require('path')
-
-//------------------------------------------------------------------------------
-//process.chdir(path.join(__dirname, ".."))
-
-var platforms = getPlatforms()
-
-console.log("//-------------------------------------------------------")
-console.log("// graphviz .dot file for Cordova requires by platform")
-console.log("// http://www.graphviz.org/")
-console.log("// ")
-console.log("//   - ./build/gv-requires.js > ~/tmp/requires.dot")
-console.log("//   - [edit dot file to leave just one digraph]")
-console.log("//   - dot -Tsvg ~/tmp/requires.dot > ~/tmp/requires.svg")
-console.log("//   - [open svg file in a browser]")
-console.log("//-------------------------------------------------------")
-console.log("")
-
-for (var i=0; i<platforms.length; i++) {
-    var platform = platforms[i]
-    
-    generateGraph(platform)
-}
-
-//------------------------------------------------------------------------------
-function getPlatforms() {
-    var entries = fs.readdirSync(path.join(__dirname, '..', '..', "pkg"))
-    
-    var platforms = []
-    
-    for (var i=0; i<entries.length; i++) {
-        var entry = entries[i]
-        
-        var match = entry.match(/^cordova\.(.*)\.js$/)
-        if (match)
-            platforms.push(match[1])
-    }
-    
-    return platforms
-}
-
-//------------------------------------------------------------------------------
-function generateGraph(platform) {
-    var modules = {}
-    
-    var jsFile = path.join("pkg", "cordova." + platform + ".js")
-    
-    contents = fs.readFileSync(jsFile, 'utf-8')
-    contents = contents.replace(/\n/g, ' ')
-    
-    modulesSource = contents.split(/define\(/)
-    
-    console.log("//--------------------------------------------------")
-    console.log("// graphviz .dot file for " + platform)
-    console.log("//--------------------------------------------------")
-    console.log("digraph G {")
-    
-    for (var i=0; i< modulesSource.length; i++) {
-        var moduleSource = modulesSource[i];
-        
-        var match = moduleSource.match(/'(.*?)'(.*)/)
-        if (!match) continue
-        
-        var moduleName = match[1]
-        moduleSource   = match[2]
-        
-        if (moduleName.match(/\s/)) continue
-        if (moduleName   == "")     continue
-        if (moduleSource == "")     continue
-
-        modules[moduleName] = modules[moduleName] || []
-        // console.log("   found module " + moduleName)
-        
-        var requires = getRequires(moduleSource, modules[moduleName])
-        
-        for (var j=0; j < requires.length; j++) {
-            var gvModule  =  moduleName.replace(/\//g, '\\n')
-            var gvRequire = requires[j].replace(/\//g, '\\n')
-            
-            console.log('   "' + gvModule + '" -> "' + gvRequire + '";')
-        }
-        
-    }
-
-    console.log("}")
-    console.log("")
-}
-
-//------------------------------------------------------------------------------
-function getRequires(moduleSource, requires) {
-    var pattern = /.*?require\((.*?)\)(.*)/
-
-    var result = []
-//    console.log(moduleSource)
-    
-    var match = moduleSource.match(pattern)
-    
-    while (match) {
-        var require  = match[1]
-        moduleSource = match[2]
-        
-        require = require.replace(/'|"/g, '')
-        result.push(require)
-        
-        match = moduleSource.match(pattern)
-    }
-    
-    return result
-}
-
-    
diff --git a/tasks/lib/process-white-space.js b/tasks/lib/process-white-space.js
deleted file mode 100644
index 11fb316..0000000
--- a/tasks/lib/process-white-space.js
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF
- * or more contributor license agreements.  See th
- * distributed with this work for additional infor
- * regarding copyright ownership.  The ASF license
- * to you under the Apache License, Version 2.0 (t
- * "License"); you may not use this file except in
- * with the License.  You may obtain a copy of the
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to 
- * software distributed under the License is distr
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
- * KIND, either express or implied.  See the Licen
- * specific language governing permissions and lim
- * under the License.
- */
-
-var fs = require('fs');
-var path = require('path');
-
-// Iterates over a directory
-function forEachFile(root, cbFile, cbDone) {
-    var count = 0;
-
-    function scan(name) {
-        ++count;
-
-        fs.stat(name, function (err, stats) {
-            if (err) cbFile(err);
-
-            if (stats.isDirectory()) {
-                fs.readdir(name, function (err, files) {
-                    if (err) cbFile(err);
-
-                    files.forEach(function (file) {
-                        scan(path.join(name, file));
-                    });
-                    done();
-                });
-            } else if (stats.isFile()) {
-                cbFile(null, name, stats, done);
-            } else {
-                done();
-            }
-        });
-    }
-
-    function done() {
-        --count;
-        if (count === 0 && cbDone) cbDone();
-    }
-
-    scan(root);
-}
-
-module.exports = function processWhiteSpace(processor, callback) {
-
-    var rexp_minified = new RegExp("\\.min\\.js$");
-    var rexp_src = new RegExp('\\.js$');
-    
-    forEachFile('src', function(err, file, stats, cbDone) {
-        //if (err) throw err;
-        if (rexp_minified.test(file) || !rexp_src.test(file)) {
-            cbDone();
-        } else {
-            var origsrc = src = fs.readFileSync(file, 'utf8');
-
-            // tabs -> four spaces
-            if (src.indexOf('\t') >= 0) {
-                src = src.split('\t').join('    ');
-            }
-
-            // eliminate trailing white space
-            src = src.replace(/ +\n/g, '\n');
-
-            if (origsrc !== src) {
-                // write it out yo
-                processor(file, src);
-            }
-            cbDone();
-        }
-    }, callback);
-}
diff --git a/tasks/templates/suite.html b/tasks/templates/suite.html
deleted file mode 100644
index 7444a82..0000000
--- a/tasks/templates/suite.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-
--->
-
-<!DOCTYPE HTML>
-<html>
-<head>
-  <title>EXTERMINATE!</title>
-
-  <link rel="stylesheet" type="text/css" href="jasmine/jasmine.css">
-  <script type="text/javascript" src="jasmine-1.3.1.js"></script>
-  <script type="text/javascript" src="jasmine/jasmine-html.js"></script>
-
-  <script type="text/javascript">
-    (function() {
-      var jasmineEnv = jasmine.getEnv();
-      jasmineEnv.updateInterval = 1000;
-
-      var trivialReporter = new jasmine.TrivialReporter();
-
-      jasmineEnv.addReporter(trivialReporter);
-
-      jasmineEnv.specFilter = function(spec) {
-        return trivialReporter.specFilter(spec);
-      };
-
-      window.global = window;
-
-      window.addEventListener("load", function () {
-          jasmineEnv.execute();
-      });
-
-    })();
-  </script>
-
-  <script type="text/javascript" src="cordova.test.js"></script>
-
-  <script type="text/javascript">
-      var require = cordova.require;
-      var define = cordova.define;
-  </script>
-
-	<!-- ##TESTS## -->
-
-	<!-- Note: if you want to run individual tests, remove the tests placeholder above and include the individual tests yourself -->
-	<!-- <script src="test.accelerometer.js" type="text/javascript" charset="utf-8"></script> -->
-</head>
-
-<body>
-</body>
-</html>
diff --git a/tasks/vendor/jasmine/MIT.LICENSE b/tasks/vendor/jasmine/MIT.LICENSE
deleted file mode 100644
index 7c435ba..0000000
--- a/tasks/vendor/jasmine/MIT.LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2008-2011 Pivotal Labs
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tasks/vendor/jasmine/jasmine-html.js b/tasks/vendor/jasmine/jasmine-html.js
deleted file mode 100644
index 423d3ea..0000000
--- a/tasks/vendor/jasmine/jasmine-html.js
+++ /dev/null
@@ -1,190 +0,0 @@
-jasmine.TrivialReporter = function(doc) {
-  this.document = doc || document;
-  this.suiteDivs = {};
-  this.logRunningSpecs = false;
-};
-
-jasmine.TrivialReporter.prototype.createDom = function(type, attrs, childrenVarArgs) {
-  var el = document.createElement(type);
-
-  for (var i = 2; i < arguments.length; i++) {
-    var child = arguments[i];
-
-    if (typeof child === 'string') {
-      el.appendChild(document.createTextNode(child));
-    } else {
-      if (child) { el.appendChild(child); }
-    }
-  }
-
-  for (var attr in attrs) {
-    if (attr == "className") {
-      el[attr] = attrs[attr];
-    } else {
-      el.setAttribute(attr, attrs[attr]);
-    }
-  }
-
-  return el;
-};
-
-jasmine.TrivialReporter.prototype.reportRunnerStarting = function(runner) {
-  var showPassed, showSkipped;
-
-  this.outerDiv = this.createDom('div', { className: 'jasmine_reporter' },
-      this.createDom('div', { className: 'banner' },
-        this.createDom('div', { className: 'logo' },
-            this.createDom('span', { className: 'title' }, "Jasmine"),
-            this.createDom('span', { className: 'version' }, runner.env.versionString())),
-        this.createDom('div', { className: 'options' },
-            "Show ",
-            showPassed = this.createDom('input', { id: "__jasmine_TrivialReporter_showPassed__", type: 'checkbox' }),
-            this.createDom('label', { "for": "__jasmine_TrivialReporter_showPassed__" }, " passed "),
-            showSkipped = this.createDom('input', { id: "__jasmine_TrivialReporter_showSkipped__", type: 'checkbox' }),
-            this.createDom('label', { "for": "__jasmine_TrivialReporter_showSkipped__" }, " skipped")
-            )
-          ),
-
-      this.runnerDiv = this.createDom('div', { className: 'runner running' },
-          this.createDom('a', { className: 'run_spec', href: '?' }, "run all"),
-          this.runnerMessageSpan = this.createDom('span', {}, "Running..."),
-          this.finishedAtSpan = this.createDom('span', { className: 'finished-at' }, ""))
-      );
-
-  this.document.body.appendChild(this.outerDiv);
-
-  var suites = runner.suites();
-  for (var i = 0; i < suites.length; i++) {
-    var suite = suites[i];
-    var suiteDiv = this.createDom('div', { className: 'suite' },
-        this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, "run"),
-        this.createDom('a', { className: 'description', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, suite.description));
-    this.suiteDivs[suite.id] = suiteDiv;
-    var parentDiv = this.outerDiv;
-    if (suite.parentSuite) {
-      parentDiv = this.suiteDivs[suite.parentSuite.id];
-    }
-    parentDiv.appendChild(suiteDiv);
-  }
-
-  this.startedAt = new Date();
-
-  var self = this;
-  showPassed.onclick = function(evt) {
-    if (showPassed.checked) {
-      self.outerDiv.className += ' show-passed';
-    } else {
-      self.outerDiv.className = self.outerDiv.className.replace(/ show-passed/, '');
-    }
-  };
-
-  showSkipped.onclick = function(evt) {
-    if (showSkipped.checked) {
-      self.outerDiv.className += ' show-skipped';
-    } else {
-      self.outerDiv.className = self.outerDiv.className.replace(/ show-skipped/, '');
-    }
-  };
-};
-
-jasmine.TrivialReporter.prototype.reportRunnerResults = function(runner) {
-  var results = runner.results();
-  var className = (results.failedCount > 0) ? "runner failed" : "runner passed";
-  this.runnerDiv.setAttribute("class", className);
-  //do it twice for IE
-  this.runnerDiv.setAttribute("className", className);
-  var specs = runner.specs();
-  var specCount = 0;
-  for (var i = 0; i < specs.length; i++) {
-    if (this.specFilter(specs[i])) {
-      specCount++;
-    }
-  }
-  var message = "" + specCount + " spec" + (specCount == 1 ? "" : "s" ) + ", " + results.failedCount + " failure" + ((results.failedCount == 1) ? "" : "s");
-  message += " in " + ((new Date().getTime() - this.startedAt.getTime()) / 1000) + "s";
-  this.runnerMessageSpan.replaceChild(this.createDom('a', { className: 'description', href: '?'}, message), this.runnerMessageSpan.firstChild);
-
-  this.finishedAtSpan.appendChild(document.createTextNode("Finished at " + new Date().toString()));
-};
-
-jasmine.TrivialReporter.prototype.reportSuiteResults = function(suite) {
-  var results = suite.results();
-  var status = results.passed() ? 'passed' : 'failed';
-  if (results.totalCount === 0) { // todo: change this to check results.skipped
-    status = 'skipped';
-  }
-  this.suiteDivs[suite.id].className += " " + status;
-};
-
-jasmine.TrivialReporter.prototype.reportSpecStarting = function(spec) {
-  if (this.logRunningSpecs) {
-    this.log('>> Jasmine Running ' + spec.suite.description + ' ' + spec.description + '...');
-  }
-};
-
-jasmine.TrivialReporter.prototype.reportSpecResults = function(spec) {
-  var results = spec.results();
-  var status = results.passed() ? 'passed' : 'failed';
-  if (results.skipped) {
-    status = 'skipped';
-  }
-  var specDiv = this.createDom('div', { className: 'spec '  + status },
-      this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(spec.getFullName()) }, "run"),
-      this.createDom('a', {
-        className: 'description',
-        href: '?spec=' + encodeURIComponent(spec.getFullName()),
-        title: spec.getFullName()
-      }, spec.description));
-
-
-  var resultItems = results.getItems();
-  var messagesDiv = this.createDom('div', { className: 'messages' });
-  for (var i = 0; i < resultItems.length; i++) {
-    var result = resultItems[i];
-
-    if (result.type == 'log') {
-      messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage log'}, result.toString()));
-    } else if (result.type == 'expect' && result.passed && !result.passed()) {
-      messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage fail'}, result.message));
-
-      if (result.trace.stack) {
-        messagesDiv.appendChild(this.createDom('div', {className: 'stackTrace'}, result.trace.stack));
-      }
-    }
-  }
-
-  if (messagesDiv.childNodes.length > 0) {
-    specDiv.appendChild(messagesDiv);
-  }
-
-  this.suiteDivs[spec.suite.id].appendChild(specDiv);
-};
-
-jasmine.TrivialReporter.prototype.log = function() {
-  var console = jasmine.getGlobal().console;
-  if (console && console.log) {
-    if (console.log.apply) {
-      console.log.apply(console, arguments);
-    } else {
-      console.log(arguments); // IE fix: console.log.apply doesn't exist in IE
-    }
-  }
-};
-
-jasmine.TrivialReporter.prototype.getLocation = function() {
-  return this.document.location;
-};
-
-jasmine.TrivialReporter.prototype.specFilter = function(spec) {
-  var paramMap = {};
-  var params = this.getLocation().search.substring(1).split('&');
-  for (var i = 0; i < params.length; i++) {
-    var p = params[i].split('=');
-    paramMap[decodeURIComponent(p[0])] = decodeURIComponent(p[1]);
-  }
-
-  if (!paramMap.spec) {
-    return true;
-  }
-  return spec.getFullName().indexOf(paramMap.spec) === 0;
-};
diff --git a/tasks/vendor/jasmine/jasmine.css b/tasks/vendor/jasmine/jasmine.css
deleted file mode 100644
index 6583fe7..0000000
--- a/tasks/vendor/jasmine/jasmine.css
+++ /dev/null
@@ -1,166 +0,0 @@
-body {
-  font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif;
-}
-
-
-.jasmine_reporter a:visited, .jasmine_reporter a {
-  color: #303; 
-}
-
-.jasmine_reporter a:hover, .jasmine_reporter a:active {
-  color: blue; 
-}
-
-.run_spec {
-  float:right;
-  padding-right: 5px;
-  font-size: .8em;
-  text-decoration: none;
-}
-
-.jasmine_reporter {
-  margin: 0 5px;
-}
-
-.banner {
-  color: #303;
-  background-color: #fef;
-  padding: 5px;
-}
-
-.logo {
-  float: left;
-  font-size: 1.1em;
-  padding-left: 5px;
-}
-
-.logo .version {
-  font-size: .6em;
-  padding-left: 1em;
-}
-
-.runner.running {
-  background-color: yellow;
-}
-
-
-.options {
-  text-align: right;
-  font-size: .8em;
-}
-
-
-
-
-.suite {
-  border: 1px outset gray;
-  margin: 5px 0;
-  padding-left: 1em;
-}
-
-.suite .suite {
-  margin: 5px; 
-}
-
-.suite.passed {
-  background-color: #dfd;
-}
-
-.suite.failed {
-  background-color: #fdd;
-}
-
-.spec {
-  margin: 5px;
-  padding-left: 1em;
-  clear: both;
-}
-
-.spec.failed, .spec.passed, .spec.skipped {
-  padding-bottom: 5px;
-  border: 1px solid gray;
-}
-
-.spec.failed {
-  background-color: #fbb;
-  border-color: red;
-}
-
-.spec.passed {
-  background-color: #bfb;
-  border-color: green;
-}
-
-.spec.skipped {
-  background-color: #bbb;
-}
-
-.messages {
-  border-left: 1px dashed gray;
-  padding-left: 1em;
-  padding-right: 1em;
-}
-
-.passed {
-  background-color: #cfc;
-  display: none;
-}
-
-.failed {
-  background-color: #fbb;
-}
-
-.skipped {
-  color: #777;
-  background-color: #eee;
-  display: none;
-}
-
-
-/*.resultMessage {*/
-  /*white-space: pre;*/
-/*}*/
-
-.resultMessage span.result {
-  display: block;
-  line-height: 2em;
-  color: black;
-}
-
-.resultMessage .mismatch {
-  color: black;
-}
-
-.stackTrace {
-  white-space: pre;
-  font-size: .8em;
-  margin-left: 10px;
-  max-height: 5em;
-  overflow: auto;
-  border: 1px inset red;
-  padding: 1em;
-  background: #eef;
-}
-
-.finished-at {
-  padding-left: 1em;
-  font-size: .6em;
-}
-
-.show-passed .passed,
-.show-skipped .skipped {
-  display: block;
-}
-
-
-#jasmine_content {
-  position:fixed;
-  right: 100%;
-}
-
-.runner {
-  border: 1px solid gray;
-  display: block;
-  margin: 5px 0;
-  padding: 2px 0 2px 10px;
-}
diff --git a/tasks/whitespace.js b/tasks/whitespace.js
deleted file mode 100644
index e5dfa89..0000000
--- a/tasks/whitespace.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
-*/
-var processWhiteSpace = require('./lib/process-white-space');
-var fs = require('fs');
-
-module.exports = function(grunt) {
-
-    grunt.registerTask('whitespace-check', 'Check for whitespace issues.', function() {
-        var done = this.async();
-        var complainedAboutWhitespace = false;
-        processWhiteSpace(function(file, newSource) {
-            if (!complainedAboutWhitespace) {
-                grunt.log.writeln("files with whitespace issues: (to fix: `grunt whitespace-fix`)");
-                complainedAboutWhitespace = true;
-            }
-            grunt.log.writeln("   " + file);
-        }, done);
-    });
-    
-    grunt.registerTask('whitespace-fix', 'Convert tabs to four spaces, eliminate trailing whitespace, convert newlines to proper form.', function() {
-        var done = this.async();
-        var complainedAboutWhitespace = false;
-        processWhiteSpace(function(file, newSource) {
-            if (!complainedAboutWhitespace) {
-                grunt.log.writeln("Fixed whitespace issues in:");
-                complainedAboutWhitespace = true;
-            }
-            fs.writeFileSync(file, newSource, 'utf8');
-            grunt.log.writeln("   " + file);
-        }, done);
-    });
-}
diff --git a/test/ios/test.exec.js b/test/ios/test.exec.js
index 984a1bf..828f89c 100644
--- a/test/ios/test.exec.js
+++ b/test/ios/test.exec.js
@@ -19,8 +19,6 @@
  *
 */
 
-/* jshint jasmine:true */
-
 describe('iOS exec', function () {
     var exec = require('cordova/ios/exec');
     var winSpy = jasmine.createSpy('win');