diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/activities/BraveWalletActivity.java b/android/java/org/chromium/chrome/browser/crypto_wallet/activities/BraveWalletActivity.java index 35b16fce0b0..56c2a75fef5 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/activities/BraveWalletActivity.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/activities/BraveWalletActivity.java @@ -14,14 +14,11 @@ import android.view.WindowManager; import android.widget.ImageView; import androidx.annotation.NonNull; -import androidx.annotation.StringRes; import androidx.appcompat.view.menu.MenuBuilder; import androidx.viewpager2.widget.ViewPager2; import com.google.android.material.appbar.MaterialToolbar; -import org.chromium.base.ActivityState; -import org.chromium.base.ApplicationStatus; import org.chromium.base.Log; import org.chromium.brave_wallet.mojom.OnboardingAction; import org.chromium.chrome.R; @@ -29,6 +26,7 @@ import org.chromium.chrome.browser.app.BraveActivity; import org.chromium.chrome.browser.app.domain.NetworkModel; import org.chromium.chrome.browser.app.domain.WalletModel; import org.chromium.chrome.browser.crypto_wallet.adapters.CryptoWalletOnboardingPagerAdapter; +import org.chromium.chrome.browser.crypto_wallet.fragments.BaseWalletNextPageFragment; import org.chromium.chrome.browser.crypto_wallet.fragments.UnlockWalletFragment; import org.chromium.chrome.browser.crypto_wallet.fragments.onboarding.OnboardingBackupWalletFragment; import org.chromium.chrome.browser.crypto_wallet.fragments.onboarding.OnboardingCreatingWalletFragment; @@ -39,7 +37,6 @@ import org.chromium.chrome.browser.crypto_wallet.fragments.onboarding.Onboarding import org.chromium.chrome.browser.crypto_wallet.fragments.onboarding.OnboardingTermsOfUseFragment; import org.chromium.chrome.browser.crypto_wallet.fragments.onboarding.OnboardingVerifyRecoveryPhraseFragment; import org.chromium.chrome.browser.crypto_wallet.listeners.OnNextPage; -import org.chromium.chrome.browser.crypto_wallet.util.NavigationItem; import org.chromium.chrome.browser.crypto_wallet.util.Utils; import org.chromium.chrome.browser.crypto_wallet.util.WalletUtils; import org.chromium.chrome.browser.settings.BraveWalletPreferences; @@ -151,8 +148,6 @@ public class BraveWalletActivity extends BraveWalletBaseActivity implements OnNe mCryptoWalletOnboardingViewPager.setUserInputEnabled(false); mCryptoWalletOnboardingPagerAdapter = new CryptoWalletOnboardingPagerAdapter(this); mCryptoWalletOnboardingViewPager.setAdapter(mCryptoWalletOnboardingPagerAdapter); - mCryptoWalletOnboardingViewPager.setOffscreenPageLimit( - mCryptoWalletOnboardingPagerAdapter.getItemCount() - 1); mOnboardingCloseButton = findViewById(R.id.onboarding_close_button); mOnboardingCloseButton.setOnClickListener(v -> finish()); @@ -184,7 +179,7 @@ public class BraveWalletActivity extends BraveWalletBaseActivity implements OnNe if (isLocked) { setNavigationFragments(WalletAction.UNLOCK); } else if (mBackupWallet) { - showOnboardingLayout(); + showBackupSequence(); } else { showMainLayout(); } @@ -208,36 +203,27 @@ public class BraveWalletActivity extends BraveWalletBaseActivity implements OnNe }; } - @SuppressLint("NotifyDataSetChanged") private void setNavigationFragments(@NonNull final WalletAction walletAction) { - List navigationItems = new ArrayList<>(); + List navigationFragments = new ArrayList<>(); mShowBiometricPrompt = true; mCryptoOnboardingLayout.setVisibility(View.VISIBLE); if (walletAction == WalletAction.ONBOARDING) { OnboardingInitWalletFragment onboardingInitWalletFragment = new OnboardingInitWalletFragment(mRestartSetupAction, mRestartRestoreAction); - navigationItems.add( - new NavigationItem( - getResources().getString(R.string.setup_crypto), - onboardingInitWalletFragment)); + navigationFragments.add(onboardingInitWalletFragment); mBraveWalletP3A.reportOnboardingAction(OnboardingAction.SHOWN); } else if (walletAction == WalletAction.UNLOCK) { UnlockWalletFragment unlockWalletFragment = new UnlockWalletFragment(); - navigationItems.add(new NavigationItem( - getResources().getString(R.string.unlock_wallet_title), unlockWalletFragment)); + navigationFragments.add(unlockWalletFragment); } else if (walletAction == WalletAction.ONBOARDING_RESTORE) { mShowBiometricPrompt = false; OnboardingRestoreWalletFragment onboardingRestoreWalletFragment = OnboardingRestoreWalletFragment.newInstance(); - navigationItems.add( - new NavigationItem( - getResources().getString(R.string.restore_crypto_account), - onboardingRestoreWalletFragment)); + navigationFragments.add(onboardingRestoreWalletFragment); } if (mCryptoWalletOnboardingPagerAdapter != null) { - mCryptoWalletOnboardingPagerAdapter.setNavigationItems(navigationItems); - mCryptoWalletOnboardingPagerAdapter.notifyDataSetChanged(); + mCryptoWalletOnboardingPagerAdapter.setNavigationItems(navigationFragments); } addRemoveSecureFlag(true); } @@ -247,15 +233,12 @@ public class BraveWalletActivity extends BraveWalletBaseActivity implements OnNe if (mCryptoWalletOnboardingViewPager == null) return; if (mCryptoWalletOnboardingPagerAdapter == null) return; - final List navigationItems = new ArrayList<>(); + final List navigationFragments = new ArrayList<>(); // Terms of use screen is shown only during onboarding actions. if (walletAction != WalletAction.RESTORE) { final OnboardingTermsOfUseFragment onboardingTermsOfUseFragment = OnboardingTermsOfUseFragment.newInstance(); - navigationItems.add( - new NavigationItem( - getResources().getString(R.string.before_we_begin), - onboardingTermsOfUseFragment)); + navigationFragments.add(onboardingTermsOfUseFragment); } if (walletAction == WalletAction.ONBOARDING_RESTORE @@ -264,26 +247,20 @@ public class BraveWalletActivity extends BraveWalletBaseActivity implements OnNe final OnboardingRestoreWalletFragment onboardingRestoreWalletFragment = OnboardingRestoreWalletFragment.newInstance(); - navigationItems.add( - new NavigationItem( - getResources().getString(R.string.restore_crypto_account), - onboardingRestoreWalletFragment)); - addWalletCreationPage(navigationItems, R.string.your_wallet_is_restoring_page_title); + navigationFragments.add(onboardingRestoreWalletFragment); + addWalletCreationPage(navigationFragments); } else if (walletAction == WalletAction.PASSWORD_CREATION) { mShowBiometricPrompt = true; final OnboardingSecurePasswordFragment onboardingSecurePasswordFragment = new OnboardingSecurePasswordFragment(); - navigationItems.add( - new NavigationItem( - getResources().getString(R.string.secure_your_crypto), - onboardingSecurePasswordFragment)); - addWalletCreationPage(navigationItems, R.string.your_wallet_is_creating_page_title); - addBackupWalletSequence(navigationItems, true); + navigationFragments.add(onboardingSecurePasswordFragment); + addWalletCreationPage(navigationFragments); + addBackupWalletSequence(navigationFragments, true); } mCryptoWalletOnboardingPagerAdapter.replaceWithNavigationItems( - navigationItems, mCryptoWalletOnboardingViewPager.getCurrentItem() + 1); + navigationFragments, mCryptoWalletOnboardingViewPager.getCurrentItem() + 1); mCryptoWalletOnboardingPagerAdapter.notifyDataSetChanged(); mCryptoWalletOnboardingViewPager.setCurrentItem( @@ -313,62 +290,46 @@ public class BraveWalletActivity extends BraveWalletBaseActivity implements OnNe } private void addBackupWalletSequence( - @NonNull final List navigationItems, final boolean isOnboarding) { + @NonNull final List navigationFragments, + final boolean isOnboarding) { OnboardingBackupWalletFragment onboardingBackupWalletFragment = OnboardingBackupWalletFragment.newInstance(isOnboarding); - navigationItems.add( - new NavigationItem( - getResources().getString(R.string.backup_your_wallet), - onboardingBackupWalletFragment)); + navigationFragments.add(onboardingBackupWalletFragment); OnboardingRecoveryPhraseFragment onboardingRecoveryPhraseFragment = OnboardingRecoveryPhraseFragment.newInstance(isOnboarding); - navigationItems.add( - new NavigationItem( - getResources().getString(R.string.your_recovery_phrase), - onboardingRecoveryPhraseFragment)); + navigationFragments.add(onboardingRecoveryPhraseFragment); OnboardingVerifyRecoveryPhraseFragment onboardingVerifyRecoveryPhraseFragment = OnboardingVerifyRecoveryPhraseFragment.newInstance(isOnboarding); - navigationItems.add( - new NavigationItem( - getResources().getString(R.string.verify_recovery_phrase), - onboardingVerifyRecoveryPhraseFragment)); + navigationFragments.add(onboardingVerifyRecoveryPhraseFragment); } private void addWalletCreationPage( - @NonNull final List navigationItems, @StringRes int stringId) { + @NonNull final List navigationFragments) { OnboardingCreatingWalletFragment onboardingCreatingWalletFragment = new OnboardingCreatingWalletFragment(); - navigationItems.add( - new NavigationItem( - getResources().getString(stringId), onboardingCreatingWalletFragment)); + navigationFragments.add(onboardingCreatingWalletFragment); } - @SuppressLint("NotifyDataSetChanged") - public void showOnboardingLayout() { + public void showBackupSequence() { addRemoveSecureFlag(true); mCryptoOnboardingLayout.setVisibility(View.VISIBLE); - List navigationItems = new ArrayList<>(); + List navigationFragments = new ArrayList<>(); // We don't need addWalletCreatingPage here, as showOnboardingLayout // is invoked only when we didn't back up wallet initially and doing // it later from `Backup your crypto wallet` bubble. - addBackupWalletSequence(navigationItems, false); + addBackupWalletSequence(navigationFragments, false); if (mCryptoWalletOnboardingPagerAdapter != null && mCryptoWalletOnboardingViewPager != null) { - mCryptoWalletOnboardingPagerAdapter.setNavigationItems(navigationItems); - mCryptoWalletOnboardingPagerAdapter.notifyDataSetChanged(); + mCryptoWalletOnboardingPagerAdapter.setNavigationItems(navigationFragments); mCryptoWalletOnboardingViewPager.setCurrentItem(0); } } @Override public boolean showBiometricPrompt() { - int state = ApplicationStatus.getStateForActivity(this); - - return mShowBiometricPrompt - && (state != ActivityState.PAUSED || state != ActivityState.STOPPED - || state != ActivityState.DESTROYED); + return mShowBiometricPrompt; } @Override diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/CryptoWalletOnboardingPagerAdapter.java b/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/CryptoWalletOnboardingPagerAdapter.java index 11aec991884..b8385d45caa 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/CryptoWalletOnboardingPagerAdapter.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/CryptoWalletOnboardingPagerAdapter.java @@ -5,46 +5,53 @@ package org.chromium.chrome.browser.crypto_wallet.adapters; +import android.annotation.SuppressLint; + import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.viewpager2.adapter.FragmentStateAdapter; -import org.chromium.chrome.browser.crypto_wallet.util.NavigationItem; +import org.chromium.chrome.browser.crypto_wallet.fragments.BaseWalletNextPageFragment; import java.util.ArrayList; import java.util.List; public class CryptoWalletOnboardingPagerAdapter extends FragmentStateAdapter { - private final List mNavigationItems = new ArrayList<>(); - - public void setNavigationItems(@NonNull final List navigationItems) { - mNavigationItems.clear(); - mNavigationItems.addAll(navigationItems); - } - - /** - * Replaces all navigation items starting from a given index. - * - * @param navigationItems Navigation items to add. - * @param index Index pointing to the first item that will be replaced. - */ - public void replaceWithNavigationItems( - @NonNull final List navigationItems, final int index) { - // Clear the list from the index (included). - mNavigationItems.subList(index, mNavigationItems.size()).clear(); - // Append new navigation items to the list. - mNavigationItems.addAll(navigationItems); - } + @NonNull private final List mNavigationItems = new ArrayList<>(); public CryptoWalletOnboardingPagerAdapter(@NonNull final FragmentActivity fragmentActivity) { super(fragmentActivity); } + @SuppressLint("NotifyDataSetChanged") + public void setNavigationItems( + @NonNull final List navigationFragments) { + mNavigationItems.clear(); + mNavigationItems.addAll(navigationFragments); + notifyDataSetChanged(); + } + + /** + * Replaces all navigation items starting from a given index. + * + * @param navigationFragments Navigation fragments to add. + * @param index Index pointing to the first item that will be replaced. + */ + @SuppressLint("NotifyDataSetChanged") + public void replaceWithNavigationItems( + @NonNull final List navigationFragments, final int index) { + // Clear the list from the index (included). + mNavigationItems.subList(index, mNavigationItems.size()).clear(); + // Append new navigation items to the list. + mNavigationItems.addAll(navigationFragments); + notifyDataSetChanged(); + } + @NonNull @Override public Fragment createFragment(int position) { - return mNavigationItems.get(position).getFragment(); + return mNavigationItems.get(position); } @Override diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding/OnboardingSecurePasswordFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding/OnboardingSecurePasswordFragment.java index c78f7a9118b..60d7d6bf96b 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding/OnboardingSecurePasswordFragment.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding/OnboardingSecurePasswordFragment.java @@ -42,7 +42,6 @@ public class OnboardingSecurePasswordFragment extends BaseOnboardingWalletFragme private AppCompatButton mContinueButton; private TextInputEditText mRetypePasswordEditText; - @SuppressLint("ClickableViewAccessibility") @Override public View onCreateView( @NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -79,8 +78,8 @@ public class OnboardingSecurePasswordFragment extends BaseOnboardingWalletFragme } private void proceedWithStrongPassword(@NonNull final String password) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P - && Utils.isBiometricAvailable(requireContext())) { + if (Utils.isBiometricAvailable(requireContext())) { + // noinspection NewApi setUpBiometric(password); } else { goToTheNextPage(password); diff --git a/android/java/res/layout/fragment_secure_password.xml b/android/java/res/layout/fragment_secure_password.xml index 7ff4e1713c4..2ce9efd4bff 100644 --- a/android/java/res/layout/fragment_secure_password.xml +++ b/android/java/res/layout/fragment_secure_password.xml @@ -7,8 +7,7 @@ android:scrollbars="vertical" android:fadeScrollbars="false" android:background="@color/wallet_bg" - android:fillViewport="true" - android:theme="@style/BraveWalletOnboarding"> + android:fillViewport="true"> Copy - - Secure your crypto with a password - Enter Password @@ -2036,12 +2033,6 @@ Are you sure you want to do this? It may take a few seconds… - - Your wallet is restoring... - - - Your wallet is being created... - %1$sEthereum Account %2$s2