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]

Reply via email to