diff --git a/.gitmodules b/.gitmodules index 6a31d67f..479d55cc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,3 +6,6 @@ path = core url = https://github.com/ConnectSDK/Connect-SDK-iOS-Core.git branch = dev +[submodule "modules/firetv"] + path = modules/firetv + url = https://github.com/ConnectSDK/Connect-SDK-iOS-FireTV.git diff --git a/AUTHORS.md b/AUTHORS.md index 5f3c4314..4be9b3ba 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -1,3 +1,21 @@ +Ibrahim Adnan -- [GitHub](https://github.com/iadnan) | [Twitter](https://twitter.com/ibrahimadnan) + +iOS SDK, iOS sample apps, documentation + +--- + +Eugene Nikolskyi -- [GitHub](https://github.com/eunikolsky) + +iOS SDK, iOS sample apps, documentation + +--- + +Oleksii Frolov -- [GitHub](https://github.com/frolov-alexey) + +Android SDK, Android sample apps, documentation + +--- + Henry Levak -- [GitHub](https://github.com/henrylevak) | [Twitter](http://www.twitter.com/HenryLevak) Product Manager, Provider of Bubble Teas diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cf07ad0..fe245773 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Connect SDK iOS Changelog +## 1.5.0 -- 09 Jul 2015 + +- Supports Amazon Fling SDK to play and control media on Fire TV devices +- Added playlist support for WebOS TVs +- Added media player loop capability for WebOS TVs +- Added feature to pin web apps on WebOS TVs +- Fixed photos not displaying on Apple TV with OS 7.2 +- Fixed launching input picker for new versions of WebOS TVs +- Extended play state subscription to handle media playback errors on WebOS TVs +- Created a first set of integration and acceptance tests +- Miscellaneous bug fixes +- [See commits between 1.4.4 and 1.5.0](https://github.com/ConnectSDK/Connect-SDK-iOS/compare/1.4.4...1.5.0) + +[View files at version 1.5.0](https://github.com/ConnectSDK/Connect-SDK-iOS/tree/1.5.0) + ## 1.4.4 -- 29 Apr 2015 - Allow to set pairing type for WebOS TVs diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c39813ee..4f82a7f3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,10 +2,10 @@ ##General Questions -Please do not use GitHub issues for general questions about the SDK. Instead, use any of the following services to reach out to the development team. +Please do not use GitHub issues for general questions about the SDK. Instead, use any of the following services to reach out to the development team: -- [@ConnectSDK](https://twitter.com/ConnectSDK) -- [Stack Overflow TV Tag](http://www.stackoverflow.com/tags/tv) +- Twitter: [@ConnectSDK](https://twitter.com/ConnectSDK) +- Stack Overflow: [Connect-SDK tag](https://stackoverflow.com/tags/connect-sdk) (or [TV tag](https://stackoverflow.com/tags/tv)) - [support@connectsdk.com](mailto:support@connectsdk.com) ##Versioning @@ -14,22 +14,11 @@ We use [semantic versioning](http://semver.org/) in our tagged releases. ##Branching Strategy -- master - + latest stable, QA'd, tagged release of the SDK - + assume that this is safe for production use - + each tagged release will be made available as a CocoaPod -- sdk_MAJOR.MINOR - + stable branch working towards the next major/minor/patch release - + safe for checking out new features, but do not use in any production apps -- sdk_MAJOR.MINOR-dev - + unstable development branch working towards the next major/minor/patch release - + may not compile/run without errors - + for development only - + submit pull requests against this branch +We use the [successful git branching model](http://nvie.com/posts/a-successful-git-branching-model/), except without release branches, and the `develop` branch is named `dev`. -##Bug Reports & Feature Requests +##Bug Reports & Feature Requests -We use GitHub's issues system for managing bug reports and some upcoming features. Just open an issue and a member of the team will set the appropriate assignee, label, & milestone. +We use [GitHub's issues](https://github.com/ConnectSDK/Connect-SDK-iOS/issues) system for managing bug reports and some upcoming features. Just open an issue and a member of the team will set the appropriate assignee, label, & milestone. ###Crash Reports @@ -37,11 +26,15 @@ If you experience a crash, please attach your symbolicated crash log or stack tr ##Pull Requests -If you would like to submit code, please fork the repository on GitHub and develop on the latest sdk-X.Y-dev branch. We do not accept pull requests on the master branch, as we only merge QA'd & tagged code into the master branch. See the description of our branching strategy above. +If you would like to submit code, please fork the repository on GitHub and develop in a feature branch, created from the latest `dev` commit. We do not accept pull requests on the `master` branch, as we only merge QA'd and tagged code into the `master` branch. + +###Tests + +Please include unit/integration tests for the new/changed functionality with your pull request. It will help to verify the code is working as designed and make sure there are no regressions in future releases. Read more about our tests here: [README.md#tests](https://github.com/ConnectSDK/Connect-SDK-iOS/blob/dev/README.md#tests). ###Use of third party libraries -Connect SDK does include some third party libraries, but we try to avoid using them. If you'd like to integrate a library with a pull request, make sure that library has an open source license (MIT, Apache 2.0, etc). +Connect SDK includes some third party libraries. If you'd like to integrate a library with a pull request, make sure that library has an open source license (MIT, Apache 2.0, etc). ###Licensing @@ -49,4 +42,4 @@ If you submit a pull request, you acknowledge that your code will be released to ##Testing Lab -In the development of Connect SDK, we have gathered a number of devices for testing purposes. If you are contributing to and/or integrating Connect SDK & would like something tested in our lab, you may contact [partners@connectsdk.com](mailto:partners@connectsdk.com) with your request. +In the development of Connect SDK, we have gathered a number of devices for testing purposes. If you are contributing to and/or integrating Connect SDK and would like something tested in our lab, you may contact [partners@connectsdk.com](mailto:partners@connectsdk.com) with your request. diff --git a/ConnectSDK.podspec b/ConnectSDK.podspec index a23b2b0a..1220cc89 100644 --- a/ConnectSDK.podspec +++ b/ConnectSDK.podspec @@ -1,11 +1,16 @@ # There are two usage options of this podspec: -# * pod "ConnectSDK" will install the full ConnectSDK version; +# * pod "ConnectSDK" will install the full ConnectSDK version (without Amazon +# Fling SDK support; if you need it, please use the source ConnectSDK project +# directly); # * pod "ConnectSDK/Core" will install the core only (Lite version) without # external dependencies. +# +# Unfortunately, Amazon Fling SDK is not distributed via CocoaPods, so we +# cannot include its support in a subspec in an automated way. Pod::Spec.new do |s| s.name = "ConnectSDK" - s.version = "1.4.4" + s.version = "1.5.0" s.summary = "Connect SDK is an open source framework that connects your mobile apps with multiple TV platforms." s.description = <<-DESC @@ -24,8 +29,8 @@ Pod::Spec.new do |s| s.license = { :type => "Apache License, Version 2.0", :file => "LICENSE" } s.author = { "Connect SDK" => "support@connectsdk.com" } s.social_media_url = "http://twitter.com/ConnectSDK" - s.platform = :ios, "6.0" - s.ios.deployment_target = "6.0" + s.platform = :ios, "7.1" + s.ios.deployment_target = "7.1" s.source = { :git => "https://github.com/ConnectSDK/Connect-SDK-iOS.git", :tag => s.version, :submodules => true } @@ -37,6 +42,26 @@ Pod::Spec.new do |s| s.requires_arc = true s.libraries = "z", "icucore" s.prefix_header_contents = <<-PREFIX + // + // Prefix header + // + // The contents of this file are implicitly included at the beginning of every source file. + // + // Copyright (c) 2015 LG Electronics. + // + // 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. + // + #define CONNECT_SDK_VERSION @"#{s.version}" // Uncomment this line to enable SDK logging @@ -64,7 +89,7 @@ Pod::Spec.new do |s| s.subspec 'Core' do |sp| sp.source_files = "ConnectSDKDefaultPlatforms.h", "core/**/*.{h,m}" - sp.exclude_files = (non_arc_files.dup << "core/ConnectSDKTests") + sp.exclude_files = (non_arc_files.dup << "core/ConnectSDK*Tests/**/*") sp.private_header_files = "core/**/*_Private.h" sp.requires_arc = true @@ -80,8 +105,8 @@ Pod::Spec.new do |s| s.subspec 'GoogleCast' do |sp| sp.dependency 'ConnectSDK/Core' - sp.source_files = "modules/**/*.{h,m}" - sp.private_header_files = "modules/**/*_Private.h" + sp.source_files = "modules/google-cast/**/*.{h,m}" + sp.private_header_files = "modules/google-cast/**/*_Private.h" cast_version = "2.6.0" sp.dependency "google-cast-sdk", cast_version diff --git a/ConnectSDK.xcodeproj/project.pbxproj b/ConnectSDK.xcodeproj/project.pbxproj index 24600898..dbb1fc04 100644 --- a/ConnectSDK.xcodeproj/project.pbxproj +++ b/ConnectSDK.xcodeproj/project.pbxproj @@ -25,24 +25,73 @@ 0F446CC21A6D8353000BB1C0 /* PlayListControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F446CC11A6D8353000BB1C0 /* PlayListControl.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0F446CC91A6D924D000BB1C0 /* MediaLaunchObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F446CC71A6D924D000BB1C0 /* MediaLaunchObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0F446CCA1A6D924D000BB1C0 /* MediaLaunchObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F446CC81A6D924D000BB1C0 /* MediaLaunchObject.m */; }; + 146A7D1B1B2896C300260441 /* FireTVIntegrationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 146A7D1A1B2896C300260441 /* FireTVIntegrationTests.m */; }; 440A031D1A854EDE0007E3D3 /* WebOSTVServiceSocketClientTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 440A031C1A854EDE0007E3D3 /* WebOSTVServiceSocketClientTests.m */; }; + 44166C561B4203880052F9EC /* libConnectSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EA61EB1018FE485B00D75696 /* libConnectSDK.a */; }; + 44166C5C1B420B6A0052F9EC /* AirPlayServiceAcceptanceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 44E98F991B1E733D0043BC70 /* AirPlayServiceAcceptanceTests.m */; }; + 44166C5D1B420B6A0052F9EC /* DLNAServiceAcceptanceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 447F63431B14FDC600699843 /* DLNAServiceAcceptanceTests.m */; }; + 44166C5E1B420C270052F9EC /* Expecta.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 449A37101B0FE03400E47DAC /* Expecta.framework */; }; + 44166C5F1B420C270052F9EC /* Specta.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 449A37111B0FE03400E47DAC /* Specta.framework */; }; + 44166C601B420C2D0052F9EC /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316F251AF3F17A000FE655 /* OCMock.framework */; }; + 44166C611B420C4E0052F9EC /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA61EBEF18FE48E900D75696 /* SystemConfiguration.framework */; }; + 44166C621B420C550052F9EC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 44EF618E1A12E0A400CF344C /* libz.dylib */; }; + 44166C631B420C860052F9EC /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA61EBF118FE48EF00D75696 /* MobileCoreServices.framework */; }; + 44166C641B420D960052F9EC /* GoogleCast.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4485140C1A02FC3200D66710 /* GoogleCast.framework */; }; + 44166C651B420DA60052F9EC /* AmazonFling.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316EF31AF2EBF5000FE655 /* AmazonFling.framework */; }; + 44166C661B420DA60052F9EC /* Bolts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316EF41AF2EBF5000FE655 /* Bolts.framework */; }; + 44166C671B420DAD0052F9EC /* libc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316F051AF2F9AD000FE655 /* libc++.dylib */; }; + 44166C681B420DB50052F9EC /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316F071AF2F9BF000FE655 /* AdSupport.framework */; }; + 44166C691B420DC20052F9EC /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 44EF619A1A12E23200CF344C /* libicucore.dylib */; }; + 44166C6A1B420DE40052F9EC /* OCMArg+ArgumentCaptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 448B286A1B03DAEA00DFF18F /* OCMArg+ArgumentCaptor.m */; }; + 44166C6B1B420DF60052F9EC /* OCMStubRecorder+SpectaAsync.m in Sources */ = {isa = PBXBuildFile; fileRef = 44B11F511B16827C00F0156C /* OCMStubRecorder+SpectaAsync.m */; }; + 44166C6C1B420E1A0052F9EC /* EXPMatchers+matchRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = 441FE0EE1B1528D0006C47CE /* EXPMatchers+matchRegex.m */; }; + 44166C6E1B420ED80052F9EC /* FireTVAcceptanceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 44B4C5B71B0E96E80024F229 /* FireTVAcceptanceTests.m */; }; + 44166CB31B4AFE060052F9EC /* the-san-francisco-peaks-of-flagstaff-718x544.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 44E98F961B1E72D80043BC70 /* the-san-francisco-peaks-of-flagstaff-718x544.jpg */; }; + 441C9ED51B3DBCB200F912D5 /* SubscriptionDeduplicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 441C9ED31B3DBCB200F912D5 /* SubscriptionDeduplicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 441C9ED61B3DBCB200F912D5 /* SubscriptionDeduplicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 441C9ED41B3DBCB200F912D5 /* SubscriptionDeduplicator.m */; }; + 441C9EFF1B3DD8C500F912D5 /* SubscriptionDeduplicatorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 441C9EFE1B3DD8C500F912D5 /* SubscriptionDeduplicatorTests.m */; }; + 441FE0EF1B1528D0006C47CE /* EXPMatchers+matchRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = 441FE0EE1B1528D0006C47CE /* EXPMatchers+matchRegex.m */; }; 44291C521A68B4C000280E5C /* SSDPDiscoveryProvider_FilteringTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 44291C511A68B4C000280E5C /* SSDPDiscoveryProvider_FilteringTests.m */; }; - 442B9A4D1A16F6260053AE51 /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 442B9A481A16F61E0053AE51 /* OCMock.framework */; }; - 442B9A501A16F6F00053AE51 /* OHHTTPStubs.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 442B9A4F1A16F6F00053AE51 /* OHHTTPStubs.framework */; }; - 443063C11A4210F0007779DA /* AirPlayServiceHTTPKeepAlive.h in Headers */ = {isa = PBXBuildFile; fileRef = 443063BF1A4210F0007779DA /* AirPlayServiceHTTPKeepAlive.h */; }; + 443063C11A4210F0007779DA /* AirPlayServiceHTTPKeepAlive.h in Headers */ = {isa = PBXBuildFile; fileRef = 443063BF1A4210F0007779DA /* AirPlayServiceHTTPKeepAlive.h */; settings = {ATTRIBUTES = (Public, ); }; }; 443063C21A4210F0007779DA /* AirPlayServiceHTTPKeepAlive.m in Sources */ = {isa = PBXBuildFile; fileRef = 443063C01A4210F0007779DA /* AirPlayServiceHTTPKeepAlive.m */; }; + 44316EFE1AF2F04B000FE655 /* FireTVDiscoveryProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 44316EFC1AF2F04B000FE655 /* FireTVDiscoveryProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 44316EFF1AF2F04B000FE655 /* FireTVDiscoveryProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 44316EFD1AF2F04B000FE655 /* FireTVDiscoveryProvider.m */; }; + 44316F021AF2F09B000FE655 /* FireTVDiscoveryProviderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 44316F011AF2F09B000FE655 /* FireTVDiscoveryProviderTests.m */; }; + 44316F031AF2F77C000FE655 /* AmazonFling.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316EF31AF2EBF5000FE655 /* AmazonFling.framework */; }; + 44316F041AF2F936000FE655 /* Bolts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316EF41AF2EBF5000FE655 /* Bolts.framework */; }; + 44316F061AF2F9AD000FE655 /* libc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316F051AF2F9AD000FE655 /* libc++.dylib */; }; + 44316F081AF2F9BF000FE655 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316F071AF2F9BF000FE655 /* AdSupport.framework */; }; + 44316F291AF3F17A000FE655 /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316F251AF3F17A000FE655 /* OCMock.framework */; }; + 44316F2B1AF3F17A000FE655 /* OHHTTPStubs.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316F271AF3F17A000FE655 /* OHHTTPStubs.framework */; }; 4433F3DF1A421750008D9A04 /* AirPlayServiceHTTPKeepAliveTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4433F3DE1A421750008D9A04 /* AirPlayServiceHTTPKeepAliveTests.m */; }; + 444287CA1B055E0C00B1F875 /* XCTestCase+TaskTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 444287C91B055E0C00B1F875 /* XCTestCase+TaskTests.m */; }; 44758BBB1AE6C06200EC43A6 /* AirPlayServiceHTTPTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 44758BBA1AE6C06200EC43A6 /* AirPlayServiceHTTPTests.m */; }; 44758BCE1AE7070600EC43A6 /* airplay_playbackinfo_ff.json in Resources */ = {isa = PBXBuildFile; fileRef = 44758BC91AE7070500EC43A6 /* airplay_playbackinfo_ff.json */; }; 44758BCF1AE7070600EC43A6 /* airplay_playbackinfo_finished.json in Resources */ = {isa = PBXBuildFile; fileRef = 44758BCA1AE7070500EC43A6 /* airplay_playbackinfo_finished.json */; }; 44758BD01AE7070600EC43A6 /* airplay_playbackinfo_paused.json in Resources */ = {isa = PBXBuildFile; fileRef = 44758BCB1AE7070500EC43A6 /* airplay_playbackinfo_paused.json */; }; 44758BD11AE7070600EC43A6 /* airplay_playbackinfo_playing.json in Resources */ = {isa = PBXBuildFile; fileRef = 44758BCC1AE7070500EC43A6 /* airplay_playbackinfo_playing.json */; }; 44758BD21AE7070600EC43A6 /* airplay_playbackinfo_rewind.json in Resources */ = {isa = PBXBuildFile; fileRef = 44758BCD1AE7070600EC43A6 /* airplay_playbackinfo_rewind.json */; }; + 447F63411B14F35900699843 /* GoogleCast.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4485140C1A02FC3200D66710 /* GoogleCast.framework */; }; 4480857F1A12A7BE00E13938 /* ConnectSDKDefaultPlatformsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4480857E1A12A7BE00E13938 /* ConnectSDKDefaultPlatformsTests.m */; }; 448085801A12A7BE00E13938 /* libConnectSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EA61EB1018FE485B00D75696 /* libConnectSDK.a */; }; 448414F91AEB27F400124EE9 /* OCMStubRecorder+XCTestExpectation.m in Sources */ = {isa = PBXBuildFile; fileRef = 448414F81AEB27F400124EE9 /* OCMStubRecorder+XCTestExpectation.m */; }; + 448B286B1B03DAEA00DFF18F /* OCMArg+ArgumentCaptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 448B286A1B03DAEA00DFF18F /* OCMArg+ArgumentCaptor.m */; }; + 448B286F1B041A3A00DFF18F /* FireTVMediaControlTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 448B286D1B041A3A00DFF18F /* FireTVMediaControlTests.m */; }; + 448B28701B041A3B00DFF18F /* FireTVMediaPlayerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 448B286E1B041A3A00DFF18F /* FireTVMediaPlayerTests.m */; }; + 448B28761B041A5600DFF18F /* FireTVMediaControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 448B28721B041A5600DFF18F /* FireTVMediaControl.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 448B28771B041A5600DFF18F /* FireTVMediaControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 448B28731B041A5600DFF18F /* FireTVMediaControl.m */; }; + 448B28781B041A5600DFF18F /* FireTVMediaPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 448B28741B041A5600DFF18F /* FireTVMediaPlayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 448B28791B041A5600DFF18F /* FireTVMediaPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 448B28751B041A5600DFF18F /* FireTVMediaPlayer.m */; }; 448F36C51A1BD64200536649 /* ZeroConfDiscoveryProviderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 448F36C41A1BD64200536649 /* ZeroConfDiscoveryProviderTests.m */; }; - 4498D98C1A659F43008C0B72 /* NSDictionary+KeyPredicateSearch.h in Headers */ = {isa = PBXBuildFile; fileRef = 4498D98A1A659F43008C0B72 /* NSDictionary+KeyPredicateSearch.h */; }; + 449426301AF82F49006BAFF2 /* BlockRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = 4494262F1AF82F49006BAFF2 /* BlockRunner.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 449426331AF82F8E006BAFF2 /* BlockRunnerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 449426321AF82F8E006BAFF2 /* BlockRunnerTests.m */; }; + 449426351AF83055006BAFF2 /* SynchronousBlockRunnerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 449426341AF83055006BAFF2 /* SynchronousBlockRunnerTests.m */; }; + 449426381AF830A1006BAFF2 /* SynchronousBlockRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = 449426361AF830A1006BAFF2 /* SynchronousBlockRunner.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 449426391AF830A1006BAFF2 /* SynchronousBlockRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 449426371AF830A1006BAFF2 /* SynchronousBlockRunner.m */; }; + 4494263B1AF8353A006BAFF2 /* DispatchQueueBlockRunnerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4494263A1AF8353A006BAFF2 /* DispatchQueueBlockRunnerTests.m */; }; + 4494263E1AF83588006BAFF2 /* DispatchQueueBlockRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = 4494263C1AF83588006BAFF2 /* DispatchQueueBlockRunner.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4494263F1AF83588006BAFF2 /* DispatchQueueBlockRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 4494263D1AF83588006BAFF2 /* DispatchQueueBlockRunner.m */; }; + 4498D98C1A659F43008C0B72 /* NSDictionary+KeyPredicateSearch.h in Headers */ = {isa = PBXBuildFile; fileRef = 4498D98A1A659F43008C0B72 /* NSDictionary+KeyPredicateSearch.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4498D98D1A659F43008C0B72 /* NSDictionary+KeyPredicateSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = 4498D98B1A659F43008C0B72 /* NSDictionary+KeyPredicateSearch.m */; }; 4498D9901A65A1D7008C0B72 /* NSDictionary+KeyPredicateSearchTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4498D98F1A65A1D7008C0B72 /* NSDictionary+KeyPredicateSearchTests.m */; }; 4498D9921A65B69F008C0B72 /* DLNAServiceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4498D9911A65B69F008C0B72 /* DLNAServiceTests.m */; }; @@ -57,15 +106,37 @@ 4498D9A51A66148F008C0B72 /* upnperror_response_xbox.xml in Resources */ = {isa = PBXBuildFile; fileRef = 4498D9A41A66148F008C0B72 /* upnperror_response_xbox.xml */; }; 4498D9A71A661500008C0B72 /* upnperror_response_sonos.xml in Resources */ = {isa = PBXBuildFile; fileRef = 4498D9A61A661500008C0B72 /* upnperror_response_sonos.xml */; }; 4498D9A91A66F027008C0B72 /* DLNAHTTPServerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4498D9A81A66F027008C0B72 /* DLNAHTTPServerTests.m */; }; + 449A37081B0FDC1C00E47DAC /* libConnectSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EA61EB1018FE485B00D75696 /* libConnectSDK.a */; }; + 449A37121B0FE03400E47DAC /* Expecta.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 449A37101B0FE03400E47DAC /* Expecta.framework */; }; + 449A37131B0FE03400E47DAC /* Specta.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 449A37111B0FE03400E47DAC /* Specta.framework */; }; + 449A37141B0FE30700E47DAC /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316F251AF3F17A000FE655 /* OCMock.framework */; }; + 449A37151B0FE32E00E47DAC /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 44EF619A1A12E23200CF344C /* libicucore.dylib */; }; + 449A37161B0FE33100E47DAC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 44EF618E1A12E0A400CF344C /* libz.dylib */; }; + 449A37171B0FE36E00E47DAC /* Bolts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316EF41AF2EBF5000FE655 /* Bolts.framework */; }; + 449A37181B0FE37100E47DAC /* AmazonFling.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316EF31AF2EBF5000FE655 /* AmazonFling.framework */; }; + 449A37191B0FE37B00E47DAC /* libc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316F051AF2F9AD000FE655 /* libc++.dylib */; }; + 449A371A1B0FE38700E47DAC /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA61EBEF18FE48E900D75696 /* SystemConfiguration.framework */; }; + 449A371B1B0FE39700E47DAC /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44316F071AF2F9BF000FE655 /* AdSupport.framework */; }; + 449A371C1B0FE3A500E47DAC /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA61EBF118FE48EF00D75696 /* MobileCoreServices.framework */; }; + 449CC26B1AF9458E0064F2F7 /* ServiceDescriptionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 449CC26A1AF9458E0064F2F7 /* ServiceDescriptionTests.m */; }; + 44A0E1A71B3B31DC00ADF95F /* WebOSWebAppSessionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 44A0E1A51B3B2F5C00ADF95F /* WebOSWebAppSessionTests.m */; }; + 44A499051B0AD0C1002C94E7 /* FireTVCapabilityMixin.h in Headers */ = {isa = PBXBuildFile; fileRef = 44A499031B0AD0C1002C94E7 /* FireTVCapabilityMixin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 44A499061B0AD0C1002C94E7 /* FireTVCapabilityMixin.m in Sources */ = {isa = PBXBuildFile; fileRef = 44A499041B0AD0C1002C94E7 /* FireTVCapabilityMixin.m */; }; 44A5518F1AC1DF4C001AF783 /* NetcastTVServiceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 44A5518E1AC1DF4C001AF783 /* NetcastTVServiceTests.m */; }; 44A551991AC338E0001AF783 /* WebOSTVServiceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 44A551981AC338E0001AF783 /* WebOSTVServiceTests.m */; }; - 44A5519F1AC36672001AF783 /* CommonMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 44A5519D1AC36672001AF783 /* CommonMacros.h */; }; - 44BCC3F61AB77F7D001BCDAA /* XMLWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 44BCC3F41AB77F7D001BCDAA /* XMLWriter.h */; }; + 44A5519F1AC36672001AF783 /* CommonMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 44A5519D1AC36672001AF783 /* CommonMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 44AD91741AF9A02300C23A71 /* FireTVServiceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AD91731AF9A02300C23A71 /* FireTVServiceTests.m */; }; + 44AD91771AFA7F1000C23A71 /* FireTVService.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AD91751AFA7F1000C23A71 /* FireTVService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 44AD91781AFA7F1000C23A71 /* FireTVService.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AD91761AFA7F1000C23A71 /* FireTVService.m */; }; + 44B11F521B16827C00F0156C /* OCMStubRecorder+SpectaAsync.m in Sources */ = {isa = PBXBuildFile; fileRef = 44B11F511B16827C00F0156C /* OCMStubRecorder+SpectaAsync.m */; }; + 44BCC3F61AB77F7D001BCDAA /* XMLWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 44BCC3F41AB77F7D001BCDAA /* XMLWriter.h */; settings = {ATTRIBUTES = (Public, ); }; }; 44BCC3F71AB77F7D001BCDAA /* XMLWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 44BCC3F51AB77F7D001BCDAA /* XMLWriter.m */; }; - 44C2CC941AB7948300B20E46 /* XMLWriter+ConvenienceMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 44C2CC921AB7948300B20E46 /* XMLWriter+ConvenienceMethods.h */; }; + 44C2CC941AB7948300B20E46 /* XMLWriter+ConvenienceMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 44C2CC921AB7948300B20E46 /* XMLWriter+ConvenienceMethods.h */; settings = {ATTRIBUTES = (Public, ); }; }; 44C2CC951AB7948300B20E46 /* XMLWriter+ConvenienceMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = 44C2CC931AB7948300B20E46 /* XMLWriter+ConvenienceMethods.m */; }; - 44C2CCA11AB7A33500B20E46 /* NSString+Common.h in Headers */ = {isa = PBXBuildFile; fileRef = 44C2CC9F1AB7A33500B20E46 /* NSString+Common.h */; }; + 44C2CCA11AB7A33500B20E46 /* NSString+Common.h in Headers */ = {isa = PBXBuildFile; fileRef = 44C2CC9F1AB7A33500B20E46 /* NSString+Common.h */; settings = {ATTRIBUTES = (Public, ); }; }; 44C2CCA21AB7A33500B20E46 /* NSString+Common.m in Sources */ = {isa = PBXBuildFile; fileRef = 44C2CCA01AB7A33500B20E46 /* NSString+Common.m */; }; + 44C390121B34DCAE00723388 /* DiscoveryManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 44C390111B34DCAE00723388 /* DiscoveryManagerTests.m */; }; + 44CF0E1A1B16ACD800B80FEF /* OCMArg+ArgumentCaptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 448B286A1B03DAEA00DFF18F /* OCMArg+ArgumentCaptor.m */; }; 44D88F891A71C4A8009D9608 /* ssdp_device_description_chromecast.xml in Resources */ = {isa = PBXBuildFile; fileRef = 44D88F7A1A71C4A8009D9608 /* ssdp_device_description_chromecast.xml */; }; 44D88F8A1A71C4A8009D9608 /* ssdp_device_description_firetv.xml in Resources */ = {isa = PBXBuildFile; fileRef = 44D88F7B1A71C4A8009D9608 /* ssdp_device_description_firetv.xml */; }; 44D88F8B1A71C4A8009D9608 /* ssdp_device_description_roku2.xml in Resources */ = {isa = PBXBuildFile; fileRef = 44D88F7C1A71C4A8009D9608 /* ssdp_device_description_roku2.xml */; }; @@ -83,6 +154,12 @@ 44D88F991A71DB15009D9608 /* ssdp_device_description_dlna_root_no_required_services.xml in Resources */ = {isa = PBXBuildFile; fileRef = 44D88F981A71DB15009D9608 /* ssdp_device_description_dlna_root_no_required_services.xml */; }; 44D8F7D21AB224BB00559FE3 /* ssdp_device_description_lg_speaker.xml in Resources */ = {isa = PBXBuildFile; fileRef = 44D8F7D11AB223BF00559FE3 /* ssdp_device_description_lg_speaker.xml */; }; 44D8F7DA1AB27B4800559FE3 /* NSInvocation+ObjectGetter.m in Sources */ = {isa = PBXBuildFile; fileRef = 44D8F7D91AB27B4800559FE3 /* NSInvocation+ObjectGetter.m */; }; + 44D90AA91B06AA9E00A5CF2A /* AppStateChangeNotifierTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 44D90AA81B06AA9E00A5CF2A /* AppStateChangeNotifierTests.m */; }; + 44D90AAC1B06B26C00A5CF2A /* AppStateChangeNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 44D90AAA1B06B26C00A5CF2A /* AppStateChangeNotifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 44D90AAD1B06B26C00A5CF2A /* AppStateChangeNotifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 44D90AAB1B06B26C00A5CF2A /* AppStateChangeNotifier.m */; }; + 44E98F5F1B1E63570043BC70 /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44E98F5D1B1E63570043BC70 /* OCMock.framework */; }; + 44E98F601B1E63570043BC70 /* OHHTTPStubs.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44E98F5E1B1E63570043BC70 /* OHHTTPStubs.framework */; }; + 44E98F971B1E72DF0043BC70 /* the-san-francisco-peaks-of-flagstaff-718x544.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 44E98F961B1E72D80043BC70 /* the-san-francisco-peaks-of-flagstaff-718x544.jpg */; }; 44EF618B1A12DC7E00CF344C /* ConnectSDK-Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = EA5FB79E199AEC550057B4B4 /* ConnectSDK-Prefix.pch */; }; 44EF618D1A12E02700CF344C /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA61EBF118FE48EF00D75696 /* MobileCoreServices.framework */; }; 44EF618F1A12E0A400CF344C /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 44EF618E1A12E0A400CF344C /* libz.dylib */; }; @@ -92,7 +169,7 @@ 44EF619B1A12E23200CF344C /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 44EF619A1A12E23200CF344C /* libicucore.dylib */; }; 44EF61A41A12FC8800CF344C /* SSDPDiscoveryProviderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 44EF61A31A12FC8800CF344C /* SSDPDiscoveryProviderTests.m */; }; BB9F706B1155B806AFBF3336 /* DLNAHTTPServer.m in Sources */ = {isa = PBXBuildFile; fileRef = BB9F703F509283F37E26C0B4 /* DLNAHTTPServer.m */; }; - BB9F712900733DE480F64D8E /* DLNAHTTPServer.h in Headers */ = {isa = PBXBuildFile; fileRef = BB9F7271D17DCAE1C615A59A /* DLNAHTTPServer.h */; }; + BB9F712900733DE480F64D8E /* DLNAHTTPServer.h in Headers */ = {isa = PBXBuildFile; fileRef = BB9F7271D17DCAE1C615A59A /* DLNAHTTPServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; BB9F726F85973936620CDADD /* MediaInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BB9F735CB760F4387DDA84B4 /* MediaInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; BB9F776F4924E08D116738B1 /* ImageInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = BB9F7AF5170CE02632778263 /* ImageInfo.m */; }; BB9F7AD33329FD4AC66C2D12 /* ImageInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BB9F71B68553DCA74ED1C43E /* ImageInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -272,6 +349,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 44166C571B4203880052F9EC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EA61EB0818FE485B00D75696 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EA61EB0F18FE485B00D75696; + remoteInfo = ConnectSDK; + }; 448085811A12A7BE00E13938 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = EA61EB0818FE485B00D75696 /* Project object */; @@ -279,6 +363,13 @@ remoteGlobalIDString = EA61EB0F18FE485B00D75696; remoteInfo = ConnectSDK; }; + 449A37091B0FDC1C00E47DAC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EA61EB0818FE485B00D75696 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EA61EB0F18FE485B00D75696; + remoteInfo = ConnectSDK; + }; EECAED56193F612100D31F61 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = EA61EB0818FE485B00D75696 /* Project object */; @@ -304,16 +395,33 @@ 0F446CC11A6D8353000BB1C0 /* PlayListControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlayListControl.h; sourceTree = ""; }; 0F446CC71A6D924D000BB1C0 /* MediaLaunchObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaLaunchObject.h; sourceTree = ""; }; 0F446CC81A6D924D000BB1C0 /* MediaLaunchObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MediaLaunchObject.m; sourceTree = ""; }; + 146A7D1A1B2896C300260441 /* FireTVIntegrationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FireTVIntegrationTests.m; sourceTree = ""; }; 440A031C1A854EDE0007E3D3 /* WebOSTVServiceSocketClientTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebOSTVServiceSocketClientTests.m; sourceTree = ""; }; 440A031E1A85536A0007E3D3 /* WebOSTVServiceSocketClient_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebOSTVServiceSocketClient_Private.h; sourceTree = ""; }; + 44166C501B4203880052F9EC /* ConnectSDKAcceptanceTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ConnectSDKAcceptanceTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 44166C531B4203880052F9EC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 441C9ED31B3DBCB200F912D5 /* SubscriptionDeduplicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubscriptionDeduplicator.h; sourceTree = ""; }; + 441C9ED41B3DBCB200F912D5 /* SubscriptionDeduplicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SubscriptionDeduplicator.m; sourceTree = ""; }; + 441C9EFE1B3DD8C500F912D5 /* SubscriptionDeduplicatorTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SubscriptionDeduplicatorTests.m; sourceTree = ""; }; + 441FE0ED1B1528D0006C47CE /* EXPMatchers+matchRegex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "EXPMatchers+matchRegex.h"; sourceTree = ""; }; + 441FE0EE1B1528D0006C47CE /* EXPMatchers+matchRegex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "EXPMatchers+matchRegex.m"; sourceTree = ""; }; 44291C481A6705E400280E5C /* DLNAHTTPServer_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DLNAHTTPServer_Private.h; sourceTree = ""; }; 44291C511A68B4C000280E5C /* SSDPDiscoveryProvider_FilteringTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SSDPDiscoveryProvider_FilteringTests.m; sourceTree = ""; }; 442B9A431A153F240053AE51 /* SSDPDiscoveryProvider_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSDPDiscoveryProvider_Private.h; sourceTree = ""; }; - 442B9A481A16F61E0053AE51 /* OCMock.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = OCMock.framework; sourceTree = ""; }; - 442B9A4F1A16F6F00053AE51 /* OHHTTPStubs.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = OHHTTPStubs.framework; sourceTree = ""; }; 443063BF1A4210F0007779DA /* AirPlayServiceHTTPKeepAlive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AirPlayServiceHTTPKeepAlive.h; sourceTree = ""; }; 443063C01A4210F0007779DA /* AirPlayServiceHTTPKeepAlive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AirPlayServiceHTTPKeepAlive.m; sourceTree = ""; }; + 44316EF31AF2EBF5000FE655 /* AmazonFling.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AmazonFling.framework; sourceTree = ""; }; + 44316EF41AF2EBF5000FE655 /* Bolts.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Bolts.framework; sourceTree = ""; }; + 44316EFC1AF2F04B000FE655 /* FireTVDiscoveryProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FireTVDiscoveryProvider.h; sourceTree = ""; }; + 44316EFD1AF2F04B000FE655 /* FireTVDiscoveryProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FireTVDiscoveryProvider.m; sourceTree = ""; }; + 44316F011AF2F09B000FE655 /* FireTVDiscoveryProviderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FireTVDiscoveryProviderTests.m; sourceTree = ""; }; + 44316F051AF2F9AD000FE655 /* libc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.dylib"; path = "usr/lib/libc++.dylib"; sourceTree = SDKROOT; }; + 44316F071AF2F9BF000FE655 /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; + 44316F251AF3F17A000FE655 /* OCMock.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = OCMock.framework; sourceTree = ""; }; + 44316F271AF3F17A000FE655 /* OHHTTPStubs.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = OHHTTPStubs.framework; sourceTree = ""; }; 4433F3DE1A421750008D9A04 /* AirPlayServiceHTTPKeepAliveTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AirPlayServiceHTTPKeepAliveTests.m; sourceTree = ""; }; + 444287C81B055E0C00B1F875 /* XCTestCase+TaskTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "XCTestCase+TaskTests.h"; sourceTree = ""; }; + 444287C91B055E0C00B1F875 /* XCTestCase+TaskTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "XCTestCase+TaskTests.m"; sourceTree = ""; }; 44758BBA1AE6C06200EC43A6 /* AirPlayServiceHTTPTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AirPlayServiceHTTPTests.m; sourceTree = ""; }; 44758BBC1AE6C6E300EC43A6 /* AirPlayServiceHTTP_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AirPlayServiceHTTP_Private.h; sourceTree = ""; }; 44758BC91AE7070500EC43A6 /* airplay_playbackinfo_ff.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = airplay_playbackinfo_ff.json; sourceTree = ""; }; @@ -321,14 +429,32 @@ 44758BCB1AE7070500EC43A6 /* airplay_playbackinfo_paused.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = airplay_playbackinfo_paused.json; sourceTree = ""; }; 44758BCC1AE7070500EC43A6 /* airplay_playbackinfo_playing.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = airplay_playbackinfo_playing.json; sourceTree = ""; }; 44758BCD1AE7070600EC43A6 /* airplay_playbackinfo_rewind.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = airplay_playbackinfo_rewind.json; sourceTree = ""; }; + 447F63431B14FDC600699843 /* DLNAServiceAcceptanceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DLNAServiceAcceptanceTests.m; sourceTree = ""; }; + 447F63451B15000800699843 /* ConnectSDKIntegrationTests-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ConnectSDKIntegrationTests-Prefix.pch"; sourceTree = ""; }; 4480857A1A12A7BE00E13938 /* ConnectSDKTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ConnectSDKTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 4480857D1A12A7BE00E13938 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 4480857E1A12A7BE00E13938 /* ConnectSDKDefaultPlatformsTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ConnectSDKDefaultPlatformsTests.m; sourceTree = ""; }; 448414F71AEB27F400124EE9 /* OCMStubRecorder+XCTestExpectation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OCMStubRecorder+XCTestExpectation.h"; sourceTree = ""; }; 448414F81AEB27F400124EE9 /* OCMStubRecorder+XCTestExpectation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "OCMStubRecorder+XCTestExpectation.m"; sourceTree = ""; }; 4485140C1A02FC3200D66710 /* GoogleCast.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = GoogleCast.framework; sourceTree = ""; }; + 448B28691B03DAEA00DFF18F /* OCMArg+ArgumentCaptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OCMArg+ArgumentCaptor.h"; sourceTree = ""; }; + 448B286A1B03DAEA00DFF18F /* OCMArg+ArgumentCaptor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "OCMArg+ArgumentCaptor.m"; sourceTree = ""; }; + 448B286D1B041A3A00DFF18F /* FireTVMediaControlTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FireTVMediaControlTests.m; sourceTree = ""; }; + 448B286E1B041A3A00DFF18F /* FireTVMediaPlayerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FireTVMediaPlayerTests.m; sourceTree = ""; }; + 448B28721B041A5600DFF18F /* FireTVMediaControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FireTVMediaControl.h; sourceTree = ""; }; + 448B28731B041A5600DFF18F /* FireTVMediaControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FireTVMediaControl.m; sourceTree = ""; }; + 448B28741B041A5600DFF18F /* FireTVMediaPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FireTVMediaPlayer.h; sourceTree = ""; }; + 448B28751B041A5600DFF18F /* FireTVMediaPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FireTVMediaPlayer.m; sourceTree = ""; }; 448F36C41A1BD64200536649 /* ZeroConfDiscoveryProviderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZeroConfDiscoveryProviderTests.m; sourceTree = ""; }; 448F36C61A1C16FE00536649 /* ZeroConfDiscoveryProvider_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ZeroConfDiscoveryProvider_Private.h; sourceTree = ""; }; + 4494262F1AF82F49006BAFF2 /* BlockRunner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockRunner.h; sourceTree = ""; }; + 449426321AF82F8E006BAFF2 /* BlockRunnerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BlockRunnerTests.m; sourceTree = ""; }; + 449426341AF83055006BAFF2 /* SynchronousBlockRunnerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SynchronousBlockRunnerTests.m; sourceTree = ""; }; + 449426361AF830A1006BAFF2 /* SynchronousBlockRunner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SynchronousBlockRunner.h; sourceTree = ""; }; + 449426371AF830A1006BAFF2 /* SynchronousBlockRunner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SynchronousBlockRunner.m; sourceTree = ""; }; + 4494263A1AF8353A006BAFF2 /* DispatchQueueBlockRunnerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DispatchQueueBlockRunnerTests.m; sourceTree = ""; }; + 4494263C1AF83588006BAFF2 /* DispatchQueueBlockRunner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DispatchQueueBlockRunner.h; sourceTree = ""; }; + 4494263D1AF83588006BAFF2 /* DispatchQueueBlockRunner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DispatchQueueBlockRunner.m; sourceTree = ""; }; + 449426401AF847D1006BAFF2 /* FireTVDiscoveryProvider_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FireTVDiscoveryProvider_Private.h; sourceTree = ""; }; 4498D98A1A659F43008C0B72 /* NSDictionary+KeyPredicateSearch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+KeyPredicateSearch.h"; sourceTree = ""; }; 4498D98B1A659F43008C0B72 /* NSDictionary+KeyPredicateSearch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+KeyPredicateSearch.m"; sourceTree = ""; }; 4498D98F1A65A1D7008C0B72 /* NSDictionary+KeyPredicateSearchTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+KeyPredicateSearchTests.m"; sourceTree = ""; }; @@ -345,16 +471,33 @@ 4498D9A41A66148F008C0B72 /* upnperror_response_xbox.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = upnperror_response_xbox.xml; sourceTree = ""; }; 4498D9A61A661500008C0B72 /* upnperror_response_sonos.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = upnperror_response_sonos.xml; sourceTree = ""; }; 4498D9A81A66F027008C0B72 /* DLNAHTTPServerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DLNAHTTPServerTests.m; sourceTree = ""; }; + 449A37021B0FDC1C00E47DAC /* ConnectSDKIntegrationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ConnectSDKIntegrationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 449A37051B0FDC1C00E47DAC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 449A37101B0FE03400E47DAC /* Expecta.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Expecta.framework; sourceTree = ""; }; + 449A37111B0FE03400E47DAC /* Specta.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Specta.framework; sourceTree = ""; }; + 449CC26A1AF9458E0064F2F7 /* ServiceDescriptionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ServiceDescriptionTests.m; sourceTree = ""; }; + 44A0E1A51B3B2F5C00ADF95F /* WebOSWebAppSessionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebOSWebAppSessionTests.m; sourceTree = ""; }; + 44A499031B0AD0C1002C94E7 /* FireTVCapabilityMixin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FireTVCapabilityMixin.h; sourceTree = ""; }; + 44A499041B0AD0C1002C94E7 /* FireTVCapabilityMixin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FireTVCapabilityMixin.m; sourceTree = ""; }; 44A5518B1AC1D924001AF783 /* NetcastTVService_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NetcastTVService_Private.h; sourceTree = ""; }; 44A5518E1AC1DF4C001AF783 /* NetcastTVServiceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NetcastTVServiceTests.m; sourceTree = ""; }; 44A551981AC338E0001AF783 /* WebOSTVServiceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebOSTVServiceTests.m; sourceTree = ""; }; 44A5519D1AC36672001AF783 /* CommonMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommonMacros.h; sourceTree = ""; }; + 44AD91731AF9A02300C23A71 /* FireTVServiceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FireTVServiceTests.m; sourceTree = ""; }; + 44AD91751AFA7F1000C23A71 /* FireTVService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FireTVService.h; sourceTree = ""; }; + 44AD91761AFA7F1000C23A71 /* FireTVService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FireTVService.m; sourceTree = ""; }; + 44B11F501B16827C00F0156C /* OCMStubRecorder+SpectaAsync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OCMStubRecorder+SpectaAsync.h"; sourceTree = ""; }; + 44B11F511B16827C00F0156C /* OCMStubRecorder+SpectaAsync.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "OCMStubRecorder+SpectaAsync.m"; sourceTree = ""; }; + 44B4C5B71B0E96E80024F229 /* FireTVAcceptanceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FireTVAcceptanceTests.m; sourceTree = ""; }; 44BCC3F41AB77F7D001BCDAA /* XMLWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLWriter.h; sourceTree = ""; }; 44BCC3F51AB77F7D001BCDAA /* XMLWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLWriter.m; sourceTree = ""; }; 44C2CC921AB7948300B20E46 /* XMLWriter+ConvenienceMethods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "XMLWriter+ConvenienceMethods.h"; sourceTree = ""; }; 44C2CC931AB7948300B20E46 /* XMLWriter+ConvenienceMethods.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "XMLWriter+ConvenienceMethods.m"; sourceTree = ""; }; 44C2CC9F1AB7A33500B20E46 /* NSString+Common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+Common.h"; sourceTree = ""; }; 44C2CCA01AB7A33500B20E46 /* NSString+Common.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Common.m"; sourceTree = ""; }; + 44C3900E1B34A7B500723388 /* WebOSWebAppSession_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebOSWebAppSession_Private.h; sourceTree = ""; }; + 44C390111B34DCAE00723388 /* DiscoveryManagerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DiscoveryManagerTests.m; sourceTree = ""; }; + 44D2ACD21B30B07700CE4A3A /* DiscoveryManager_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiscoveryManager_Private.h; sourceTree = ""; }; 44D88F7A1A71C4A8009D9608 /* ssdp_device_description_chromecast.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ssdp_device_description_chromecast.xml; sourceTree = ""; }; 44D88F7B1A71C4A8009D9608 /* ssdp_device_description_firetv.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ssdp_device_description_firetv.xml; sourceTree = ""; }; 44D88F7C1A71C4A8009D9608 /* ssdp_device_description_roku2.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ssdp_device_description_roku2.xml; sourceTree = ""; }; @@ -373,6 +516,14 @@ 44D8F7D11AB223BF00559FE3 /* ssdp_device_description_lg_speaker.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ssdp_device_description_lg_speaker.xml; sourceTree = ""; }; 44D8F7D81AB27B4800559FE3 /* NSInvocation+ObjectGetter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSInvocation+ObjectGetter.h"; sourceTree = ""; }; 44D8F7D91AB27B4800559FE3 /* NSInvocation+ObjectGetter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSInvocation+ObjectGetter.m"; sourceTree = ""; }; + 44D90AA81B06AA9E00A5CF2A /* AppStateChangeNotifierTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppStateChangeNotifierTests.m; sourceTree = ""; }; + 44D90AAA1B06B26C00A5CF2A /* AppStateChangeNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppStateChangeNotifier.h; sourceTree = ""; }; + 44D90AAB1B06B26C00A5CF2A /* AppStateChangeNotifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppStateChangeNotifier.m; sourceTree = ""; }; + 44E98F5D1B1E63570043BC70 /* OCMock.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = OCMock.framework; sourceTree = ""; }; + 44E98F5E1B1E63570043BC70 /* OHHTTPStubs.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = OHHTTPStubs.framework; sourceTree = ""; }; + 44E98F951B1E72D80043BC70 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 44E98F961B1E72D80043BC70 /* the-san-francisco-peaks-of-flagstaff-718x544.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "the-san-francisco-peaks-of-flagstaff-718x544.jpg"; sourceTree = ""; }; + 44E98F991B1E733D0043BC70 /* AirPlayServiceAcceptanceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AirPlayServiceAcceptanceTests.m; sourceTree = ""; }; 44EF618C1A12DF2D00CF344C /* ConnectSDKTests-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ConnectSDKTests-Prefix.pch"; sourceTree = ""; }; 44EF618E1A12E0A400CF344C /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 44EF61971A12E1C800CF344C /* MediaAccessibility.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaAccessibility.framework; path = System/Library/Frameworks/MediaAccessibility.framework; sourceTree = SDKROOT; }; @@ -563,22 +714,68 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 44166C4D1B4203880052F9EC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 44166C641B420D960052F9EC /* GoogleCast.framework in Frameworks */, + 44166C601B420C2D0052F9EC /* OCMock.framework in Frameworks */, + 44166C631B420C860052F9EC /* MobileCoreServices.framework in Frameworks */, + 44166C611B420C4E0052F9EC /* SystemConfiguration.framework in Frameworks */, + 44166C561B4203880052F9EC /* libConnectSDK.a in Frameworks */, + 44166C681B420DB50052F9EC /* AdSupport.framework in Frameworks */, + 44166C661B420DA60052F9EC /* Bolts.framework in Frameworks */, + 44166C5F1B420C270052F9EC /* Specta.framework in Frameworks */, + 44166C671B420DAD0052F9EC /* libc++.dylib in Frameworks */, + 44166C5E1B420C270052F9EC /* Expecta.framework in Frameworks */, + 44166C691B420DC20052F9EC /* libicucore.dylib in Frameworks */, + 44166C651B420DA60052F9EC /* AmazonFling.framework in Frameworks */, + 44166C621B420C550052F9EC /* libz.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 448085771A12A7BE00E13938 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 44316F081AF2F9BF000FE655 /* AdSupport.framework in Frameworks */, + 44316F061AF2F9AD000FE655 /* libc++.dylib in Frameworks */, + 44E98F601B1E63570043BC70 /* OHHTTPStubs.framework in Frameworks */, + 44E98F5F1B1E63570043BC70 /* OCMock.framework in Frameworks */, 448085801A12A7BE00E13938 /* libConnectSDK.a in Frameworks */, + 44316F031AF2F77C000FE655 /* AmazonFling.framework in Frameworks */, 44EF61951A12E18D00CF344C /* GoogleCast.framework in Frameworks */, 44EF61981A12E1C800CF344C /* MediaAccessibility.framework in Frameworks */, - 442B9A4D1A16F6260053AE51 /* OCMock.framework in Frameworks */, 44EF618D1A12E02700CF344C /* MobileCoreServices.framework in Frameworks */, 44EF61921A12E10500CF344C /* SystemConfiguration.framework in Frameworks */, - 442B9A501A16F6F00053AE51 /* OHHTTPStubs.framework in Frameworks */, + 44316F041AF2F936000FE655 /* Bolts.framework in Frameworks */, 44EF619B1A12E23200CF344C /* libicucore.dylib in Frameworks */, + 44316F2B1AF3F17A000FE655 /* OHHTTPStubs.framework in Frameworks */, + 44316F291AF3F17A000FE655 /* OCMock.framework in Frameworks */, 44EF618F1A12E0A400CF344C /* libz.dylib in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; + 449A36FF1B0FDC1C00E47DAC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 449A37161B0FE33100E47DAC /* libz.dylib in Frameworks */, + 449A37151B0FE32E00E47DAC /* libicucore.dylib in Frameworks */, + 449A37141B0FE30700E47DAC /* OCMock.framework in Frameworks */, + 449A37081B0FDC1C00E47DAC /* libConnectSDK.a in Frameworks */, + 449A37191B0FE37B00E47DAC /* libc++.dylib in Frameworks */, + 449A37131B0FE03400E47DAC /* Specta.framework in Frameworks */, + 447F63411B14F35900699843 /* GoogleCast.framework in Frameworks */, + 449A371A1B0FE38700E47DAC /* SystemConfiguration.framework in Frameworks */, + 449A371B1B0FE39700E47DAC /* AdSupport.framework in Frameworks */, + 449A37121B0FE03400E47DAC /* Expecta.framework in Frameworks */, + 449A371C1B0FE3A500E47DAC /* MobileCoreServices.framework in Frameworks */, + 449A37171B0FE36E00E47DAC /* Bolts.framework in Frameworks */, + 449A37181B0FE37100E47DAC /* AmazonFling.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; EA61EB0D18FE485B00D75696 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -594,26 +791,103 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 442B9A471A16F61E0053AE51 /* OCMock */ = { + 44166C511B4203880052F9EC /* ConnectSDKAcceptanceTests */ = { + isa = PBXGroup; + children = ( + 44E98F991B1E733D0043BC70 /* AirPlayServiceAcceptanceTests.m */, + 447F63431B14FDC600699843 /* DLNAServiceAcceptanceTests.m */, + 44166C521B4203880052F9EC /* Supporting Files */, + ); + path = ConnectSDKAcceptanceTests; + sourceTree = ""; + }; + 44166C521B4203880052F9EC /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 44166C531B4203880052F9EC /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 44166C6D1B420E830052F9EC /* FireTVAcceptanceTests */ = { isa = PBXGroup; children = ( - 442B9A481A16F61E0053AE51 /* OCMock.framework */, + 44B4C5B71B0E96E80024F229 /* FireTVAcceptanceTests.m */, ); - path = OCMock; + path = FireTVAcceptanceTests; sourceTree = ""; }; - 442B9A491A16F61E0053AE51 /* OHHTTPStubs */ = { + 44316EED1AF2EBF5000FE655 /* firetv */ = { isa = PBXGroup; children = ( - 442B9A4F1A16F6F00053AE51 /* OHHTTPStubs.framework */, + 448B28711B041A5600DFF18F /* Capabilities */, + 44316EFB1AF2F01F000FE655 /* Discovery */, + 44166C6D1B420E830052F9EC /* FireTVAcceptanceTests */, + 449A36FD1B0FD96200E47DAC /* FireTVIntegrationTests */, + 44316EEF1AF2EBF5000FE655 /* FireTVTests */, + 44316EF11AF2EBF5000FE655 /* Frameworks */, + 44AD91751AFA7F1000C23A71 /* FireTVService.h */, + 44AD91761AFA7F1000C23A71 /* FireTVService.m */, + ); + path = firetv; + sourceTree = ""; + }; + 44316EEF1AF2EBF5000FE655 /* FireTVTests */ = { + isa = PBXGroup; + children = ( + 448B286C1B041A3A00DFF18F /* Capabilities */, + 44316F001AF2F09B000FE655 /* Discovery */, + 44AD91731AF9A02300C23A71 /* FireTVServiceTests.m */, + 444287C81B055E0C00B1F875 /* XCTestCase+TaskTests.h */, + 444287C91B055E0C00B1F875 /* XCTestCase+TaskTests.m */, + ); + path = FireTVTests; + sourceTree = ""; + }; + 44316EF11AF2EBF5000FE655 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 44316EF31AF2EBF5000FE655 /* AmazonFling.framework */, + 44316EF41AF2EBF5000FE655 /* Bolts.framework */, + 44316F071AF2F9BF000FE655 /* AdSupport.framework */, + 44316F051AF2F9AD000FE655 /* libc++.dylib */, ); - path = OHHTTPStubs; + path = Frameworks; + sourceTree = ""; + }; + 44316EFB1AF2F01F000FE655 /* Discovery */ = { + isa = PBXGroup; + children = ( + 44316EFC1AF2F04B000FE655 /* FireTVDiscoveryProvider.h */, + 449426401AF847D1006BAFF2 /* FireTVDiscoveryProvider_Private.h */, + 44316EFD1AF2F04B000FE655 /* FireTVDiscoveryProvider.m */, + ); + path = Discovery; + sourceTree = ""; + }; + 44316F001AF2F09B000FE655 /* Discovery */ = { + isa = PBXGroup; + children = ( + 44316F011AF2F09B000FE655 /* FireTVDiscoveryProviderTests.m */, + ); + path = Discovery; + sourceTree = ""; + }; + 44316F231AF3F17A000FE655 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 44316F251AF3F17A000FE655 /* OCMock.framework */, + 44316F271AF3F17A000FE655 /* OHHTTPStubs.framework */, + ); + path = Frameworks; sourceTree = ""; }; 4433F3DC1A421733008D9A04 /* Services */ = { isa = PBXGroup; children = ( + 449CC2691AF945800064F2F7 /* Config */, 4433F3DD1A421733008D9A04 /* Helpers */, + 44A0E1A41B3B2F5C00ADF95F /* Sessions */, 4498D9911A65B69F008C0B72 /* DLNAServiceTests.m */, 44A5518E1AC1DF4C001AF783 /* NetcastTVServiceTests.m */, 44A551981AC338E0001AF783 /* WebOSTVServiceTests.m */, @@ -658,6 +932,9 @@ 4480857B1A12A7BE00E13938 /* ConnectSDKTests */ = { isa = PBXGroup; children = ( + 44316F231AF3F17A000FE655 /* Frameworks */, + 448B28691B03DAEA00DFF18F /* OCMArg+ArgumentCaptor.h */, + 448B286A1B03DAEA00DFF18F /* OCMArg+ArgumentCaptor.m */, 448414F71AEB27F400124EE9 /* OCMStubRecorder+XCTestExpectation.h */, 448414F81AEB27F400124EE9 /* OCMStubRecorder+XCTestExpectation.m */, 44D8F7D81AB27B4800559FE3 /* NSInvocation+ObjectGetter.h */, @@ -667,27 +944,121 @@ 4498D98E1A65A1B7008C0B72 /* Helpers */, 4433F3DC1A421733008D9A04 /* Services */, 44EF618C1A12DF2D00CF344C /* ConnectSDKTests-Prefix.pch */, - 4480857C1A12A7BE00E13938 /* Supporting Files */, + 44E98F941B1E72D80043BC70 /* SupportingFiles */, ); path = ConnectSDKTests; sourceTree = ""; }; - 4480857C1A12A7BE00E13938 /* Supporting Files */ = { + 448B286C1B041A3A00DFF18F /* Capabilities */ = { isa = PBXGroup; children = ( - 4480857D1A12A7BE00E13938 /* Info.plist */, + 448B286D1B041A3A00DFF18F /* FireTVMediaControlTests.m */, + 448B286E1B041A3A00DFF18F /* FireTVMediaPlayerTests.m */, ); - name = "Supporting Files"; + path = Capabilities; + sourceTree = ""; + }; + 448B28711B041A5600DFF18F /* Capabilities */ = { + isa = PBXGroup; + children = ( + 44A499031B0AD0C1002C94E7 /* FireTVCapabilityMixin.h */, + 44A499041B0AD0C1002C94E7 /* FireTVCapabilityMixin.m */, + 448B28721B041A5600DFF18F /* FireTVMediaControl.h */, + 448B28731B041A5600DFF18F /* FireTVMediaControl.m */, + 448B28741B041A5600DFF18F /* FireTVMediaPlayer.h */, + 448B28751B041A5600DFF18F /* FireTVMediaPlayer.m */, + ); + path = Capabilities; + sourceTree = ""; + }; + 4494262E1AF82F28006BAFF2 /* BlockRunner */ = { + isa = PBXGroup; + children = ( + 4494262F1AF82F49006BAFF2 /* BlockRunner.h */, + 4494263C1AF83588006BAFF2 /* DispatchQueueBlockRunner.h */, + 4494263D1AF83588006BAFF2 /* DispatchQueueBlockRunner.m */, + 449426361AF830A1006BAFF2 /* SynchronousBlockRunner.h */, + 449426371AF830A1006BAFF2 /* SynchronousBlockRunner.m */, + ); + path = BlockRunner; + sourceTree = ""; + }; + 449426311AF82F75006BAFF2 /* BlockRunner */ = { + isa = PBXGroup; + children = ( + 449426321AF82F8E006BAFF2 /* BlockRunnerTests.m */, + 449426341AF83055006BAFF2 /* SynchronousBlockRunnerTests.m */, + 4494263A1AF8353A006BAFF2 /* DispatchQueueBlockRunnerTests.m */, + ); + path = BlockRunner; sourceTree = ""; }; 4498D98E1A65A1B7008C0B72 /* Helpers */ = { isa = PBXGroup; children = ( + 449426311AF82F75006BAFF2 /* BlockRunner */, + 44D90AA81B06AA9E00A5CF2A /* AppStateChangeNotifierTests.m */, 4498D98F1A65A1D7008C0B72 /* NSDictionary+KeyPredicateSearchTests.m */, + 441C9EFE1B3DD8C500F912D5 /* SubscriptionDeduplicatorTests.m */, ); path = Helpers; sourceTree = ""; }; + 449A36FD1B0FD96200E47DAC /* FireTVIntegrationTests */ = { + isa = PBXGroup; + children = ( + 146A7D1A1B2896C300260441 /* FireTVIntegrationTests.m */, + ); + path = FireTVIntegrationTests; + sourceTree = ""; + }; + 449A37031B0FDC1C00E47DAC /* ConnectSDKIntegrationTests */ = { + isa = PBXGroup; + children = ( + 449A370F1B0FE03400E47DAC /* Frameworks */, + 441FE0ED1B1528D0006C47CE /* EXPMatchers+matchRegex.h */, + 441FE0EE1B1528D0006C47CE /* EXPMatchers+matchRegex.m */, + 44B11F501B16827C00F0156C /* OCMStubRecorder+SpectaAsync.h */, + 44B11F511B16827C00F0156C /* OCMStubRecorder+SpectaAsync.m */, + 447F63451B15000800699843 /* ConnectSDKIntegrationTests-Prefix.pch */, + 449A37041B0FDC1C00E47DAC /* Supporting Files */, + ); + path = ConnectSDKIntegrationTests; + sourceTree = ""; + }; + 449A37041B0FDC1C00E47DAC /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 449A37051B0FDC1C00E47DAC /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 449A370F1B0FE03400E47DAC /* Frameworks */ = { + isa = PBXGroup; + children = ( + 449A37101B0FE03400E47DAC /* Expecta.framework */, + 449A37111B0FE03400E47DAC /* Specta.framework */, + ); + path = Frameworks; + sourceTree = ""; + }; + 449CC2691AF945800064F2F7 /* Config */ = { + isa = PBXGroup; + children = ( + 449CC26A1AF9458E0064F2F7 /* ServiceDescriptionTests.m */, + ); + path = Config; + sourceTree = ""; + }; + 44A0E1A41B3B2F5C00ADF95F /* Sessions */ = { + isa = PBXGroup; + children = ( + 44A0E1A51B3B2F5C00ADF95F /* WebOSWebAppSessionTests.m */, + ); + path = Sessions; + sourceTree = ""; + }; 44BCC3F31AB77F7D001BCDAA /* xswi */ = { isa = PBXGroup; children = ( @@ -744,10 +1115,20 @@ path = webos; sourceTree = ""; }; + 44E98F941B1E72D80043BC70 /* SupportingFiles */ = { + isa = PBXGroup; + children = ( + 44E98F951B1E72D80043BC70 /* Info.plist */, + 44E98F961B1E72D80043BC70 /* the-san-francisco-peaks-of-flagstaff-718x544.jpg */, + ); + path = SupportingFiles; + sourceTree = ""; + }; 44EF61A11A12FC5000CF344C /* Discovery */ = { isa = PBXGroup; children = ( 44EF61A21A12FC5000CF344C /* Providers */, + 44C390111B34DCAE00723388 /* DiscoveryManagerTests.m */, ); path = Discovery; sourceTree = ""; @@ -784,6 +1165,8 @@ EA5FB7B9199AEC550057B4B4 /* Frameworks */, EA5FB802199AEC550057B4B4 /* Helpers */, EA5FB816199AEC550057B4B4 /* Services */, + 44166C511B4203880052F9EC /* ConnectSDKAcceptanceTests */, + 449A37031B0FDC1C00E47DAC /* ConnectSDKIntegrationTests */, 4480857B1A12A7BE00E13938 /* ConnectSDKTests */, ); path = core; @@ -811,6 +1194,7 @@ EA5FB7AA199AEC550057B4B4 /* CapabilityFilter.h */, EA5FB7AB199AEC550057B4B4 /* CapabilityFilter.m */, EA5FB7AC199AEC550057B4B4 /* DiscoveryManager.h */, + 44D2ACD21B30B07700CE4A3A /* DiscoveryManager_Private.h */, EA5FB7AD199AEC550057B4B4 /* DiscoveryManager.m */, EA5FB7AE199AEC550057B4B4 /* DiscoveryManagerDelegate.h */, EA5FB7AF199AEC550057B4B4 /* DiscoveryProvider.h */, @@ -840,8 +1224,6 @@ EA5FB7BA199AEC550057B4B4 /* asi-http-request */, EA5FB7D5199AEC550057B4B4 /* GCDWebServer */, EA5FB7F6199AEC550057B4B4 /* objc-guid */, - 442B9A471A16F61E0053AE51 /* OCMock */, - 442B9A491A16F61E0053AE51 /* OHHTTPStubs */, EA5FB7FA199AEC550057B4B4 /* SocketRocket */, EA5FB7FE199AEC550057B4B4 /* XMLReader */, 44BCC3F31AB77F7D001BCDAA /* xswi */, @@ -991,6 +1373,7 @@ EA5FB802199AEC550057B4B4 /* Helpers */ = { isa = PBXGroup; children = ( + 4494262E1AF82F28006BAFF2 /* BlockRunner */, EA5FB803199AEC550057B4B4 /* AppInfo.h */, EA5FB804199AEC550057B4B4 /* AppInfo.m */, EA5FB805199AEC550057B4B4 /* ChannelInfo.h */, @@ -1021,6 +1404,10 @@ 44C2CC9F1AB7A33500B20E46 /* NSString+Common.h */, 44C2CCA01AB7A33500B20E46 /* NSString+Common.m */, 44A5519D1AC36672001AF783 /* CommonMacros.h */, + 44D90AAA1B06B26C00A5CF2A /* AppStateChangeNotifier.h */, + 44D90AAB1B06B26C00A5CF2A /* AppStateChangeNotifier.m */, + 441C9ED31B3DBCB200F912D5 /* SubscriptionDeduplicator.h */, + 441C9ED41B3DBCB200F912D5 /* SubscriptionDeduplicator.m */, ); path = Helpers; sourceTree = ""; @@ -1140,6 +1527,7 @@ EA5FB853199AEC550057B4B4 /* WebAppSession.m */, EA5FB854199AEC550057B4B4 /* WebAppSessionDelegate.h */, EA5FB855199AEC550057B4B4 /* WebOSWebAppSession.h */, + 44C3900E1B34A7B500723388 /* WebOSWebAppSession_Private.h */, EA5FB856199AEC550057B4B4 /* WebOSWebAppSession.m */, ); path = Sessions; @@ -1148,6 +1536,7 @@ EA5FB859199AEC550057B4B4 /* modules */ = { isa = PBXGroup; children = ( + 44316EED1AF2EBF5000FE655 /* firetv */, EA5FB85A199AEC550057B4B4 /* google-cast */, ); path = modules; @@ -1183,6 +1572,8 @@ children = ( EA61EB1018FE485B00D75696 /* libConnectSDK.a */, 4480857A1A12A7BE00E13938 /* ConnectSDKTests.xctest */, + 449A37021B0FDC1C00E47DAC /* ConnectSDKIntegrationTests.xctest */, + 44166C501B4203880052F9EC /* ConnectSDKAcceptanceTests.xctest */, ); name = Products; sourceTree = ""; @@ -1212,6 +1603,7 @@ files = ( EA5FB8D9199AEC560057B4B4 /* ToastControl.h in Headers */, 44C2CC941AB7948300B20E46 /* XMLWriter+ConvenienceMethods.h in Headers */, + 44316EFE1AF2F04B000FE655 /* FireTVDiscoveryProvider.h in Headers */, EA5FB8A9199AEC560057B4B4 /* GCDWebServerMultiPartFormRequest.h in Headers */, EA5FB891199AEC560057B4B4 /* CTASIHTTPRequestDelegate.h in Headers */, EA5FB8B9199AEC560057B4B4 /* CTXMLReader.h in Headers */, @@ -1221,6 +1613,7 @@ EA5FB8DB199AEC560057B4B4 /* VolumeControl.h in Headers */, EA5FB872199AEC550057B4B4 /* DefaultConnectableDeviceStore.h in Headers */, EA5FB8D5199AEC560057B4B4 /* MediaPlayer.h in Headers */, + 449426381AF830A1006BAFF2 /* SynchronousBlockRunner.h in Headers */, EA5FB907199AEC570057B4B4 /* WebOSWebAppSession.h in Headers */, EA5FB892199AEC560057B4B4 /* CTASIInputStream.h in Headers */, EA5FB8DC199AEC560057B4B4 /* WebAppLauncher.h in Headers */, @@ -1238,6 +1631,7 @@ EA5FB89F199AEC560057B4B4 /* GCDWebServerHTTPStatusCodes.h in Headers */, EA5FB8E4199AEC560057B4B4 /* NetcastTVServiceConfig.h in Headers */, EA5FB906199AEC570057B4B4 /* WebAppSessionDelegate.h in Headers */, + 44D90AAC1B06B26C00A5CF2A /* AppStateChangeNotifier.h in Headers */, EA5FB8DD199AEC560057B4B4 /* ServiceAsyncCommand.h in Headers */, EA5FB90B199AEC570057B4B4 /* CastDiscoveryProvider.h in Headers */, 0F446CC91A6D924D000BB1C0 /* MediaLaunchObject.h in Headers */, @@ -1247,6 +1641,7 @@ EA5FB8D1199AEC560057B4B4 /* ExternalInputControl.h in Headers */, EA5FB8AB199AEC560057B4B4 /* GCDWebServerURLEncodedFormRequest.h in Headers */, EA5FB911199AEC570057B4B4 /* CastWebAppSession.h in Headers */, + 441C9ED51B3DBCB200F912D5 /* SubscriptionDeduplicator.h in Headers */, EA5FB90F199AEC570057B4B4 /* CastServiceChannel.h in Headers */, EA5FB8CC199AEC560057B4B4 /* TextInputStatusInfo.h in Headers */, EA5FB88C199AEC560057B4B4 /* CTASIFormDataRequest.h in Headers */, @@ -1272,6 +1667,7 @@ EA5FB8D2199AEC560057B4B4 /* KeyControl.h in Headers */, EA5FB8A0199AEC560057B4B4 /* GCDWebServerPrivate.h in Headers */, EA5FB8F6199AEC570057B4B4 /* AirPlayServiceMirrored.h in Headers */, + 448B28781B041A5600DFF18F /* FireTVMediaPlayer.h in Headers */, EA5FB883199AEC550057B4B4 /* CTASIAuthenticationDialog.h in Headers */, EA5FB8A3199AEC560057B4B4 /* GCDWebServerResponse.h in Headers */, EA5FB86E199AEC550057B4B4 /* ConnectableDevice.h in Headers */, @@ -1284,6 +1680,7 @@ EA5FB894199AEC560057B4B4 /* CTASINetworkQueue.h in Headers */, EA5FB881199AEC550057B4B4 /* ZeroConfDiscoveryProvider.h in Headers */, EA5FB877199AEC550057B4B4 /* CapabilityFilter.h in Headers */, + 44A499051B0AD0C1002C94E7 /* FireTVCapabilityMixin.h in Headers */, EA5FB876199AEC550057B4B4 /* DevicePickerDelegate.h in Headers */, EA5FB879199AEC550057B4B4 /* DiscoveryManager.h in Headers */, EA5FB888199AEC560057B4B4 /* CTASIDataDecompressor.h in Headers */, @@ -1293,6 +1690,7 @@ EA5FB8EB199AEC570057B4B4 /* WebOSTVServiceConfig.h in Headers */, EA5FB8D0199AEC560057B4B4 /* Capability.h in Headers */, EA5FB8EF199AEC570057B4B4 /* DeviceServiceDelegate.h in Headers */, + 4494263E1AF83588006BAFF2 /* DispatchQueueBlockRunner.h in Headers */, EA5FB87C199AEC550057B4B4 /* DiscoveryProvider.h in Headers */, EA5FB8C7199AEC560057B4B4 /* JSONObjectCoding.h in Headers */, EA5FB8F8199AEC570057B4B4 /* WebOSTVServiceMouse.h in Headers */, @@ -1308,6 +1706,8 @@ EA5FB89D199AEC560057B4B4 /* GCDWebServerFunctions.h in Headers */, EA5FB8D8199AEC560057B4B4 /* TextInputControl.h in Headers */, EA5FB8C8199AEC560057B4B4 /* ProgramInfo.h in Headers */, + 449426301AF82F49006BAFF2 /* BlockRunner.h in Headers */, + 44AD91771AFA7F1000C23A71 /* FireTVService.h in Headers */, EA5FB87B199AEC550057B4B4 /* DiscoveryManagerDelegate.h in Headers */, EA5FB8A7199AEC560057B4B4 /* GCDWebServerFileRequest.h in Headers */, EA5FB8AF199AEC560057B4B4 /* GCDWebServerErrorResponse.h in Headers */, @@ -1319,6 +1719,7 @@ EA5F82F4199BDCD300B7302B /* ConnectSDK.h in Headers */, EA5F82F0199BDA2100B7302B /* ConnectSDKDefaultPlatforms.h in Headers */, BB9F726F85973936620CDADD /* MediaInfo.h in Headers */, + 448B28761B041A5600DFF18F /* FireTVMediaControl.h in Headers */, BB9F7AD33329FD4AC66C2D12 /* ImageInfo.h in Headers */, BB9F712900733DE480F64D8E /* DLNAHTTPServer.h in Headers */, ); @@ -1327,6 +1728,24 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + 44166C4F1B4203880052F9EC /* ConnectSDKAcceptanceTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 44166C5B1B4203880052F9EC /* Build configuration list for PBXNativeTarget "ConnectSDKAcceptanceTests" */; + buildPhases = ( + 44166C4C1B4203880052F9EC /* Sources */, + 44166C4D1B4203880052F9EC /* Frameworks */, + 44166C4E1B4203880052F9EC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 44166C581B4203880052F9EC /* PBXTargetDependency */, + ); + name = ConnectSDKAcceptanceTests; + productName = ConnectSDKAcceptanceTests; + productReference = 44166C501B4203880052F9EC /* ConnectSDKAcceptanceTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 448085791A12A7BE00E13938 /* ConnectSDKTests */ = { isa = PBXNativeTarget; buildConfigurationList = 448085851A12A7BE00E13938 /* Build configuration list for PBXNativeTarget "ConnectSDKTests" */; @@ -1345,6 +1764,24 @@ productReference = 4480857A1A12A7BE00E13938 /* ConnectSDKTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + 449A37011B0FDC1C00E47DAC /* ConnectSDKIntegrationTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 449A370B1B0FDC1C00E47DAC /* Build configuration list for PBXNativeTarget "ConnectSDKIntegrationTests" */; + buildPhases = ( + 449A36FE1B0FDC1C00E47DAC /* Sources */, + 449A36FF1B0FDC1C00E47DAC /* Frameworks */, + 449A37001B0FDC1C00E47DAC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 449A370A1B0FDC1C00E47DAC /* PBXTargetDependency */, + ); + name = ConnectSDKIntegrationTests; + productName = ConnectSDKIntegrationTests; + productReference = 449A37021B0FDC1C00E47DAC /* ConnectSDKIntegrationTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; EA61EB0F18FE485B00D75696 /* ConnectSDK */ = { isa = PBXNativeTarget; buildConfigurationList = EA61EB3318FE485B00D75696 /* Build configuration list for PBXNativeTarget "ConnectSDK" */; @@ -1373,9 +1810,15 @@ LastUpgradeCheck = 0510; ORGANIZATIONNAME = "LG Electronics"; TargetAttributes = { + 44166C4F1B4203880052F9EC = { + CreatedOnToolsVersion = 6.3.2; + }; 448085791A12A7BE00E13938 = { CreatedOnToolsVersion = 6.1; }; + 449A37011B0FDC1C00E47DAC = { + CreatedOnToolsVersion = 6.3.1; + }; }; }; buildConfigurationList = EA61EB0B18FE485B00D75696 /* Build configuration list for PBXProject "ConnectSDK" */; @@ -1393,11 +1836,21 @@ EA61EB0F18FE485B00D75696 /* ConnectSDK */, EECAED52193F611900D31F61 /* Framework */, 448085791A12A7BE00E13938 /* ConnectSDKTests */, + 449A37011B0FDC1C00E47DAC /* ConnectSDKIntegrationTests */, + 44166C4F1B4203880052F9EC /* ConnectSDKAcceptanceTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 44166C4E1B4203880052F9EC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 44166CB31B4AFE060052F9EC /* the-san-francisco-peaks-of-flagstaff-718x544.jpg in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 448085781A12A7BE00E13938 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1422,6 +1875,7 @@ 44D88F8E1A71C4A8009D9608 /* ssdp_device_description_xbox_dial.xml in Resources */, 44D8F7D21AB224BB00559FE3 /* ssdp_device_description_lg_speaker.xml in Resources */, 44D88F8C1A71C4A8009D9608 /* ssdp_device_description_samsung_tv.xml in Resources */, + 44E98F971B1E72DF0043BC70 /* the-san-francisco-peaks-of-flagstaff-718x544.jpg in Resources */, 4498D99B1A6601A7008C0B72 /* gettransportinfo_response_sonos.xml in Resources */, 44D88F8D1A71C4A8009D9608 /* ssdp_device_description_webos_minor.xml in Resources */, 44D88F931A71C4A8009D9608 /* ssdp_device_description_xbox.xml in Resources */, @@ -1436,6 +1890,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 449A37001B0FDC1C00E47DAC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -1468,24 +1929,62 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 44166C4C1B4203880052F9EC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 44166C6B1B420DF60052F9EC /* OCMStubRecorder+SpectaAsync.m in Sources */, + 44166C5C1B420B6A0052F9EC /* AirPlayServiceAcceptanceTests.m in Sources */, + 44166C6E1B420ED80052F9EC /* FireTVAcceptanceTests.m in Sources */, + 44166C6A1B420DE40052F9EC /* OCMArg+ArgumentCaptor.m in Sources */, + 44166C5D1B420B6A0052F9EC /* DLNAServiceAcceptanceTests.m in Sources */, + 44166C6C1B420E1A0052F9EC /* EXPMatchers+matchRegex.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 448085761A12A7BE00E13938 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 44C390121B34DCAE00723388 /* DiscoveryManagerTests.m in Sources */, 44EF61A41A12FC8800CF344C /* SSDPDiscoveryProviderTests.m in Sources */, + 449426351AF83055006BAFF2 /* SynchronousBlockRunnerTests.m in Sources */, 4433F3DF1A421750008D9A04 /* AirPlayServiceHTTPKeepAliveTests.m in Sources */, 44A551991AC338E0001AF783 /* WebOSTVServiceTests.m in Sources */, + 448B28701B041A3B00DFF18F /* FireTVMediaPlayerTests.m in Sources */, + 449426331AF82F8E006BAFF2 /* BlockRunnerTests.m in Sources */, + 4494263B1AF8353A006BAFF2 /* DispatchQueueBlockRunnerTests.m in Sources */, 44D8F7DA1AB27B4800559FE3 /* NSInvocation+ObjectGetter.m in Sources */, + 449CC26B1AF9458E0064F2F7 /* ServiceDescriptionTests.m in Sources */, + 444287CA1B055E0C00B1F875 /* XCTestCase+TaskTests.m in Sources */, + 448B286F1B041A3A00DFF18F /* FireTVMediaControlTests.m in Sources */, + 448B286B1B03DAEA00DFF18F /* OCMArg+ArgumentCaptor.m in Sources */, 44291C521A68B4C000280E5C /* SSDPDiscoveryProvider_FilteringTests.m in Sources */, 4480857F1A12A7BE00E13938 /* ConnectSDKDefaultPlatformsTests.m in Sources */, + 44316F021AF2F09B000FE655 /* FireTVDiscoveryProviderTests.m in Sources */, 4498D9A91A66F027008C0B72 /* DLNAHTTPServerTests.m in Sources */, 448F36C51A1BD64200536649 /* ZeroConfDiscoveryProviderTests.m in Sources */, + 441C9EFF1B3DD8C500F912D5 /* SubscriptionDeduplicatorTests.m in Sources */, 4498D9921A65B69F008C0B72 /* DLNAServiceTests.m in Sources */, 44758BBB1AE6C06200EC43A6 /* AirPlayServiceHTTPTests.m in Sources */, + 44AD91741AF9A02300C23A71 /* FireTVServiceTests.m in Sources */, 440A031D1A854EDE0007E3D3 /* WebOSTVServiceSocketClientTests.m in Sources */, 448414F91AEB27F400124EE9 /* OCMStubRecorder+XCTestExpectation.m in Sources */, + 44D90AA91B06AA9E00A5CF2A /* AppStateChangeNotifierTests.m in Sources */, 44A5518F1AC1DF4C001AF783 /* NetcastTVServiceTests.m in Sources */, 4498D9901A65A1D7008C0B72 /* NSDictionary+KeyPredicateSearchTests.m in Sources */, + 44A0E1A71B3B31DC00ADF95F /* WebOSWebAppSessionTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 449A36FE1B0FDC1C00E47DAC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 441FE0EF1B1528D0006C47CE /* EXPMatchers+matchRegex.m in Sources */, + 44B11F521B16827C00F0156C /* OCMStubRecorder+SpectaAsync.m in Sources */, + 44CF0E1A1B16ACD800B80FEF /* OCMArg+ArgumentCaptor.m in Sources */, + 146A7D1B1B2896C300260441 /* FireTVIntegrationTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1499,6 +1998,7 @@ EA5FB8F1199AEC570057B4B4 /* DIALService.m in Sources */, EA5FB887199AEC560057B4B4 /* CTASIDataCompressor.m in Sources */, EA5FB8AC199AEC560057B4B4 /* GCDWebServerURLEncodedFormRequest.m in Sources */, + 448B28771B041A5600DFF18F /* FireTVMediaControl.m in Sources */, EA5FB8CB199AEC560057B4B4 /* SSDPSocketListener.m in Sources */, EA5FB8DE199AEC560057B4B4 /* ServiceAsyncCommand.m in Sources */, EA5FB8B2199AEC560057B4B4 /* GCDWebServerFileResponse.m in Sources */, @@ -1506,14 +2006,17 @@ EA5FB8C4199AEC560057B4B4 /* DeviceServiceReachability.m in Sources */, 0F446CCA1A6D924D000BB1C0 /* MediaLaunchObject.m in Sources */, EA5FB873199AEC550057B4B4 /* DefaultConnectableDeviceStore.m in Sources */, + 44D90AAD1B06B26C00A5CF2A /* AppStateChangeNotifier.m in Sources */, EA5FB8E3199AEC560057B4B4 /* ServiceSubscription.m in Sources */, EA5FB8F9199AEC570057B4B4 /* WebOSTVServiceMouse.m in Sources */, EA5FB88B199AEC560057B4B4 /* CTASIDownloadCache.m in Sources */, EA5FB878199AEC550057B4B4 /* CapabilityFilter.m in Sources */, EA5FB8F3199AEC570057B4B4 /* DLNAService.m in Sources */, EA5FB8B8199AEC560057B4B4 /* LGSRWebSocket.m in Sources */, + 44AD91781AFA7F1000C23A71 /* FireTVService.m in Sources */, EA5FB8EC199AEC570057B4B4 /* WebOSTVServiceConfig.m in Sources */, EA5FB8B6199AEC560057B4B4 /* CTGuid.m in Sources */, + 4494263F1AF83588006BAFF2 /* DispatchQueueBlockRunner.m in Sources */, EA5FB8FB199AEC570057B4B4 /* WebOSTVServiceSocketClient.m in Sources */, EA5FB8C9199AEC560057B4B4 /* ProgramInfo.m in Sources */, EA5FB8C6199AEC560057B4B4 /* ExternalInputInfo.m in Sources */, @@ -1542,6 +2045,7 @@ EA5FB893199AEC560057B4B4 /* CTASIInputStream.m in Sources */, EA5FB8B4199AEC560057B4B4 /* GCDWebServerStreamedResponse.m in Sources */, EA5FB90E199AEC570057B4B4 /* CastService.m in Sources */, + 44316EFF1AF2F04B000FE655 /* FireTVDiscoveryProvider.m in Sources */, EA5FB8F7199AEC570057B4B4 /* AirPlayServiceMirrored.m in Sources */, EA5FB86F199AEC550057B4B4 /* ConnectableDevice.m in Sources */, EA5FB8E7199AEC560057B4B4 /* ServiceConfig.m in Sources */, @@ -1552,15 +2056,19 @@ EA5FB8BC199AEC560057B4B4 /* AppInfo.m in Sources */, EA5FB8A4199AEC560057B4B4 /* GCDWebServerResponse.m in Sources */, 44BCC3F71AB77F7D001BCDAA /* XMLWriter.m in Sources */, + 44A499061B0AD0C1002C94E7 /* FireTVCapabilityMixin.m in Sources */, EA5FB89A199AEC560057B4B4 /* GCDWebServer.m in Sources */, EA5FB8FD199AEC570057B4B4 /* NetcastTVService.m in Sources */, EA5FB901199AEC570057B4B4 /* AirPlayWebAppSession.m in Sources */, 4498D98D1A659F43008C0B72 /* NSDictionary+KeyPredicateSearch.m in Sources */, EA5FB882199AEC550057B4B4 /* ZeroConfDiscoveryProvider.m in Sources */, 44C2CC951AB7948300B20E46 /* XMLWriter+ConvenienceMethods.m in Sources */, + 448B28791B041A5600DFF18F /* FireTVMediaPlayer.m in Sources */, EA5FB8F5199AEC570057B4B4 /* AirPlayServiceHTTP.m in Sources */, + 449426391AF830A1006BAFF2 /* SynchronousBlockRunner.m in Sources */, EA5FB8E5199AEC560057B4B4 /* NetcastTVServiceConfig.m in Sources */, EA5FB88F199AEC560057B4B4 /* CTASIHTTPRequest.m in Sources */, + 441C9ED61B3DBCB200F912D5 /* SubscriptionDeduplicator.m in Sources */, EA5FB89C199AEC560057B4B4 /* GCDWebServerConnection.m in Sources */, EA5FB8A2199AEC560057B4B4 /* GCDWebServerRequest.m in Sources */, EA5FB889199AEC560057B4B4 /* CTASIDataDecompressor.m in Sources */, @@ -1576,11 +2084,21 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 44166C581B4203880052F9EC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EA61EB0F18FE485B00D75696 /* ConnectSDK */; + targetProxy = 44166C571B4203880052F9EC /* PBXContainerItemProxy */; + }; 448085821A12A7BE00E13938 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = EA61EB0F18FE485B00D75696 /* ConnectSDK */; targetProxy = 448085811A12A7BE00E13938 /* PBXContainerItemProxy */; }; + 449A370A1B0FDC1C00E47DAC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EA61EB0F18FE485B00D75696 /* ConnectSDK */; + targetProxy = 449A37091B0FDC1C00E47DAC /* PBXContainerItemProxy */; + }; EECAED57193F612100D31F61 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = EA61EB0F18FE485B00D75696 /* ConnectSDK */; @@ -1600,6 +2118,73 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 44166C591B4203880052F9EC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(PROJECT_DIR)/core/ConnectSDKTests/Frameworks", + "$(PROJECT_DIR)/core/ConnectSDKIntegrationTests/Frameworks", + "$(PROJECT_DIR)/modules/google-cast", + "$(PROJECT_DIR)/modules/firetv/Frameworks", + ); + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "core/ConnectSDKIntegrationTests/ConnectSDKIntegrationTests-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = core/ConnectSDKAcceptanceTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-ObjC", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 44166C5A1B4203880052F9EC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(PROJECT_DIR)/core/ConnectSDKTests/Frameworks", + "$(PROJECT_DIR)/core/ConnectSDKIntegrationTests/Frameworks", + "$(PROJECT_DIR)/modules/google-cast", + "$(PROJECT_DIR)/modules/firetv/Frameworks", + ); + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "core/ConnectSDKIntegrationTests/ConnectSDKIntegrationTests-Prefix.pch"; + INFOPLIST_FILE = core/ConnectSDKAcceptanceTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-ObjC", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; 448085831A12A7BE00E13938 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1610,8 +2195,8 @@ "$(SDKROOT)/Developer/Library/Frameworks", "$(inherited)", "$(PROJECT_DIR)/modules/google-cast", - "$(PROJECT_DIR)/core/Frameworks/OCMock", - "$(PROJECT_DIR)/core/Frameworks/OHHTTPStubs", + "$(PROJECT_DIR)/modules/firetv/Frameworks", + "$(PROJECT_DIR)/core/ConnectSDKTests/Frameworks", ); GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "core/ConnectSDKTests/ConnectSDKTests-Prefix.pch"; @@ -1619,7 +2204,7 @@ "DEBUG=1", "$(inherited)", ); - INFOPLIST_FILE = core/ConnectSDKTests/Info.plist; + INFOPLIST_FILE = core/ConnectSDKTests/SupportingFiles/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = YES; @@ -1643,12 +2228,12 @@ "$(SDKROOT)/Developer/Library/Frameworks", "$(inherited)", "$(PROJECT_DIR)/modules/google-cast", - "$(PROJECT_DIR)/core/Frameworks/OCMock", - "$(PROJECT_DIR)/core/Frameworks/OHHTTPStubs", + "$(PROJECT_DIR)/modules/firetv/Frameworks", + "$(PROJECT_DIR)/core/ConnectSDKTests/Frameworks", ); GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "core/ConnectSDKTests/ConnectSDKTests-Prefix.pch"; - INFOPLIST_FILE = core/ConnectSDKTests/Info.plist; + INFOPLIST_FILE = core/ConnectSDKTests/SupportingFiles/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; @@ -1662,6 +2247,73 @@ }; name = Release; }; + 449A370C1B0FDC1C00E47DAC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(PROJECT_DIR)/core/ConnectSDKIntegrationTests/Frameworks", + "$(PROJECT_DIR)/core/ConnectSDKTests/Frameworks", + "$(PROJECT_DIR)/modules/firetv/Frameworks", + "$(PROJECT_DIR)/modules/google-cast", + ); + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "core/ConnectSDKIntegrationTests/ConnectSDKIntegrationTests-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = core/ConnectSDKIntegrationTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-ObjC", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 449A370D1B0FDC1C00E47DAC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_WARN_UNREACHABLE_CODE = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(PROJECT_DIR)/core/ConnectSDKIntegrationTests/Frameworks", + "$(PROJECT_DIR)/core/ConnectSDKTests/Frameworks", + "$(PROJECT_DIR)/modules/firetv/Frameworks", + "$(PROJECT_DIR)/modules/google-cast", + ); + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "core/ConnectSDKIntegrationTests/ConnectSDKIntegrationTests-Prefix.pch"; + INFOPLIST_FILE = core/ConnectSDKIntegrationTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-ObjC", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; EA61EB3118FE485B00D75696 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1743,13 +2395,11 @@ "$(inherited)", "$(PROJECT_DIR)/modules/**", "$(PROJECT_DIR)/modules/google-cast", - "$(PROJECT_DIR)/core/Frameworks/OCMock", - "$(PROJECT_DIR)/core/Frameworks/OHHTTPStubs", + "$(PROJECT_DIR)/modules/firetv/Frameworks", ); GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "core/ConnectSDK-Prefix.pch"; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; - ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = ConnectSDK; PUBLIC_HEADERS_FOLDER_PATH = "$(PROJECT_NAME)Headers"; @@ -1770,8 +2420,7 @@ "$(inherited)", "$(PROJECT_DIR)/modules/**", "$(PROJECT_DIR)/modules/google-cast", - "$(PROJECT_DIR)/core/Frameworks/OCMock", - "$(PROJECT_DIR)/core/Frameworks/OHHTTPStubs", + "$(PROJECT_DIR)/modules/firetv/Frameworks", ); GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "core/ConnectSDK-Prefix.pch"; @@ -1806,6 +2455,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 44166C5B1B4203880052F9EC /* Build configuration list for PBXNativeTarget "ConnectSDKAcceptanceTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 44166C591B4203880052F9EC /* Debug */, + 44166C5A1B4203880052F9EC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 448085851A12A7BE00E13938 /* Build configuration list for PBXNativeTarget "ConnectSDKTests" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1815,6 +2473,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 449A370B1B0FDC1C00E47DAC /* Build configuration list for PBXNativeTarget "ConnectSDKIntegrationTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 449A370C1B0FDC1C00E47DAC /* Debug */, + 449A370D1B0FDC1C00E47DAC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; EA61EB0B18FE485B00D75696 /* Build configuration list for PBXProject "ConnectSDK" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/ConnectSDK.xcodeproj/xcshareddata/xcschemes/ConnectSDK.xcscheme b/ConnectSDK.xcodeproj/xcshareddata/xcschemes/ConnectSDK.xcscheme index 60097319..9ff11038 100644 --- a/ConnectSDK.xcodeproj/xcshareddata/xcschemes/ConnectSDK.xcscheme +++ b/ConnectSDK.xcodeproj/xcshareddata/xcschemes/ConnectSDK.xcscheme @@ -34,6 +34,34 @@ ReferencedContainer = "container:ConnectSDK.xcodeproj"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ConnectSDK.xcodeproj/xcshareddata/xcschemes/ConnectSDKIntegrationTests.xcscheme b/ConnectSDK.xcodeproj/xcshareddata/xcschemes/ConnectSDKIntegrationTests.xcscheme new file mode 100644 index 00000000..29c8b87f --- /dev/null +++ b/ConnectSDK.xcodeproj/xcshareddata/xcschemes/ConnectSDKIntegrationTests.xcscheme @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ConnectSDK.xcodeproj/xcshareddata/xcschemes/ConnectSDKTests.xcscheme b/ConnectSDK.xcodeproj/xcshareddata/xcschemes/ConnectSDKTests.xcscheme new file mode 100644 index 00000000..b78b23d0 --- /dev/null +++ b/ConnectSDK.xcodeproj/xcshareddata/xcschemes/ConnectSDKTests.xcscheme @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ConnectSDKDefaultPlatforms.h b/ConnectSDKDefaultPlatforms.h index 2404bbb6..cdf1b4fc 100644 --- a/ConnectSDKDefaultPlatforms.h +++ b/ConnectSDKDefaultPlatforms.h @@ -20,14 +20,15 @@ #ifndef kConnectSDKDefaultPlatforms -#define kConnectSDKDefaultPlatforms @{ \ +#define kConnectSDKDefaultPlatforms (@{ \ @"AirPlayService" : @"ZeroConfDiscoveryProvider", \ @"DIALService" : @"SSDPDiscoveryProvider", \ @"DLNAService" : @"SSDPDiscoveryProvider", \ @"NetcastTVService" : @"SSDPDiscoveryProvider", \ @"RokuService" : @"SSDPDiscoveryProvider", \ @"WebOSTVService" : @"SSDPDiscoveryProvider", \ - @"CastService" : @"CastDiscoveryProvider" \ -} + @"CastService" : @"CastDiscoveryProvider", \ + @"FireTVService" : @"FireTVDiscoveryProvider", \ +}) #endif diff --git a/LICENSE b/LICENSE index 52b14da3..61f6e5e0 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright (c) 2013-2014 LG Electronics. + Copyright (c) 2013-2015 LG Electronics. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README.md b/README.md index 309871bf..dbe654d5 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,15 @@ For more information, visit our [website](http://www.connectsdk.com/). ##Dependencies This project has the following dependencies, some of which require manual setup. If you would like to use a version of the SDK which has no manual setup, consider using the [lite version](https://github.com/ConnectSDK/Connect-SDK-iOS-Lite) of the SDK. -* libicucore.dylib -* libz.dylib -* Other linker flags: -ObjC +* `libicucore.dylib` +* `libz.dylib` +* Other linker flags: `-ObjC` * Automatic Reference Counting (ARC) * [Connect-SDK-iOS-Core](https://github.com/ConnectSDK/Connect-SDK-iOS-Core) submodule * [Connect-SDK-iOS-Google-Cast](https://github.com/ConnectSDK/Connect-SDK-iOS-Google-Cast) submodule - - Requires [GoogleCast.framework](https://developers.google.com/cast/docs/downloads) + - Requires [`GoogleCast.framework`](https://developers.google.com/cast/docs/downloads) +* [Connect-SDK-iOS-FireTV](https://github.com/ConnectSDK/Connect-SDK-iOS-FireTV) submodule + - Requires [`AmazonFling.framework`](https://developer.amazon.com/public/apis/experience/fling/docs/amazon-fling-sdk-download) ##Including Connect SDK in your app ###Using CocoaPods @@ -24,52 +26,66 @@ This project has the following dependencies, some of which require manual setup. 2. Run `pod install` 3. Open the workspace file and run your project +**Important**: Unfortunately, Amazon Fling SDK is not distributed via CocoaPods, so we cannot include its support in a subspec in an automated way. If you need it, please use the source ConnectSDK project directly. + You can use `pod "ConnectSDK/Core"` to get the [lite version](https://github.com/ConnectSDK/Connect-SDK-iOS-Lite). ###Without CocoaPods -1. Clone repository (or download & unzip) -2. Set up the submodules by running the following commands in Terminal - - `git submodule init` - - `git submodule update` +1. Clone the repository (`git clone https://github.com/ConnectSDK/Connect-SDK-iOS.git`) +2. Set up the submodules by running the following command (in the `Connect-SDK-iOS/` directory in this example): `git submodule update --init` 3. Open your project in Xcode -4. Locate the Connect SDK Xcode project in the Finder -5. Drag the Connect SDK Xcode project into your project's Xcode library -6. Navigate to your project's settings screen, then navigate to the Build Phases tab -7. Add ConnectSDK as a Target Dependency -8. Add the following in the `Link Binary With Libraries` section - - libConnectSDK.a - - libz.dylib - - libicucore.dylib -9. Navigate to the `Build Settings` tab and add `-ObjC` to your target's `Other Linker Flags` -10. Follow the setup instructions for each of the service submodules +4. Locate the Connect SDK Xcode project in Finder +5. Drag the Connect SDK Xcode project (`ConnectSDK.xcodeproj`) into your project's Xcode library +6. Navigate to your target's settings screen, then navigate to the "Build Phases" tab +7. Add the following in the "Link Binary With Libraries" section: + - `libConnectSDK.a` + - `libz.dylib` + - `libicucore.dylib` +8. Navigate to the "Build Settings" tab and add `-ObjC` to your target's "Other Linker Flags" +9. Follow the setup instructions for the service submodules: - [Connect-SDK-iOS-Google-Cast](https://github.com/ConnectSDK/Connect-SDK-iOS-Google-Cast) + - [Connect-SDK-iOS-FireTV](https://github.com/ConnectSDK/Connect-SDK-iOS-FireTV) -###Migrating from 1.3 to 1.4 release - -1. Open terminal and go to your local Connect-SDK-iOS repo -2. Pull the latest updates by running command `git pull` in Terminal -3. Set up the submodules by running the following commands in Terminal - - `git submodule init` - - `git submodule update` - ###Include Strings File for Localization (optional) 1. Locate the Connect SDK Xcode project in the Finder 2. Drag the ConnectSDKStrings folder into your project's library 3. You may make whatever changes you would like to the values and the SDK will use your strings file +## Tests + +Connect SDK has tests for some parts of the code, and we are continuing to increase the test coverage. There are currently three types of tests: + +Type | Target & Scheme | Frameworks used | Uses network | Fast | Reliable +-----|---------------------|-----------------|:------------:|:----:|:-------: +Unit tests | `ConnectSDKTests` | `OCMock`, `OHHTTPStubs`, `XCTest` | **-** | **+** | **+** +Integration tests | `ConnectSDKIntegrationTests` | `Expecta`, `OCMock`, `Specta` | **-** | **+** | **+** +Acceptance (aka End-To-End) tests | `ConnectSDKAcceptanceTests` | `Expecta`, `OCMock`, `Specta` | **+** | **-** | **±** + +* **Unit** tests are for small components and usually test one class/method. They use mocks to inject the dependencies. + +* **Integration** tests verify the behavior of the whole Connect SDK, but without external environment (network and devices), so that they can be reliable and fast. + +* **Acceptance** tests verify the end-to-end behavior of Connect SDK and real devices, so they won't work out of the box in a different environment. Some acceptance tests also expect certain properties of those devices, such as name or IP address, which should be altered to match your particular setup. + +The required third-party test frameworks are already pre-built and included in the `core` submodule. + +All of the test targets are compiled when the main `ConnectSDK` scheme is built, but only the unit tests are setup to run when testing the scheme. The other tests can be run by selecting the corresponding scheme. + ##Contact -* Twitter: [@ConnectSDK](https://www.twitter.com/ConnectSDK) -* Ask a question with the "tv" tag on [Stack Overflow](http://stackoverflow.com/tags/tv) -* Developer Support: support@connectsdk.com -* Partnerships: partners@connectsdk.com +- Twitter: [@ConnectSDK](https://twitter.com/ConnectSDK) +- Ask a question on Stack Overflow with the [Connect-SDK tag](https://stackoverflow.com/tags/connect-sdk) (or [TV tag](https://stackoverflow.com/tags/tv)) +- Developer Support: [support@connectsdk.com](mailto:support@connectsdk.com) +- Partnerships: [partners@connectsdk.com](mailto:partners@connectsdk.com) ##Credits -Connect SDK for iOS makes use of the following projects, some of which are open-source. +Connect SDK for iOS makes use of the following projects, some of which are open-source: * [Google Cast SDK](https://developers.google.com/cast/) - [Google Cast SDK Additional Developer Terms of Service](https://developers.google.com/cast/docs/terms) - [Google APIs Terms of Service](https://developers.google.com/terms/) +* [Amazon Fling SDK](https://developer.amazon.com/fling) + - [Amazon Fling SDK Terms of Service](https://developer.amazon.com/public/support/pml.html) * [SocketRocket](https://github.com/Square/SocketRocket) (Apache License, Version 2.0) - modifications: - stability @@ -88,8 +104,17 @@ Connect SDK for iOS makes use of the following projects, some of which are open- - modifications: - compiler warning fix +These projects are used in tests: + +* [OCMock](http://ocmock.org/) (Apache License, Version 2.0) +* [OHHTTPStubs](https://github.com/AliSoftware/OHHTTPStubs/) (MIT) +* [Specta](https://github.com/specta/specta/) (MIT) +* [Expecta](https://github.com/specta/expecta/) (MIT) + +This public domain image is used in tests: [The San Francisco peaks of flagstaff public domain image](http://www.public-domain-image.com/free-images/nature-landscapes/peaks/the-san-francisco-peaks-of-flagstaff). + ##License -Copyright (c) 2013-2014 LG Electronics. +Copyright (c) 2013-2015 LG Electronics. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/VERSION b/VERSION deleted file mode 100644 index f5678e62..00000000 --- a/VERSION +++ /dev/null @@ -1,2 +0,0 @@ -2.4 -f01307b2a70ed43aaa6df40273524bec0e687e95 diff --git a/core b/core index 610dc296..b2f1c6ba 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 610dc296a54ca5210a5582b42adf58c3557786fc +Subproject commit b2f1c6ba26ce65115e95e9d9d0957a47462e1271 diff --git a/modules/firetv b/modules/firetv new file mode 160000 index 00000000..51c3d136 --- /dev/null +++ b/modules/firetv @@ -0,0 +1 @@ +Subproject commit 51c3d1367cc9a77af794107bbf280c2e42701a54 diff --git a/modules/google-cast b/modules/google-cast index 32025e07..d444a4f3 160000 --- a/modules/google-cast +++ b/modules/google-cast @@ -1 +1 @@ -Subproject commit 32025e07b67669648ca95e5df8a810ae0983dcf8 +Subproject commit d444a4f36b53839c05a3ac541ef033eb55744502