Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove local network assets in GPS variants (uplift to 1.54.x) #19114

Merged
merged 2 commits into from
Jul 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
package org.chromium.chrome.browser.app.domain;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.text.TextUtils;
import android.util.Pair;

Expand All @@ -26,6 +25,7 @@
import org.chromium.brave_wallet.mojom.NetworkInfo;
import org.chromium.brave_wallet.mojom.OriginInfo;
import org.chromium.chrome.browser.crypto_wallet.activities.BuySendSwapActivity;
import org.chromium.chrome.browser.crypto_wallet.util.AndroidUtils;
import org.chromium.chrome.browser.crypto_wallet.util.JavaUtils;
import org.chromium.chrome.browser.crypto_wallet.util.NetworkResponsesCollector;
import org.chromium.chrome.browser.crypto_wallet.util.NetworkUtils;
Expand All @@ -37,12 +37,12 @@
import org.chromium.url.internal.mojom.Origin;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

public class NetworkModel implements JsonRpcServiceObserver {
private JsonRpcService mJsonRpcService;
Expand Down Expand Up @@ -138,9 +138,8 @@ public NetworkModel(JsonRpcService jsonRpcService, CryptoSharedData sharedData,
});
});
_mDefaultCoinCryptoNetworks.addSource(mSharedData.getCoinTypeLd(), coinType -> {
mJsonRpcService.getAllNetworks(coinType, networkInfos -> {
_mDefaultCoinCryptoNetworks.postValue(
stripDebugNetwork(context, Arrays.asList(networkInfos)));
getAllNetworks(mJsonRpcService, Collections.singletonList(coinType), networkInfoSet -> {
_mDefaultCoinCryptoNetworks.postValue(new ArrayList<>(networkInfoSet));
});
});

Expand Down Expand Up @@ -274,7 +273,16 @@ static void getAllNetworks(JsonRpcService jsonRpcService, List<Integer> supporte

NetworkResponsesCollector networkResponsesCollector =
new NetworkResponsesCollector(jsonRpcService, supportedCoins);
networkResponsesCollector.getNetworks(networkInfos -> { callback.call(networkInfos); });
networkResponsesCollector.getNetworks(networkInfoSet -> {
if (!AndroidUtils.isDebugBuild()) {
networkInfoSet =
networkInfoSet.stream()
.filter(networkInfo
-> !NetworkUtils.Filters.isLocalNetwork(networkInfo))
.collect(Collectors.toSet());
}
callback.call(networkInfoSet);
});
}

public void init() {
Expand All @@ -283,10 +291,8 @@ public void init() {
return;
}

getAllNetworks(mJsonRpcService, mSharedData.getSupportedCryptoCoins(), allNetworks -> {
_mCryptoNetworks.postValue(
stripDebugNetwork(mContext, new ArrayList<>(allNetworks)));
});
getAllNetworks(mJsonRpcService, mSharedData.getSupportedCryptoCoins(),
allNetworks -> { _mCryptoNetworks.postValue(new ArrayList<>(allNetworks)); });
}
}

Expand Down Expand Up @@ -359,21 +365,6 @@ void setOrigin(Origin origin) {
mOrigin = origin;
}

private List<NetworkInfo> stripDebugNetwork(Context context, List<NetworkInfo> networkInfos) {
if ((context.getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
return networkInfos;
} else {
List<NetworkInfo> networkInfosFiltered = new ArrayList<>();
// remove localhost network
for (NetworkInfo networkInfo : networkInfos) {
if (!networkInfo.chainId.equals(BraveWalletConstants.LOCALHOST_CHAIN_ID)) {
networkInfosFiltered.add(networkInfo);
}
}
return networkInfosFiltered;
}
}

List<NetworkInfo> getSubTestNetworks(NetworkInfo networkInfo) {
List<NetworkInfo> cryptoNws = _mCryptoNetworks.getValue();
if (cryptoNws == null || cryptoNws.size() == 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@

import org.chromium.brave_wallet.mojom.BlockchainRegistry;
import org.chromium.brave_wallet.mojom.BlockchainToken;
import org.chromium.brave_wallet.mojom.BraveWalletConstants;
import org.chromium.brave_wallet.mojom.BraveWalletService;
import org.chromium.brave_wallet.mojom.JsonRpcService;
import org.chromium.brave_wallet.mojom.NetworkInfo;
import org.chromium.chrome.browser.crypto_wallet.adapters.WalletCoinAdapter;
import org.chromium.chrome.browser.crypto_wallet.util.AndroidUtils;
import org.chromium.chrome.browser.crypto_wallet.util.AssetUtils;
import org.chromium.chrome.browser.crypto_wallet.util.JavaUtils;
import org.chromium.chrome.browser.crypto_wallet.util.NetworkUtils;
Expand All @@ -25,6 +27,7 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Stream;

public class UserAssetModel {
private final Object mLock = new Object();
Expand Down Expand Up @@ -97,22 +100,27 @@ public void fetchAssets(boolean nftsOnly, NetworkInfo selectedNetwork) {

private void fetchAllNetworksAssets(boolean nftsOnly) {
mBraveWalletService.getAllUserAssets(userAssets -> {
var supportedNetworkAssets =
Stream<BlockchainToken> supportedNetworkAssets =
Arrays.stream(userAssets)
.filter(token
-> !WalletConstants.UNSUPPORTED_NETWORKS.contains(
token.chainId))
.filter(token -> nftsOnly == token.isNft)
.toArray(BlockchainToken[] ::new);
.filter(token -> nftsOnly == token.isNft);
if (!AndroidUtils.isDebugBuild()) {
supportedNetworkAssets = supportedNetworkAssets.filter(
token -> !token.chainId.equals(BraveWalletConstants.LOCALHOST_CHAIN_ID));
}
BlockchainToken[] supportedNetworkAssetsArray =
supportedNetworkAssets.toArray(BlockchainToken[] ::new);

TokenUtils.getAllTokensFiltered(mBlockchainRegistry, mCryptoNetworks,
nftsOnly ? TokenUtils.TokenType.NFTS : TokenUtils.TokenType.NON_NFTS,
tokens -> {
sortByNetwork(tokens);
var filteredTokens = TokenUtils.distinctiveConcatenatedArrays(
tokens, supportedNetworkAssets);
tokens, supportedNetworkAssetsArray);
_mAssetsResult.postValue(new AssetsResult(Arrays.asList(filteredTokens),
Arrays.asList(supportedNetworkAssets)));
Arrays.asList(supportedNetworkAssetsArray)));
});
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@
import org.chromium.brave_wallet.mojom.BlockchainToken;
import org.chromium.brave_wallet.mojom.BraveWalletService;
import org.chromium.brave_wallet.mojom.CoinType;
import org.chromium.brave_wallet.mojom.JsonRpcService;
import org.chromium.brave_wallet.mojom.KeyringService;
import org.chromium.brave_wallet.mojom.NetworkInfo;
import org.chromium.chrome.R;
Expand Down Expand Up @@ -140,15 +139,6 @@ private KeyringService getKeyringService() {
return null;
}

private JsonRpcService getJsonRpcService() {
Activity activity = getActivity();
if (activity instanceof BraveWalletBaseActivity) {
return ((BraveWalletBaseActivity) activity).getJsonRpcService();
}

return null;
}

public void setSelectedNetwork(NetworkInfo selectedNetwork) {
assert selectedNetwork != null;
mSelectedNetwork = selectedNetwork;
Expand Down Expand Up @@ -605,10 +595,12 @@ public void onClick(DialogInterface dialog, int id) {
@Override
public void onMaybeShowTrashButton(
WalletListItemModel walletListItemModel, ImageView trashButton) {
if (mType != WalletCoinAdapter.AdapterType.EDIT_VISIBLE_ASSETS_LIST) return;
assert walletListItemModel.getAssetNetwork() != null : "Network should not be null";
// Prevent NPE of network, issue:#31303
if (mType != WalletCoinAdapter.AdapterType.EDIT_VISIBLE_ASSETS_LIST
|| walletListItemModel.getAssetNetwork() == null)
return;

JsonRpcService jsonRpcService = getJsonRpcService();
if (jsonRpcService == null) return;
TokenUtils.isCustomToken(getBlockchainRegistry(), walletListItemModel.getAssetNetwork(),
walletListItemModel.getAssetNetwork().coin,
walletListItemModel.getBlockchainToken(), isCustom -> {
Expand All @@ -621,9 +613,11 @@ public void onMaybeShowTrashButton(
@Override
public void onAssetCheckedChanged(
WalletListItemModel walletListItemModel, CheckBox assetCheck, boolean isChecked) {
if (mType != WalletCoinAdapter.AdapterType.EDIT_VISIBLE_ASSETS_LIST) return;
JsonRpcService jsonRpcService = getJsonRpcService();
if (jsonRpcService == null) return;
assert walletListItemModel.getAssetNetwork() != null : "Network should not be null";
// Prevent NPE of network, issue:#31303
if (mType != WalletCoinAdapter.AdapterType.EDIT_VISIBLE_ASSETS_LIST
|| walletListItemModel.getAssetNetwork() == null)
return;

BlockchainToken thisToken = walletListItemModel.getBlockchainToken();
TokenUtils.isCustomToken(getBlockchainRegistry(), walletListItemModel.getAssetNetwork(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
package org.chromium.chrome.browser.crypto_wallet.util;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.os.Build;
Expand All @@ -18,6 +19,7 @@
import androidx.annotation.IdRes;
import androidx.fragment.app.Fragment;

import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;

public class AndroidUtils {
Expand Down Expand Up @@ -120,4 +122,13 @@ public static int getSkeletonRowCount(int skeletonRowHeight) {
int pxHeight = getScreenHeight();
return (int) Math.floor(pxHeight / skeletonRowHeight);
}

/**
* @return {@code true} if the app is a debug build, {@code false} otherwise.
*/
public static boolean isDebugBuild() {
return (ContextUtils.getApplicationContext().getApplicationInfo().flags
& ApplicationInfo.FLAG_DEBUGGABLE)
!= 0;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

public class NetworkResponsesCollector {
private JsonRpcService mJsonRpcService;
Expand All @@ -27,7 +28,7 @@ public NetworkResponsesCollector(JsonRpcService jsonRpcService, List<Integer> co
mNetworks = new LinkedHashSet<>();
}

public void getNetworks(Callbacks.Callback1<HashSet<NetworkInfo>> runWhenDone) {
public void getNetworks(Callbacks.Callback1<Set<NetworkInfo>> runWhenDone) {
AsyncUtils.MultiResponseHandler networkInfosMultiResponse =
new AsyncUtils.MultiResponseHandler(coinTypes.size());
ArrayList<AsyncUtils.GetNetworkResponseContext> accountsPermissionsContexts =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import android.content.Context;
import android.text.TextUtils;

import org.chromium.brave_wallet.mojom.BraveWalletConstants;
import org.chromium.brave_wallet.mojom.NetworkInfo;
import org.chromium.chrome.R;
import org.chromium.url.mojom.Url;
Expand All @@ -27,6 +28,10 @@ public static boolean isSameNetwork(NetworkInfo network, String chainId, int coi
public static boolean isSameNetwork(NetworkInfo network1, NetworkInfo network2) {
return isSameNetwork(network1, network2.chainId, network2.coin);
}

public static boolean isLocalNetwork(NetworkInfo network) {
return network.chainId.equals(BraveWalletConstants.LOCALHOST_CHAIN_ID);
}
}

public static NetworkInfo getAllNetworkOption(Context context) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -322,10 +322,6 @@ public static void isCustomNetwork(JsonRpcService jsonRpcService, int coinType,
});
}

public static boolean isDebuggable(Activity activity) {
return 0 != (activity.getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE);
}

public static String[] makeNetworksAbbrevList(Activity activity, NetworkInfo[] allNetworks) {
List<String> categories = new ArrayList<String>();

Expand Down