Skip to content

Commit

Permalink
[Mono.Android] Change GlobalAction to Action where appropriate (#859)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
atsushieno authored and jonpryor committed Sep 26, 2017
1 parent a6a2d18 commit cfa407e
Show file tree
Hide file tree
Showing 8 changed files with 75 additions and 6 deletions.
6 changes: 3 additions & 3 deletions build-tools/enumification-helpers/methodmap.ext.csv
Original file line number Diff line number Diff line change
Expand Up @@ -744,9 +744,9 @@
16, android.view.accessibility, AccessibilityNodeInfo, focusSearch, direction, Android.Views.FocusSearchDirection
16, android.view.accessibility, AccessibilityNodeInfo, getMovementGranularities, return, Android.Views.Accessibility.MovementGranularity
16, android.view.accessibility, AccessibilityNodeInfo, setMovementGranularities, granularities, Android.Views.Accessibility.MovementGranularity
16, android.view.accessibility, AccessibilityNodeProvider, performAction, action, Android.AccessibilityServices.GlobalAction
16, android.view, View, performAccessibilityAction, action, Android.AccessibilityServices.GlobalAction
16, android.view, View.AccessibilityDelegate, performAccessibilityAction, action, Android.AccessibilityServices.GlobalAction
16, android.view.accessibility, AccessibilityNodeProvider, performAction, action, Android.Views.Accessibility.Action
16, android.view, View, performAccessibilityAction, action, Android.Views.Accessibility.Action
16, android.view, View.AccessibilityDelegate, performAccessibilityAction, action, Android.Views.Accessibility.Action
16, android.view, View, getImportantForAccessibility, return, Android.Views.ImportantForAccessibility
16, android.view, View, setImportantForAccessibility, mode, Android.Views.ImportantForAccessibility
16, android.view, View, getWindowSystemUiVisibility, return, Android.Views.SystemUiFlags
Expand Down
11 changes: 11 additions & 0 deletions src/Mono.Android/Android.Views.Accessibility/AccessibilityEvent.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
using System;
using Android.AccessibilityServices;

namespace Android.Views.Accessibility {

partial class AccessibilityEvent {

#if ANDROID_16
[Obsolete ("This maps to incorrect type. Use GetAction() and SetAction() until we fix the API")]
public GlobalAction Action {
get { return (GlobalAction) GetAction (); }
set { SetAction ((GlobalAction) value); }
}
#endif // ANDROID_16

#if ANDROID_14
public new string BeforeText {
get {return base.BeforeText;}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System;
using Android.AccessibilityServices;
using Android.OS;

namespace Android.Views.Accessibility
{
public partial class AccessibilityNodeProvider
{
#if ANDROID_16
public bool PerformAction (int virtualViewId, GlobalAction action, Bundle arguments)
{
return PerformAction (virtualViewId, (Action) action, arguments);
}
#endif
}
}

21 changes: 21 additions & 0 deletions src/Mono.Android/Android.Views/View.AccessibilityDelegate.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System;
using Android.AccessibilityServices;
using Android.OS;

namespace Android.Views
{
public partial class View
{
public partial class AccessibilityDelegate
{
#if ANDROID_16
[Obsolete ("This method takes incorrect enum type. Please use PerformAccessibilityAction() overload with Action instead.")]
public bool PerformAccessibilityAction (View host, GlobalAction action, Bundle args)
{
return PerformAccessibilityAction (host, (Android.Views.Accessibility.Action) (int) action, args);
}
}
#endif
}
}

10 changes: 10 additions & 0 deletions src/Mono.Android/Android.Views/View.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using Android.AccessibilityServices;
using Android.OS;
using Android.Runtime;

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

public partial class View {

#if ANDROID_16
[Obsolete ("This method uses wrong enum type. Please use PerformAccessibilityAction(Action) instead.")]
public bool PerformAccessibilityAction (GlobalAction action, Bundle arguments)
{
return PerformAccessibilityAction ((Android.Views.Accessibility.Action) (int) action, arguments);
}
#endif

public T FindViewById<T> (int id)
where T : Android.Views.View
{
Expand Down
2 changes: 2 additions & 0 deletions src/Mono.Android/Mono.Android.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,7 @@
<Compile Include="Android.Util\Base64OutputStream.cs" />
<Compile Include="Android.Util\Log.cs" />
<Compile Include="Android.Util\SparseArray.cs" />
<Compile Include="Android.Views\View.AccessibilityDelegate.cs" />
<Compile Include="Android.Views\InputDevice.cs" />
<Compile Include="Android.Views\KeyCharacterMap.cs" />
<Compile Include="Android.Views\KeyEvent.cs" />
Expand All @@ -244,6 +245,7 @@
<Compile Include="Android.Views\Window.cs" />
<Compile Include="Android.Views.Accessibility\AccessibilityEvent.cs" />
<Compile Include="Android.Views.Accessibility\AccessibilityManager.cs" />
<Compile Include="Android.Views.Accessibility\AccessibilityNodeProvider.cs" />
<Compile Include="Android.Views.InputMethods\InputMethodManager.cs" />
<Compile Include="Android.Widget\AbsListView.cs" />
<Compile Include="Android.Widget\AdapterView.cs" />
Expand Down
8 changes: 8 additions & 0 deletions src/Mono.Android/metadata
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
regarded as obfuscated, so avoid that by explicitly marking not. -->
<attr path="/api/package[@name='android']/class[@name='Manifest.permission']" name="obfuscated">false</attr>

<!-- FIXME: we should remove this fixup in the future release. It was
introduced due to mismatching enum use, and we already marked the API as
[Obsolete] -->
<attr path="/api/package[@name='android.view.accessibility']/class[@name='AccessibilityEvent']/method[@name='getAction']" name="propertyName"></attr>
<attr path="/api/package[@name='android.view.accessibility']/class[@name='AccessibilityEvent']/method[@name='setAction']" name="propertyName"></attr>
<attr path="/api/package[@name='android.view']/class[@name='View']/method[@name='getAccessibilityAction']" name="propertyName"></attr>
<attr path="/api/package[@name='android.view']/class[@name='View']/method[@name='setAccessibilityAction']" name="propertyName"></attr>

<!-- FIXME: hack to workaround api-merge bug that brings two identical methods (it doesn't care generic type params) -->
<remove-node path="/api/package[@name='android.animation']/interface[@name='TypeEvaluator']/method[@name='evaluate' and @merge.SourceFile]" />

Expand Down
6 changes: 3 additions & 3 deletions src/Mono.Android/methodmap.csv
Original file line number Diff line number Diff line change
Expand Up @@ -1340,9 +1340,9 @@
16, android.view.accessibility, AccessibilityNodeInfo, focusSearch, direction, Android.Views.FocusSearchDirection
16, android.view.accessibility, AccessibilityNodeInfo, getMovementGranularities, return, Android.Views.Accessibility.MovementGranularity
16, android.view.accessibility, AccessibilityNodeInfo, setMovementGranularities, granularities, Android.Views.Accessibility.MovementGranularity
16, android.view.accessibility, AccessibilityNodeProvider, performAction, action, Android.AccessibilityServices.GlobalAction
16, android.view, View, performAccessibilityAction, action, Android.AccessibilityServices.GlobalAction
16, android.view, View.AccessibilityDelegate, performAccessibilityAction, action, Android.AccessibilityServices.GlobalAction
16, android.view.accessibility, AccessibilityNodeProvider, performAction, action, Android.Views.Accessibility.Action
16, android.view, View, performAccessibilityAction, action, Android.Views.Accessibility.Action
16, android.view, View.AccessibilityDelegate, performAccessibilityAction, action, Android.Views.Accessibility.Action
16, android.view, View, getImportantForAccessibility, return, Android.Views.ImportantForAccessibility
16, android.view, View, setImportantForAccessibility, mode, Android.Views.ImportantForAccessibility
16, android.view, View, getWindowSystemUiVisibility, return, Android.Views.SystemUiFlags
Expand Down

0 comments on commit cfa407e

Please sign in to comment.