You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by sh...@apache.org on 2012/03/27 22:44:50 UTC

ios commit: CordovaLib: for easier testing, added CordovaLibApp scheme+target for application tests, as well as unit tests.

Updated Branches:
  refs/heads/master 76880703d -> b73819ff1


CordovaLib: for easier testing, added CordovaLibApp scheme+target for application tests, as well as unit tests.


Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/commit/b73819ff
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/tree/b73819ff
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/diff/b73819ff

Branch: refs/heads/master
Commit: b73819ff1b76f84e27a86c533afaff90608d9e0d
Parents: 7688070
Author: Shazron Abdullah <sh...@apache.org>
Authored: Tue Mar 27 13:43:20 2012 -0700
Committer: Shazron Abdullah <sh...@apache.org>
Committed: Tue Mar 27 13:43:20 2012 -0700

----------------------------------------------------------------------
 .gitignore                                         |    2 +
 CordovaLib/CordovaLib.xcodeproj/project.pbxproj    |  254 ++++++++++++++-
 CordovaLib/CordovaLibApp/AppDelegate.h             |   30 ++
 CordovaLib/CordovaLibApp/AppDelegate.m             |   84 +++++
 CordovaLib/CordovaLibApp/Cordova.plist             |   59 ++++
 CordovaLib/CordovaLibApp/CordovaLibApp-Info.plist  |   45 +++
 CordovaLib/CordovaLibApp/CordovaLibApp-Prefix.pch  |   14 +
 CordovaLib/CordovaLibApp/ViewController.h          |   25 ++
 CordovaLib/CordovaLibApp/ViewController.m          |   45 +++
 .../CordovaLibApp/en.lproj/InfoPlist.strings       |    2 +
 CordovaLib/CordovaLibApp/main.m                    |   18 +
 CordovaLib/CordovaLibApp/www/index.html            |   62 ++++
 CordovaLib/CordovaLibTests/CDVContactsTests.h      |    6 +-
 CordovaLib/CordovaLibTests/CDVContactsTests.m      |    9 +-
 CordovaLib/CordovaLibTests/CDVMockUIWebview.h      |   43 ---
 CordovaLib/CordovaLibTests/CDVMockUIWebview.m      |   74 -----
 CordovaLib/CordovaLibTests/CDVWebViewTest.h        |   28 ++
 CordovaLib/CordovaLibTests/CDVWebViewTest.m        |   57 ++++
 18 files changed, 715 insertions(+), 142 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index fb62efe..4f26f36 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,5 @@ example
 CordovaLib/javascript/cordova-*.js
 wkhtmltopdf.dmg
 wkhtmltopdf/
+
+CordovaLib/CordovaLibApp/www/cordova.ios.js
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
index c0fcd39..e52971c 100644
--- a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
+++ b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
@@ -77,6 +77,13 @@
 		30383DE01385F65600E37E22 /* CDVConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 307A8F9D1385A2EC00E43782 /* CDVConnection.m */; };
 		30392E4E14F4FCAB00B9E0B8 /* CDVAvailability.h in Headers */ = {isa = PBXBuildFile; fileRef = 30392E4D14F4FCAB00B9E0B8 /* CDVAvailability.h */; };
 		30392E5014F502C200B9E0B8 /* CDVAvailability.h in Headers */ = {isa = PBXBuildFile; fileRef = 30392E4D14F4FCAB00B9E0B8 /* CDVAvailability.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		303A406A152124BB00182201 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357AA141002F100DF4CF2 /* UIKit.framework */; };
+		303A406B152124BB00182201 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357AC141002F100DF4CF2 /* Foundation.framework */; };
+		303A406C152124BB00182201 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357AE141002F100DF4CF2 /* CoreGraphics.framework */; };
+		303A4072152124BB00182201 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 303A4070152124BB00182201 /* InfoPlist.strings */; };
+		303A4074152124BB00182201 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 303A4073152124BB00182201 /* main.m */; };
+		303A4078152124BB00182201 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 303A4077152124BB00182201 /* AppDelegate.m */; };
+		303A407B152124BB00182201 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 303A407A152124BB00182201 /* ViewController.m */; };
 		3062D120151D0EDB000D9128 /* UIDevice+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3062D11E151D0EDB000D9128 /* UIDevice+Extensions.h */; };
 		3062D121151D0EDB000D9128 /* UIDevice+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3062D11E151D0EDB000D9128 /* UIDevice+Extensions.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		3062D122151D0EDB000D9128 /* UIDevice+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3062D11F151D0EDB000D9128 /* UIDevice+Extensions.m */; };
@@ -95,7 +102,7 @@
 		30A9DFE913A7EB9F009AA950 /* CDVPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 30E33AF013A7E24B00594D64 /* CDVPlugin.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		30A9DFEB13A7EBC1009AA950 /* CDVPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 30E33AF113A7E24B00594D64 /* CDVPlugin.m */; };
 		30AE4E8D1419532F005A9C9A /* CDVContactsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 30AE4E8C1419532F005A9C9A /* CDVContactsTests.m */; };
