Skip to content

Commit 1f320c9

Browse files
committed
Added active_rpc_endpoint_index to NetworkInfo
1 parent 8ffd26b commit 1f320c9

21 files changed

+462
-315
lines changed

browser/brave_wallet/brave_wallet_service_unittest.cc

+4-4
Original file line numberDiff line numberDiff line change
@@ -1169,8 +1169,8 @@ TEST_F(BraveWalletServiceUnitTest, EthAddRemoveSetUserAssetVisible) {
11691169

11701170
TEST_F(BraveWalletServiceUnitTest, NetworkListChangedEvent) {
11711171
mojom::NetworkInfo chain("0x5566", "Test Custom Chain", {"https://url1.com"},
1172-
{"https://url1.com"}, {"https://url1.com"}, "TC",
1173-
"Test Coin", 11, mojom::CoinType::ETH, false);
1172+
{"https://url1.com"}, 0, {GURL("https://url1.com")},
1173+
"TC", "Test Coin", 11, mojom::CoinType::ETH, false);
11741174

11751175
AddCustomNetwork(GetPrefs(), chain);
11761176
base::RunLoop().RunUntilIdle();
@@ -1195,8 +1195,8 @@ TEST_F(BraveWalletServiceUnitTest, NetworkListChangedEvent) {
11951195
TEST_F(BraveWalletServiceUnitTest,
11961196
CustomChainNativeAssetAddRemoveSetUserAssetVisible) {
11971197
mojom::NetworkInfo chain("0x5566", "Test Custom Chain", {"https://url1.com"},
1198-
{"https://url1.com"}, {"https://url1.com"}, "TC",
1199-
"Test Coin", 11, mojom::CoinType::ETH, false);
1198+
{"https://url1.com"}, 0, {GURL("https://url1.com")},
1199+
"TC", "Test Coin", 11, mojom::CoinType::ETH, false);
12001200
AddCustomNetwork(GetPrefs(), chain);
12011201

12021202
auto native_asset = mojom::BlockchainToken::New(

browser/brave_wallet/send_transaction_browsertest.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -750,8 +750,8 @@ IN_PROC_BROWSER_TEST_F(SendTransactionBrowserTest,
750750
RestoreWallet();
751751

752752
mojom::NetworkInfo chain("0x5566", "Test Custom Chain", {"https://url1.com"},
753-
{"https://url1.com"}, {"https://url1.com"}, "TC",
754-
"Test Coin", 11, mojom::CoinType::ETH, false);
753+
{"https://url1.com"}, 0, {GURL("https://url1.com")},
754+
"TC", "Test Coin", 11, mojom::CoinType::ETH, false);
755755
AddCustomNetwork(browser()->profile()->GetPrefs(), chain);
756756

757757
TestUserApproved("request", "", true /* skip_restore */);

browser/ui/webui/settings/brave_wallet_handler_unittest.cc

+24-23
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ class TestBraveWalletHandler : public BraveWalletHandler {
8989
// unbind it from the base class before the derived class is destroyed.
9090
set_web_ui(nullptr);
9191
}
92-
void SetEthChainIdInterceptor(const std::string& network_url,
92+
void SetEthChainIdInterceptor(const GURL& network_url,
9393
const std::string& chain_id) {
9494
url_loader_factory_.SetInterceptor(base::BindLambdaForTesting(
9595
[&, network_url, chain_id](const network::ResourceRequest& request) {
@@ -100,8 +100,9 @@ class TestBraveWalletHandler : public BraveWalletHandler {
100100
url_loader_factory_.ClearResponses();
101101
if (request_string.find("eth_chainId") != std::string::npos) {
102102
url_loader_factory_.AddResponse(
103-
network_url, "{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"" +
104-
chain_id + "\"}");
103+
network_url.spec(),
104+
"{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"" + chain_id +
105+
"\"}");
105106
}
106107
}));
107108
}
@@ -148,14 +149,14 @@ TEST(TestBraveWalletHandler, RemoveEthereumChain) {
148149

149150
std::vector<base::Value> values;
150151
brave_wallet::mojom::NetworkInfo chain1(
151-
"chain_id", "chain_name", {"https://url1.com"}, {"https://url1.com"},
152-
{"https://url1.com"}, "symbol_name", "symbol", 11,
152+
"chain_id", "chain_name", {"https://url1.com"}, {"https://url1.com"}, 0,
153+
{GURL("https://url1.com")}, "symbol_name", "symbol", 11,
153154
brave_wallet::mojom::CoinType::ETH, false);
154155
values.push_back(brave_wallet::EthNetworkInfoToValue(chain1));
155156

156157
brave_wallet::mojom::NetworkInfo chain2(
157-
"chain_id2", "chain_name2", {"https://url2.com"}, {"https://url2.com"},
158-
{"https://url2.com"}, "symbol_name2", "symbol2", 22,
158+
"chain_id2", "chain_name2", {"https://url2.com"}, {"https://url2.com"}, 0,
159+
{GURL("https://url2.com")}, "symbol_name2", "symbol2", 22,
159160
brave_wallet::mojom::CoinType::ETH, true);
160161
values.push_back(brave_wallet::EthNetworkInfoToValue(chain2));
161162
UpdateCustomNetworks(handler.prefs(), &values);
@@ -179,7 +180,7 @@ TEST(TestBraveWalletHandler, ResetEthereumChain) {
179180
std::vector<base::Value> values;
180181
brave_wallet::mojom::NetworkInfo chain1(
181182
brave_wallet::mojom::kPolygonMainnetChainId, "chain_name",
182-
{"https://url1.com"}, {"https://url1.com"}, {"https://url1.com"},
183+
{"https://url1.com"}, {"https://url1.com"}, 0, {GURL("https://url1.com")},
183184
"symbol_name", "symbol", 11, brave_wallet::mojom::CoinType::ETH, false);
184185
values.push_back(brave_wallet::EthNetworkInfoToValue(chain1));
185186

@@ -201,15 +202,15 @@ TEST(TestBraveWalletHandler, ResetEthereumChain) {
201202
TEST(TestBraveWalletHandler, AddEthereumChain) {
202203
TestBraveWalletHandler handler;
203204
brave_wallet::mojom::NetworkInfo chain1(
204-
"0x999", "chain_name", {"https://url1.com"}, {"https://url1.com"},
205-
{"https://url1.com"}, "symbol", "symbol_name", 11,
205+
"0x999", "chain_name", {"https://url1.com"}, {"https://url1.com"}, 0,
206+
{GURL("https://url1.com")}, "symbol", "symbol_name", 11,
206207
brave_wallet::mojom::CoinType::ETH, false);
207208
EXPECT_EQ(handler.GetAllEthCustomChains().size(), 0u);
208209

209210
auto args = base::ListValue();
210211
args.Append(base::Value("id"));
211212
args.Append(brave_wallet::EthNetworkInfoToValue(chain1));
212-
handler.SetEthChainIdInterceptor(chain1.rpc_urls.front(), "0x999");
213+
handler.SetEthChainIdInterceptor(chain1.rpc_endpoints.front(), "0x999");
213214
base::RunLoop loop;
214215
handler.SetChainCallbackForTesting(loop.QuitClosure());
215216
handler.AddEthereumChain(args.GetList());
@@ -254,16 +255,16 @@ TEST(TestBraveWalletHandler, AddEthereumChain) {
254255
TEST(TestBraveWalletHandler, AddEthereumChainWrongNetwork) {
255256
TestBraveWalletHandler handler;
256257
brave_wallet::mojom::NetworkInfo chain1(
257-
"0x999", "chain_name", {"https://url1.com"}, {"https://url2.com"},
258-
{"https://url3.com"}, "symbol", "symbol_name", 11,
258+
"0x999", "chain_name", {"https://url1.com"}, {"https://url2.com"}, 0,
259+
{GURL("https://url3.com")}, "symbol", "symbol_name", 11,
259260
brave_wallet::mojom::CoinType::ETH, false);
260261

261262
EXPECT_EQ(handler.GetAllEthCustomChains().size(), 0u);
262263

263264
auto args = base::ListValue();
264265
args.Append(base::Value("id"));
265266
args.Append(brave_wallet::EthNetworkInfoToValue(chain1));
266-
handler.SetEthChainIdInterceptor(chain1.rpc_urls.front(), "0x11");
267+
handler.SetEthChainIdInterceptor(chain1.rpc_endpoints.front(), "0x11");
267268
base::RunLoop loop;
268269
handler.SetChainCallbackForTesting(loop.QuitClosure());
269270
handler.AddEthereumChain(args.GetList());
@@ -277,7 +278,7 @@ TEST(TestBraveWalletHandler, AddEthereumChainWrongNetwork) {
277278
EXPECT_EQ(arg3_list[0].GetBool(), false);
278279
std::string error_message = l10n_util::GetStringFUTF8(
279280
IDS_BRAVE_WALLET_ETH_CHAIN_ID_FAILED,
280-
base::ASCIIToUTF16(GURL(chain1.rpc_urls.front()).spec()));
281+
base::ASCIIToUTF16(chain1.rpc_endpoints.front().spec()));
281282
EXPECT_EQ(arg3_list[1].GetString(), error_message);
282283
}
283284
TEST(TestBraveWalletHandler, AddEthereumChainFail) {
@@ -314,14 +315,14 @@ TEST(TestBraveWalletHandler, GetNetworkList) {
314315
TestBraveWalletHandler handler;
315316
std::vector<base::Value> values;
316317
brave_wallet::mojom::NetworkInfo chain1(
317-
"chain_id", "chain_name", {"https://url1.com"}, {"https://url1.com"},
318-
{"https://url1.com"}, "symbol_name", "symbol", 11,
318+
"chain_id", "chain_name", {"https://url1.com"}, {"https://url1.com"}, 0,
319+
{GURL("https://url1.com")}, "symbol_name", "symbol", 11,
319320
brave_wallet::mojom::CoinType::ETH, false);
320321
values.push_back(brave_wallet::EthNetworkInfoToValue(chain1));
321322

322323
brave_wallet::mojom::NetworkInfo chain2(
323-
"chain_id2", "chain_name2", {"https://url2.com"}, {"https://url2.com"},
324-
{"https://url2.com"}, "symbol_name2", "symbol2", 22,
324+
"chain_id2", "chain_name2", {"https://url2.com"}, {"https://url2.com"}, 0,
325+
{GURL("https://url2.com")}, "symbol_name2", "symbol2", 22,
325326
brave_wallet::mojom::CoinType::ETH, true);
326327
values.push_back(brave_wallet::EthNetworkInfoToValue(chain2));
327328
UpdateCustomNetworks(handler.prefs(), &values);
@@ -351,14 +352,14 @@ TEST(TestBraveWalletHandler, SetActiveNetwork) {
351352

352353
std::vector<base::Value> values;
353354
brave_wallet::mojom::NetworkInfo chain1(
354-
"chain_id", "chain_name", {"https://url1.com"}, {"https://url1.com"},
355-
{"https://url1.com"}, "symbol_name", "symbol", 11,
355+
"chain_id", "chain_name", {"https://url1.com"}, {"https://url1.com"}, 0,
356+
{GURL("https://url1.com")}, "symbol_name", "symbol", 11,
356357
brave_wallet::mojom::CoinType::ETH, false);
357358
values.push_back(brave_wallet::EthNetworkInfoToValue(chain1));
358359

359360
brave_wallet::mojom::NetworkInfo chain2(
360-
"chain_id2", "chain_name2", {"https://url2.com"}, {"https://url2.com"},
361-
{"https://url2.com"}, "symbol_name2", "symbol2", 22,
361+
"chain_id2", "chain_name2", {"https://url2.com"}, {"https://url2.com"}, 0,
362+
{GURL("https://url2.com")}, "symbol_name2", "symbol2", 22,
362363
brave_wallet::mojom::CoinType::ETH, true);
363364
values.push_back(brave_wallet::EthNetworkInfoToValue(chain2));
364365
UpdateCustomNetworks(handler.prefs(), &values);

components/brave_wallet/browser/blockchain_list_parser.cc

+5-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "base/strings/strcat.h"
1313
#include "base/strings/stringprintf.h"
1414
#include "brave/components/brave_wallet/browser/brave_wallet_utils.h"
15+
#include "brave/components/brave_wallet/common/value_conversion_utils.h"
1516

1617
namespace {
1718

@@ -224,13 +225,15 @@ bool ParseChainList(const std::string& json, ChainList* result) {
224225
for (auto& item : *rpc_list) {
225226
if (auto* url = item.GetIfString()) {
226227
if (GURL(*url).is_valid()) {
227-
network->rpc_urls.push_back(*url);
228+
network->rpc_endpoints.emplace_back(*url);
228229
}
229230
}
230231
}
231232
}
232-
if (network->rpc_urls.empty())
233+
if (network->rpc_endpoints.empty())
233234
continue;
235+
network->active_rpc_endpoint_index =
236+
GetFirstValidChainURLIndex(network->rpc_endpoints);
234237

235238
network->symbol = EmptyIfNull(
236239
chain_item->FindStringByDottedPath("nativeCurrency.symbol"));

components/brave_wallet/browser/blockchain_list_parser_unittest.cc

+14-12
Original file line numberDiff line numberDiff line change
@@ -226,11 +226,12 @@ TEST(ParseChainListUnitTest, ParseChainList) {
226226
EXPECT_EQ("0x1", chain1->chain_id);
227227
EXPECT_EQ("Ethereum Mainnet", chain1->chain_name);
228228
EXPECT_THAT(
229-
chain1->rpc_urls,
230-
ElementsAreArray({"https://mainnet.infura.io/v3/${INFURA_API_KEY}",
231-
"wss://mainnet.infura.io/ws/v3/${INFURA_API_KEY}",
232-
"https://api.mycryptoapi.com/eth",
233-
"https://cloudflare-eth.com"}));
229+
chain1->rpc_endpoints,
230+
ElementsAreArray({GURL("https://mainnet.infura.io/v3/${INFURA_API_KEY}"),
231+
GURL("wss://mainnet.infura.io/ws/v3/${INFURA_API_KEY}"),
232+
GURL("https://api.mycryptoapi.com/eth"),
233+
GURL("https://cloudflare-eth.com")}));
234+
EXPECT_EQ(2, chain1->active_rpc_endpoint_index);
234235
EXPECT_THAT(chain1->block_explorer_urls,
235236
ElementsAreArray({"https://etherscan.io"}));
236237
EXPECT_EQ("Ether", chain1->symbol_name);
@@ -245,13 +246,14 @@ TEST(ParseChainListUnitTest, ParseChainList) {
245246
EXPECT_EQ("0x89", chain2->chain_id);
246247
EXPECT_EQ("Polygon Mainnet", chain2->chain_name);
247248
EXPECT_THAT(
248-
chain2->rpc_urls,
249-
ElementsAreArray({"https://polygon-rpc.com/",
250-
"https://rpc-mainnet.matic.network",
251-
"https://matic-mainnet.chainstacklabs.com",
252-
"https://rpc-mainnet.maticvigil.com",
253-
"https://rpc-mainnet.matic.quiknode.pro",
254-
"https://matic-mainnet-full-rpc.bwarelabs.com"}));
249+
chain2->rpc_endpoints,
250+
ElementsAreArray({GURL("https://polygon-rpc.com/"),
251+
GURL("https://rpc-mainnet.matic.network"),
252+
GURL("https://matic-mainnet.chainstacklabs.com"),
253+
GURL("https://rpc-mainnet.maticvigil.com"),
254+
GURL("https://rpc-mainnet.matic.quiknode.pro"),
255+
GURL("https://matic-mainnet-full-rpc.bwarelabs.com")}));
256+
EXPECT_EQ(0, chain2->active_rpc_endpoint_index);
255257
EXPECT_THAT(chain2->block_explorer_urls,
256258
ElementsAreArray({"https://polygonscan.com"}));
257259
EXPECT_EQ("MATIC", chain2->symbol_name);

0 commit comments

Comments
 (0)