http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/CordovaLibTests/CordovaTests.xcodeproj/project.pbxproj ---------------------------------------------------------------------- diff --git a/CordovaLibTests/CordovaTests.xcodeproj/project.pbxproj b/CordovaLibTests/CordovaTests.xcodeproj/project.pbxproj deleted file mode 100644 index e1bab9e..0000000 --- a/CordovaLibTests/CordovaTests.xcodeproj/project.pbxproj +++ /dev/null @@ -1,715 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 3019D58D1918C00C00D72DCC /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3019D58B1918BFF800D72DCC /* XCTest.framework */; }; - 302193F91745430F00BC8D2B /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 302193F81745430F00BC8D2B /* ImageIO.framework */; }; - 3035621714104C34006C2D43 /* CDVWhitelistTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 30356213141049E1006C2D43 /* CDVWhitelistTests.m */; }; - 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 */; }; - 30610C9219AD9B95000B3781 /* CDVCommandDelegateTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 30610C9119AD9B95000B3781 /* CDVCommandDelegateTests.m */; }; - 3062D1AE151D4D9D000D9128 /* CDVLocalStorageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3062D1AD151D4D9D000D9128 /* CDVLocalStorageTests.m */; }; - 30B342F515224B360070E6A5 /* CDVWebViewTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B342F415224B360070E6A5 /* CDVWebViewTest.m */; }; - 30D1B08C15A2B36D0060C291 /* CDVBase64Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 30D1B08B15A2B36D0060C291 /* CDVBase64Tests.m */; }; - 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 */; }; - 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 */; }; - 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 */; }; - 68A32D781410308B006B237C /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357CF14100ADB00DF4CF2 /* AVFoundation.framework */; }; - 68A32D7914103097006B237C /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357D014100ADE00DF4CF2 /* CoreLocation.framework */; }; - 68A32D7A141030AB006B237C /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357D214100AE700DF4CF2 /* MobileCoreServices.framework */; }; - 68A32D7B141030C8006B237C /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357D414100AF200DF4CF2 /* SystemConfiguration.framework */; }; - 68A32D7C141030D0006B237C /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357CC14100AAD00DF4CF2 /* AddressBookUI.framework */; }; - 68A32D7D141030E4006B237C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357AE141002F100DF4CF2 /* CoreGraphics.framework */; }; - 68A32D7E141030EB006B237C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357AA141002F100DF4CF2 /* UIKit.framework */; }; - 68A32D7F141030F3006B237C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357AC141002F100DF4CF2 /* Foundation.framework */; }; - 7E91406017711D88002C6A3F /* CDVWebViewDelegateTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E91405F17711D88002C6A3F /* CDVWebViewDelegateTests.m */; }; - 7EF33BD71911ABA20048544E /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = 7EF33BD61911ABA20048544E /* [email protected] */; }; - 8220B5C216D541BD00EC3921 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8220B5C116D541BD00EC3921 /* AssetsLibrary.framework */; }; - 8220B5C616D542F500EC3921 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8220B5C116D541BD00EC3921 /* AssetsLibrary.framework */; }; - EB3B34E9161B5532003DBE7D /* libCordova.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EB3B34E6161B5454003DBE7D /* libCordova.a */; }; - EB89634A15FE66EA00E12277 /* CDVInvokedUrlCommandTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB89634915FE66EA00E12277 /* CDVInvokedUrlCommandTests.m */; }; - EB96677216ADBCF500D86CDF /* CDVUserAgentTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EB96677116ADBCF500D86CDF /* CDVUserAgentTest.m */; }; - EBA3554615A731F100F4DE24 /* CDVFakeFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = EBA3554515A731F100F4DE24 /* CDVFakeFileManager.m */; }; - EBA7F20517962CCD001A0CE6 /* CDVStartPageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EBA7F20417962CCD001A0CE6 /* CDVStartPageTests.m */; }; - F8EB14D1165FFD3200616F39 /* config.xml in Resources */ = {isa = PBXBuildFile; fileRef = F8EB14D0165FFD3200616F39 /* config.xml */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 30F8AE3215212F07006625B3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 303A4067152124BB00182201; - remoteInfo = CordovaLibApp; - }; - 7E73351317E27B4E00AB7A3F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = EB37018115D18B2D00BEBC43 /* CordovaLib.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = D2AAC07D0554694100DB518D; - remoteInfo = CordovaLib; - }; - EB3B34E5161B5454003DBE7D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = EB37018115D18B2D00BEBC43 /* CordovaLib.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 68A32D7114102E1C006B237C; - remoteInfo = CordovaLib; - }; - EB3B34E7161B552E003DBE7D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = EB37018115D18B2D00BEBC43 /* CordovaLib.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = D2AAC07D0554694100DB518D; - remoteInfo = CordovaLib; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 3019D58B1918BFF800D72DCC /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - 302193F81745430F00BC8D2B /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; }; - 30356213141049E1006C2D43 /* CDVWhitelistTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVWhitelistTests.m; 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>"; }; - 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>"; }; - 30610C9119AD9B95000B3781 /* CDVCommandDelegateTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVCommandDelegateTests.m; sourceTree = "<group>"; }; - 3062D1AD151D4D9D000D9128 /* CDVLocalStorageTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVLocalStorageTests.m; sourceTree = "<group>"; }; - 30B342F415224B360070E6A5 /* CDVWebViewTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVWebViewTest.m; sourceTree = "<group>"; }; - 30D1B08B15A2B36D0060C291 /* CDVBase64Tests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVBase64Tests.m; sourceTree = "<group>"; }; - 30F8AE1C152129DA006625B3 /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; path = www; sourceTree = "<group>"; }; - 686357A9141002F100DF4CF2 /* CordovaLibTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CordovaLibTests.xctest; 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; }; - 686357AE141002F100DF4CF2 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 686357B2141002F200DF4CF2 /* CordovaLibTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CordovaLibTests-Info.plist"; sourceTree = "<group>"; }; - 686357B4141002F200DF4CF2 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; - 686357B9141002F200DF4CF2 /* CDVPluginResultJSONSerializationTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CDVPluginResultJSONSerializationTests.m; sourceTree = "<group>"; }; - 686357CC14100AAD00DF4CF2 /* AddressBookUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBookUI.framework; path = System/Library/Frameworks/AddressBookUI.framework; sourceTree = SDKROOT; }; - 686357CE14100ADA00DF4CF2 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; - 686357CF14100ADB00DF4CF2 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - 686357D014100ADE00DF4CF2 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; - 686357D214100AE700DF4CF2 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; - 686357D414100AF200DF4CF2 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; - 686357DC14100B1600DF4CF2 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; - 68A32D7414103017006B237C /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; }; - 7E91405F17711D88002C6A3F /* CDVWebViewDelegateTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVWebViewDelegateTests.m; sourceTree = "<group>"; }; - 7EF33BD61911ABA20048544E /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; sourceTree = "<group>"; }; - 8220B5C116D541BD00EC3921 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; }; - EB37018115D18B2D00BEBC43 /* CordovaLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CordovaLib.xcodeproj; path = ../CordovaLib/CordovaLib.xcodeproj; sourceTree = "<group>"; }; - EB89634915FE66EA00E12277 /* CDVInvokedUrlCommandTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVInvokedUrlCommandTests.m; sourceTree = "<group>"; }; - EB96677116ADBCF500D86CDF /* CDVUserAgentTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVUserAgentTest.m; sourceTree = "<group>"; }; - EBA3550F15A5F18900F4DE24 /* CDVWebViewTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CDVWebViewTest.h; sourceTree = "<group>"; }; - EBA3554415A731F100F4DE24 /* CDVFakeFileManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVFakeFileManager.h; sourceTree = "<group>"; }; - EBA3554515A731F100F4DE24 /* CDVFakeFileManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVFakeFileManager.m; sourceTree = "<group>"; }; - EBA7F20417962CCD001A0CE6 /* CDVStartPageTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVStartPageTests.m; sourceTree = "<group>"; }; - F8EB14D0165FFD3200616F39 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = CordovaLibApp/config.xml; sourceTree = "<group>"; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 303A4065152124BB00182201 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 302193F91745430F00BC8D2B /* ImageIO.framework in Frameworks */, - EB3B34E9161B5532003DBE7D /* libCordova.a in Frameworks */, - 8220B5C216D541BD00EC3921 /* AssetsLibrary.framework in Frameworks */, - 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 */, - 303A406C152124BB00182201 /* CoreGraphics.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 686357A5141002F100DF4CF2 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 3019D58D1918C00C00D72DCC /* XCTest.framework in Frameworks */, - 68A32D7514103017006B237C /* AddressBook.framework in Frameworks */, - 8220B5C616D542F500EC3921 /* AssetsLibrary.framework in Frameworks */, - 68A32D7614103078006B237C /* CoreMedia.framework in Frameworks */, - 68A32D7714103082006B237C /* AudioToolbox.framework in Frameworks */, - 68A32D781410308B006B237C /* AVFoundation.framework in Frameworks */, - 68A32D7914103097006B237C /* CoreLocation.framework in Frameworks */, - 68A32D7A141030AB006B237C /* MobileCoreServices.framework in Frameworks */, - 68A32D7B141030C8006B237C /* SystemConfiguration.framework in Frameworks */, - 68A32D7C141030D0006B237C /* AddressBookUI.framework in Frameworks */, - 68A32D7D141030E4006B237C /* CoreGraphics.framework in Frameworks */, - 68A32D7E141030EB006B237C /* UIKit.framework in Frameworks */, - 68A32D7F141030F3006B237C /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 034768DFFF38A50411DB9C8B /* Products */ = { - isa = PBXGroup; - children = ( - 686357A9141002F100DF4CF2 /* CordovaLibTests.xctest */, - 303A4068152124BB00182201 /* CordovaLibApp.app */, - ); - name = Products; - sourceTree = CORDOVALIB; - }; - 0867D691FE84028FC02AAC07 /* CordovaLib */ = { - isa = PBXGroup; - children = ( - 7EF33BD61911ABA20048544E /* [email protected] */, - F8EB14D0165FFD3200616F39 /* config.xml */, - EB37018115D18B2D00BEBC43 /* CordovaLib.xcodeproj */, - EB3B34F4161B585D003DBE7D /* CordovaLibTests */, - 303A406D152124BB00182201 /* CordovaLibApp */, - 0867D69AFE84028FC02AAC07 /* Frameworks */, - 034768DFFF38A50411DB9C8B /* Products */, - ); - name = CordovaLib; - sourceTree = "<group>"; - }; - 0867D69AFE84028FC02AAC07 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 3019D58B1918BFF800D72DCC /* XCTest.framework */, - 302193F81745430F00BC8D2B /* ImageIO.framework */, - 68A32D7414103017006B237C /* AddressBook.framework */, - 8220B5C116D541BD00EC3921 /* AssetsLibrary.framework */, - 686357DC14100B1600DF4CF2 /* CoreMedia.framework */, - 686357CE14100ADA00DF4CF2 /* AudioToolbox.framework */, - 686357CF14100ADB00DF4CF2 /* AVFoundation.framework */, - 686357D014100ADE00DF4CF2 /* CoreLocation.framework */, - 686357D214100AE700DF4CF2 /* MobileCoreServices.framework */, - 686357D414100AF200DF4CF2 /* SystemConfiguration.framework */, - 686357CC14100AAD00DF4CF2 /* AddressBookUI.framework */, - 686357AA141002F100DF4CF2 /* UIKit.framework */, - 686357AC141002F100DF4CF2 /* Foundation.framework */, - 686357AE141002F100DF4CF2 /* CoreGraphics.framework */, - ); - 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 = ( - 303A406F152124BB00182201 /* CordovaLibApp-Info.plist */, - 303A4070152124BB00182201 /* InfoPlist.strings */, - 303A4073152124BB00182201 /* main.m */, - ); - name = "Supporting Files"; - sourceTree = "<group>"; - }; - 686357B1141002F200DF4CF2 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 686357B2141002F200DF4CF2 /* CordovaLibTests-Info.plist */, - 686357B3141002F200DF4CF2 /* InfoPlist.strings */, - ); - name = "Supporting Files"; - sourceTree = "<group>"; - }; - EB3B34E2161B5454003DBE7D /* Products */ = { - isa = PBXGroup; - children = ( - EB3B34E6161B5454003DBE7D /* libCordova.a */, - ); - name = Products; - sourceTree = "<group>"; - }; - EB3B34F4161B585D003DBE7D /* CordovaLibTests */ = { - isa = PBXGroup; - children = ( - 30610C9119AD9B95000B3781 /* CDVCommandDelegateTests.m */, - EBA7F20417962CCD001A0CE6 /* CDVStartPageTests.m */, - 7E91405F17711D88002C6A3F /* CDVWebViewDelegateTests.m */, - EB96677116ADBCF500D86CDF /* CDVUserAgentTest.m */, - EBA3554415A731F100F4DE24 /* CDVFakeFileManager.h */, - EBA3554515A731F100F4DE24 /* CDVFakeFileManager.m */, - EBA3550F15A5F18900F4DE24 /* CDVWebViewTest.h */, - 30B342F415224B360070E6A5 /* CDVWebViewTest.m */, - 30D1B08B15A2B36D0060C291 /* CDVBase64Tests.m */, - EB89634915FE66EA00E12277 /* CDVInvokedUrlCommandTests.m */, - 3062D1AD151D4D9D000D9128 /* CDVLocalStorageTests.m */, - 686357B9141002F200DF4CF2 /* CDVPluginResultJSONSerializationTests.m */, - 30356213141049E1006C2D43 /* CDVWhitelistTests.m */, - 686357B1141002F200DF4CF2 /* Supporting Files */, - ); - name = CordovaLibTests; - sourceTree = "<group>"; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 303A4067152124BB00182201 /* CordovaLibApp */ = { - isa = PBXNativeTarget; - buildConfigurationList = 303A4082152124BB00182201 /* Build configuration list for PBXNativeTarget "CordovaLibApp" */; - buildPhases = ( - 303A4064152124BB00182201 /* Sources */, - 303A4065152124BB00182201 /* Frameworks */, - 303A4066152124BB00182201 /* Resources */, - 30F8AE1615212883006625B3 /* Copy cordova.js into www directory */, - ); - buildRules = ( - ); - dependencies = ( - EB3B34E8161B552E003DBE7D /* 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" */; - buildPhases = ( - 686357A4141002F100DF4CF2 /* Sources */, - 686357A5141002F100DF4CF2 /* Frameworks */, - 686357A6141002F100DF4CF2 /* Resources */, - 686357A7141002F100DF4CF2 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 7E73351417E27B4E00AB7A3F /* PBXTargetDependency */, - 30F8AE3315212F07006625B3 /* PBXTargetDependency */, - ); - name = CordovaLibTests; - productName = CordovaLibTests; - productReference = 686357A9141002F100DF4CF2 /* CordovaLibTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 0867D690FE84028FC02AAC07 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0510; - }; - buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "CordovaTests" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 1; - knownRegions = ( - English, - Japanese, - French, - German, - en, - ); - mainGroup = 0867D691FE84028FC02AAC07 /* CordovaLib */; - productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = EB3B34E2161B5454003DBE7D /* Products */; - ProjectRef = EB37018115D18B2D00BEBC43 /* CordovaLib.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 686357A8141002F100DF4CF2 /* CordovaLibTests */, - 303A4067152124BB00182201 /* CordovaLibApp */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - EB3B34E6161B5454003DBE7D /* libCordova.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libCordova.a; - remoteRef = EB3B34E5161B5454003DBE7D /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 303A4066152124BB00182201 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F8EB14D1165FFD3200616F39 /* config.xml in Resources */, - 7EF33BD71911ABA20048544E /* [email protected] in Resources */, - 303A4072152124BB00182201 /* InfoPlist.strings in Resources */, - 30F8AE1D152129DA006625B3 /* www in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 686357A6141002F100DF4CF2 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 686357B5141002F200DF4CF2 /* InfoPlist.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 30F8AE1615212883006625B3 /* Copy cordova.js into www directory */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "", - ); - name = "Copy cordova.js into www directory"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "cp ../CordovaLib/cordova.js \"$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME/www/cordova.js\""; - showEnvVarsInLog = 0; - }; - 686357A7141002F100DF4CF2 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 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; - files = ( - 3035621714104C34006C2D43 /* CDVWhitelistTests.m in Sources */, - 686357BA141002F200DF4CF2 /* CDVPluginResultJSONSerializationTests.m in Sources */, - 3062D1AE151D4D9D000D9128 /* CDVLocalStorageTests.m in Sources */, - 30B342F515224B360070E6A5 /* CDVWebViewTest.m in Sources */, - 30D1B08C15A2B36D0060C291 /* CDVBase64Tests.m in Sources */, - EBA3554615A731F100F4DE24 /* CDVFakeFileManager.m in Sources */, - EB89634A15FE66EA00E12277 /* CDVInvokedUrlCommandTests.m in Sources */, - EB96677216ADBCF500D86CDF /* CDVUserAgentTest.m in Sources */, - 7E91406017711D88002C6A3F /* CDVWebViewDelegateTests.m in Sources */, - 30610C9219AD9B95000B3781 /* CDVCommandDelegateTests.m in Sources */, - EBA7F20517962CCD001A0CE6 /* CDVStartPageTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 30F8AE3315212F07006625B3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 303A4067152124BB00182201 /* CordovaLibApp */; - targetProxy = 30F8AE3215212F07006625B3 /* PBXContainerItemProxy */; - }; - 7E73351417E27B4E00AB7A3F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = CordovaLib; - targetProxy = 7E73351317E27B4E00AB7A3F /* PBXContainerItemProxy */; - }; - EB3B34E8161B552E003DBE7D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = CordovaLib; - targetProxy = EB3B34E7161B552E003DBE7D /* 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 = ( - 686357B4141002F200DF4CF2 /* en */, - ); - name = InfoPlist.strings; - sourceTree = "<group>"; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 1DEB922308733DC00010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - 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_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; - LIBRARY_SEARCH_PATHS = "${DT_TOOLCHAIN_DIR}/usr/lib/arc"; - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-DDEBUG"; - OTHER_LDFLAGS = ( - "-all_load", - "-ObjC", - ); - "OTHER_LDFLAGS[sdk=iphonesimulator*]" = ( - "-all_load", - "-ObjC", - "-larclite_iphonesimulator", - ); - PUBLIC_HEADERS_FOLDER_PATH = include/Cordova; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - USER_HEADER_SEARCH_PATHS = "Classes/**"; - }; - name = Debug; - }; - 1DEB922408733DC00010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_PREPROCESSOR_DEFINITIONS = ""; - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; - LIBRARY_SEARCH_PATHS = "${DT_TOOLCHAIN_DIR}/usr/lib/arc"; - ONLY_ACTIVE_ARCH = NO; - OTHER_LDFLAGS = ( - "-all_load", - "-ObjC", - ); - "OTHER_LDFLAGS[sdk=iphonesimulator*]" = ( - "-all_load", - "-ObjC", - "-larclite_iphonesimulator", - ); - PUBLIC_HEADERS_FOLDER_PATH = include/Cordova; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - USER_HEADER_SEARCH_PATHS = "Classes/**"; - }; - name = Release; - }; - 303A4083152124BB00182201 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ENABLE_OBJC_ARC = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - 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 = 6.0; - PRODUCT_NAME = "$(TARGET_NAME)"; - USER_HEADER_SEARCH_PATHS = "Classes/** ../CordovaLib/Classes/**"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - 303A4084152124BB00182201 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ENABLE_OBJC_ARC = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_SYMBOLS_PRIVATE_EXTERN = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - INFOPLIST_FILE = "CordovaLibApp/CordovaLibApp-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - PRODUCT_NAME = "$(TARGET_NAME)"; - USER_HEADER_SEARCH_PATHS = "Classes/** ../CordovaLib/Classes/**"; - VALIDATE_PRODUCT = YES; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; - 686357BB141002F200DF4CF2 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/CordovaLibApp.app/CordovaLibApp"; - CLANG_ENABLE_OBJC_ARC = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_C_LANGUAGE_STANDARD = gnu99; - 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-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = ( - "-all_load", - "-ObjC", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - USER_HEADER_SEARCH_PATHS = "Classes/** ../CordovaLib/Classes/**"; - }; - name = Debug; - }; - 686357BC141002F200DF4CF2 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/CordovaLibApp.app/CordovaLibApp"; - CLANG_ENABLE_OBJC_ARC = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - INFOPLIST_FILE = "CordovaLibTests-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - ONLY_ACTIVE_ARCH = NO; - OTHER_LDFLAGS = ( - "-all_load", - "-ObjC", - ); - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - USER_HEADER_SEARCH_PATHS = "Classes/** ../CordovaLib/Classes/**"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "CordovaTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB922308733DC00010E9CD /* Debug */, - 1DEB922408733DC00010E9CD /* Release */, - ); - 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 = ( - 686357BB141002F200DF4CF2 /* Debug */, - 686357BC141002F200DF4CF2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 0867D690FE84028FC02AAC07 /* Project object */; -}
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/CordovaLibTests/CordovaTests.xcodeproj/xcshareddata/xcschemes/CordovaLibApp.xcscheme ---------------------------------------------------------------------- diff --git a/CordovaLibTests/CordovaTests.xcodeproj/xcshareddata/xcschemes/CordovaLibApp.xcscheme b/CordovaLibTests/CordovaTests.xcodeproj/xcshareddata/xcschemes/CordovaLibApp.xcscheme deleted file mode 100644 index 7f8499a..0000000 --- a/CordovaLibTests/CordovaTests.xcodeproj/xcshareddata/xcschemes/CordovaLibApp.xcscheme +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "303A4067152124BB00182201" - BuildableName = "CordovaLibApp.app" - BlueprintName = "CordovaLibApp" - ReferencedContainer = "container:CordovaTests.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES" - buildConfiguration = "Debug"> - <Testables> - <TestableReference - skipped = "NO"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "686357A8141002F100DF4CF2" - BuildableName = "CordovaLibTests.xctest" - BlueprintName = "CordovaLibTests" - ReferencedContainer = "container:CordovaTests.xcodeproj"> - </BuildableReference> - </TestableReference> - </Testables> - <MacroExpansion> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "303A4067152124BB00182201" - BuildableName = "CordovaLibApp.app" - BlueprintName = "CordovaLibApp" - ReferencedContainer = "container:CordovaTests.xcodeproj"> - </BuildableReference> - </MacroExpansion> - </TestAction> - <LaunchAction - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - buildConfiguration = "Debug" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - allowLocationSimulation = "YES"> - <BuildableProductRunnable> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "303A4067152124BB00182201" - BuildableName = "CordovaLibApp.app" - BlueprintName = "CordovaLibApp" - ReferencedContainer = "container:CordovaTests.xcodeproj"> - </BuildableReference> - </BuildableProductRunnable> - <AdditionalOptions> - </AdditionalOptions> - </LaunchAction> - <ProfileAction - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - buildConfiguration = "Release" - debugDocumentVersioning = "YES"> - <BuildableProductRunnable> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "303A4067152124BB00182201" - BuildableName = "CordovaLibApp.app" - BlueprintName = "CordovaLibApp" - ReferencedContainer = "container:CordovaTests.xcodeproj"> - </BuildableReference> - </BuildableProductRunnable> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/CordovaLibTests/CordovaTests.xcodeproj/xcshareddata/xcschemes/CordovaLibTests.xcscheme ---------------------------------------------------------------------- diff --git a/CordovaLibTests/CordovaTests.xcodeproj/xcshareddata/xcschemes/CordovaLibTests.xcscheme b/CordovaLibTests/CordovaTests.xcodeproj/xcshareddata/xcschemes/CordovaLibTests.xcscheme deleted file mode 100644 index 3557154..0000000 --- a/CordovaLibTests/CordovaTests.xcodeproj/xcshareddata/xcschemes/CordovaLibTests.xcscheme +++ /dev/null @@ -1,62 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - </BuildAction> - <TestAction - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES" - buildConfiguration = "Debug"> - <Testables> - <TestableReference - skipped = "NO"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "686357A8141002F100DF4CF2" - BuildableName = "CordovaLibTests.xctest" - BlueprintName = "CordovaLibTests" - ReferencedContainer = "container:CordovaTests.xcodeproj"> - </BuildableReference> - </TestableReference> - </Testables> - </TestAction> - <LaunchAction - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - buildConfiguration = "Debug" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - allowLocationSimulation = "YES"> - <AdditionalOptions> - <AdditionalOption - key = "DYLD_INSERT_LIBRARIES" - value = "/usr/lib/libgmalloc.dylib" - isEnabled = "YES"> - </AdditionalOption> - <AdditionalOption - key = "NSZombieEnabled" - value = "YES" - isEnabled = "YES"> - </AdditionalOption> - </AdditionalOptions> - </LaunchAction> - <ProfileAction - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - buildConfiguration = "Release" - debugDocumentVersioning = "YES"> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/CordovaLibTests/[email protected] ---------------------------------------------------------------------- diff --git a/CordovaLibTests/[email protected] b/CordovaLibTests/[email protected] deleted file mode 100644 index 0891b7a..0000000 Binary files a/CordovaLibTests/[email protected] and /dev/null differ http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/CordovaLibTests/en.lproj/InfoPlist.strings ---------------------------------------------------------------------- diff --git a/CordovaLibTests/en.lproj/InfoPlist.strings b/CordovaLibTests/en.lproj/InfoPlist.strings deleted file mode 100644 index 01d5c8c..0000000 --- a/CordovaLibTests/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,20 +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. - */ -/* Localized versions of Info.plist keys */ - http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/tests/CordovaLibTests/CDVBase64Tests.m ---------------------------------------------------------------------- diff --git a/tests/CordovaLibTests/CDVBase64Tests.m b/tests/CordovaLibTests/CDVBase64Tests.m new file mode 100644 index 0000000..744601f --- /dev/null +++ b/tests/CordovaLibTests/CDVBase64Tests.m @@ -0,0 +1,64 @@ +/* + 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 <XCTest/XCTest.h> + +#import "NSData+Base64.h" + +@interface CDVBase64Tests : XCTestCase +@end + +@implementation CDVBase64Tests + +- (void)setUp +{ + [super setUp]; + + // setup code here +} + +- (void)tearDown +{ + // Tear-down code here. + + [super tearDown]; +} + +- (void)testBase64Encode +{ + NSString* decodedString = @"abcdefghijklmnopqrstuvwxyz1234567890!@#$%^&"; + NSData* decodedData = [decodedString dataUsingEncoding:NSUTF8StringEncoding]; + + NSString* expectedEncodedString = @"YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY3ODkwIUAjJCVeJg=="; + NSString* actualEncodedString = [decodedData base64EncodedString]; + + XCTAssertTrue([expectedEncodedString isEqualToString:actualEncodedString]); +} + +- (void)testBase64Decode +{ + NSString* encodedString = @"YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY3ODkwIUAjJCVeJg=="; + NSString* decodedString = @"abcdefghijklmnopqrstuvwxyz1234567890!@#$%^&"; + NSData* encodedData = [decodedString dataUsingEncoding:NSUTF8StringEncoding]; + NSData* decodedData = [NSData dataFromBase64String:encodedString]; + + XCTAssertTrue([encodedData isEqualToData:decodedData]); +} + +@end http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/tests/CordovaLibTests/CDVCommandDelegateTests.m ---------------------------------------------------------------------- diff --git a/tests/CordovaLibTests/CDVCommandDelegateTests.m b/tests/CordovaLibTests/CDVCommandDelegateTests.m new file mode 100644 index 0000000..85768a9 --- /dev/null +++ b/tests/CordovaLibTests/CDVCommandDelegateTests.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 <XCTest/XCTest.h> +#import <Cordova/CDVCommandDelegateImpl.h> + +@interface CDVCommandDelegateTests : XCTestCase + +@end + +@interface CDVCommandDelegateImpl () + +// expose private interface +- (BOOL)isValidCallbackId:(NSString*)callbackId; + +@end + +@implementation CDVCommandDelegateTests + +- (void)setUp +{ + [super setUp]; + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown +{ + // Put teardown code here. This method is called after the invocation of each test method in the class. + [super tearDown]; +} + +- (void)testNullCallbackId +{ + CDVCommandDelegateImpl* impl = [[CDVCommandDelegateImpl alloc] initWithViewController:nil]; + + NSString* callbackId = nil; + + XCTAssertFalse([impl isValidCallbackId:callbackId], @"A nil callbackId should be not valid"); +} + +@end http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/tests/CordovaLibTests/CDVFakeFileManager.h ---------------------------------------------------------------------- diff --git a/tests/CordovaLibTests/CDVFakeFileManager.h b/tests/CordovaLibTests/CDVFakeFileManager.h new file mode 100644 index 0000000..f9300a0 --- /dev/null +++ b/tests/CordovaLibTests/CDVFakeFileManager.h @@ -0,0 +1,35 @@ +/* + 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> + +typedef BOOL (^ CDVFileExistsBlock)(NSString*); + +// Used in place of an NSFileManager for unit tests. It implements only those functions +// which are required by the tests that use it. +@interface CDVFakeFileManager : NSObject { + @private + CDVFileExistsBlock _fileExistsBlock; +} + +- (id)initWithFileExistsBlock:(CDVFileExistsBlock)fileExistsBlock; ++ (id)managerWithFileExistsBlock:(CDVFileExistsBlock)fileExistsBlock; + +- (BOOL)fileExistsAtPath:(NSString*)path; +@end http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/tests/CordovaLibTests/CDVFakeFileManager.m ---------------------------------------------------------------------- diff --git a/tests/CordovaLibTests/CDVFakeFileManager.m b/tests/CordovaLibTests/CDVFakeFileManager.m new file mode 100644 index 0000000..50ecd43 --- /dev/null +++ b/tests/CordovaLibTests/CDVFakeFileManager.m @@ -0,0 +1,43 @@ +/* + 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 "CDVFakeFileManager.h" + +@implementation CDVFakeFileManager + +- (id)initWithFileExistsBlock:(CDVFileExistsBlock)fileExistsBlock +{ + self = [super init]; + if (self != nil) { + _fileExistsBlock = [fileExistsBlock copy]; + } + return self; +} + ++ (id)managerWithFileExistsBlock:(CDVFileExistsBlock)fileExistsBlock +{ + return [[CDVFakeFileManager alloc] initWithFileExistsBlock:fileExistsBlock]; +} + +- (BOOL)fileExistsAtPath:(NSString*)path +{ + return _fileExistsBlock(path); +} + +@end http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/tests/CordovaLibTests/CDVInvokedUrlCommandTests.m ---------------------------------------------------------------------- diff --git a/tests/CordovaLibTests/CDVInvokedUrlCommandTests.m b/tests/CordovaLibTests/CDVInvokedUrlCommandTests.m new file mode 100644 index 0000000..3f8dd18 --- /dev/null +++ b/tests/CordovaLibTests/CDVInvokedUrlCommandTests.m @@ -0,0 +1,51 @@ +/* + 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 <XCTest/XCTest.h> + +#import "CDVInvokedUrlCommand.h" + +@interface CDVInvokedUrlCommandTests : XCTestCase +@end + +@implementation CDVInvokedUrlCommandTests + +- (void)testInitWithNoArgs +{ + NSArray* jsonArr = [NSArray arrayWithObjects:@"callbackId", @"className", @"methodName", [NSArray array], nil]; + CDVInvokedUrlCommand* command = [CDVInvokedUrlCommand commandFromJson:jsonArr]; + + XCTAssertEqual(@"callbackId", command.callbackId); + XCTAssertEqual(@"className", command.className); + XCTAssertEqual(@"methodName", command.methodName); + XCTAssertEqual([NSArray array], command.arguments); +} + +- (void)testArgumentAtIndex +{ + NSArray* jsonArr = [NSArray arrayWithObjects:[NSNull null], @"className", @"methodName", [NSArray array], nil]; + CDVInvokedUrlCommand* command = [CDVInvokedUrlCommand commandFromJson:jsonArr]; + + XCTAssertNil([command argumentAtIndex:0], @"NSNull to nil"); + XCTAssertNil([command argumentAtIndex:100], @"Invalid index to nil"); + XCTAssertEqual(@"default", [command argumentAtIndex:0 withDefault:@"default"], @"NSNull to default"); + XCTAssertEqual(@"default", [command argumentAtIndex:100 withDefault:@"default"], @"Invalid index to default"); +} + +@end http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/tests/CordovaLibTests/CDVLocalStorageTests.m ---------------------------------------------------------------------- diff --git a/tests/CordovaLibTests/CDVLocalStorageTests.m b/tests/CordovaLibTests/CDVLocalStorageTests.m new file mode 100644 index 0000000..f664508 --- /dev/null +++ b/tests/CordovaLibTests/CDVLocalStorageTests.m @@ -0,0 +1,146 @@ +/* + 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 <XCTest/XCTest.h> + +#import "CDVLocalStorage.h" +#import "CDVWebViewTest.h" +#import "CDVFakeFileManager.h" +#import "ViewController.h" + +@interface CDVLocalStorageTests : CDVWebViewTest + // Deletes LocalStorage files from disk. +- (void)deleteOriginals:(BOOL)originals backups:(BOOL)backups; +// Returns the CDVLocalStorage instance from the plugins dict. +- (CDVLocalStorage*)localStorage; +@end + +@implementation CDVLocalStorageTests + +- (void)setUp +{ + [super setUp]; + // Clear these on setUp as well in case they were left around. + [self deleteOriginals:YES backups:YES]; +} + +- (void)tearDown +{ + // Don't leave any localStorage files around. + [self deleteOriginals:YES backups:YES]; + [super tearDown]; +} + +- (CDVLocalStorage*)localStorage +{ + return [self pluginInstance:@"LocalStorage"]; +} + +- (void)deleteOriginals:(BOOL)originals backups:(BOOL)backups +{ + NSFileManager* fileManager = [NSFileManager defaultManager]; + + for (CDVBackupInfo* info in [self localStorage].backupInfo) { + if (originals) { + [fileManager removeItemAtPath:info.original error:nil]; + } + if (backups) { + [fileManager removeItemAtPath:info.backup error:nil]; + } + } +} + +- (void)disabled_testBackupAndRestore +{ + CDVLocalStorage* localStorage = [self localStorage]; + + [self waitForConditionName:@"shouldBackup" block:^{ + [self evalJs:@"localStorage.setItem('foo', 'bar')"]; + return [localStorage shouldBackup]; + }]; + [localStorage backup:[CDVInvokedUrlCommand new]]; + XCTAssertFalse([localStorage shouldBackup], @"Should have backed up."); + + // It would be nice to be able to test that the restore functionality + // alters what localStorage.getItem('foo') returns, but it seems as though + // the WebView maintains an in-memory cache of what's in LocalStorage even + // after we delete the underlying files and recreate the view. + + // Instead, we just test the file copying logic. + [self deleteOriginals:YES backups:NO]; + XCTAssertTrue([localStorage shouldRestore], @"Should restore after deleting originals"); + [localStorage restore:[CDVInvokedUrlCommand new]]; + XCTAssertFalse([localStorage shouldRestore], @"Restore did not complete successfully"); +} + +- (void)testVerifyAndFixDatabaseLocations_noChangeRequired +{ + NSString* const kBundlePath = @"/bpath"; + id fakeFileManager = [CDVFakeFileManager managerWithFileExistsBlock:^(NSString* path) { + XCTFail(@"fileExists called."); + return NO; + }]; + NSMutableDictionary* appPlistDict = [NSMutableDictionary dictionaryWithObjectsAndKeys: + @"/bpath/foo", @"WebKitLocalStorageDatabasePathPreferenceKey", + @"/bpath/foo", @"WebDatabaseDirectory", + nil]; + BOOL modified = [CDVLocalStorage __verifyAndFixDatabaseLocationsWithAppPlistDict:appPlistDict + bundlePath:kBundlePath + fileManager:fakeFileManager]; + + XCTAssertFalse(modified, @"Should not have applied fix."); +} + +- (void)testVerifyAndFixDatabaseLocations_changeRequired1 +{ + NSString* const kBundlePath = @"/bpath"; + id fakeFileManager = [CDVFakeFileManager managerWithFileExistsBlock:^(NSString* path) { + return YES; + }]; + NSMutableDictionary* appPlistDict = [NSMutableDictionary dictionaryWithObjectsAndKeys: + @"/foo", @"WebKitLocalStorageDatabasePathPreferenceKey", + nil]; + BOOL modified = [CDVLocalStorage __verifyAndFixDatabaseLocationsWithAppPlistDict:appPlistDict + bundlePath:kBundlePath + fileManager:fakeFileManager]; + + XCTAssertTrue(modified, @"Should have applied fix."); + NSString* newPath = [appPlistDict objectForKey:@"WebKitLocalStorageDatabasePathPreferenceKey"]; + XCTAssertTrue([@"/bpath/Library/Caches" isEqualToString: newPath]); +} + +- (void)testVerifyAndFixDatabaseLocations_changeRequired2 +{ + NSString* const kBundlePath = @"/bpath"; + id fakeFileManager = [CDVFakeFileManager managerWithFileExistsBlock:^(NSString* path) { + return NO; + }]; + NSMutableDictionary* appPlistDict = [NSMutableDictionary dictionaryWithObjectsAndKeys: + @"/foo", @"WebDatabaseDirectory", + nil]; + BOOL modified = [CDVLocalStorage __verifyAndFixDatabaseLocationsWithAppPlistDict:appPlistDict + bundlePath:kBundlePath + fileManager:fakeFileManager]; + + XCTAssertTrue(modified, @"Should have applied fix."); + NSString* newPath = [appPlistDict objectForKey:@"WebDatabaseDirectory"]; + XCTAssertTrue([@"/bpath/Library/WebKit" isEqualToString: newPath]); +} + +@end http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/tests/CordovaLibTests/CDVPluginResultJSONSerializationTests.m ---------------------------------------------------------------------- diff --git a/tests/CordovaLibTests/CDVPluginResultJSONSerializationTests.m b/tests/CordovaLibTests/CDVPluginResultJSONSerializationTests.m new file mode 100644 index 0000000..48eaa82 --- /dev/null +++ b/tests/CordovaLibTests/CDVPluginResultJSONSerializationTests.m @@ -0,0 +1,144 @@ +/* + 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> +#import <XCTest/XCTest.h> + +#import "CDVPluginResult.h" +#import "CDVJSON.h" + +@interface CDVPluginResultJSONSerializationTests : XCTestCase +@end + +@implementation CDVPluginResultJSONSerializationTests + +- (void)testSerializingMessageAsInt +{ + int val = 5; + CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsInt:val]; + + XCTAssertTrue([[NSNumber numberWithInt:val] isEqual:[[result argumentsAsJSON] JSONFragment]]); +} + +- (void)testSerializingMessageAsDouble +{ + double val = 5.5; + CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDouble:val]; + + XCTAssertTrue([[NSNumber numberWithDouble:val] isEqual:[[result argumentsAsJSON] JSONFragment]]); +} + +- (void)testSerializingMessageAsBool +{ + BOOL val = YES; + CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsBool:val]; + + XCTAssertTrue([[NSNumber numberWithBool:val] isEqual:[[result argumentsAsJSON] JSONFragment]]); +} + +- (void)testSerializingMessageAsArray +{ + NSArray* testValues = [NSArray arrayWithObjects: + [NSNull null], + @"string", + [NSNumber numberWithInt:5], + [NSNumber numberWithDouble:5.5], + [NSNumber numberWithBool:true], + nil]; + + CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsArray:testValues]; + NSArray* arr = [[result argumentsAsJSON] JSONObject]; + + XCTAssertTrue([arr isKindOfClass:[NSArray class]]); + XCTAssertTrue([testValues count] == [arr count]); + + for (NSInteger i = 0; i < [testValues count]; i++) { + XCTAssertTrue([[testValues objectAtIndex:i] isEqual:[arr objectAtIndex:i]]); + } +} + +- (void)__testDictionary:(NSDictionary*)dictA withDictionary:(NSDictionary*)dictB +{ + XCTAssertTrue([dictA isKindOfClass:[NSDictionary class]]); + XCTAssertTrue([dictB isKindOfClass:[NSDictionary class]]); + + XCTAssertTrue([[dictA allKeys] count] == [[dictB allKeys] count]); + + for (NSInteger i = 0; i < [dictA count]; i++) { + id keyA = [[dictA allKeys] objectAtIndex:i]; + id objA = [dictA objectForKey:keyA]; + id objB = [dictB objectForKey:keyA]; + + XCTAssertTrue([[dictB allKeys] containsObject:keyA]); // key exists + if ([objA isKindOfClass:[NSDictionary class]]) { + [self __testDictionary:objA withDictionary:objB]; + } else { + XCTAssertTrue([objA isEqual:objB]); // key's value equality + } + } +} + +- (void)testSerializingMessageAsDictionary +{ + NSMutableDictionary* testValues = [NSMutableDictionary dictionaryWithObjectsAndKeys: + [NSNull null], @"nullItem", + @"string", @"stringItem", + [NSNumber numberWithInt:5], @"intItem", + [NSNumber numberWithDouble:5.5], @"doubleItem", + [NSNumber numberWithBool:true], @"boolItem", + nil]; + + NSDictionary* nestedDict = [testValues copy]; + + [testValues setValue:nestedDict forKey:@"nestedDict"]; + + CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:testValues]; + NSDictionary* dic = [[result argumentsAsJSON] JSONObject]; + + [self __testDictionary:testValues withDictionary:dic]; +} + +- (void)testSerializingMessageAsErrorCode +{ + NSMutableDictionary* testValues = [NSMutableDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt:1], @"code", + nil]; + + CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageToErrorObject:1]; + + [self __testDictionary:testValues withDictionary:[[result argumentsAsJSON] JSONObject]]; +} + +- (void)testSerializingMessageAsStringContainingQuotes +{ + NSString* quotedString = @"\"quoted\""; + CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:quotedString]; + + XCTAssertTrue([quotedString isEqualToString:[[result argumentsAsJSON] JSONFragment]]); +} + +- (void)testSerializingMessageAsStringThatIsNil +{ + NSString* nilString = nil; + CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:nilString]; + + XCTAssertTrue([[NSNull null] isEqual:[[result argumentsAsJSON] JSONFragment]]); +} + +@end http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/tests/CordovaLibTests/CDVStartPageTests.m ---------------------------------------------------------------------- diff --git a/tests/CordovaLibTests/CDVStartPageTests.m b/tests/CordovaLibTests/CDVStartPageTests.m new file mode 100644 index 0000000..452e4f8 --- /dev/null +++ b/tests/CordovaLibTests/CDVStartPageTests.m @@ -0,0 +1,95 @@ +/* + 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 <XCTest/XCTest.h> + +#import "CDVWebViewTest.h" +#import "CDVViewController.h" +#import "AppDelegate.h" + +@interface CDVStartPageTestViewController : UIViewController +@property (strong, nonatomic) CDVViewController* vc1; +@property (strong, nonatomic) CDVViewController* vc2; +@end + +@implementation CDVStartPageTestViewController +@synthesize vc1 = _vc1, vc2 = _vc2; + +- (void)loadView +{ + _vc1 = [[CDVViewController alloc] init]; + _vc1.wwwFolderName = @"www"; + _vc1.startPage = @"index.html"; + [self addChildViewController:_vc1]; + + _vc2 = [[CDVViewController alloc] init]; + _vc2.wwwFolderName = @"www"; + _vc2.startPage = @"index.html?delta=true"; + [self addChildViewController:_vc2]; + + CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame]; + UIView* contentView = [[UIView alloc] initWithFrame:applicationFrame]; + + CGRect sub1, sub2; + CGRectDivide(applicationFrame, &sub1, &sub2, applicationFrame.size.height / 2, CGRectMinYEdge); + [_vc1.view setBounds:sub1]; + [_vc2.view setBounds:sub2]; + + [contentView addSubview:_vc1.view]; + [contentView addSubview:_vc2.view]; + + self.view = contentView; +} + +@end + +@interface CDVStartPageTest : CDVWebViewTest +@end + +@implementation CDVStartPageTest + +- (void)setUp +{ + [super setUp]; +} + +- (void)tearDown +{ + [super tearDown]; +} + +- (void)testParametersInStartPage +{ + CDVStartPageTestViewController* rootVc = [[CDVStartPageTestViewController alloc] init]; + + self.appDelegate.window.rootViewController = rootVc; + + NSString* geHREF = @"window.location.href"; + [self waitForConditionName:@"getting href" block:^{ + return (BOOL)(rootVc.vc1.webView.request != nil && rootVc.vc1.webView.request != nil); + }]; + + NSString* href = [rootVc.vc1.webView stringByEvaluatingJavaScriptFromString:geHREF]; + XCTAssertTrue([href hasSuffix:@"index.html"], @"href should point to index.html"); + + href = [rootVc.vc2.webView stringByEvaluatingJavaScriptFromString:geHREF]; + XCTAssertTrue([href hasSuffix:@"index.html?delta=true"], @"href should point to index.html?delta=true"); +} + +@end http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/tests/CordovaLibTests/CDVUserAgentTest.m ---------------------------------------------------------------------- diff --git a/tests/CordovaLibTests/CDVUserAgentTest.m b/tests/CordovaLibTests/CDVUserAgentTest.m new file mode 100644 index 0000000..1a68364 --- /dev/null +++ b/tests/CordovaLibTests/CDVUserAgentTest.m @@ -0,0 +1,93 @@ +/* + 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 <XCTest/XCTest.h> + +#import "CDVWebViewTest.h" +#import "CDVViewController.h" +#import "AppDelegate.h" + +@interface CDVUserAgentTestViewController : UIViewController +@property (nonatomic) CDVViewController* vc1; +@property (nonatomic) CDVViewController* vc2; +@end + +@implementation CDVUserAgentTestViewController +@synthesize vc1 = _vc1, vc2 = _vc2; + +- (void)loadView +{ + _vc1 = [[CDVViewController alloc] init]; + _vc1.wwwFolderName = @"www"; + _vc1.startPage = @"index.html"; + [self addChildViewController:_vc1]; + + _vc2 = [[CDVViewController alloc] init]; + _vc2.wwwFolderName = @"www"; + _vc2.startPage = @"index.html"; + [self addChildViewController:_vc2]; + + CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame]; + UIView* contentView = [[UIView alloc] initWithFrame:applicationFrame]; + + CGRect sub1, sub2; + CGRectDivide(applicationFrame, &sub1, &sub2, applicationFrame.size.height / 2, CGRectMinYEdge); + [_vc1.view setBounds:sub1]; + [_vc2.view setBounds:sub2]; + + [contentView addSubview:_vc1.view]; + [contentView addSubview:_vc2.view]; + + self.view = contentView; +} + +@end + +@interface CDVUserAgentTest : CDVWebViewTest +@end + +@implementation CDVUserAgentTest + +- (void)setUp +{ + [super setUp]; +} + +- (void)tearDown +{ + [super tearDown]; +} + +- (void)testMultipleViews +{ + CDVUserAgentTestViewController* rootVc = [[CDVUserAgentTestViewController alloc] init]; + + self.appDelegate.window.rootViewController = rootVc; + + NSString* getUserAgentCode = @"navigator.userAgent"; + [self waitForConditionName:@"getting user-agents" block:^{ + return (BOOL)(rootVc.vc1.webView.request != nil && rootVc.vc2.webView.request != nil); + }]; + NSString* ua1 = [rootVc.vc1.webView stringByEvaluatingJavaScriptFromString:getUserAgentCode]; + NSString* ua2 = [rootVc.vc2.webView stringByEvaluatingJavaScriptFromString:getUserAgentCode]; + + XCTAssertFalse([ua1 isEqual:ua2], @"User-Agents should be different."); +} + +@end http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/tests/CordovaLibTests/CDVWebViewDelegateTests.m ---------------------------------------------------------------------- diff --git a/tests/CordovaLibTests/CDVWebViewDelegateTests.m b/tests/CordovaLibTests/CDVWebViewDelegateTests.m new file mode 100644 index 0000000..7edd189 --- /dev/null +++ b/tests/CordovaLibTests/CDVWebViewDelegateTests.m @@ -0,0 +1,103 @@ +/* + 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 <XCTest/XCTest.h> + +#import <Cordova/CDVWebViewDelegate.h> + +@interface CDVWebViewDelegate () + +// expose private interface +- (BOOL)shouldLoadRequest:(NSURLRequest*)request; + +@end + +@interface CDVWebViewDelegateTests : XCTestCase +@end + +@implementation CDVWebViewDelegateTests + +- (void)setUp +{ + [super setUp]; +} + +- (void)tearDown +{ + [super tearDown]; +} + +- (void)testShouldLoadRequest +{ + CDVWebViewDelegate* wvd = [[CDVWebViewDelegate alloc] initWithDelegate:nil]; // not really testing delegate handling + + NSURLRequest* mailtoUrl = [NSURLRequest requestWithURL:[NSURL URLWithString:@"mailto:[email protected]"]]; + NSURLRequest* telUrl = [NSURLRequest requestWithURL:[NSURL URLWithString:@"tel:12345"]]; + NSURLRequest* plainUrl = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://apache.org"]]; + + XCTAssertTrue([wvd shouldLoadRequest:mailtoUrl], @"mailto urls should be allowed"); + XCTAssertTrue([wvd shouldLoadRequest:telUrl], @"tel urls should be allowed"); + // as long as this is in the whitelist it should pass + XCTAssertTrue([wvd shouldLoadRequest:plainUrl], @"http urls should be allowed"); +} + +- (void)testFragmentIdentifiersWithHttpUrl +{ + [self doTestFragmentIdentifiersWithBaseUrl:@"http://cordova.apache.org" fragment:@"myfragment"]; +} + +- (void)testFragmentIdentifiersWithFileUrl +{ + [self doTestFragmentIdentifiersWithBaseUrl:@"file:///var/mobile/GASGEQGQsdga3313/www/index.html" fragment:@"myfragment"]; +} + +- (void)testFragmentIdentifiersWithFileUrlAndMalformedFragment +{ + [self doTestFragmentIdentifiersWithBaseUrl:@"file:///var/mobile/GASGEQGQsdga3313/www/index.html" fragment:@"/var/mobile/GASGEQGQsdga3313/www/index.html"]; +} + +- (void)doTestFragmentIdentifiersWithBaseUrl:(NSString*)baseUrl fragment:(NSString*)fragment +{ + CDVWebViewDelegate* wvd = [[CDVWebViewDelegate alloc] initWithDelegate:nil]; // not really testing delegate handling + + NSString* originalUrlString = baseUrl; + NSURL* originalUrl = [NSURL URLWithString:originalUrlString]; + NSURL* originalUrlWithFragmentOnly = [NSURL URLWithString:[NSString stringWithFormat:@"%@#%@", originalUrlString, fragment]]; + NSURL* originalUrlWithFragmentOnlyNoIdentifier = [NSURL URLWithString:[NSString stringWithFormat:@"%@#", originalUrlString]]; + NSURL* originalUrlWithQueryParamsAndFragment = [NSURL URLWithString:[NSString stringWithFormat:@"%@?foo=bar#%@", originalUrlString, fragment]]; + + NSURLRequest* originalRequest = [NSURLRequest requestWithURL:originalUrl]; + NSURLRequest* originalRequestWithFragmentOnly = [NSURLRequest requestWithURL:originalUrlWithFragmentOnly]; + NSURLRequest* originalRequestWithFragmentOnlyNoIdentifier = [NSURLRequest requestWithURL:originalUrlWithFragmentOnlyNoIdentifier]; + NSURLRequest* originalRequestWithQueryParamsAndFragment = [NSURLRequest requestWithURL:originalUrlWithQueryParamsAndFragment]; + NSURLRequest* notOriginalRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://httpd.apache.org"]]; + + XCTAssertTrue([wvd request:originalRequest isEqualToRequestAfterStrippingFragments:originalRequest], @"originalRequest should be a be equal to originalRequest after stripping fragments"); + XCTAssertTrue([wvd request:originalRequestWithFragmentOnly isEqualToRequestAfterStrippingFragments:originalRequest], @"originalRequestWithFragment should be equal to originalRequest after stripping fragment"); + XCTAssertTrue([wvd request:originalRequestWithFragmentOnlyNoIdentifier isEqualToRequestAfterStrippingFragments:originalRequest], @"originalRequestWithFragmentNoIdentifier should be equal to originalRequest after stripping fragment"); + XCTAssertFalse([wvd request:originalRequestWithQueryParamsAndFragment isEqualToRequestAfterStrippingFragments:originalRequest], @"originalRequestWithQueryParamsAndFragment should not be equal to originalRequest after stripping fragment"); + XCTAssertFalse([wvd request:notOriginalRequest isEqualToRequestAfterStrippingFragments:originalRequest], @"notOriginalRequest should not be equal to originalRequest after stripping fragment"); + + // equality tests + XCTAssertTrue([wvd request:originalRequestWithFragmentOnly isEqualToRequestAfterStrippingFragments:originalRequestWithFragmentOnly], @"originalRequestWithFragment should be a equal to itself after stripping fragments"); + XCTAssertTrue([wvd request:originalRequestWithFragmentOnlyNoIdentifier isEqualToRequestAfterStrippingFragments:originalRequestWithFragmentOnlyNoIdentifier], @"originalRequestWithFragmentNoIdentifier should be a equal to itself after stripping fragments"); + XCTAssertTrue([wvd request:originalRequestWithQueryParamsAndFragment isEqualToRequestAfterStrippingFragments:originalRequestWithQueryParamsAndFragment], @"originalRequestWithQueryParamsAndFragment should be equal to itself after stripping fragments"); +} + +@end http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/tests/CordovaLibTests/CDVWebViewTest.h ---------------------------------------------------------------------- diff --git a/tests/CordovaLibTests/CDVWebViewTest.h b/tests/CordovaLibTests/CDVWebViewTest.h new file mode 100644 index 0000000..e11b825 --- /dev/null +++ b/tests/CordovaLibTests/CDVWebViewTest.h @@ -0,0 +1,43 @@ +/* + 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 <XCTest/XCTest.h> +#import <UIKit/UIKit.h> + +@class AppDelegate; +@class CDVViewController; + +@interface CDVWebViewTest : XCTestCase + +@property (nonatomic, strong) UIWebView* webView; + +- (AppDelegate*)appDelegate; +- (CDVViewController*)viewController; +- (UIWebView*)webView; + +// Returns the already registered plugin object for the given class. +- (id)pluginInstance:(NSString*)pluginName; +// Destroys the existing webview and creates a new one. +- (void)reloadWebView; +// Runs the run loop until the given block returns true, or until a timeout +// occurs. +- (void)waitForConditionName:(NSString*)conditionName block:(BOOL (^)())block; +// Convenience function for stringByEvaluatingJavaScriptFromString. +- (NSString*)evalJs:(NSString*)code; +@end http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/cba612ff/tests/CordovaLibTests/CDVWebViewTest.m ---------------------------------------------------------------------- diff --git a/tests/CordovaLibTests/CDVWebViewTest.m b/tests/CordovaLibTests/CDVWebViewTest.m new file mode 100644 index 0000000..c395f48 --- /dev/null +++ b/tests/CordovaLibTests/CDVWebViewTest.m @@ -0,0 +1,122 @@ +/* + 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 "AppDelegate.h" +#import "ViewController.h" + +@interface CDVWebViewTest () +// Runs the run loop until the webview has finished loading. +- (void)waitForPageLoad; +@end + +@implementation CDVWebViewTest + +@synthesize webView; + +- (void)setUp +{ + [super setUp]; + // Stop tests on the first failed assertion. Having the test stop on the + // first exception makes it much easier to identify the source of the error. + // On iOS < 5 there is a bug in SenTestingKit where the exception is + // uncaught and the app crashes upon a failed STAssert (oh well). + //[self raiseAfterFailure]; +} + +- (void)tearDown +{ + // Enforce that the view controller is released between tests to ensure + // tests don't affect each other. + [self.appDelegate destroyViewController]; + [super tearDown]; +} + +- (AppDelegate*)appDelegate +{ + return [[UIApplication sharedApplication] delegate]; +} + +- (CDVViewController*)viewController +{ + // Lazily create the view controller so that tests that do not require it + // are not slowed down by it. + if (self.appDelegate.viewController == nil) { + [self.appDelegate createViewController]; + // Things break if tearDown is called before the page has finished + // loading (a JS error happens and an alert pops up), so enforce a wait + // here. + [self waitForPageLoad]; + } + XCTAssertNotNil(self.appDelegate.viewController, @"createViewController failed"); + return self.appDelegate.viewController; +} + +- (UIWebView*)webView +{ + return self.viewController.webView; +} + +- (id)pluginInstance:(NSString*)pluginName +{ + id ret = [self.viewController getCommandInstance:pluginName]; + + XCTAssertNotNil(ret, @"Missing plugin %@", pluginName); + return ret; +} + +- (void)reloadWebView +{ + [self.appDelegate destroyViewController]; + [self.appDelegate createViewController]; +} + +- (void)waitForConditionName:(NSString*)conditionName block:(BOOL (^)())block +{ + // Number of seconds to wait for a condition to become true before giving up. + const NSTimeInterval kConditionTimeout = 5.0; + // Useful when debugging so that it does not timeout after one loop. + const int kMinIterations = 4; + + NSDate* startTime = [NSDate date]; + int i = 0; + + while (!block()) { + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + NSTimeInterval elapsed = -[startTime timeIntervalSinceNow]; + XCTAssertTrue(i < kMinIterations || elapsed < kConditionTimeout, + @"Timed out waiting for condition %@", conditionName); + ++i; + } +} + +- (void)waitForPageLoad +{ + [self waitForConditionName:@"PageLoad" block:^{ + return [@"true" isEqualToString :[self evalJs:@"window.pageIsLoaded"]]; + }]; +} + +- (NSString*)evalJs:(NSString*)code +{ + return [self.webView stringByEvaluatingJavaScriptFromString:code]; +} + +@end --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
