public async override void OnFillRequest(FillRequest request, CancellationSignal cancellationSignal, FillCallback callback)
        {
            var structure = request.FillContexts?.LastOrDefault()?.Structure;

            if (structure == null)
            {
                return;
            }

            var parser = new Parser(structure);

            parser.Parse();

            if (string.IsNullOrWhiteSpace(parser.Uri) || parser.Uri == "androidapp://com.x8bit.bitwarden" ||
                parser.Uri == "androidapp://android" || !parser.FieldCollection.Fillable)
            {
                return;
            }

            if (_lockService == null)
            {
                _lockService = Resolver.Resolve <ILockService>();
            }

            List <FilledItem> items = null;
            var locked = (await _lockService.GetLockTypeAsync(false)) != LockType.None;

            if (!locked)
            {
                if (_cipherService == null)
                {
                    _cipherService = Resolver.Resolve <ICipherService>();
                }

                items = await AutofillHelpers.GetFillItemsAsync(parser, _cipherService);
            }

            // build response
            var response = AutofillHelpers.BuildFillResponse(this, parser, items, locked);

            callback.OnSuccess(response);
        }
        public async override void OnFillRequest(FillRequest request, CancellationSignal cancellationSignal, FillCallback callback)
        {
            var structure = request.FillContexts?.LastOrDefault()?.Structure;

            if (structure == null)
            {
                return;
            }

            var parser = new Parser(structure);

            parser.Parse();

            if (!parser.ShouldAutofill)
            {
                return;
            }

            if (_lockService == null)
            {
                _lockService = Resolver.Resolve <ILockService>();
            }

            List <FilledItem> items = null;
            var locked = (await _lockService.GetLockTypeAsync(false)) != LockType.None;

            if (!locked)
            {
                if (_cipherService == null)
                {
                    _cipherService = Resolver.Resolve <ICipherService>();
                }

                items = await AutofillHelpers.GetFillItemsAsync(parser, _cipherService);
            }

            // build response
            var response = AutofillHelpers.BuildFillResponse(this, parser, items, locked);

            callback.OnSuccess(response);
        }