From 193ae8bfdfe7c10ec17f7441d954397ebf15eae7 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Wed, 7 Aug 2019 19:40:32 -0400 Subject: [PATCH] [mediaaccessibility] Update for Xcode 11 beta 5 (#6733) --- src/MediaAccessibility/MediaAccessibility.cs | 28 +++++++++++++++++++ .../CaptionAppearanceTest.cs | 21 ++++++++++++++ .../xtro-sharpie/iOS-MediaAccessibility.todo | 1 - .../macOS-MediaAccessibility.todo | 1 - .../xtro-sharpie/tvOS-MediaAccessibility.todo | 1 - 5 files changed, 49 insertions(+), 3 deletions(-) delete mode 100644 tests/xtro-sharpie/iOS-MediaAccessibility.todo delete mode 100644 tests/xtro-sharpie/macOS-MediaAccessibility.todo delete mode 100644 tests/xtro-sharpie/tvOS-MediaAccessibility.todo diff --git a/src/MediaAccessibility/MediaAccessibility.cs b/src/MediaAccessibility/MediaAccessibility.cs index b221390d3a..b9aae9603d 100644 --- a/src/MediaAccessibility/MediaAccessibility.cs +++ b/src/MediaAccessibility/MediaAccessibility.cs @@ -262,6 +262,34 @@ namespace MediaAccessibility { behavior = (MACaptionAppearanceBehavior) (int) b; return (MACaptionAppearanceTextEdgeStyle) (int) rv; } + + [TV (13,0), Mac (10,15), iOS (13,0)] + [DllImport (Constants.MediaAccessibilityLibrary)] + static extern void MACaptionAppearanceDidDisplayCaptions (IntPtr /* CFArratRef */ strings); + + [TV (13,0), Mac (10,15), iOS (13,0)] + public static void DidDisplayCaptions (string[] strings) + { + if ((strings == null) || (strings.Length == 0)) + MACaptionAppearanceDidDisplayCaptions (IntPtr.Zero); + else { + using (var array = NSArray.FromStrings (strings)) + MACaptionAppearanceDidDisplayCaptions (array.Handle); + } + } + + [TV (13,0), Mac (10,15), iOS (13,0)] + public static void DidDisplayCaptions (NSAttributedString[] strings) + { + // CFAttributedString is “toll-free bridged” with its Foundation counterpart, NSAttributedString. + // https://developer.apple.com/documentation/corefoundation/cfattributedstring?language=objc + if ((strings == null) || (strings.Length == 0)) + MACaptionAppearanceDidDisplayCaptions (IntPtr.Zero); + else { + using (var array = NSArray.FromNSObjects (strings)) + MACaptionAppearanceDidDisplayCaptions (array.Handle); + } + } } static partial class MAAudibleMedia { diff --git a/tests/monotouch-test/MediaAccessibility/CaptionAppearanceTest.cs b/tests/monotouch-test/MediaAccessibility/CaptionAppearanceTest.cs index 65303f164e..77be934bbe 100644 --- a/tests/monotouch-test/MediaAccessibility/CaptionAppearanceTest.cs +++ b/tests/monotouch-test/MediaAccessibility/CaptionAppearanceTest.cs @@ -51,6 +51,27 @@ namespace MonoTouchFixtures.MediaAccessibility { Assert.That (MACaptionAppearance.GetDisplayType (MACaptionAppearanceDomain.Default), Is.EqualTo (MACaptionAppearanceDisplayType.Automatic).Or.EqualTo (MACaptionAppearanceDisplayType.AlwaysOn).Or.EqualTo (MACaptionAppearanceDisplayType.ForcedOnly), "Default"); } + + [Test] + public void DidDisplayCaptions () + { + TestRuntime.AssertXcodeVersion (11,0); + + // there's a known bug with UIPasteboard and NSAttributedString - and it makes our tests hang + var nsa = new NSAttributedString [0]; + MACaptionAppearance.DidDisplayCaptions (nsa); + nsa = new [] { new NSAttributedString ("Bonjour") }; + MACaptionAppearance.DidDisplayCaptions (nsa); + nsa = null; + MACaptionAppearance.DidDisplayCaptions (nsa); + + var a = new string [0]; + MACaptionAppearance.DidDisplayCaptions (a); + a = new [] { "Hello", "World" }; + MACaptionAppearance.DidDisplayCaptions (a); + a = null; + MACaptionAppearance.DidDisplayCaptions (a); + } } } diff --git a/tests/xtro-sharpie/iOS-MediaAccessibility.todo b/tests/xtro-sharpie/iOS-MediaAccessibility.todo deleted file mode 100644 index 8d6026a18b..0000000000 --- a/tests/xtro-sharpie/iOS-MediaAccessibility.todo +++ /dev/null @@ -1 +0,0 @@ -!missing-pinvoke! MACaptionAppearanceDidDisplayCaptions is not bound diff --git a/tests/xtro-sharpie/macOS-MediaAccessibility.todo b/tests/xtro-sharpie/macOS-MediaAccessibility.todo deleted file mode 100644 index 8d6026a18b..0000000000 --- a/tests/xtro-sharpie/macOS-MediaAccessibility.todo +++ /dev/null @@ -1 +0,0 @@ -!missing-pinvoke! MACaptionAppearanceDidDisplayCaptions is not bound diff --git a/tests/xtro-sharpie/tvOS-MediaAccessibility.todo b/tests/xtro-sharpie/tvOS-MediaAccessibility.todo deleted file mode 100644 index 8d6026a18b..0000000000 --- a/tests/xtro-sharpie/tvOS-MediaAccessibility.todo +++ /dev/null @@ -1 +0,0 @@ -!missing-pinvoke! MACaptionAppearanceDidDisplayCaptions is not bound