Repository: cordova-medic Updated Branches: refs/heads/master 3d21d7177 -> 4cbdf655b
CB-11084 CameraUsesGeolocation=true for iOS Project: http://git-wip-us.apache.org/repos/asf/cordova-medic/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-medic/commit/4cbdf655 Tree: http://git-wip-us.apache.org/repos/asf/cordova-medic/tree/4cbdf655 Diff: http://git-wip-us.apache.org/repos/asf/cordova-medic/diff/4cbdf655 Branch: refs/heads/master Commit: 4cbdf655b17d96af110d89ae306f280db1d4de62 Parents: 3d21d71 Author: Alexander Sorokin <[email protected]> Authored: Thu Apr 14 17:33:43 2016 +0300 Committer: Alexander Sorokin <[email protected]> Committed: Tue Apr 19 17:58:45 2016 +0300 ---------------------------------------------------------------------- medic/medic-appium.js | 60 ++++++++++++++++++++++++++++++++++++---------- package.json | 1 + 2 files changed, 49 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-medic/blob/4cbdf655/medic/medic-appium.js ---------------------------------------------------------------------- diff --git a/medic/medic-appium.js b/medic/medic-appium.js index d1539c9..8810150 100644 --- a/medic/medic-appium.js +++ b/medic/medic-appium.js @@ -45,10 +45,11 @@ var screenshotHelper = require("../lib/appium/helpers/screenshotHelper"); var optimist = require("optimist"); var kill = require("tree-kill"); var child_process = require("child_process"); -var et = require("expect-telnet"); +var expectTelnet = require("expect-telnet"); var shell = require("shelljs"); var Jasmine = require("jasmine"); var unorm = require("unorm"); +var elementTree = require("elementtree"); var DEFAULT_APP_PATH = "mobilespec"; var DEFAULT_IOS_DEVICE_NAME = "iPhone 5"; @@ -195,7 +196,7 @@ function parseArgs() { global.WD = wd; global.WD_HELPER = wdHelper; global.SCREENSHOT_HELPER = screenshotHelper; - global.ET = et; + global.ET = expectTelnet; global.SHELL = shell; global.DEVICE = options.device; global.PLATFORM = options.platform; @@ -222,6 +223,39 @@ function getLocalCLI(appPath) { return "./cordova"; } +function getConfigPath(appPath) { + return path.join(appPath, "config.xml"); +} + +function parseElementtreeSync(filename) { + var contents = fs.readFileSync(filename, util.DEFAULT_ENCODING); + if (!contents) { + util.fatal("The config file is empty: " + filename); + } + // Skip the Byte Order Mark (BOM) + contents = contents.substring(contents.indexOf("<")); + + return new elementTree.ElementTree(elementTree.XML(contents)); +} + +function setPreference(appPath, preference, value) { + var configFile = getConfigPath(appPath); + var xml = parseElementtreeSync(configFile); + var pref = xml.find("preference[@name=\"" + preference + "\"]"); + + util.medicLog("Setting \"" + preference + "\" preference to \"" + value + "\""); + + if (!pref) { + pref = new elementTree.Element("preference"); + pref.attrib.name = preference; + xml.getroot().append(pref); + } + pref.attrib.value = value; + + // write the changes + fs.writeFileSync(configFile, xml.write({indent: 4}), util.DEFAULT_ENCODING); +} + // remove medic.json and rebuild the app function prepareApp(options, callback) { var fullAppPath = getFullAppPath(options.appPath); @@ -233,17 +267,19 @@ function prepareApp(options, callback) { fs.stat(fullAppPath, function (error, stats) { if (error || !stats.isDirectory()) { util.fatal("The app directory doesn't exist: " + fullAppPath); - } else { - util.medicLog("Building the app..."); - child_process.exec(buildCommand, { cwd: fullAppPath, maxBuffer: SMALL_BUFFER_SIZE }, function (error) { - if (error) { - util.fatal("Couldn't build the app: " + error); - } else { - global.PACKAGE_PATH = getPackagePath(options); - callback(); - } - }); } + if (options.platform === "ios") { + setPreference(fullAppPath, "CameraUsesGeolocation", "true"); + } + util.medicLog("Building the app..."); + child_process.exec(buildCommand, { cwd: fullAppPath, maxBuffer: SMALL_BUFFER_SIZE }, function (error) { + if (error) { + util.fatal("Couldn't build the app: " + error); + } else { + global.PACKAGE_PATH = getPackagePath(options); + callback(); + } + }); }); } http://git-wip-us.apache.org/repos/asf/cordova-medic/blob/4cbdf655/package.json ---------------------------------------------------------------------- diff --git a/package.json b/package.json index d36ab57..ff03c55 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "dependencies": { "appium": "^1.5.0", "commander": "^2.8.1", + "elementtree": "^0.1.6", "expect-telnet": "^0.5.2", "follow": "^0.11.4", "jasmine": "^2.4.1", --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
