You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by st...@apache.org on 2013/05/13 20:50:24 UTC
[03/13] ios commit: [CB-1108] Convert -> with
[CB-1108] Convert <plugin> -> <feature> with <param>
This unifies the config.xml used by iOS and Android. Now <feature> tags can be used
to add plugins. The changes are non-intrusive so the older versions of the config.xml
can still be used after this change. The value of a param named "ios-package"
determines the class for the plugin. Also changes the config.xml with the unified one
on the project template
Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/a07794d8
Tree: http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/a07794d8
Diff: http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/a07794d8
Branch: refs/heads/3.0.0
Commit: a07794d88c8e9cf72c24427908462a583241834b
Parents: bb7556d
Author: Gorkem Ercan <go...@gmail.com>
Authored: Thu Mar 28 13:54:49 2013 +0200
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Fri May 3 16:34:01 2013 -0400
----------------------------------------------------------------------
CordovaLib/Classes/CDVConfigParser.h | 5 +-
CordovaLib/Classes/CDVConfigParser.m | 19 ++++
CordovaLibTests/CordovaLibApp/config.xml | 114 +++++++++++++++------
bin/templates/project/__TESTING__/config.xml | 117 +++++++++++++--------
4 files changed, 179 insertions(+), 76 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/a07794d8/CordovaLib/Classes/CDVConfigParser.h
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVConfigParser.h b/CordovaLib/Classes/CDVConfigParser.h
index 7392580..2e06c88 100644
--- a/CordovaLib/Classes/CDVConfigParser.h
+++ b/CordovaLib/Classes/CDVConfigParser.h
@@ -17,7 +17,10 @@
under the License.
*/
-@interface CDVConfigParser : NSObject <NSXMLParserDelegate>{}
+@interface CDVConfigParser : NSObject <NSXMLParserDelegate>
+{
+ NSString* featureName;
+}
@property (nonatomic, readonly, strong) NSMutableDictionary* pluginsDict;
@property (nonatomic, readonly, strong) NSMutableDictionary* settings;
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/a07794d8/CordovaLib/Classes/CDVConfigParser.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVConfigParser.m b/CordovaLib/Classes/CDVConfigParser.m
index ffc8ede..2b8722a 100644
--- a/CordovaLib/Classes/CDVConfigParser.m
+++ b/CordovaLib/Classes/CDVConfigParser.m
@@ -41,6 +41,7 @@
self.settings = [[NSMutableDictionary alloc] initWithCapacity:30];
self.whitelistHosts = [[NSMutableArray alloc] initWithCapacity:30];
self.startupPluginNames = [[NSMutableArray alloc] initWithCapacity:8];
+ featureName = nil;
}
return self;
}
@@ -55,6 +56,17 @@
if ([@"true" isEqualToString : attributeDict[@"onload"]]) {
[self.startupPluginNames addObject:name];
}
+ } else if ([elementName isEqualToString:@"feature"]) { // store feature name to use with correct parameter set
+ featureName = [attributeDict[@"name"] lowercaseString];
+ } else if ((featureName != nil) && [elementName isEqualToString:@"param"]) {
+ NSString* paramName = [attributeDict[@"name"] lowercaseString];
+ id value = attributeDict[@"value"];
+ if ([paramName isEqualToString:@"ios-package"]) {
+ pluginsDict[featureName] = value;
+ }
+ if ([paramName isEqualToString:@"onload"] && [@"true" isEqualToString : value]) {
+ [self.startupPluginNames addObject:featureName];
+ }
} else if ([elementName isEqualToString:@"access"]) {
[whitelistHosts addObject:attributeDict[@"origin"]];
} else if ([elementName isEqualToString:@"content"]) {
@@ -62,6 +74,13 @@
}
}
+- (void)parser:(NSXMLParser*)parser didEndElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qualifiedName
+{
+ if ([elementName isEqualToString:@"feature"]) { // no longer handling a feature so release
+ featureName = nil;
+ }
+}
+
- (void)parser:(NSXMLParser*)parser parseErrorOccurred:(NSError*)parseError
{
NSAssert(NO, @"config.xml parse error line %d col %d", [parser lineNumber], [parser columnNumber]);
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/a07794d8/CordovaLibTests/CordovaLibApp/config.xml
----------------------------------------------------------------------
diff --git a/CordovaLibTests/CordovaLibApp/config.xml b/CordovaLibTests/CordovaLibApp/config.xml
index f8a2fad..cc1256a 100644
--- a/CordovaLibTests/CordovaLibApp/config.xml
+++ b/CordovaLibTests/CordovaLibApp/config.xml
@@ -1,40 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
-<widget>
- <preference name="KeyboardDisplayRequiresUserAction" value="true" />
- <preference name="SuppressesIncrementalRendering" value="false" />
+<widget xmlns = "http://www.w3.org/ns/widgets"
+ id = "io.cordova.helloCordova"
+ version = "2.0.0">
+ <name>Hello Cordova</name>
+
+ <description>
+ A sample Apache Cordova application that responds to the deviceready event.
+ </description>
+
+ <author href="http://cordova.io" email="dev@cordova.apache.org">
+ Apache Cordova Team
+ </author>
+
+ <access origin="*"/>
+
+ <!-- <content src="http://mysite.com/myapp.html" /> for external pages -->
+ <content src="index.html" />
+
+ <!-- Preferences for iOS -->
+ <preference name="AllowInlineMediaPlayback" value="false" />
+ <preference name="AutoHideSplashScreen" value="true" />
+ <preference name="BackupWebStorage" value="cloud" />
<preference name="DisallowOverscroll" value="false" />
- <preference name="TopActivityIndicator" value="gray" />
<preference name="EnableLocation" value="false" /><!-- DEPRECATED -->
<preference name="EnableViewportScale" value="false" />
- <preference name="AutoHideSplashScreen" value="true" />
- <preference name="ShowSplashScreenSpinner" value="true" />
<preference name="FadeSplashScreen" value="true" />
- <preference name="FadeSplashScreenDuration" value="2" />
- <preference name="MediaPlaybackRequiresUserAction" value="false" />
- <preference name="AllowInlineMediaPlayback" value="false" />
- <preference name="BackupWebStorage" value="cloud" />
+ <preference name="FadeSplashScreenDuration" value=".25" />
<preference name="HideKeyboardFormAccessoryBar" value="false" />
+ <preference name="KeyboardDisplayRequiresUserAction" value="true" />
<preference name="KeyboardShrinksView" value="false" />
+ <preference name="MediaPlaybackRequiresUserAction" value="false" />
+ <preference name="ShowSplashScreenSpinner" value="true" />
+ <preference name="SuppressesIncrementalRendering" value="false" />
+ <preference name="TopActivityIndicator" value="gray" />
+
- <plugins>
- <plugin name="LocalStorage" value="CDVLocalStorage" />
- <plugin name="Device" value="CDVDevice" />
- <plugin name="Logger" value="CDVLogger" />
- <plugin name="Compass" value="CDVLocation" />
- <plugin name="Accelerometer" value="CDVAccelerometer" />
- <plugin name="Camera" value="CDVCamera" />
- <plugin name="NetworkStatus" value="CDVConnection" />
- <plugin name="Contacts" value="CDVContacts" />
- <plugin name="File" value="CDVFile" />
- <plugin name="FileTransfer" value="CDVFileTransfer" />
- <plugin name="Geolocation" value="CDVLocation" />
- <plugin name="Notification" value="CDVNotification" />
- <plugin name="Media" value="CDVSound" />
- <plugin name="Capture" value="CDVCapture" />
- <plugin name="SplashScreen" value="CDVSplashScreen" />
- <plugin name="Echo" value="CDVEcho" />
- <plugin name="Battery" value="CDVBattery" />
- <plugin name="Globalization" value="CDVGlobalization" />
- <plugin name="InAppBrowser" value="CDVInAppBrowser" />
- </plugins>
+ <feature name="Geolocation">
+ <param name="ios-package" value="CDVLocation"/>
+ </feature>
+ <feature name="Device">
+ <param name="ios-package" value="CDVDevice"/>
+ </feature>
+ <feature name="Accelerometer">
+ <param name="ios-package" value="CDVAccelerometer"/>
+ </feature>
+ <feature name="Compass">
+ <param name="ios-package" value="CDVLocation"/>
+ </feature>
+ <feature name="Media">
+ <param name="ios-package" value="CDVSound"/>
+ </feature>
+ <feature name="Camera">
+ <param name="ios-package" value="CDVCamera"/>
+ </feature>
+ <feature name="Contacts">
+ <param name="ios-package" value="CDVContacts"/>
+ </feature>
+ <feature name="File">
+ <param name="ios-package" value="CDVFile"/>
+ </feature>
+ <feature name="NetworkStatus">
+ <param name="ios-package" value="CDVConnection"/>
+ </feature>
+ <feature name="Notification">
+ <param name="ios-package" value="CDVNotification"/>
+ </feature>
+ <feature name="FileTransfer">
+ <param name="ios-package" value="CDVFileTransfer"/>
+ </feature>
+ <feature name="Capture">
+ <param name="ios-package" value="CDVCapture"/>
+ </feature>
+ <feature name="Battery">
+ <param name="ios-package" value="CDVBattery"/>
+ </feature>
+ <feature name="SplashScreen">
+ <param name="ios-package" value="CDVSplashScreen"/>
+ </feature>
+ <feature name="Echo">
+ <param name="ios-package" value="CDVEcho"/>
+ </feature>
+ <feature name="Globalization">
+ <param name="ios-package" value="CDVGlobalization"/>
+ </feature>
+ <feature name="InAppBrowser">
+ <param name="ios-package" value="CDVInAppBrowser"/>
+ </feature>
+ <feature name="Logger">
+ <param name="ios-package" value="CDVLogger"/>
+ </feature>
</widget>
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/a07794d8/bin/templates/project/__TESTING__/config.xml
----------------------------------------------------------------------
diff --git a/bin/templates/project/__TESTING__/config.xml b/bin/templates/project/__TESTING__/config.xml
index 537705d..cc1256a 100644
--- a/bin/templates/project/__TESTING__/config.xml
+++ b/bin/templates/project/__TESTING__/config.xml
@@ -1,25 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!--
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
--->
-<widget>
+<widget xmlns = "http://www.w3.org/ns/widgets"
+ id = "io.cordova.helloCordova"
+ version = "2.0.0">
+ <name>Hello Cordova</name>
+
+ <description>
+ A sample Apache Cordova application that responds to the deviceready event.
+ </description>
+
+ <author href="http://cordova.io" email="dev@cordova.apache.org">
+ Apache Cordova Team
+ </author>
+
+ <access origin="*"/>
+
+ <!-- <content src="http://mysite.com/myapp.html" /> for external pages -->
+ <content src="index.html" />
+
+ <!-- Preferences for iOS -->
<preference name="AllowInlineMediaPlayback" value="false" />
<preference name="AutoHideSplashScreen" value="true" />
<preference name="BackupWebStorage" value="cloud" />
@@ -36,28 +34,59 @@
<preference name="SuppressesIncrementalRendering" value="false" />
<preference name="TopActivityIndicator" value="gray" />
- <content src="index.html" />
-
- <plugins>
- <plugin name="Device" value="CDVDevice" />
- <plugin name="Logger" value="CDVLogger" />
- <plugin name="Compass" value="CDVLocation" />
- <plugin name="Accelerometer" value="CDVAccelerometer" />
- <plugin name="Camera" value="CDVCamera" />
- <plugin name="NetworkStatus" value="CDVConnection" />
- <plugin name="Contacts" value="CDVContacts" />
- <plugin name="Echo" value="CDVEcho" />
- <plugin name="File" value="CDVFile" />
- <plugin name="FileTransfer" value="CDVFileTransfer" />
- <plugin name="Geolocation" value="CDVLocation" />
- <plugin name="Notification" value="CDVNotification" />
- <plugin name="Media" value="CDVSound" />
- <plugin name="Capture" value="CDVCapture" />
- <plugin name="SplashScreen" value="CDVSplashScreen" />
- <plugin name="Battery" value="CDVBattery" />
- <plugin name="Globalization" value="CDVGlobalization" />
- <plugin name="InAppBrowser" value="CDVInAppBrowser" />
- </plugins>
- <access origin="*" />
+ <feature name="Geolocation">
+ <param name="ios-package" value="CDVLocation"/>
+ </feature>
+ <feature name="Device">
+ <param name="ios-package" value="CDVDevice"/>
+ </feature>
+ <feature name="Accelerometer">
+ <param name="ios-package" value="CDVAccelerometer"/>
+ </feature>
+ <feature name="Compass">
+ <param name="ios-package" value="CDVLocation"/>
+ </feature>
+ <feature name="Media">
+ <param name="ios-package" value="CDVSound"/>
+ </feature>
+ <feature name="Camera">
+ <param name="ios-package" value="CDVCamera"/>
+ </feature>
+ <feature name="Contacts">
+ <param name="ios-package" value="CDVContacts"/>
+ </feature>
+ <feature name="File">
+ <param name="ios-package" value="CDVFile"/>
+ </feature>
+ <feature name="NetworkStatus">
+ <param name="ios-package" value="CDVConnection"/>
+ </feature>
+ <feature name="Notification">
+ <param name="ios-package" value="CDVNotification"/>
+ </feature>
+ <feature name="FileTransfer">
+ <param name="ios-package" value="CDVFileTransfer"/>
+ </feature>
+ <feature name="Capture">
+ <param name="ios-package" value="CDVCapture"/>
+ </feature>
+ <feature name="Battery">
+ <param name="ios-package" value="CDVBattery"/>
+ </feature>
+ <feature name="SplashScreen">
+ <param name="ios-package" value="CDVSplashScreen"/>
+ </feature>
+ <feature name="Echo">
+ <param name="ios-package" value="CDVEcho"/>
+ </feature>
+ <feature name="Globalization">
+ <param name="ios-package" value="CDVGlobalization"/>
+ </feature>
+ <feature name="InAppBrowser">
+ <param name="ios-package" value="CDVInAppBrowser"/>
+ </feature>
+ <feature name="Logger">
+ <param name="ios-package" value="CDVLogger"/>
+ </feature>
</widget>