You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by je...@apache.org on 2013/09/27 16:26:26 UTC
[22/50] [abbrv] webworks commit: [CB-4563] Migrated blackberry.app
parameters to preferences
[CB-4563] Migrated blackberry.app parameters to preferences
Reviewed by Bryan Higgins <bh...@blackberry.com>
Project: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/commit/f60a0cd8
Tree: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/tree/f60a0cd8
Diff: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/diff/f60a0cd8
Branch: refs/heads/3.1.x
Commit: f60a0cd8d814a2f1143d1262b1a97952c0bdc9a8
Parents: 75b8585
Author: Kristoffer Flores <kf...@blackberry.com>
Authored: Wed Aug 7 13:25:32 2013 -0400
Committer: Bryan Higgins <bh...@blackberry.com>
Committed: Mon Aug 26 10:31:22 2013 -0400
----------------------------------------------------------------------
.../project/cordova/lib/config-parser.js | 136 +++++++++----------
blackberry10/bin/test/cordova/unit/config.xml | 10 +-
.../test/cordova/unit/spec/lib/config-parser.js | 83 ++++-------
3 files changed, 94 insertions(+), 135 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/f60a0cd8/blackberry10/bin/templates/project/cordova/lib/config-parser.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/config-parser.js b/blackberry10/bin/templates/project/cordova/lib/config-parser.js
index 65b78a1..7746fd0 100644
--- a/blackberry10/bin/templates/project/cordova/lib/config-parser.js
+++ b/blackberry10/bin/templates/project/cordova/lib/config-parser.js
@@ -26,8 +26,7 @@ var fs = require("fs"),
utils = require("./packager-utils"),
i18nMgr = require("./i18n-manager"),
_self,
- _predefinedFeatures,
- _hybridFeatures;
+ _predefinedFeatures;
//This function will convert a wc3 paramObj with a list of
//<param name="" value=""> elements into a single object
@@ -82,10 +81,6 @@ function processFeatures(featuresArray, widgetConfig, processPredefinedFeatures)
_predefinedFeatures[attribs.id](feature, widgetConfig);
}
} else {
- //Handle features that contain both a namespace and custom params
- if (_hybridFeatures[attribs.id]) {
- _hybridFeatures[attribs.id](feature, widgetConfig);
- }
features.push(attribs);
}
} else {
@@ -544,9 +539,66 @@ function processNameAndDescription(data, widgetConfig) {
function processCordovaPreferences(data, widgetConfig) {
if (data.preference) {
- var preference = processParamObj(data.preference);
- widgetConfig.packageCordovaJs = preference.packageCordovaJs === "enable";
- widgetConfig.autoHideSplashScreen = preference.AutoHideSplashScreen !== "false";
+ var preference = JSON.parse(JSON.stringify(processParamObj(data.preference)).toLowerCase());
+ widgetConfig.packageCordovaJs = preference.packagecordovajs === "enable";
+ widgetConfig.autoHideSplashScreen = preference.autohidesplashscreen !== "false";
+
+ // <preference name="backgroundColor" value="hex" />
+ if (preference.backgroundcolor) {
+ widgetConfig.backgroundColor = processBgColor(preference.backgroundcolor);
+ }
+
+ // <preference name="childBrowser" value="enable or disable" />
+ if (preference.childbrowser) {
+ widgetConfig.enableChildWebView = ((preference.childbrowser + '').toLowerCase() === 'disable') === false;
+ }
+
+ // <preference name="HideKeyboardFormAccessoryBar" value="enable or disable" />
+ if (preference.hidekeyboardformaccessorybar) {
+ widgetConfig.enableFormControl = ((preference.hidekeyboardformaccessorybar + '').toLowerCase() === 'enable') === false;
+ }
+
+ // <preference name="popupBlocker" value="enable or disable" />
+ if (preference.popupblocker) {
+ widgetConfig.enablePopupBlocker = ((preference.popupblocker + '').toLowerCase() === 'enable') === true;
+ }
+
+ // <preference name="orientation" value="portrait, landscape, north or auto" />
+ if (preference.orientation) {
+ if (preference.orientation === "landscape" || preference.orientation === "portrait" || preference.orientation === "north") {
+ widgetConfig.autoOrientation = false;
+ widgetConfig.orientation = preference.orientation;
+ } else if (preference.orientation !== "auto") {
+ throw localize.translate("EXCEPTION_INVALID_ORIENTATION_MODE", preference.orientation);
+ }
+ }
+
+ // <preference name="theme" value="bright, dark, inherit or default" />
+ if (preference.theme && (typeof preference.theme === "string")) {
+ preference.theme = preference.theme.toLowerCase();
+ if (preference.theme === "bright" || preference.theme === "dark" || preference.theme === "inherit" || preference.theme === "default") {
+ widgetConfig.theme = preference.theme;
+ }
+ }
+
+ // <preference name="webSecurity" value="enable or disable" />
+ if (preference.websecurity && (typeof preference.websecurity === "string") && (preference.websecurity.toLowerCase() === "disable")) {
+ widgetConfig.enableWebSecurity = false;
+ logger.warn(localize.translate("WARNING_WEBSECURITY_DISABLED"));
+ }
+
+ }
+}
+
+function processBgColor(bgColor) {
+ //convert bgColor to a number
+ bgColorNum = parseInt(bgColor, 16);
+
+ if (isNaN(bgColorNum)) {
+ //bgColor is not a number, throw error
+ throw localize.translate("EXCEPTION_BGCOLOR_INVALID", bgColor);
+ } else {
+ return bgColorNum;
}
}
@@ -604,70 +656,8 @@ function init() {
logger.warn(localize.translate("WARNING_ORIENTATION_DEPRECATED"));
}
}
- };
-
- //Hybrid features are features that have both an API namespace and custom parameters
- _hybridFeatures = {
- "blackberry.app": function (feature, widgetConfig) {
- if (feature) {
- var params = processParamObj(feature.param),
- bgColor = params.backgroundColor,
- childBrowser = params.childBrowser,
- formControl = params.formControl,
- orientation = params.orientation,
- theme = params.theme,
- popupBlocker = params.popupBlocker,
- websecurity = params.websecurity;
-
- if (bgColor) {
- //Convert bgColor to a number
- bgColor = parseInt(bgColor, 16);
-
- if (isNaN(bgColor)) {
- //bgcolor is not a number, throw error
- throw localize.translate("EXCEPTION_BGCOLOR_INVALID", params.backgroundColor);
- } else {
- widgetConfig.backgroundColor = bgColor;
- }
- }
-
- if (childBrowser) {
- widgetConfig.enableChildWebView = ((childBrowser + '').toLowerCase() === 'disable') === false;
- }
-
- if (formControl) {
- widgetConfig.enableFormControl = ((formControl + '').toLowerCase() === 'disable') === false;
- }
-
- if (popupBlocker) {
- widgetConfig.enablePopupBlocker = ((popupBlocker + '').toLowerCase() === 'enable') === true;
- }
-
- if (orientation) {
- if (orientation === "landscape" || orientation === "portrait" || orientation === "north") {
- widgetConfig.autoOrientation = false;
- widgetConfig.orientation = orientation;
- } else if (orientation !== "auto") {
- throw localize.translate("EXCEPTION_INVALID_ORIENTATION_MODE", orientation);
- }
- }
-
- if (theme && (typeof theme === "string")) {
- theme = theme.toLowerCase();
-
- if (theme === "bright" || theme === "dark" || theme === "inherit" || theme === "default") {
- widgetConfig.theme = theme;
- }
- }
-
- if (websecurity && (typeof websecurity === "string") && (websecurity.toLowerCase() === "disable")) {
- widgetConfig.enableWebSecurity = false;
- logger.warn(localize.translate("WARNING_WEBSECURITY_DISABLED"));
- }
- }
- }
- };
-}
+ }
+};
_self = {
parse: function (xmlPath, session, callback) {
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/f60a0cd8/blackberry10/bin/test/cordova/unit/config.xml
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/config.xml b/blackberry10/bin/test/cordova/unit/config.xml
index 9f42675..f0e76c5 100644
--- a/blackberry10/bin/test/cordova/unit/config.xml
+++ b/blackberry10/bin/test/cordova/unit/config.xml
@@ -22,11 +22,7 @@
<param name="mode" value="portrait" />
<param name="other" value="portrait" />
</feature>
- <feature id="blackberry.app" required="true" version="1.0.0.0">
- <param name="childBrowser" value="disable" />
- <param name="websecurity" value="disable" />
- <param name="popupBlocker" value="enable" />
- </feature>
+ <feature id="blackberry.app" required="true" version="1.0.0.0" />
<feature id="blackberry.system" required="true" version="1.0.0.3"/>
<access origin="http://www.somedomain1.com" subdomains="true">
<feature id="blackberry.app" required="true" version="1.0.0.0"/>
@@ -50,4 +46,8 @@
<property var="exts" value="doc" />
</filter>
</rim:invoke-target>
+
+ <preference name="backgroundColor" value="0xffffff" />
+ <preference name="childBrowser" value="disable" />
+ <preference name="HideKeyboardFormAccessoryBar" value="disable" />
</widget>
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/f60a0cd8/blackberry10/bin/test/cordova/unit/spec/lib/config-parser.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/config-parser.js b/blackberry10/bin/test/cordova/unit/spec/lib/config-parser.js
index b526b01..d857072 100644
--- a/blackberry10/bin/test/cordova/unit/spec/lib/config-parser.js
+++ b/blackberry10/bin/test/cordova/unit/spec/lib/config-parser.js
@@ -50,7 +50,6 @@ describe("config parser", function () {
expect(configObj.permissions).toContain('read_geolocation');
expect(configObj.permissions).toContain('use_camera');
expect(configObj.enableChildWebView).toBe(false);
- expect(configObj.enableChildWebView).toBe(false);
});
});
@@ -1106,8 +1105,7 @@ describe("config parser", function () {
it("sets orientation to landscape when specified", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- data['feature'] = { '@': { id: 'blackberry.app', required: true },
- param: { '@': { name: 'orientation', value: 'landscape' } } };
+ data['preference'] = { '@': { name: 'orientation', value: 'landscape' } };
mockParsing(data);
@@ -1119,8 +1117,7 @@ describe("config parser", function () {
it("sets orientation to portrait when specified", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- data['feature'] = { '@': { id: 'blackberry.app', required: true },
- param: { '@': { name: 'orientation', value: 'portrait' } } };
+ data['preference'] = { '@': { name: 'orientation', value: 'portrait' } };
mockParsing(data);
@@ -1132,7 +1129,7 @@ describe("config parser", function () {
it("sets auto orientation to true by default", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- delete data["feature"];//Remove any orientation data
+ delete data['preference'];//Remove any orientation data
mockParsing(data);
@@ -1154,21 +1151,18 @@ describe("config parser", function () {
it("throws an error when blackberry.app orientation exists with an invalid mode param", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- data['feature'] = { '@': { id: 'blackberry.app', required: true },
- param: { '@': { name: 'orientation', value: 'notAValidMode' } } };
+ data['preference'] = { '@': { name: 'orientation', value: 'notAValidMode' } };
mockParsing(data);
- //Should throw an EXCEPTION_INVALID_ORIENTATION_MODE error
expect(function () {
configParser.parse(configPath, session, function (configObj) {});
- }).toThrow(localize.translate("EXCEPTION_INVALID_ORIENTATION_MODE", "notAValidMode"));
+ }).toThrow(localize.translate("EXCEPTION_INVALID_ORIENTATION_MODE", "notavalidmode"));
});
- it("sets backgroundColor when specified via blackberry.app namespace", function () {
+ it("sets backgroundColor when specified as a preference", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- data['feature'] = { '@': { id: 'blackberry.app', required: true },
- param: { '@': { name: 'backgroundColor', value: '0xffffff' } } };
+ data['preference'] = { '@': {name: 'backgroundColor', value: '0xffffff' } };
mockParsing(data);
@@ -1177,21 +1171,21 @@ describe("config parser", function () {
});
});
- it("throws an error when blackberry.app backgroundColor param is not a number", function () {
+ it("throws an error backgroundColor preference is not a number", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- data['feature'] = { '@': { id: 'blackberry.app', required: true },
- param: { '@': { name: 'backgroundColor', value: '$UI*@@$' } } };
+ data['preference'] = { '@': { name: 'backgroundColor', value: '$UI*@@$' } };
mockParsing(data);
//Should throw an EXCEPTION_BGCOLOR_INVALID error
expect(function () {
configParser.parse(configPath, session, {});
- }).toThrow(localize.translate("EXCEPTION_BGCOLOR_INVALID", "$UI*@@$"));
+ }).toThrow(localize.translate("EXCEPTION_BGCOLOR_INVALID", "$ui*@@$"));
});
it("can properly parse the custom RIM-Wiget:rim/wiget element", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
+
mockParsing(data);
configParser.parse(configPath, session, function (configObj) {
@@ -1235,15 +1229,9 @@ describe("config parser", function () {
});
describe('disabling childBrowser (childWebView)', function () {
-
- // { '@': { id: 'blackberry.app', required: true, version: '1.0.0.0' },
- // param: { '@': { name: 'childBrowser', value: 'disable' } } }
-
-
it("sets enableChildWebView to true when childBrowser value is enable", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- data['feature'] = { '@': { id: 'blackberry.app' },
- param: { '@': { name: 'childBrowser', value: 'enable' } } };
+ data['preference'] = { '@': { name: 'childBrowser', value: 'enable' } };
mockParsing(data);
@@ -1254,8 +1242,7 @@ describe("config parser", function () {
it("sets enableChildWebView to false when value is disable", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- data['feature'] = { '@': { id: 'blackberry.app' },
- param: { '@': { name: 'childBrowser', value: 'disable' } } };
+ data['preference'] = { '@': { name: 'childBrowser', value: 'disable' } };
mockParsing(data);
@@ -1266,11 +1253,9 @@ describe("config parser", function () {
});
describe('disabling formcontrol', function () {
-
- it("sets enableFormControl to true when formControl value is enable", function () {
+ it("sets enableFormControl to true when HideKeyboardFormAccessoryBar value is disable", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- data['feature'] = { '@': { id: 'blackberry.app' },
- param: { '@': { name: 'formControl', value: 'enable' } } };
+ data['preference'] = { '@': { name: 'HideKeyboardFormAccessoryBar', value: 'disable' } };
mockParsing(data);
@@ -1279,10 +1264,9 @@ describe("config parser", function () {
});
});
- it("sets enableFormControl to false when value is disable", function () {
+ it("sets enableFormControl to false when value is enable", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- data['feature'] = { '@': { id: 'blackberry.app' },
- param: { '@': { name: 'formControl', value: 'disable' } } };
+ data['preference'] = { '@': { name: 'HideKeyboardFormAccessoryBar', value: 'enable' } };
mockParsing(data);
@@ -1297,8 +1281,7 @@ describe("config parser", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
if (themeInConfig) {
- data['feature'] = { '@': { id: 'blackberry.app' },
- param: { '@': { name: 'theme', value: themeInConfig } } };
+ data['preference'] = { '@': { name: 'theme', value: themeInConfig } };
mockParsing(data);
}
@@ -1356,15 +1339,9 @@ describe("config parser", function () {
});
describe('disabling WebSecurity', function () {
-
- // { '@': { id: 'blackberry.app', required: true, version: '1.0.0.0' },
- // param: { '@': { name: 'childBrowser', value: 'disable' } } }
-
-
it("doesn't set enableWebSecurity to anything when param value is anything but disable", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- data.feature = { '@': { id: 'blackberry.app' },
- param: { '@': { name: 'websecurity', value: (new Date()).toString() } } };
+ data['preference'] = { '@': { name: 'webSecurity', value: (new Date()).toString() } };
mockParsing(data);
@@ -1376,8 +1353,7 @@ describe("config parser", function () {
it("sets enableWebSecurity to false when value is disable", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- data.feature = { '@': { id: 'blackberry.app' },
- param: { '@': { name: 'websecurity', value: 'disable' } } };
+ data['preference'] = { '@': { name: 'webSecurity', value: 'disable' } };
mockParsing(data);
@@ -1389,8 +1365,7 @@ describe("config parser", function () {
it("sets enableWebSecurity to false when value is disable case insensitive", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- data.feature = { '@': { id: 'blackberry.app' },
- param: { '@': { name: 'websecurity', value: 'DisAble' } } };
+ data['preference'] = { '@': { name: 'webSecurity', value: 'DisAble' } };
mockParsing(data);
@@ -1402,14 +1377,9 @@ describe("config parser", function () {
});
describe('enabling popupBlocker', function () {
-
- // { '@': { id: 'blackberry.app', required: true, version: '1.0.0.0' },
- // param: { '@': { name: 'childBrowser', value: 'disable' } } }
-
- it("sets enableWebSecurity to false when value is disable", function () {
+ it("sets enablePopupBlocker to true when value is enable", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- data.feature = { '@': { id: 'blackberry.app' },
- param: { '@': { name: 'popupBlocker', value: 'enable' } } };
+ data['preference'] = { '@': { name: 'popupBlocker', value: 'enable' } };
mockParsing(data);
@@ -1418,15 +1388,14 @@ describe("config parser", function () {
});
});
- it("sets enableWebSecurity to false when value is disable case insensitive", function () {
+ it("sets enablePopBlocker to false when value is disable case insensitive", function () {
var data = testUtilities.cloneObj(testData.xml2jsConfig);
- data.feature = { '@': { id: 'blackberry.app' },
- param: { '@': { name: 'popupBlocker', value: 'EnAbLe' } } };
+ data['preference'] = { '@': { name: 'popupBlocker', value: 'Disable' } };
mockParsing(data);
configParser.parse(configPath, session, function (configObj) {
- expect(configObj.enablePopupBlocker).toBe(true);
+ expect(configObj.enablePopupBlocker).toBe(false);
});
});
});