diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/permission/BraveDappPermissionPromptDialog.java b/android/java/org/chromium/chrome/browser/crypto_wallet/permission/BraveDappPermissionPromptDialog.java index 5dc7200870d..ce9b679fe2b 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/permission/BraveDappPermissionPromptDialog.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/permission/BraveDappPermissionPromptDialog.java @@ -7,8 +7,6 @@ package org.chromium.chrome.browser.crypto_wallet.permission; import android.annotation.SuppressLint; import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Rect; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; @@ -19,6 +17,8 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.material.card.MaterialCardView; + import org.chromium.base.Log; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.NativeMethods; @@ -29,12 +29,12 @@ import org.chromium.brave_wallet.mojom.KeyringService; import org.chromium.chrome.R; import org.chromium.chrome.browser.app.BraveActivity; import org.chromium.chrome.browser.app.domain.WalletModel; +import org.chromium.chrome.browser.app.helpers.ImageLoader; import org.chromium.chrome.browser.crypto_wallet.BraveWalletServiceFactory; import org.chromium.chrome.browser.crypto_wallet.KeyringServiceFactory; import org.chromium.chrome.browser.crypto_wallet.util.Utils; import org.chromium.chrome.browser.crypto_wallet.util.WalletConstants; import org.chromium.components.browser_ui.modaldialog.ModalDialogView; -import org.chromium.content_public.browser.ImageDownloadCallback; import org.chromium.content_public.browser.WebContents; import org.chromium.mojo.bindings.ConnectionErrorHandler; import org.chromium.mojo.system.MojoException; @@ -46,13 +46,12 @@ import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogType; import org.chromium.ui.modaldialog.ModalDialogProperties; import org.chromium.ui.modaldialog.ModalDialogProperties.ButtonType; import org.chromium.ui.modelutil.PropertyModel; -import org.chromium.url.GURL; -import java.util.Iterator; +import java.lang.ref.WeakReference; import java.util.List; public class BraveDappPermissionPromptDialog - implements ModalDialogProperties.Controller, ImageDownloadCallback, ConnectionErrorHandler { + implements ModalDialogProperties.Controller, ConnectionErrorHandler { private static final String TAG = "BraveDappPermission"; private final ModalDialogManager mModalDialogManager; @@ -62,10 +61,10 @@ public class BraveDappPermissionPromptDialog private PropertyModel mPropertyModel; private WebContents mWebContents; private String mFavIconURL; + private MaterialCardView mCvFavContainer; private ImageView mFavIconImage; private RecyclerView mRecyclerView; private BravePermissionAccountsListAdapter mAccountsListAdapter; - private int mRequestId; // Used for favicon downloader private KeyringService mKeyringService; private boolean mMojoServicesClosed; private BraveWalletService mBraveWalletService; @@ -110,6 +109,7 @@ public class BraveDappPermissionPromptDialog mContext, R.layout.brave_permission_prompt_dialog, null); mFavIconImage = customView.findViewById(R.id.favicon); + mCvFavContainer = customView.findViewById(R.id.permission_prompt_fav_container); setFavIcon(); mRecyclerView = customView.findViewById(R.id.accounts_list); @@ -205,37 +205,11 @@ public class BraveDappPermissionPromptDialog if (mFavIconURL.isEmpty()) { return; } - mRequestId = mWebContents.downloadImage(new GURL(mFavIconURL), // url - true, // isFavicon - WalletConstants.MAX_BITMAP_SIZE_FOR_DOWNLOAD, // maxBitmapSize - false, // bypassCache - this); // callback - } - - @Override - public void onFinishDownloadImage(int id, int httpStatusCode, GURL imageUrl, - List bitmaps, List originalImageSizes) { - if (id != mRequestId) return; - - Iterator iterBitmap = bitmaps.iterator(); - Iterator iterSize = originalImageSizes.iterator(); - - Bitmap bestBitmap = null; - Rect bestSize = new Rect(0, 0, 0, 0); - while (iterBitmap.hasNext() && iterSize.hasNext()) { - Bitmap bitmap = iterBitmap.next(); - Rect size = iterSize.next(); - if (size.width() > bestSize.width() && size.height() > bestSize.height()) { - bestBitmap = bitmap; - bestSize = size; - } - } - if (bestSize.width() == 0 || bestSize.height() == 0) { - return; - } - - mFavIconImage.setImageBitmap(bestBitmap); - mFavIconImage.setVisibility(View.VISIBLE); + ImageLoader.fetchFavIcon(mFavIconURL, new WeakReference<>(mContext), fav -> { + if (fav == null) return; + mFavIconImage.setImageBitmap(fav); + mCvFavContainer.setVisibility(View.VISIBLE); + }); } public String[] getSelectedAccounts() { diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/permission/BravePermissionAccountsListAdapter.java b/android/java/org/chromium/chrome/browser/crypto_wallet/permission/BravePermissionAccountsListAdapter.java index 5e836b4abc8..c4209900ea2 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/permission/BravePermissionAccountsListAdapter.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/permission/BravePermissionAccountsListAdapter.java @@ -22,6 +22,7 @@ import androidx.recyclerview.widget.RecyclerView; import org.chromium.brave_wallet.mojom.AccountInfo; import org.chromium.brave_wallet.mojom.CoinType; import org.chromium.chrome.R; +import org.chromium.chrome.browser.crypto_wallet.util.AddressUtils; import org.chromium.chrome.browser.crypto_wallet.util.Utils; import org.chromium.chrome.browser.crypto_wallet.util.WalletUtils; @@ -104,9 +105,9 @@ public class BravePermissionAccountsListAdapter final int arrayPosition = position; AccountInfo accountInfo = mAccountInfos[position]; holder.titleText.setText(accountInfo.name); - holder.subTitleText.setText(Utils.stripAccountAddress(accountInfo.address)); + holder.subTitleText.setText(AddressUtils.getTruncatedAddress(accountInfo.address)); Utils.setBlockiesBitmapResourceFromAccount( - mExecutor, mHandler, holder.iconImg, accountInfo, true); + mExecutor, mHandler, holder.iconImg, accountInfo, true, false); if (mCheckBoxStyle) { holder.accountCheck.setVisibility(View.VISIBLE); diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java b/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java index 8d93af40875..8be947d5fc0 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java @@ -868,11 +868,19 @@ public class Utils { } public static void setBlockiesBitmapResourceFromAccount(ExecutorService executor, - Handler handler, ImageView iconImg, AccountInfo accountInfo, boolean makeLowerCase) { + Handler handler, ImageView iconImg, AccountInfo accountInfo, boolean makeLowerCase, + boolean isCircular) { // TODO(apaymyshev): need to hash uniqueKey string for bitcoin accounts(same as for desktop) String source = accountInfo.address != null ? accountInfo.address : accountInfo.accountId.uniqueKey; - setTextGeneratedBlockies(executor, handler, iconImg, source, makeLowerCase); + setTextGeneratedBlockies(executor, handler, iconImg, source, makeLowerCase, isCircular); + } + + public static void setBlockiesBitmapResourceFromAccount(ExecutorService executor, + Handler handler, ImageView iconImg, AccountInfo accountInfo, boolean makeLowerCase) { + // TODO(apaymyshev): need to hash uniqueKey string for bitcoin accounts(same as for desktop) + setBlockiesBitmapResourceFromAccount( + executor, handler, iconImg, accountInfo, makeLowerCase, true); } public static void setBlockiesBackground(ExecutorService executor, Handler handler, View view, diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/util/WalletConstants.java b/android/java/org/chromium/chrome/browser/crypto_wallet/util/WalletConstants.java index e5f4bb83043..5dd29f5d1d0 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/util/WalletConstants.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/util/WalletConstants.java @@ -18,7 +18,7 @@ import java.util.Map; public final class WalletConstants { // Radius of the oval used to round the corners in density-independent pixels. - public static final int RECT_SHARP_ROUNDED_CORNERS_DP = 4; + public static final int RECT_SHARP_ROUNDED_CORNERS_DP = 12; public static final int RECT_ROUNDED_CORNERS_DP = 12; public static final long MILLI_SECOND = 1000; diff --git a/android/java/res/layout/brave_permission_prompt_dialog.xml b/android/java/res/layout/brave_permission_prompt_dialog.xml index 151f0440006..cc1bf369d32 100644 --- a/android/java/res/layout/brave_permission_prompt_dialog.xml +++ b/android/java/res/layout/brave_permission_prompt_dialog.xml @@ -4,108 +4,120 @@ License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. */ --> - - - - - + style="@style/AlertDialogContent" + android:background="@color/brave_wallet_dn_panel_bg" + android:gravity="start"> + android:textSize="20sp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + + + + + + + + + + + + + android:layout_marginVertical="8dp" + android:elevation="12dp" + app:cardCornerRadius="12dp" + app:layout_constrainedHeight="true" + app:layout_constraintBottom_toTopOf="@id/permission_prompt_div3" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/permission_prompt_div2"> + + + + + - - - - - - - - - - - - - - - - - - - - + android:layout_marginVertical="8dp" + android:text="@string/permissions_connect_brave_wallet_warning_title" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@id/permission_prompt_div3" /> + diff --git a/android/java/res/layout/fragment_sign_message_error.xml b/android/java/res/layout/fragment_sign_message_error.xml index bc9d6cd3af2..bc056b73445 100644 --- a/android/java/res/layout/fragment_sign_message_error.xml +++ b/android/java/res/layout/fragment_sign_message_error.xml @@ -10,31 +10,29 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/brave_wallet_dn_panel_bg" android:padding="20dp" - android:background="@color/wallet_bg" - tools:context=".browser.crypto_wallet.fragments.dapps.SignMessageErrorFragment" > + tools:context=".browser.crypto_wallet.fragments.dapps.SignMessageErrorFragment"> + app:layout_constraintTop_toTopOf="parent" /> @@ -52,46 +50,43 @@ + app:srcCompat="@drawable/ic_warning_circle_filled" /> @@ -100,9 +95,8 @@ android:id="@+id/fragment_sign_msg_err_btn_close" style="@style/BraveWalletButton" android:layout_width="match_parent" - android:layout_height="wrap_content" android:layout_marginTop="20dp" android:layout_weight="1" - app:layout_constraintTop_toBottomOf="@id/fragment_sign_msg_err_block" - android:text="@string/close_text" /> + android:text="@string/close_text" + app:layout_constraintTop_toBottomOf="@id/fragment_sign_msg_err_block" /> diff --git a/android/java/res/values-night/brave_colors.xml b/android/java/res/values-night/brave_colors.xml index 05228caef8c..88ddba15444 100644 --- a/android/java/res/values-night/brave_colors.xml +++ b/android/java/res/values-night/brave_colors.xml @@ -135,6 +135,7 @@ #C2C4CF #33E32444 #FF4B6A + #FF460A10 #17171F #FFFFFF diff --git a/android/java/res/values/brave_colors.xml b/android/java/res/values/brave_colors.xml index 1447f313580..addb0d005f7 100644 --- a/android/java/res/values/brave_colors.xml +++ b/android/java/res/values/brave_colors.xml @@ -235,9 +235,7 @@ #33E32444 #FF4B6A - #E6667C - #E8E6E7 - #FF44141B + #FFF1F1 #381E85 #27155E diff --git a/browser/ui/android/strings/android_brave_strings.grd b/browser/ui/android/strings/android_brave_strings.grd index 0033c4257ec..2bb174ed491 100644 --- a/browser/ui/android/strings/android_brave_strings.grd +++ b/browser/ui/android/strings/android_brave_strings.grd @@ -3033,9 +3033,6 @@ If you don't accept this request, VPN will not reconnect and your internet conne Select account(s) - - Accounts - Only connect with sites you trust.