Merge pull request #13920 from brave/GetCustonAndKnownNetworks

Added GetCustomNetworks and GetKnownNetworks
This commit is contained in:
Jocelyn Liu
2022-06-26 18:37:42 -07:00
committed by GitHub
4 changed files with 82 additions and 0 deletions
@@ -13,6 +13,7 @@
#include "base/environment.h"
#include "base/json/json_writer.h"
#include "base/no_destructor.h"
#include "base/notreached.h"
#include "base/strings/utf_string_conversions.h"
#include "brave/components/brave_wallet/browser/brave_wallet_prefs.h"
#include "brave/components/brave_wallet/browser/brave_wallet_utils.h"
@@ -492,6 +493,36 @@ void JsonRpcService::GetAllNetworks(mojom::CoinType coin,
std::move(callback).Run(GetAllChains(prefs_, coin));
}
void JsonRpcService::GetCustomNetworks(mojom::CoinType coin,
GetCustomNetworksCallback callback) {
if (coin != mojom::CoinType::ETH) {
NOTREACHED();
std::move(callback).Run({});
return;
}
std::vector<std::string> chain_ids;
for (const auto& it : brave_wallet::GetAllEthCustomChains(prefs_)) {
chain_ids.push_back(it->chain_id);
}
std::move(callback).Run(std::move(chain_ids));
}
void JsonRpcService::GetKnownNetworks(mojom::CoinType coin,
GetKnownNetworksCallback callback) {
if (coin != mojom::CoinType::ETH) {
NOTREACHED();
std::move(callback).Run({});
return;
}
std::vector<std::string> chain_ids;
for (const auto& it : brave_wallet::GetAllKnownEthChains(prefs_)) {
chain_ids.push_back(it->chain_id);
}
std::move(callback).Run(std::move(chain_ids));
}
void JsonRpcService::GetHiddenNetworks(mojom::CoinType coin,
GetHiddenNetworksCallback callback) {
std::move(callback).Run(GetAllHiddenNetworks(prefs_, coin));
@@ -197,6 +197,10 @@ class JsonRpcService : public KeyedService, public mojom::JsonRpcService {
const url::Origin& origin) override;
void GetAllNetworks(mojom::CoinType coin,
GetAllNetworksCallback callback) override;
void GetCustomNetworks(mojom::CoinType coin,
GetCustomNetworksCallback callback) override;
void GetKnownNetworks(mojom::CoinType coin,
GetKnownNetworksCallback callback) override;
void GetHiddenNetworks(mojom::CoinType coin,
GetHiddenNetworksCallback callback) override;
std::string GetNetworkUrl(mojom::CoinType coin) const;
@@ -1106,6 +1106,51 @@ TEST_F(JsonRpcServiceUnitTest, GetAllNetworks) {
ASSERT_TRUE(callback_is_called);
}
TEST_F(JsonRpcServiceUnitTest, GetCustomNetworks) {
base::MockCallback<mojom::JsonRpcService::GetCustomNetworksCallback> callback;
std::vector<base::Value> values;
mojom::NetworkInfo chain1(mojom::kMainnetChainId, "chain_name",
{"https://url1.com"}, {"https://url1.com"},
{"https://url1.com"}, "symbol_name", "symbol", 11,
mojom::CoinType::ETH,
mojom::NetworkInfoData::NewEthData(
mojom::NetworkInfoDataETH::New(false)));
values.push_back(EthNetworkInfoToValue(chain1));
mojom::NetworkInfo chain2(
"0x123456", "chain_name2", {"https://url2.com"}, {"https://url2.com"},
{"https://url2.com"}, "symbol_name2", "symbol2", 22, mojom::CoinType::ETH,
mojom::NetworkInfoData::NewEthData(mojom::NetworkInfoDataETH::New(true)));
values.push_back(EthNetworkInfoToValue(chain2));
EXPECT_CALL(callback, Run(ElementsAreArray(std::vector<std::string>{})));
json_rpc_service_->GetCustomNetworks(mojom::CoinType::ETH, callback.Get());
testing::Mock::VerifyAndClearExpectations(&callback);
UpdateCustomNetworks(prefs(), &values);
EXPECT_CALL(callback, Run(ElementsAreArray({"0x1", "0x123456"})));
json_rpc_service_->GetCustomNetworks(mojom::CoinType::ETH, callback.Get());
testing::Mock::VerifyAndClearExpectations(&callback);
}
TEST_F(JsonRpcServiceUnitTest, GetKnownNetworks) {
base::MockCallback<mojom::JsonRpcService::GetKnownNetworksCallback> callback;
std::vector<base::Value> values;
mojom::NetworkInfo chain1(mojom::kMainnetChainId, "chain_name",
{"https://url1.com"}, {"https://url1.com"},
{"https://url1.com"}, "symbol_name", "symbol", 11,
mojom::CoinType::ETH,
mojom::NetworkInfoData::NewEthData(
mojom::NetworkInfoDataETH::New(false)));
values.push_back(EthNetworkInfoToValue(chain1));
UpdateCustomNetworks(prefs(), &values);
EXPECT_CALL(callback, Run(ElementsAreArray({"0x1", "0x89", "0x38", "0xa4ec",
"0xa86a", "0xfa", "0xa", "0x4",
"0x3", "0x5", "0x2a", "0x539"})));
json_rpc_service_->GetKnownNetworks(mojom::CoinType::ETH, callback.Get());
testing::Mock::VerifyAndClearExpectations(&callback);
}
TEST_F(JsonRpcServiceUnitTest, GetHiddenNetworks) {
base::MockCallback<mojom::JsonRpcService::GetHiddenNetworksCallback> callback;
@@ -739,6 +739,8 @@ interface JsonRpcService {
SetNetwork(string chain_id, CoinType coin) => (bool success);
GetNetwork(CoinType coin) => (NetworkInfo network);
GetAllNetworks(CoinType coin) => (array<NetworkInfo> networks);
GetCustomNetworks(CoinType coin) => (array<string> chain_ids);
GetKnownNetworks(CoinType coin) => (array<string> chain_ids);
GetHiddenNetworks(CoinType coin) => (array<string> chain_ids);
// Obtains the current network's chain ID