diff --git a/app/src/common/chromium/com/igalia/wolvic/browser/api/impl/PromptDelegateImpl.java b/app/src/common/chromium/com/igalia/wolvic/browser/api/impl/PromptDelegateImpl.java index 39d8a84d68..22090e180a 100644 --- a/app/src/common/chromium/com/igalia/wolvic/browser/api/impl/PromptDelegateImpl.java +++ b/app/src/common/chromium/com/igalia/wolvic/browser/api/impl/PromptDelegateImpl.java @@ -954,6 +954,7 @@ public AutofillManager.Bridge create(AutofillManager.Listener listener) { public class AutocompleteBridge implements PasswordManager.Bridge, AutofillManager.Bridge { private PasswordManager.Listener mPasswordManagerListener; private AutofillManager.Listener mAutofillManagerListener; + private boolean showLoginSelectDialog; private LoginSavePrompt mLoginSavePrompt; private LoginSelectPrompt mLoginSelectPrompt; @@ -973,7 +974,11 @@ public boolean isAutocompleteEnabled(Context context) { @Override public boolean isAutoFillEnabled(Context context) { - return SettingsStore.getInstance(context).isAutoFillEnabled(); + // Chromium doesn't provide an autofill option. + // Instead, it provides a login selection dialog that let users decide whether to autofill the saved password or not. + // We'll only show this dialog if users enable autofill. + showLoginSelectDialog = SettingsStore.getInstance(context).isAutoFillEnabled(); + return true; } @Override @@ -1011,56 +1016,62 @@ public boolean saveOrUpdatePassword(PasswordForm form) { @Override public boolean onLoginSelect(PasswordForm[] forms) { - dismiss(); - assert mPasswordManagerListener != null; - - WAutocomplete.LoginSelectOption[] options = - new WAutocomplete.LoginSelectOption[forms.length]; - for (int i = 0; i < forms.length; i++) { - options[i] = new WAutocomplete.LoginSelectOption(fromPasswordForm(forms[i])); - } + if (showLoginSelectDialog) { + dismiss(); + assert mPasswordManagerListener != null; + + WAutocomplete.LoginSelectOption[] options = + new WAutocomplete.LoginSelectOption[forms.length]; + for (int i = 0; i < forms.length; i++) { + options[i] = new WAutocomplete.LoginSelectOption(fromPasswordForm(forms[i])); + } - mLoginSelectPrompt = new LoginSelectPrompt( - mPasswordManagerListener, options); - try { - if (mDelegate != null) { - mDelegate.onLoginSelect(mSession, mLoginSelectPrompt); - } else { + mLoginSelectPrompt = new LoginSelectPrompt( + mPasswordManagerListener, options); + try { + if (mDelegate != null) { + mDelegate.onLoginSelect(mSession, mLoginSelectPrompt); + } else { + resetLoginSelectPrompt(); + return false; + } + } catch (WindowManager.BadTokenException e) { resetLoginSelectPrompt(); return false; } - } catch (WindowManager.BadTokenException e) { - resetLoginSelectPrompt(); - return false; + return true; } - return true; + return false; } @Override public boolean onLoginSelect(String[] username) { - dismiss(); - assert mAutofillManagerListener != null; - - WAutocomplete.LoginSelectOption[] options = - new WAutocomplete.LoginSelectOption[username.length]; - for (int i = 0; i < username.length; i++) { - options[i] = new WAutocomplete.LoginSelectOption(fromUsername(i, username[i])); - } + if (showLoginSelectDialog) { + dismiss(); + assert mAutofillManagerListener != null; + + WAutocomplete.LoginSelectOption[] options = + new WAutocomplete.LoginSelectOption[username.length]; + for (int i = 0; i < username.length; i++) { + options[i] = new WAutocomplete.LoginSelectOption(fromUsername(i, username[i])); + } - mLoginSelectPrompt = new LoginSelectPrompt( - mAutofillManagerListener, options); - try { - if (mDelegate != null) { - mDelegate.onLoginSelect(mSession, mLoginSelectPrompt); - } else { + mLoginSelectPrompt = new LoginSelectPrompt( + mAutofillManagerListener, options); + try { + if (mDelegate != null) { + mDelegate.onLoginSelect(mSession, mLoginSelectPrompt); + } else { + resetLoginSelectPrompt(); + return false; + } + } catch (WindowManager.BadTokenException e) { resetLoginSelectPrompt(); return false; } - } catch (WindowManager.BadTokenException e) { - resetLoginSelectPrompt(); - return false; + return true; } - return true; + return false; }