Commit 79a5e5f1 authored by Hui(Andy) Wu's avatar Hui(Andy) Wu Committed by Commit Bot

[Autofill Assistant] Fix resources not-found error in DFM.

Autofill assistant is crashing after being moved to DFM. The reason seems
to be resources cannot be loaded without initialization before accessing
the module.

This CL try to initialize the activity properly. There is also another
initialization after installation, without which a clean install of chrome
would crash. This is like an issue from Play Core, and this CL tries to
provide a walkaround.

Bug: b/131149231
Change-Id: I4f3fba3d958105467bf0240bd06d0330f19ec921
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1582225
Commit-Queue: Hui Wu <wuandy@chromium.org>
Reviewed-by: default avatarGanggui Tang <gogerald@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Reviewed-by: default avatarTibor Goldschwendt <tiborg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#654545}
parent 4f25e958
...@@ -148,19 +148,22 @@ public class AutofillAssistantFacade { ...@@ -148,19 +148,22 @@ public class AutofillAssistantFacade {
*/ */
private static void checkAndLoadDynamicModuleIfNeeded( private static void checkAndLoadDynamicModuleIfNeeded(
ChromeActivity activity, Callback<Boolean> callback) { ChromeActivity activity, Callback<Boolean> callback) {
// Required to access resources in DFM using this activity as context.
ModuleInstaller.initActivity(activity);
if (AutofillAssistantModule.isInstalled()) { if (AutofillAssistantModule.isInstalled()) {
callback.onResult(true); callback.onResult(true);
return; return;
} }
getTab(activity, tab -> { loadDynamicModuleWithUi(tab, callback); }); getTab(activity, tab -> { loadDynamicModuleWithUi(activity, tab, callback); });
} }
private static void loadDynamicModuleWithUi(Tab tab, Callback<Boolean> callback) { private static void loadDynamicModuleWithUi(
ChromeActivity activity, Tab tab, Callback<Boolean> callback) {
ModuleInstallUi ui = new ModuleInstallUi(tab, R.string.autofill_assistant_module_title, ModuleInstallUi ui = new ModuleInstallUi(tab, R.string.autofill_assistant_module_title,
new ModuleInstallUi.FailureUiListener() { new ModuleInstallUi.FailureUiListener() {
@Override @Override
public void onRetry() { public void onRetry() {
loadDynamicModuleWithUi(tab, callback); loadDynamicModuleWithUi(activity, tab, callback);
} }
@Override @Override
...@@ -172,6 +175,9 @@ public class AutofillAssistantFacade { ...@@ -172,6 +175,9 @@ public class AutofillAssistantFacade {
ui.showInstallStartUi(); ui.showInstallStartUi();
ModuleInstaller.install("autofill_assistant", (success) -> { ModuleInstaller.install("autofill_assistant", (success) -> {
if (success) { if (success) {
// Clean install of chrome will have issues here without initializing
// after installation of DFM.
ModuleInstaller.initActivity(activity);
// Don't show success UI from DFM, transition to autobot UI directly. // Don't show success UI from DFM, transition to autobot UI directly.
callback.onResult(true); callback.onResult(true);
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment