* [introspection] Implement system version check for watchOS.
Fixes a P/Invoke test that should be skipped when running on
older OS versions.
* [tests] Add availability attributes to fix running introspection tests on older watchOS devices.
We now want the build error to always show up.
monotouch.dll will be shipped with XI 10 to allow migration (dependent on the dll being available).
Therefore the check wasn't valid anymore because it was only applying the error if monotouch.dll wasn't there.
This was done to avoid breaking our internal tests but we should actually be fine, if not we'll update the tests.
The mmp utility allows users to pass -custom_bundle_name to specify
a custom directory name to use instead of MonoBundle, so we need to
parse the extra args to extract this value so that we can scan that
directory for dylibs to codesign.
We need to compile the generated P/Invoke wrappers to a dylib, and link the
dylib for the product assembly (Xamarin.WatchOS.dll) with the generated
P/Invoke wrappers.
Since there might be P/Invokes in any assembly, just link in the P/Invoke
wrapper dylib for every assembly.
https://bugzilla.xamarin.com/show_bug.cgi?id=44048
https://bugzilla.xamarin.com/show_bug.cgi?id=43579
We are removing the following 3 protocol members
- UITextFieldDelegate.EditingEnded2 (UITextField textField, UITextFieldDidEndEditingReason reason)
- UITextViewDelegate.ShouldInteractWithUrl2 (UITextView textView, NSUrl url, NSRange characterRange, UITextItemInteraction interaction)
- UITextViewDelegate.ShouldInteractWithTextAttachment2 (UITextView textView, NSTextAttachment textAttachment, NSRange characterRange, UITextItemInteraction interaction)
Reasons:
- We need to fix bug https://bugzilla.xamarin.com/show_bug.cgi?id=43579
- Bad naming, we do not want 2 suffix
Hopefully we can have this ready for C8SR0 or C8SR1
HomeKit was added to tvOS in tvOS 10, which means every type was
introduced in tvOS 10, which means we only need availability attributes
on the types, never the individual members.
`Trigger` can be both a verb and a noun, but according to Apple's
documentation it's a noun in these cases (the method 'Creates and returns a
trigger'), so add the verb `Create` to make the meaning clear (and follow API
guidelines that say methods should have a verb).
It turns out `MTLHeapDescriptor` does not exists on the simulator.
```Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_MTLHeapDescriptor", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64```
A `[DisableDefaultCtor]` was used (by mistake / lack of documentation)
and this was hiding the issue (on our bots).
However on device introspection was not happy:
iOSApiSelectorTest
[FAIL] Selector not found for Metal.MTLHeapDescriptor : cpuCacheMode
[FAIL] Selector not found for Metal.MTLHeapDescriptor : setCpuCacheMode:
[FAIL] Selector not found for Metal.MTLHeapDescriptor : size
[FAIL] Selector not found for Metal.MTLHeapDescriptor : setSize:
[FAIL] Selector not found for Metal.MTLHeapDescriptor : storageMode
[FAIL] Selector not found for Metal.MTLHeapDescriptor : setStorageMode:
[FAIL] iOSApiSelectorTest.ApiSelectorTest.InstanceMethods : 6 errors found in 18339 instance selector validated
Note that these are the properties, not the `init` that's mentioned here.
So first `init` is possible, on devices, from Xcode:
MTLHeapDescriptor *hd = [[MTLHeapDescriptor alloc] init];
NSLog (@"%@", [hd description]);
gives
<MTLHeapDescriptorInternal: 0x17401da50>
{
cpuCacheMode = MTLCPUCacheModeDefaultCache;
size = 0;
storageMode = MTLStorageModePrivate;
}
so we need to remove our `[DisableDefaultCtor]`.
That does not fix the selectors above... but note the *Internal type
returned, they are forwarded and that's generally something that
respondToSelector (that introspection uses) does not cover.
But, to be sure, we add unit tests showing all the properties are
working like expected :-)
* [cloudkit] Some fixes after auditing
* Fix and simplify CKUserIdentityLookupInfo creation from email / phone#
* Call InitializeHandle to "handle" null handles (and throw instead of
crashing)
* Reduce internal metadata (and code) to create them
* CKNotificationType: Remove extra [Watch (3,0)] on member (all new in 3.0)
* CKSubscriptionType: Fix inconsistency in wrt watchOS (type not available)
* CKRecord: Remove `Record` prefix from new fields (consistency)
* Fix build
The generator does not currently offer flexibility for constraints.
That's made harder since binding files uses attributes, [BaseType], to
define the type hierarchy.
Here we cheat as we can add, non-decorated, interfaces in the bindings
that won't generate anything - they are only to please the compiler or,
in this case, it let us fool the generator into producing the code we
need (because it does not consider the namespace)
Based on Alex elegant attempt to fix this in:
https://github.com/xamarin/xamarin-macios/pull/780
Generated code diff:
https://gist.github.com/spouliot/eeef3491a6e08d9344a19e9bbc632848
* [runtime] Use printf on watchOS, NSLog doesn't shown up (by default).
* [runtime] Use a wrapper function for logging.
So that we can chose between printf and NSLog at runtime,
depending on where we're running.
Due to the deprecation of classic we needed to provide a better and single error message
rather than the countless msbuild errors you'd have because you'd be missing monotouch.dll
* Migrate MySingleView & MyLibrary to Unified
* [AVFundation] Add TV OS missing apis.
* As per review, added missing constructor and renamed method.
* As per review, add 'Get' verb to method.
* As per review bump tv os attr to 10.0
The watchOS device has limited networking support; in particular
it does not allow inbound/output network connections using 'bind'
(kernel-level sandbox restrictions).
This means that we can't use BSD sockets to connect to the debugger
in the IDE on the desktop. Instead we create an http tunnel that
knows how to convert socket send/recv data into http requests on
both sides.
https://bugzilla.xamarin.com/show_bug.cgi?id=41554
Launching a watchOS extension on device with the managed debugger
attached is slow, which means that the launch watchdog will kick in
and kill the app before it has launched.
So we attach the native debugger as well, which prevents the launch
watchdog from killing the app. Incidentally it also makes watchOS
not background the app.
We're using private API to determine whether a native debugger is
attached, but it's only in debug code, and as such would not be
included in release builds for customer apps. Also the code is
currently limited to watchOS since it's not needed on other
platforms for now.
* [healthkit] Change binding for HKDetailedCdaErrors
* Hide [Fields]
* Easier access to the information from NSError
* Unit test (mostly to make sure of the returned type)
* [healthkit] Remove HKDetailedCDAValidationErrorKey from watchOS profile
It's used from an NSError returned from an API that is not available in
watchOS.
When using WrapAttribute on methods generator still tries to create
signatures to interop with ObjC which is incorrect since the pruppose
of Wrap attribute is to create nicer signatures on top of an "ugly"
API so user gets a delightful coding experience.
When generator tries to create a signature for a decorated method with
WrapAttribute to interop with objc and the signature contains a NET Type
(i.e System.Type) it throws a BindingException but it was swallowed
by a try/catch that only printed a not so useful description of the
the problem. Now it throws the actual BindingException when it really
does not know how to create a signature to interop with ObjC on a
*not* decorated method with WrapAttribute.