-		30AE4E97141953C7005A9C9A /* CDVMockUIWebview.m in Sources */ = {isa = PBXBuildFile; fileRef = 30AE4E96141953C7005A9C9A /* CDVMockUIWebview.m */; };
+		30B342F515224B360070E6A5 /* CDVWebViewTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B342F415224B360070E6A5 /* CDVWebViewTest.m */; };
 		30B39EBE13D0268B0009682A /* CDVSplashScreen.h in Headers */ = {isa = PBXBuildFile; fileRef = 30B39EBC13D0268B0009682A /* CDVSplashScreen.h */; };
 		30B39EBF13D0268B0009682A /* CDVSplashScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B39EBD13D0268B0009682A /* CDVSplashScreen.m */; };
 		30B39EC013D0268B0009682A /* CDVSplashScreen.h in Headers */ = {isa = PBXBuildFile; fileRef = 30B39EBC13D0268B0009682A /* CDVSplashScreen.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -116,9 +123,19 @@
 		30E563D213E217EC00C949AA /* NSMutableArray+QueueAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 30E563CE13E217EC00C949AA /* NSMutableArray+QueueAdditions.m */; };
 		30F5EBAB14CA26E700987760 /* CDVCommandDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 30F5EBA914CA26E700987760 /* CDVCommandDelegate.h */; };
 		30F5EBAC14CA26E700987760 /* CDVCommandDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 30F5EBA914CA26E700987760 /* CDVCommandDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		30F8AE0415212558006625B3 /* libCordova.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 68A32D7114102E1C006B237C /* libCordova.a */; };
+		30F8AE0515212587006625B3 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 68A32D7414103017006B237C /* AddressBook.framework */; };
+		30F8AE0615212587006625B3 /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357CC14100AAD00DF4CF2 /* AddressBookUI.framework */; };
+		30F8AE0715212587006625B3 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357CE14100ADA00DF4CF2 /* AudioToolbox.framework */; };
+		30F8AE0815212587006625B3 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357CF14100ADB00DF4CF2 /* AVFoundation.framework */; };
+		30F8AE0915212587006625B3 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357D014100ADE00DF4CF2 /* CoreLocation.framework */; };
+		30F8AE0A15212587006625B3 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357DC14100B1600DF4CF2 /* CoreMedia.framework */; };
+		30F8AE0B15212587006625B3 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357D414100AF200DF4CF2 /* SystemConfiguration.framework */; };
+		30F8AE0C152125B6006625B3 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357D214100AE700DF4CF2 /* MobileCoreServices.framework */; };
+		30F8AE13152127CE006625B3 /* Cordova.plist in Resources */ = {isa = PBXBuildFile; fileRef = 30F8AE12152127CE006625B3 /* Cordova.plist */; };
+		30F8AE1D152129DA006625B3 /* www in Resources */ = {isa = PBXBuildFile; fileRef = 30F8AE1C152129DA006625B3 /* www */; };
 		686357B5141002F200DF4CF2 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 686357B3141002F200DF4CF2 /* InfoPlist.strings */; };
 		686357BA141002F200DF4CF2 /* CDVPluginResultJSONSerializationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 686357B9141002F200DF4CF2 /* CDVPluginResultJSONSerializationTests.m */; };
-		68A32D7214102E67006B237C /* libCordova.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 68A32D7114102E1C006B237C /* libCordova.a */; };
 		68A32D7514103017006B237C /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 68A32D7414103017006B237C /* AddressBook.framework */; };
 		68A32D7614103078006B237C /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357DC14100B1600DF4CF2 /* CoreMedia.framework */; };
 		68A32D7714103082006B237C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357CE14100ADA00DF4CF2 /* AudioToolbox.framework */; };
@@ -167,13 +184,20 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
-		68A32D6814102DB4006B237C /* PBXContainerItemProxy */ = {
+		30F8AE0115212553006625B3 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
 			proxyType = 1;
 			remoteGlobalIDString = D2AAC07D0554694100DB518D;
 			remoteInfo = CordovaLib;
 		};
