mirror of
https://github.com/bitwarden/mobile
synced 2025-12-05 23:53:33 +00:00
cleanup on accessibility service
This commit is contained in:
@@ -187,7 +187,6 @@ namespace Bit.Droid.Accessibility
|
|||||||
return n?.ClassName?.Contains("EditText") ?? false;
|
return n?.ClassName?.Contains("EditText") ?? false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void FillCredentials(AccessibilityNodeInfo usernameNode,
|
public static void FillCredentials(AccessibilityNodeInfo usernameNode,
|
||||||
IEnumerable<AccessibilityNodeInfo> passwordNodes)
|
IEnumerable<AccessibilityNodeInfo> passwordNodes)
|
||||||
{
|
{
|
||||||
@@ -269,7 +268,7 @@ namespace Bit.Droid.Accessibility
|
|||||||
return allEditTexts.TakeWhile(n => !n.Password).LastOrDefault();
|
return allEditTexts.TakeWhile(n => !n.Password).LastOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Boolean OverlayPermitted(Context context)
|
public static bool OverlayPermitted(Context context)
|
||||||
{
|
{
|
||||||
if(Build.VERSION.SdkInt >= BuildVersionCodes.M)
|
if(Build.VERSION.SdkInt >= BuildVersionCodes.M)
|
||||||
{
|
{
|
||||||
@@ -282,7 +281,7 @@ namespace Bit.Droid.Accessibility
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Boolean OpenOverlaySettings(Context context, string packageName)
|
public static bool OpenOverlaySettings(Context context, string packageName)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -323,9 +322,7 @@ namespace Bit.Droid.Accessibility
|
|||||||
var eSrcRectTop = eSrcRect.Top;
|
var eSrcRectTop = eSrcRect.Top;
|
||||||
|
|
||||||
var navBarHeight = GetNavigationBarHeight();
|
var navBarHeight = GetNavigationBarHeight();
|
||||||
|
|
||||||
var calculatedTop = rootRectHeight - eSrcRectTop - navBarHeight;
|
var calculatedTop = rootRectHeight - eSrcRectTop - navBarHeight;
|
||||||
|
|
||||||
return new Point(eSrcRectLeft, calculatedTop);
|
return new Point(eSrcRectLeft, calculatedTop);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -339,10 +336,9 @@ namespace Bit.Droid.Accessibility
|
|||||||
return GetSystemResourceDimenPx("navigation_bar_height");
|
return GetSystemResourceDimenPx("navigation_bar_height");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int GetSystemResourceDimenPx(String resName)
|
private static int GetSystemResourceDimenPx(string resName)
|
||||||
{
|
{
|
||||||
var activity = (MainActivity)CrossCurrentActivity.Current.Activity;
|
var activity = (MainActivity)CrossCurrentActivity.Current.Activity;
|
||||||
|
|
||||||
var barHeight = 0;
|
var barHeight = 0;
|
||||||
var resourceId = activity.Resources.GetIdentifier(resName, "dimen", "android");
|
var resourceId = activity.Resources.GetIdentifier(resName, "dimen", "android");
|
||||||
if(resourceId > 0)
|
if(resourceId > 0)
|
||||||
|
|||||||
@@ -62,19 +62,18 @@ namespace Bit.Droid.Accessibility
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var isKnownBroswer = AccessibilityHelpers.SupportedBrowsers.ContainsKey(root.PackageName);
|
|
||||||
|
|
||||||
// AccessibilityHelpers.PrintTestData(root, e);
|
// AccessibilityHelpers.PrintTestData(root, e);
|
||||||
|
|
||||||
switch(e.EventType)
|
switch(e.EventType)
|
||||||
{
|
{
|
||||||
case EventTypes.ViewFocused:
|
case EventTypes.ViewFocused:
|
||||||
case EventTypes.ViewClicked:
|
case EventTypes.ViewClicked:
|
||||||
if (e.EventType == EventTypes.ViewClicked && isKnownBroswer)
|
var isKnownBroswer = AccessibilityHelpers.SupportedBrowsers.ContainsKey(root.PackageName);
|
||||||
|
if(e.EventType == EventTypes.ViewClicked && isKnownBroswer)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (e.Source == null || !e.Source.Password)
|
if(e.Source == null || !e.Source.Password)
|
||||||
{
|
{
|
||||||
CancelOverlayPrompt();
|
CancelOverlayPrompt();
|
||||||
break;
|
break;
|
||||||
@@ -95,7 +94,7 @@ namespace Bit.Droid.Accessibility
|
|||||||
break;
|
break;
|
||||||
case EventTypes.WindowContentChanged:
|
case EventTypes.WindowContentChanged:
|
||||||
case EventTypes.WindowStateChanged:
|
case EventTypes.WindowStateChanged:
|
||||||
if (e.Source == null || e.Source.Password)
|
if(e.Source == null || e.Source.Password)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -137,7 +136,7 @@ namespace Bit.Droid.Accessibility
|
|||||||
e.Dispose();
|
e.Dispose();
|
||||||
}
|
}
|
||||||
// Suppress exceptions so that service doesn't crash.
|
// Suppress exceptions so that service doesn't crash.
|
||||||
catch(Exception ex)
|
catch(Exception ex)
|
||||||
{
|
{
|
||||||
System.Diagnostics.Debug.WriteLine(">>> Exception: " + ex.StackTrace);
|
System.Diagnostics.Debug.WriteLine(">>> Exception: " + ex.StackTrace);
|
||||||
}
|
}
|
||||||
@@ -202,13 +201,13 @@ namespace Bit.Droid.Accessibility
|
|||||||
}
|
}
|
||||||
|
|
||||||
var uri = AccessibilityHelpers.GetUri(root);
|
var uri = AccessibilityHelpers.GetUri(root);
|
||||||
if (string.IsNullOrWhiteSpace(uri))
|
if(string.IsNullOrWhiteSpace(uri))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
WindowManagerTypes windowManagerType;
|
WindowManagerTypes windowManagerType;
|
||||||
if (Build.VERSION.SdkInt >= BuildVersionCodes.O)
|
if(Build.VERSION.SdkInt >= BuildVersionCodes.O)
|
||||||
{
|
{
|
||||||
windowManagerType = WindowManagerTypes.ApplicationOverlay;
|
windowManagerType = WindowManagerTypes.ApplicationOverlay;
|
||||||
}
|
}
|
||||||
@@ -222,7 +221,7 @@ namespace Bit.Droid.Accessibility
|
|||||||
ViewGroup.LayoutParams.WrapContent,
|
ViewGroup.LayoutParams.WrapContent,
|
||||||
windowManagerType,
|
windowManagerType,
|
||||||
WindowManagerFlags.NotFocusable | WindowManagerFlags.NotTouchModal,
|
WindowManagerFlags.NotFocusable | WindowManagerFlags.NotTouchModal,
|
||||||
Android.Graphics.Format.Transparent);
|
Format.Transparent);
|
||||||
|
|
||||||
var anchorPosition = AccessibilityHelpers.GetOverlayAnchorPosition(root, e);
|
var anchorPosition = AccessibilityHelpers.GetOverlayAnchorPosition(root, e);
|
||||||
|
|
||||||
@@ -234,26 +233,27 @@ namespace Bit.Droid.Accessibility
|
|||||||
intent.PutExtra("uri", uri);
|
intent.PutExtra("uri", uri);
|
||||||
intent.SetFlags(ActivityFlags.NewTask | ActivityFlags.SingleTop | ActivityFlags.ClearTop);
|
intent.SetFlags(ActivityFlags.NewTask | ActivityFlags.SingleTop | ActivityFlags.ClearTop);
|
||||||
|
|
||||||
if (_windowManager == null)
|
if(_windowManager == null)
|
||||||
{
|
{
|
||||||
_windowManager = GetSystemService(WindowService).JavaCast<IWindowManager>();
|
_windowManager = GetSystemService(WindowService).JavaCast<IWindowManager>();
|
||||||
}
|
}
|
||||||
|
|
||||||
var updateView = false;
|
var updateView = false;
|
||||||
if (_overlayView != null)
|
if(_overlayView != null)
|
||||||
{
|
{
|
||||||
updateView = true;
|
updateView = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
_overlayView = AccessibilityHelpers.GetOverlayView(this);
|
_overlayView = AccessibilityHelpers.GetOverlayView(this);
|
||||||
_overlayView.Click += (sender, eventArgs) => {
|
_overlayView.Click += (sender, eventArgs) =>
|
||||||
|
{
|
||||||
CancelOverlayPrompt();
|
CancelOverlayPrompt();
|
||||||
StartActivity(intent);
|
StartActivity(intent);
|
||||||
};
|
};
|
||||||
|
|
||||||
_lastNotificationUri = uri;
|
_lastNotificationUri = uri;
|
||||||
|
|
||||||
if (updateView)
|
if(updateView)
|
||||||
{
|
{
|
||||||
_windowManager.UpdateViewLayout(_overlayView, layoutParams);
|
_windowManager.UpdateViewLayout(_overlayView, layoutParams);
|
||||||
}
|
}
|
||||||
@@ -262,7 +262,8 @@ namespace Bit.Droid.Accessibility
|
|||||||
_windowManager.AddView(_overlayView, layoutParams);
|
_windowManager.AddView(_overlayView, layoutParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
System.Diagnostics.Debug.WriteLine(">>> Accessibility Overlay View " + (updateView ? "Updated to" : "Added at") + " X:{0} Y:{1}", layoutParams.X, layoutParams.Y);
|
System.Diagnostics.Debug.WriteLine(">>> Accessibility Overlay View {0} X:{1} Y:{2}",
|
||||||
|
updateView ? "Updated to" : "Added at", layoutParams.X, layoutParams.Y);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool SkipPackage(string eventPackageName)
|
private bool SkipPackage(string eventPackageName)
|
||||||
|
|||||||
Reference in New Issue
Block a user