1560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovpackage foo.bar.fill;
2560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov
3560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.annotation.Nullable;
4560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.app.Activity;
5560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.app.assist.AssistStructure;
6560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.app.assist.AssistStructure.ViewNode;
7560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.content.Intent;
8560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.os.Bundle;
9560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.service.autofill.Dataset;
10560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.service.autofill.FillResponse;
11560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.view.View;
12560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.view.autofill.AutofillManager;
13560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.view.autofill.AutofillValue;
14560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.widget.Button;
15560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovimport android.widget.RemoteViews;
16560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov
17560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganovpublic class AuthActivity extends Activity {
18560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov    @Override
19560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov    protected void onCreate(@Nullable Bundle savedInstanceState) {
20560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov        super.onCreate(savedInstanceState);
21560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov
22560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov        setContentView(R.layout.activity_main);
23560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov
24560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov        AssistStructure structure = getIntent().getParcelableExtra(
25560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                AutofillManager.EXTRA_ASSIST_STRUCTURE);
26560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov
27560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov        ViewNode username = FillService.findUsername(structure);
28560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov        ViewNode password = FillService.findPassword(structure);
29560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov
30560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov        final FillResponse response;
31560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov        final Dataset dataset;
32560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov
33560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov        if (FillService.TEST_RESPONSE_AUTH) {
34560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            RemoteViews presentation1 = new RemoteViews(getPackageName(), R.layout.list_item);
35560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            presentation1.setTextViewText(R.id.text1,FillService.DATASET1_NAME);
36560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov
37560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            RemoteViews presentation2 = new RemoteViews(getPackageName(), R.layout.list_item);
38560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            presentation2.setTextViewText(R.id.text1,FillService.DATASET2_NAME);
39560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov
40560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            response = new FillResponse.Builder()
41560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                    .addDataset(new Dataset.Builder(presentation1)
42560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                            .setValue(username.getAutofillId(),
43560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                                    AutofillValue.forText(FillService.DATASET1_USERNAME))
44560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                            .setValue(password.getAutofillId(),
45560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                                    AutofillValue.forText(FillService.DATASET1_PASSWORD))
46560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                            .build())
47560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                    .addDataset(new Dataset.Builder(presentation2)
48560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                            .setValue(username.getAutofillId(),
49560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                                    AutofillValue.forText(FillService.DATASET2_USERNAME))
50560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                            .setValue(password.getAutofillId(),
51560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                                    AutofillValue.forText(FillService.DATASET2_PASSWORD))
52560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                            .build())
53560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                    .build();
54560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            dataset = null;
55560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov        } else {
56560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            RemoteViews presentation = new RemoteViews(getPackageName(), R.layout.list_item);
57560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            presentation.setTextViewText(R.id.text1,FillService.DATASET2_NAME);
58560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov
59560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            dataset = new Dataset.Builder(presentation)
60560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                    .setValue(username.getAutofillId(),
61560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                            AutofillValue.forText(FillService.DATASET5_USERNAME))
62560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                    .setValue(password.getAutofillId(),
63560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                            AutofillValue.forText(FillService.DATASET5_PASSWORD))
64560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                    .build();
65560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            response = null;
66560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov        }
67560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov
68560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov        Button button = (Button) findViewById(R.id.confirm);
69560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov        button.setOnClickListener((View v) -> {
70560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            Intent result = new Intent();
71560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            if (FillService.TEST_RESPONSE_AUTH) {
72560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                result.putExtra(AutofillManager.EXTRA_AUTHENTICATION_RESULT, response);
73560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            } else {
74560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov                result.putExtra(AutofillManager.EXTRA_AUTHENTICATION_RESULT, dataset);
75560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            }
76560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            setResult(RESULT_OK, result);
77560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov            finish();
78560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov        });
79560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov    }
80560a7ca909361bcf6d64f0c217a3a7e103f05d43Svet Ganov}
81