+		30F8AE3215212F07006625B3 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 303A4067152124BB00182201;
+			remoteInfo = CordovaLibApp;
+		};
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
@@ -194,6 +218,15 @@
 		30356212141049E1006C2D43 /* CDVWhitelistTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVWhitelistTests.h; sourceTree = "<group>"; };
 		30356213141049E1006C2D43 /* CDVWhitelistTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVWhitelistTests.m; sourceTree = "<group>"; };
 		30392E4D14F4FCAB00B9E0B8 /* CDVAvailability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVAvailability.h; path = Classes/CDVAvailability.h; sourceTree = "<group>"; };
+		303A4068152124BB00182201 /* CordovaLibApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CordovaLibApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		303A406F152124BB00182201 /* CordovaLibApp-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "CordovaLibApp-Info.plist"; sourceTree = "<group>"; };
+		303A4071152124BB00182201 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		303A4073152124BB00182201 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		303A4075152124BB00182201 /* CordovaLibApp-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CordovaLibApp-Prefix.pch"; sourceTree = "<group>"; };
+		303A4076152124BB00182201 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+		303A4077152124BB00182201 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
+		303A4079152124BB00182201 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
+		303A407A152124BB00182201 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
 		3062D11E151D0EDB000D9128 /* UIDevice+Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIDevice+Extensions.h"; path = "Classes/UIDevice+Extensions.h"; sourceTree = "<group>"; };
 		3062D11F151D0EDB000D9128 /* UIDevice+Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIDevice+Extensions.m"; path = "Classes/UIDevice+Extensions.m"; sourceTree = "<group>"; };
 		3062D1AC151D4D9D000D9128 /* CDVLocalStorageTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVLocalStorageTests.h; sourceTree = "<group>"; };
@@ -206,8 +239,8 @@
 		30A90B9014588697006178D3 /* JSONKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSONKit.m; sourceTree = "<group>"; };
 		30AE4E8B1419532F005A9C9A /* CDVContactsTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVContactsTests.h; sourceTree = "<group>"; };
 		30AE4E8C1419532F005A9C9A /* CDVContactsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVContactsTests.m; sourceTree = "<group>"; };
-		30AE4E95141953C7005A9C9A /* CDVMockUIWebview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVMockUIWebview.h; sourceTree = "<group>"; };
-		30AE4E96141953C7005A9C9A /* CDVMockUIWebview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVMockUIWebview.m; sourceTree = "<group>"; };
+		30B342F315224B360070E6A5 /* CDVWebViewTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVWebViewTest.h; sourceTree = "<group>"; };
+		30B342F415224B360070E6A5 /* CDVWebViewTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVWebViewTest.m; sourceTree = "<group>"; };
 		30B39EBC13D0268B0009682A /* CDVSplashScreen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVSplashScreen.h; path = Classes/CDVSplashScreen.h; sourceTree = "<group>"; };
 		30B39EBD13D0268B0009682A /* CDVSplashScreen.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVSplashScreen.m; path = Classes/CDVSplashScreen.m; sourceTree = "<group>"; };
 		30C6847E1406CB38004C1A8E /* CDVWhitelist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVWhitelist.h; path = Classes/CDVWhitelist.h; sourceTree = "<group>"; };
@@ -219,6 +252,8 @@
 		30E563CD13E217EC00C949AA /* NSMutableArray+QueueAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+QueueAdditions.h"; path = "Classes/NSMutableArray+QueueAdditions.h"; sourceTree = "<group>"; };
 		30E563CE13E217EC00C949AA /* NSMutableArray+QueueAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+QueueAdditions.m"; path = "Classes/NSMutableArray+QueueAdditions.m"; sourceTree = "<group>"; };
 		30F5EBA914CA26E700987760 /* CDVCommandDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVCommandDelegate.h; path = Classes/CDVCommandDelegate.h; sourceTree = "<group>"; };
+		30F8AE12152127CE006625B3 /* Cordova.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Cordova.plist; path = "../../Cordova-based Application/Cordova.plist"; sourceTree = "<group>"; };
+		30F8AE1C152129DA006625B3 /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; path = www; sourceTree = "<group>"; };
 		686357A9141002F100DF4CF2 /* CordovaLibTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CordovaLibTests.octest; sourceTree = BUILT_PRODUCTS_DIR; };
 		686357AA141002F100DF4CF2 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
 		686357AC141002F100DF4CF2 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
@@ -278,12 +313,30 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		303A4065152124BB00182201 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				30F8AE0C152125B6006625B3 /* MobileCoreServices.framework in Frameworks */,
+				30F8AE0515212587006625B3 /* AddressBook.framework in Frameworks */,
+				30F8AE0615212587006625B3 /* AddressBookUI.framework in Frameworks */,
+				30F8AE0715212587006625B3 /* AudioToolbox.framework in Frameworks */,
+				30F8AE0815212587006625B3 /* AVFoundation.framework in Frameworks */,
+				30F8AE0915212587006625B3 /* CoreLocation.framework in Frameworks */,
+				30F8AE0A15212587006625B3 /* CoreMedia.framework in Frameworks */,
+				303A406B152124BB00182201 /* Foundation.framework in Frameworks */,
+				30F8AE0B15212587006625B3 /* SystemConfiguration.framework in Frameworks */,
+				303A406A152124BB00182201 /* UIKit.framework in Frameworks */,
+				30F8AE0415212558006625B3 /* libCordova.a in Frameworks */,
+				303A406C152124BB00182201 /* CoreGraphics.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		686357A5141002F100DF4CF2 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 				68A32D7514103017006B237C /* AddressBook.framework in Frameworks */,
-				68A32D7214102E67006B237C /* libCordova.a in Frameworks */,
 				68A32D7614103078006B237C /* CoreMedia.framework in Frameworks */,
 				68A32D7714103082006B237C /* AudioToolbox.framework in Frameworks */,
 				68A32D781410308B006B237C /* AVFoundation.framework in Frameworks */,
@@ -313,6 +366,7 @@
 				303258D8136B2C9400982B63 /* Cordova.framework */,
 				686357A9141002F100DF4CF2 /* CordovaLibTests.octest */,
 				68A32D7114102E1C006B237C /* libCordova.a */,
+				303A4068152124BB00182201 /* CordovaLibApp.app */,
 			);
 			name = Products;
 			sourceTree = CORDOVALIB;
@@ -323,6 +377,7 @@
 				8887FD101090FB43009987E8 /* Classes */,
 				32C88DFF0371C24200C91783 /* Other Sources */,
 				686357B0141002F100DF4CF2 /* CordovaLibTests */,
+				303A406D152124BB00182201 /* CordovaLibApp */,
 				0867D69AFE84028FC02AAC07 /* Frameworks */,
 				034768DFFF38A50411DB9C8B /* Products */,
 				30325A0B136B343700982B63 /* VERSION */,
@@ -348,6 +403,31 @@
 			name = Frameworks;
 			sourceTree = "<group>";
 		};
