Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[xcode16.3] Merge main into xcode16.3. #22248

Merged
merged 19 commits into from
Mar 3, 2025
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
4f13e06
[src] Import xml docs for members, part 1. (#22210)
rolfbjarne Feb 24, 2025
30cce24
[CI] Fix xharness local run. (#22236)
mandel-macaque Feb 24, 2025
253887e
Set Build_Repository_Title (#22237)
mcumming Feb 25, 2025
ed11d0e
Auto-detect the macios-adr repo to enable any private build logic. (#…
rolfbjarne Feb 25, 2025
82d877a
[BGen] Simplify BindAs for smart enums. (#22222)
mandel-macaque Feb 25, 2025
9aea7cb
[devops] Make the reserve-mac job checkout like the reenable-mac job.…
rolfbjarne Feb 26, 2025
ffa95b4
[Rgen] Ensure transformer tests can build with missing platforms. (#2…
mandel-macaque Feb 26, 2025
a292d65
[BGen] Remove support for the System.Drawing objects. (#22247)
mandel-macaque Feb 26, 2025
6df59ab
[xcode16.3] Merge main into xcode16.3.
rolfbjarne Feb 26, 2025
97fbaaf
[src/tests] Misc updates to the platform analyzer tests. (#22219)
rolfbjarne Feb 26, 2025
a8168d3
[dotnet] Improve listing older tooling workloads we might depend on. …
rolfbjarne Feb 26, 2025
da6d2e8
[main] Update dependencies from dotnet/sdk (#22229)
dotnet-maestro[bot] Feb 27, 2025
c6b5bfa
[toos] Update the compare-commits.sh script after the repo move. (#22…
rolfbjarne Feb 27, 2025
dfb9a22
[WebKit] Fix nullability in WKUIDelegate.RunJavaScriptTextInputPanel …
rolfbjarne Feb 27, 2025
91e1d8e
[AddressBook[UI]] Fix all availability attributes in these frameworks…
rolfbjarne Feb 27, 2025
7c444af
[CoreFoundation] Remove !NET code. (#22160)
rolfbjarne Feb 28, 2025
1370c80
[src] Import xml docs for members, part 2. (#22239)
rolfbjarne Feb 28, 2025
b8575f8
[devops] Ensure the directory for any provisioning profiles exist bef…
rolfbjarne Feb 28, 2025
67138bb
Merge remote-tracking branch 'origin/main' into dev/rolf/bump-main-in…
rolfbjarne Feb 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions create-make-config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,10 @@ if which ccache > /dev/null 2>&1; then
echo "Found ccache on the system, enabling it"
fi

# Detect ADR
if test -d ../macios-adr; then
printf "ENABLE_XAMARIN=1\n" >> "$OUTPUT_FILE"
echo "Detected the macios-adr repository, automatically enabled the Xamarin build"
fi

mv "$OUTPUT_FILE" "$OUTPUT"
66 changes: 66 additions & 0 deletions docs/api/AudioToolbox/AudioQueue.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<Documentation>
<Docs DocId="P:AudioToolbox.AudioQueue.CurrentLevelMeter">
<summary>Current Level meters, one per channel in the range zero (minimum) to one (maximum).</summary>
<value>Array of level meters, one per audio channel.</value>
<remarks>
<para>
To use this property, make sure that you set the <see cref="P:AudioToolbox.AudioQueue.EnableLevelMetering" /> property on the queue.
</para>
<para>
Use the <see cref="P:AudioToolbox.AudioQueue.CurrentLevelMeterDB" /> if you want to get the values in decibels.
</para>
<example>
<code lang="c#"><![CDATA[
class MyInputQueue : InputAudioQueue {
public MyQueueInput (AudioStreamBasicDescription desc) : base (desc)
{
inputQueue.EnableLevelMetering = true;
}

protected virtual void OnInputCompleted (IntPtr audioQueueBuffer,
AudioTimeStamp timeStamp,
AudioStreamPacketDescription [] packetData)
{
var levels = CurrentLevelMeterDB;
for (int channel = 0; channel < levels.Count; channel.Length)
Console.WriteLine ("Channel {0} Average Power: {1} Peak Power: {2}",
channel, levels [channel].AveragePower, levels [channel].PeakPower);
}
}
}]]></code>
</example>
</remarks>
</Docs>
<Docs DocId="P:AudioToolbox.AudioQueue.CurrentLevelMeterDB">
<summary>Current Level meters, one per channel in decibels.</summary>
<value>Array of level meters, one per audio channel.</value>
<remarks>
<para>
To use this property, make sure that you set the <see cref="P:AudioToolbox.AudioQueue.EnableLevelMetering" /> property on the queue.
</para>
<para>
Use the <see cref="P:AudioToolbox.AudioQueue.CurrentLevelMeter" /> if you want to get the values normalized to the range zero (minimum) to one (maximum).
</para>
<example>
<code lang="c#"><![CDATA[
class MyInputQueue : InputAudioQueue {
public MyQueueInput (AudioStreamBasicDescription desc) : base (desc)
{
inputQueue.EnableLevelMetering = true;
}

protected virtual void OnInputCompleted (IntPtr audioQueueBuffer,
AudioTimeStamp timeStamp,
AudioStreamPacketDescription [] packetData)
{
var levels = CurrentLevelMeterDB;
for (int channel = 0; channel < levels.Count; channel.Length)
Console.WriteLine ("Channel {0} Average Power: {1} Peak Power: {2}",
channel, levels [channel].AveragePower, levels [channel].PeakPower);
}
}
}]]></code>
</example>
</remarks>
</Docs>
</Documentation>
54 changes: 54 additions & 0 deletions docs/api/AudioUnit/AUAudioUnit.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<Documentation>
<Docs DocId="P:AudioUnit.AUAudioUnit.AudioComponentRegistrationsChangedNotification">
<summary>Notification constant for AudioComponentRegistrationsChanged</summary>
<value>NSString constant, should be used as a token to NSNotificationCenter.</value>
<remarks>
<para id="tool-remark">This constant can be used with the <see cref="T:Foundation.NSNotificationCenter" /> to register a listener for this notification. This is an NSString instead of a string, because these values can be used as tokens in some native libraries instead of being used purely for their actual string content. The 'notification' parameter to the callback contains extra information that is specific to the notification type.</para>
<example>
<code lang="csharp lang-csharp"><![CDATA[
// Lambda style
NSNotificationCenter.DefaultCenter.AddObserver (
AUAudioUnit.AudioComponentRegistrationsChangedNotification, (notification) => {Console.WriteLine ("Received the notification AUAudioUnit", notification); }


// Method style
void Callback (NSNotification notification)
{
Console.WriteLine ("Received a notification AUAudioUnit", notification);
}

void Setup ()
{
NSNotificationCenter.DefaultCenter.AddObserver (AUAudioUnit.AudioComponentRegistrationsChangedNotification, Callback);
}
]]></code>
</example>
</remarks>
</Docs>
<Docs DocId="P:AudioUnit.AUAudioUnit.AudioComponentInstanceInvalidationNotification">
<summary>Notification constant for AudioComponentInstanceInvalidation</summary>
<value>NSString constant, should be used as a token to NSNotificationCenter.</value>
<remarks>
<para id="tool-remark">This constant can be used with the <see cref="T:Foundation.NSNotificationCenter" /> to register a listener for this notification. This is an NSString instead of a string, because these values can be used as tokens in some native libraries instead of being used purely for their actual string content. The 'notification' parameter to the callback contains extra information that is specific to the notification type.</para>
<example>
<code lang="csharp lang-csharp"><![CDATA[
// Lambda style
NSNotificationCenter.DefaultCenter.AddObserver (
AUAudioUnit.AudioComponentInstanceInvalidationNotification, (notification) => {Console.WriteLine ("Received the notification AUAudioUnit", notification); }


// Method style
void Callback (NSNotification notification)
{
Console.WriteLine ("Received a notification AUAudioUnit", notification);
}

void Setup ()
{
NSNotificationCenter.DefaultCenter.AddObserver (AUAudioUnit.AudioComponentInstanceInvalidationNotification, Callback);
}
]]></code>
</example>
</remarks>
</Docs>
</Documentation>
62 changes: 62 additions & 0 deletions docs/api/AudioUnit/AudioComponentDescription.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<Documentation>
<Docs DocId="F:AudioUnit.AudioComponentDescription.ComponentSubType">
<summary>Audio Unit component subtype, depending on the <see cref="F:AudioUnit.AudioComponentDescription.ComponentSubType" /> value you should use one of the values from <see cref="T:AudioUnit.AudioTypeOutput" />, <see cref="T:AudioUnit.AudioTypeMusicDevice" />, <see cref="T:AudioUnit.AudioTypeConverter" />, <see cref="T:AudioUnit.AudioTypeEffect" />, <see cref="T:AudioUnit.AudioTypeMixer" />, <format type="text/html"><a href="https://docs.microsoft.com/en-us/search/index?search=T:AudioUnit.AudioTypePanner,&amp;scope=Xamarin" title="T:AudioUnit.AudioTypePanner,">T:AudioUnit.AudioTypePanner,</a></format> <see cref="T:AudioUnit.AudioTypeGenerator" /></summary>
<remarks>
<para>Audio Unit component subtype, depending on the <see cref="F:AudioUnit.AudioComponentDescription.ComponentType" /> you should use one of the values from <see cref="T:AudioUnit.AudioTypeOutput" />, <see cref="T:AudioUnit.AudioTypeMusicDevice" />, <see cref="T:AudioUnit.AudioTypeConverter" />, <see cref="T:AudioUnit.AudioTypeEffect" />, <see cref="T:AudioUnit.AudioTypeMixer" />, <format type="text/html"><a href="https://docs.microsoft.com/en-us/search/index?search=T:AudioUnit.AudioTypePanner,&amp;scope=Xamarin" title="T:AudioUnit.AudioTypePanner,">T:AudioUnit.AudioTypePanner,</a></format> <see cref="T:AudioUnit.AudioTypeGenerator" />.</para>
<para />
<para>Since this is an integer, and the values on those enumerations are strongly typed, you typically need to cast.   The following example shows this:</para>
<para />
<para />
<example>
<code lang="csharp lang-csharp"><![CDATA[var processingGraph = new AUGraph ();

int samplerNode, ioNode;

var musicSampler = new AudioComponentDescription () {
ComponentManufacturer = AudioComponentManufacturerType.Apple,
ComponentType = AudioComponentType.MusicDevice,
ComponentSubType = (int)AudioTypeMusicDevice.Sampler
};
samplerNode = processingGraph.AddNode (musicSampler);

var remoteOutput = new AudioComponentDescription () {
ComponentManufacturer = AudioComponentManufacturerType.Apple,
ComponentType = AudioComponentType.Output,
ComponentSubType = (int)AudioTypeOutput.Remote
};
ioNode = processingGraph.AddNode (remoteOutput);

processingGraph.Open ();]]></code>
</example>.</remarks>
</Docs>
<Docs DocId="F:AudioUnit.AudioComponentDescription.ComponentSubType">
<summary>Audio Unit component subtype, depending on the <see cref="F:AudioUnit.AudioComponentDescription.ComponentSubType" /> value you should use one of the values from <see cref="T:AudioUnit.AudioTypeOutput" />, <see cref="T:AudioUnit.AudioTypeMusicDevice" />, <see cref="T:AudioUnit.AudioTypeConverter" />, <see cref="T:AudioUnit.AudioTypeEffect" />, <see cref="T:AudioUnit.AudioTypeMixer" />, <format type="text/html"><a href="https://docs.microsoft.com/en-us/search/index?search=T:AudioUnit.AudioTypePanner,&amp;scope=Xamarin" title="T:AudioUnit.AudioTypePanner,">T:AudioUnit.AudioTypePanner,</a></format> <see cref="T:AudioUnit.AudioTypeGenerator" /></summary>
<remarks>
<para>Audio Unit component subtype, depending on the <see cref="F:AudioUnit.AudioComponentDescription.ComponentType" /> you should use one of the values from <see cref="T:AudioUnit.AudioTypeOutput" />, <see cref="T:AudioUnit.AudioTypeMusicDevice" />, <see cref="T:AudioUnit.AudioTypeConverter" />, <see cref="T:AudioUnit.AudioTypeEffect" />, <see cref="T:AudioUnit.AudioTypeMixer" />, <format type="text/html"><a href="https://docs.microsoft.com/en-us/search/index?search=T:AudioUnit.AudioTypePanner,&amp;scope=Xamarin" title="T:AudioUnit.AudioTypePanner,">T:AudioUnit.AudioTypePanner,</a></format> <see cref="T:AudioUnit.AudioTypeGenerator" />.</para>
<para />
<para>Since this is an integer, and the values on those enumerations are strongly typed, you typically need to cast.   The following example shows this:</para>
<para />
<para />
<example>
<code lang="csharp lang-csharp"><![CDATA[var processingGraph = new AUGraph ();

int samplerNode, ioNode;

var musicSampler = new AudioComponentDescription () {
ComponentManufacturer = AudioComponentManufacturerType.Apple,
ComponentType = AudioComponentType.MusicDevice,
ComponentSubType = (int)AudioTypeMusicDevice.Sampler
};
samplerNode = processingGraph.AddNode (musicSampler);

var remoteOutput = new AudioComponentDescription () {
ComponentManufacturer = AudioComponentManufacturerType.Apple,
ComponentType = AudioComponentType.Output,
ComponentSubType = (int)AudioTypeOutput.Remote
};
ioNode = processingGraph.AddNode (remoteOutput);

processingGraph.Open ();]]></code>
</example>.</remarks>
</Docs>
</Documentation>
41 changes: 41 additions & 0 deletions docs/api/CoreLocation/CLPlacemark.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<Documentation>
<Docs DocId="P:CoreLocation.CLPlacemark.AddressDictionary">
<summary>Developers should not use this deprecated property. Developers should use 'CLPlacemark' properties to access data.</summary>
<value>To be added.</value>
<remarks>
<para>Available keys are:</para>
<list type="bullet">
<item>
<term>
<see cref="P:AddressBook.ABPersonAddressKey.Street" />
</term>
</item>
<item>
<term>
<see cref="P:AddressBook.ABPersonAddressKey.City" />
</term>
</item>
<item>
<term>
<see cref="P:AddressBook.ABPersonAddressKey.State" />
</term>
</item>
<item>
<term>
<see cref="P:AddressBook.ABPersonAddressKey.Zip" />
</term>
</item>
<item>
<term>
<see cref="P:AddressBook.ABPersonAddressKey.Country" />
</term>
</item>
<item>
<term>
<see cref="P:AddressBook.ABPersonAddressKey.CountryCode" />
</term>
</item>
</list>
</remarks>
</Docs>
</Documentation>
132 changes: 132 additions & 0 deletions docs/api/CoreMidi/Midi.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
<Documentation>
<Docs DocId="P:CoreMidi.Midi.NetworkNotificationContactsDidChange">
<summary>Notification raised when the MIDI network has changed.</summary>
<value>
</value>
<remarks>
<para id="tool-remark">This constant can be used with the <see cref="T:Foundation.NSNotificationCenter" /> to register a listener for this notification. This is an NSString instead of a string, because these values can be used as tokens in some native libraries instead of being used purely for their actual string content. The 'notification' parameter to the callback contains extra information that is specific to the notification type.</para>
<para id="tool-remark">If you want to subscribe to this notification, you can use the convenience <see cref="T:MediaPlayer.MPMediaLibrary.Notifications" />.<see cref="M:CoreMidi.Midi.Notifications.ObserveNetworkNotificationContactsDidChange(Foundation.NSObject,System.EventHandler{Foundation.NSNotificationEventArgs})" /> method which offers strongly typed access to the parameters of the notification.</para>
<para>The following example shows how to use the strongly typed Notifications class, to take the guesswork out of the available properties in the notification:</para>
<example>
<code lang="csharp lang-csharp"><![CDATA[
//
// Lambda style
//

// listening
notification = Midi.Notifications.ObserveNetworkNotificationContactsDidChange ((sender, args) => {
/* Access strongly typed args */
Console.WriteLine ("Notification: {0}", args.Notification);
});

// To stop listening:
notification.Dispose ();

//
// Method style
//
NSObject notification;
void Callback (object sender, Foundation.NSNotificationEventArgs args)
{
// Access strongly typed args
Console.WriteLine ("Notification: {0}", args.Notification);
}

void Setup ()
{
notification = Midi.Notifications.ObserveNetworkNotificationContactsDidChange (Callback);
}

void Teardown ()
{
notification.Dispose ();
}]]></code>
</example>
<para>The following example shows how to use the notification with the DefaultCenter API:</para>
<example>
<code lang="csharp lang-csharp"><![CDATA[
// Lambda style
NSNotificationCenter.DefaultCenter.AddObserver (
Midi.NetworkNotificationContactsDidChange, (notification) => {Console.WriteLine ("Received the notification Midi", notification); }


// Method style
void Callback (NSNotification notification)
{
Console.WriteLine ("Received a notification Midi", notification);
}

void Setup ()
{
NSNotificationCenter.DefaultCenter.AddObserver (Midi.NetworkNotificationContactsDidChange, Callback);
}
]]></code>
</example>
</remarks>
</Docs>
<Docs DocId="P:CoreMidi.Midi.NetworkNotificationSessionDidChange">
<summary>Notification raised when the MIDI session has changed</summary>
<value>
</value>
<remarks>
<para id="tool-remark">This constant can be used with the <see cref="T:Foundation.NSNotificationCenter" /> to register a listener for this notification. This is an NSString instead of a string, because these values can be used as tokens in some native libraries instead of being used purely for their actual string content. The 'notification' parameter to the callback contains extra information that is specific to the notification type.</para>
<para id="tool-remark">If you want to subscribe to this notification, you can use the convenience <see cref="T:MediaPlayer.MPMediaLibrary.Notifications" />.<see cref="M:CoreMidi.Midi.Notifications.ObserveNetworkNotificationSessionDidChange(Foundation.NSObject,System.EventHandler{Foundation.NSNotificationEventArgs})" /> method which offers strongly typed access to the parameters of the notification.</para>
<para>The following example shows how to use the strongly typed Notifications class, to take the guesswork out of the available properties in the notification:</para>
<example>
<code lang="csharp lang-csharp"><![CDATA[
//
// Lambda style
//

// listening
notification = Midi.Notifications.ObserveNetworkNotificationSessionDidChange ((sender, args) => {
/* Access strongly typed args */
Console.WriteLine ("Notification: {0}", args.Notification);
});

// To stop listening:
notification.Dispose ();

//
// Method style
//
NSObject notification;
void Callback (object sender, Foundation.NSNotificationEventArgs args)
{
// Access strongly typed args
Console.WriteLine ("Notification: {0}", args.Notification);
}

void Setup ()
{
notification = Midi.Notifications.ObserveNetworkNotificationSessionDidChange (Callback);
}

void Teardown ()
{
notification.Dispose ();
}]]></code>
</example>
<para>The following example shows how to use the notification with the DefaultCenter API:</para>
<example>
<code lang="csharp lang-csharp"><![CDATA[
// Lambda style
NSNotificationCenter.DefaultCenter.AddObserver (
Midi.NetworkNotificationSessionDidChange, (notification) => {Console.WriteLine ("Received the notification Midi", notification); }


// Method style
void Callback (NSNotification notification)
{
Console.WriteLine ("Received a notification Midi", notification);
}

void Setup ()
{
NSNotificationCenter.DefaultCenter.AddObserver (Midi.NetworkNotificationSessionDidChange, Callback);
}
]]></code>
</example>
</remarks>
</Docs>
</Documentation>
11 changes: 11 additions & 0 deletions docs/api/MultipeerConnectivity/MCAdvertiserAssistant.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<Documentation>
<Docs DocId="P:MultipeerConnectivity.MCAdvertiserAssistant.DiscoveryInfo">
<summary>A small dictionary of data available to browsers.</summary>
<value>This will contain the data passed in to the <format type="text/html"><a href="https://docs.microsoft.com/en-us/search/index?search=C:MultipeerConnectivity.MCAdvertiserAssistant(string,Foundation.NSDictionary, MultipeerConnectivity.MCSession)&amp;scope=Xamarin" title="C:MultipeerConnectivity.MCAdvertiserAssistant(string,Foundation.NSDictionary, MultipeerConnectivity.MCSession)">C:MultipeerConnectivity.MCAdvertiserAssistant(string,Foundation.NSDictionary, MultipeerConnectivity.MCSession)</a></format> constructor.</value>
<remarks>
<para>The total size of keys and data in this dictionary should be less than ~400 bytes so that it can fit into a single Bluetooth data packet.</para>
<para>The dictionary should map <see langword="string" />s to <see langword="string" />s. Each key-value pair must be no more than 255 bytes with the equals sign inserted between them (i.e., <c>System.Text.ASCIIEncoding.Unicode.GetByteCount(String.Format("{0}={1}",key,value)) &lt;= 255 </c>). Keys may not contain equals signs.</para>
<para>The dictionary is advertised as a Bonjour TXT record (see <format type="text/html"><a href="https://tools.ietf.org/html/rfc6763">RFC 6763, Section 6</a></format>).</para>
</remarks>
</Docs>
</Documentation>
Loading
Loading