Skip to content

Commit 47f370f

Browse files
atsushienojonpryor
authored andcommitted
[Mono.Android] Change GlobalAction to Action where appropriate (#859)
Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=51664 The fixes are twofolds: - Add `GetAction()`/`SetAction()` to alter `Action` property and add `[Obsolete]` on the `Action` property. - Add `PerformAccessibilityAction()`/`PerformAction()` overloads that use Action instead. In the future we may remove `[Obsolete]`d members so that we can bring back a sanitized API.
1 parent 1b72a18 commit 47f370f

File tree

8 files changed

+75
-6
lines changed

8 files changed

+75
-6
lines changed

build-tools/enumification-helpers/methodmap.ext.csv

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -744,9 +744,9 @@
744744
16, android.view.accessibility, AccessibilityNodeInfo, focusSearch, direction, Android.Views.FocusSearchDirection
745745
16, android.view.accessibility, AccessibilityNodeInfo, getMovementGranularities, return, Android.Views.Accessibility.MovementGranularity
746746
16, android.view.accessibility, AccessibilityNodeInfo, setMovementGranularities, granularities, Android.Views.Accessibility.MovementGranularity
747-
16, android.view.accessibility, AccessibilityNodeProvider, performAction, action, Android.AccessibilityServices.GlobalAction
748-
16, android.view, View, performAccessibilityAction, action, Android.AccessibilityServices.GlobalAction
749-
16, android.view, View.AccessibilityDelegate, performAccessibilityAction, action, Android.AccessibilityServices.GlobalAction
747+
16, android.view.accessibility, AccessibilityNodeProvider, performAction, action, Android.Views.Accessibility.Action
748+
16, android.view, View, performAccessibilityAction, action, Android.Views.Accessibility.Action
749+
16, android.view, View.AccessibilityDelegate, performAccessibilityAction, action, Android.Views.Accessibility.Action
750750
16, android.view, View, getImportantForAccessibility, return, Android.Views.ImportantForAccessibility
751751
16, android.view, View, setImportantForAccessibility, mode, Android.Views.ImportantForAccessibility
752752
16, android.view, View, getWindowSystemUiVisibility, return, Android.Views.SystemUiFlags

src/Mono.Android/Android.Views.Accessibility/AccessibilityEvent.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,18 @@
1+
using System;
2+
using Android.AccessibilityServices;
3+
14
namespace Android.Views.Accessibility {
25

36
partial class AccessibilityEvent {
47

8+
#if ANDROID_16
9+
[Obsolete ("This maps to incorrect type. Use GetAction() and SetAction() until we fix the API")]
10+
public GlobalAction Action {
11+
get { return (GlobalAction) GetAction (); }
12+
set { SetAction ((GlobalAction) value); }
13+
}
14+
#endif // ANDROID_16
15+
516
#if ANDROID_14
617
public new string BeforeText {
718
get {return base.BeforeText;}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using System;
2+
using Android.AccessibilityServices;
3+
using Android.OS;
4+
5+
namespace Android.Views.Accessibility
6+
{
7+
public partial class AccessibilityNodeProvider
8+
{
9+
#if ANDROID_16
10+
public bool PerformAction (int virtualViewId, GlobalAction action, Bundle arguments)
11+
{
12+
return PerformAction (virtualViewId, (Action) action, arguments);
13+
}
14+
#endif
15+
}
16+
}
17+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using System;
2+
using Android.AccessibilityServices;
3+
using Android.OS;
4+
5+
namespace Android.Views
6+
{
7+
public partial class View
8+
{
9+
public partial class AccessibilityDelegate
10+
{
11+
#if ANDROID_16
12+
[Obsolete ("This method takes incorrect enum type. Please use PerformAccessibilityAction() overload with Action instead.")]
13+
public bool PerformAccessibilityAction (View host, GlobalAction action, Bundle args)
14+
{
15+
return PerformAccessibilityAction (host, (Android.Views.Accessibility.Action) (int) action, args);
16+
}
17+
}
18+
#endif
19+
}
20+
}
21+

src/Mono.Android/Android.Views/View.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using System;
22
using System.Collections.Generic;
3+
using Android.AccessibilityServices;
4+
using Android.OS;
35
using Android.Runtime;
46

57
namespace Android.Views {
@@ -11,6 +13,14 @@ public enum SystemUiFlags {
1113

1214
public partial class View {
1315

16+
#if ANDROID_16
17+
[Obsolete ("This method uses wrong enum type. Please use PerformAccessibilityAction(Action) instead.")]
18+
public bool PerformAccessibilityAction (GlobalAction action, Bundle arguments)
19+
{
20+
return PerformAccessibilityAction ((Android.Views.Accessibility.Action) (int) action, arguments);
21+
}
22+
#endif
23+
1424
public T FindViewById<T> (int id)
1525
where T : Android.Views.View
1626
{

src/Mono.Android/Mono.Android.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@
230230
<Compile Include="Android.Util\Base64OutputStream.cs" />
231231
<Compile Include="Android.Util\Log.cs" />
232232
<Compile Include="Android.Util\SparseArray.cs" />
233+
<Compile Include="Android.Views\View.AccessibilityDelegate.cs" />
233234
<Compile Include="Android.Views\InputDevice.cs" />
234235
<Compile Include="Android.Views\KeyCharacterMap.cs" />
235236
<Compile Include="Android.Views\KeyEvent.cs" />
@@ -240,6 +241,7 @@
240241
<Compile Include="Android.Views\Window.cs" />
241242
<Compile Include="Android.Views.Accessibility\AccessibilityEvent.cs" />
242243
<Compile Include="Android.Views.Accessibility\AccessibilityManager.cs" />
244+
<Compile Include="Android.Views.Accessibility\AccessibilityNodeProvider.cs" />
243245
<Compile Include="Android.Views.InputMethods\InputMethodManager.cs" />
244246
<Compile Include="Android.Widget\AbsListView.cs" />
245247
<Compile Include="Android.Widget\AdapterView.cs" />

src/Mono.Android/metadata

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@
33
regarded as obfuscated, so avoid that by explicitly marking not. -->
44
<attr path="/api/package[@name='android']/class[@name='Manifest.permission']" name="obfuscated">false</attr>
55

6+
<!-- FIXME: we should remove this fixup in the future release. It was
7+
introduced due to mismatching enum use, and we already marked the API as
8+
[Obsolete] -->
9+
<attr path="/api/package[@name='android.view.accessibility']/class[@name='AccessibilityEvent']/method[@name='getAction']" name="propertyName"></attr>
10+
<attr path="/api/package[@name='android.view.accessibility']/class[@name='AccessibilityEvent']/method[@name='setAction']" name="propertyName"></attr>
11+
<attr path="/api/package[@name='android.view']/class[@name='View']/method[@name='getAccessibilityAction']" name="propertyName"></attr>
12+
<attr path="/api/package[@name='android.view']/class[@name='View']/method[@name='setAccessibilityAction']" name="propertyName"></attr>
13+
614
<!-- FIXME: hack to workaround api-merge bug that brings two identical methods (it doesn't care generic type params) -->
715
<remove-node path="/api/package[@name='android.animation']/interface[@name='TypeEvaluator']/method[@name='evaluate' and @merge.SourceFile]" />
816

src/Mono.Android/methodmap.csv

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1340,9 +1340,9 @@
13401340
16, android.view.accessibility, AccessibilityNodeInfo, focusSearch, direction, Android.Views.FocusSearchDirection
13411341
16, android.view.accessibility, AccessibilityNodeInfo, getMovementGranularities, return, Android.Views.Accessibility.MovementGranularity
13421342
16, android.view.accessibility, AccessibilityNodeInfo, setMovementGranularities, granularities, Android.Views.Accessibility.MovementGranularity
1343-
16, android.view.accessibility, AccessibilityNodeProvider, performAction, action, Android.AccessibilityServices.GlobalAction
1344-
16, android.view, View, performAccessibilityAction, action, Android.AccessibilityServices.GlobalAction
1345-
16, android.view, View.AccessibilityDelegate, performAccessibilityAction, action, Android.AccessibilityServices.GlobalAction
1343+
16, android.view.accessibility, AccessibilityNodeProvider, performAction, action, Android.Views.Accessibility.Action
1344+
16, android.view, View, performAccessibilityAction, action, Android.Views.Accessibility.Action
1345+
16, android.view, View.AccessibilityDelegate, performAccessibilityAction, action, Android.Views.Accessibility.Action
13461346
16, android.view, View, getImportantForAccessibility, return, Android.Views.ImportantForAccessibility
13471347
16, android.view, View, setImportantForAccessibility, mode, Android.Views.ImportantForAccessibility
13481348
16, android.view, View, getWindowSystemUiVisibility, return, Android.Views.SystemUiFlags

0 commit comments

Comments
 (0)