+		303A406D152124BB00182201 /* CordovaLibApp */ = {
+			isa = PBXGroup;
+			children = (
+				30F8AE1C152129DA006625B3 /* www */,
+				303A4076152124BB00182201 /* AppDelegate.h */,
+				303A4077152124BB00182201 /* AppDelegate.m */,
+				303A4079152124BB00182201 /* ViewController.h */,
+				303A407A152124BB00182201 /* ViewController.m */,
+				303A406E152124BB00182201 /* Supporting Files */,
+			);
+			path = CordovaLibApp;
+			sourceTree = "<group>";
+		};
+		303A406E152124BB00182201 /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				30F8AE12152127CE006625B3 /* Cordova.plist */,
+				303A406F152124BB00182201 /* CordovaLibApp-Info.plist */,
+				303A4070152124BB00182201 /* InfoPlist.strings */,
+				303A4073152124BB00182201 /* main.m */,
+				303A4075152124BB00182201 /* CordovaLibApp-Prefix.pch */,
+			);
+			name = "Supporting Files";
+			sourceTree = "<group>";
+		};
 		3054098714B77FF3009841CA /* Cleaver */ = {
 			isa = PBXGroup;
 			children = (
@@ -371,6 +451,8 @@
 		686357B0141002F100DF4CF2 /* CordovaLibTests */ = {
 			isa = PBXGroup;
 			children = (
+				30B342F315224B360070E6A5 /* CDVWebViewTest.h */,
+				30B342F415224B360070E6A5 /* CDVWebViewTest.m */,
 				3062D1AC151D4D9D000D9128 /* CDVLocalStorageTests.h */,
 				3062D1AD151D4D9D000D9128 /* CDVLocalStorageTests.m */,
 				686357B7141002F200DF4CF2 /* CDVPluginResultJSONSerializationTests.h */,
@@ -379,8 +461,6 @@
 				30356213141049E1006C2D43 /* CDVWhitelistTests.m */,
 				30AE4E8B1419532F005A9C9A /* CDVContactsTests.h */,
 				30AE4E8C1419532F005A9C9A /* CDVContactsTests.m */,
-				30AE4E95141953C7005A9C9A /* CDVMockUIWebview.h */,
-				30AE4E96141953C7005A9C9A /* CDVMockUIWebview.m */,
 				686357B1141002F200DF4CF2 /* Supporting Files */,
 			);
 			path = CordovaLibTests;
@@ -591,6 +671,25 @@
 			productReference = 303258D8136B2C9400982B63 /* Cordova.framework */;
 			productType = "com.apple.product-type.bundle";
 		};
+		303A4067152124BB00182201 /* CordovaLibApp */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 303A4082152124BB00182201 /* Build configuration list for PBXNativeTarget "CordovaLibApp" */;
+			buildPhases = (
+				303A4064152124BB00182201 /* Sources */,
+				303A4065152124BB00182201 /* Frameworks */,
+				303A4066152124BB00182201 /* Resources */,
+				30F8AE1615212883006625B3 /* ShellScript */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				30F8AE0215212553006625B3 /* PBXTargetDependency */,
+			);
+			name = CordovaLibApp;
+			productName = CordovaLibApp;
+			productReference = 303A4068152124BB00182201 /* CordovaLibApp.app */;
+			productType = "com.apple.product-type.application";
+		};
 		686357A8141002F100DF4CF2 /* CordovaLibTests */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 686357BD141002F200DF4CF2 /* Build configuration list for PBXNativeTarget "CordovaLibTests" */;
@@ -603,7 +702,7 @@
 			buildRules = (
 			);
 			dependencies = (
-				68A32D6914102DB4006B237C /* PBXTargetDependency */,
+				30F8AE3315212F07006625B3 /* PBXTargetDependency */,
 			);
 			name = CordovaLibTests;
 			productName = CordovaLibTests;
@@ -634,7 +733,7 @@
 		0867D690FE84028FC02AAC07 /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 0420;
+				LastUpgradeCheck = 0430;
 			};
 			buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "CordovaLib" */;
 			compatibilityVersion = "Xcode 3.2";
@@ -656,6 +755,7 @@
 				303258D7136B2C9400982B63 /* Cordova */,
 				303258E7136B2D4F00982B63 /* UniversalFramework */,
 				686357A8141002F100DF4CF2 /* CordovaLibTests */,
+				303A4067152124BB00182201 /* CordovaLibApp */,
 			);
 		};
 /* End PBXProject section */
@@ -669,6 +769,16 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		303A4066152124BB00182201 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				303A4072152124BB00182201 /* InfoPlist.strings in Resources */,
+				30F8AE13152127CE006625B3 /* Cordova.plist in Resources */,
+				30F8AE1D152129DA006625B3 /* www in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		686357A6141002F100DF4CF2 /* Resources */ = {
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -723,6 +833,21 @@
 			shellPath = /bin/sh;
 			shellScript = "# compile and copy CordovaLib\nmake\nmkdir -p \"${CONFIGURATION_BUILD_DIR}/${TARGET_NAME}.framework/www\"\ncp ${PROJECT_DIR}/javascript/cordova-*.js \"${CONFIGURATION_BUILD_DIR}/${TARGET_NAME}.framework/www\"\n";
 		};
+		30F8AE1615212883006625B3 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+				"",
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "cp ${PROJECT_DIR}/javascript/cordova.ios.js ${PROJECT_DIR}/CordovaLibApp/www";
+			showEnvVarsInLog = 0;
+		};
 		686357A7141002F100DF4CF2 /* ShellScript */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
@@ -775,6 +900,16 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		303A4064152124BB00182201 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				303A4074152124BB00182201 /* main.m in Sources */,
+				303A4078152124BB00182201 /* AppDelegate.m in Sources */,
+				303A407B152124BB00182201 /* ViewController.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		686357A4141002F100DF4CF2 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -782,8 +917,8 @@
 				3035621714104C34006C2D43 /* CDVWhitelistTests.m in Sources */,
 				686357BA141002F200DF4CF2 /* CDVPluginResultJSONSerializationTests.m in Sources */,
 				30AE4E8D1419532F005A9C9A /* CDVContactsTests.m in Sources */,
-				30AE4E97141953C7005A9C9A /* CDVMockUIWebview.m in Sources */,
 				3062D1AE151D4D9D000D9128 /* CDVLocalStorageTests.m in Sources */,
+				30B342F515224B360070E6A5 /* CDVWebViewTest.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -826,14 +961,27 @@
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
-		68A32D6914102DB4006B237C /* PBXTargetDependency */ = {
+		30F8AE0215212553006625B3 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			target = D2AAC07D0554694100DB518D /* CordovaLib */;
-			targetProxy = 68A32D6814102DB4006B237C /* PBXContainerItemProxy */;
+			targetProxy = 30F8AE0115212553006625B3 /* PBXContainerItemProxy */;
+		};
+		30F8AE3315212F07006625B3 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 303A4067152124BB00182201 /* CordovaLibApp */;
+			targetProxy = 30F8AE3215212F07006625B3 /* PBXContainerItemProxy */;
 		};
 /* End PBXTargetDependency section */
 
 /* Begin PBXVariantGroup section */
