Update tests regarding the deprecated fields and classes.
Co-authored-by: Rachel Kang <rachelkang@microsoft.com>
Co-authored-by: Manuel de la Pena <mandel@microsoft.com>
* [WatchKit] Remove this framework for iOS while keeping backwards compatibility. Fixes#6492.
* Copy all generated sources and modify them to throw PlatformNotSupported exceptions.
* Adjust some existing source code to also throw PlatformNotSupported exceptions.
* Sprinkle Obsolete attributes generously.
* Stop generating code for the WatchKit framework for iOS.
Fixes https://github.com/xamarin/xamarin-macios/issues/6492.
* [introspection] Adjust test.
* [mtouch] Don't link with WatchKit, and show a warning if we detect code that want to use WatchKit.
* [xtro] Remove WatchKit for iOS.
* [introspection] Don't check obsoleted NSString fields for null.
There's probably a reason the field was obsoleted.
* [introspection] Add exception for the WatchKit framework.
* [xtro] Ignore obsolete enums.
There's probably a reason they're obsoleted.
In particular it solves a confusion between WKWebKit.WKErrorCode and
WatchKit.WKErrorCode: for iOS, the latter is obsoleted, and this way we always
process the former instead.
* [mtouch] Adjust wording for MT4178 to be more accurate.
* [WatchKit] Make more API obsolete/hidden.
Two classes managed to slip past the first time.
* [tests] Adjust test after WatchKit removal.
* This framework was a private framework before iOS 11.
This framework was a private framework before iOS 11, yet the headers claim
many API were introduced in iOS 10.
So take account of this difference by using the private framework location in
iOS 10.3 or earlier.
Testing these API from Xcode works fine when run on an iOS 10.3 device, and
I've confirmed the IOSurface framework is loaded from the private frameworks
path on older devices (and when built using Xcode 9 and linked with the public
framework path).
* Disable code to make IOSurface work on iOS 10.
Disable the code to make IOSurface work on iOS 10, since it may be rejected by
the App Store.
This also means adjusting the availability attributes, so that the
introspection tests pass (and to document that technically these API won't
work when used with Xamarin.iOS in iOS 10).
I've filed bug #[59201][1] to keep track of this, maybe we can re-enable this later.
[1]: https://bugzilla.xamarin.com/show_bug.cgi?id=59201
Also:
* some refactoring to reduce the reflection usage for each field-based
introspection tests;
* some fixes for existing bindings, mostly missing [Notification]
* removal of `unsafe` in the notification binding generation (not needed)
* Ignore the new test on XM until the API have been fixed
Those tests needs to be run with the linker disabled since they use
reflection for most of their work.
The original dontlink (for linker tests) was becoming too large in
some configuration (e.g. tvOS release with bitcode) but this was
due to other BCL assemblies (not the introspection tests)