diff options
| author | Arjun Roychowdhury <pliablepixels@gmail.com> | 2015-09-23 15:45:30 -0400 |
|---|---|---|
| committer | Arjun Roychowdhury <pliablepixels@gmail.com> | 2015-09-23 15:45:30 -0400 |
| commit | 1d1c2168ff30ac9452b0929db4ae1f5baa83657a (patch) | |
| tree | 1967e3ca3898bf2f33938e89bd1e6add6e49a570 /plugins/cordova-plugin-crosswalk-webview/hooks/before_plugin_uninstall | |
| parent | 26821696678cf84ee19f4eb803807e41a7b56780 (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.js | 60 |
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; + +}; |