+		303A4070152124BB00182201 /* InfoPlist.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				303A4071152124BB00182201 /* en */,
+			);
+			name = InfoPlist.strings;
+			sourceTree = "<group>";
+		};
 		686357B3141002F200DF4CF2 /* InfoPlist.strings */ = {
 			isa = PBXVariantGroup;
 			children = (
@@ -861,6 +1009,7 @@
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = CordovaLib_Prefix.pch;
 				GCC_PREPROCESSOR_DEFINITIONS = "";
+				GCC_THUMB_SUPPORT = NO;
 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				INSTALL_PATH = /usr/local/lib;
 				IPHONEOS_DEPLOYMENT_TARGET = 3.0;
@@ -882,6 +1031,7 @@
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = CordovaLib_Prefix.pch;
 				GCC_PREPROCESSOR_DEFINITIONS = "";
+				GCC_THUMB_SUPPORT = NO;
 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				INSTALL_PATH = /usr/local/lib;
 				IPHONEOS_DEPLOYMENT_TARGET = 3.0;
@@ -900,6 +1050,7 @@
 				GCC_C_LANGUAGE_STANDARD = c99;
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_PREPROCESSOR_DEFINITIONS = "";
+				GCC_THUMB_SUPPORT = NO;
 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
@@ -927,6 +1078,7 @@
 				);
 				GCC_C_LANGUAGE_STANDARD = c99;
 				GCC_PREPROCESSOR_DEFINITIONS = "";
+				GCC_THUMB_SUPPORT = NO;
 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
@@ -962,6 +1114,7 @@
 				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
 				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_THUMB_SUPPORT = NO;
 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				INFOPLIST_FILE = "";
 				IPHONEOS_DEPLOYMENT_TARGET = 3.0;
@@ -994,6 +1147,7 @@
 				);
 				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				GCC_THUMB_SUPPORT = NO;
 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				INFOPLIST_FILE = "";
 				IPHONEOS_DEPLOYMENT_TARGET = 3.0;
@@ -1025,6 +1179,7 @@
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
 				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_THUMB_SUPPORT = NO;
 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
@@ -1045,6 +1200,7 @@
 				);
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				GCC_THUMB_SUPPORT = NO;
 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				IPHONEOS_DEPLOYMENT_TARGET = 3.0;
 				OTHER_LDFLAGS = "";
@@ -1053,14 +1209,66 @@
 			};
 			name = Release;
 		};
-		686357BB141002F200DF4CF2 /* Debug */ = {
+		303A4083152124BB00182201 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = (
+					armv6,
+					armv7,
+				);
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "CordovaLibApp/CordovaLibApp-Prefix.pch";
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				INFOPLIST_FILE = "CordovaLibApp/CordovaLibApp-Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 5.1;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				WRAPPER_EXTENSION = app;
+			};
+			name = Debug;
+		};
+		303A4084152124BB00182201 /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
 				ARCHS = (
+					armv6,
 					armv7,
+				);
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "CordovaLibApp/CordovaLibApp-Prefix.pch";
+				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				INFOPLIST_FILE = "CordovaLibApp/CordovaLibApp-Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 5.1;
+				OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				VALIDATE_PRODUCT = YES;
+				WRAPPER_EXTENSION = app;
+			};
+			name = Release;
+		};
+		686357BB141002F200DF4CF2 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = (
 					armv6,
+					armv7,
 				);
+				BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/CordovaLibApp.app/CordovaLibApp";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(SDKROOT)/Developer/Library/Frameworks",
 					"$(DEVELOPER_LIBRARY_DIR)/Frameworks",
@@ -1070,6 +1278,7 @@
 				GCC_PREFIX_HEADER = "CordovaLibTests/CordovaLibTests-Prefix.pch";
 				GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
 				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_THUMB_SUPPORT = NO;
 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				INFOPLIST_FILE = "CordovaLibTests/CordovaLibTests-Info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 3.0;
@@ -1080,6 +1289,8 @@
 					SenTestingKit,
 				);
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				TEST_AFTER_BUILD = NO;
+				TEST_HOST = "$(BUNDLE_LOADER)";
 				WRAPPER_EXTENSION = octest;
 			};
 			name = Debug;
@@ -1089,9 +1300,10 @@
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
 				ARCHS = (
-					armv7,
 					armv6,
+					armv7,
 				);
+				BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/CordovaLibApp.app/CordovaLibApp";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(SDKROOT)/Developer/Library/Frameworks",
 					"$(DEVELOPER_LIBRARY_DIR)/Frameworks",
@@ -1099,6 +1311,7 @@
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = "CordovaLibTests/CordovaLibTests-Prefix.pch";
+				GCC_THUMB_SUPPORT = NO;
 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				INFOPLIST_FILE = "CordovaLibTests/CordovaLibTests-Info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 3.0;
@@ -1109,6 +1322,8 @@
 					SenTestingKit,
 				);
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				TEST_AFTER_BUILD = NO;
+				TEST_HOST = "$(BUNDLE_LOADER)";
 				WRAPPER_EXTENSION = octest;
 			};
 			name = Release;
