throttle accessibility events

This commit is contained in:
Kyle Spearrin 2018-02-03 09:21:27 -05:00
parent 65eb7662ad
commit 89f32beec5
1 changed files with 19 additions and 1 deletions

View File

@ -90,6 +90,9 @@ namespace Bit.Android
private HashSet<string> _launcherPackageNames = null; private HashSet<string> _launcherPackageNames = null;
private DateTime? _lastLauncherSetBuilt = null; private DateTime? _lastLauncherSetBuilt = null;
private TimeSpan _rebuildLauncherSpan = TimeSpan.FromHours(1); private TimeSpan _rebuildLauncherSpan = TimeSpan.FromHours(1);
private DateTime? _lastFocusEvent = null;
private DateTime? _lastWindowEvent = null;
private TimeSpan _eventSpan = TimeSpan.FromMilliseconds(500);
public AutofillService() public AutofillService()
{ {
@ -114,6 +117,8 @@ namespace Bit.Android
{ {
return; return;
} }
//global::Android.Util.Log.Info("bw_access", e.PackageName + " fired event " + e.EventType);
var root = RootInActiveWindow; var root = RootInActiveWindow;
if(root == null || root.PackageName != e.PackageName) if(root == null || root.PackageName != e.PackageName)
@ -136,6 +141,12 @@ namespace Bit.Android
break; break;
} }
if(_lastFocusEvent != null && (DateTime.Now - _lastFocusEvent.Value) < _eventSpan)
{
break;
}
_lastFocusEvent = DateTime.Now;
if(e.PackageName == BitwardenPackage) if(e.PackageName == BitwardenPackage)
{ {
CancelNotification(notificationManager); CancelNotification(notificationManager);
@ -153,7 +164,14 @@ namespace Bit.Android
{ {
break; break;
} }
else if(_appSettings.AutofillPasswordField && AutofillActivity.LastCredentials == null)
if(_lastWindowEvent != null && (DateTime.Now - _lastWindowEvent.Value) < _eventSpan)
{
break;
}
_lastWindowEvent = DateTime.Now;
if(_appSettings.AutofillPasswordField && AutofillActivity.LastCredentials == null)
{ {
if(string.IsNullOrWhiteSpace(_lastNotificationUri)) if(string.IsNullOrWhiteSpace(_lastNotificationUri))
{ {