Skip to content

Commit

Permalink
Merge pull request #14052 from brave/additional-base-value-refactoring
Browse files Browse the repository at this point in the history
Additional base value refactoring
  • Loading branch information
cdesouza-chromium authored Jul 25, 2022
2 parents 83f7d5f + e3893ce commit f755b67
Show file tree
Hide file tree
Showing 49 changed files with 1,054 additions and 1,083 deletions.
17 changes: 5 additions & 12 deletions browser/brave_wallet/ethereum_provider_impl_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,7 @@ class EthereumProviderImplUnitTest : public testing::Test {
const std::string& message,
const std::vector<uint8_t>& domain_hash,
const std::vector<uint8_t>& primary_hash,
base::Value&& domain,
base::Value::Dict domain,
std::string* signature_out,
mojom::ProviderError* error_out,
std::string* error_message_out) {
Expand Down Expand Up @@ -1647,12 +1647,12 @@ TEST_F(EthereumProviderImplUnitTest, SignTypedMessage) {
std::string signature;
mojom::ProviderError error;
std::string error_message;
base::Value domain(base::Value::Type::DICTIONARY);
base::Value::Dict domain;
std::vector<uint8_t> domain_hash = DecodeHexHash(
"f2cee375fa42b42143804025fc449deafd50cc031ca257e0b194a650a912090f");
std::vector<uint8_t> primary_hash = DecodeHexHash(
"c52c0ee5d84264471806290a3f2c4cecfc5490626bf912d01f240d7a274b371e");
domain.SetIntKey("chainId", 1);
domain.Set("chainId", 1);
SignTypedMessage(absl::nullopt, "1234", "{...}", domain_hash, primary_hash,
domain.Clone(), &signature, &error, &error_message);
EXPECT_TRUE(signature.empty());
Expand All @@ -1669,13 +1669,6 @@ TEST_F(EthereumProviderImplUnitTest, SignTypedMessage) {
l10n_util::GetStringUTF8(IDS_WALLET_INVALID_PARAMETERS));

const std::string address = "0x1234567890123456789012345678901234567890";
// domain not dict
SignTypedMessage(absl::nullopt, address, "{...}", domain_hash, primary_hash,
base::Value("not dict"), &signature, &error, &error_message);
EXPECT_TRUE(signature.empty());
EXPECT_EQ(error, mojom::ProviderError::kInvalidParams);
EXPECT_EQ(error_message,
l10n_util::GetStringUTF8(IDS_WALLET_INVALID_PARAMETERS));

// not valid domain hash
SignTypedMessage(absl::nullopt, address, "{...}", {}, primary_hash,
Expand All @@ -1693,7 +1686,7 @@ TEST_F(EthereumProviderImplUnitTest, SignTypedMessage) {
EXPECT_EQ(error_message,
l10n_util::GetStringUTF8(IDS_WALLET_INVALID_PARAMETERS));

domain.SetIntKey("chainId", 4);
domain.Set("chainId", 4);
std::string chain_id = "0x4";
// not active network
SignTypedMessage(absl::nullopt, address, "{...}", domain_hash, primary_hash,
Expand All @@ -1704,7 +1697,7 @@ TEST_F(EthereumProviderImplUnitTest, SignTypedMessage) {
l10n_util::GetStringFUTF8(
IDS_BRAVE_WALLET_SIGN_TYPED_MESSAGE_CHAIN_ID_MISMATCH,
base::ASCIIToUTF16(chain_id)));
domain.SetIntKey("chainId", 1);
domain.Set("chainId", 1);

SignTypedMessage(absl::nullopt, address, "{...}", domain_hash, primary_hash,
domain.Clone(), &signature, &error, &error_message);
Expand Down
53 changes: 26 additions & 27 deletions browser/brave_wallet/solana_provider_impl_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ class SolanaProviderImplUnitTest : public testing::Test {
run_loop.Run();
}

std::string Connect(absl::optional<base::Value> arg,
std::string Connect(absl::optional<base::Value::Dict> arg,
mojom::SolanaProviderError* error_out,
std::string* error_message_out) {
std::string account;
Expand Down Expand Up @@ -263,13 +263,12 @@ class SolanaProviderImplUnitTest : public testing::Test {
blob_msg, display_encoding,
base::BindLambdaForTesting([&](mojom::SolanaProviderError error,
const std::string& error_message,
base::Value result) {
base::Value::Dict result) {
if (error_out)
*error_out = error;
if (error_message_out)
*error_message_out = error_message;
const std::string* signature =
result.GetDict().FindString("signature");
const std::string* signature = result.FindString("signature");
if (signature)
signature_out = *signature;
run_loop.Quit();
Expand All @@ -285,11 +284,11 @@ class SolanaProviderImplUnitTest : public testing::Test {
return signature_out;
}

base::Value SignAndSendTransaction(
base::Value::Dict SignAndSendTransaction(
const std::string& encoded_serialized_message,
mojom::SolanaProviderError expected_error,
const std::string& expected_error_message) {
base::Value result_out(base::Value::Type::DICTIONARY);
base::Value::Dict result_out;
base::RunLoop run_loop;
provider_->SignAndSendTransaction(
mojom::SolanaSignTransactionParam::New(
Expand All @@ -298,7 +297,7 @@ class SolanaProviderImplUnitTest : public testing::Test {
absl::nullopt,
base::BindLambdaForTesting([&](mojom::SolanaProviderError error,
const std::string& error_message,
base::Value result) {
base::Value::Dict result) {
EXPECT_EQ(error, expected_error);
EXPECT_EQ(error_message, expected_error_message);
result_out = std::move(result);
Expand Down Expand Up @@ -380,19 +379,19 @@ class SolanaProviderImplUnitTest : public testing::Test {
return result_out;
}

base::Value Request(const std::string& json,
mojom::SolanaProviderError expected_error,
const std::string& expected_error_message) {
base::Value result_out(base::Value::Type::DICTIONARY);
base::Value::Dict Request(const std::string& json,
mojom::SolanaProviderError expected_error,
const std::string& expected_error_message) {
base::Value::Dict result_out;
auto value = base::JSONReader::Read(json);
if (!value)
return result_out;
base::RunLoop run_loop;
provider_->Request(
value->Clone(),
value->GetDict().Clone(),
base::BindLambdaForTesting([&](mojom::SolanaProviderError error,
const std::string& error_message,
base::Value result) {
base::Value::Dict result) {
EXPECT_EQ(error, expected_error);
EXPECT_EQ(error_message, expected_error_message);
result_out = std::move(result);
Expand Down Expand Up @@ -517,8 +516,8 @@ TEST_F(SolanaProviderImplUnitTest, EagerlyConnect) {
Navigate(GURL("https://brave.com"));
mojom::SolanaProviderError error;
std::string error_message;
base::Value dict(base::Value::Type::DICT);
dict.GetDict().Set("onlyIfTrusted", true);
base::Value::Dict dict;
dict.Set("onlyIfTrusted", true);
// no permission will be rejected automatically
std::string account = Connect(dict.Clone(), &error, &error_message);
EXPECT_TRUE(account.empty());
Expand Down Expand Up @@ -548,7 +547,7 @@ TEST_F(SolanaProviderImplUnitTest, EagerlyConnect) {
UnlockWallet();

// extra parameters doesn't matter
dict.GetDict().Set("ExtraP", "aramters");
dict.Set("ExtraP", "aramters");
account = Connect(dict.Clone(), &error, &error_message);
EXPECT_EQ(account, address);
EXPECT_EQ(error, mojom::SolanaProviderError::kSuccess);
Expand Down Expand Up @@ -677,8 +676,8 @@ TEST_F(SolanaProviderImplUnitTest, NoSelectedAccount) {
EXPECT_EQ(error_message, l10n_util::GetStringUTF8(IDS_WALLET_INTERNAL_ERROR));
EXPECT_FALSE(IsConnected());

base::Value dict(base::Value::Type::DICT);
dict.GetDict().Set("onlyIfTrusted", true);
base::Value::Dict dict;
dict.Set("onlyIfTrusted", true);
// eagerly connect
account = Connect(dict.Clone(), &error, &error_message);
EXPECT_TRUE(account.empty());
Expand Down Expand Up @@ -851,7 +850,7 @@ TEST_F(SolanaProviderImplUnitTest, SignTransactionAPIs) {
auto value = SignAndSendTransaction(
kEncodedSerializedMsg, mojom::SolanaProviderError::kUnauthorized,
l10n_util::GetStringUTF8(IDS_WALLET_NOT_AUTHED));
EXPECT_EQ(value, base::Value(base::Value::Type::DICTIONARY));
EXPECT_EQ(value, base::Value::Dict());
auto signed_tx = SignTransaction(
kEncodedSerializedMsg, mojom::SolanaProviderError::kUnauthorized,
l10n_util::GetStringUTF8(IDS_WALLET_NOT_AUTHED));
Expand All @@ -869,7 +868,7 @@ TEST_F(SolanaProviderImplUnitTest, SignTransactionAPIs) {
value = SignAndSendTransaction(
"", mojom::SolanaProviderError::kInternalError,
l10n_util::GetStringUTF8(IDS_WALLET_INTERNAL_ERROR));
EXPECT_EQ(value, base::Value(base::Value::Type::DICTIONARY));
EXPECT_EQ(value, base::Value::Dict());
signed_tx =
SignTransaction("", mojom::SolanaProviderError::kInternalError,
l10n_util::GetStringUTF8(IDS_WALLET_INTERNAL_ERROR));
Expand Down Expand Up @@ -970,16 +969,16 @@ TEST_F(SolanaProviderImplUnitTest, SignTransactionAPIs_Hardware) {

TEST_F(SolanaProviderImplUnitTest, Request) {
// no method
base::Value result =
base::Value::Dict result =
Request(R"({params: {}})", mojom::SolanaProviderError::kParsingError,
l10n_util::GetStringUTF8(IDS_WALLET_PARSING_ERROR));
EXPECT_TRUE(result.GetDict().empty());
EXPECT_TRUE(result.empty());

// params not dictionary
result = Request(R"({method: "connect", params: []})",
mojom::SolanaProviderError::kParsingError,
l10n_util::GetStringUTF8(IDS_WALLET_PARSING_ERROR));
EXPECT_TRUE(result.GetDict().empty());
EXPECT_TRUE(result.empty());

// no params for non connect and disconnect
for (const std::string& method : {"signTransaction", "signAndSendTransaction",
Expand All @@ -988,19 +987,19 @@ TEST_F(SolanaProviderImplUnitTest, Request) {
base::StringPrintf(R"({method: "%s", params: {}})", method.c_str()),
mojom::SolanaProviderError::kParsingError,
l10n_util::GetStringUTF8(IDS_WALLET_PARSING_ERROR));
EXPECT_TRUE(result.GetDict().empty());
EXPECT_TRUE(result.empty());
}

// method not found
result =
Request(R"({method: "newMethod", params: {}})",
mojom::SolanaProviderError::kMethodNotFound,
l10n_util::GetStringUTF8(IDS_WALLET_REQUEST_PROCESSING_ERROR));
EXPECT_TRUE(result.GetDict().empty());
EXPECT_TRUE(result.empty());
result = Request(
R"({method: "newMethod"})", mojom::SolanaProviderError::kMethodNotFound,
l10n_util::GetStringUTF8(IDS_WALLET_REQUEST_PROCESSING_ERROR));
EXPECT_TRUE(result.GetDict().empty());
EXPECT_TRUE(result.empty());

for (const std::string& method : {"signTransaction", "signAndSendTransaction",
"signAllTransactions", "signMessage"}) {
Expand All @@ -1014,7 +1013,7 @@ TEST_F(SolanaProviderImplUnitTest, Request) {
Request(base::StringPrintf(json, method.c_str(), kEncodedSerializedMsg),
mojom::SolanaProviderError::kUnauthorized,
l10n_util::GetStringUTF8(IDS_WALLET_NOT_AUTHED));
EXPECT_TRUE(result.GetDict().empty());
EXPECT_TRUE(result.empty());
}
}

Expand Down
33 changes: 17 additions & 16 deletions browser/brave_wallet/solana_provider_renderer_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ class TestSolanaProvider final : public brave_wallet::mojom::SolanaProvider {
events_listener_.Bind(std::move(events_listener));
}
}
void Connect(absl::optional<base::Value> arg,
void Connect(absl::optional<base::Value::Dict> arg,
ConnectCallback callback) override {
if (error_ == SolanaProviderError::kSuccess) {
std::move(callback).Run(SolanaProviderError::kSuccess, "",
Expand Down Expand Up @@ -338,7 +338,7 @@ class TestSolanaProvider final : public brave_wallet::mojom::SolanaProvider {
}
void SignAndSendTransaction(
brave_wallet::mojom::SolanaSignTransactionParamPtr param,
absl::optional<base::Value> send_options,
absl::optional<base::Value::Dict> send_options,
SignAndSendTransactionCallback callback) override {
EXPECT_EQ(param->encoded_serialized_msg,
brave_wallet::Base58Encode(kSerializedMessage));
Expand All @@ -350,10 +350,10 @@ class TestSolanaProvider final : public brave_wallet::mojom::SolanaProvider {
ASSERT_TRUE(expect_send_options);
EXPECT_EQ(send_options, send_options_);

base::Value result(base::Value::Type::DICTIONARY);
base::Value::Dict result;
if (error_ == SolanaProviderError::kSuccess) {
result.SetStringKey("publicKey", kTestPublicKey);
result.SetStringKey("signature", kTestSignature);
result.Set("publicKey", kTestPublicKey);
result.Set("signature", kTestSignature);
std::move(callback).Run(SolanaProviderError::kSuccess, "",
std::move(result));
} else {
Expand All @@ -365,22 +365,22 @@ class TestSolanaProvider final : public brave_wallet::mojom::SolanaProvider {
const absl::optional<std::string>& display_encoding,
SignMessageCallback callback) override {
EXPECT_EQ(blob_msg, kMessageToSign);
base::Value result(base::Value::Type::DICTIONARY);
base::Value::Dict result;
if (error_ == SolanaProviderError::kSuccess) {
result.SetStringKey("publicKey", kTestPublicKey);
result.SetStringKey("signature", kTestSignature);
result.Set("publicKey", kTestPublicKey);
result.Set("signature", kTestSignature);
std::move(callback).Run(SolanaProviderError::kSuccess, "",
std::move(result));
} else {
std::move(callback).Run(error_, error_message_, std::move(result));
ClearError();
}
}
void Request(base::Value arg, RequestCallback callback) override {
base::Value result(base::Value::Type::DICTIONARY);
void Request(base::Value::Dict arg, RequestCallback callback) override {
base::Value::Dict result;
if (error_ == SolanaProviderError::kSuccess) {
result.SetStringKey("publicKey", kTestPublicKey);
result.SetStringKey("signature", kTestSignature);
result.Set("publicKey", kTestPublicKey);
result.Set("signature", kTestSignature);
std::move(callback).Run(SolanaProviderError::kSuccess, "",
std::move(result));
} else {
Expand All @@ -394,7 +394,7 @@ class TestSolanaProvider final : public brave_wallet::mojom::SolanaProvider {
error_message_ = error_message;
}

void SetSendOptions(absl::optional<base::Value> options) {
void SetSendOptions(absl::optional<base::Value::Dict> options) {
send_options_ = std::move(options);
}

Expand All @@ -410,7 +410,7 @@ class TestSolanaProvider final : public brave_wallet::mojom::SolanaProvider {
SolanaProviderError error_ = SolanaProviderError::kSuccess;
std::string error_message_;
bool emit_empty_account_changed_ = false;
absl::optional<base::Value> send_options_;
absl::optional<base::Value::Dict> send_options_;
mojo::Remote<brave_wallet::mojom::SolanaEventsListener> events_listener_;
};

Expand Down Expand Up @@ -913,7 +913,8 @@ IN_PROC_BROWSER_TEST_F(SolanaProviderRendererTest, SignAndSendTransaction) {
TestSolanaProvider* provider = test_content_browser_client_.GetProvider(
web_contents(browser())->GetMainFrame());
ASSERT_TRUE(provider);
provider->SetSendOptions(base::JSONReader::Read(send_options));
provider->SetSendOptions(
base::JSONReader::Read(send_options)->GetDict().Clone());

auto send_options_result =
EvalJs(web_contents(browser()),
Expand All @@ -937,7 +938,7 @@ IN_PROC_BROWSER_TEST_F(SolanaProviderRendererTest, SignAndSendTransaction) {
}

// allow extra parameters
provider->SetSendOptions(base::Value(base::Value::Type::DICTIONARY));
provider->SetSendOptions(base::Value::Dict());
const std::string tx2 = base::StrCat({"(", tx, ", {}, {})"});
auto result2 =
EvalJs(web_contents(browser()), SignAndSendTransactionScript(tx2),
Expand Down
15 changes: 8 additions & 7 deletions browser/ui/webui/settings/brave_wallet_handler_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
namespace {

void UpdateCustomNetworks(PrefService* prefs,
std::vector<base::Value>* values) {
std::vector<base::Value::Dict>* values) {
DictionaryPrefUpdate update(prefs, kBraveWalletCustomNetworks);
base::Value* dict = update.Get();
ASSERT_TRUE(dict);
Expand All @@ -55,9 +55,10 @@ void UpdateCustomNetworks(PrefService* prefs,
base::Value(base::Value::Type::LIST));
}
ASSERT_TRUE(list);
list->ClearList();
auto& list_value = list->GetList();
list_value.clear();
for (auto& it : *values) {
list->Append(std::move(it));
list_value.Append(std::move(it));
}
}

Expand Down Expand Up @@ -146,7 +147,7 @@ class TestBraveWalletHandler : public BraveWalletHandler {
TEST(TestBraveWalletHandler, RemoveEthereumChain) {
TestBraveWalletHandler handler;

std::vector<base::Value> values;
std::vector<base::Value::Dict> values;
brave_wallet::mojom::NetworkInfo chain1(
"chain_id", "chain_name", {"https://url1.com"}, {"https://url1.com"},
{"https://url1.com"}, "symbol_name", "symbol", 11,
Expand Down Expand Up @@ -180,7 +181,7 @@ TEST(TestBraveWalletHandler, RemoveEthereumChain) {
TEST(TestBraveWalletHandler, ResetEthereumChain) {
TestBraveWalletHandler handler;

std::vector<base::Value> values;
std::vector<base::Value::Dict> values;
brave_wallet::mojom::NetworkInfo chain1(
brave_wallet::mojom::kPolygonMainnetChainId, "chain_name",
{"https://url1.com"}, {"https://url1.com"}, {"https://url1.com"},
Expand Down Expand Up @@ -322,7 +323,7 @@ TEST(TestBraveWalletHandler, AddEthereumChainFail) {

TEST(TestBraveWalletHandler, GetNetworkList) {
TestBraveWalletHandler handler;
std::vector<base::Value> values;
std::vector<base::Value::Dict> values;
brave_wallet::mojom::NetworkInfo chain1(
"chain_id", "chain_name", {"https://url1.com"}, {"https://url1.com"},
{"https://url1.com"}, "symbol_name", "symbol", 11,
Expand Down Expand Up @@ -363,7 +364,7 @@ TEST(TestBraveWalletHandler, GetNetworkList) {
TEST(TestBraveWalletHandler, SetActiveNetwork) {
TestBraveWalletHandler handler;

std::vector<base::Value> values;
std::vector<base::Value::Dict> values;
brave_wallet::mojom::NetworkInfo chain1(
"chain_id", "chain_name", {"https://url1.com"}, {"https://url1.com"},
{"https://url1.com"}, "symbol_name", "symbol", 11,
Expand Down
Loading

0 comments on commit f755b67

Please sign in to comment.