@@ -1152,6 +1367,15 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
+		303A4082152124BB00182201 /* Build configuration list for PBXNativeTarget "CordovaLibApp" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				303A4083152124BB00182201 /* Debug */,
+				303A4084152124BB00182201 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 		686357BD141002F200DF4CF2 /* Build configuration list for PBXNativeTarget "CordovaLibTests" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibApp/AppDelegate.h
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibApp/AppDelegate.h b/CordovaLib/CordovaLibApp/AppDelegate.h
new file mode 100644
index 0000000..b832c3d
--- /dev/null
+++ b/CordovaLib/CordovaLibApp/AppDelegate.h
@@ -0,0 +1,30 @@
+/*
+ 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.
+ */
+
+#import <UIKit/UIKit.h>
+
+@class ViewController;
+
+@interface AppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+
+@property (strong, nonatomic) ViewController *viewController;
+
+@end

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibApp/AppDelegate.m
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibApp/AppDelegate.m b/CordovaLib/CordovaLibApp/AppDelegate.m
new file mode 100644
index 0000000..e66a21f
--- /dev/null
+++ b/CordovaLib/CordovaLibApp/AppDelegate.m
@@ -0,0 +1,84 @@
+/*
+ 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.
+ */
+
+#import "AppDelegate.h"
+
+#import "ViewController.h"
+
+@implementation AppDelegate
+
+@synthesize window = _window;
+@synthesize viewController = _viewController;
+
+- (void)dealloc
+{
+    [_window release];
+    [_viewController release];
+    [super dealloc];
+}
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+    
+    CGRect screenBounds = [[UIScreen mainScreen] bounds];
+    self.window = [[[UIWindow alloc] initWithFrame:screenBounds] autorelease];
+    self.window.autoresizesSubviews = YES;
+    
+    CGRect viewBounds = [[UIScreen mainScreen] applicationFrame];
+    
+    self.viewController = [[[ViewController alloc] init] autorelease];
+    self.viewController.useSplashScreen = YES;
+    self.viewController.wwwFolderName = @"www";
+    self.viewController.startPage = @"index.html";
+    self.viewController.view.frame = viewBounds;
+
+    self.window.rootViewController = self.viewController;
+    [self.window makeKeyAndVisible];
+
+    return YES;
+}
+
+- (void)applicationWillResignActive:(UIApplication *)application
+{
+    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+}
+
+- (void)applicationDidEnterBackground:(UIApplication *)application
+{
+    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
+    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+}
+
+- (void)applicationWillEnterForeground:(UIApplication *)application
+{
+    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+}
+
+- (void)applicationDidBecomeActive:(UIApplication *)application
+{
+    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+}
+
+- (void)applicationWillTerminate:(UIApplication *)application
+{
+    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+}
+
+@end

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibApp/Cordova.plist
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibApp/Cordova.plist b/CordovaLib/CordovaLibApp/Cordova.plist
new file mode 100644
index 0000000..bb3245a
--- /dev/null
+++ b/CordovaLib/CordovaLibApp/Cordova.plist
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>UIWebViewBounce</key>
+	<true/>
+	<key>TopActivityIndicator</key>
+	<string>gray</string>
+	<key>EnableLocation</key>
+	<false/>
+	<key>EnableViewportScale</key>
+	<false/>
+	<key>AutoHideSplashScreen</key>
+	<true/>
+	<key>ShowSplashScreenSpinner</key>
+	<true/>
+	<key>MediaPlaybackRequiresUserAction</key>
+	<false/>
+	<key>AllowInlineMediaPlayback</key>
+	<false/>
+	<key>OpenAllWhitelistURLsInWebView</key>
+	<false/>
+	<key>ExternalHosts</key>
+	<array>
+		<string>*.audio.ibeat.org</string>
+	</array>
+	<key>Plugins</key>
+	<dict>
+		<key>Compass</key>
+		<string>CDVLocation</string>
+		<key>Accelerometer</key>
+		<string>CDVAccelerometer</string>
+		<key>Camera</key>
+		<string>CDVCamera</string>
+		<key>Network Status</key>
+		<string>CDVConnection</string>
+		<key>Contacts</key>
+		<string>CDVContacts</string>
+		<key>Debug Console</key>
+		<string>CDVDebugConsole</string>
+		<key>File</key>
+		<string>CDVFile</string>
+		<key>FileTransfer</key>
+		<string>CDVFileTransfer</string>
+		<key>Geolocation</key>
+		<string>CDVLocation</string>
+		<key>Notification</key>
+		<string>CDVNotification</string>
+		<key>Media</key>
+		<string>CDVSound</string>
+		<key>Capture</key>
+		<string>CDVCapture</string>
+		<key>Splash Screen</key>
+		<string>CDVSplashScreen</string>
+		<key>Battery</key>
+		<string>CDVBattery</string>
+	</dict>
+</dict>
+</plist>

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibApp/CordovaLibApp-Info.plist
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibApp/CordovaLibApp-Info.plist b/CordovaLib/CordovaLibApp/CordovaLibApp-Info.plist
new file mode 100644
index 0000000..6c21097
--- /dev/null
+++ b/CordovaLib/CordovaLibApp/CordovaLibApp-Info.plist
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDisplayName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>org.apache.cordova.cordovalibapptests.${PRODUCT_NAME:rfc1034identifier}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>LSRequiresIPhoneOS</key>
+	<true/>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>armv7</string>
+	</array>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+	<key>UISupportedInterfaceOrientations~ipad</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationPortraitUpsideDown</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+</dict>
+</plist>

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibApp/CordovaLibApp-Prefix.pch
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibApp/CordovaLibApp-Prefix.pch b/CordovaLib/CordovaLibApp/CordovaLibApp-Prefix.pch
new file mode 100644
index 0000000..6dc8528
--- /dev/null
+++ b/CordovaLib/CordovaLibApp/CordovaLibApp-Prefix.pch
@@ -0,0 +1,14 @@
+//
+// Prefix header for all source files of the 'CordovaLibAppTests' target in the 'CordovaLibAppTests' project
+//
+
+#import <Availability.h>
+
+#ifndef __IPHONE_4_0
+#warning "This project uses features only available in iOS SDK 4.0 and later."
+#endif
+
+#ifdef __OBJC__
+    #import <UIKit/UIKit.h>
+    #import <Foundation/Foundation.h>
+#endif

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibApp/ViewController.h
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibApp/ViewController.h b/CordovaLib/CordovaLibApp/ViewController.h
new file mode 100644
index 0000000..b03fef7
--- /dev/null
+++ b/CordovaLib/CordovaLibApp/ViewController.h
@@ -0,0 +1,25 @@
+/*
+ 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.
+ */
+
+#import <UIKit/UIKit.h>
+#import "CDVViewController.h"
+
+@interface ViewController : CDVViewController
+
+@end

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibApp/ViewController.m
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibApp/ViewController.m b/CordovaLib/CordovaLibApp/ViewController.m
new file mode 100644
index 0000000..6259862
--- /dev/null
+++ b/CordovaLib/CordovaLibApp/ViewController.m
@@ -0,0 +1,45 @@
+/*
+ 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.
+ */
+
+#import "ViewController.h"
+
+@interface ViewController ()
+
+@end
+
+@implementation ViewController
+
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+	// Do any additional setup after loading the view, typically from a nib.
+}
+
+- (void)viewDidUnload
+{
+    [super viewDidUnload];
+    // Release any retained subviews of the main view.
+}
+
+- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
+{
+    return [super shouldAutorotateToInterfaceOrientation:interfaceOrientation];
+}
+
+@end

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibApp/en.lproj/InfoPlist.strings
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibApp/en.lproj/InfoPlist.strings b/CordovaLib/CordovaLibApp/en.lproj/InfoPlist.strings
new file mode 100644
index 0000000..477b28f
--- /dev/null
+++ b/CordovaLib/CordovaLibApp/en.lproj/InfoPlist.strings
@@ -0,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibApp/main.m
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibApp/main.m b/CordovaLib/CordovaLibApp/main.m
new file mode 100644
index 0000000..2cbacc1
--- /dev/null
+++ b/CordovaLib/CordovaLibApp/main.m
@@ -0,0 +1,18 @@
+//
+//  main.m
+//  CordovaLibAppTests
+//
+//  Created by Shazron Abdullah on 12-03-26.
+//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+#import "AppDelegate.h"
+
+int main(int argc, char *argv[])
+{
+    @autoreleasepool {
+        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibApp/www/index.html
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibApp/www/index.html b/CordovaLib/CordovaLibApp/www/index.html
new file mode 100644
index 0000000..c56a02b
--- /dev/null
+++ b/CordovaLib/CordovaLibApp/www/index.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+  <head>
+  <title></title>
+  
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
+	<meta charset="utf-8">
+
+
+	<!-- iPad/iPhone specific css below, add after your main css >
+	<link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />		
+	<link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />		
+	-->
+	<!-- If your application is targeting iOS BEFORE 4.0 you MUST put json2.js from http://www.JSON.org/json2.js into your www directory and include it here -->
+	<script type="text/javascript" charset="utf-8" src="cordova.ios.js"></script>
+    <script type="text/javascript">
+
+
+	// If you want to prevent dragging, uncomment this section
+	/*
+	function preventBehavior(e) 
+	{ 
+      e.preventDefault(); 
+    };
+	document.addEventListener("touchmove", preventBehavior, false);
+	*/
+	
+	/* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
+	see http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
+	for more details -jm */
+	/*
+	function handleOpenURL(url)
+	{
+		// TODO: do something with the url passed in.
+	}
+	*/
+	
+	function onBodyLoad()
+	{		
+		document.addEventListener("deviceready", onDeviceReady, false);
+	}
+	
+	/* When this function is called, Cordova has been initialized and is ready to roll */
+	/* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
+	see http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
+	for more details -jm */
+	function onDeviceReady()
+	{
+		// do your thing!
+		navigator.notification.alert("Cordova is working")
+	}
+    
+    </script>
+  </head>
+  <body onload="onBodyLoad()">
+	<h1>Hey, it's Cordova!</h1>
+	<ol>
+		<li>Check your console log for any white-list rejection errors.</li>
+		<li>Add your allowed <strong>hosts</strong> in Cordova.plist/ExternalHosts (wildcards OK, don't enter the URL scheme)</li>
+	</ol>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibTests/CDVContactsTests.h
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibTests/CDVContactsTests.h b/CordovaLib/CordovaLibTests/CDVContactsTests.h
index 73f1d5c..ddd1cb6 100644
--- a/CordovaLib/CordovaLibTests/CDVContactsTests.h
+++ b/CordovaLib/CordovaLibTests/CDVContactsTests.h
@@ -18,14 +18,14 @@
  */
 
 #import <SenTestingKit/SenTestingKit.h>
+#import "CDVWebViewTest.h"
 
-@class CDVMockUIWebview, CDVContacts;
+@class CDVContacts;
 
-@interface CDVContactsTests : SenTestCase {
+@interface CDVContactsTests : CDVWebViewTest {
 	
 }
 
-@property (nonatomic, retain) CDVMockUIWebview* webView;
 @property (nonatomic, retain) CDVContacts* contacts;
 
 @end

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibTests/CDVContactsTests.m
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibTests/CDVContactsTests.m b/CordovaLib/CordovaLibTests/CDVContactsTests.m
index 9dfabbe..efa8493 100644
--- a/CordovaLib/CordovaLibTests/CDVContactsTests.m
+++ b/CordovaLib/CordovaLibTests/CDVContactsTests.m
@@ -18,7 +18,6 @@
  */
 
 #import "CDVContactsTests.h"
-#import "CDVMockUIWebview.h"
 #import "CDVContacts.h"
 
 @implementation CDVContactsTests
@@ -28,11 +27,8 @@
 - (void)setUp
 {
     [super setUp];
-    
-    // setup code here
-    //CGRect webViewBounds = CGRectMake(0, 0, 320.0, 480.0);
-	self.webView = [[[CDVMockUIWebview alloc] init] autorelease];
-	self.contacts = (CDVContacts*)[[CDVContacts alloc] initWithWebView:(UIWebView*)self.webView];
+
+    self.contacts = (CDVContacts*)[[CDVContacts alloc] initWithWebView:self.webView];
 }
 
 - (void)tearDown
@@ -40,7 +36,6 @@
     // Tear-down code here.
 	
     [super tearDown];
-	self.webView = nil;
 	self.contacts = nil;
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibTests/CDVMockUIWebview.h
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibTests/CDVMockUIWebview.h b/CordovaLib/CordovaLibTests/CDVMockUIWebview.h
deleted file mode 100644
index b27be2f..0000000
--- a/CordovaLib/CordovaLibTests/CDVMockUIWebview.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- 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.
- */
-
-#import <Foundation/Foundation.h>
-
-
-@interface CDVMockUIWebview : NSObject {
-		
-}
-
-@property (nonatomic, retain) NSMutableArray* javascriptQueue; // array of JsOperation objects
-@property (nonatomic, retain) UIWebView* webView;
-
-@end
-
-
-@interface CDVJsOperation : NSObject
-{
-}
-
-- (id) initWithScript:(NSString*)script andResult:(NSString*)result;
-
-@property (nonatomic, copy) NSString* script;
-@property (nonatomic, copy) NSString* scriptResult;
-
-@end
-

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibTests/CDVMockUIWebview.m
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibTests/CDVMockUIWebview.m b/CordovaLib/CordovaLibTests/CDVMockUIWebview.m
deleted file mode 100644
index 6105cd2..0000000
--- a/CordovaLib/CordovaLibTests/CDVMockUIWebview.m
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- 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.
- */
-
-#import "CDVMockUIWebview.h"
-
-
-@implementation CDVMockUIWebview
-
-@synthesize javascriptQueue, webView;
-
-- (id) init
-{
-	if (self = [super init]) {
-		self.javascriptQueue = [NSMutableArray arrayWithCapacity:5];
-#ifdef APPLICATION_TESTS
-        self.webView = [[UIWebView alloc] init];
-#else 
-        self.webView = nil;
-        NSLog(@"No UIWebView javascript interpreter can be used in this mode.");
-#endif
-	}
-	
-	return self;
-}
-
-
-- (NSString*) stringByEvaluatingJavaScriptFromString:(NSString*)script
-{
-	// a correct "result" is predicated on the unit-test adding some meaningful 
-    // HTML+JS into the UIWebView first! in APPLICATION_TESTS mode
-	NSString* result = self.webView? [self.webView stringByEvaluatingJavaScriptFromString:script] : @"";
-    
-	CDVJsOperation* op = [[[CDVJsOperation alloc] initWithScript:script andResult:result] autorelease];
-	
-	[self.javascriptQueue addObject:op];
-	
-	return result;
-}
-
-@end
-
-
-@implementation CDVJsOperation
-
-@synthesize script, scriptResult;
-
-
-- (id) initWithScript:(NSString*)aScript andResult:(NSString*)aResult
-{
-	if (self = [super init]) {
-		self.script = aScript;
-		self.scriptResult = aResult;
-	}
-	
-	return self;
-}
-
-@end
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibTests/CDVWebViewTest.h
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibTests/CDVWebViewTest.h b/CordovaLib/CordovaLibTests/CDVWebViewTest.h
new file mode 100644
index 0000000..d5652c2
--- /dev/null
+++ b/CordovaLib/CordovaLibTests/CDVWebViewTest.h
@@ -0,0 +1,28 @@
+/*
+ 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.
+ */
+
+#import <SenTestingKit/SenTestingKit.h>
+
+@interface CDVWebViewTest : SenTestCase {
+	
+}
+
+@property (nonatomic, retain) UIWebView* webView;
+
+@end

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b73819ff/CordovaLib/CordovaLibTests/CDVWebViewTest.m
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLibTests/CDVWebViewTest.m b/CordovaLib/CordovaLibTests/CDVWebViewTest.m
new file mode 100644
index 0000000..194985b
--- /dev/null
+++ b/CordovaLib/CordovaLibTests/CDVWebViewTest.m
@@ -0,0 +1,57 @@
+/*
+ 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.
+ */
+
+#import "CDVWebViewTest.h"
+#import "CDVViewController.h"
+
+@implementation CDVWebViewTest
+
+@synthesize webView;
+
+- (void)setUp
+{
+    [super setUp];
+    
+    // setup code here
+    id<UIApplicationDelegate> delegate = [[UIApplication sharedApplication] delegate];
+    if ([delegate respondsToSelector:@selector(viewController)]) {
+        id vc = [delegate performSelector:@selector(viewController)];
+        if ([vc respondsToSelector:@selector(webView)]) {
+            id wv = [vc webView];
+            if ([wv isKindOfClass:[UIWebView class]]) {
+                self.webView = wv;
+            }
+        }
+    }
+}
+
+- (void)tearDown
+{
+    // Tear-down code here.
+	
+    [super tearDown];
+	self.webView = nil;
+}
+
+- (void) testWebViewAvailable
+{
+	STAssertTrue(self.webView != nil, @"The test application's webView is not accessible. The webView is required by the test.");
+}
+
+@end