A new method added in Xcode 8.3 triggeres a new warning in d15-1 about
exposing models instead of protocols in API.
Bind this method correctly (using a protocol), and add a compatibility
version.
Fixes this introspection error:
[FAIL] `MDLAsset.PlaceLightProbes` includes a parameter of type `MDLLightProbeIrradianceDataSource` which is a concrete type `[Model]` and not an interface `[Protocol]`
[FAIL] iOSApiSignatureTest.ApiSignatureTest.ManagedSignature : 1 errors found in 3 signatures validated:
Apple added API_UNAVAILABLE(watchos) to
+ (INSiriAuthorizationStatus)siriAuthorizationStatus
+ (void)requestSiriAuthorization:(void (^)(INSiriAuthorizationStatus status))handler
So we got the availability right :D
Fixes bug #52575: Missing ModelIO API
(https://bugzilla.xamarin.com/show_bug.cgi?id=52575)
We turn the MDLMesh constructors into static ones because we don't want to lose the shape name.
Also, the signatures of these constructors differ so it would not be possible to use an enum to differentiate the shapes.
watchOS 3.2 introduced SiriKit extension that must be bundled
inside the Watch App Extension (yep a extension inside another extension).
So the _ResolveAppExtensionReferences and _CopyAppExtensionsToBundle should
now be run on extension projects too.
This should stop errors like below to happen on wrench
```
Xamarin.Bundler.MonoMacException: The type 'AVFoundation.IAVContentKeyRecipient' (used as a parameter in AVFoundation.AVContentKeySession.Add) is not available in macOS 10.12.2 (it was introduced in macOS 10.12.4). Please build with a newer macOS SDK (usually done by using the most recent version of Xcode).
```
The return type is wrong
> Value is a boolean NSNumber,
and cannot be bound as a `bool` but as a `NSNumber`, which makes it
closer to a `bool?` since it could be absent.
We'll re-enable it when merging `xcode8.3` on `master` so we can benefit
from Alex `[BindAs]` support, giving us a `bool?` on the visible API
Mac introspection does not like it on wrench, which seems to
have a Sierra beta (or it would be ignored)
> [FAIL] Selector not found for Intents.INPerson : siriMatches
and xtro / headers can't see it being available on macOS either
Apple swapped None and Detected in HMCharacteristicValueContactState.
The Apple dev forums and stackoverflow are silent about this change.
This enum isn't used by any other HomeKit method and it's questionable how many people
are using HomeKit at all.
Given that, we decided to exceptionally do a breaking change for this enum.
The symbols remain the same only the values change.
Only the people using HomeKit and this particular enum should be affected.
A fix (thanks Rolf!) in how we do SDK version checks is needed
because for some reason `new Version (3, 2, 0)` isn't the same to
`new Version (3, 2)` and we end up with a MT4134 when building the
watchOS static registrar.
There was a typo in the original field - but it was not fixed properly
the first time.
Note: this is "fixed" in the beta 3 headers (have not heard from the rdar
itself) but, according to the availability macros it's been fixed for a
while (so it's fine to PR it even if the bots don't run beta 3 yet)
reference:
* Apple radar 22311329
* https://trello.com/c/PRpCfP6e/1-22311329-half-fixed-typo-in-kcgimagepropertyexifsubsectimeor-i-ginal
iOS 10.3 simulator (i386 only) will crash executing CTLineTests.
EnumerateCaretOffsets test case. This was not a problem with older SDK
so the code likely changed (but the issue was in our code)
This reverts commit 0b6ac445ce.
Apple reverted this change later (beta?)
references (xtro):
common.unclassified:!missing-selector! MDLVertexAttributeData::setDataStart: not bound
common.unclassified:!missing-selector! MDLVertexAttributeData::setFormat: not bound
common.unclassified:!missing-selector! MDLVertexAttributeData::setMap: not bound
common.unclassified:!missing-selector! MDLVertexAttributeData::setStride: not bound
iOS 10.3 simulator (i386 only) will crash executing CTLineTests.
EnumerateCaretOffsets test case.
This does not happen on 64 bits (simulator) or on device builds,
including 32 bits builds. Running iOS 10.1 simulator (with Xcode 8.3)
also runs without problems.
reference:
https://bugzilla.xamarin.com/show_bug.cgi?id=52162
They were thought to be macOS only but xtro corrected me, they are
new in iOS 10.3 even if some existed previously.
references (xtro):
!missing-pinvoke! SecCertificateCopyCommonName is not bound
!missing-pinvoke! SecCertificateCopyEmailAddresses is not bound
!missing-pinvoke! SecCertificateCopyNormalizedIssuerSequence is not bound
!missing-pinvoke! SecCertificateCopyNormalizedSubjectSequence is not bound
!missing-pinvoke! SecCertificateCopyPublicKey is not bound
!missing-pinvoke! SecCertificateCopySerialNumber is not bound
reference:
https://bugzilla.xamarin.com/show_bug.cgi?id=52505
There's a lot of noise from the header diff, e.g. tabs changed to spaces,
but very few actual changes.
Note that there's more macOS specific code to review but this PR
handles iOS, tvOS and watchOS changes.
PR#1667 changed some code to allow null SourceAudioUnit - but it forgot
to remove the null check that throws an ArgumentNullException. Thanks
to Tim for spotting this.
The CloudKit headers for watchOS were updated to match the ones from
iOS and tvOS (from previous Xcode) so this mostly remove some watch
specific code.
Apple also made some previously broken `init` to be
NS_DESIGNATED_INITIALIZER so those are now enabled for watchOS.
* Updated API to reflect Xcode 8.3 beta 1 changes
* This commit also fixes availability metadata to avoid duplicating it
by moving member availability metadata into its container class where
possible.
* Enables VideoToolbox tests for tvOS.
We did not honor/reflect the availability information on the generated
code from StrongDictionary members/classes nor we would honor unavailability
attributes like NoiOS, NoTV and NoMac applied to members. This commit fixes
both scenarios
Spotted by xtro
!missing-protocol-member! UITableViewDataSource::sectionIndexTitlesForTableView: not found
!missing-protocol-member! UITableViewDataSource::tableView:sectionForSectionIndexTitle:atIndex: not found
and it was in the header diff too
--- (nullable NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView __TVOS_PROHIBITED; // return list of section titles to display in section index view (e.g. "ABCD...Z#")
--- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index __TVOS_PROHIBITED; // tell table which section corresponds to section title/index (e.g. "B",1))
-+- (nullable NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView; // return list of section titles to display in section index view (e.g. "ABCD...Z#")
-+- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index; // tell table which section corresponds to section title/index (e.g. "B",1))
Covers iOS, tvOS and macOS (no Metal on watch yet)
Most new members are _marked_ as @required (but are not really) by
Apple. We cannot make them `abstract` as it would be a breaking change.