summaryrefslogtreecommitdiff
path: root/plugins/cordova-plugin-crosswalk-webview/hooks/before_plugin_uninstall
diff options
context:
space:
mode:
authorArjun Roychowdhury <pliablepixels@gmail.com>2015-09-23 15:45:30 -0400
committerArjun Roychowdhury <pliablepixels@gmail.com>2015-09-23 15:45:30 -0400
commit1d1c2168ff30ac9452b0929db4ae1f5baa83657a (patch)
tree1967e3ca3898bf2f33938e89bd1e6add6e49a570 /plugins/cordova-plugin-crosswalk-webview/hooks/before_plugin_uninstall
parent26821696678cf84ee19f4eb803807e41a7b56780 (diff)
updates
Diffstat (limited to 'plugins/cordova-plugin-crosswalk-webview/hooks/before_plugin_uninstall')
-rw-r--r--plugins/cordova-plugin-crosswalk-webview/hooks/before_plugin_uninstall/000-shared_mode_special.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/plugins/cordova-plugin-crosswalk-webview/hooks/before_plugin_uninstall/000-shared_mode_special.js b/plugins/cordova-plugin-crosswalk-webview/hooks/before_plugin_uninstall/000-shared_mode_special.js
new file mode 100644
index 00000000..2cc741d3
--- /dev/null
+++ b/plugins/cordova-plugin-crosswalk-webview/hooks/before_plugin_uninstall/000-shared_mode_special.js
@@ -0,0 +1,60 @@
+#!/usr/bin/env node
+
+module.exports = function(context) {
+
+ /** @external */
+ var fs = context.requireCordovaModule('fs'),
+ path = context.requireCordovaModule('path'),
+ deferral = context.requireCordovaModule('q').defer(),
+ ConfigParser = context.requireCordovaModule("cordova-lib/src/configparser/ConfigParser"),
+ XmlHelpers = context.requireCordovaModule("cordova-lib/src/util/xml-helpers"),
+ et = context.requireCordovaModule('elementtree');
+
+ /** @defaults */
+ var xwalkVariables = ['xwalkVersion', 'xwalkCommandLine', 'xwalkMode'];
+ androidPlatformDir = path.join(context.opts.projectRoot,
+ 'platforms', 'android'),
+ projectConfigurationFile = path.join(context.opts.projectRoot,
+ 'config.xml'),
+ projectManifestFile = path.join(androidPlatformDir,
+ 'AndroidManifest.xml');
+
+ /** Init */
+ var CordovaConfig = new ConfigParser(projectConfigurationFile);
+
+ var removePermission = function() {
+ var projectManifestXmlRoot = XmlHelpers.parseElementtreeSync(projectManifestFile);
+ var child = et.XML('<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />');
+ XmlHelpers.pruneXML(projectManifestXmlRoot, [child], '/manifest');
+ fs.writeFileSync(projectManifestFile, projectManifestXmlRoot.write({indent: 4}), 'utf-8');
+ }
+
+ var removeXWalkVariables = function() {
+ var configXmlRoot = XmlHelpers.parseElementtreeSync(projectConfigurationFile);
+ for (var index = 0; index < xwalkVariables.length; index++) {
+ var child = configXmlRoot.find('./preference[@name="' + xwalkVariables[index] + '"]');
+ if (child) {
+ XmlHelpers.pruneXML(configXmlRoot, [child], '/*');
+ }
+ }
+ fs.writeFileSync(projectConfigurationFile, configXmlRoot.write({indent: 4}), 'utf-8');
+ }
+
+ /** Main method */
+ var main = function() {
+ // Remove the xwalk variables
+ removeXWalkVariables();
+
+ if (CordovaConfig.getGlobalPreference('xwalkMode') == 'shared') {
+ // Add the permission of write_external_storage in shared mode
+ removePermission();
+ }
+
+ deferral.resolve();
+ };
+
+ main();
+
+ return deferral.promise;
+
+};