diff --git a/config.xml b/config.xml
index ecc4f8d..1351860 100644
--- a/config.xml
+++ b/config.xml
@@ -36,5 +36,6 @@
-
+
+
diff --git a/node_modules/cordova-android/RELEASENOTES.md b/node_modules/cordova-android/RELEASENOTES.md
index 73b2760..dab263b 100644
--- a/node_modules/cordova-android/RELEASENOTES.md
+++ b/node_modules/cordova-android/RELEASENOTES.md
@@ -20,6 +20,29 @@
-->
## Release Notes for Cordova (Android) ##
+### 7.1.4 (Nov 22, 2018)
+
+* Update android-versions to `1.4.0`, with added support for Android Pie ([#573](https://github.com/apache/cordova-android/pull/573))
+* Output current package name if package name can't be validated ([#567](https://github.com/apache/cordova-android/pull/567))
+* Resolve issue with plugin `target-dir="*app*"` subdirs ([#572](https://github.com/apache/cordova-android/pull/572))
+
+### 7.1.3 (Nov 19, 2018)
+
+* [GH-495](https://github.com/apache/cordova-android/pull/495) Incorrect default sdk version issue fix
+* [GH-496](https://github.com/apache/cordova-android/pull/496) update comments in `build.gradle`
+* [GH-539](https://github.com/apache/cordova-android/pull/539) Fix dest overwrite, in case of of plugin `source-file` element with `target-dir` that does not need remapping
+* [GH-540](https://github.com/apache/cordova-android/issues/540) support plugin `source-file` element with any app `target-dir` value
+* [GH-547](https://github.com/apache/cordova-android/issues/547) Compatibility of old plugins with non-Java `source-file` entries (individual files)
+* [GH-551](https://github.com/apache/cordova-android/pull/551) add missing cast for cdvMinSdkVersion to `build.gradle`
+* [GH-552](https://github.com/apache/cordova-android/issues/552) check for `build-extras.gradle` in the parent app directory
+
+### 7.1.2 (Nov 08, 2018)
+* [CB-14127](https://issues.apache.org/jira/browse/CB-14127): Always put the Google repo above jcenter
+* [CB-14165](https://issues.apache.org/jira/browse/CB-14165): Emulator: handle "device still connecting" error (#457)
+* [CB-14125](https://issues.apache.org/jira/browse/CB-14125): Increase old plugin compatibility
+* [CB-13830](https://issues.apache.org/jira/browse/CB-13830): Add handlers for plugins that use non-Java source files, such as Camera
+* [CB-14038](https://issues.apache.org/jira/browse/CB-14038): fix false positive detecting project type
+
### 7.1.1 (Jul 11, 2018)
* Fix unsafe property access in run.js (#445)
* Emit log event instead of logging directly (#452)
diff --git a/node_modules/cordova-android/VERSION b/node_modules/cordova-android/VERSION
index 21c8c7b..b7f8ee4 100644
--- a/node_modules/cordova-android/VERSION
+++ b/node_modules/cordova-android/VERSION
@@ -1 +1 @@
-7.1.1
+7.1.4
diff --git a/node_modules/cordova-android/bin/lib/create.js b/node_modules/cordova-android/bin/lib/create.js
index 83ab5fb..30226f6 100755
--- a/node_modules/cordova-android/bin/lib/create.js
+++ b/node_modules/cordova-android/bin/lib/create.js
@@ -194,7 +194,7 @@ function validatePackageName (package_name) {
var msg = 'Error validating package name. ';
if (!/^[a-zA-Z][a-zA-Z0-9_]+(\.[a-zA-Z][a-zA-Z0-9_]*)+$/.test(package_name)) {
- return Q.reject(new CordovaError(msg + 'Package name must look like: com.company.Name'));
+ return Q.reject(new CordovaError(msg + 'Must look like: `com.company.Name`. Currently is: `' + package_name + '`'));
}
// Class is a reserved word
diff --git a/node_modules/cordova-android/bin/templates/cordova/Api.js b/node_modules/cordova-android/bin/templates/cordova/Api.js
index e97f538..ae4d17b 100644
--- a/node_modules/cordova-android/bin/templates/cordova/Api.js
+++ b/node_modules/cordova-android/bin/templates/cordova/Api.js
@@ -248,7 +248,7 @@ Api.prototype.addPlugin = function (plugin, installOptions) {
}).then(function () {
if (plugin.getFrameworks(this.platform).length === 0) return;
selfEvents.emit('verbose', 'Updating build files since android plugin contained ');
- // This should pick the correct builder, not just get gradle
+ // This should pick the correct builder, not just get gradle
require('./lib/builders/builders').getBuilder(this.builder).prepBuildFiles();
}.bind(this))
// CB-11022 Return truthy value to prevent running prepare after
diff --git a/node_modules/cordova-android/bin/templates/cordova/lib/AndroidStudio.js b/node_modules/cordova-android/bin/templates/cordova/lib/AndroidStudio.js
index fbcb926..68d4d8f 100644
--- a/node_modules/cordova-android/bin/templates/cordova/lib/AndroidStudio.js
+++ b/node_modules/cordova-android/bin/templates/cordova/lib/AndroidStudio.js
@@ -6,37 +6,6 @@
/* jshint esnext: false */
-var path = require('path');
-var fs = require('fs');
-var CordovaError = require('cordova-common').CordovaError;
-
module.exports.isAndroidStudioProject = function isAndroidStudioProject (root) {
- var eclipseFiles = ['AndroidManifest.xml', 'libs', 'res'];
- var androidStudioFiles = ['app', 'app/src/main'];
-
- // assume it is an AS project and not an Eclipse project
- var isEclipse = false;
- var isAS = true;
-
- if (!fs.existsSync(root)) {
- throw new CordovaError('AndroidStudio.js:inAndroidStudioProject root does not exist: ' + root);
- }
-
- // if any of the following exists, then we are not an ASProj
- eclipseFiles.forEach(function (file) {
- if (fs.existsSync(path.join(root, file))) {
- isEclipse = true;
- }
- });
-
- // if it is NOT an eclipse project, check that all required files exist
- if (!isEclipse) {
- androidStudioFiles.forEach(function (file) {
- if (!fs.existsSync(path.join(root, file))) {
- console.log('missing file :: ' + file);
- isAS = false;
- }
- });
- }
- return (!isEclipse && isAS);
+ return true;
};
diff --git a/node_modules/cordova-android/bin/templates/cordova/lib/builders/StudioBuilder.js b/node_modules/cordova-android/bin/templates/cordova/lib/builders/StudioBuilder.js
index 262c1e3..1689e16 100644
--- a/node_modules/cordova-android/bin/templates/cordova/lib/builders/StudioBuilder.js
+++ b/node_modules/cordova-android/bin/templates/cordova/lib/builders/StudioBuilder.js
@@ -215,28 +215,28 @@ StudioBuilder.prototype.prepBuildFiles = function () {
StudioBuilder.prototype.prepEnv = function (opts) {
var self = this;
return check_reqs.check_gradle()
- .then(function (gradlePath) {
- return self.runGradleWrapper(gradlePath);
- }).then(function () {
- return self.prepBuildFiles();
- }).then(function () {
- // If the gradle distribution URL is set, make sure it points to version we want.
- // If it's not set, do nothing, assuming that we're using a future version of gradle that we don't want to mess with.
- // For some reason, using ^ and $ don't work. This does the job, though.
- var distributionUrlRegex = /distributionUrl.*zip/;
- var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'https\\://services.gradle.org/distributions/gradle-4.1-all.zip';
- var gradleWrapperPropertiesPath = path.join(self.root, 'gradle', 'wrapper', 'gradle-wrapper.properties');
- shell.chmod('u+w', gradleWrapperPropertiesPath);
- shell.sed('-i', distributionUrlRegex, 'distributionUrl=' + distributionUrl, gradleWrapperPropertiesPath);
+ .then(function (gradlePath) {
+ return self.runGradleWrapper(gradlePath);
+ }).then(function () {
+ return self.prepBuildFiles();
+ }).then(function () {
+ // If the gradle distribution URL is set, make sure it points to version we want.
+ // If it's not set, do nothing, assuming that we're using a future version of gradle that we don't want to mess with.
+ // For some reason, using ^ and $ don't work. This does the job, though.
+ var distributionUrlRegex = /distributionUrl.*zip/;
+ var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'https\\://services.gradle.org/distributions/gradle-4.1-all.zip';
+ var gradleWrapperPropertiesPath = path.join(self.root, 'gradle', 'wrapper', 'gradle-wrapper.properties');
+ shell.chmod('u+w', gradleWrapperPropertiesPath);
+ shell.sed('-i', distributionUrlRegex, 'distributionUrl=' + distributionUrl, gradleWrapperPropertiesPath);
- var propertiesFile = opts.buildType + SIGNING_PROPERTIES;
- var propertiesFilePath = path.join(self.root, propertiesFile);
- if (opts.packageInfo) {
- fs.writeFileSync(propertiesFilePath, TEMPLATE + opts.packageInfo.toProperties());
- } else if (isAutoGenerated(propertiesFilePath)) {
- shell.rm('-f', propertiesFilePath);
- }
- });
+ var propertiesFile = opts.buildType + SIGNING_PROPERTIES;
+ var propertiesFilePath = path.join(self.root, propertiesFile);
+ if (opts.packageInfo) {
+ fs.writeFileSync(propertiesFilePath, TEMPLATE + opts.packageInfo.toProperties());
+ } else if (isAutoGenerated(propertiesFilePath)) {
+ shell.rm('-f', propertiesFilePath);
+ }
+ });
};
/*
@@ -248,33 +248,33 @@ StudioBuilder.prototype.build = function (opts) {
var args = this.getArgs(opts.buildType === 'debug' ? 'debug' : 'release', opts);
return spawn(wrapper, args, {stdio: 'pipe'})
- .progress(function (stdio) {
- if (stdio.stderr) {
- /*
- * Workaround for the issue with Java printing some unwanted information to
- * stderr instead of stdout.
- * This function suppresses 'Picked up _JAVA_OPTIONS' message from being
- * printed to stderr. See https://issues.apache.org/jira/browse/CB-9971 for
- * explanation.
- */
- var suppressThisLine = /^Picked up _JAVA_OPTIONS: /i.test(stdio.stderr.toString());
- if (suppressThisLine) {
- return;
+ .progress(function (stdio) {
+ if (stdio.stderr) {
+ /*
+ * Workaround for the issue with Java printing some unwanted information to
+ * stderr instead of stdout.
+ * This function suppresses 'Picked up _JAVA_OPTIONS' message from being
+ * printed to stderr. See https://issues.apache.org/jira/browse/CB-9971 for
+ * explanation.
+ */
+ var suppressThisLine = /^Picked up _JAVA_OPTIONS: /i.test(stdio.stderr.toString());
+ if (suppressThisLine) {
+ return;
+ }
+ process.stderr.write(stdio.stderr);
+ } else {
+ process.stdout.write(stdio.stdout);
}
- process.stderr.write(stdio.stderr);
- } else {
- process.stdout.write(stdio.stdout);
- }
- }).catch(function (error) {
- if (error.toString().indexOf('failed to find target with hash string') >= 0) {
- return check_reqs.check_android_target(error).then(function () {
- // If due to some odd reason - check_android_target succeeds
- // we should still fail here.
- return Q.reject(error);
- });
- }
- return Q.reject(error);
- });
+ }).catch(function (error) {
+ if (error.toString().indexOf('failed to find target with hash string') >= 0) {
+ return check_reqs.check_android_target(error).then(function () {
+ // If due to some odd reason - check_android_target succeeds
+ // we should still fail here.
+ return Q.reject(error);
+ });
+ }
+ return Q.reject(error);
+ });
};
StudioBuilder.prototype.clean = function (opts) {
@@ -284,16 +284,16 @@ StudioBuilder.prototype.clean = function (opts) {
return Q().then(function () {
return spawn(wrapper, args, {stdio: 'inherit'});
})
- .then(function () {
- shell.rm('-rf', path.join(builder.root, 'out'));
+ .then(function () {
+ shell.rm('-rf', path.join(builder.root, 'out'));
- ['debug', 'release'].forEach(function (config) {
- var propertiesFilePath = path.join(builder.root, config + SIGNING_PROPERTIES);
- if (isAutoGenerated(propertiesFilePath)) {
- shell.rm('-f', propertiesFilePath);
- }
+ ['debug', 'release'].forEach(function (config) {
+ var propertiesFilePath = path.join(builder.root, config + SIGNING_PROPERTIES);
+ if (isAutoGenerated(propertiesFilePath)) {
+ shell.rm('-f', propertiesFilePath);
+ }
+ });
});
- });
};
module.exports = StudioBuilder;
diff --git a/node_modules/cordova-android/bin/templates/cordova/lib/emulator.js b/node_modules/cordova-android/bin/templates/cordova/lib/emulator.js
index 305e2e3..63ed302 100644
--- a/node_modules/cordova-android/bin/templates/cordova/lib/emulator.js
+++ b/node_modules/cordova-android/bin/templates/cordova/lib/emulator.js
@@ -344,7 +344,8 @@ module.exports.wait_for_emulator = function (port) {
}, function (error) {
if ((error && error.message &&
(error.message.indexOf('not found') > -1)) ||
- (error.message.indexOf('device offline') > -1)) {
+ (error.message.indexOf('device offline') > -1) ||
+ (error.message.indexOf('device still connecting') > -1)) {
// emulator not yet started, continue waiting
return self.wait_for_emulator(port);
} else {
diff --git a/node_modules/cordova-android/bin/templates/cordova/lib/pluginHandlers.js b/node_modules/cordova-android/bin/templates/cordova/lib/pluginHandlers.js
index 842489a..f5be4b4 100644
--- a/node_modules/cordova-android/bin/templates/cordova/lib/pluginHandlers.js
+++ b/node_modules/cordova-android/bin/templates/cordova/lib/pluginHandlers.js
@@ -34,15 +34,7 @@ var handlers = {
// a later plugins release. This is for legacy plugins to work with Cordova.
if (options && options.android_studio === true) {
- // If a Java file is using the new directory structure, don't penalize it
- if (!obj.targetDir.includes('app/src/main')) {
- if (obj.src.endsWith('.java')) {
- dest = path.join('app/src/main/java', obj.targetDir.substring(4), path.basename(obj.src));
- } else if (obj.src.endsWith('.xml')) {
- // We are making a huge assumption here that XML files will be going to res/xml or values/xml
- dest = path.join('app/src/main', obj.targetDir, path.basename(obj.src));
- }
- }
+ dest = getInstallDestination(obj);
}
if (options && options.force) {
@@ -55,10 +47,16 @@ var handlers = {
var dest = path.join(obj.targetDir, path.basename(obj.src));
if (options && options.android_studio === true) {
- dest = path.join('app/src/main/java', obj.targetDir.substring(4), path.basename(obj.src));
+ dest = getInstallDestination(obj);
}
- deleteJava(project.projectDir, dest);
+ // TODO: Add Koltin extension to uninstall, since they are handled like Java files
+ if (obj.src.endsWith('java')) {
+ deleteJava(project.projectDir, dest);
+ } else {
+ // Just remove the file, not the whole parent directory
+ removeFile(project.projectDir, dest);
+ }
}
},
'lib-file': {
@@ -318,3 +316,30 @@ function removeFileAndParents (baseDir, destFile, stopper) {
function generateAttributeError (attribute, element, id) {
return 'Required attribute "' + attribute + '" not specified in <' + element + '> element from plugin: ' + id;
}
+
+function getInstallDestination (obj) {
+ var APP_MAIN_PREFIX = 'app/src/main';
+
+ if (obj.targetDir.startsWith('app')) {
+ // If any source file is using the new app directory structure,
+ // don't penalize it
+ return path.join(obj.targetDir, path.basename(obj.src));
+ } else if (obj.src.endsWith('.java')) {
+ return path.join(APP_MAIN_PREFIX, 'java', obj.targetDir.substring(4), path.basename(obj.src));
+ } else if (obj.src.endsWith('.aidl')) {
+ return path.join(APP_MAIN_PREFIX, 'aidl', obj.targetDir.substring(4), path.basename(obj.src));
+ } else if (obj.targetDir.includes('libs')) {
+ if (obj.src.endsWith('.so')) {
+ return path.join(APP_MAIN_PREFIX, 'jniLibs', obj.targetDir.substring(5), path.basename(obj.src));
+ } else {
+ return path.join('app', obj.targetDir, path.basename(obj.src));
+ }
+ } else if (obj.targetDir.includes('src/main')) {
+ return path.join('app', obj.targetDir, path.basename(obj.src));
+ } else {
+ // For all other source files not using the new app directory structure,
+ // add 'app/src/main' to the targetDir
+ return path.join(APP_MAIN_PREFIX, obj.targetDir, path.basename(obj.src));
+ }
+
+}
diff --git a/node_modules/cordova-android/bin/templates/cordova/version b/node_modules/cordova-android/bin/templates/cordova/version
index b20d5ae..42d31ce 100755
--- a/node_modules/cordova-android/bin/templates/cordova/version
+++ b/node_modules/cordova-android/bin/templates/cordova/version
@@ -20,7 +20,7 @@
*/
// Coho updates this line:
-var VERSION = "7.1.1";
+var VERSION = "7.1.4";
module.exports.version = VERSION;
diff --git a/node_modules/cordova-android/bin/templates/project/app/build.gradle b/node_modules/cordova-android/bin/templates/project/app/build.gradle
index b47fdf9..4830dd9 100644
--- a/node_modules/cordova-android/bin/templates/project/app/build.gradle
+++ b/node_modules/cordova-android/bin/templates/project/app/build.gradle
@@ -69,7 +69,7 @@ ext {
if (!project.hasProperty('cdvBuildMultipleApks')) {
cdvBuildMultipleApks = null
}
- // Whether to append a 0 "abi digit" to versionCode when only a single APK is build
+ // Whether to append a 0 "abi digit" to versionCode when only a single APK is build
if (!project.hasProperty('cdvVersionCodeForceAbiDigit')) {
cdvVersionCodeForceAbiDigit = null
}
@@ -93,11 +93,16 @@ ext {
// PLUGIN GRADLE EXTENSIONS START
// PLUGIN GRADLE EXTENSIONS END
-def hasBuildExtras = file('build-extras.gradle').exists()
-if (hasBuildExtras) {
+def hasBuildExtras1 = file('build-extras.gradle').exists()
+if (hasBuildExtras1) {
apply from: 'build-extras.gradle'
}
+def hasBuildExtras2 = file('../build-extras.gradle').exists()
+if (hasBuildExtras2) {
+ apply from: '../build-extras.gradle'
+}
+
// Set property defaults after extension .gradle files.
if (ext.cdvCompileSdkVersion == null) {
ext.cdvCompileSdkVersion = privateHelpers.getProjectTarget()
@@ -117,7 +122,7 @@ if (ext.cdvReleaseSigningPropertiesFile == null && file('../release-signing.prop
// Cast to appropriate types.
ext.cdvBuildMultipleApks = cdvBuildMultipleApks == null ? false : cdvBuildMultipleApks.toBoolean();
ext.cdvVersionCodeForceAbiDigit = cdvVersionCodeForceAbiDigit == null ? false : cdvVersionCodeForceAbiDigit.toBoolean();
-ext.cdvMinSdkVersion = cdvMinSdkVersion == null ? null : defaultMinSdkVersion
+ext.cdvMinSdkVersion = cdvMinSdkVersion == null ? defaultMinSdkVersion : Integer.parseInt('' + cdvMinSdkVersion)
ext.cdvVersionCode = cdvVersionCode == null ? null : Integer.parseInt('' + cdvVersionCode)
def computeBuildTargetName(debugBuild) {
@@ -174,10 +179,11 @@ android {
compileSdkVersion cdvCompileSdkVersion
buildToolsVersion cdvBuildToolsVersion
- //This code exists for Crosswalk and other Native APIs.
- //By default, we multiply the existing version code in the Android Manifest by 10 and
- //add a number for each architecture. If you are not using Crosswalk or SQLite, you can
- //ignore this chunk of code, and your version codes will be respected.
+ // This code exists for Crosswalk and other Native APIs.
+ // By default, we multiply the existing version code in the
+ // Android Manifest by 10 and add a number for each architecture.
+ // If you are not using Crosswalk or SQLite, you can
+ // ignore this chunk of code, and your version codes will be respected.
if (Boolean.valueOf(cdvBuildMultipleApks)) {
flavorDimensions "default"
diff --git a/node_modules/cordova-android/bin/templates/project/assets/www/cordova.js b/node_modules/cordova-android/bin/templates/project/assets/www/cordova.js
index d7b144e..da35c02 100644
--- a/node_modules/cordova-android/bin/templates/project/assets/www/cordova.js
+++ b/node_modules/cordova-android/bin/templates/project/assets/www/cordova.js
@@ -19,7 +19,7 @@
under the License.
*/
;(function() {
-var PLATFORM_VERSION_BUILD_LABEL = '7.1.1';
+var PLATFORM_VERSION_BUILD_LABEL = '7.1.4';
// file: src/scripts/require.js
/* jshint -W079 */
@@ -2186,4 +2186,4 @@ window.cordova = require('cordova');
require('cordova/init');
-})();
\ No newline at end of file
+})();
diff --git a/node_modules/cordova-android/cordova-js-src/exec.js b/node_modules/cordova-android/cordova-js-src/exec.js
index f73d87a..39e8c97 100644
--- a/node_modules/cordova-android/cordova-js-src/exec.js
+++ b/node_modules/cordova-android/cordova-js-src/exec.js
@@ -109,17 +109,6 @@ function androidExec(success, fail, service, action, args) {
}
androidExec.init = function() {
- //CB-11828
- //This failsafe checks the version of Android and if it's Jellybean, it switches it to
- //using the Online Event bridge for communicating from Native to JS
- //
- //It's ugly, but it's necessary.
- var check = navigator.userAgent.toLowerCase().match(/android\s[0-9].[0-9]/);
- var version_code = check && check[0].match(/4.[0-3].*/);
- if (version_code != null && nativeToJsBridgeMode == nativeToJsModes.EVAL_BRIDGE) {
- nativeToJsBridgeMode = nativeToJsModes.ONLINE_EVENT;
- }
-
bridgeSecret = +prompt('', 'gap_init:' + nativeToJsBridgeMode);
channel.onNativeReady.fire();
};
diff --git a/node_modules/cordova-android/framework/build.gradle b/node_modules/cordova-android/framework/build.gradle
index 4ff7264..4f7f171 100644
--- a/node_modules/cordova-android/framework/build.gradle
+++ b/node_modules/cordova-android/framework/build.gradle
@@ -24,10 +24,10 @@ ext {
buildscript {
repositories {
- jcenter()
maven {
url "https://maven.google.com"
}
+ jcenter()
}
dependencies {
@@ -42,7 +42,7 @@ apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
group = 'org.apache.cordova'
-version = '7.1.1'
+version = '7.1.4'
android {
compileSdkVersion cdvCompileSdkVersion
@@ -129,9 +129,9 @@ bintray {
licenses = ['Apache-2.0']
labels = ['android', 'cordova', 'phonegap']
version {
- name = '7.1.1'
+ name = '7.1.4'
released = new Date()
- vcsTag = '7.1.1'
+ vcsTag = '7.1.4'
}
}
}
diff --git a/node_modules/cordova-android/framework/src/org/apache/cordova/CordovaWebView.java b/node_modules/cordova-android/framework/src/org/apache/cordova/CordovaWebView.java
index 4ed1b75..f4cab35 100644
--- a/node_modules/cordova-android/framework/src/org/apache/cordova/CordovaWebView.java
+++ b/node_modules/cordova-android/framework/src/org/apache/cordova/CordovaWebView.java
@@ -31,7 +31,7 @@ import android.webkit.WebChromeClient.CustomViewCallback;
* are not expected to implement it.
*/
public interface CordovaWebView {
- public static final String CORDOVA_VERSION = "7.1.1";
+ public static final String CORDOVA_VERSION = "7.1.4";
void init(CordovaInterface cordova, List pluginEntries, CordovaPreferences preferences);
diff --git a/node_modules/cordova-android/node_modules/android-versions/.jshintrc b/node_modules/cordova-android/node_modules/android-versions/.jshintrc
index e19b383..427d629 100644
--- a/node_modules/cordova-android/node_modules/android-versions/.jshintrc
+++ b/node_modules/cordova-android/node_modules/android-versions/.jshintrc
@@ -1,4 +1,5 @@
{
+ "esversion": 6,
"indent": 2,
"forin": true,
"noarg": true,
diff --git a/node_modules/cordova-android/node_modules/android-versions/index.js b/node_modules/cordova-android/node_modules/android-versions/index.js
index 6592926..81c7f53 100644
--- a/node_modules/cordova-android/node_modules/android-versions/index.js
+++ b/node_modules/cordova-android/node_modules/android-versions/index.js
@@ -30,35 +30,42 @@
*/
var VERSIONS = {
- BASE: { api: 1, ndk: 0, semver: "1.0", name: "(no code name)", versionCode: "BASE" },
- BASE_1_1: { api: 2, ndk: 0, semver: "1.1", name: "(no code name)", versionCode: "BASE_1_1" },
- CUPCAKE: { api: 3, ndk: 1, semver: "1.5", name: "Cupcake", versionCode: "CUPCAKE" },
- DONUT: { api: 4, ndk: 2, semver: "1.6", name: "Donut", versionCode: "DONUT" },
- ECLAIR: { api: 5, ndk: 2, semver: "2.0", name: "Eclair", versionCode: "ECLAIR" },
- ECLAIR_0_1: { api: 6, ndk: 2, semver: "2.0.1", name: "Eclair", versionCode: "ECLAIR_0_1" },
- ECLAIR_MR1: { api: 7, ndk: 3, semver: "2.1", name: "Eclair", versionCode: "ECLAIR_MR1" },
- FROYO: { api: 8, ndk: 4, semver: "2.2.x", name: "Froyo", versionCode: "FROYO" },
- GINGERBREAD: { api: 9, ndk: 5, semver: "2.3.0 - 2.3.2", name: "Gingerbread", versionCode: "GINGERBREAD" },
- GINGERBREAD_MR1: { api: 10, ndk: 5, semver: "2.3.3 - 2.3.7", name: "Gingerbread", versionCode: "GINGERBREAD_MR1" },
- HONEYCOMB: { api: 11, ndk: 5, semver: "3.0", name: "Honeycomb", versionCode: "HONEYCOMB" },
- HONEYCOMB_MR1: { api: 12, ndk: 6, semver: "3.1", name: "Honeycomb", versionCode: "HONEYCOMB_MR1" },
- HONEYCOMB_MR2: { api: 13, ndk: 6, semver: "3.2.x", name: "Honeycomb", versionCode: "HONEYCOMB_MR2" },
- ICE_CREAM_SANDWICH: { api: 14, ndk: 7, semver: "4.0.1 - 4.0.2", name: "Ice Cream Sandwich", versionCode: "ICE_CREAM_SANDWICH" },
- ICE_CREAM_SANDWICH_MR1: { api: 15, ndk: 8, semver: "4.0.3 - 4.0.4", name: "Ice Cream Sandwich", versionCode: "ICE_CREAM_SANDWICH_MR1" },
- JELLY_BEAN: { api: 16, ndk: 8, semver: "4.1.x", name: "Jellybean", versionCode: "JELLY_BEAN" },
- JELLY_BEAN_MR1: { api: 17, ndk: 8, semver: "4.2.x", name: "Jellybean", versionCode: "JELLY_BEAN_MR1" },
- JELLY_BEAN_MR2: { api: 18, ndk: 8, semver: "4.3.x", name: "Jellybean", versionCode: "JELLY_BEAN_MR2" },
- KITKAT: { api: 19, ndk: 8, semver: "4.4.0 - 4.4.4", name: "KitKat", versionCode: "KITKAT" },
- KITKAT_WATCH: { api: 20, ndk: 8, semver: "4.4", name: "KitKat Watch", versionCode: "KITKAT_WATCH" },
- LOLLIPOP: { api: 21, ndk: 8, semver: "5.0", name: "Lollipop", versionCode: "LOLLIPOP" },
- LOLLIPOP_MR1: { api: 22, ndk: 8, semver: "5.1", name: "Lollipop", versionCode: "LOLLIPOP_MR1" },
- M: { api: 23, ndk: 8, semver: "6.0", name: "Marshmallow", versionCode: "M" },
- N: { api: 24, ndk: 8, semver: "7.0", name: "Nougat", versionCode: "N" },
- N_MR1: { api: 25, ndk: 8, semver: "7.1", name: "Nougat", versionCode: "N_MR1" },
- O: { api: 26, ndk: 8, semver: "8.0.0", name: "Oreo", versionCode: "O" },
- O_MR1: { api: 27, ndk: 8, semver: "8.1.0", name: "Oreo", versionCode: "O_MR1" }
+ BASE: { api: 1, ndk: 0, semver: "1.0", name: "(no code name)", },
+ BASE_1_1: { api: 2, ndk: 0, semver: "1.1", name: "(no code name)", },
+ CUPCAKE: { api: 3, ndk: 1, semver: "1.5", name: "Cupcake", },
+ DONUT: { api: 4, ndk: 2, semver: "1.6", name: "Donut", },
+ ECLAIR: { api: 5, ndk: 2, semver: "2.0", name: "Eclair", },
+ ECLAIR_0_1: { api: 6, ndk: 2, semver: "2.0.1", name: "Eclair", },
+ ECLAIR_MR1: { api: 7, ndk: 3, semver: "2.1", name: "Eclair", },
+ FROYO: { api: 8, ndk: 4, semver: "2.2.x", name: "Froyo", },
+ GINGERBREAD: { api: 9, ndk: 5, semver: "2.3.0 - 2.3.2", name: "Gingerbread", },
+ GINGERBREAD_MR1: { api: 10, ndk: 5, semver: "2.3.3 - 2.3.7", name: "Gingerbread", },
+ HONEYCOMB: { api: 11, ndk: 5, semver: "3.0", name: "Honeycomb", },
+ HONEYCOMB_MR1: { api: 12, ndk: 6, semver: "3.1", name: "Honeycomb", },
+ HONEYCOMB_MR2: { api: 13, ndk: 6, semver: "3.2.x", name: "Honeycomb", },
+ ICE_CREAM_SANDWICH: { api: 14, ndk: 7, semver: "4.0.1 - 4.0.2", name: "Ice Cream Sandwich", },
+ ICE_CREAM_SANDWICH_MR1: { api: 15, ndk: 8, semver: "4.0.3 - 4.0.4", name: "Ice Cream Sandwich", },
+ JELLY_BEAN: { api: 16, ndk: 8, semver: "4.1.x", name: "Jellybean", },
+ JELLY_BEAN_MR1: { api: 17, ndk: 8, semver: "4.2.x", name: "Jellybean", },
+ JELLY_BEAN_MR2: { api: 18, ndk: 8, semver: "4.3.x", name: "Jellybean", },
+ KITKAT: { api: 19, ndk: 8, semver: "4.4.0 - 4.4.4", name: "KitKat", },
+ KITKAT_WATCH: { api: 20, ndk: 8, semver: "4.4", name: "KitKat Watch", },
+ LOLLIPOP: { api: 21, ndk: 8, semver: "5.0", name: "Lollipop", },
+ LOLLIPOP_MR1: { api: 22, ndk: 8, semver: "5.1", name: "Lollipop", },
+ M: { api: 23, ndk: 8, semver: "6.0", name: "Marshmallow", },
+ N: { api: 24, ndk: 8, semver: "7.0", name: "Nougat", },
+ N_MR1: { api: 25, ndk: 8, semver: "7.1", name: "Nougat", },
+ O: { api: 26, ndk: 8, semver: "8.0.0", name: "Oreo", },
+ O_MR1: { api: 27, ndk: 8, semver: "8.1.0", name: "Oreo", },
+ P: { api: 28, ndk: 8, semver: "9", name: "Pie", }
}
+// Add a key to each version of Android for the "versionCode".
+// This is the same key we use in the VERSIONS map above.
+Object.keys(VERSIONS).forEach(function(version) {
+ VERSIONS[version].versionCode = version
+})
+
var semver = require('semver');
// semver format requires .. but we allow just . format.
@@ -82,8 +89,8 @@ function getFromDefaultPredicate(arg) {
return true
}
- let argSemver = formatSemver(arg);
- let versionSemver = formatSemver(version.semver);
+ var argSemver = formatSemver(arg)
+ var versionSemver = formatSemver(version.semver)
if (semver.valid(argSemver) && semver.satisfies(argSemver, versionSemver)) {
return true
diff --git a/node_modules/cordova-android/node_modules/android-versions/package.json b/node_modules/cordova-android/node_modules/android-versions/package.json
index 1eb06d9..173abf2 100644
--- a/node_modules/cordova-android/node_modules/android-versions/package.json
+++ b/node_modules/cordova-android/node_modules/android-versions/package.json
@@ -1,26 +1,26 @@
{
- "_from": "android-versions@1.3.0",
- "_id": "android-versions@1.3.0",
+ "_from": "android-versions@1",
+ "_id": "android-versions@1.4.0",
"_inBundle": true,
- "_integrity": "sha512-d/i1G16Oaw/T1EvskUA7Oo1vIQVK/0ZlpQgZfYVBwg6v/9FBE3QV66g5N1/bTHpRml8tFLxh+KoTw5DokK9c+A==",
+ "_integrity": "sha512-GnomfYsBq+nZh3c3UH/4r9Jt6FuTxdhUJbeHIdYOH5xBhQ8I0ZzC2/RM5IFFIjrzuNWSHb8JWP1lPK0/a26jrg==",
"_location": "/cordova-android/android-versions",
"_phantomChildren": {},
"_requested": {
- "type": "version",
+ "type": "range",
"registry": true,
- "raw": "android-versions@1.3.0",
+ "raw": "android-versions@1",
"name": "android-versions",
"escapedName": "android-versions",
- "rawSpec": "1.3.0",
+ "rawSpec": "1",
"saveSpec": null,
- "fetchSpec": "1.3.0"
+ "fetchSpec": "1"
},
"_requiredBy": [
"/cordova-android"
],
- "_resolved": "https://registry.npmjs.org/android-versions/-/android-versions-1.3.0.tgz",
- "_shasum": "ce6f3eae2e165ce4ed49b89beb68014741093044",
- "_spec": "android-versions@1.3.0",
+ "_resolved": "https://registry.npmjs.org/android-versions/-/android-versions-1.4.0.tgz",
+ "_shasum": "807ea2941d7e5780e6dd61c5d9b7b6f3c0706e09",
+ "_spec": "android-versions@1",
"_where": "/Users/brodybits/Documents/cordova/cordova-android",
"author": {
"name": "dvoiss"
@@ -63,5 +63,5 @@
"jshint": "jshint .",
"test": "tape tests/**/*.js"
},
- "version": "1.3.0"
+ "version": "1.4.0"
}
diff --git a/node_modules/cordova-android/node_modules/android-versions/tests/index.test.js b/node_modules/cordova-android/node_modules/android-versions/tests/index.test.js
index 0dbdcb6..477ab8b 100644
--- a/node_modules/cordova-android/node_modules/android-versions/tests/index.test.js
+++ b/node_modules/cordova-android/node_modules/android-versions/tests/index.test.js
@@ -1,7 +1,7 @@
"use strict";
-var test = require('tape')
-var android = require('..')
+const test = require('tape')
+const android = require('..')
test('get specific version by API level', (t) => {
t.plan(1)
@@ -16,7 +16,7 @@ test('getAll versions by API level', (t) => {
test('get specific version by predicate', (t) => {
t.plan(2)
- var actual = android.get((version) => {
+ let actual = android.get((version) => {
return version.name.indexOf("on") !== -1
})
t.equal(actual.name, "Donut")
@@ -30,7 +30,7 @@ test('get specific version by predicate', (t) => {
test('getAll versions by predicate', (t) => {
t.plan(3)
- var actual = android.getAll((version) => {
+ let actual = android.getAll((version) => {
return version.name.indexOf("on") !== -1
}).map((version) => version.name)
t.deepEqual(actual, ["Donut", "Honeycomb", "Honeycomb", "Honeycomb"])
@@ -43,7 +43,7 @@ test('getAll versions by predicate', (t) => {
actual = android.getAll((version) => {
return version.api > 22
}).map((version) => version.versionCode)
- t.deepEqual(actual, ["M", "N", "N_MR1", "O", "O_MR1"])
+ t.deepEqual(actual, ["M", "N", "N_MR1", "O", "O_MR1", "P"])
})
test('get version by semantic version', (t) => {
@@ -54,32 +54,31 @@ test('get version by semantic version', (t) => {
t.equal(android.get("2.3.3").versionCode, android.GINGERBREAD_MR1.versionCode)
})
+test('support major version only', (t) => {
+ t.plan(2)
+ t.equal(android.get("9.0").versionCode, android.P.versionCode)
+ t.equal(android.get("9.0.0").versionCode, android.P.versionCode)
+})
+
test('support version ranges', (t) => {
- t.plan(7);
- t.equal(android.get("4.4").versionCode, android.KITKAT.versionCode);
- t.equal(android.get("4.4.0").versionCode, android.KITKAT.versionCode);
- t.equal(android.get("4.4.1").versionCode, android.KITKAT.versionCode);
- t.equal(android.get("4.4.2").versionCode, android.KITKAT.versionCode);
- t.equal(android.get("4.4.3").versionCode, android.KITKAT.versionCode);
- t.equal(android.get("4.4.4").versionCode, android.KITKAT.versionCode);
- t.equal(android.get("4.4.5"), null);
+ t.plan(7)
+ let tests = [ "4.4", "4.4.0", "4.4.1", "4.4.2", "4.4.3", "4.4.4" ]
+ tests.forEach((versionCode) => {
+ t.equal(android.get(versionCode).versionCode, android.KITKAT.versionCode)
+ })
+ t.equal(android.get("4.4.5"), null)
})
test('support x-ranges', (t) => {
- t.plan(12);
- t.equal(android.get("4.1").versionCode, android.JELLY_BEAN.versionCode);
- t.equal(android.get("4.1.0").versionCode, android.JELLY_BEAN.versionCode);
- t.equal(android.get("4.1.1").versionCode, android.JELLY_BEAN.versionCode);
- t.equal(android.get("4.1.2").versionCode, android.JELLY_BEAN.versionCode);
- t.equal(android.get("4.1.3").versionCode, android.JELLY_BEAN.versionCode);
- t.equal(android.get("4.1.4").versionCode, android.JELLY_BEAN.versionCode);
- t.equal(android.get("4.1.5").versionCode, android.JELLY_BEAN.versionCode);
- t.equal(android.get("4.1.6").versionCode, android.JELLY_BEAN.versionCode);
- t.equal(android.get("4.1.7").versionCode, android.JELLY_BEAN.versionCode);
- t.equal(android.get("4.1.8").versionCode, android.JELLY_BEAN.versionCode);
- t.equal(android.get("4.1.9").versionCode, android.JELLY_BEAN.versionCode);
- t.equal(android.get("4.1.10").versionCode, android.JELLY_BEAN.versionCode);
-});
+ t.plan(12)
+ let tests = [
+ "4.1", "4.1.0", "4.1.1", "4.1.2", "4.1.3", "4.1.4",
+ "4.1.5", "4.1.6", "4.1.7", "4.1.8", "4.1.9", "4.1.10"
+ ]
+ tests.forEach((versionCode) => {
+ t.equal(android.get(versionCode).versionCode, android.JELLY_BEAN.versionCode)
+ })
+})
test('access version codes object', (t) => {
t.plan(1)
@@ -87,7 +86,7 @@ test('access version codes object', (t) => {
})
test('access specific versions directly', (t) => {
- t.plan(27)
+ t.plan(28)
t.ok(android.BASE)
t.ok(android.BASE_1_1)
t.ok(android.CUPCAKE)
@@ -115,4 +114,5 @@ test('access specific versions directly', (t) => {
t.ok(android.N_MR1)
t.ok(android.O)
t.ok(android.O_MR1)
+ t.ok(android.P)
})
diff --git a/node_modules/cordova-android/package.json b/node_modules/cordova-android/package.json
index 62974a1..33b3c61 100644
--- a/node_modules/cordova-android/package.json
+++ b/node_modules/cordova-android/package.json
@@ -1,27 +1,27 @@
{
- "_from": "cordova-android@^7.1.1",
- "_id": "cordova-android@7.1.1",
+ "_from": "cordova-android@^7.1.4",
+ "_id": "cordova-android@7.1.4",
"_inBundle": false,
- "_integrity": "sha512-MAOwEMT3TuGjKw4McNzzYyHmxkWY3ozafbIgdMAvPzqSBVGIcn+H3SmWfaHtUXfmIPFliT171ICsSm6W5lZXEA==",
+ "_integrity": "sha512-Rtvu002I83uzfVyCsE6p2krFKVHt9TSAqZUATes+zH+o9cdxYGrLHY+PKCQo4SLCdSMdrkIHCDnQPTYTp/d7+g==",
"_location": "/cordova-android",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
- "raw": "cordova-android@^7.1.1",
+ "raw": "cordova-android@^7.1.4",
"name": "cordova-android",
"escapedName": "cordova-android",
- "rawSpec": "^7.1.1",
+ "rawSpec": "^7.1.4",
"saveSpec": null,
- "fetchSpec": "^7.1.1"
+ "fetchSpec": "^7.1.4"
},
"_requiredBy": [
"#USER",
"/"
],
- "_resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-7.1.1.tgz",
- "_shasum": "711559ee18f5f625a2348d4ce348930d14890e2d",
- "_spec": "cordova-android@^7.1.1",
+ "_resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-7.1.4.tgz",
+ "_shasum": "25261ad66cc64f42a30b70be005901fa30e2430e",
+ "_spec": "cordova-android@^7.1.4",
"_where": "/home/cromer/WebstormProjects/jvon-mobile",
"author": {
"name": "Apache Software Foundation"
@@ -66,11 +66,11 @@
],
"dependencies": {
"abbrev": "*",
- "android-versions": "1.3.0",
+ "android-versions": "1.4.0",
"ansi": "*",
"balanced-match": "*",
"base64-js": "1.2.0",
- "big-integer": "*",
+ "big-integer": "1.6.32",
"bplist-parser": "*",
"brace-expansion": "*",
"concat-map": "*",
@@ -83,12 +83,12 @@
"minimatch": "*",
"nopt": "3.0.1",
"once": "*",
- "path-is-absolute": "*",
+ "path-is-absolute": "1.0.1",
"plist": "2.1.0",
"properties-parser": "0.2.3",
"q": "1.4.1",
"sax": "0.3.5",
- "semver": "*",
+ "semver": "5.5.0",
"shelljs": "0.5.3",
"underscore": "*",
"unorm": "*",
@@ -136,5 +136,5 @@
"test": "npm run eslint && npm run unit-tests && npm run java-unit-tests && npm run e2e-tests",
"unit-tests": "jasmine --config=spec/unit/jasmine.json"
},
- "version": "7.1.1"
+ "version": "7.1.4"
}
diff --git a/node_modules/cordova-android/spec/fixtures/android_project/AndroidManifest.xml b/node_modules/cordova-android/spec/fixtures/android_project/AndroidManifest.xml
deleted file mode 100644
index 17489ca..0000000
--- a/node_modules/cordova-android/spec/fixtures/android_project/AndroidManifest.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/node_modules/cordova-android/spec/fixtures/android_project/assets/www/.gitkeep b/node_modules/cordova-android/spec/fixtures/android_project/assets/www/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/node_modules/cordova-android/spec/fixtures/android_project/res/xml/config.xml b/node_modules/cordova-android/spec/fixtures/android_project/res/xml/config.xml
deleted file mode 100644
index 4f087a9..0000000
--- a/node_modules/cordova-android/spec/fixtures/android_project/res/xml/config.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/node_modules/cordova-android/spec/fixtures/android_project/src/.gitkeep b/node_modules/cordova-android/spec/fixtures/android_project/src/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/node_modules/cordova-android/spec/fixtures/android_studio_project/build.gradle b/node_modules/cordova-android/spec/fixtures/android_studio_project/build.gradle
index 168f129..8df9299 100644
--- a/node_modules/cordova-android/spec/fixtures/android_studio_project/build.gradle
+++ b/node_modules/cordova-android/spec/fixtures/android_studio_project/build.gradle
@@ -2,6 +2,7 @@
buildscript {
repositories {
+ google()
jcenter()
}
dependencies {
@@ -14,6 +15,7 @@ buildscript {
allprojects {
repositories {
+ google()
jcenter()
}
}
diff --git a/node_modules/cordova-android/spec/fixtures/org.test.plugins.dummyplugin/plugin.xml b/node_modules/cordova-android/spec/fixtures/org.test.plugins.dummyplugin/plugin.xml
index a40df2b..9bc99d2 100644
--- a/node_modules/cordova-android/spec/fixtures/org.test.plugins.dummyplugin/plugin.xml
+++ b/node_modules/cordova-android/spec/fixtures/org.test.plugins.dummyplugin/plugin.xml
@@ -70,6 +70,20 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/cordova-android/spec/unit/AndroidProject.spec.js b/node_modules/cordova-android/spec/unit/AndroidProject.spec.js
deleted file mode 100644
index 755c6f3..0000000
--- a/node_modules/cordova-android/spec/unit/AndroidProject.spec.js
+++ /dev/null
@@ -1,31 +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 path = require('path');
-var AndroidProject = require('../../bin/templates/cordova/lib/AndroidProject');
-var android_project = path.join(__dirname, '../fixtures/android_project');
-
-describe('AndroidProject class', function () {
- describe('getPackageName method', function () {
- it('Test#001 : should return an android project\'s proper package name', function () {
- expect(AndroidProject.getProjectFile(android_project).getPackageName())
- .toEqual('com.alunny.childapp');
- });
- });
-});
diff --git a/node_modules/cordova-android/spec/unit/AndroidStudio.spec.js b/node_modules/cordova-android/spec/unit/AndroidStudio.spec.js
index 4db74d6..11d4675 100644
--- a/node_modules/cordova-android/spec/unit/AndroidStudio.spec.js
+++ b/node_modules/cordova-android/spec/unit/AndroidStudio.spec.js
@@ -8,9 +8,4 @@ describe('AndroidStudio module', function () {
var isAndStud = AndroidStudio.isAndroidStudioProject(root);
expect(isAndStud).toBe(true);
});
- it('should return false non Android Studio project', function () {
- var root = path.join(__dirname, '../fixtures/android_project/');
- var isAndStud = AndroidStudio.isAndroidStudioProject(root);
- expect(isAndStud).toBe(false);
- });
});
diff --git a/node_modules/cordova-android/spec/unit/pluginHandlers/handlers.spec.js b/node_modules/cordova-android/spec/unit/pluginHandlers/handlers.spec.js
index dae57a9..dc40434 100644
--- a/node_modules/cordova-android/spec/unit/pluginHandlers/handlers.spec.js
+++ b/node_modules/cordova-android/spec/unit/pluginHandlers/handlers.spec.js
@@ -28,7 +28,7 @@ var temp = path.join(os.tmpdir(), 'plugman');
var plugins_dir = path.join(temp, 'cordova/plugins');
var dummyplugin = path.join(__dirname, '../../fixtures/org.test.plugins.dummyplugin');
var faultyplugin = path.join(__dirname, '../../fixtures/org.test.plugins.faultyplugin');
-var android_project = path.join(__dirname, '../../fixtures/android_project/*');
+var android_studio_project = path.join(__dirname, '../../fixtures/android_studio_project/*');
var PluginInfo = require('cordova-common').PluginInfo;
var AndroidProject = require('../../../bin/templates/cordova/lib/AndroidProject');
@@ -60,48 +60,44 @@ describe('android project handler', function () {
});
describe('of elements', function () {
- it('Test#001 : should copy files', function () {
- android['lib-file'].install(valid_libs[0], dummyPluginInfo, dummyProject);
- expect(copyFileSpy).toHaveBeenCalledWith(dummyplugin, 'src/android/TestLib.jar', temp, path.join('libs', 'TestLib.jar'), false);
- });
- it('Test#002 : should copy files for Android Studio projects', function () {
+ it('Test#001 : should copy files for Android Studio projects', function () {
android['lib-file'].install(valid_libs[0], dummyPluginInfo, dummyProject, {android_studio: true});
expect(copyFileSpy).toHaveBeenCalledWith(dummyplugin, 'src/android/TestLib.jar', temp, path.join('app', 'libs', 'TestLib.jar'), false);
});
});
describe('of elements', function () {
- it('Test#003 : should copy files to the correct location on a non-Android Studio project', function () {
- android['resource-file'].install(valid_resources[0], dummyPluginInfo, dummyProject);
- expect(copyFileSpy).toHaveBeenCalledWith(dummyplugin, 'android-resource.xml', temp, path.join('res', 'xml', 'dummy.xml'), false);
+ it('Test#002 : should copy files to the correct location on an Android Studio project', function () {
+ android['resource-file'].install(valid_resources[0], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(copyFileSpy).toHaveBeenCalledWith(dummyplugin, 'android-resource.xml', temp, path.join('app', 'src', 'main', 'res', 'xml', 'dummy.xml'), false);
});
});
describe('of elements', function () {
beforeEach(function () {
- shell.cp('-rf', android_project, temp);
+ shell.cp('-rf', android_studio_project, temp);
});
- it('Test#004 : should copy stuff from one location to another by calling common.copyFile', function () {
+ it('Test#003 : should copy stuff from one location to another by calling common.copyFile', function () {
android['source-file'].install(valid_source[0], dummyPluginInfo, dummyProject);
expect(copyFileSpy)
.toHaveBeenCalledWith(dummyplugin, 'src/android/DummyPlugin.java', temp, path.join('src/com/phonegap/plugins/dummyplugin/DummyPlugin.java'), false);
});
- it('Test#005 : should install source files to the right location for Android Studio projects', function () {
+ it('Test#004 : should install source files to the right location for Android Studio projects', function () {
android['source-file'].install(valid_source[0], dummyPluginInfo, dummyProject, {android_studio: true});
expect(copyFileSpy)
.toHaveBeenCalledWith(dummyplugin, 'src/android/DummyPlugin.java', temp, path.join('app/src/main/java/com/phonegap/plugins/dummyplugin/DummyPlugin.java'), false);
});
- it('Test#006 : should throw if source file cannot be found', function () {
+ it('Test#005 : should throw if source file cannot be found', function () {
common.__set__('copyFile', copyFileOrig);
expect(function () {
android['source-file'].install(invalid_source[0], faultyPluginInfo, dummyProject);
}).toThrow(new Error('"' + path.resolve(faultyplugin, 'src/android/NotHere.java') + '" not found!'));
});
- it('Test#007 : should throw if target file already exists', function () {
+ it('Test#006 : should throw if target file already exists', function () {
// write out a file
var target = path.resolve(temp, 'src/com/phonegap/plugins/dummyplugin');
shell.mkdir('-p', target);
@@ -112,6 +108,73 @@ describe('android project handler', function () {
android['source-file'].install(valid_source[0], dummyPluginInfo, dummyProject);
}).toThrow(new Error('"' + target + '" already exists!'));
});
+
+ // TODO: renumber these tests and other tests below
+ it('Test#00a6 : should allow installing sources with new app target-dir scheme', function () {
+ android['source-file'].install(valid_source[1], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(copyFileSpy)
+ .toHaveBeenCalledWith(dummyplugin, 'src/android/DummyPlugin2.java', temp, path.join('app/src/main/src/com/phonegap/plugins/dummyplugin/DummyPlugin2.java'), false);
+ });
+
+ it('Test#006b : should allow installing jar lib file from sources with new app target-dir scheme', function () {
+ android['source-file'].install(valid_source[2], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(copyFileSpy)
+ .toHaveBeenCalledWith(dummyplugin, 'src/android/TestLib.jar', temp, path.join('app/libs/TestLib.jar'), false);
+ });
+
+ it('Test#006c : should allow installing aar lib file from sources with new app target-dir scheme', function () {
+ android['source-file'].install(valid_source[3], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(copyFileSpy)
+ .toHaveBeenCalledWith(dummyplugin, 'src/android/TestAar.aar', temp, path.join('app/libs/TestAar.aar'), false);
+ });
+
+ it('Test#006d : should allow installing xml file from sources with old target-dir scheme', function () {
+ android['source-file'].install(valid_source[4], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(copyFileSpy).toHaveBeenCalledWith(dummyplugin,
+ 'src/android/mysettings.xml', temp,
+ path.join('app/src/main/res/xml/mysettings.xml'), false);
+ });
+
+ it('Test#006e : should allow installing file with other extension from sources with old target-dir scheme', function () {
+ android['source-file'].install(valid_source[5], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(copyFileSpy).toHaveBeenCalledWith(dummyplugin,
+ 'src/android/other.extension', temp,
+ path.join('app/src/main/res/values/other.extension'), false);
+ });
+
+ it('Test#006f : should allow installing aidl file from sources with old target-dir scheme (GH-547)', function () {
+ android['source-file'].install(valid_source[6], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(copyFileSpy).toHaveBeenCalledWith(dummyplugin,
+ 'src/android/myapi.aidl', temp,
+ path.join('app/src/main/aidl/com/mytest/myapi.aidl'), false);
+ });
+
+ it('Test#006g : should allow installing aar lib file from sources with old target-dir scheme (GH-547)', function () {
+ android['source-file'].install(valid_source[7], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(copyFileSpy).toHaveBeenCalledWith(dummyplugin,
+ 'src/android/testaar2.aar', temp,
+ path.join('app/libs/testaar2.aar'), false);
+ });
+
+ it('Test#006h : should allow installing jar lib file from sources with old target-dir scheme (GH-547)', function () {
+ android['source-file'].install(valid_source[8], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(copyFileSpy).toHaveBeenCalledWith(dummyplugin,
+ 'src/android/testjar2.jar', temp,
+ path.join('app/libs/testjar2.jar'), false);
+ });
+
+ it('Test#006i : should allow installing .so lib file from sources with old target-dir scheme (GH-547)', function () {
+ android['source-file'].install(valid_source[9], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(copyFileSpy).toHaveBeenCalledWith(dummyplugin,
+ 'src/android/jniLibs/x86/libnative.so', temp,
+ path.join('app/src/main/jniLibs/x86/libnative.so'), false);
+ });
+
+ it('Test#006j : should allow installing sources with target-dir that includes "app"', function () {
+ android['source-file'].install(valid_source[10], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(copyFileSpy)
+ .toHaveBeenCalledWith(dummyplugin, 'src/android/DummyPlugin2.java', temp, path.join('app/src/main/java/com/appco/DummyPlugin2.java'), false);
+ });
});
describe('of elements', function () {
@@ -122,7 +185,7 @@ describe('android project handler', function () {
var copyNewFileSpy = jasmine.createSpy('copyNewFile');
beforeEach(function () {
- shell.cp('-rf', android_project, temp);
+ shell.cp('-rf', android_studio_project, temp);
spyOn(dummyProject, 'addSystemLibrary');
spyOn(dummyProject, 'addSubProject');
@@ -134,23 +197,23 @@ describe('android project handler', function () {
common.__set__('copyNewFile', copyNewFileOrig);
});
- it('Test#008 : should throw if framework doesn\'t have "src" attribute', function () {
+ it('Test#007 : should throw if framework doesn\'t have "src" attribute', function () {
expect(function () { android.framework.install({}, dummyPluginInfo, dummyProject); }).toThrow();
});
- it('Test#009 : should install framework without "parent" attribute into project root', function () {
+ it('Test#008 : should install framework without "parent" attribute into project root', function () {
var framework = {src: 'plugin-lib'};
android.framework.install(framework, dummyPluginInfo, dummyProject);
expect(dummyProject.addSystemLibrary).toHaveBeenCalledWith(dummyProject.projectDir, someString);
});
- it('Test#010 : should install framework with "parent" attribute into parent framework dir', function () {
+ it('Test#009 : should install framework with "parent" attribute into parent framework dir', function () {
var childFramework = {src: 'plugin-lib2', parent: 'plugin-lib'};
android.framework.install(childFramework, dummyPluginInfo, dummyProject);
expect(dummyProject.addSystemLibrary).toHaveBeenCalledWith(path.resolve(dummyProject.projectDir, childFramework.parent), someString);
});
- it('Test#011 : should not copy anything if "custom" attribute is not set', function () {
+ it('Test#010 : should not copy anything if "custom" attribute is not set', function () {
var framework = {src: 'plugin-lib'};
var cpSpy = spyOn(shell, 'cp');
android.framework.install(framework, dummyPluginInfo, dummyProject);
@@ -158,14 +221,14 @@ describe('android project handler', function () {
expect(cpSpy).not.toHaveBeenCalled();
});
- it('Test#012 : should copy framework sources if "custom" attribute is set', function () {
+ it('Test#011 : should copy framework sources if "custom" attribute is set', function () {
var framework = {src: 'plugin-lib', custom: true};
android.framework.install(framework, dummyPluginInfo, dummyProject);
expect(dummyProject.addSubProject).toHaveBeenCalledWith(dummyProject.projectDir, someString);
expect(copyNewFileSpy).toHaveBeenCalledWith(dummyPluginInfo.dir, framework.src, dummyProject.projectDir, someString, false);
});
- it('Test#013 : should install gradleReference using project.addGradleReference', function () {
+ it('Test#012 : should install gradleReference using project.addGradleReference', function () {
var framework = {src: 'plugin-lib', custom: true, type: 'gradleReference'};
android.framework.install(framework, dummyPluginInfo, dummyProject);
expect(copyNewFileSpy).toHaveBeenCalledWith(dummyPluginInfo.dir, framework.src, dummyProject.projectDir, someString, false);
@@ -183,13 +246,13 @@ describe('android project handler', function () {
platformWwwDest = path.resolve(dummyProject.platformWww, 'plugins', dummyPluginInfo.id, jsModule.src);
});
- it('Test#014 : should put module to both www and platform_www when options.usePlatformWww flag is specified', function () {
+ it('Test#013 : should put module to both www and platform_www when options.usePlatformWww flag is specified', function () {
android['js-module'].install(jsModule, dummyPluginInfo, dummyProject, {usePlatformWww: true});
expect(fs.writeFileSync).toHaveBeenCalledWith(wwwDest, jasmine.any(String), 'utf-8');
expect(fs.writeFileSync).toHaveBeenCalledWith(platformWwwDest, jasmine.any(String), 'utf-8');
});
- it('Test#015 : should put module to www only when options.usePlatformWww flag is not specified', function () {
+ it('Test#014 : should put module to www only when options.usePlatformWww flag is not specified', function () {
android['js-module'].install(jsModule, dummyPluginInfo, dummyProject);
expect(fs.writeFileSync).toHaveBeenCalledWith(wwwDest, jasmine.any(String), 'utf-8');
expect(fs.writeFileSync).not.toHaveBeenCalledWith(platformWwwDest, jasmine.any(String), 'utf-8');
@@ -206,13 +269,13 @@ describe('android project handler', function () {
platformWwwDest = path.resolve(dummyProject.platformWww, asset.target);
});
- it('Test#016 : should put asset to both www and platform_www when options.usePlatformWww flag is specified', function () {
+ it('Test#015 : should put asset to both www and platform_www when options.usePlatformWww flag is specified', function () {
android.asset.install(asset, dummyPluginInfo, dummyProject, {usePlatformWww: true});
expect(copyFileSpy).toHaveBeenCalledWith(dummyPluginInfo.dir, asset.src, dummyProject.www, asset.target);
expect(copyFileSpy).toHaveBeenCalledWith(dummyPluginInfo.dir, asset.src, dummyProject.platformWww, asset.target);
});
- it('Test#017 : should put asset to www only when options.usePlatformWww flag is not specified', function () {
+ it('Test#016 : should put asset to www only when options.usePlatformWww flag is not specified', function () {
android.asset.install(asset, dummyPluginInfo, dummyProject);
expect(copyFileSpy).toHaveBeenCalledWith(dummyPluginInfo.dir, asset.src, dummyProject.www, asset.target);
expect(copyFileSpy).not.toHaveBeenCalledWith(dummyPluginInfo.dir, asset.src, dummyProject.platformWww, asset.target);
@@ -232,7 +295,7 @@ describe('android project handler', function () {
beforeEach(function () {
shell.mkdir('-p', temp);
shell.mkdir('-p', plugins_dir);
- shell.cp('-rf', android_project, temp);
+ shell.cp('-rf', android_studio_project, temp);
AndroidProject.purgeCache();
dummyProject = AndroidProject.getProjectFile(temp);
common.__set__('removeFile', removeFileSpy);
@@ -246,12 +309,7 @@ describe('android project handler', function () {
});
describe('of elements', function () {
- it('Test#018 : should remove jar files', function () {
- android['lib-file'].install(valid_libs[0], dummyPluginInfo, dummyProject);
- android['lib-file'].uninstall(valid_libs[0], dummyPluginInfo, dummyProject);
- expect(removeFileSpy).toHaveBeenCalledWith(temp, path.join('libs/TestLib.jar'));
- });
- it('Test#019 : should remove jar files for Android Studio projects', function () {
+ it('Test#017 : should remove jar files for Android Studio projects', function () {
android['lib-file'].install(valid_libs[0], dummyPluginInfo, dummyProject, {android_studio: true});
android['lib-file'].uninstall(valid_libs[0], dummyPluginInfo, dummyProject, {android_studio: true});
expect(removeFileSpy).toHaveBeenCalledWith(temp, path.join('app/libs/TestLib.jar'));
@@ -259,12 +317,7 @@ describe('android project handler', function () {
});
describe('of elements', function () {
- it('Test#020 : should remove files', function () {
- android['resource-file'].install(valid_resources[0], dummyPluginInfo, dummyProject);
- android['resource-file'].uninstall(valid_resources[0], dummyPluginInfo, dummyProject);
- expect(removeFileSpy).toHaveBeenCalledWith(temp, path.join('res/xml/dummy.xml'));
- });
- it('Test#021 : should remove files for Android Studio projects', function () {
+ it('Test#018 : should remove files for Android Studio projects', function () {
android['resource-file'].install(valid_resources[0], dummyPluginInfo, dummyProject, {android_studio: true});
android['resource-file'].uninstall(valid_resources[0], dummyPluginInfo, dummyProject, {android_studio: true});
expect(removeFileSpy).toHaveBeenCalledWith(temp, path.join('app/src/main/res/xml/dummy.xml'));
@@ -272,16 +325,71 @@ describe('android project handler', function () {
});
describe('of elements', function () {
- it('Test#022 : should remove stuff by calling common.deleteJava', function () {
- android['source-file'].install(valid_source[0], dummyPluginInfo, dummyProject);
- android['source-file'].uninstall(valid_source[0], dummyPluginInfo, dummyProject);
- expect(deleteJavaSpy).toHaveBeenCalledWith(temp, path.join('src/com/phonegap/plugins/dummyplugin/DummyPlugin.java'));
- });
- it('Test#023 : should remove stuff by calling common.deleteJava for Android Studio projects', function () {
+ it('Test#019 : should remove stuff by calling common.deleteJava for Android Studio projects', function () {
android['source-file'].install(valid_source[0], dummyPluginInfo, dummyProject, {android_studio: true});
android['source-file'].uninstall(valid_source[0], dummyPluginInfo, dummyProject, {android_studio: true});
expect(deleteJavaSpy).toHaveBeenCalledWith(temp, path.join('app/src/main/java/com/phonegap/plugins/dummyplugin/DummyPlugin.java'));
});
+
+ it('Test#019a : should remove stuff by calling common.deleteJava for Android Studio projects, with specific app target-dir', function () {
+ android['source-file'].install(valid_source[1], dummyPluginInfo, dummyProject, {android_studio: true});
+ android['source-file'].uninstall(valid_source[1], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(deleteJavaSpy).toHaveBeenCalledWith(temp, path.join('app/src/main/src/com/phonegap/plugins/dummyplugin/DummyPlugin2.java'));
+ });
+
+ it('Test#019b : should remove stuff by calling common.removeFile for Android Studio projects, of jar with new app target-dir scheme', function () {
+ android['source-file'].install(valid_source[2], dummyPluginInfo, dummyProject, {android_studio: true});
+ android['source-file'].uninstall(valid_source[2], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(removeFileSpy).toHaveBeenCalledWith(temp, path.join('app/libs/TestLib.jar'));
+ });
+
+ it('Test#019c : should remove stuff by calling common.removeFile for Android Studio projects, of aar with new app target-dir scheme', function () {
+ android['source-file'].install(valid_source[3], dummyPluginInfo, dummyProject, {android_studio: true});
+ android['source-file'].uninstall(valid_source[3], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(removeFileSpy).toHaveBeenCalledWith(temp, path.join('app/libs/TestAar.aar'));
+ });
+
+ it('Test#019d : should remove stuff by calling common.removeFile for Android Studio projects, of xml with old target-dir scheme', function () {
+ android['source-file'].install(valid_source[4], dummyPluginInfo, dummyProject, {android_studio: true});
+ android['source-file'].uninstall(valid_source[4], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(removeFileSpy).toHaveBeenCalledWith(temp, path.join('app/src/main/res/xml/mysettings.xml'));
+ });
+
+ it('Test#019e : should remove stuff by calling common.removeFile for Android Studio projects, of file with other extension with old target-dir scheme', function () {
+ android['source-file'].install(valid_source[5], dummyPluginInfo, dummyProject, {android_studio: true});
+ android['source-file'].uninstall(valid_source[5], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(removeFileSpy).toHaveBeenCalledWith(temp, path.join('app/src/main/res/values/other.extension'));
+ });
+
+ it('Test#019f : should remove stuff by calling common.removeFile for Android Studio projects, of aidl with old target-dir scheme (GH-547)', function () {
+ android['source-file'].install(valid_source[6], dummyPluginInfo, dummyProject, {android_studio: true});
+ android['source-file'].uninstall(valid_source[6], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(removeFileSpy).toHaveBeenCalledWith(temp, path.join('app/src/main/aidl/com/mytest/myapi.aidl'));
+ });
+
+ it('Test#019g : should remove stuff by calling common.removeFile for Android Studio projects, of aar with old target-dir scheme (GH-547)', function () {
+ android['source-file'].install(valid_source[7], dummyPluginInfo, dummyProject, {android_studio: true});
+ android['source-file'].uninstall(valid_source[7], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(removeFileSpy).toHaveBeenCalledWith(temp, path.join('app/libs/testaar2.aar'));
+ });
+
+ it('Test#019h : should remove stuff by calling common.removeFile for Android Studio projects, of jar with old target-dir scheme (GH-547)', function () {
+ android['source-file'].install(valid_source[8], dummyPluginInfo, dummyProject, {android_studio: true});
+ android['source-file'].uninstall(valid_source[8], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(removeFileSpy).toHaveBeenCalledWith(temp, path.join('app/libs/testjar2.jar'));
+ });
+
+ it('Test#019i : should remove stuff by calling common.removeFile for Android Studio projects, of .so lib file with old target-dir scheme (GH-547)', function () {
+ android['source-file'].install(valid_source[9], dummyPluginInfo, dummyProject, {android_studio: true});
+ android['source-file'].uninstall(valid_source[9], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(removeFileSpy).toHaveBeenCalledWith(temp, path.join('app/src/main/jniLibs/x86/libnative.so'));
+ });
+
+ it('Test#019j : should remove stuff by calling common.deleteJava for Android Studio projects, with target-dir that includes "app"', function () {
+ android['source-file'].install(valid_source[10], dummyPluginInfo, dummyProject, {android_studio: true});
+ android['source-file'].uninstall(valid_source[10], dummyPluginInfo, dummyProject, {android_studio: true});
+ expect(deleteJavaSpy).toHaveBeenCalledWith(temp, path.join('app/src/main/java/com/appco/DummyPlugin2.java'));
+ });
});
describe('of elements', function () {
@@ -296,30 +404,30 @@ describe('android project handler', function () {
spyOn(dummyProject, 'removeGradleReference');
});
- it('Test#024 : should throw if framework doesn\'t have "src" attribute', function () {
+ it('Test#020 : should throw if framework doesn\'t have "src" attribute', function () {
expect(function () { android.framework.uninstall({}, dummyPluginInfo, dummyProject); }).toThrow();
});
- it('Test#025 : should uninstall framework without "parent" attribute into project root', function () {
+ it('Test#021 : should uninstall framework without "parent" attribute into project root', function () {
var framework = {src: 'plugin-lib'};
android.framework.uninstall(framework, dummyPluginInfo, dummyProject);
expect(dummyProject.removeSystemLibrary).toHaveBeenCalledWith(dummyProject.projectDir, someString);
});
- it('Test#026 : should uninstall framework with "parent" attribute into parent framework dir', function () {
+ it('Test#022 : should uninstall framework with "parent" attribute into parent framework dir', function () {
var childFramework = {src: 'plugin-lib2', parent: 'plugin-lib'};
android.framework.uninstall(childFramework, dummyPluginInfo, dummyProject);
expect(dummyProject.removeSystemLibrary).toHaveBeenCalledWith(path.resolve(dummyProject.projectDir, childFramework.parent), someString);
});
- it('Test#027 : should remove framework sources if "custom" attribute is set', function () {
+ it('Test#023 : should remove framework sources if "custom" attribute is set', function () {
var framework = {src: 'plugin-lib', custom: true};
android.framework.uninstall(framework, dummyPluginInfo, dummyProject);
expect(dummyProject.removeSubProject).toHaveBeenCalledWith(dummyProject.projectDir, someString);
expect(removeFileSpy).toHaveBeenCalledWith(dummyProject.projectDir, someString);
});
- it('Test#28 : should install gradleReference using project.removeGradleReference', function () {
+ it('Test#24 : should install gradleReference using project.removeGradleReference', function () {
var framework = {src: 'plugin-lib', custom: true, type: 'gradleReference'};
android.framework.uninstall(framework, dummyPluginInfo, dummyProject);
expect(removeFileSpy).toHaveBeenCalledWith(dummyProject.projectDir, someString);
@@ -345,13 +453,13 @@ describe('android project handler', function () {
});
});
- it('Test#029 : should put module to both www and platform_www when options.usePlatformWww flag is specified', function () {
+ it('Test#025 : should put module to both www and platform_www when options.usePlatformWww flag is specified', function () {
android['js-module'].uninstall(jsModule, dummyPluginInfo, dummyProject, {usePlatformWww: true});
expect(shell.rm).toHaveBeenCalledWith('-Rf', wwwDest);
expect(shell.rm).toHaveBeenCalledWith('-Rf', platformWwwDest);
});
- it('Test#030 : should put module to www only when options.usePlatformWww flag is not specified', function () {
+ it('Test#026 : should put module to www only when options.usePlatformWww flag is not specified', function () {
android['js-module'].uninstall(jsModule, dummyPluginInfo, dummyProject);
expect(shell.rm).toHaveBeenCalledWith('-Rf', wwwDest);
expect(shell.rm).not.toHaveBeenCalledWith('-Rf', platformWwwDest);
@@ -375,13 +483,13 @@ describe('android project handler', function () {
});
});
- it('Test#031 : should put module to both www and platform_www when options.usePlatformWww flag is specified', function () {
+ it('Test#027 : should put module to both www and platform_www when options.usePlatformWww flag is specified', function () {
android.asset.uninstall(asset, dummyPluginInfo, dummyProject, {usePlatformWww: true});
expect(shell.rm).toHaveBeenCalledWith(jasmine.any(String), wwwDest);
expect(shell.rm).toHaveBeenCalledWith(jasmine.any(String), platformWwwDest);
});
- it('Test#032 : should put module to www only when options.usePlatformWww flag is not specified', function () {
+ it('Test#028 : should put module to www only when options.usePlatformWww flag is not specified', function () {
android.asset.uninstall(asset, dummyPluginInfo, dummyProject);
expect(shell.rm).toHaveBeenCalledWith(jasmine.any(String), wwwDest);
expect(shell.rm).not.toHaveBeenCalledWith(jasmine.any(String), platformWwwDest);
diff --git a/package-lock.json b/package-lock.json
index e010e8b..e4f68d1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,16 +5,16 @@
"requires": true,
"dependencies": {
"cordova-android": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-7.1.1.tgz",
- "integrity": "sha512-MAOwEMT3TuGjKw4McNzzYyHmxkWY3ozafbIgdMAvPzqSBVGIcn+H3SmWfaHtUXfmIPFliT171ICsSm6W5lZXEA==",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-7.1.4.tgz",
+ "integrity": "sha512-Rtvu002I83uzfVyCsE6p2krFKVHt9TSAqZUATes+zH+o9cdxYGrLHY+PKCQo4SLCdSMdrkIHCDnQPTYTp/d7+g==",
"requires": {
"abbrev": "*",
- "android-versions": "1.3.0",
+ "android-versions": "1.4.0",
"ansi": "*",
"balanced-match": "*",
"base64-js": "1.2.0",
- "big-integer": "*",
+ "big-integer": "1.6.32",
"bplist-parser": "*",
"brace-expansion": "*",
"concat-map": "*",
@@ -27,12 +27,12 @@
"minimatch": "*",
"nopt": "3.0.1",
"once": "*",
- "path-is-absolute": "*",
+ "path-is-absolute": "1.0.1",
"plist": "2.1.0",
"properties-parser": "0.2.3",
"q": "1.4.1",
"sax": "0.3.5",
- "semver": "*",
+ "semver": "5.5.0",
"shelljs": "0.5.3",
"underscore": "*",
"unorm": "*",
@@ -46,7 +46,7 @@
"bundled": true
},
"android-versions": {
- "version": "1.3.0",
+ "version": "1.4.0",
"bundled": true,
"requires": {
"semver": "^5.4.1"
@@ -214,6 +214,661 @@
}
}
},
+ "cordova-browser": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/cordova-browser/-/cordova-browser-5.0.4.tgz",
+ "integrity": "sha512-EDuG+9NGsaYpNSY6wF0kR34m1m38V+nRglGXxQ609fgMYrMHEYR2lg38nDr1Os4qeF0LJz8UQ7nq7Y+idg6Aig==",
+ "requires": {
+ "abbrev": "*",
+ "accepts": "*",
+ "ansi": "*",
+ "ansi-regex": "2.1.1",
+ "ansi-styles": "2.2.1",
+ "array-flatten": "1.1.1",
+ "balanced-match": "*",
+ "base64-js": "1.2.0",
+ "big-integer": "*",
+ "body-parser": "1.18.2",
+ "bplist-parser": "*",
+ "brace-expansion": "*",
+ "bytes": "*",
+ "chalk": "1.1.3",
+ "compressible": "*",
+ "compression": "1.7.2",
+ "concat-map": "*",
+ "content-disposition": "*",
+ "content-type": "*",
+ "cookie": "*",
+ "cookie-signature": "1.0.6",
+ "cordova-common": "2.2.5",
+ "cordova-registry-mapper": "*",
+ "cordova-serve": "2.0.1",
+ "debug": "2.6.9",
+ "depd": "*",
+ "destroy": "*",
+ "ee-first": "*",
+ "elementtree": "0.1.6",
+ "encodeurl": "*",
+ "escape-html": "*",
+ "escape-string-regexp": "*",
+ "etag": "*",
+ "express": "*",
+ "finalhandler": "*",
+ "forwarded": "*",
+ "fresh": "*",
+ "glob": "5.0.15",
+ "has-ansi": "2.0.0",
+ "http-errors": "1.6.3",
+ "iconv-lite": "0.4.19",
+ "inflight": "*",
+ "inherits": "*",
+ "ipaddr.js": "1.6.0",
+ "is-wsl": "*",
+ "media-typer": "*",
+ "merge-descriptors": "*",
+ "methods": "*",
+ "mime": "1.4.1",
+ "mime-db": "1.33.0",
+ "mime-types": "2.1.18",
+ "minimatch": "*",
+ "ms": "2.0.0",
+ "negotiator": "*",
+ "nopt": "3.0.6",
+ "on-finished": "*",
+ "on-headers": "*",
+ "once": "*",
+ "opn": "*",
+ "parseurl": "*",
+ "path-is-absolute": "*",
+ "path-to-regexp": "0.1.7",
+ "plist": "2.1.0",
+ "proxy-addr": "2.0.3",
+ "q": "*",
+ "qs": "6.5.1",
+ "range-parser": "*",
+ "raw-body": "2.3.2",
+ "safe-buffer": "5.1.1",
+ "sax": "0.3.5",
+ "send": "*",
+ "serve-static": "*",
+ "setprototypeof": "*",
+ "shelljs": "0.5.3",
+ "statuses": "1.4.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0",
+ "type-is": "*",
+ "underscore": "*",
+ "unorm": "*",
+ "unpipe": "*",
+ "utils-merge": "*",
+ "vary": "*",
+ "wrappy": "*",
+ "xmlbuilder": "8.2.2",
+ "xmldom": "*"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true
+ },
+ "accepts": {
+ "version": "1.3.5",
+ "bundled": true,
+ "requires": {
+ "mime-types": "~2.1.18",
+ "negotiator": "0.6.1"
+ }
+ },
+ "ansi": {
+ "version": "0.3.1",
+ "bundled": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "bundled": true
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "bundled": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "base64-js": {
+ "version": "1.2.0",
+ "bundled": true
+ },
+ "big-integer": {
+ "version": "1.6.32",
+ "bundled": true
+ },
+ "body-parser": {
+ "version": "1.18.2",
+ "bundled": true,
+ "requires": {
+ "bytes": "3.0.0",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "~1.1.1",
+ "http-errors": "~1.6.2",
+ "iconv-lite": "0.4.19",
+ "on-finished": "~2.3.0",
+ "qs": "6.5.1",
+ "raw-body": "2.3.2",
+ "type-is": "~1.6.15"
+ }
+ },
+ "bplist-parser": {
+ "version": "0.1.1",
+ "bundled": true,
+ "requires": {
+ "big-integer": "^1.6.7"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "bundled": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "bundled": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "compressible": {
+ "version": "2.0.14",
+ "bundled": true,
+ "requires": {
+ "mime-db": ">= 1.34.0 < 2"
+ },
+ "dependencies": {
+ "mime-db": {
+ "version": "1.34.0",
+ "bundled": true
+ }
+ }
+ },
+ "compression": {
+ "version": "1.7.2",
+ "bundled": true,
+ "requires": {
+ "accepts": "~1.3.4",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.13",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.1",
+ "safe-buffer": "5.1.1",
+ "vary": "~1.1.2"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true
+ },
+ "content-disposition": {
+ "version": "0.5.2",
+ "bundled": true
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "bundled": true
+ },
+ "cookie": {
+ "version": "0.3.1",
+ "bundled": true
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "bundled": true
+ },
+ "cordova-common": {
+ "version": "2.2.5",
+ "bundled": true,
+ "requires": {
+ "ansi": "^0.3.1",
+ "bplist-parser": "^0.1.0",
+ "cordova-registry-mapper": "^1.1.8",
+ "elementtree": "0.1.6",
+ "glob": "^5.0.13",
+ "minimatch": "^3.0.0",
+ "plist": "^2.1.0",
+ "q": "^1.4.1",
+ "shelljs": "^0.5.3",
+ "underscore": "^1.8.3",
+ "unorm": "^1.3.3"
+ }
+ },
+ "cordova-registry-mapper": {
+ "version": "1.1.15",
+ "bundled": true
+ },
+ "cordova-serve": {
+ "version": "2.0.1",
+ "bundled": true,
+ "requires": {
+ "chalk": "^1.1.1",
+ "compression": "^1.6.0",
+ "express": "^4.13.3",
+ "opn": "^5.3.0",
+ "shelljs": "^0.5.3"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "bundled": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "depd": {
+ "version": "1.1.2",
+ "bundled": true
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "bundled": true
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "bundled": true
+ },
+ "elementtree": {
+ "version": "0.1.6",
+ "bundled": true,
+ "requires": {
+ "sax": "0.3.5"
+ }
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "bundled": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "bundled": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "bundled": true
+ },
+ "express": {
+ "version": "4.16.3",
+ "bundled": true,
+ "requires": {
+ "accepts": "~1.3.5",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.18.2",
+ "content-disposition": "0.5.2",
+ "content-type": "~1.0.4",
+ "cookie": "0.3.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.1.1",
+ "fresh": "0.5.2",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.2",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.3",
+ "qs": "6.5.1",
+ "range-parser": "~1.2.0",
+ "safe-buffer": "5.1.1",
+ "send": "0.16.2",
+ "serve-static": "1.13.2",
+ "setprototypeof": "1.1.0",
+ "statuses": "~1.4.0",
+ "type-is": "~1.6.16",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.1",
+ "bundled": true,
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.2",
+ "statuses": "~1.4.0",
+ "unpipe": "~1.0.0"
+ }
+ },
+ "forwarded": {
+ "version": "0.1.2",
+ "bundled": true
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "bundled": true
+ },
+ "glob": {
+ "version": "5.0.15",
+ "bundled": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "http-errors": {
+ "version": "1.6.3",
+ "bundled": true,
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.19",
+ "bundled": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true
+ },
+ "ipaddr.js": {
+ "version": "1.6.0",
+ "bundled": true
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "bundled": true
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "methods": {
+ "version": "1.1.2",
+ "bundled": true
+ },
+ "mime": {
+ "version": "1.4.1",
+ "bundled": true
+ },
+ "mime-db": {
+ "version": "1.33.0",
+ "bundled": true
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "bundled": true,
+ "requires": {
+ "mime-db": "~1.33.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "bundled": true
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "bundled": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "bundled": true,
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "opn": {
+ "version": "5.3.0",
+ "bundled": true,
+ "requires": {
+ "is-wsl": "^1.1.0"
+ }
+ },
+ "parseurl": {
+ "version": "1.3.2",
+ "bundled": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "bundled": true
+ },
+ "plist": {
+ "version": "2.1.0",
+ "bundled": true,
+ "requires": {
+ "base64-js": "1.2.0",
+ "xmlbuilder": "8.2.2",
+ "xmldom": "0.1.x"
+ }
+ },
+ "proxy-addr": {
+ "version": "2.0.3",
+ "bundled": true,
+ "requires": {
+ "forwarded": "~0.1.2",
+ "ipaddr.js": "1.6.0"
+ }
+ },
+ "q": {
+ "version": "1.5.1",
+ "bundled": true
+ },
+ "qs": {
+ "version": "6.5.1",
+ "bundled": true
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "bundled": true
+ },
+ "raw-body": {
+ "version": "2.3.2",
+ "bundled": true,
+ "requires": {
+ "bytes": "3.0.0",
+ "http-errors": "1.6.2",
+ "iconv-lite": "0.4.19",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "depd": {
+ "version": "1.1.1",
+ "bundled": true
+ },
+ "http-errors": {
+ "version": "1.6.2",
+ "bundled": true,
+ "requires": {
+ "depd": "1.1.1",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.0.3",
+ "statuses": ">= 1.3.1 < 2"
+ }
+ },
+ "setprototypeof": {
+ "version": "1.0.3",
+ "bundled": true
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "bundled": true
+ },
+ "sax": {
+ "version": "0.3.5",
+ "bundled": true
+ },
+ "send": {
+ "version": "0.16.2",
+ "bundled": true,
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "~1.6.2",
+ "mime": "1.4.1",
+ "ms": "2.0.0",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.0",
+ "statuses": "~1.4.0"
+ }
+ },
+ "serve-static": {
+ "version": "1.13.2",
+ "bundled": true,
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.2",
+ "send": "0.16.2"
+ }
+ },
+ "setprototypeof": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "shelljs": {
+ "version": "0.5.3",
+ "bundled": true
+ },
+ "statuses": {
+ "version": "1.4.0",
+ "bundled": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "bundled": true
+ },
+ "type-is": {
+ "version": "1.6.16",
+ "bundled": true,
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.18"
+ }
+ },
+ "underscore": {
+ "version": "1.9.1",
+ "bundled": true
+ },
+ "unorm": {
+ "version": "1.4.1",
+ "bundled": true
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "vary": {
+ "version": "1.1.2",
+ "bundled": true
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "xmlbuilder": {
+ "version": "8.2.2",
+ "bundled": true
+ },
+ "xmldom": {
+ "version": "0.1.27",
+ "bundled": true
+ }
+ }
+ },
"cordova-plugin-splashscreen": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/cordova-plugin-splashscreen/-/cordova-plugin-splashscreen-5.0.2.tgz",
@@ -223,6 +878,11 @@
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.3.tgz",
"integrity": "sha1-tehezbv+Wu3tQKG/TuI3LmfZb7Q="
+ },
+ "ubuntu": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ubuntu/-/ubuntu-2.0.0.tgz",
+ "integrity": "sha1-VIN9X6tdxyj7lguobYcnE0g5ePI="
}
}
}
diff --git a/package.json b/package.json
index f26c2b4..37e097a 100644
--- a/package.json
+++ b/package.json
@@ -10,9 +10,11 @@
"author": "Chris Cromer",
"license": "BSD3",
"dependencies": {
- "cordova-android": "^7.1.1",
+ "cordova-android": "^7.1.4",
+ "cordova-browser": "^5.0.4",
"cordova-plugin-splashscreen": "^5.0.2",
- "cordova-plugin-whitelist": "^1.3.3"
+ "cordova-plugin-whitelist": "^1.3.3",
+ "ubuntu": "^2.0.0"
},
"cordova": {
"plugins": {
@@ -20,7 +22,8 @@
"cordova-plugin-splashscreen": {}
},
"platforms": [
- "android"
+ "android",
+ "browser"
]
}
-}
\ No newline at end of file
+}
diff --git a/plugins/browser.json b/plugins/browser.json
new file mode 100644
index 0000000..aa84f7d
--- /dev/null
+++ b/plugins/browser.json
@@ -0,0 +1,18 @@
+{
+ "prepare_queue": {
+ "installed": [],
+ "uninstalled": []
+ },
+ "config_munge": {
+ "files": {}
+ },
+ "installed_plugins": {
+ "cordova-plugin-splashscreen": {
+ "PACKAGE_NAME": "cl.cromer.jvonmobile"
+ },
+ "cordova-plugin-whitelist": {
+ "PACKAGE_NAME": "cl.cromer.jvonmobile"
+ }
+ },
+ "dependent_plugins": {}
+}
\ No newline at end of file