Skip to content

Commit 09b8ceb

Browse files
committed
Ignore autofill if db not configured
1 parent b8a32ab commit 09b8ceb

File tree

5 files changed

+27
-15
lines changed

5 files changed

+27
-15
lines changed

app/src/main/java/org/sorz/lab/tinykeepass/BaseActivity.java

-4
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,6 @@ protected void getDatabaseKeys(Consumer<List<String>> onKeyRetrieved,
8686
getKey();
8787
}
8888

89-
protected File getDatabaseFile() {
90-
return new File(getNoBackupFilesDir(), FetchDatabaseTask.DB_FILENAME);
91-
}
92-
9389
private void getKey() {
9490
int authMethod = preferences.getInt("key-auth-method", 0);
9591
switch (authMethod) {

app/src/main/java/org/sorz/lab/tinykeepass/MainActivity.java

+6-7
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
import de.slackspace.openkeepass.domain.KeePassFile;
1313
import de.slackspace.openkeepass.exception.KeePassDatabaseUnreadableException;
1414

15+
import static org.sorz.lab.tinykeepass.keepass.KeePassHelper.getDatabaseFile;
16+
import static org.sorz.lab.tinykeepass.keepass.KeePassHelper.hasDatabaseConfigured;
17+
1518
public class MainActivity extends BaseActivity {
1619
private final static String TAG = MainActivity.class.getName();
1720

@@ -24,7 +27,7 @@ protected void onCreate(Bundle savedInstanceState) {
2427
.add(R.id.fragment_container, new DatabaseLockedFragment())
2528
.commit();
2629

27-
if (!hasConfiguredDatabase()) {
30+
if (!hasDatabaseConfigured(this)) {
2831
doConfigureDatabase();
2932
finish();
3033
} else {
@@ -45,17 +48,13 @@ public void onNewIntent(Intent intent) {
4548
showEntryList();
4649
}
4750

48-
public boolean hasConfiguredDatabase() {
49-
return KeePassStorage.get() != null || getDatabaseFile().canRead();
50-
}
51-
5251
public void doUnlockDatabase() {
5352
if (KeePassStorage.get() != null) {
5453
showEntryList();
5554
} else {
5655
getDatabaseKeys(keys -> {
5756
try {
58-
KeePassFile db = KeePassDatabase.getInstance(getDatabaseFile())
57+
KeePassFile db = KeePassDatabase.getInstance(getDatabaseFile(this))
5958
.openDatabase(keys.get(0));
6059
KeePassStorage.set(this, db);
6160
} catch (KeePassDatabaseUnreadableException | UnsupportedOperationException e) {
@@ -98,7 +97,7 @@ public void doSyncDatabase() {
9897

9998
public void doCleanDatabase() {
10099
KeePassStorage.set(this, null);
101-
if (!getDatabaseFile().delete())
100+
if (!getDatabaseFile(this).delete())
102101
Log.w(TAG, "fail to delete database file");
103102
getSecureStringStorage().clear();
104103
snackbar(getString(R.string.clean_config_ok), Snackbar.LENGTH_SHORT).show();

app/src/main/java/org/sorz/lab/tinykeepass/autofill/BaseActivity.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import de.slackspace.openkeepass.domain.KeePassFile;
1919
import de.slackspace.openkeepass.exception.KeePassDatabaseUnreadableException;
2020

21+
import static org.sorz.lab.tinykeepass.keepass.KeePassHelper.getDatabaseFile;
22+
2123

2224
@RequiresApi(api = Build.VERSION_CODES.O)
2325
abstract class BaseActivity extends org.sorz.lab.tinykeepass.BaseActivity {
@@ -62,7 +64,7 @@ protected StructureParser.Result parseStructure() {
6264

6365
protected void unlockDatabase(List<String> keys) {
6466
try {
65-
KeePassFile db = KeePassDatabase.getInstance(getDatabaseFile())
67+
KeePassFile db = KeePassDatabase.getInstance(getDatabaseFile(this))
6668
.openDatabase(keys.get(0));
6769
KeePassStorage.set(this, db);
6870
} catch (KeePassDatabaseUnreadableException | UnsupportedOperationException e) {

app/src/main/java/org/sorz/lab/tinykeepass/autofill/TinyAutofillService.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
import org.sorz.lab.tinykeepass.R;
2020

21+
import static org.sorz.lab.tinykeepass.keepass.KeePassHelper.hasDatabaseConfigured;
22+
2123

2224
@RequiresApi(api = Build.VERSION_CODES.O)
2325
public class TinyAutofillService extends AutofillService {
@@ -26,8 +28,11 @@ public class TinyAutofillService extends AutofillService {
2628
public void onFillRequest(@NonNull FillRequest request,
2729
@NonNull CancellationSignal cancellationSignal,
2830
@NonNull FillCallback callback) {
29-
3031
cancellationSignal.setOnCancelListener(() -> Log.d(TAG, "autofill canceled."));
32+
if (!hasDatabaseConfigured(this)) {
33+
callback.onSuccess(null);
34+
return;
35+
}
3136

3237
AssistStructure structure = request.getFillContexts()
3338
.get(request.getFillContexts().size() - 1).getStructure();
@@ -49,8 +54,6 @@ public void onFillRequest(@NonNull FillRequest request,
4954
callback.onSuccess(responseBuilder.build());
5055
}
5156

52-
53-
5457
@Override
5558
public void onSaveRequest(@NonNull SaveRequest request, @NonNull SaveCallback callback) {
5659
callback.onFailure(getString(R.string.autofill_not_support_save));

app/src/main/java/org/sorz/lab/tinykeepass/keepass/KeePassHelper.java

+12
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package org.sorz.lab.tinykeepass.keepass;
22

3+
import android.content.Context;
34
import android.graphics.Bitmap;
45
import android.graphics.BitmapFactory;
56

7+
import org.sorz.lab.tinykeepass.FetchDatabaseTask;
8+
9+
import java.io.File;
610
import java.util.UUID;
711
import java.util.stream.Stream;
812

@@ -41,4 +45,12 @@ static public Bitmap getIcon(Entry entry) {
4145
return BitmapFactory.decodeByteArray(entry.getIconData(), 0,
4246
entry.getIconData().length);
4347
}
48+
49+
static public File getDatabaseFile(Context context) {
50+
return new File(context.getNoBackupFilesDir(), FetchDatabaseTask.DB_FILENAME);
51+
}
52+
53+
static public boolean hasDatabaseConfigured(Context context) {
54+
return KeePassStorage.get() != null || getDatabaseFile(context).canRead();
55+
}
4456
}

0 commit comments

Comments
 (0)