diff --git a/examples/tv-casting-app/darwin/Darwin.xcworkspace/contents.xcworkspacedata b/examples/tv-casting-app/darwin/Darwin.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 00000000000000..084bb6822bc300
--- /dev/null
+++ b/examples/tv-casting-app/darwin/Darwin.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/examples/tv-casting-app/darwin/Darwin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/examples/tv-casting-app/darwin/Darwin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 00000000000000..18d981003d68d0
--- /dev/null
+++ b/examples/tv-casting-app/darwin/Darwin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/examples/tv-casting-app/darwin/darwin.xcodeproj/project.pbxproj b/examples/tv-casting-app/darwin/darwin.xcodeproj/project.pbxproj
new file mode 100644
index 00000000000000..f2027a6b29c9a2
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwin.xcodeproj/project.pbxproj
@@ -0,0 +1,587 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 3CB8D82227962E3E00BA4D5D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB8D82127962E3E00BA4D5D /* AppDelegate.m */; };
+ 3CB8D82527962E3E00BA4D5D /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB8D82427962E3E00BA4D5D /* SceneDelegate.m */; };
+ 3CB8D82827962E3E00BA4D5D /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB8D82727962E3E00BA4D5D /* ViewController.m */; };
+ 3CB8D82B27962E3E00BA4D5D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3CB8D82927962E3E00BA4D5D /* Main.storyboard */; };
+ 3CB8D82D27962E4800BA4D5D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3CB8D82C27962E4800BA4D5D /* Assets.xcassets */; };
+ 3CB8D83027962E4800BA4D5D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3CB8D82E27962E4800BA4D5D /* LaunchScreen.storyboard */; };
+ 3CB8D83327962E4800BA4D5D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB8D83227962E4800BA4D5D /* main.m */; };
+ 3CB8D83D27962E4900BA4D5D /* darwinTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB8D83C27962E4900BA4D5D /* darwinTests.m */; };
+ 3CB8D84827962E4900BA4D5D /* darwinUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB8D84727962E4900BA4D5D /* darwinUITests.m */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 3CB8D83927962E4900BA4D5D /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 3CB8D81527962E3E00BA4D5D /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 3CB8D81C27962E3E00BA4D5D;
+ remoteInfo = darwin;
+ };
+ 3CB8D84427962E4900BA4D5D /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 3CB8D81527962E3E00BA4D5D /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 3CB8D81C27962E3E00BA4D5D;
+ remoteInfo = darwin;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 3CB8D81D27962E3E00BA4D5D /* darwin.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = darwin.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3CB8D82027962E3E00BA4D5D /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
+ 3CB8D82127962E3E00BA4D5D /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
+ 3CB8D82327962E3E00BA4D5D /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegate.h; sourceTree = ""; };
+ 3CB8D82427962E3E00BA4D5D /* SceneDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegate.m; sourceTree = ""; };
+ 3CB8D82627962E3E00BA4D5D /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; };
+ 3CB8D82727962E3E00BA4D5D /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; };
+ 3CB8D82A27962E3E00BA4D5D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 3CB8D82C27962E4800BA4D5D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 3CB8D82F27962E4800BA4D5D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 3CB8D83127962E4800BA4D5D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 3CB8D83227962E4800BA4D5D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
+ 3CB8D83827962E4900BA4D5D /* darwinTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = darwinTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3CB8D83C27962E4900BA4D5D /* darwinTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = darwinTests.m; sourceTree = ""; };
+ 3CB8D83E27962E4900BA4D5D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 3CB8D84327962E4900BA4D5D /* darwinUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = darwinUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3CB8D84727962E4900BA4D5D /* darwinUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = darwinUITests.m; sourceTree = ""; };
+ 3CB8D84927962E4900BA4D5D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 3CB8D81A27962E3E00BA4D5D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3CB8D83527962E4900BA4D5D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3CB8D84027962E4900BA4D5D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 3CB8D81427962E3E00BA4D5D = {
+ isa = PBXGroup;
+ children = (
+ 3CB8D81F27962E3E00BA4D5D /* darwin */,
+ 3CB8D83B27962E4900BA4D5D /* darwinTests */,
+ 3CB8D84627962E4900BA4D5D /* darwinUITests */,
+ 3CB8D81E27962E3E00BA4D5D /* Products */,
+ );
+ sourceTree = "";
+ };
+ 3CB8D81E27962E3E00BA4D5D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 3CB8D81D27962E3E00BA4D5D /* darwin.app */,
+ 3CB8D83827962E4900BA4D5D /* darwinTests.xctest */,
+ 3CB8D84327962E4900BA4D5D /* darwinUITests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 3CB8D81F27962E3E00BA4D5D /* darwin */ = {
+ isa = PBXGroup;
+ children = (
+ 3CB8D82027962E3E00BA4D5D /* AppDelegate.h */,
+ 3CB8D82127962E3E00BA4D5D /* AppDelegate.m */,
+ 3CB8D82327962E3E00BA4D5D /* SceneDelegate.h */,
+ 3CB8D82427962E3E00BA4D5D /* SceneDelegate.m */,
+ 3CB8D82627962E3E00BA4D5D /* ViewController.h */,
+ 3CB8D82727962E3E00BA4D5D /* ViewController.m */,
+ 3CB8D82927962E3E00BA4D5D /* Main.storyboard */,
+ 3CB8D82C27962E4800BA4D5D /* Assets.xcassets */,
+ 3CB8D82E27962E4800BA4D5D /* LaunchScreen.storyboard */,
+ 3CB8D83127962E4800BA4D5D /* Info.plist */,
+ 3CB8D83227962E4800BA4D5D /* main.m */,
+ );
+ path = darwin;
+ sourceTree = "";
+ };
+ 3CB8D83B27962E4900BA4D5D /* darwinTests */ = {
+ isa = PBXGroup;
+ children = (
+ 3CB8D83C27962E4900BA4D5D /* darwinTests.m */,
+ 3CB8D83E27962E4900BA4D5D /* Info.plist */,
+ );
+ path = darwinTests;
+ sourceTree = "";
+ };
+ 3CB8D84627962E4900BA4D5D /* darwinUITests */ = {
+ isa = PBXGroup;
+ children = (
+ 3CB8D84727962E4900BA4D5D /* darwinUITests.m */,
+ 3CB8D84927962E4900BA4D5D /* Info.plist */,
+ );
+ path = darwinUITests;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 3CB8D81C27962E3E00BA4D5D /* darwin */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 3CB8D84C27962E4900BA4D5D /* Build configuration list for PBXNativeTarget "darwin" */;
+ buildPhases = (
+ 3CB8D81927962E3E00BA4D5D /* Sources */,
+ 3CB8D81A27962E3E00BA4D5D /* Frameworks */,
+ 3CB8D81B27962E3E00BA4D5D /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = darwin;
+ productName = darwin;
+ productReference = 3CB8D81D27962E3E00BA4D5D /* darwin.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 3CB8D83727962E4900BA4D5D /* darwinTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 3CB8D84F27962E4900BA4D5D /* Build configuration list for PBXNativeTarget "darwinTests" */;
+ buildPhases = (
+ 3CB8D83427962E4900BA4D5D /* Sources */,
+ 3CB8D83527962E4900BA4D5D /* Frameworks */,
+ 3CB8D83627962E4900BA4D5D /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 3CB8D83A27962E4900BA4D5D /* PBXTargetDependency */,
+ );
+ name = darwinTests;
+ productName = darwinTests;
+ productReference = 3CB8D83827962E4900BA4D5D /* darwinTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+ 3CB8D84227962E4900BA4D5D /* darwinUITests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 3CB8D85227962E4900BA4D5D /* Build configuration list for PBXNativeTarget "darwinUITests" */;
+ buildPhases = (
+ 3CB8D83F27962E4900BA4D5D /* Sources */,
+ 3CB8D84027962E4900BA4D5D /* Frameworks */,
+ 3CB8D84127962E4900BA4D5D /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 3CB8D84527962E4900BA4D5D /* PBXTargetDependency */,
+ );
+ name = darwinUITests;
+ productName = darwinUITests;
+ productReference = 3CB8D84327962E4900BA4D5D /* darwinUITests.xctest */;
+ productType = "com.apple.product-type.bundle.ui-testing";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 3CB8D81527962E3E00BA4D5D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1240;
+ TargetAttributes = {
+ 3CB8D81C27962E3E00BA4D5D = {
+ CreatedOnToolsVersion = 12.4;
+ };
+ 3CB8D83727962E4900BA4D5D = {
+ CreatedOnToolsVersion = 12.4;
+ TestTargetID = 3CB8D81C27962E3E00BA4D5D;
+ };
+ 3CB8D84227962E4900BA4D5D = {
+ CreatedOnToolsVersion = 12.4;
+ TestTargetID = 3CB8D81C27962E3E00BA4D5D;
+ };
+ };
+ };
+ buildConfigurationList = 3CB8D81827962E3E00BA4D5D /* Build configuration list for PBXProject "darwin" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 3CB8D81427962E3E00BA4D5D;
+ productRefGroup = 3CB8D81E27962E3E00BA4D5D /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 3CB8D81C27962E3E00BA4D5D /* darwin */,
+ 3CB8D83727962E4900BA4D5D /* darwinTests */,
+ 3CB8D84227962E4900BA4D5D /* darwinUITests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 3CB8D81B27962E3E00BA4D5D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3CB8D83027962E4800BA4D5D /* LaunchScreen.storyboard in Resources */,
+ 3CB8D82D27962E4800BA4D5D /* Assets.xcassets in Resources */,
+ 3CB8D82B27962E3E00BA4D5D /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3CB8D83627962E4900BA4D5D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3CB8D84127962E4900BA4D5D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 3CB8D81927962E3E00BA4D5D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3CB8D82827962E3E00BA4D5D /* ViewController.m in Sources */,
+ 3CB8D82227962E3E00BA4D5D /* AppDelegate.m in Sources */,
+ 3CB8D83327962E4800BA4D5D /* main.m in Sources */,
+ 3CB8D82527962E3E00BA4D5D /* SceneDelegate.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3CB8D83427962E4900BA4D5D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3CB8D83D27962E4900BA4D5D /* darwinTests.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3CB8D83F27962E4900BA4D5D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3CB8D84827962E4900BA4D5D /* darwinUITests.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 3CB8D83A27962E4900BA4D5D /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 3CB8D81C27962E3E00BA4D5D /* darwin */;
+ targetProxy = 3CB8D83927962E4900BA4D5D /* PBXContainerItemProxy */;
+ };
+ 3CB8D84527962E4900BA4D5D /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 3CB8D81C27962E3E00BA4D5D /* darwin */;
+ targetProxy = 3CB8D84427962E4900BA4D5D /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ 3CB8D82927962E3E00BA4D5D /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 3CB8D82A27962E3E00BA4D5D /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 3CB8D82E27962E4800BA4D5D /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 3CB8D82F27962E4800BA4D5D /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 3CB8D84A27962E4900BA4D5D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.4;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ };
+ name = Debug;
+ };
+ 3CB8D84B27962E4900BA4D5D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.4;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 3CB8D84D27962E4900BA4D5D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = darwin/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = darwin.darwin;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 3CB8D84E27962E4900BA4D5D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = darwin/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = darwin.darwin;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ 3CB8D85027962E4900BA4D5D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = darwinTests/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = darwin.darwinTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/darwin.app/darwin";
+ };
+ name = Debug;
+ };
+ 3CB8D85127962E4900BA4D5D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = darwinTests/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = darwin.darwinTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/darwin.app/darwin";
+ };
+ name = Release;
+ };
+ 3CB8D85327962E4900BA4D5D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = darwinUITests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = darwin.darwinUITests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = darwin;
+ };
+ name = Debug;
+ };
+ 3CB8D85427962E4900BA4D5D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = darwinUITests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = darwin.darwinUITests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = darwin;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 3CB8D81827962E3E00BA4D5D /* Build configuration list for PBXProject "darwin" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3CB8D84A27962E4900BA4D5D /* Debug */,
+ 3CB8D84B27962E4900BA4D5D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 3CB8D84C27962E4900BA4D5D /* Build configuration list for PBXNativeTarget "darwin" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3CB8D84D27962E4900BA4D5D /* Debug */,
+ 3CB8D84E27962E4900BA4D5D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 3CB8D84F27962E4900BA4D5D /* Build configuration list for PBXNativeTarget "darwinTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3CB8D85027962E4900BA4D5D /* Debug */,
+ 3CB8D85127962E4900BA4D5D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 3CB8D85227962E4900BA4D5D /* Build configuration list for PBXNativeTarget "darwinUITests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3CB8D85327962E4900BA4D5D /* Debug */,
+ 3CB8D85427962E4900BA4D5D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 3CB8D81527962E3E00BA4D5D /* Project object */;
+}
diff --git a/examples/tv-casting-app/darwin/darwin/AppDelegate.h b/examples/tv-casting-app/darwin/darwin/AppDelegate.h
new file mode 100644
index 00000000000000..841d43e0dbe390
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwin/AppDelegate.h
@@ -0,0 +1,22 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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
+
+@interface AppDelegate : UIResponder
+
+@end
diff --git a/examples/tv-casting-app/darwin/darwin/AppDelegate.m b/examples/tv-casting-app/darwin/darwin/AppDelegate.m
new file mode 100644
index 00000000000000..2c2c939aa49403
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwin/AppDelegate.m
@@ -0,0 +1,51 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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"
+
+@interface AppDelegate ()
+
+@end
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+ // Override point for customization after application launch.
+ return YES;
+}
+
+#pragma mark - UISceneSession lifecycle
+
+- (UISceneConfiguration *)application:(UIApplication *)application
+ configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession
+ options:(UISceneConnectionOptions *)options
+{
+ // Called when a new scene session is being created.
+ // Use this method to select a configuration to create the new scene with.
+ return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
+}
+
+- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet *)sceneSessions
+{
+ // Called when the user discards a scene session.
+ // If any sessions were discarded while the application was not running, this will be called shortly after
+ // application:didFinishLaunchingWithOptions. Use this method to release any resources that were specific to the discarded
+ // scenes, as they will not return.
+}
+
+@end
diff --git a/examples/tv-casting-app/darwin/darwin/Assets.xcassets/AccentColor.colorset/Contents.json b/examples/tv-casting-app/darwin/darwin/Assets.xcassets/AccentColor.colorset/Contents.json
new file mode 100644
index 00000000000000..b246f6b1e23f13
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwin/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -0,0 +1,11 @@
+{
+ "colors": [
+ {
+ "idiom": "universal"
+ }
+ ],
+ "info": {
+ "author": "xcode",
+ "version": 1
+ }
+}
diff --git a/examples/tv-casting-app/darwin/darwin/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/tv-casting-app/darwin/darwin/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 00000000000000..1cfd7dc1e5d63d
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwin/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,98 @@
+{
+ "images": [
+ {
+ "idiom": "iphone",
+ "scale": "2x",
+ "size": "20x20"
+ },
+ {
+ "idiom": "iphone",
+ "scale": "3x",
+ "size": "20x20"
+ },
+ {
+ "idiom": "iphone",
+ "scale": "2x",
+ "size": "29x29"
+ },
+ {
+ "idiom": "iphone",
+ "scale": "3x",
+ "size": "29x29"
+ },
+ {
+ "idiom": "iphone",
+ "scale": "2x",
+ "size": "40x40"
+ },
+ {
+ "idiom": "iphone",
+ "scale": "3x",
+ "size": "40x40"
+ },
+ {
+ "idiom": "iphone",
+ "scale": "2x",
+ "size": "60x60"
+ },
+ {
+ "idiom": "iphone",
+ "scale": "3x",
+ "size": "60x60"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "1x",
+ "size": "20x20"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "20x20"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "1x",
+ "size": "29x29"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "29x29"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "1x",
+ "size": "40x40"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "40x40"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "1x",
+ "size": "76x76"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "76x76"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "83.5x83.5"
+ },
+ {
+ "idiom": "ios-marketing",
+ "scale": "1x",
+ "size": "1024x1024"
+ }
+ ],
+ "info": {
+ "author": "xcode",
+ "version": 1
+ }
+}
diff --git a/examples/tv-casting-app/darwin/darwin/Assets.xcassets/Contents.json b/examples/tv-casting-app/darwin/darwin/Assets.xcassets/Contents.json
new file mode 100644
index 00000000000000..dd65c04e8d5658
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwin/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info": {
+ "author": "xcode",
+ "version": 1
+ }
+}
diff --git a/examples/tv-casting-app/darwin/darwin/Base.lproj/LaunchScreen.storyboard b/examples/tv-casting-app/darwin/darwin/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 00000000000000..865e9329f3767a
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwin/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/tv-casting-app/darwin/darwin/Base.lproj/Main.storyboard b/examples/tv-casting-app/darwin/darwin/Base.lproj/Main.storyboard
new file mode 100644
index 00000000000000..808a21ce779bae
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwin/Base.lproj/Main.storyboard
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/tv-casting-app/darwin/darwin/Info.plist b/examples/tv-casting-app/darwin/darwin/Info.plist
new file mode 100644
index 00000000000000..72bf2c4f5985f3
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwin/Info.plist
@@ -0,0 +1,66 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+ UISceneConfigurations
+
+ UIWindowSceneSessionRoleApplication
+
+
+ UISceneConfigurationName
+ Default Configuration
+ UISceneDelegateClassName
+ SceneDelegate
+ UISceneStoryboardFile
+ Main
+
+
+
+
+ UIApplicationSupportsIndirectInputEvents
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/examples/tv-casting-app/darwin/darwin/SceneDelegate.h b/examples/tv-casting-app/darwin/darwin/SceneDelegate.h
new file mode 100644
index 00000000000000..dd12a1c96cc3af
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwin/SceneDelegate.h
@@ -0,0 +1,24 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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
+
+@interface SceneDelegate : UIResponder
+
+@property (strong, nonatomic) UIWindow * window;
+
+@end
diff --git a/examples/tv-casting-app/darwin/darwin/SceneDelegate.m b/examples/tv-casting-app/darwin/darwin/SceneDelegate.m
new file mode 100644
index 00000000000000..9a34646685879c
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwin/SceneDelegate.m
@@ -0,0 +1,68 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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 "SceneDelegate.h"
+
+@interface SceneDelegate ()
+
+@end
+
+@implementation SceneDelegate
+
+- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions
+{
+ // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
+ // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
+ // This delegate does not imply the connecting scene or session are new (see
+ // `application:configurationForConnectingSceneSession` instead).
+}
+
+- (void)sceneDidDisconnect:(UIScene *)scene
+{
+ // Called as the scene is being released by the system.
+ // This occurs shortly after the scene enters the background, or when its session is discarded.
+ // Release any resources associated with this scene that can be re-created the next time the scene connects.
+ // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions`
+ // instead).
+}
+
+- (void)sceneDidBecomeActive:(UIScene *)scene
+{
+ // Called when the scene has moved from an inactive state to an active state.
+ // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
+}
+
+- (void)sceneWillResignActive:(UIScene *)scene
+{
+ // Called when the scene will move from an active state to an inactive state.
+ // This may occur due to temporary interruptions (ex. an incoming phone call).
+}
+
+- (void)sceneWillEnterForeground:(UIScene *)scene
+{
+ // Called as the scene transitions from the background to the foreground.
+ // Use this method to undo the changes made on entering the background.
+}
+
+- (void)sceneDidEnterBackground:(UIScene *)scene
+{
+ // Called as the scene transitions from the foreground to the background.
+ // Use this method to save data, release shared resources, and store enough scene-specific state information
+ // to restore the scene back to its current state.
+}
+
+@end
diff --git a/examples/tv-casting-app/darwin/darwin/ViewController.h b/examples/tv-casting-app/darwin/darwin/ViewController.h
new file mode 100644
index 00000000000000..e122b5c9ad9c0c
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwin/ViewController.h
@@ -0,0 +1,22 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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
+
+@interface ViewController : UIViewController
+
+@end
diff --git a/examples/tv-casting-app/darwin/darwin/ViewController.m b/examples/tv-casting-app/darwin/darwin/ViewController.m
new file mode 100644
index 00000000000000..8d070158ac42e7
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwin/ViewController.m
@@ -0,0 +1,32 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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.
+}
+
+@end
diff --git a/examples/tv-casting-app/darwin/darwin/main.m b/examples/tv-casting-app/darwin/darwin/main.m
new file mode 100644
index 00000000000000..17c6551eaa5408
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwin/main.m
@@ -0,0 +1,29 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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
+
+int main(int argc, char * argv[])
+{
+ NSString * appDelegateClassName;
+ @autoreleasepool {
+ // Setup code that might create autoreleased objects goes here.
+ appDelegateClassName = NSStringFromClass([AppDelegate class]);
+ }
+ return UIApplicationMain(argc, argv, nil, appDelegateClassName);
+}
diff --git a/examples/tv-casting-app/darwin/darwinTests/Info.plist b/examples/tv-casting-app/darwin/darwinTests/Info.plist
new file mode 100644
index 00000000000000..64d65ca495770b
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwinTests/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+
+
diff --git a/examples/tv-casting-app/darwin/darwinTests/darwinTests.m b/examples/tv-casting-app/darwin/darwinTests/darwinTests.m
new file mode 100644
index 00000000000000..81f43c1ecb8eca
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwinTests/darwinTests.m
@@ -0,0 +1,50 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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
+
+@interface darwinTests : XCTestCase
+
+@end
+
+@implementation darwinTests
+
+- (void)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.
+}
+
+- (void)testExample
+{
+ // This is an example of a functional test case.
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
+}
+
+- (void)testPerformanceExample
+{
+ // This is an example of a performance test case.
+ [self measureBlock:^ {
+ // Put the code you want to measure the time of here.
+ }];
+}
+
+@end
diff --git a/examples/tv-casting-app/darwin/darwinUITests/Info.plist b/examples/tv-casting-app/darwin/darwinUITests/Info.plist
new file mode 100644
index 00000000000000..64d65ca495770b
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwinUITests/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+
+
diff --git a/examples/tv-casting-app/darwin/darwinUITests/darwinUITests.m b/examples/tv-casting-app/darwin/darwinUITests/darwinUITests.m
new file mode 100644
index 00000000000000..2f127dda433ad7
--- /dev/null
+++ b/examples/tv-casting-app/darwin/darwinUITests/darwinUITests.m
@@ -0,0 +1,63 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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
+
+@interface darwinUITests : XCTestCase
+
+@end
+
+@implementation darwinUITests
+
+- (void)setUp
+{
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+
+ // In UI tests it is usually best to stop immediately when a failure occurs.
+ self.continueAfterFailure = NO;
+
+ // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they
+ // run. The setUp method is a good place to do this.
+}
+
+- (void)tearDown
+{
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+}
+
+- (void)testExample
+{
+ // UI tests must launch the application that they test.
+ XCUIApplication * app = [[XCUIApplication alloc] init];
+ [app launch];
+
+ // Use recording to get started writing UI tests.
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
+}
+
+- (void)testLaunchPerformance
+{
+ if (@available(macOS 10.15, iOS 13.0, tvOS 13.0, *)) {
+ // This measures how long it takes to launch your application.
+ [self measureWithMetrics:@[ [[XCTApplicationLaunchMetric alloc] init] ]
+ block:^{
+ [[[XCUIApplication alloc] init] launch];
+ }];
+ }
+}
+
+@end
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp.xcodeproj/project.pbxproj b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp.xcodeproj/project.pbxproj
new file mode 100644
index 00000000000000..755ed4003980f6
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp.xcodeproj/project.pbxproj
@@ -0,0 +1,587 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 3CB8D86627962FD100BA4D5D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB8D86527962FD100BA4D5D /* AppDelegate.m */; };
+ 3CB8D86927962FD100BA4D5D /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB8D86827962FD100BA4D5D /* SceneDelegate.m */; };
+ 3CB8D86C27962FD100BA4D5D /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB8D86B27962FD100BA4D5D /* ViewController.m */; };
+ 3CB8D86F27962FD100BA4D5D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3CB8D86D27962FD100BA4D5D /* Main.storyboard */; };
+ 3CB8D87127962FDA00BA4D5D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3CB8D87027962FDA00BA4D5D /* Assets.xcassets */; };
+ 3CB8D87427962FDA00BA4D5D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3CB8D87227962FDA00BA4D5D /* LaunchScreen.storyboard */; };
+ 3CB8D87727962FDA00BA4D5D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB8D87627962FDA00BA4D5D /* main.m */; };
+ 3CB8D88127962FDA00BA4D5D /* iOSTVCastingAppTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB8D88027962FDA00BA4D5D /* iOSTVCastingAppTests.m */; };
+ 3CB8D88C27962FDB00BA4D5D /* iOSTVCastingAppUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB8D88B27962FDB00BA4D5D /* iOSTVCastingAppUITests.m */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 3CB8D87D27962FDA00BA4D5D /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 3CB8D85927962FD100BA4D5D /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 3CB8D86027962FD100BA4D5D;
+ remoteInfo = iOSTVCastingApp;
+ };
+ 3CB8D88827962FDB00BA4D5D /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 3CB8D85927962FD100BA4D5D /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 3CB8D86027962FD100BA4D5D;
+ remoteInfo = iOSTVCastingApp;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 3CB8D86127962FD100BA4D5D /* iOSTVCastingApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iOSTVCastingApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3CB8D86427962FD100BA4D5D /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
+ 3CB8D86527962FD100BA4D5D /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
+ 3CB8D86727962FD100BA4D5D /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegate.h; sourceTree = ""; };
+ 3CB8D86827962FD100BA4D5D /* SceneDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegate.m; sourceTree = ""; };
+ 3CB8D86A27962FD100BA4D5D /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; };
+ 3CB8D86B27962FD100BA4D5D /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; };
+ 3CB8D86E27962FD100BA4D5D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 3CB8D87027962FDA00BA4D5D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 3CB8D87327962FDA00BA4D5D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 3CB8D87527962FDA00BA4D5D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 3CB8D87627962FDA00BA4D5D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
+ 3CB8D87C27962FDA00BA4D5D /* iOSTVCastingAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iOSTVCastingAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3CB8D88027962FDA00BA4D5D /* iOSTVCastingAppTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iOSTVCastingAppTests.m; sourceTree = ""; };
+ 3CB8D88227962FDA00BA4D5D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 3CB8D88727962FDB00BA4D5D /* iOSTVCastingAppUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iOSTVCastingAppUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3CB8D88B27962FDB00BA4D5D /* iOSTVCastingAppUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iOSTVCastingAppUITests.m; sourceTree = ""; };
+ 3CB8D88D27962FDB00BA4D5D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 3CB8D85E27962FD100BA4D5D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3CB8D87927962FDA00BA4D5D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3CB8D88427962FDB00BA4D5D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 3CB8D85827962FD100BA4D5D = {
+ isa = PBXGroup;
+ children = (
+ 3CB8D86327962FD100BA4D5D /* iOSTVCastingApp */,
+ 3CB8D87F27962FDA00BA4D5D /* iOSTVCastingAppTests */,
+ 3CB8D88A27962FDB00BA4D5D /* iOSTVCastingAppUITests */,
+ 3CB8D86227962FD100BA4D5D /* Products */,
+ );
+ sourceTree = "";
+ };
+ 3CB8D86227962FD100BA4D5D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 3CB8D86127962FD100BA4D5D /* iOSTVCastingApp.app */,
+ 3CB8D87C27962FDA00BA4D5D /* iOSTVCastingAppTests.xctest */,
+ 3CB8D88727962FDB00BA4D5D /* iOSTVCastingAppUITests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 3CB8D86327962FD100BA4D5D /* iOSTVCastingApp */ = {
+ isa = PBXGroup;
+ children = (
+ 3CB8D86427962FD100BA4D5D /* AppDelegate.h */,
+ 3CB8D86527962FD100BA4D5D /* AppDelegate.m */,
+ 3CB8D86727962FD100BA4D5D /* SceneDelegate.h */,
+ 3CB8D86827962FD100BA4D5D /* SceneDelegate.m */,
+ 3CB8D86A27962FD100BA4D5D /* ViewController.h */,
+ 3CB8D86B27962FD100BA4D5D /* ViewController.m */,
+ 3CB8D86D27962FD100BA4D5D /* Main.storyboard */,
+ 3CB8D87027962FDA00BA4D5D /* Assets.xcassets */,
+ 3CB8D87227962FDA00BA4D5D /* LaunchScreen.storyboard */,
+ 3CB8D87527962FDA00BA4D5D /* Info.plist */,
+ 3CB8D87627962FDA00BA4D5D /* main.m */,
+ );
+ path = iOSTVCastingApp;
+ sourceTree = "";
+ };
+ 3CB8D87F27962FDA00BA4D5D /* iOSTVCastingAppTests */ = {
+ isa = PBXGroup;
+ children = (
+ 3CB8D88027962FDA00BA4D5D /* iOSTVCastingAppTests.m */,
+ 3CB8D88227962FDA00BA4D5D /* Info.plist */,
+ );
+ path = iOSTVCastingAppTests;
+ sourceTree = "";
+ };
+ 3CB8D88A27962FDB00BA4D5D /* iOSTVCastingAppUITests */ = {
+ isa = PBXGroup;
+ children = (
+ 3CB8D88B27962FDB00BA4D5D /* iOSTVCastingAppUITests.m */,
+ 3CB8D88D27962FDB00BA4D5D /* Info.plist */,
+ );
+ path = iOSTVCastingAppUITests;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 3CB8D86027962FD100BA4D5D /* iOSTVCastingApp */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 3CB8D89027962FDB00BA4D5D /* Build configuration list for PBXNativeTarget "iOSTVCastingApp" */;
+ buildPhases = (
+ 3CB8D85D27962FD100BA4D5D /* Sources */,
+ 3CB8D85E27962FD100BA4D5D /* Frameworks */,
+ 3CB8D85F27962FD100BA4D5D /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = iOSTVCastingApp;
+ productName = iOSTVCastingApp;
+ productReference = 3CB8D86127962FD100BA4D5D /* iOSTVCastingApp.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 3CB8D87B27962FDA00BA4D5D /* iOSTVCastingAppTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 3CB8D89327962FDB00BA4D5D /* Build configuration list for PBXNativeTarget "iOSTVCastingAppTests" */;
+ buildPhases = (
+ 3CB8D87827962FDA00BA4D5D /* Sources */,
+ 3CB8D87927962FDA00BA4D5D /* Frameworks */,
+ 3CB8D87A27962FDA00BA4D5D /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 3CB8D87E27962FDA00BA4D5D /* PBXTargetDependency */,
+ );
+ name = iOSTVCastingAppTests;
+ productName = iOSTVCastingAppTests;
+ productReference = 3CB8D87C27962FDA00BA4D5D /* iOSTVCastingAppTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+ 3CB8D88627962FDB00BA4D5D /* iOSTVCastingAppUITests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 3CB8D89627962FDB00BA4D5D /* Build configuration list for PBXNativeTarget "iOSTVCastingAppUITests" */;
+ buildPhases = (
+ 3CB8D88327962FDB00BA4D5D /* Sources */,
+ 3CB8D88427962FDB00BA4D5D /* Frameworks */,
+ 3CB8D88527962FDB00BA4D5D /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 3CB8D88927962FDB00BA4D5D /* PBXTargetDependency */,
+ );
+ name = iOSTVCastingAppUITests;
+ productName = iOSTVCastingAppUITests;
+ productReference = 3CB8D88727962FDB00BA4D5D /* iOSTVCastingAppUITests.xctest */;
+ productType = "com.apple.product-type.bundle.ui-testing";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 3CB8D85927962FD100BA4D5D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1240;
+ TargetAttributes = {
+ 3CB8D86027962FD100BA4D5D = {
+ CreatedOnToolsVersion = 12.4;
+ };
+ 3CB8D87B27962FDA00BA4D5D = {
+ CreatedOnToolsVersion = 12.4;
+ TestTargetID = 3CB8D86027962FD100BA4D5D;
+ };
+ 3CB8D88627962FDB00BA4D5D = {
+ CreatedOnToolsVersion = 12.4;
+ TestTargetID = 3CB8D86027962FD100BA4D5D;
+ };
+ };
+ };
+ buildConfigurationList = 3CB8D85C27962FD100BA4D5D /* Build configuration list for PBXProject "iOSTVCastingApp" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 3CB8D85827962FD100BA4D5D;
+ productRefGroup = 3CB8D86227962FD100BA4D5D /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 3CB8D86027962FD100BA4D5D /* iOSTVCastingApp */,
+ 3CB8D87B27962FDA00BA4D5D /* iOSTVCastingAppTests */,
+ 3CB8D88627962FDB00BA4D5D /* iOSTVCastingAppUITests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 3CB8D85F27962FD100BA4D5D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3CB8D87427962FDA00BA4D5D /* LaunchScreen.storyboard in Resources */,
+ 3CB8D87127962FDA00BA4D5D /* Assets.xcassets in Resources */,
+ 3CB8D86F27962FD100BA4D5D /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3CB8D87A27962FDA00BA4D5D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3CB8D88527962FDB00BA4D5D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 3CB8D85D27962FD100BA4D5D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3CB8D86C27962FD100BA4D5D /* ViewController.m in Sources */,
+ 3CB8D86627962FD100BA4D5D /* AppDelegate.m in Sources */,
+ 3CB8D87727962FDA00BA4D5D /* main.m in Sources */,
+ 3CB8D86927962FD100BA4D5D /* SceneDelegate.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3CB8D87827962FDA00BA4D5D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3CB8D88127962FDA00BA4D5D /* iOSTVCastingAppTests.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3CB8D88327962FDB00BA4D5D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3CB8D88C27962FDB00BA4D5D /* iOSTVCastingAppUITests.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 3CB8D87E27962FDA00BA4D5D /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 3CB8D86027962FD100BA4D5D /* iOSTVCastingApp */;
+ targetProxy = 3CB8D87D27962FDA00BA4D5D /* PBXContainerItemProxy */;
+ };
+ 3CB8D88927962FDB00BA4D5D /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 3CB8D86027962FD100BA4D5D /* iOSTVCastingApp */;
+ targetProxy = 3CB8D88827962FDB00BA4D5D /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ 3CB8D86D27962FD100BA4D5D /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 3CB8D86E27962FD100BA4D5D /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 3CB8D87227962FDA00BA4D5D /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 3CB8D87327962FDA00BA4D5D /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 3CB8D88E27962FDB00BA4D5D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.4;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ };
+ name = Debug;
+ };
+ 3CB8D88F27962FDB00BA4D5D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.4;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 3CB8D89127962FDB00BA4D5D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = iOSTVCastingApp/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = darwin.iOSTVCastingApp;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 3CB8D89227962FDB00BA4D5D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = iOSTVCastingApp/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = darwin.iOSTVCastingApp;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ 3CB8D89427962FDB00BA4D5D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = iOSTVCastingAppTests/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = darwin.iOSTVCastingAppTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iOSTVCastingApp.app/iOSTVCastingApp";
+ };
+ name = Debug;
+ };
+ 3CB8D89527962FDB00BA4D5D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = iOSTVCastingAppTests/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = darwin.iOSTVCastingAppTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iOSTVCastingApp.app/iOSTVCastingApp";
+ };
+ name = Release;
+ };
+ 3CB8D89727962FDB00BA4D5D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = iOSTVCastingAppUITests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = darwin.iOSTVCastingAppUITests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = iOSTVCastingApp;
+ };
+ name = Debug;
+ };
+ 3CB8D89827962FDB00BA4D5D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = iOSTVCastingAppUITests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = darwin.iOSTVCastingAppUITests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = iOSTVCastingApp;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 3CB8D85C27962FD100BA4D5D /* Build configuration list for PBXProject "iOSTVCastingApp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3CB8D88E27962FDB00BA4D5D /* Debug */,
+ 3CB8D88F27962FDB00BA4D5D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 3CB8D89027962FDB00BA4D5D /* Build configuration list for PBXNativeTarget "iOSTVCastingApp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3CB8D89127962FDB00BA4D5D /* Debug */,
+ 3CB8D89227962FDB00BA4D5D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 3CB8D89327962FDB00BA4D5D /* Build configuration list for PBXNativeTarget "iOSTVCastingAppTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3CB8D89427962FDB00BA4D5D /* Debug */,
+ 3CB8D89527962FDB00BA4D5D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 3CB8D89627962FDB00BA4D5D /* Build configuration list for PBXNativeTarget "iOSTVCastingAppUITests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3CB8D89727962FDB00BA4D5D /* Debug */,
+ 3CB8D89827962FDB00BA4D5D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 3CB8D85927962FD100BA4D5D /* Project object */;
+}
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/AppDelegate.h b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/AppDelegate.h
new file mode 100644
index 00000000000000..841d43e0dbe390
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/AppDelegate.h
@@ -0,0 +1,22 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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
+
+@interface AppDelegate : UIResponder
+
+@end
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/AppDelegate.m b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/AppDelegate.m
new file mode 100644
index 00000000000000..2c2c939aa49403
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/AppDelegate.m
@@ -0,0 +1,51 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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"
+
+@interface AppDelegate ()
+
+@end
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+ // Override point for customization after application launch.
+ return YES;
+}
+
+#pragma mark - UISceneSession lifecycle
+
+- (UISceneConfiguration *)application:(UIApplication *)application
+ configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession
+ options:(UISceneConnectionOptions *)options
+{
+ // Called when a new scene session is being created.
+ // Use this method to select a configuration to create the new scene with.
+ return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
+}
+
+- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet *)sceneSessions
+{
+ // Called when the user discards a scene session.
+ // If any sessions were discarded while the application was not running, this will be called shortly after
+ // application:didFinishLaunchingWithOptions. Use this method to release any resources that were specific to the discarded
+ // scenes, as they will not return.
+}
+
+@end
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Assets.xcassets/AccentColor.colorset/Contents.json b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Assets.xcassets/AccentColor.colorset/Contents.json
new file mode 100644
index 00000000000000..b246f6b1e23f13
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -0,0 +1,11 @@
+{
+ "colors": [
+ {
+ "idiom": "universal"
+ }
+ ],
+ "info": {
+ "author": "xcode",
+ "version": 1
+ }
+}
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 00000000000000..1cfd7dc1e5d63d
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,98 @@
+{
+ "images": [
+ {
+ "idiom": "iphone",
+ "scale": "2x",
+ "size": "20x20"
+ },
+ {
+ "idiom": "iphone",
+ "scale": "3x",
+ "size": "20x20"
+ },
+ {
+ "idiom": "iphone",
+ "scale": "2x",
+ "size": "29x29"
+ },
+ {
+ "idiom": "iphone",
+ "scale": "3x",
+ "size": "29x29"
+ },
+ {
+ "idiom": "iphone",
+ "scale": "2x",
+ "size": "40x40"
+ },
+ {
+ "idiom": "iphone",
+ "scale": "3x",
+ "size": "40x40"
+ },
+ {
+ "idiom": "iphone",
+ "scale": "2x",
+ "size": "60x60"
+ },
+ {
+ "idiom": "iphone",
+ "scale": "3x",
+ "size": "60x60"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "1x",
+ "size": "20x20"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "20x20"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "1x",
+ "size": "29x29"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "29x29"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "1x",
+ "size": "40x40"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "40x40"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "1x",
+ "size": "76x76"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "76x76"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "83.5x83.5"
+ },
+ {
+ "idiom": "ios-marketing",
+ "scale": "1x",
+ "size": "1024x1024"
+ }
+ ],
+ "info": {
+ "author": "xcode",
+ "version": 1
+ }
+}
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Assets.xcassets/Contents.json b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Assets.xcassets/Contents.json
new file mode 100644
index 00000000000000..dd65c04e8d5658
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info": {
+ "author": "xcode",
+ "version": 1
+ }
+}
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Base.lproj/LaunchScreen.storyboard b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 00000000000000..865e9329f3767a
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Base.lproj/Main.storyboard b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Base.lproj/Main.storyboard
new file mode 100644
index 00000000000000..808a21ce779bae
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Base.lproj/Main.storyboard
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Info.plist b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Info.plist
new file mode 100644
index 00000000000000..72bf2c4f5985f3
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/Info.plist
@@ -0,0 +1,66 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+ UISceneConfigurations
+
+ UIWindowSceneSessionRoleApplication
+
+
+ UISceneConfigurationName
+ Default Configuration
+ UISceneDelegateClassName
+ SceneDelegate
+ UISceneStoryboardFile
+ Main
+
+
+
+
+ UIApplicationSupportsIndirectInputEvents
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/SceneDelegate.h b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/SceneDelegate.h
new file mode 100644
index 00000000000000..dd12a1c96cc3af
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/SceneDelegate.h
@@ -0,0 +1,24 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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
+
+@interface SceneDelegate : UIResponder
+
+@property (strong, nonatomic) UIWindow * window;
+
+@end
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/SceneDelegate.m b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/SceneDelegate.m
new file mode 100644
index 00000000000000..9a34646685879c
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/SceneDelegate.m
@@ -0,0 +1,68 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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 "SceneDelegate.h"
+
+@interface SceneDelegate ()
+
+@end
+
+@implementation SceneDelegate
+
+- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions
+{
+ // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
+ // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
+ // This delegate does not imply the connecting scene or session are new (see
+ // `application:configurationForConnectingSceneSession` instead).
+}
+
+- (void)sceneDidDisconnect:(UIScene *)scene
+{
+ // Called as the scene is being released by the system.
+ // This occurs shortly after the scene enters the background, or when its session is discarded.
+ // Release any resources associated with this scene that can be re-created the next time the scene connects.
+ // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions`
+ // instead).
+}
+
+- (void)sceneDidBecomeActive:(UIScene *)scene
+{
+ // Called when the scene has moved from an inactive state to an active state.
+ // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
+}
+
+- (void)sceneWillResignActive:(UIScene *)scene
+{
+ // Called when the scene will move from an active state to an inactive state.
+ // This may occur due to temporary interruptions (ex. an incoming phone call).
+}
+
+- (void)sceneWillEnterForeground:(UIScene *)scene
+{
+ // Called as the scene transitions from the background to the foreground.
+ // Use this method to undo the changes made on entering the background.
+}
+
+- (void)sceneDidEnterBackground:(UIScene *)scene
+{
+ // Called as the scene transitions from the foreground to the background.
+ // Use this method to save data, release shared resources, and store enough scene-specific state information
+ // to restore the scene back to its current state.
+}
+
+@end
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/ViewController.h b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/ViewController.h
new file mode 100644
index 00000000000000..e122b5c9ad9c0c
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/ViewController.h
@@ -0,0 +1,22 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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
+
+@interface ViewController : UIViewController
+
+@end
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/ViewController.m b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/ViewController.m
new file mode 100644
index 00000000000000..8d070158ac42e7
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/ViewController.m
@@ -0,0 +1,32 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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.
+}
+
+@end
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/main.m b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/main.m
new file mode 100644
index 00000000000000..17c6551eaa5408
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingApp/main.m
@@ -0,0 +1,29 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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
+
+int main(int argc, char * argv[])
+{
+ NSString * appDelegateClassName;
+ @autoreleasepool {
+ // Setup code that might create autoreleased objects goes here.
+ appDelegateClassName = NSStringFromClass([AppDelegate class]);
+ }
+ return UIApplicationMain(argc, argv, nil, appDelegateClassName);
+}
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingAppTests/Info.plist b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingAppTests/Info.plist
new file mode 100644
index 00000000000000..64d65ca495770b
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingAppTests/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+
+
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingAppTests/iOSTVCastingAppTests.m b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingAppTests/iOSTVCastingAppTests.m
new file mode 100644
index 00000000000000..5c352f79ccfce1
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingAppTests/iOSTVCastingAppTests.m
@@ -0,0 +1,50 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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
+
+@interface iOSTVCastingAppTests : XCTestCase
+
+@end
+
+@implementation iOSTVCastingAppTests
+
+- (void)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.
+}
+
+- (void)testExample
+{
+ // This is an example of a functional test case.
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
+}
+
+- (void)testPerformanceExample
+{
+ // This is an example of a performance test case.
+ [self measureBlock:^ {
+ // Put the code you want to measure the time of here.
+ }];
+}
+
+@end
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingAppUITests/Info.plist b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingAppUITests/Info.plist
new file mode 100644
index 00000000000000..64d65ca495770b
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingAppUITests/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+
+
diff --git a/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingAppUITests/iOSTVCastingAppUITests.m b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingAppUITests/iOSTVCastingAppUITests.m
new file mode 100644
index 00000000000000..1c5cbeeb8b12a3
--- /dev/null
+++ b/examples/tv-casting-app/darwin/iOSTVCastingApp/iOSTVCastingAppUITests/iOSTVCastingAppUITests.m
@@ -0,0 +1,63 @@
+/**
+ *
+ * Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ * Licensed 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
+
+@interface iOSTVCastingAppUITests : XCTestCase
+
+@end
+
+@implementation iOSTVCastingAppUITests
+
+- (void)setUp
+{
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+
+ // In UI tests it is usually best to stop immediately when a failure occurs.
+ self.continueAfterFailure = NO;
+
+ // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they
+ // run. The setUp method is a good place to do this.
+}
+
+- (void)tearDown
+{
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+}
+
+- (void)testExample
+{
+ // UI tests must launch the application that they test.
+ XCUIApplication * app = [[XCUIApplication alloc] init];
+ [app launch];
+
+ // Use recording to get started writing UI tests.
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
+}
+
+- (void)testLaunchPerformance
+{
+ if (@available(macOS 10.15, iOS 13.0, tvOS 13.0, *)) {
+ // This measures how long it takes to launch your application.
+ [self measureWithMetrics:@[ [[XCTApplicationLaunchMetric alloc] init] ]
+ block:^{
+ [[[XCUIApplication alloc] init] launch];
+ }];
+ }
+}
+
+@end
diff --git a/src/app/MessageDef/StatusIB.cpp b/src/app/MessageDef/StatusIB.cpp
index d6a7beb987517e..1eb5a1de093d1e 100644
--- a/src/app/MessageDef/StatusIB.cpp
+++ b/src/app/MessageDef/StatusIB.cpp
@@ -96,7 +96,7 @@ CHIP_ERROR StatusIB::Parser::CheckSchemaValidity() const
{
ClusterStatus clusterStatus;
ReturnErrorOnFailure(reader.Get(clusterStatus));
- PRETTY_PRINT("\tstatus = 0x%" PRIx8 ",", clusterStatus);
+ PRETTY_PRINT("\tcluster-status = 0x%" PRIx8 ",", clusterStatus);
}
#endif // CHIP_DETAIL_LOGGING
}