Drop signing fields from Eth TxData (#35012)
This commit is contained in:
@@ -11,8 +11,6 @@
|
||||
#include <vector>
|
||||
|
||||
#include "base/files/scoped_temp_dir.h"
|
||||
#include "base/memory/scoped_refptr.h"
|
||||
#include "base/task/sequenced_task_runner.h"
|
||||
#include "brave/components/brave_wallet/browser/brave_wallet_service.h"
|
||||
#include "brave/components/brave_wallet/browser/eth_transaction.h"
|
||||
#include "brave/components/brave_wallet/browser/eth_tx_meta.h"
|
||||
@@ -70,7 +68,7 @@ class WalletNotificationServiceUnitTest : public testing::Test {
|
||||
*EthTransaction::FromTxData(mojom::TxData::New(
|
||||
mojom::kMainnetChainId, "0x01", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535", "0x0de0b6b3a7640000",
|
||||
std::vector<uint8_t>(), false, std::nullopt)));
|
||||
std::vector<uint8_t>())));
|
||||
EthTxMeta meta(EthAccount(0), std::move(tx));
|
||||
meta.set_status(status);
|
||||
notification_service_->OnTransactionStatusChanged(meta.ToTransactionInfo());
|
||||
|
||||
@@ -442,6 +442,8 @@ class SendOrSignTransactionBrowserTest : public InProcessBrowserTest {
|
||||
EXPECT_EQ(EvalJs(web_contents(), "getSendOrSignTransactionResult()")
|
||||
.ExtractString(),
|
||||
*expected_signed_tx);
|
||||
EXPECT_EQ(*tx_service()->GetEthSignedTransaction(infos[0]->id),
|
||||
*expected_signed_tx);
|
||||
} else {
|
||||
EXPECT_EQ(EvalJs(web_contents(), "getSendOrSignTransactionResult()")
|
||||
.ExtractString(),
|
||||
|
||||
@@ -334,18 +334,18 @@ IN_PROC_BROWSER_TEST_F(WalletButtonNotificationSourceTest,
|
||||
|
||||
const auto from_account = GetAccountUtils().EnsureFilTestAccount(0);
|
||||
const std::string to_account = "t1lqarsh4nkg545ilaoqdsbtj4uofplt6sto26ziy";
|
||||
auto tx_data = brave_wallet::mojom::TxDataUnion::NewFilTxData(
|
||||
brave_wallet::mojom::FilTxData::New(
|
||||
"" /* nonce */, "10" /* gas_premium */, "10" /* gas_fee_cap */,
|
||||
"100" /* gas_limit */, "" /* max_fee */, to_account, "11"));
|
||||
auto fil_tx_data = brave_wallet::mojom::FilTxData::New(
|
||||
"" /* nonce */, "10" /* gas_premium */, "10" /* gas_fee_cap */,
|
||||
"100" /* gas_limit */, "" /* max_fee */, to_account, "11");
|
||||
auto chain_id = network_manager()->GetCurrentChainId(
|
||||
brave_wallet::mojom::CoinType::FIL, std::nullopt);
|
||||
EXPECT_EQ(chain_id, "t");
|
||||
EXPECT_EQ(from_account->account_id->unique_key,
|
||||
"461_3_0_t17otcil7bookogjy3ywoslq5gf5tbisdkcfui2iq");
|
||||
|
||||
tx_service()->AddUnapprovedTransaction(
|
||||
std::move(tx_data), chain_id, from_account->account_id.Clone(), nullptr,
|
||||
tx_service()->AddUnapprovedFilecoinTransaction(
|
||||
std::move(fil_tx_data), chain_id, from_account->account_id.Clone(),
|
||||
nullptr,
|
||||
base::BindLambdaForTesting([&](bool success, const std::string& id,
|
||||
const std::string& err_message) {
|
||||
first_tx_meta_id = id;
|
||||
@@ -433,8 +433,8 @@ IN_PROC_BROWSER_TEST_F(WalletButtonNotificationSourceTest,
|
||||
std::vector<brave_wallet::mojom::SolanaMessageAddressTableLookupPtr>(),
|
||||
nullptr, nullptr, nullptr);
|
||||
|
||||
tx_service()->AddUnapprovedTransaction(
|
||||
brave_wallet::mojom::TxDataUnion::NewSolanaTxData(std::move(tx_data)),
|
||||
tx_service()->AddUnapprovedSolanaTransaction(
|
||||
std::move(tx_data),
|
||||
network_manager()->GetCurrentChainId(brave_wallet::mojom::CoinType::SOL,
|
||||
std::nullopt),
|
||||
from_account->account_id.Clone(), nullptr,
|
||||
@@ -526,15 +526,15 @@ IN_PROC_BROWSER_TEST_F(WalletButtonNotificationSourceTest,
|
||||
|
||||
const auto from_account = GetAccountUtils().EnsureFilTestAccount(0);
|
||||
const std::string to_account = "t1lqarsh4nkg545ilaoqdsbtj4uofplt6sto26ziy";
|
||||
auto tx_data = brave_wallet::mojom::TxDataUnion::NewFilTxData(
|
||||
brave_wallet::mojom::FilTxData::New(
|
||||
"" /* nonce */, "10" /* gas_premium */, "10" /* gas_fee_cap */,
|
||||
"100" /* gas_limit */, "" /* max_fee */, to_account, "11"));
|
||||
auto fil_tx_data = brave_wallet::mojom::FilTxData::New(
|
||||
"" /* nonce */, "10" /* gas_premium */, "10" /* gas_fee_cap */,
|
||||
"100" /* gas_limit */, "" /* max_fee */, to_account, "11");
|
||||
auto chain_id = network_manager()->GetCurrentChainId(
|
||||
brave_wallet::mojom::CoinType::FIL, std::nullopt);
|
||||
EXPECT_EQ(chain_id, "t");
|
||||
tx_service()->AddUnapprovedTransaction(
|
||||
std::move(tx_data), chain_id, from_account->account_id.Clone(), nullptr,
|
||||
tx_service()->AddUnapprovedFilecoinTransaction(
|
||||
std::move(fil_tx_data), chain_id, from_account->account_id.Clone(),
|
||||
nullptr,
|
||||
base::BindLambdaForTesting([&](bool success, const std::string& id,
|
||||
const std::string& err_message) {
|
||||
tx_meta_id = id;
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
#include "base/check.h"
|
||||
#include "base/functional/bind.h"
|
||||
#include "base/notimplemented.h"
|
||||
#include "base/notreached.h"
|
||||
#include "brave/components/brave_wallet/browser/bitcoin/bitcoin_block_tracker.h"
|
||||
#include "brave/components/brave_wallet/browser/bitcoin/bitcoin_transaction.h"
|
||||
#include "brave/components/brave_wallet/browser/bitcoin/bitcoin_tx_meta.h"
|
||||
@@ -137,19 +136,9 @@ void BitcoinTxManager::AddUnapprovedBitcoinTransaction(
|
||||
std::move(callback)));
|
||||
}
|
||||
|
||||
void BitcoinTxManager::AddUnapprovedTransaction(
|
||||
const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback) {
|
||||
NOTREACHED() << "AddUnapprovedBitcoinTransaction must be used";
|
||||
}
|
||||
|
||||
void BitcoinTxManager::ContinueAddUnapprovedTransaction(
|
||||
std::unique_ptr<BitcoinTxMeta> meta,
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedBitcoinTransactionCallback callback,
|
||||
base::expected<BitcoinTransaction, std::string> bitcoin_transaction) {
|
||||
if (!bitcoin_transaction.has_value()) {
|
||||
std::move(callback).Run(false, "", bitcoin_transaction.error());
|
||||
|
||||
@@ -74,12 +74,6 @@ class BitcoinTxManager : public TxManager,
|
||||
uint32_t latest_height) override;
|
||||
|
||||
// TxManager
|
||||
void AddUnapprovedTransaction(const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback) override;
|
||||
void ApproveTransaction(const std::string& tx_meta_id,
|
||||
ApproveTransactionCallback) override;
|
||||
void SpeedupOrCancelTransaction(
|
||||
@@ -94,7 +88,7 @@ class BitcoinTxManager : public TxManager,
|
||||
|
||||
void ContinueAddUnapprovedTransaction(
|
||||
std::unique_ptr<BitcoinTxMeta> meta,
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedBitcoinTransactionCallback callback,
|
||||
base::expected<BitcoinTransaction, std::string> bitcoin_transaction);
|
||||
|
||||
void ContinueApproveTransaction(const std::string& tx_meta_id,
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <unordered_map>
|
||||
#include <utility>
|
||||
|
||||
#include "base/files/scoped_temp_dir.h"
|
||||
@@ -90,18 +89,6 @@ class BitcoinTxManagerUnitTest : public testing::Test {
|
||||
|
||||
PrefService* prefs() { return &prefs_; }
|
||||
|
||||
void AddUnapprovedTransaction(
|
||||
std::string chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
mojom::AccountIdPtr from,
|
||||
std::optional<url::Origin> origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
BitcoinTxManager::AddUnapprovedTransactionCallback callback) {
|
||||
btc_tx_manager()->AddUnapprovedTransaction(
|
||||
std::move(chain_id), std::move(tx_data_union), std::move(from),
|
||||
std::move(origin), std::move(swap_info), std::move(callback));
|
||||
}
|
||||
|
||||
void ApproveTransaction(
|
||||
std::string tx_meta_id,
|
||||
BitcoinTxManager::ApproveTransactionCallback callback) {
|
||||
@@ -132,7 +119,8 @@ TEST_F(BitcoinTxManagerUnitTest, SubmitTransaction) {
|
||||
mojom::kBitcoinMainnet, from_account.Clone(), kMockBtcAddress, 5000,
|
||||
false, nullptr);
|
||||
|
||||
base::MockCallback<TxManager::AddUnapprovedTransactionCallback> add_callback;
|
||||
base::MockCallback<BitcoinTxManager::AddUnapprovedBitcoinTransactionCallback>
|
||||
add_callback;
|
||||
std::string meta_id;
|
||||
EXPECT_CALL(add_callback, Run(_, _, _)).WillOnce(SaveArg<1>(&meta_id));
|
||||
btc_tx_manager()->AddUnapprovedBitcoinTransaction(params.Clone(),
|
||||
@@ -178,7 +166,8 @@ TEST_F(BitcoinTxManagerUnitTest, SubmitTransactionError) {
|
||||
mojom::kBitcoinMainnet, from_account.Clone(), kMockBtcAddress, 5000,
|
||||
false, nullptr);
|
||||
|
||||
base::MockCallback<TxManager::AddUnapprovedTransactionCallback> add_callback;
|
||||
base::MockCallback<BitcoinTxManager::AddUnapprovedBitcoinTransactionCallback>
|
||||
add_callback;
|
||||
std::string meta_id;
|
||||
EXPECT_CALL(add_callback, Run(_, _, _)).WillOnce(SaveArg<1>(&meta_id));
|
||||
btc_tx_manager()->AddUnapprovedBitcoinTransaction(params.Clone(),
|
||||
|
||||
@@ -123,7 +123,7 @@ class BraveWalletP3AUnitTest : public testing::Test {
|
||||
const std::string& chain_id,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
TxService::AddUnapprovedTransactionCallback callback,
|
||||
TxService::AddUnapprovedZCashTransactionCallback callback,
|
||||
base::expected<ZCashTransaction, std::string> zcash_transaction) {
|
||||
tx_service()->GetZCashTxManager()->ContinueAddUnapprovedTransaction(
|
||||
from, origin, nullptr, std::move(callback),
|
||||
@@ -691,9 +691,9 @@ TEST_F(BraveWalletP3AUnitTest, SolTransactionSentObservation) {
|
||||
last_valid_block_height1);
|
||||
|
||||
TestFuture<bool, const std::string&, const std::string&> tx_add_future;
|
||||
tx_service()->AddUnapprovedTransaction(
|
||||
mojom::TxDataUnion::NewSolanaTxData(std::move(solana_tx_data)),
|
||||
mojom::kSolanaMainnet, sol_from(), nullptr, tx_add_future.GetCallback());
|
||||
tx_service()->AddUnapprovedSolanaTransaction(
|
||||
std::move(solana_tx_data), mojom::kSolanaMainnet, sol_from(), nullptr,
|
||||
tx_add_future.GetCallback());
|
||||
auto [success, tx_meta_id, error_message] = tx_add_future.Take();
|
||||
EXPECT_TRUE(success);
|
||||
EXPECT_NE(tx_meta_id, "");
|
||||
@@ -725,9 +725,8 @@ TEST_F(BraveWalletP3AUnitTest, FilTransactionSentObservation) {
|
||||
"" /* gas_fee_cap */, "" /* gas_limit */,
|
||||
"" /* max_fee */, to_account, "11");
|
||||
TestFuture<bool, const std::string&, const std::string&> tx_add_future;
|
||||
tx_service()->AddUnapprovedTransaction(
|
||||
mojom::TxDataUnion::NewFilTxData(std::move(tx_data)),
|
||||
mojom::kFilecoinMainnet, fil_from(), nullptr,
|
||||
tx_service()->AddUnapprovedFilecoinTransaction(
|
||||
std::move(tx_data), mojom::kFilecoinMainnet, fil_from(), nullptr,
|
||||
tx_add_future.GetCallback());
|
||||
auto [success, tx_meta_id, error_message] = tx_add_future.Take();
|
||||
EXPECT_TRUE(success);
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
|
||||
#include "base/functional/bind.h"
|
||||
#include "base/notimplemented.h"
|
||||
#include "base/notreached.h"
|
||||
#include "base/strings/string_number_conversions.h"
|
||||
#include "brave/components/brave_wallet/browser/brave_wallet_utils.h"
|
||||
#include "brave/components/brave_wallet/browser/cardano/cardano_block_tracker.h"
|
||||
@@ -93,22 +92,12 @@ void CardanoTxManager::OnLatestHeightUpdated(const std::string& chain_id,
|
||||
UpdatePendingTransactions(chain_id);
|
||||
}
|
||||
|
||||
void CardanoTxManager::AddUnapprovedTransaction(
|
||||
const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback) {
|
||||
NOTREACHED() << "AddUnapprovedCardanoTransaction must be used";
|
||||
}
|
||||
|
||||
void CardanoTxManager::ContinueAddUnapprovedTransaction(
|
||||
const std::string& chain_id,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedCardanoTransactionCallback callback,
|
||||
base::expected<CardanoTransaction, std::string> cardano_transaction) {
|
||||
if (!cardano_transaction.has_value()) {
|
||||
std::move(callback).Run(false, "", cardano_transaction.error());
|
||||
|
||||
@@ -62,12 +62,6 @@ class CardanoTxManager : public TxManager,
|
||||
uint32_t latest_height) override;
|
||||
|
||||
// TxManager
|
||||
void AddUnapprovedTransaction(const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback) override;
|
||||
void ApproveTransaction(const std::string& tx_meta_id,
|
||||
ApproveTransactionCallback) override;
|
||||
void SpeedupOrCancelTransaction(
|
||||
@@ -85,7 +79,7 @@ class CardanoTxManager : public TxManager,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedCardanoTransactionCallback callback,
|
||||
base::expected<CardanoTransaction, std::string> cardano_transaction);
|
||||
|
||||
void ContinueApproveTransaction(const std::string& tx_meta_id,
|
||||
|
||||
@@ -105,18 +105,6 @@ class CardanoTxManagerUnitTest : public testing::Test {
|
||||
|
||||
PrefService* prefs() { return &prefs_; }
|
||||
|
||||
void AddUnapprovedTransaction(
|
||||
std::string chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
mojom::AccountIdPtr from,
|
||||
std::optional<url::Origin> origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
CardanoTxManager::AddUnapprovedTransactionCallback callback) {
|
||||
cardano_tx_manager()->AddUnapprovedTransaction(
|
||||
std::move(chain_id), std::move(tx_data_union), std::move(from),
|
||||
std::move(origin), std::move(swap_info), std::move(callback));
|
||||
}
|
||||
|
||||
void ApproveTransaction(
|
||||
std::string tx_meta_id,
|
||||
CardanoTxManager::ApproveTransactionCallback callback) {
|
||||
@@ -147,7 +135,8 @@ TEST_F(CardanoTxManagerUnitTest, SubmitTransaction) {
|
||||
mojom::kCardanoMainnet, from_account.Clone(), kMockCardanoAddress1,
|
||||
1000000, false, std::nullopt, nullptr);
|
||||
|
||||
base::MockCallback<TxManager::AddUnapprovedTransactionCallback> add_callback;
|
||||
base::MockCallback<CardanoTxManager::AddUnapprovedCardanoTransactionCallback>
|
||||
add_callback;
|
||||
std::string meta_id;
|
||||
EXPECT_CALL(add_callback, Run(_, _, _))
|
||||
.WillOnce(
|
||||
@@ -209,7 +198,8 @@ TEST_F(CardanoTxManagerUnitTest, SubmitTransaction_SendToken) {
|
||||
mojom::kCardanoMainnet, from_account.Clone(), kMockCardanoAddress1, 5,
|
||||
false, base::HexEncodeLower(GetMockTokenId("brave")), nullptr);
|
||||
|
||||
base::MockCallback<TxManager::AddUnapprovedTransactionCallback> add_callback;
|
||||
base::MockCallback<CardanoTxManager::AddUnapprovedCardanoTransactionCallback>
|
||||
add_callback;
|
||||
std::string meta_id;
|
||||
EXPECT_CALL(add_callback, Run(_, _, _))
|
||||
.WillOnce(
|
||||
@@ -265,7 +255,8 @@ TEST_F(CardanoTxManagerUnitTest, SubmitTransactionError) {
|
||||
mojom::kCardanoMainnet, from_account.Clone(), kMockCardanoAddress1,
|
||||
1000000, false, std::nullopt, nullptr);
|
||||
|
||||
base::MockCallback<TxManager::AddUnapprovedTransactionCallback> add_callback;
|
||||
base::MockCallback<CardanoTxManager::AddUnapprovedCardanoTransactionCallback>
|
||||
add_callback;
|
||||
std::string meta_id;
|
||||
EXPECT_CALL(add_callback, Run(_, _, _))
|
||||
.WillOnce(
|
||||
|
||||
@@ -25,7 +25,7 @@ TEST(Eip1559TransactionUnitTest, GetMessageToSign) {
|
||||
*Eip1559Transaction::FromTxData(mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x04", "0x00", "0x00", "0x00",
|
||||
"0x0101010101010101010101010101010101010101",
|
||||
"0x00", data, false, std::nullopt),
|
||||
"0x00", data),
|
||||
"0x0", "0x0"));
|
||||
ASSERT_EQ(tx.type(), EthTransactionType::kEip1559);
|
||||
auto* access_list = tx.access_list();
|
||||
@@ -125,8 +125,7 @@ TEST(Eip1559TransactionUnitTest, GetSignedTransactionAndHash) {
|
||||
*Eip1559Transaction::FromTxData(mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x04", entry.nonce, "0x00", entry.gas_limit,
|
||||
"0x000000000000000000000000000000000000aaaa",
|
||||
entry.value, std::vector<uint8_t>(), false,
|
||||
std::nullopt),
|
||||
entry.value, std::vector<uint8_t>()),
|
||||
entry.max_priority_fee_per_gas, entry.max_fee_per_gas));
|
||||
|
||||
auto signature = *key->SignCompact(tx.GetHashedMessageToSign());
|
||||
@@ -141,8 +140,7 @@ TEST(Eip1559TransactionUnitTest, Serialization) {
|
||||
*Eip1559Transaction::FromTxData(mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x15BE", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0xde0b6b3a7640000", std::vector<uint8_t>(), false,
|
||||
std::nullopt),
|
||||
"0xde0b6b3a7640000", std::vector<uint8_t>()),
|
||||
"0x7B", "0x1C8"));
|
||||
|
||||
auto* access_list = tx.access_list();
|
||||
@@ -164,7 +162,7 @@ TEST(Eip1559TransactionUnitTest, FromTxData) {
|
||||
auto valid_tx_data = mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x15BE", "0x01", "0x3E8", "0x989680",
|
||||
"0x3535353535353535353535353535353535353535", "0x2A",
|
||||
std::vector<uint8_t>{1}, false, std::nullopt),
|
||||
std::vector<uint8_t>{1}),
|
||||
"0x7B", "0x1C8");
|
||||
|
||||
auto tx = Eip1559Transaction::FromTxData(valid_tx_data);
|
||||
|
||||
@@ -78,10 +78,9 @@ TEST(Eip2930TransactionUnitTest, AccessListAndValue) {
|
||||
TEST(Eip2930TransactionUnitTest, GetHashedMessageToSign) {
|
||||
std::vector<uint8_t> data;
|
||||
EXPECT_TRUE(base::HexStringToBytes("010200", &data));
|
||||
Eip2930Transaction tx = *Eip2930Transaction::FromTxData(
|
||||
mojom::TxData::New(mojom::kMainnetChainId, "0x00", "0x00", "0x00",
|
||||
"0x0101010101010101010101010101010101010101", "0x00",
|
||||
data, false, std::nullopt));
|
||||
Eip2930Transaction tx = *Eip2930Transaction::FromTxData(mojom::TxData::New(
|
||||
mojom::kMainnetChainId, "0x00", "0x00", "0x00",
|
||||
"0x0101010101010101010101010101010101010101", "0x00", data));
|
||||
ASSERT_EQ(tx.type(), EthTransactionType::kEip2930);
|
||||
auto* access_list = tx.access_list();
|
||||
Eip2930Transaction::AccessListItem item;
|
||||
@@ -101,7 +100,7 @@ TEST(Eip2930TransactionUnitTest, GetSignedTransactionAndHash) {
|
||||
Eip2930Transaction tx = *Eip2930Transaction::FromTxData(
|
||||
mojom::TxData::New("0x796f6c6f763378", "0x00", "0x3b9aca00", "0x62d4",
|
||||
"0xdf0a88b2b68c673713a8ec826003676f272e3573", "0x01",
|
||||
std::vector<uint8_t>(), false, std::nullopt));
|
||||
std::vector<uint8_t>()));
|
||||
ASSERT_EQ(tx.type(), EthTransactionType::kEip2930);
|
||||
auto* access_list = tx.access_list();
|
||||
Eip2930Transaction::AccessListItem item;
|
||||
@@ -147,10 +146,10 @@ TEST(Eip2930TransactionUnitTest, GetSignedTransactionAndHash) {
|
||||
}
|
||||
|
||||
TEST(Eip2930TransactionUnitTest, Serialization) {
|
||||
Eip2930Transaction tx = *Eip2930Transaction::FromTxData(mojom::TxData::New(
|
||||
"0x15BE", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535", "0x0de0b6b3a7640000",
|
||||
std::vector<uint8_t>(), false, std::nullopt));
|
||||
Eip2930Transaction tx = *Eip2930Transaction::FromTxData(
|
||||
mojom::TxData::New("0x15BE", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>()));
|
||||
auto* access_list = tx.access_list();
|
||||
Eip2930Transaction::AccessListItem item_a;
|
||||
item_a.address.fill(0x0a);
|
||||
@@ -168,10 +167,9 @@ TEST(Eip2930TransactionUnitTest, Serialization) {
|
||||
TEST(Eip2930TransactionUnitTest, GetBaseFee) {
|
||||
std::vector<uint8_t> data;
|
||||
ASSERT_TRUE(base::HexStringToBytes("010200", &data));
|
||||
Eip2930Transaction tx = *Eip2930Transaction::FromTxData(
|
||||
mojom::TxData::New("0x15BE", "0x0", "0x0", "0x0",
|
||||
"0x3535353535353535353535353535353535353535", "0x0",
|
||||
data, false, std::nullopt));
|
||||
Eip2930Transaction tx = *Eip2930Transaction::FromTxData(mojom::TxData::New(
|
||||
"0x15BE", "0x0", "0x0", "0x0",
|
||||
"0x3535353535353535353535353535353535353535", "0x0", data));
|
||||
|
||||
auto* access_list = tx.access_list();
|
||||
Eip2930Transaction::AccessListItem item_a;
|
||||
@@ -186,8 +184,8 @@ TEST(Eip2930TransactionUnitTest, GetBaseFee) {
|
||||
const uint256_t fee = 21000 + 2 * 16 + 4 + 2400 + 1900;
|
||||
EXPECT_EQ(tx.GetBaseFee(), fee);
|
||||
|
||||
Eip2930Transaction tx2 = *Eip2930Transaction::FromTxData(mojom::TxData::New(
|
||||
"0x15BE", "0x0", "0x0", "0x0", "0x", "0x0", data, false, std::nullopt));
|
||||
Eip2930Transaction tx2 = *Eip2930Transaction::FromTxData(
|
||||
mojom::TxData::New("0x15BE", "0x0", "0x0", "0x0", "0x", "0x0", data));
|
||||
|
||||
*tx2.access_list() = *tx.access_list();
|
||||
// Plus contract creation
|
||||
@@ -198,7 +196,7 @@ TEST(Eip2930TransactionUnitTest, GetBaseFee) {
|
||||
Eip2930Transaction tx3 = *Eip2930Transaction::FromTxData(
|
||||
mojom::TxData::New("0x15BE", "0x0", "0x0", "0x0",
|
||||
"0x3535353535353535353535353535353535353535", "0x0",
|
||||
std::vector<uint8_t>(), false, std::nullopt));
|
||||
std::vector<uint8_t>()));
|
||||
|
||||
auto* access_list3 = tx3.access_list();
|
||||
access_list3->push_back(item_a);
|
||||
@@ -214,7 +212,7 @@ TEST(Eip2930TransactionUnitTest, FromTxData) {
|
||||
auto tx = Eip2930Transaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x01", "0x3E8", "0x989680",
|
||||
"0x3535353535353535353535353535353535353535", "0x2A",
|
||||
std::vector<uint8_t>{1}, false, std::nullopt));
|
||||
std::vector<uint8_t>{1}));
|
||||
ASSERT_TRUE(tx);
|
||||
EXPECT_EQ(tx->nonce(), uint256_t(1));
|
||||
EXPECT_EQ(tx->gas_price(), uint256_t(1000));
|
||||
@@ -228,7 +226,7 @@ TEST(Eip2930TransactionUnitTest, FromTxData) {
|
||||
tx = Eip2930Transaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "", "0x3E8", "0x989680",
|
||||
"0x3535353535353535353535353535353535353535", "0x2A",
|
||||
std::vector<uint8_t>{1}, false, std::nullopt));
|
||||
std::vector<uint8_t>{1}));
|
||||
ASSERT_TRUE(tx);
|
||||
EXPECT_FALSE(tx->nonce());
|
||||
|
||||
@@ -236,13 +234,13 @@ TEST(Eip2930TransactionUnitTest, FromTxData) {
|
||||
// single missing value
|
||||
EXPECT_FALSE(Eip2930Transaction::FromTxData(mojom::TxData::New(
|
||||
"0x1", "0x1", "0x3E8", "", "0x3535353535353535353535353535353535353535",
|
||||
"0x2A", std::vector<uint8_t>{1}, false, std::nullopt)));
|
||||
"0x2A", std::vector<uint8_t>{1})));
|
||||
|
||||
// But missing data is allowed when strict is false
|
||||
tx = Eip2930Transaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "", "0x3E8", "",
|
||||
"0x3535353535353535353535353535353535353535", "",
|
||||
std::vector<uint8_t>{1}, false, std::nullopt),
|
||||
std::vector<uint8_t>{1}),
|
||||
false);
|
||||
ASSERT_TRUE(tx);
|
||||
// Empty nonce should be nullopt
|
||||
|
||||
@@ -162,11 +162,15 @@ std::optional<EthTransaction> EthTransaction::FromValue(
|
||||
}
|
||||
tx.data_ = std::vector<uint8_t>(data_decoded.begin(), data_decoded.end());
|
||||
|
||||
std::optional<int> v = value.FindInt("v");
|
||||
if (!v) {
|
||||
if (auto* v_str = value.FindString("v")) {
|
||||
if (!HexValueToUint256(*v_str, &tx.v_)) {
|
||||
return std::nullopt;
|
||||
}
|
||||
} else if (std::optional<int> v_uint8 = value.FindInt("v")) {
|
||||
tx.v_ = static_cast<uint8_t>(*v_uint8); // Legacy buggy format.
|
||||
} else {
|
||||
return std::nullopt;
|
||||
}
|
||||
tx.v_ = (uint8_t)*v;
|
||||
|
||||
const std::string* r = value.FindString("r");
|
||||
if (!r) {
|
||||
@@ -292,7 +296,7 @@ base::DictValue EthTransaction::ToValueImpl() const {
|
||||
dict.Set("to", GetToHex());
|
||||
dict.Set("value", Uint256ValueToHex(value_));
|
||||
dict.Set("data", base::Base64Encode(data_));
|
||||
dict.Set("v", static_cast<int>(v_));
|
||||
dict.Set("v", Uint256ValueToHex(v_));
|
||||
dict.Set("r", base::Base64Encode(r_));
|
||||
dict.Set("s", base::Base64Encode(s_));
|
||||
dict.Set("type", static_cast<int>(type_));
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "base/values.h"
|
||||
#include "brave/components/brave_wallet/browser/internal/hd_key.h"
|
||||
#include "brave/components/brave_wallet/common/hex_utils.h"
|
||||
#include "brave/components/brave_wallet/common/test_utils.h"
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
|
||||
namespace brave_wallet {
|
||||
@@ -40,7 +41,7 @@ TEST(EthTransactionUnitTest, GetMessageToSign) {
|
||||
EthTransaction tx1 = *EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x06", "0x09184e72a000", "0x0974",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data, false, std::nullopt));
|
||||
"0x016345785d8a0000", data));
|
||||
|
||||
EXPECT_EQ(base::HexEncodeLower(tx1.GetHashedMessageToSign()),
|
||||
"aad787b6c7cfb13feab05f6175089c95f0b54839365fab43c7c4245bd32b3d65");
|
||||
@@ -50,10 +51,9 @@ TEST(EthTransactionUnitTest, GetMessageToSign) {
|
||||
"9ad82175b6921c5525fc52ebc08b97118cc9709952a16b2249a3f42d44614721");
|
||||
|
||||
data.clear();
|
||||
EthTransaction tx2 = *EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x0b", "0x051f4d5c00", "0x5208",
|
||||
"0x656e929d6fc0cac52d3d9526d288fe02dcd56fbd",
|
||||
"0x2386f26fc10000", data, false, std::nullopt));
|
||||
EthTransaction tx2 = *EthTransaction::FromTxData(mojom::TxData::New(
|
||||
"0x1", "0x0b", "0x051f4d5c00", "0x5208",
|
||||
"0x656e929d6fc0cac52d3d9526d288fe02dcd56fbd", "0x2386f26fc10000", data));
|
||||
|
||||
// with chain id (mainnet)
|
||||
EXPECT_EQ(base::HexEncodeLower(tx2.GetHashedMessageToSign()),
|
||||
@@ -106,9 +106,9 @@ TEST(EthTransactionUnitTest, GetMessageToSign) {
|
||||
};
|
||||
|
||||
for (const auto& entry : cases) {
|
||||
EthTransaction tx = *EthTransaction::FromTxData(mojom::TxData::New(
|
||||
"0x1", entry.nonce, entry.gas_price, entry.gas_limit, entry.to,
|
||||
entry.value, std::vector<uint8_t>(), false, std::nullopt));
|
||||
EthTransaction tx = *EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", entry.nonce, entry.gas_price, entry.gas_limit,
|
||||
entry.to, entry.value, std::vector<uint8_t>()));
|
||||
// with chain id (mainnet)
|
||||
EXPECT_EQ(base::HexEncodeLower(tx.GetHashedMessageToSign()), entry.hash);
|
||||
}
|
||||
@@ -122,10 +122,10 @@ TEST(EthTransactionUnitTest, GetSignedTransactionAndHash) {
|
||||
|
||||
std::unique_ptr<HDKey> key = HDKey::GenerateFromPrivateKey(private_key);
|
||||
ASSERT_TRUE(key);
|
||||
EthTransaction tx = *EthTransaction::FromTxData(mojom::TxData::New(
|
||||
"0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535", "0x0de0b6b3a7640000",
|
||||
std::vector<uint8_t>(), false, std::nullopt));
|
||||
EthTransaction tx = *EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>()));
|
||||
|
||||
auto message = tx.GetHashedMessageToSign();
|
||||
EXPECT_EQ(base::HexEncodeLower(message),
|
||||
@@ -178,7 +178,12 @@ TEST(EthTransactionUnitTest, TransactionAndValue) {
|
||||
EthTransaction tx = *EthTransaction::FromTxData(mojom::TxData::New(
|
||||
"0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535", "0x0de0b6b3a7640000",
|
||||
std::vector<uint8_t>({1, 2, 3}), false, std::nullopt));
|
||||
std::vector<uint8_t>({1, 2, 3})));
|
||||
tx.ProcessSignature(*Secp256k1Signature::CreateFromPayload(
|
||||
test::HexToArray<64>("28EF61340BD939BC2195FE537567866003E1A15D3C71FF6"
|
||||
"3E1590620AA63627667CBE9D8997F761AECB703304B3800"
|
||||
"CCF555C9F3DC64214B297FB1966A3B6D83"),
|
||||
1));
|
||||
base::DictValue tx_value = tx.ToValue();
|
||||
EXPECT_THAT(tx_value, base::test::IsJson(
|
||||
R"json(
|
||||
@@ -188,11 +193,11 @@ TEST(EthTransactionUnitTest, TransactionAndValue) {
|
||||
"gas_limit": "0x5208",
|
||||
"gas_price": "0x4a817c800",
|
||||
"nonce": "0x9",
|
||||
"r": "",
|
||||
"s": "",
|
||||
"r": "KO9hNAvZObwhlf5TdWeGYAPhoV08cf9j4VkGIKpjYnY=",
|
||||
"s": "Z8vp2Jl/dhrstwMwSzgAzPVVyfPcZCFLKX+xlmo7bYM=",
|
||||
"to": "0x3535353535353535353535353535353535353535",
|
||||
"type": 0,
|
||||
"v": 0,
|
||||
"v": "0x26",
|
||||
"value": "0xde0b6b3a7640000"
|
||||
}
|
||||
)json"));
|
||||
@@ -201,20 +206,51 @@ TEST(EthTransactionUnitTest, TransactionAndValue) {
|
||||
EXPECT_EQ(tx_from_value, tx);
|
||||
}
|
||||
|
||||
TEST(EthTransactionUnitTest, TransactionAndValue_LegacyV) {
|
||||
auto tx_value = base::test::ParseJsonDict(R"json(
|
||||
{
|
||||
"chain_id": "0x1",
|
||||
"data": "AQID",
|
||||
"gas_limit": "0x5208",
|
||||
"gas_price": "0x4a817c800",
|
||||
"nonce": "0x9",
|
||||
"r": "KO9hNAvZObwhlf5TdWeGYAPhoV08cf9j4VkGIKpjYnY=",
|
||||
"s": "Z8vp2Jl/dhrstwMwSzgAzPVVyfPcZCFLKX+xlmo7bYM=",
|
||||
"to": "0x3535353535353535353535353535353535353535",
|
||||
"type": 0,
|
||||
"v": 38,
|
||||
"value": "0xde0b6b3a7640000"
|
||||
}
|
||||
)json");
|
||||
auto tx_from_value = EthTransaction::FromValue(tx_value);
|
||||
ASSERT_NE(tx_from_value, std::nullopt);
|
||||
EXPECT_EQ(tx_from_value->v(), (uint256_t)0x26);
|
||||
}
|
||||
|
||||
TEST(EthTransactionUnitTest, TransactionAndValue_BadV) {
|
||||
EthTransaction tx = *EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>()));
|
||||
base::DictValue tx_value = tx.ToValue();
|
||||
tx_value.Set("v", "not a hex string");
|
||||
EXPECT_FALSE(EthTransaction::FromValue(tx_value));
|
||||
}
|
||||
|
||||
TEST(EthTransactionUnitTest, TransactionAndValue_BadType) {
|
||||
EthTransaction tx = *EthTransaction::FromTxData(mojom::TxData::New(
|
||||
"0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535", "0x0de0b6b3a7640000",
|
||||
std::vector<uint8_t>(), false, std::nullopt));
|
||||
EthTransaction tx = *EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>()));
|
||||
base::DictValue tx_value = tx.ToValue();
|
||||
tx_value.Set("type", 123);
|
||||
EXPECT_FALSE(EthTransaction::FromValue(tx_value));
|
||||
}
|
||||
|
||||
TEST(EthTransactionUnitTest, TransactionAndValue_EmptyTo) {
|
||||
EthTransaction tx = *EthTransaction::FromTxData(mojom::TxData::New(
|
||||
"0x1", "0x09", "0x4a817c800", "0x5208", "", "0x0de0b6b3a7640000",
|
||||
std::vector<uint8_t>(), false, std::nullopt));
|
||||
EthTransaction tx = *EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x09", "0x4a817c800", "0x5208", "",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>()));
|
||||
base::DictValue tx_value = tx.ToValue();
|
||||
auto tx_from_value = EthTransaction::FromValue(tx_value);
|
||||
ASSERT_NE(tx_from_value, std::nullopt);
|
||||
@@ -222,9 +258,9 @@ TEST(EthTransactionUnitTest, TransactionAndValue_EmptyTo) {
|
||||
}
|
||||
|
||||
TEST(EthTransactionUnitTest, TransactionAndValue_0xTo) {
|
||||
EthTransaction tx = *EthTransaction::FromTxData(mojom::TxData::New(
|
||||
"0x1", "0x09", "0x4a817c800", "0x5208", "0x", "0x0de0b6b3a7640000",
|
||||
std::vector<uint8_t>(), false, std::nullopt));
|
||||
EthTransaction tx = *EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x09", "0x4a817c800", "0x5208", "0x",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>()));
|
||||
base::DictValue tx_value = tx.ToValue();
|
||||
auto tx_from_value = EthTransaction::FromValue(tx_value);
|
||||
ASSERT_NE(tx_from_value, std::nullopt);
|
||||
@@ -257,7 +293,7 @@ TEST(EthTransactionUnitTest, GetDataFee) {
|
||||
EthTransaction tx2 = *EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x06", "0x09184e72a000", "0x0974",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data, false, std::nullopt));
|
||||
"0x016345785d8a0000", data));
|
||||
EXPECT_EQ(tx2.GetDataFee(), uint256_t(1716));
|
||||
}
|
||||
|
||||
@@ -265,7 +301,7 @@ TEST(EthTransactionUnitTest, FromTxData) {
|
||||
auto valid_tx_data =
|
||||
mojom::TxData::New("0x1", "0x01", "0x3E8", "0x989680",
|
||||
"0x3535353535353535353535353535353535353535", "0x2A",
|
||||
std::vector<uint8_t>{1}, false, std::nullopt);
|
||||
std::vector<uint8_t>{1});
|
||||
auto tx = EthTransaction::FromTxData(valid_tx_data);
|
||||
ASSERT_TRUE(tx);
|
||||
EXPECT_EQ(tx->chain_id(), uint256_t(1));
|
||||
@@ -280,7 +316,7 @@ TEST(EthTransactionUnitTest, FromTxData) {
|
||||
tx = EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "", "0x3E8", "0x989680",
|
||||
"0x3535353535353535353535353535353535353535", "0x2A",
|
||||
std::vector<uint8_t>{1}, false, std::nullopt));
|
||||
std::vector<uint8_t>{1}));
|
||||
ASSERT_TRUE(tx);
|
||||
EXPECT_FALSE(tx->nonce());
|
||||
|
||||
@@ -318,9 +354,8 @@ TEST(EthTransactionUnitTest, FromTxData) {
|
||||
}
|
||||
|
||||
TEST(EthTransactionUnitTest, FromTxData_EmptyTo) {
|
||||
auto tx = EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x01", "0x3E8", "0x989680", "", "0x2A",
|
||||
std::vector<uint8_t>{1}, false, std::nullopt));
|
||||
auto tx = EthTransaction::FromTxData(mojom::TxData::New(
|
||||
"0x1", "0x01", "0x3E8", "0x989680", "", "0x2A", std::vector<uint8_t>{1}));
|
||||
ASSERT_TRUE(tx);
|
||||
EXPECT_EQ(tx->chain_id(), uint256_t(1));
|
||||
EXPECT_EQ(tx->nonce(), uint256_t(1));
|
||||
@@ -334,7 +369,7 @@ TEST(EthTransactionUnitTest, FromTxData_EmptyTo) {
|
||||
TEST(EthTransactionUnitTest, FromTxData_0xTo) {
|
||||
auto tx = EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x01", "0x3E8", "0x989680", "0x", "0x2A",
|
||||
std::vector<uint8_t>{1}, false, std::nullopt));
|
||||
std::vector<uint8_t>{1}));
|
||||
ASSERT_TRUE(tx);
|
||||
EXPECT_EQ(tx->chain_id(), uint256_t(1));
|
||||
EXPECT_EQ(tx->nonce(), uint256_t(1));
|
||||
|
||||
@@ -152,57 +152,53 @@ EthTxManager::~EthTxManager() {
|
||||
GetEthBlockTracker().RemoveObserver(this);
|
||||
}
|
||||
|
||||
void EthTxManager::AddUnapprovedTransaction(
|
||||
const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback) {
|
||||
CHECK(tx_data_union->is_eth_tx_data() ||
|
||||
tx_data_union->is_eth_tx_data_1559());
|
||||
auto origin_val =
|
||||
origin.value_or(url::Origin::Create(GURL("chrome://wallet")));
|
||||
if (tx_data_union->is_eth_tx_data()) {
|
||||
AddUnapprovedTransaction(std::move(tx_data_union->get_eth_tx_data()), from,
|
||||
std::move(origin_val), std::move(swap_info),
|
||||
std::move(callback));
|
||||
} else {
|
||||
AddUnapproved1559Transaction(
|
||||
std::move(tx_data_union->get_eth_tx_data_1559()), from,
|
||||
std::move(origin_val), std::move(swap_info), std::move(callback));
|
||||
}
|
||||
void EthTxManager::AddUnapprovedEvmDappTransaction(
|
||||
mojom::TxData1559Ptr tx_data_1559,
|
||||
mojom::AccountIdPtr from,
|
||||
const url::Origin& origin,
|
||||
bool sign_only,
|
||||
AddUnapprovedEvmTransactionCallback callback) {
|
||||
AddUnapproved1559TransactionInternal(std::move(tx_data_1559), from, origin,
|
||||
sign_only, nullptr, std::move(callback));
|
||||
}
|
||||
|
||||
void EthTxManager::AddUnapprovedEvmDappTransaction(
|
||||
mojom::TxDataPtr tx_data,
|
||||
mojom::AccountIdPtr from,
|
||||
const url::Origin& origin,
|
||||
bool sign_only,
|
||||
AddUnapprovedEvmTransactionCallback callback) {
|
||||
AddUnapprovedTransactionInternal(std::move(tx_data), from, origin, sign_only,
|
||||
nullptr, std::move(callback));
|
||||
}
|
||||
|
||||
void EthTxManager::AddUnapprovedEvmTransaction(
|
||||
mojom::NewEvmTransactionParamsPtr params,
|
||||
const std::optional<url::Origin>& origin,
|
||||
AddUnapprovedEvmTransactionCallback callback) {
|
||||
auto origin_val =
|
||||
origin.value_or(url::Origin::Create(GURL("chrome://wallet")));
|
||||
auto origin = url::Origin::Create(GURL("chrome://wallet"));
|
||||
|
||||
auto tx_data = mojom::TxData::New(params->chain_id, "", "", params->gas_limit,
|
||||
params->to, params->value, params->data,
|
||||
false, std::nullopt);
|
||||
params->to, params->value, params->data);
|
||||
|
||||
if (!json_rpc_service_->network_manager()->IsEip1559Chain(params->chain_id)) {
|
||||
AddUnapprovedTransaction(std::move(tx_data), params->from,
|
||||
std::move(origin_val),
|
||||
std::move(params->swap_info), std::move(callback));
|
||||
AddUnapprovedTransactionInternal(
|
||||
std::move(tx_data), params->from, std::move(origin), false,
|
||||
std::move(params->swap_info), std::move(callback));
|
||||
} else {
|
||||
auto tx_data_1559 = mojom::TxData1559::New(std::move(tx_data), "", "");
|
||||
AddUnapproved1559Transaction(
|
||||
std::move(tx_data_1559), params->from, std::move(origin_val),
|
||||
AddUnapproved1559TransactionInternal(
|
||||
std::move(tx_data_1559), params->from, std::move(origin), false,
|
||||
std::move(params->swap_info), std::move(callback));
|
||||
}
|
||||
}
|
||||
|
||||
void EthTxManager::AddUnapprovedTransaction(
|
||||
void EthTxManager::AddUnapprovedTransactionInternal(
|
||||
mojom::TxDataPtr tx_data,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const url::Origin& origin,
|
||||
bool sign_only,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback) {
|
||||
AddUnapprovedEvmTransactionCallback callback) {
|
||||
std::string error;
|
||||
if (!EthTxManager::ValidateTxData(tx_data, &error)) {
|
||||
std::move(callback).Run(false, "", error);
|
||||
@@ -230,20 +226,19 @@ void EthTxManager::AddUnapprovedTransaction(
|
||||
base::BindOnce(&EthTxManager::OnGetGasPrice, weak_factory_.GetWeakPtr(),
|
||||
from.Clone(), origin, tx_data->to, tx_data->value, data,
|
||||
gas_limit, std::move(tx_ptr), std::move(callback),
|
||||
tx_data->sign_only, std::move(swap_info)));
|
||||
sign_only, std::move(swap_info)));
|
||||
} else if (!tx_ptr->gas_limit()) {
|
||||
json_rpc_service_->GetEstimateGas(
|
||||
chain_id, from->address, tx_data->to, "" /* gas */, "" /* gas_price */,
|
||||
tx_data->value, data,
|
||||
base::BindOnce(&EthTxManager::ContinueAddUnapprovedTransaction,
|
||||
weak_factory_.GetWeakPtr(), from.Clone(), origin,
|
||||
std::move(tx_ptr), std::move(callback),
|
||||
tx_data->sign_only, std::move(swap_info)));
|
||||
std::move(tx_ptr), std::move(callback), sign_only,
|
||||
std::move(swap_info)));
|
||||
} else {
|
||||
ContinueAddUnapprovedTransaction(from, origin, std::move(tx_ptr),
|
||||
std::move(callback), tx_data->sign_only,
|
||||
std::move(swap_info), gas_limit,
|
||||
mojom::ProviderError::kSuccess, "");
|
||||
ContinueAddUnapprovedTransaction(
|
||||
from, origin, std::move(tx_ptr), std::move(callback), sign_only,
|
||||
std::move(swap_info), gas_limit, mojom::ProviderError::kSuccess, "");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -254,7 +249,7 @@ void EthTxManager::OnGetGasPrice(const mojom::AccountIdPtr& from,
|
||||
const std::string& data,
|
||||
const std::string& gas_limit,
|
||||
std::unique_ptr<EthTransaction> tx,
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedEvmTransactionCallback callback,
|
||||
bool sign_only,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
const std::string& result,
|
||||
@@ -291,7 +286,7 @@ void EthTxManager::ContinueAddUnapprovedTransaction(
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
std::unique_ptr<EthTransaction> tx,
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedEvmTransactionCallback callback,
|
||||
bool sign_only,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
const std::string& result,
|
||||
@@ -339,12 +334,13 @@ void EthTxManager::ContinueAddUnapprovedTransaction(
|
||||
std::move(callback).Run(true, meta.id(), "");
|
||||
}
|
||||
|
||||
void EthTxManager::AddUnapproved1559Transaction(
|
||||
void EthTxManager::AddUnapproved1559TransactionInternal(
|
||||
mojom::TxData1559Ptr tx_data,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const url::Origin& origin,
|
||||
bool sign_only,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback) {
|
||||
AddUnapprovedEvmTransactionCallback callback) {
|
||||
std::string error;
|
||||
if (!EthTxManager::ValidateTxData1559(tx_data, &error)) {
|
||||
std::move(callback).Run(false, "", error);
|
||||
@@ -365,7 +361,6 @@ void EthTxManager::AddUnapproved1559Transaction(
|
||||
// as required by geth. This is typically the case with ETHSend.
|
||||
const std::string data =
|
||||
tx_data->base_data->data.empty() ? "" : ToHex(tx_data->base_data->data);
|
||||
bool sign_only = tx_data->base_data->sign_only;
|
||||
std::string chain_id = Uint256ValueToHex(tx->chain_id());
|
||||
|
||||
if (!tx_ptr->max_priority_fee_per_gas() || !tx_ptr->max_fee_per_gas()) {
|
||||
@@ -399,7 +394,7 @@ void EthTxManager::OnGetGasOracleForUnapprovedTransaction(
|
||||
const std::string& data,
|
||||
const std::string& gas_limit,
|
||||
std::unique_ptr<Eip1559Transaction> tx,
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedEvmTransactionCallback callback,
|
||||
bool sign_only,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
mojom::GasEstimation1559Ptr gas_estimation) {
|
||||
@@ -997,6 +992,15 @@ void EthTxManager::SetNonceForUnapprovedTransaction(
|
||||
std::move(callback).Run(true);
|
||||
}
|
||||
|
||||
std::optional<std::string> EthTxManager::GetSignedTransaction(
|
||||
const std::string& tx_meta_id) {
|
||||
std::unique_ptr<EthTxMeta> meta = GetEthTxStateManager().GetEthTx(tx_meta_id);
|
||||
if (!meta || !meta->tx() || !meta->tx()->IsSigned()) {
|
||||
return std::nullopt;
|
||||
}
|
||||
return meta->tx()->GetSignedTransaction();
|
||||
}
|
||||
|
||||
std::unique_ptr<EthTxMeta> EthTxManager::GetTxForTesting(
|
||||
const std::string& tx_meta_id) {
|
||||
return GetEthTxStateManager().GetEthTx(tx_meta_id);
|
||||
|
||||
@@ -47,16 +47,21 @@ class EthTxManager : public TxManager, public EthBlockTracker::Observer {
|
||||
|
||||
void AddUnapprovedEvmTransaction(
|
||||
mojom::NewEvmTransactionParamsPtr params,
|
||||
const std::optional<url::Origin>& origin,
|
||||
AddUnapprovedEvmTransactionCallback callback);
|
||||
void AddUnapprovedEvmDappTransaction(
|
||||
mojom::TxData1559Ptr tx_data_1559,
|
||||
mojom::AccountIdPtr from,
|
||||
const url::Origin& origin,
|
||||
bool sign_only,
|
||||
AddUnapprovedEvmTransactionCallback callback);
|
||||
void AddUnapprovedEvmDappTransaction(
|
||||
mojom::TxDataPtr tx_data,
|
||||
mojom::AccountIdPtr from,
|
||||
const url::Origin& origin,
|
||||
bool sign_only,
|
||||
AddUnapprovedEvmTransactionCallback callback);
|
||||
|
||||
// TxManager
|
||||
void AddUnapprovedTransaction(const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback) override;
|
||||
void ApproveTransaction(const std::string& tx_meta_id,
|
||||
ApproveTransactionCallback) override;
|
||||
void SpeedupOrCancelTransaction(
|
||||
@@ -151,6 +156,8 @@ class EthTxManager : public TxManager, public EthBlockTracker::Observer {
|
||||
// Gas estimation API via eth_feeHistory API
|
||||
void GetGasEstimation1559(const std::string& chain_id,
|
||||
GetGasEstimation1559Callback callback);
|
||||
std::optional<std::string> GetSignedTransaction(
|
||||
const std::string& tx_meta_id);
|
||||
|
||||
static bool ValidateTxData(const mojom::TxDataPtr& tx_data,
|
||||
std::string* error);
|
||||
@@ -166,16 +173,19 @@ class EthTxManager : public TxManager, public EthBlockTracker::Observer {
|
||||
|
||||
mojom::CoinType GetCoinType() const override;
|
||||
|
||||
void AddUnapprovedTransaction(mojom::TxDataPtr tx_data,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const url::Origin& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback);
|
||||
void AddUnapproved1559Transaction(mojom::TxData1559Ptr tx_data,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const url::Origin& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback);
|
||||
void AddUnapprovedTransactionInternal(mojom::TxDataPtr tx_data,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const url::Origin& origin,
|
||||
bool sign_only,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedEvmTransactionCallback);
|
||||
void AddUnapproved1559TransactionInternal(
|
||||
mojom::TxData1559Ptr tx_data,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const url::Origin& origin,
|
||||
bool sign_only,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedEvmTransactionCallback);
|
||||
|
||||
void NotifyUnapprovedTxUpdated(TxMeta* meta);
|
||||
void OnConnectionError();
|
||||
@@ -205,7 +215,7 @@ class EthTxManager : public TxManager, public EthBlockTracker::Observer {
|
||||
const std::string& data,
|
||||
const std::string& gas_limit,
|
||||
std::unique_ptr<EthTransaction> tx,
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedEvmTransactionCallback callback,
|
||||
bool sign_only,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
const std::string& result,
|
||||
@@ -215,7 +225,7 @@ class EthTxManager : public TxManager, public EthBlockTracker::Observer {
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
std::unique_ptr<EthTransaction> tx,
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedEvmTransactionCallback callback,
|
||||
bool sign_only,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
const std::string& result,
|
||||
@@ -238,7 +248,7 @@ class EthTxManager : public TxManager, public EthBlockTracker::Observer {
|
||||
const std::string& data,
|
||||
const std::string& gas_limit,
|
||||
std::unique_ptr<Eip1559Transaction> tx,
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedEvmTransactionCallback callback,
|
||||
bool sign_only,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
mojom::GasEstimation1559Ptr gas_estimation);
|
||||
|
||||
@@ -254,11 +254,8 @@ class EthTxManagerUnitTest : public testing::Test {
|
||||
base::SequencedTaskRunner::GetCurrentDefault());
|
||||
WaitForTxStorageDelegateInitialized(tx_service_->GetDelegateForTesting());
|
||||
|
||||
keyring_service_->CreateWallet("testing123", base::DoNothing());
|
||||
task_environment_.RunUntilIdle();
|
||||
keyring_service_->AddAccountSync(mojom::CoinType::ETH,
|
||||
mojom::KeyringId::kDefault, "Account 1");
|
||||
task_environment_.RunUntilIdle();
|
||||
GetAccountUtils().CreateWallet(kMnemonicAbandonAbandon,
|
||||
kTestWalletPassword);
|
||||
|
||||
ASSERT_TRUE(base::HexStringToBytes(
|
||||
"095ea7b3000000000000000000000000BFb30a082f650C2A15D0632f0e87bE4F8e6446"
|
||||
@@ -312,7 +309,7 @@ class EthTxManagerUnitTest : public testing::Test {
|
||||
auto tx_data =
|
||||
mojom::TxData::New(chain_id, nonce, gas_price, "0x0974",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data, false, std::nullopt);
|
||||
"0x016345785d8a0000", data);
|
||||
auto tx = EthTransaction::FromTxData(tx_data, false);
|
||||
ASSERT_TRUE(tx);
|
||||
|
||||
@@ -344,7 +341,7 @@ class EthTxManagerUnitTest : public testing::Test {
|
||||
auto tx_data1559 = mojom::TxData1559::New(
|
||||
mojom::TxData::New(chain_id, nonce, "", "0x0974",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data, false, std::nullopt),
|
||||
"0x016345785d8a0000", data),
|
||||
max_priority_fee_per_gas, max_fee_per_gas);
|
||||
|
||||
auto tx1559 = Eip1559Transaction::FromTxData(tx_data1559, false);
|
||||
@@ -377,42 +374,29 @@ class EthTxManagerUnitTest : public testing::Test {
|
||||
EXPECT_TRUE(callback_called);
|
||||
}
|
||||
|
||||
void AddUnapprovedTransaction(
|
||||
const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
EthTxManager::AddUnapprovedTransactionCallback callback) {
|
||||
eth_tx_manager()->AddUnapprovedTransaction(
|
||||
chain_id, std::move(tx_data), from, origin, std::move(swap_info),
|
||||
std::move(callback));
|
||||
}
|
||||
|
||||
void AddUnapprovedEvmTransaction(
|
||||
mojom::NewEvmTransactionParamsPtr params,
|
||||
const std::optional<url::Origin>& origin,
|
||||
EthTxManager::AddUnapprovedEvmTransactionCallback callback) {
|
||||
eth_tx_manager()->AddUnapprovedEvmTransaction(std::move(params), origin,
|
||||
eth_tx_manager()->AddUnapprovedEvmTransaction(std::move(params),
|
||||
std::move(callback));
|
||||
}
|
||||
|
||||
void AddUnapprovedTransaction(
|
||||
void AddUnapprovedEvmDappTransaction(
|
||||
mojom::TxDataPtr tx_data,
|
||||
const mojom::AccountIdPtr& from,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
EthTxManager::AddUnapprovedTransactionCallback callback) {
|
||||
eth_tx_manager()->AddUnapprovedTransaction(
|
||||
std::move(tx_data), from, GetOrigin(), std::move(swap_info),
|
||||
EthTxManager::AddUnapprovedEvmTransactionCallback callback) {
|
||||
eth_tx_manager()->AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from.Clone(), GetOrigin(), false,
|
||||
std::move(callback));
|
||||
}
|
||||
|
||||
void AddUnapproved1559Transaction(
|
||||
void AddUnapprovedEvmDappTransaction(
|
||||
mojom::TxData1559Ptr tx_data,
|
||||
const mojom::AccountIdPtr& from,
|
||||
EthTxManager::AddUnapprovedTransactionCallback callback) {
|
||||
eth_tx_manager()->AddUnapproved1559Transaction(
|
||||
std::move(tx_data), from, GetOrigin(), nullptr, std::move(callback));
|
||||
EthTxManager::AddUnapprovedEvmTransactionCallback callback) {
|
||||
eth_tx_manager()->AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from.Clone(), GetOrigin(), false,
|
||||
std::move(callback));
|
||||
}
|
||||
|
||||
void TestMakeERC1155TransferFromDataTxType(
|
||||
@@ -478,12 +462,12 @@ TEST_F(EthTxManagerUnitTest, AddUnapprovedTransactionWithGasPriceAndGasLimit) {
|
||||
auto tx_data =
|
||||
mojom::TxData::New("0x1", "0x06", gas_price, gas_limit,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt);
|
||||
"0x016345785d8a0000", data_);
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapprovedTransaction(
|
||||
std::move(tx_data), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
|
||||
@@ -513,7 +497,7 @@ TEST_F(EthTxManagerUnitTest, AddUnapprovedEvmTransaction) {
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
AddUnapprovedEvmTransaction(
|
||||
std::move(params), std::nullopt,
|
||||
std::move(params),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback,
|
||||
&callback_called, &tx_meta_id));
|
||||
|
||||
@@ -537,7 +521,7 @@ TEST_F(EthTxManagerUnitTest, AddUnapprovedEvmTransaction) {
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
AddUnapprovedEvmTransaction(
|
||||
std::move(params), std::nullopt,
|
||||
std::move(params),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback,
|
||||
&callback_called, &tx_meta_id));
|
||||
|
||||
@@ -560,7 +544,7 @@ TEST_F(EthTxManagerUnitTest, AddUnapprovedEvmTransaction) {
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
AddUnapprovedEvmTransaction(
|
||||
std::move(params), std::nullopt,
|
||||
std::move(params),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback,
|
||||
&callback_called, &tx_meta_id));
|
||||
|
||||
@@ -578,14 +562,14 @@ TEST_F(EthTxManagerUnitTest, WalletOrigin) {
|
||||
auto tx_data =
|
||||
mojom::TxData::New(mojom::kLocalhostChainId, "0x06", "0x09184e72a000",
|
||||
"0x0974", "0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt);
|
||||
"0x016345785d8a0000", data_);
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapprovedTransaction(
|
||||
mojom::kLocalhostChainId,
|
||||
mojom::TxDataUnion::NewEthTxData(std::move(tx_data)), from(),
|
||||
std::nullopt, nullptr,
|
||||
AddUnapprovedEvmTransaction(
|
||||
mojom::NewEvmTransactionParams::New(
|
||||
"0x1", from(), "0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", "0x0974", data_, nullptr),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
|
||||
@@ -601,13 +585,13 @@ TEST_F(EthTxManagerUnitTest, SomeSiteOrigin) {
|
||||
auto tx_data =
|
||||
mojom::TxData::New("0x1", "0x06", "0x09184e72a000", "0x0974",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt);
|
||||
"0x016345785d8a0000", data_);
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapprovedTransaction(
|
||||
"0x1", mojom::TxDataUnion::NewEthTxData(std::move(tx_data)), from(),
|
||||
url::Origin::Create(GURL("https://some.site.com")), nullptr,
|
||||
eth_tx_manager()->AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
url::Origin::Create(GURL("https://some.site.com")), false,
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
|
||||
@@ -625,12 +609,12 @@ TEST_F(EthTxManagerUnitTest, AddUnapprovedTransactionWithoutGasLimit) {
|
||||
auto tx_data =
|
||||
mojom::TxData::New("0x1", "0x06", gas_price, "" /* gas_limit */,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt);
|
||||
"0x016345785d8a0000", data_);
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapprovedTransaction(
|
||||
tx_data.Clone(), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
tx_data.Clone(), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
|
||||
@@ -674,13 +658,12 @@ TEST_F(EthTxManagerUnitTest, AddUnapprovedTransactionWithoutGasLimit) {
|
||||
|
||||
tx_data = mojom::TxData::New("0x1", "0x06", gas_price, "" /* gas_limit */,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_decoded, false,
|
||||
std::nullopt);
|
||||
"0x016345785d8a0000", data_decoded);
|
||||
|
||||
SetErrorInterceptor();
|
||||
callback_called = false;
|
||||
AddUnapprovedTransaction(
|
||||
std::move(tx_data), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback,
|
||||
&callback_called, &tx_meta_id));
|
||||
task_environment_.RunUntilIdle();
|
||||
@@ -699,12 +682,12 @@ TEST_F(EthTxManagerUnitTest, AddUnapprovedTransactionWithoutGasPrice) {
|
||||
auto tx_data =
|
||||
mojom::TxData::New("0x1", "0x06", "" /* gas_price */, gas_limit,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt);
|
||||
"0x016345785d8a0000", data_);
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapprovedTransaction(
|
||||
tx_data.Clone(), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
tx_data.Clone(), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
|
||||
@@ -723,8 +706,8 @@ TEST_F(EthTxManagerUnitTest, AddUnapprovedTransactionWithoutGasPrice) {
|
||||
|
||||
SetErrorInterceptor();
|
||||
callback_called = false;
|
||||
AddUnapprovedTransaction(
|
||||
std::move(tx_data), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionFailureCallback,
|
||||
&callback_called));
|
||||
task_environment_.RunUntilIdle();
|
||||
@@ -736,12 +719,12 @@ TEST_F(EthTxManagerUnitTest,
|
||||
auto tx_data =
|
||||
mojom::TxData::New("0x1", "0x06", "" /* gas_price */, "" /* gas_limit */,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt);
|
||||
"0x016345785d8a0000", data_);
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapprovedTransaction(
|
||||
tx_data.Clone(), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
tx_data.Clone(), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
|
||||
@@ -759,8 +742,8 @@ TEST_F(EthTxManagerUnitTest,
|
||||
|
||||
SetErrorInterceptor();
|
||||
callback_called = false;
|
||||
AddUnapprovedTransaction(
|
||||
std::move(tx_data), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionFailureCallback,
|
||||
&callback_called));
|
||||
task_environment_.RunUntilIdle();
|
||||
@@ -769,15 +752,15 @@ TEST_F(EthTxManagerUnitTest,
|
||||
|
||||
TEST_F(EthTxManagerUnitTest,
|
||||
AddUnapprovedTransactionWithoutGasPriceAndGasLimitForEthSend) {
|
||||
auto tx_data = mojom::TxData::New(
|
||||
"0x1", "0x06", "" /* gas_price*/, "" /* gas_limit */,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c", "0x016345785d8a0000",
|
||||
std::vector<uint8_t>(), false, std::nullopt);
|
||||
auto tx_data =
|
||||
mojom::TxData::New("0x1", "0x06", "" /* gas_price*/, "" /* gas_limit */,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", std::vector<uint8_t>());
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapprovedTransaction(
|
||||
std::move(tx_data), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
|
||||
@@ -795,15 +778,15 @@ TEST_F(EthTxManagerUnitTest,
|
||||
}
|
||||
|
||||
TEST_F(EthTxManagerUnitTest, SetGasPriceAndLimitForUnapprovedTransaction) {
|
||||
auto tx_data = mojom::TxData::New(
|
||||
"0x1", "0x06", "" /* gas_price*/, "" /* gas_limit */,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c", "0x016345785d8a0000",
|
||||
std::vector<uint8_t>(), false, std::nullopt);
|
||||
auto tx_data =
|
||||
mojom::TxData::New("0x1", "0x06", "" /* gas_price*/, "" /* gas_limit */,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", std::vector<uint8_t>());
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapprovedTransaction(
|
||||
std::move(tx_data), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
|
||||
@@ -888,11 +871,11 @@ TEST_F(EthTxManagerUnitTest, SetDataForUnapprovedTransaction) {
|
||||
auto tx_data = mojom::TxData::New(
|
||||
"0x1", "0x06", "0x11" /* gas_price*/, "0x22" /* gas_limit */,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c", "0x016345785d8a0000",
|
||||
initial_data, false, std::nullopt);
|
||||
initial_data);
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
AddUnapprovedTransaction(
|
||||
std::move(tx_data), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
task_environment_.RunUntilIdle();
|
||||
@@ -939,11 +922,11 @@ TEST_F(EthTxManagerUnitTest, SetNonceForUnapprovedTransaction) {
|
||||
auto tx_data = mojom::TxData::New(
|
||||
"0x1", "0x06", "0x11" /* gas_price*/, "0x22" /* gas_limit */,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c", "0x016345785d8a0000",
|
||||
std::vector<uint8_t>(), false, std::nullopt);
|
||||
std::vector<uint8_t>());
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
AddUnapprovedTransaction(
|
||||
std::move(tx_data), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
task_environment_.RunUntilIdle();
|
||||
@@ -1015,10 +998,10 @@ TEST_F(EthTxManagerUnitTest, SetNonceForUnapprovedTransaction) {
|
||||
}
|
||||
|
||||
TEST_F(EthTxManagerUnitTest, ValidateTxData) {
|
||||
auto valid_tx_data = mojom::TxData::New(
|
||||
"0x1", "0x06", "0x09184e72a000", "0x0974",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c", "0x016345785d8a0000",
|
||||
std::vector<uint8_t>({1, 2, 3}), false, std::nullopt);
|
||||
auto valid_tx_data =
|
||||
mojom::TxData::New("0x1", "0x06", "0x09184e72a000", "0x0974",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", std::vector<uint8_t>({1, 2, 3}));
|
||||
|
||||
std::string error_message;
|
||||
EXPECT_TRUE(EthTxManager::ValidateTxData(valid_tx_data, &error_message));
|
||||
@@ -1070,8 +1053,7 @@ TEST_F(EthTxManagerUnitTest, ValidateTxData1559) {
|
||||
mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x4", "0x00", "", "0x00",
|
||||
"0x0101010101010101010101010101010101010101",
|
||||
"0x00", std::vector<uint8_t>(), false,
|
||||
std::nullopt),
|
||||
"0x00", std::vector<uint8_t>()),
|
||||
"0x0", "0x1"),
|
||||
&error_message));
|
||||
|
||||
@@ -1080,8 +1062,7 @@ TEST_F(EthTxManagerUnitTest, ValidateTxData1559) {
|
||||
mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x4", "0x00", "0x1", "0x00",
|
||||
"0x0101010101010101010101010101010101010101",
|
||||
"0x00", std::vector<uint8_t>(), false,
|
||||
std::nullopt),
|
||||
"0x00", std::vector<uint8_t>()),
|
||||
"0x0", "0x1"),
|
||||
&error_message));
|
||||
}
|
||||
@@ -1090,12 +1071,12 @@ TEST_F(EthTxManagerUnitTest, ProcessEthHardwareSignature) {
|
||||
auto tx_data =
|
||||
mojom::TxData::New("0x1", "0x06", "" /* gas_price */, "" /* gas_limit */,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt);
|
||||
"0x016345785d8a0000", data_);
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapprovedTransaction(
|
||||
tx_data.Clone(), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
tx_data.Clone(), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
TestTxServiceObserver observer("0x6", "", "", "", "", std::vector<uint8_t>(),
|
||||
@@ -1135,13 +1116,13 @@ TEST_F(EthTxManagerUnitTest, ProcessEthHardwareSignature) {
|
||||
TEST_F(EthTxManagerUnitTest, ProcessEthHardwareSignatureFail) {
|
||||
auto tx_data = mojom::TxData::New(
|
||||
mojom::kLocalhostChainId, "0x06", "" /* gas_price */, "" /* gas_limit */,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c", "0x016345785d8a0000", data_,
|
||||
false, std::nullopt);
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c", "0x016345785d8a0000",
|
||||
data_);
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapprovedTransaction(
|
||||
tx_data.Clone(), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
tx_data.Clone(), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
TestTxServiceObserver observer("0x6", "", "", "", "", std::vector<uint8_t>(),
|
||||
@@ -1200,13 +1181,13 @@ TEST_F(EthTxManagerUnitTest, ProcessEthHardwareSignatureFail) {
|
||||
TEST_F(EthTxManagerUnitTest, GetNonceForHardwareTransaction) {
|
||||
auto tx_data = mojom::TxData::New(
|
||||
mojom::kLocalhostChainId, "", "" /* gas_price */, "" /* gas_limit */,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c", "0x016345785d8a0000", data_,
|
||||
false, std::nullopt);
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c", "0x016345785d8a0000",
|
||||
data_);
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapprovedTransaction(
|
||||
tx_data.Clone(), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
tx_data.Clone(), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
|
||||
@@ -1252,13 +1233,13 @@ TEST_F(EthTxManagerUnitTest, GetNonceForHardwareTransaction1559) {
|
||||
auto tx_data = mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x4", "0x00", "", "0x01",
|
||||
"0x0101010101010101010101010101010101010101", "0x00",
|
||||
std::vector<uint8_t>(), false, std::nullopt),
|
||||
std::vector<uint8_t>()),
|
||||
"0x1", "0x1");
|
||||
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapproved1559Transaction(
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
tx_data.Clone(), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
@@ -1329,13 +1310,13 @@ TEST_F(EthTxManagerUnitTest, AddUnapproved1559TransactionWithGasFeeAndLimit) {
|
||||
auto tx_data = mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x04", "0x1", "", gas_limit,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt),
|
||||
"0x016345785d8a0000", data_),
|
||||
"0x77359400" /* 2 Gwei */, "0xb2d05e000" /* 48 Gwei */);
|
||||
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapproved1559Transaction(
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
@@ -1357,13 +1338,13 @@ TEST_F(EthTxManagerUnitTest, AddUnapproved1559TransactionWithoutGasLimit) {
|
||||
auto tx_data = mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x1", "0x1", "", "",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt),
|
||||
"0x016345785d8a0000", data_),
|
||||
"0x77359400" /* 2 Gwei */, "0xb2d05e000" /* 48 Gwei */);
|
||||
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapproved1559Transaction(
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
@@ -1386,13 +1367,13 @@ TEST_F(EthTxManagerUnitTest, AddUnapproved1559TransactionWithoutGasFee) {
|
||||
auto tx_data = mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x1", "0x1", "", gas_limit,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt),
|
||||
"0x016345785d8a0000", data_),
|
||||
"", "");
|
||||
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapproved1559Transaction(
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
@@ -1415,13 +1396,13 @@ TEST_F(EthTxManagerUnitTest,
|
||||
auto tx_data = mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x1", "0x1", "", "",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt),
|
||||
"0x016345785d8a0000", data_),
|
||||
"", "");
|
||||
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapproved1559Transaction(
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
@@ -1473,13 +1454,13 @@ TEST_F(EthTxManagerUnitTest,
|
||||
auto tx_data = mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x1", "0x1", "", gas_limit,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt),
|
||||
"0x016345785d8a0000", data_),
|
||||
"", "");
|
||||
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapproved1559Transaction(
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
@@ -1535,13 +1516,13 @@ TEST_F(EthTxManagerUnitTest,
|
||||
auto tx_data = mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x1", "0x1", "", "",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt),
|
||||
"0x016345785d8a0000", data_),
|
||||
"", "");
|
||||
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapproved1559Transaction(
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
@@ -1580,11 +1561,11 @@ TEST_F(EthTxManagerUnitTest, AddUnapproved1559TransactionFeeHistoryFailed) {
|
||||
auto tx_data = mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x1", "0x1", "", "0x9604",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt),
|
||||
"0x016345785d8a0000", data_),
|
||||
"", "");
|
||||
|
||||
bool callback_called = false;
|
||||
AddUnapproved1559Transaction(
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionFailureCallback,
|
||||
&callback_called));
|
||||
@@ -1596,15 +1577,15 @@ TEST_F(EthTxManagerUnitTest, AddUnapproved1559TransactionFeeHistoryFailed) {
|
||||
TEST_F(EthTxManagerUnitTest,
|
||||
AddUnapproved1559TransactionWithoutGasFeeAndLimitForEthSend) {
|
||||
auto tx_data = mojom::TxData1559::New(
|
||||
mojom::TxData::New(
|
||||
"0x1", "0x1", "", "", "0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", std::vector<uint8_t>(), false, std::nullopt),
|
||||
mojom::TxData::New("0x1", "0x1", "", "",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", std::vector<uint8_t>()),
|
||||
"", "");
|
||||
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapproved1559Transaction(
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
@@ -1629,14 +1610,13 @@ TEST_F(EthTxManagerUnitTest,
|
||||
auto tx_data = mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x1", "0x1", "", gas_limit,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", std::vector<uint8_t>(), false,
|
||||
std::nullopt),
|
||||
"0x016345785d8a0000", std::vector<uint8_t>()),
|
||||
"0x77359400" /* 2 Gwei */, "0xb2d05e000" /* 48 Gwei */);
|
||||
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapproved1559Transaction(
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
@@ -1657,14 +1637,14 @@ TEST_F(EthTxManagerUnitTest,
|
||||
TEST_F(EthTxManagerUnitTest,
|
||||
AddUnapproved1559TransactionWithoutGasLimitForEthSend) {
|
||||
auto tx_data = mojom::TxData1559::New(
|
||||
mojom::TxData::New(
|
||||
"0x1", "0x1", "", "", "0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", std::vector<uint8_t>(), false, std::nullopt),
|
||||
mojom::TxData::New("0x1", "0x1", "", "",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", std::vector<uint8_t>()),
|
||||
"0x77359400" /* 2 Gwei */, "0xb2d05e000" /* 48 Gwei */);
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapproved1559Transaction(
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
@@ -1688,14 +1668,13 @@ TEST_F(EthTxManagerUnitTest,
|
||||
auto tx_data = mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x1", "0x1", "", gas_limit,
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", std::vector<uint8_t>(), false,
|
||||
std::nullopt),
|
||||
"0x016345785d8a0000", std::vector<uint8_t>()),
|
||||
"", "");
|
||||
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapproved1559Transaction(
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
@@ -1719,12 +1698,12 @@ TEST_F(EthTxManagerUnitTest, SetGasFeeAndLimitForUnapprovedTransaction) {
|
||||
auto tx_data = mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x1", "0x1", "", "",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt),
|
||||
"0x016345785d8a0000", data_),
|
||||
"", "");
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapproved1559Transaction(
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
@@ -1834,12 +1813,12 @@ TEST_F(EthTxManagerUnitTest,
|
||||
auto tx_data =
|
||||
mojom::TxData::New("0x1", "0x06", "0x09184e72a000", "0x0974",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt);
|
||||
"0x016345785d8a0000", data_);
|
||||
bool callback_called = false;
|
||||
std::string tx_meta_id;
|
||||
|
||||
AddUnapprovedTransaction(
|
||||
std::move(tx_data), from(), nullptr,
|
||||
AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), from(),
|
||||
base::BindOnce(&AddUnapprovedTransactionSuccessCallback, &callback_called,
|
||||
&tx_meta_id));
|
||||
|
||||
@@ -2153,7 +2132,7 @@ TEST_F(EthTxManagerUnitTest, RetryTransaction) {
|
||||
auto tx_data =
|
||||
mojom::TxData::New(mojom::kMainnetChainId, "0x07", "0x17fcf18322",
|
||||
"0x0974", "0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt);
|
||||
"0x016345785d8a0000", data_);
|
||||
auto tx = EthTransaction::FromTxData(tx_data, false);
|
||||
ASSERT_TRUE(tx);
|
||||
|
||||
@@ -2181,7 +2160,7 @@ TEST_F(EthTxManagerUnitTest, RetryTransaction) {
|
||||
auto tx_data1559 = mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x539", "0x08", "", "0x0974",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", data_, false, std::nullopt),
|
||||
"0x016345785d8a0000", data_),
|
||||
"0x77359400" /* 2 Gwei */, "0xb2d05e000" /* 48 Gwei */);
|
||||
|
||||
auto tx1559 = Eip1559Transaction::FromTxData(tx_data1559, false);
|
||||
@@ -2352,10 +2331,10 @@ TEST_F(EthTxManagerUnitTest, Reset) {
|
||||
meta.set_id("001");
|
||||
meta.set_chain_id(mojom::kLocalhostChainId);
|
||||
meta.set_status(mojom::TransactionStatus::Unapproved);
|
||||
auto tx_data = mojom::TxData::New(
|
||||
mojom::kMainnetChainId, "0x1", "0x1", "0x0974",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c", "0x016345785d8a0000",
|
||||
std::vector<uint8_t>(), false, std::nullopt);
|
||||
auto tx_data =
|
||||
mojom::TxData::New(mojom::kMainnetChainId, "0x1", "0x1", "0x0974",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
|
||||
"0x016345785d8a0000", std::vector<uint8_t>());
|
||||
auto tx = EthTransaction::FromTxData(tx_data, false);
|
||||
meta.set_tx(std::make_unique<EthTransaction>(*tx));
|
||||
ASSERT_TRUE(eth_tx_manager()->tx_state_manager().AddOrUpdateTx(meta));
|
||||
@@ -2395,15 +2374,19 @@ TEST_F(EthTxManagerUnitTest, AddUnapprovedTransactionWithSwapInfo) {
|
||||
swap_info->recipient = "";
|
||||
swap_info->provider = mojom::SwapProvider::kZeroEx;
|
||||
|
||||
auto data = mojom::TxData::New(
|
||||
mojom::kMainnetChainId, "0x01", "0x09184e72a000", "0x0974",
|
||||
"0xbe862ad9abfe6f22bcb087716c7d89a26051f74c", "0x016345785d8a0000",
|
||||
std::vector<uint8_t>({0x00, 0x01, 0x02}), false, std::nullopt);
|
||||
auto params = mojom::NewEvmTransactionParams::New();
|
||||
params->chain_id = mojom::kMainnetChainId;
|
||||
params->from = from();
|
||||
params->to = "0xbe862ad9abfe6f22bcb087716c7d89a26051f74c";
|
||||
params->value = "0x016345785d8a0000";
|
||||
params->data = std::vector<uint8_t>({0x00, 0x01, 0x02});
|
||||
params->swap_info = swap_info.Clone();
|
||||
|
||||
base::test::TestFuture<bool, const std::string&, const std::string&>
|
||||
add_tx_future;
|
||||
AddUnapprovedTransaction(std::move(data), from(), swap_info.Clone(),
|
||||
add_tx_future.GetCallback());
|
||||
eth_tx_manager()->AddUnapprovedEvmTransaction(std::move(params),
|
||||
add_tx_future.GetCallback());
|
||||
|
||||
auto [success, tx_meta_id, error_message] = add_tx_future.Take();
|
||||
ASSERT_FALSE(tx_meta_id.empty());
|
||||
|
||||
@@ -2414,4 +2397,40 @@ TEST_F(EthTxManagerUnitTest, AddUnapprovedTransactionWithSwapInfo) {
|
||||
EXPECT_EQ(tx_meta->swap_info(), swap_info);
|
||||
}
|
||||
|
||||
TEST_F(EthTxManagerUnitTest, GetSignedTransaction) {
|
||||
auto params = mojom::NewEvmTransactionParams::New();
|
||||
params->chain_id = mojom::kMainnetChainId;
|
||||
params->from = from();
|
||||
params->to = "0xbe862ad9abfe6f22bcb087716c7d89a26051f74c";
|
||||
params->value = "0x016345785d8a0000";
|
||||
params->data = std::vector<uint8_t>({0x00, 0x01, 0x02});
|
||||
|
||||
base::test::TestFuture<bool, const std::string&, const std::string&>
|
||||
add_tx_future;
|
||||
eth_tx_manager()->AddUnapprovedEvmTransaction(std::move(params),
|
||||
add_tx_future.GetCallback());
|
||||
|
||||
auto [success, tx_meta_id, error_message] = add_tx_future.Take();
|
||||
ASSERT_FALSE(tx_meta_id.empty());
|
||||
|
||||
EXPECT_EQ(eth_tx_manager()->GetSignedTransaction(tx_meta_id), std::nullopt);
|
||||
|
||||
// Set an interceptor and just fake a common response for
|
||||
// eth_getTransactionCount and eth_sendRawTransaction
|
||||
SetInterceptor("{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0x0\"}");
|
||||
|
||||
base::test::TestFuture<bool, mojom::ProviderErrorUnionPtr, const std::string&>
|
||||
approve_tx_future;
|
||||
eth_tx_manager()->ApproveTransaction(tx_meta_id,
|
||||
approve_tx_future.GetCallback());
|
||||
|
||||
EXPECT_TRUE(approve_tx_future.Wait());
|
||||
|
||||
EXPECT_EQ(eth_tx_manager()->GetSignedTransaction(tx_meta_id),
|
||||
"0x02f87601808477359400850b2d05e00082960494be862ad9abfe6f22bcb08771"
|
||||
"6c7d89a26051f74c88016345785d8a000083000102c080a0353cfbd58e495f3f39"
|
||||
"32e9f39c21358ea1bddf6bc873b2c56ec18d21ba19226da016f887fee07e5fa871"
|
||||
"591135699691adda8d2df99383a4a16172eca36421077a");
|
||||
}
|
||||
|
||||
} // namespace brave_wallet
|
||||
|
||||
@@ -163,8 +163,7 @@ mojom::TransactionInfoPtr EthTxMeta::ToTransactionInfo() const {
|
||||
tx_->nonce() ? Uint256ValueToHex(tx_->nonce().value()) : "",
|
||||
Uint256ValueToHex(tx_->gas_price()),
|
||||
Uint256ValueToHex(tx_->gas_limit()), tx_->GetToChecksumAddress(),
|
||||
Uint256ValueToHex(tx_->value()), tx_->data(), sign_only_,
|
||||
signed_transaction),
|
||||
Uint256ValueToHex(tx_->value()), tx_->data()),
|
||||
max_priority_fee_per_gas, max_fee_per_gas)),
|
||||
status_, tx_type, tx_params, tx_args,
|
||||
base::Milliseconds(created_time_.InMillisecondsSinceUnixEpoch()),
|
||||
|
||||
@@ -27,11 +27,11 @@ TEST(EthTxMetaUnitTest, ToTransactionInfo) {
|
||||
mojom::AccountKind::kDerived, from_address);
|
||||
|
||||
// type 0
|
||||
std::unique_ptr<EthTransaction> tx = std::make_unique<EthTransaction>(
|
||||
*EthTransaction::FromTxData(mojom::TxData::New(
|
||||
"0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535", "0x0de0b6b3a7640000",
|
||||
std::vector<uint8_t>(), false, std::nullopt)));
|
||||
std::unique_ptr<EthTransaction> tx =
|
||||
std::make_unique<EthTransaction>(*EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>())));
|
||||
EthTxMeta meta(eth_account_id, std::move(tx));
|
||||
base::Time::Exploded x{1981, 3, 0, 1, 2};
|
||||
base::Time confirmed_time = meta.confirmed_time();
|
||||
@@ -75,8 +75,7 @@ TEST(EthTxMetaUnitTest, ToTransactionInfo) {
|
||||
std::make_unique<Eip2930Transaction>(*Eip2930Transaction::FromTxData(
|
||||
mojom::TxData::New("0x3", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>(),
|
||||
false, std::nullopt)));
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>())));
|
||||
auto* access_list = tx1->access_list();
|
||||
Eip2930Transaction::AccessListItem item_a;
|
||||
item_a.address.fill(0x0a);
|
||||
@@ -117,8 +116,7 @@ TEST(EthTxMetaUnitTest, ToTransactionInfo) {
|
||||
*Eip1559Transaction::FromTxData(mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x3", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>(),
|
||||
false, std::nullopt),
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>()),
|
||||
"0x1E", "0x32")));
|
||||
EthTxMeta meta2(eth_account_id, std::move(tx2));
|
||||
mojom::TransactionInfoPtr ti2 = meta2.ToTransactionInfo();
|
||||
@@ -168,8 +166,7 @@ TEST(EthTxMetaUnitTest, ToTransactionInfo_FinalRecipientTest) {
|
||||
mojom::TxData::New(mojom::kFilecoinEthereumMainnetChainId,
|
||||
"0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", data, false,
|
||||
std::nullopt),
|
||||
"0x0de0b6b3a7640000", data),
|
||||
"0x1E", "0x32")));
|
||||
|
||||
EthTxMeta meta(eth_account_id, std::move(tx));
|
||||
@@ -188,10 +185,10 @@ TEST(EthTxMetaUnitTest, ToTransactionInfo_FinalRecipientTest) {
|
||||
std::unique_ptr<Eip1559Transaction> tx =
|
||||
std::make_unique<Eip1559Transaction>(
|
||||
*Eip1559Transaction::FromTxData(mojom::TxData1559::New(
|
||||
mojom::TxData::New(
|
||||
mojom::kSepoliaChainId, "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", encoded_data, false, std::nullopt),
|
||||
mojom::TxData::New(mojom::kSepoliaChainId, "0x09",
|
||||
"0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", encoded_data),
|
||||
"0x1E", "0x32")));
|
||||
|
||||
EthTxMeta meta(eth_account_id, std::move(tx));
|
||||
@@ -211,10 +208,10 @@ TEST(EthTxMetaUnitTest, ToTransactionInfo_FinalRecipientTest) {
|
||||
std::unique_ptr<Eip1559Transaction> tx =
|
||||
std::make_unique<Eip1559Transaction>(
|
||||
*Eip1559Transaction::FromTxData(mojom::TxData1559::New(
|
||||
mojom::TxData::New(
|
||||
mojom::kSepoliaChainId, "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", encoded_data, false, std::nullopt),
|
||||
mojom::TxData::New(mojom::kSepoliaChainId, "0x09",
|
||||
"0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", encoded_data),
|
||||
"0x1E", "0x32")));
|
||||
|
||||
EthTxMeta meta(eth_account_id, std::move(tx));
|
||||
@@ -234,10 +231,10 @@ TEST(EthTxMetaUnitTest, ToTransactionInfo_FinalRecipientTest) {
|
||||
std::unique_ptr<Eip1559Transaction> tx =
|
||||
std::make_unique<Eip1559Transaction>(
|
||||
*Eip1559Transaction::FromTxData(mojom::TxData1559::New(
|
||||
mojom::TxData::New(
|
||||
mojom::kSepoliaChainId, "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", encoded_data, false, std::nullopt),
|
||||
mojom::TxData::New(mojom::kSepoliaChainId, "0x09",
|
||||
"0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", encoded_data),
|
||||
"0x1E", "0x32")));
|
||||
|
||||
EthTxMeta meta(eth_account_id, std::move(tx));
|
||||
@@ -250,11 +247,10 @@ TEST(EthTxMetaUnitTest, ToTransactionInfo_FinalRecipientTest) {
|
||||
std::unique_ptr<Eip1559Transaction> tx =
|
||||
std::make_unique<Eip1559Transaction>(
|
||||
*Eip1559Transaction::FromTxData(mojom::TxData1559::New(
|
||||
mojom::TxData::New(mojom::kSepoliaChainId, "0x09",
|
||||
"0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>(),
|
||||
false, std::nullopt),
|
||||
mojom::TxData::New(
|
||||
mojom::kSepoliaChainId, "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>()),
|
||||
"0x1E", "0x32")));
|
||||
|
||||
EthTxMeta meta(eth_account_id, std::move(tx));
|
||||
|
||||
@@ -67,11 +67,11 @@ TEST_F(EthTxStateManagerUnitTest, TxMetaAndValue) {
|
||||
"0x2f015c60e0be116b1f0cd534704db9c92118fb6a"));
|
||||
|
||||
// type 0
|
||||
std::unique_ptr<EthTransaction> tx = std::make_unique<EthTransaction>(
|
||||
*EthTransaction::FromTxData(mojom::TxData::New(
|
||||
"0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535", "0x0de0b6b3a7640000",
|
||||
std::vector<uint8_t>(), false, std::nullopt)));
|
||||
std::unique_ptr<EthTransaction> tx =
|
||||
std::make_unique<EthTransaction>(*EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>())));
|
||||
EthTxMeta meta(eth_account_id, std::move(tx));
|
||||
meta.set_id(TxMeta::GenerateMetaID());
|
||||
meta.set_status(mojom::TransactionStatus::Submitted);
|
||||
@@ -126,8 +126,7 @@ TEST_F(EthTxStateManagerUnitTest, TxMetaAndValue) {
|
||||
std::make_unique<Eip2930Transaction>(*Eip2930Transaction::FromTxData(
|
||||
mojom::TxData::New("0x3", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>(),
|
||||
false, std::nullopt)));
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>())));
|
||||
auto* access_list = tx1->access_list();
|
||||
Eip2930Transaction::AccessListItem item_a;
|
||||
item_a.address.fill(0x0a);
|
||||
@@ -151,8 +150,7 @@ TEST_F(EthTxStateManagerUnitTest, TxMetaAndValue) {
|
||||
*Eip1559Transaction::FromTxData(mojom::TxData1559::New(
|
||||
mojom::TxData::New("0x3", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>(),
|
||||
false, std::nullopt),
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>()),
|
||||
"0x1E", "0x32")));
|
||||
EthTxMeta meta2(eth_account_id, std::move(tx2));
|
||||
base::DictValue value2 = meta2.ToValue();
|
||||
@@ -164,11 +162,11 @@ TEST_F(EthTxStateManagerUnitTest, TxMetaAndValue) {
|
||||
EXPECT_EQ(*tx_from_value2, *static_cast<Eip1559Transaction*>(meta2.tx()));
|
||||
|
||||
// test sign_only
|
||||
std::unique_ptr<EthTransaction> tx3 = std::make_unique<EthTransaction>(
|
||||
*EthTransaction::FromTxData(mojom::TxData::New(
|
||||
"0x3", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535", "0x0de0b6b3a7640000",
|
||||
std::vector<uint8_t>(), false, std::nullopt)));
|
||||
std::unique_ptr<EthTransaction> tx3 =
|
||||
std::make_unique<EthTransaction>(*EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x3", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>())));
|
||||
EthTxMeta meta3(eth_account_id, std::move(tx3));
|
||||
meta3.set_sign_only(true);
|
||||
base::DictValue meta_value3 = meta3.ToValue();
|
||||
@@ -188,11 +186,11 @@ TEST_F(EthTxStateManagerUnitTest, MetaChainIdUsedWhenTxChainIdMissing) {
|
||||
mojom::AccountKind::kDerived,
|
||||
"0x2f015c60e0be116b1f0cd534704db9c92118fb6a"));
|
||||
|
||||
std::unique_ptr<EthTransaction> tx = std::make_unique<EthTransaction>(
|
||||
*EthTransaction::FromTxData(mojom::TxData::New(
|
||||
"0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535", "0x0de0b6b3a7640000",
|
||||
std::vector<uint8_t>(), false, std::nullopt)));
|
||||
std::unique_ptr<EthTransaction> tx =
|
||||
std::make_unique<EthTransaction>(*EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>())));
|
||||
EthTxMeta meta(eth_account_id, std::move(tx));
|
||||
meta.set_chain_id(mojom::kMainnetChainId);
|
||||
base::DictValue meta_value = meta.ToValue();
|
||||
|
||||
@@ -107,10 +107,10 @@ TEST(EthereumKeyringUnitTest, Accounts) {
|
||||
TEST(EthereumKeyringUnitTest, SignTransaction) {
|
||||
// Specific signature check is in eth_transaction_unittest.cc
|
||||
EthereumKeyring keyring({}, base::BindRepeating(IsAddressAllowed));
|
||||
EthTransaction tx = *EthTransaction::FromTxData(mojom::TxData::New(
|
||||
"0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535", "0x0de0b6b3a7640000",
|
||||
std::vector<uint8_t>(), false, std::nullopt));
|
||||
EthTransaction tx = *EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>()));
|
||||
keyring.SignTransaction("0xDEADBEEFdeadbeefdeadbeefdeadbeefDEADBEEF", &tx);
|
||||
EXPECT_FALSE(tx.IsSigned());
|
||||
|
||||
@@ -235,10 +235,10 @@ TEST(EthereumKeyringUnitTest, ImportedAccounts) {
|
||||
message, 0, false));
|
||||
|
||||
// Sign Transaction
|
||||
EthTransaction tx = *EthTransaction::FromTxData(mojom::TxData::New(
|
||||
"0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535", "0x0de0b6b3a7640000",
|
||||
std::vector<uint8_t>(), false, std::nullopt));
|
||||
EthTransaction tx = *EthTransaction::FromTxData(
|
||||
mojom::TxData::New("0x1", "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>()));
|
||||
keyring.SignTransaction("0xbE93f9BacBcFFC8ee6663f2647917ed7A20a57BB", &tx);
|
||||
EXPECT_FALSE(tx.IsSigned());
|
||||
|
||||
|
||||
@@ -322,7 +322,6 @@ void EthereumProviderImpl::SendOrSignTransactionInternal(
|
||||
}
|
||||
|
||||
tx_data_1559->base_data->chain_id = chain->chain_id;
|
||||
tx_data_1559->base_data->sign_only = sign_only;
|
||||
|
||||
const auto account_id = FindAuthenticatedAccountByAddress(from, id, callback);
|
||||
if (!account_id) {
|
||||
@@ -331,16 +330,15 @@ void EthereumProviderImpl::SendOrSignTransactionInternal(
|
||||
const bool is_eip_1559_network =
|
||||
brave_wallet_service_->network_manager()->IsEip1559Chain(chain->chain_id);
|
||||
if (is_eip_1559_network && ShouldCreate1559Tx(*tx_data_1559)) {
|
||||
tx_service_->AddUnapprovedTransactionWithOrigin(
|
||||
mojom::TxDataUnion::NewEthTxData1559(std::move(tx_data_1559)),
|
||||
chain->chain_id, account_id.Clone(), nullptr, origin_,
|
||||
tx_service_->AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data_1559), account_id.Clone(), origin_, sign_only,
|
||||
base::BindOnce(&EthereumProviderImpl::OnAddUnapprovedTransactionAdapter,
|
||||
weak_factory_.GetWeakPtr(), std::move(callback),
|
||||
std::move(id)));
|
||||
} else {
|
||||
tx_service_->AddUnapprovedTransactionWithOrigin(
|
||||
mojom::TxDataUnion::NewEthTxData(std::move(tx_data_1559->base_data)),
|
||||
chain->chain_id, account_id.Clone(), nullptr, origin_,
|
||||
tx_service_->AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data_1559->base_data), account_id.Clone(), origin_,
|
||||
sign_only,
|
||||
base::BindOnce(&EthereumProviderImpl::OnAddUnapprovedTransactionAdapter,
|
||||
weak_factory_.GetWeakPtr(), std::move(callback),
|
||||
std::move(id)));
|
||||
@@ -1529,19 +1527,16 @@ void EthereumProviderImpl::OnTransactionStatusChanged(
|
||||
formed_response = base::Value(tx_hash);
|
||||
reject = false;
|
||||
} else if (tx_status == mojom::TransactionStatus::Signed) {
|
||||
std::string signed_transaction;
|
||||
if (tx_info->tx_data_union->is_eth_tx_data()) {
|
||||
DCHECK(tx_info->tx_data_union->get_eth_tx_data()->signed_transaction);
|
||||
signed_transaction =
|
||||
*tx_info->tx_data_union->get_eth_tx_data()->signed_transaction;
|
||||
} else if (tx_info->tx_data_union->is_eth_tx_data_1559()) {
|
||||
DCHECK(tx_info->tx_data_union->get_eth_tx_data_1559()
|
||||
->base_data->signed_transaction);
|
||||
signed_transaction = *tx_info->tx_data_union->get_eth_tx_data_1559()
|
||||
->base_data->signed_transaction;
|
||||
auto signed_transaction = tx_service_->GetEthSignedTransaction(tx_meta_id);
|
||||
if (signed_transaction) {
|
||||
formed_response = base::Value(*signed_transaction);
|
||||
reject = false;
|
||||
} else {
|
||||
formed_response = GetProviderErrorDictionary(
|
||||
mojom::ProviderError::kInternalError,
|
||||
l10n_util::GetStringUTF8(IDS_WALLET_SEND_TRANSACTION_ERROR));
|
||||
reject = true;
|
||||
}
|
||||
formed_response = base::Value(signed_transaction);
|
||||
reject = false;
|
||||
} else if (tx_status == mojom::TransactionStatus::Rejected) {
|
||||
formed_response = GetProviderErrorDictionary(
|
||||
mojom::ProviderError::kUserRejectedRequest,
|
||||
|
||||
@@ -47,11 +47,12 @@ FilTxManager::~FilTxManager() {
|
||||
GetFilBlockTracker().RemoveObserver(this);
|
||||
}
|
||||
|
||||
void FilTxManager::GetEstimatedGas(const std::string& chain_id,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
std::unique_ptr<FilTransaction> tx,
|
||||
AddUnapprovedTransactionCallback callback) {
|
||||
void FilTxManager::GetEstimatedGas(
|
||||
const std::string& chain_id,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
std::unique_ptr<FilTransaction> tx,
|
||||
AddUnapprovedFilecoinTransactionCallback callback) {
|
||||
const std::string gas_premium = tx->gas_premium();
|
||||
const std::string gas_fee_cap = tx->gas_fee_cap();
|
||||
auto gas_limit = tx->gas_limit();
|
||||
@@ -72,7 +73,7 @@ void FilTxManager::ContinueAddUnapprovedTransaction(
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
std::unique_ptr<FilTransaction> tx,
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedFilecoinTransactionCallback callback,
|
||||
const std::string& gas_premium,
|
||||
const std::string& gas_fee_cap,
|
||||
int64_t gas_limit,
|
||||
@@ -102,17 +103,15 @@ void FilTxManager::ContinueAddUnapprovedTransaction(
|
||||
std::move(callback).Run(true, meta.id(), "");
|
||||
}
|
||||
|
||||
void FilTxManager::AddUnapprovedTransaction(
|
||||
void FilTxManager::AddUnapprovedFilecoinTransaction(
|
||||
const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
mojom::FilTxDataPtr fil_tx_data,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback) {
|
||||
DCHECK(tx_data_union->is_fil_tx_data());
|
||||
AddUnapprovedFilecoinTransactionCallback callback) {
|
||||
const bool is_mainnet = chain_id == mojom::kFilecoinMainnet;
|
||||
auto tx =
|
||||
FilTransaction::FromTxData(is_mainnet, tx_data_union->get_fil_tx_data());
|
||||
auto tx = FilTransaction::FromTxData(is_mainnet, fil_tx_data);
|
||||
if (!tx) {
|
||||
std::move(callback).Run(
|
||||
false, "",
|
||||
|
||||
@@ -27,6 +27,13 @@ class FilTransaction;
|
||||
|
||||
class FilTxManager : public TxManager, public FilBlockTracker::Observer {
|
||||
public:
|
||||
using AddUnapprovedFilecoinTransactionCallback =
|
||||
mojom::TxService::AddUnapprovedFilecoinTransactionCallback;
|
||||
using GetFilTransactionMessageToSignCallback =
|
||||
mojom::FilTxManagerProxy::GetFilTransactionMessageToSignCallback;
|
||||
using ProcessFilHardwareSignatureCallback =
|
||||
mojom::FilTxManagerProxy::ProcessFilHardwareSignatureCallback;
|
||||
|
||||
FilTxManager(TxService& tx_service,
|
||||
JsonRpcService* json_rpc_service,
|
||||
KeyringService& keyring_service,
|
||||
@@ -36,17 +43,13 @@ class FilTxManager : public TxManager, public FilBlockTracker::Observer {
|
||||
FilTxManager(const FilTxManager&) = delete;
|
||||
FilTxManager operator=(const FilTxManager&) = delete;
|
||||
|
||||
using GetFilTransactionMessageToSignCallback =
|
||||
mojom::FilTxManagerProxy::GetFilTransactionMessageToSignCallback;
|
||||
using ProcessFilHardwareSignatureCallback =
|
||||
mojom::FilTxManagerProxy::ProcessFilHardwareSignatureCallback;
|
||||
|
||||
void AddUnapprovedTransaction(const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback) override;
|
||||
void AddUnapprovedFilecoinTransaction(
|
||||
const std::string& chain_id,
|
||||
mojom::FilTxDataPtr fil_tx_data,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedFilecoinTransactionCallback callback);
|
||||
void ApproveTransaction(const std::string& tx_meta_id,
|
||||
ApproveTransactionCallback) override;
|
||||
void GetFilTransactionMessageToSign(
|
||||
@@ -71,7 +74,7 @@ class FilTxManager : public TxManager, public FilBlockTracker::Observer {
|
||||
const mojom::AccountIdPtr& from_account_id,
|
||||
const std::optional<url::Origin>& origin,
|
||||
std::unique_ptr<FilTransaction> tx,
|
||||
AddUnapprovedTransactionCallback callback);
|
||||
AddUnapprovedFilecoinTransactionCallback callback);
|
||||
std::unique_ptr<FilTxMeta> GetTxForTesting(const std::string& tx_meta_id);
|
||||
|
||||
private:
|
||||
@@ -98,7 +101,7 @@ class FilTxManager : public TxManager, public FilBlockTracker::Observer {
|
||||
const mojom::AccountIdPtr& from_account_id,
|
||||
const std::optional<url::Origin>& origin,
|
||||
std::unique_ptr<FilTransaction> tx,
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedFilecoinTransactionCallback callback,
|
||||
const std::string& gas_premium,
|
||||
const std::string& gas_fee_cap,
|
||||
int64_t gas_limit,
|
||||
|
||||
@@ -148,11 +148,9 @@ class FilTxManagerUnitTest : public testing::Test {
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
std::string* meta_id) {
|
||||
auto tx_data_union = mojom::TxDataUnion::NewFilTxData(std::move(tx_data));
|
||||
|
||||
base::RunLoop run_loop;
|
||||
fil_tx_manager()->AddUnapprovedTransaction(
|
||||
chain_id, std::move(tx_data_union), from, origin, nullptr,
|
||||
fil_tx_manager()->AddUnapprovedFilecoinTransaction(
|
||||
chain_id, std::move(tx_data), from, origin, nullptr,
|
||||
base::BindLambdaForTesting([&](bool success, const std::string& id,
|
||||
const std::string& err_message) {
|
||||
ASSERT_TRUE(success);
|
||||
|
||||
@@ -45,18 +45,6 @@ PolkadotTxManager::~PolkadotTxManager() {
|
||||
GetPolkadotBlockTracker().RemoveObserver(this);
|
||||
}
|
||||
|
||||
void PolkadotTxManager::AddUnapprovedTransaction(
|
||||
const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback) {
|
||||
NOTIMPLEMENTED_LOG_ONCE();
|
||||
|
||||
std::move(callback).Run(false, "", "Not implemented");
|
||||
}
|
||||
|
||||
std::unique_ptr<PolkadotTxMeta> PolkadotTxManager::GetPolkadotTx(
|
||||
const std::string& tx_meta_id) {
|
||||
auto tx_meta = tx_state_manager().GetTx(tx_meta_id);
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
#include "brave/components/brave_wallet/browser/polkadot/polkadot_tx_meta.h"
|
||||
#include "brave/components/brave_wallet/browser/tx_manager.h"
|
||||
#include "brave/components/brave_wallet/common/brave_wallet.mojom.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
namespace brave_wallet {
|
||||
|
||||
@@ -42,14 +41,6 @@ class PolkadotTxManager : public TxManager,
|
||||
PolkadotTxManager& operator=(const PolkadotTxManager&) = delete;
|
||||
|
||||
// TxManager
|
||||
void AddUnapprovedTransaction(
|
||||
const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback) override;
|
||||
|
||||
void AddUnapprovedPolkadotTransaction(
|
||||
mojom::NewPolkadotTransactionParamsPtr params,
|
||||
AddUnapprovedPolkadotTransactionCallback callback);
|
||||
|
||||
@@ -140,28 +140,6 @@ TEST_F(PolkadotTxManagerUnitTest, GetCoinType) {
|
||||
EXPECT_EQ(polkadot_tx_manager_->GetCoinType(), mojom::CoinType::DOT);
|
||||
}
|
||||
|
||||
TEST_F(PolkadotTxManagerUnitTest, AddUnapprovedTransaction) {
|
||||
auto tx_data_union = mojom::TxDataUnion::NewPolkadotTxData(
|
||||
mojom::PolkadotTxdata::New("", Uint128ToMojom(uint128_t{0}),
|
||||
Uint128ToMojom(uint128_t{0}), false));
|
||||
|
||||
auto account_id = mojom::AccountId::New();
|
||||
account_id->coin = mojom::CoinType::DOT;
|
||||
account_id->keyring_id = mojom::KeyringId::kPolkadotMainnet;
|
||||
account_id->kind = mojom::AccountKind::kDerived;
|
||||
account_id->address = "test_address";
|
||||
|
||||
polkadot_tx_manager_->AddUnapprovedTransaction(
|
||||
"polkadot_mainnet", std::move(tx_data_union), account_id, std::nullopt,
|
||||
nullptr,
|
||||
base::BindOnce([](bool success, const std::string& tx_meta_id,
|
||||
const std::string& error_message) {
|
||||
EXPECT_FALSE(success);
|
||||
EXPECT_TRUE(tx_meta_id.empty());
|
||||
EXPECT_EQ(error_message, "Not implemented");
|
||||
}));
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
// Use the BOB account here:
|
||||
@@ -489,7 +467,7 @@ TEST_F(PolkadotTxManagerUnitTest, ApproveTransaction_NoTransaction) {
|
||||
}
|
||||
|
||||
TEST_F(PolkadotTxManagerUnitTest, ApproveTransaction_RejectedExtrinsic) {
|
||||
// Prove that we can handle the case where the RPC nodes reject the exrinsic
|
||||
// Prove that we can handle the case where the RPC nodes reject the extrinsic
|
||||
// outright without returning a transaction hash.
|
||||
|
||||
polkadot_mock_rpc_->RejectExtrinsicSubmission();
|
||||
@@ -544,7 +522,7 @@ TEST_F(PolkadotTxManagerUnitTest, ApproveTransaction_RejectedExtrinsic) {
|
||||
}
|
||||
|
||||
TEST_F(PolkadotTxManagerUnitTest, ApproveTransaction_NetworkFailure) {
|
||||
// Prove that we can handle the case where an intermitent network failure
|
||||
// Prove that we can handle the case where an intermittent network failure
|
||||
// during extrinsic signing fails.
|
||||
|
||||
polkadot_mock_rpc_->AddReqResPairs();
|
||||
|
||||
@@ -42,8 +42,7 @@ mojom::TransactionInfoPtr GetCannedScanEVMTransactionParams(
|
||||
"0x3", "0x09", "0x4a817c800", "0x5208",
|
||||
is_deploy_contract ? "0x" : "0x3535353535353535353535353535353535353535",
|
||||
"0xde0b6b3a7640000",
|
||||
is_eth_send ? std::vector<uint8_t>() : std::vector<uint8_t>(1, 10u),
|
||||
false, std::nullopt);
|
||||
is_eth_send ? std::vector<uint8_t>() : std::vector<uint8_t>(1, 10u));
|
||||
|
||||
auto tx = eip1559
|
||||
? std::make_unique<Eip1559Transaction>(
|
||||
|
||||
@@ -10,9 +10,7 @@
|
||||
#include <optional>
|
||||
#include <utility>
|
||||
|
||||
#include "base/memory/scoped_refptr.h"
|
||||
#include "base/test/bind.h"
|
||||
#include "base/test/gtest_util.h"
|
||||
#include "base/test/mock_callback.h"
|
||||
#include "base/test/scoped_feature_list.h"
|
||||
#include "base/test/task_environment.h"
|
||||
@@ -29,7 +27,6 @@
|
||||
#include "brave/components/brave_wallet/browser/solana_tx_meta.h"
|
||||
#include "brave/components/brave_wallet/browser/test_utils.h"
|
||||
#include "brave/components/brave_wallet/common/brave_wallet.mojom.h"
|
||||
#include "brave/components/brave_wallet/common/common_utils.h"
|
||||
#include "brave/components/brave_wallet/common/features.h"
|
||||
#include "brave/components/brave_wallet/common/test_utils.h"
|
||||
#include "components/grit/brave_components_strings.h"
|
||||
@@ -128,10 +125,10 @@ class SimulationServiceUnitTest : public testing::Test {
|
||||
mojom::TransactionInfoPtr GetCannedScanEVMTransactionParams(
|
||||
bool eip1559,
|
||||
const std::string& chain_id) {
|
||||
auto base_tx_data = mojom::TxData::New(
|
||||
chain_id, "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535", "0x0de0b6b3a7640000",
|
||||
std::vector<uint8_t>(), false, std::nullopt);
|
||||
auto base_tx_data =
|
||||
mojom::TxData::New(chain_id, "0x09", "0x4a817c800", "0x5208",
|
||||
"0x3535353535353535353535353535353535353535",
|
||||
"0x0de0b6b3a7640000", std::vector<uint8_t>());
|
||||
|
||||
if (eip1559) {
|
||||
std::unique_ptr<Eip1559Transaction> tx =
|
||||
|
||||
@@ -543,10 +543,10 @@ void SolanaProviderImpl::SignAndSendTransaction(
|
||||
tx.set_send_options(
|
||||
SolanaTransaction::SendOptions::FromValue(std::move(send_options)));
|
||||
|
||||
tx_service_->AddUnapprovedTransactionWithOrigin(
|
||||
mojom::TxDataUnion::NewSolanaTxData(tx.ToSolanaTxData()),
|
||||
tx_service_->AddUnapprovedSolanaDappTransaction(
|
||||
tx.ToSolanaTxData(),
|
||||
json_rpc_service_->GetChainIdSync(mojom::CoinType::SOL, origin_),
|
||||
account->account_id.Clone(), nullptr, origin_,
|
||||
account->account_id.Clone(), origin_,
|
||||
base::BindOnce(&SolanaProviderImpl::OnAddUnapprovedTransaction,
|
||||
weak_factory_.GetWeakPtr(), std::move(callback)));
|
||||
}
|
||||
|
||||
@@ -206,17 +206,14 @@ SolanaTxManager::~SolanaTxManager() {
|
||||
GetSolanaBlockTracker().RemoveObserver(this);
|
||||
}
|
||||
|
||||
void SolanaTxManager::AddUnapprovedTransaction(
|
||||
void SolanaTxManager::AddUnapprovedSolanaTransaction(
|
||||
const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
mojom::SolanaTxDataPtr solana_tx_data,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback) {
|
||||
DCHECK(tx_data_union->is_solana_tx_data());
|
||||
|
||||
auto tx = SolanaTransaction::FromSolanaTxData(
|
||||
std::move(tx_data_union->get_solana_tx_data()));
|
||||
AddUnapprovedSolanaTransactionCallback callback) {
|
||||
auto tx = SolanaTransaction::FromSolanaTxData(std::move(solana_tx_data));
|
||||
if (!tx) {
|
||||
std::move(callback).Run(
|
||||
false, "",
|
||||
@@ -260,7 +257,7 @@ void SolanaTxManager::AddUnapprovedTransaction(
|
||||
}
|
||||
|
||||
void SolanaTxManager::ContinueAddUnapprovedTransaction(
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedSolanaTransactionCallback callback,
|
||||
std::unique_ptr<SolanaTxMeta> meta,
|
||||
mojom::SolanaFeeEstimationPtr estimation,
|
||||
mojom::SolanaProviderError error,
|
||||
|
||||
@@ -31,6 +31,9 @@ struct SolanaAccountInfo;
|
||||
|
||||
class SolanaTxManager : public TxManager, public SolanaBlockTracker::Observer {
|
||||
public:
|
||||
using AddUnapprovedSolanaTransactionCallback =
|
||||
mojom::TxService::AddUnapprovedSolanaTransactionCallback;
|
||||
|
||||
SolanaTxManager(TxService& tx_service,
|
||||
JsonRpcService* json_rpc_service,
|
||||
KeyringService& keyring_service,
|
||||
@@ -38,13 +41,15 @@ class SolanaTxManager : public TxManager, public SolanaBlockTracker::Observer {
|
||||
AccountResolverDelegate& account_resolver_delegate);
|
||||
~SolanaTxManager() override;
|
||||
|
||||
void AddUnapprovedSolanaTransaction(
|
||||
const std::string& chain_id,
|
||||
mojom::SolanaTxDataPtr solana_tx_data,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedSolanaTransactionCallback callback);
|
||||
|
||||
// TxManager
|
||||
void AddUnapprovedTransaction(const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback) override;
|
||||
void ApproveTransaction(const std::string& tx_meta_id,
|
||||
ApproveTransactionCallback) override;
|
||||
|
||||
@@ -210,7 +215,7 @@ class SolanaTxManager : public TxManager, public SolanaBlockTracker::Observer {
|
||||
const std::string& error_message);
|
||||
|
||||
void ContinueAddUnapprovedTransaction(
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedSolanaTransactionCallback callback,
|
||||
std::unique_ptr<SolanaTxMeta> meta,
|
||||
mojom::SolanaFeeEstimationPtr estimation,
|
||||
mojom::SolanaProviderError error,
|
||||
|
||||
@@ -409,12 +409,9 @@ class SolanaTxManagerUnitTest : public testing::Test {
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
std::string* meta_id) {
|
||||
auto tx_data_union =
|
||||
mojom::TxDataUnion::NewSolanaTxData(std::move(solana_tx_data));
|
||||
|
||||
base::RunLoop run_loop;
|
||||
solana_tx_manager()->AddUnapprovedTransaction(
|
||||
chain_id, std::move(tx_data_union), from, origin, nullptr,
|
||||
solana_tx_manager()->AddUnapprovedSolanaTransaction(
|
||||
chain_id, std::move(solana_tx_data), from, origin, nullptr,
|
||||
base::BindLambdaForTesting([&](bool success, const std::string& id,
|
||||
const std::string& err_message) {
|
||||
ASSERT_TRUE(success);
|
||||
@@ -2198,13 +2195,10 @@ TEST_F(SolanaTxManagerUnitTest, AddUnapprovedTransactionWithSwapInfo) {
|
||||
std::vector<mojom::SolanaMessageAddressTableLookupPtr>(), nullptr,
|
||||
nullptr, nullptr);
|
||||
|
||||
auto tx_data_union =
|
||||
mojom::TxDataUnion::NewSolanaTxData(std::move(solana_tx_data));
|
||||
|
||||
base::test::TestFuture<bool, const std::string&, const std::string&>
|
||||
add_tx_future;
|
||||
solana_tx_manager()->AddUnapprovedTransaction(
|
||||
mojom::kSolanaMainnet, std::move(tx_data_union), from_account,
|
||||
solana_tx_manager()->AddUnapprovedSolanaTransaction(
|
||||
mojom::kSolanaMainnet, std::move(solana_tx_data), from_account,
|
||||
GetOrigin(), swap_info.Clone(), add_tx_future.GetCallback());
|
||||
auto [success, tx_meta_id, error_message] = add_tx_future.Take();
|
||||
ASSERT_FALSE(tx_meta_id.empty());
|
||||
|
||||
@@ -34,8 +34,6 @@ class TxManager : public TxStateManager::Observer,
|
||||
KeyringService& keyring_service);
|
||||
~TxManager() override;
|
||||
|
||||
using AddUnapprovedTransactionCallback =
|
||||
mojom::TxService::AddUnapprovedTransactionCallback;
|
||||
using ApproveTransactionCallback =
|
||||
mojom::TxService::ApproveTransactionCallback;
|
||||
using RejectTransactionCallback = mojom::TxService::RejectTransactionCallback;
|
||||
@@ -43,13 +41,6 @@ class TxManager : public TxStateManager::Observer,
|
||||
mojom::TxService::SpeedupOrCancelTransactionCallback;
|
||||
using RetryTransactionCallback = mojom::TxService::RetryTransactionCallback;
|
||||
|
||||
virtual void AddUnapprovedTransaction(
|
||||
const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback) = 0;
|
||||
virtual void ApproveTransaction(const std::string& tx_meta_id,
|
||||
ApproveTransactionCallback) = 0;
|
||||
virtual void RejectTransaction(const std::string& tx_meta_id,
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
#include "base/check.h"
|
||||
#include "base/check_is_test.h"
|
||||
#include "base/check_op.h"
|
||||
#include "base/notreached.h"
|
||||
#include "brave/components/brave_wallet/browser/account_resolver_delegate_impl.h"
|
||||
#include "brave/components/brave_wallet/browser/bitcoin/bitcoin_tx_manager.h"
|
||||
#include "brave/components/brave_wallet/browser/blockchain_registry.h"
|
||||
@@ -37,42 +36,6 @@ namespace brave_wallet {
|
||||
|
||||
namespace {
|
||||
|
||||
std::string GetToAddressFromTxDataUnion(
|
||||
const mojom::TxDataUnion& tx_data_union) {
|
||||
if (tx_data_union.is_eth_tx_data_1559()) {
|
||||
return tx_data_union.get_eth_tx_data_1559()->base_data->to;
|
||||
}
|
||||
|
||||
if (tx_data_union.is_eth_tx_data()) {
|
||||
return tx_data_union.get_eth_tx_data()->to;
|
||||
}
|
||||
|
||||
if (tx_data_union.is_solana_tx_data()) {
|
||||
return tx_data_union.get_solana_tx_data()->to_wallet_address;
|
||||
}
|
||||
|
||||
if (tx_data_union.is_fil_tx_data()) {
|
||||
return tx_data_union.get_fil_tx_data()->to;
|
||||
}
|
||||
|
||||
if (tx_data_union.is_btc_tx_data()) {
|
||||
return tx_data_union.get_btc_tx_data()->to;
|
||||
}
|
||||
|
||||
if (tx_data_union.is_zec_tx_data()) {
|
||||
return tx_data_union.get_zec_tx_data()->to;
|
||||
}
|
||||
|
||||
if (tx_data_union.is_cardano_tx_data()) {
|
||||
return tx_data_union.get_cardano_tx_data()->to;
|
||||
}
|
||||
|
||||
if (tx_data_union.is_polkadot_tx_data()) {
|
||||
return tx_data_union.get_polkadot_tx_data()->to;
|
||||
}
|
||||
NOTREACHED();
|
||||
}
|
||||
|
||||
size_t CalculatePendingTxCount(
|
||||
const std::vector<mojom::TransactionInfoPtr>& result) {
|
||||
size_t counter = 0u;
|
||||
@@ -218,62 +181,59 @@ void TxService::Bind(mojo::PendingReceiver<mojom::BtcTxManagerProxy> receiver) {
|
||||
btc_tx_manager_receivers_.Add(this, std::move(receiver));
|
||||
}
|
||||
|
||||
void TxService::AddUnapprovedTransaction(
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const std::string& chain_id,
|
||||
void TxService::AddUnapprovedEvmDappTransaction(
|
||||
mojom::TxData1559Ptr tx_data_1559,
|
||||
mojom::AccountIdPtr from,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback) {
|
||||
CHECK_NE(from->coin, mojom::CoinType::ETH)
|
||||
<< "Wallet UI must use AddUnapprovedEvmTransaction";
|
||||
CHECK_NE(from->coin, mojom::CoinType::BTC)
|
||||
<< "Wallet UI must use AddUnapprovedBitcoinTransaction";
|
||||
CHECK_NE(from->coin, mojom::CoinType::ZEC)
|
||||
<< "Wallet UI must use AddUnapprovedZCashTransaction";
|
||||
CHECK_NE(from->coin, mojom::CoinType::ADA)
|
||||
<< "Wallet UI must use AddUnapprovedCardanoTransaction";
|
||||
AddUnapprovedTransactionWithOrigin(std::move(tx_data_union), chain_id,
|
||||
std::move(from), std::move(swap_info),
|
||||
std::nullopt, std::move(callback));
|
||||
}
|
||||
|
||||
void TxService::AddUnapprovedTransactionWithOrigin(
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const std::string& chain_id,
|
||||
mojom::AccountIdPtr from,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
const std::optional<url::Origin>& origin,
|
||||
AddUnapprovedTransactionCallback callback) {
|
||||
if (!account_resolver_delegate_->ValidateAccountId(from)) {
|
||||
std::move(callback).Run(
|
||||
false, "",
|
||||
l10n_util::GetStringUTF8(IDS_WALLET_SEND_TRANSACTION_FROM_EMPTY));
|
||||
return;
|
||||
}
|
||||
|
||||
const url::Origin& origin,
|
||||
bool sign_only,
|
||||
AddUnapprovedEvmTransactionCallback callback) {
|
||||
if (BlockchainRegistry::GetInstance()->IsRestrictedAddress(
|
||||
GetToAddressFromTxDataUnion(*tx_data_union))) {
|
||||
tx_data_1559->base_data->to)) {
|
||||
std::move(callback).Run(false, "", WalletRestrictedAddressErrorMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
auto coin_type = GetCoinTypeFromTxDataUnion(*tx_data_union);
|
||||
GetTxManager(coin_type)->AddUnapprovedTransaction(
|
||||
chain_id, std::move(tx_data_union), from, origin, std::move(swap_info),
|
||||
GetEthTxManager()->AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data_1559), std::move(from), origin, sign_only,
|
||||
std::move(callback));
|
||||
}
|
||||
|
||||
void TxService::AddUnapprovedEvmDappTransaction(
|
||||
mojom::TxDataPtr tx_data,
|
||||
mojom::AccountIdPtr from,
|
||||
const url::Origin& origin,
|
||||
bool sign_only,
|
||||
AddUnapprovedEvmTransactionCallback callback) {
|
||||
if (BlockchainRegistry::GetInstance()->IsRestrictedAddress(tx_data->to)) {
|
||||
std::move(callback).Run(false, "", WalletRestrictedAddressErrorMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
GetEthTxManager()->AddUnapprovedEvmDappTransaction(
|
||||
std::move(tx_data), std::move(from), origin, sign_only,
|
||||
std::move(callback));
|
||||
}
|
||||
|
||||
void TxService::AddUnapprovedSolanaDappTransaction(
|
||||
mojom::SolanaTxDataPtr solana_tx_data,
|
||||
const std::string& chain_id,
|
||||
mojom::AccountIdPtr from,
|
||||
const url::Origin& origin,
|
||||
AddUnapprovedSolanaTransactionCallback callback) {
|
||||
if (BlockchainRegistry::GetInstance()->IsRestrictedAddress(
|
||||
solana_tx_data->to_wallet_address)) {
|
||||
std::move(callback).Run(false, "", WalletRestrictedAddressErrorMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
GetSolanaTxManager()->AddUnapprovedSolanaTransaction(
|
||||
chain_id, std::move(solana_tx_data), from, origin, nullptr,
|
||||
std::move(callback));
|
||||
}
|
||||
|
||||
void TxService::AddUnapprovedEvmTransaction(
|
||||
mojom::NewEvmTransactionParamsPtr params,
|
||||
AddUnapprovedEvmTransactionCallback callback) {
|
||||
AddUnapprovedEvmTransactionWithOrigin(std::move(params), std::nullopt,
|
||||
std::move(callback));
|
||||
}
|
||||
|
||||
void TxService::AddUnapprovedEvmTransactionWithOrigin(
|
||||
mojom::NewEvmTransactionParamsPtr params,
|
||||
const std::optional<url::Origin>& origin,
|
||||
AddUnapprovedEvmTransactionCallback callback) {
|
||||
CHECK_EQ(params->from->coin, mojom::CoinType::ETH);
|
||||
if (!account_resolver_delegate_->ValidateAccountId(params->from)) {
|
||||
std::move(callback).Run(
|
||||
@@ -287,10 +247,43 @@ void TxService::AddUnapprovedEvmTransactionWithOrigin(
|
||||
return;
|
||||
}
|
||||
|
||||
GetEthTxManager()->AddUnapprovedEvmTransaction(std::move(params), origin,
|
||||
GetEthTxManager()->AddUnapprovedEvmTransaction(std::move(params),
|
||||
std::move(callback));
|
||||
}
|
||||
|
||||
void TxService::AddUnapprovedSolanaTransaction(
|
||||
mojom::SolanaTxDataPtr solana_tx_data,
|
||||
const std::string& chain_id,
|
||||
mojom::AccountIdPtr from,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedSolanaTransactionCallback callback) {
|
||||
if (BlockchainRegistry::GetInstance()->IsRestrictedAddress(
|
||||
solana_tx_data->to_wallet_address)) {
|
||||
std::move(callback).Run(false, "", WalletRestrictedAddressErrorMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
GetSolanaTxManager()->AddUnapprovedSolanaTransaction(
|
||||
chain_id, std::move(solana_tx_data), from, std::nullopt,
|
||||
std::move(swap_info), std::move(callback));
|
||||
}
|
||||
|
||||
void TxService::AddUnapprovedFilecoinTransaction(
|
||||
mojom::FilTxDataPtr fil_tx_data,
|
||||
const std::string& chain_id,
|
||||
mojom::AccountIdPtr from,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedFilecoinTransactionCallback callback) {
|
||||
if (BlockchainRegistry::GetInstance()->IsRestrictedAddress(fil_tx_data->to)) {
|
||||
std::move(callback).Run(false, "", WalletRestrictedAddressErrorMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
GetFilTxManager()->AddUnapprovedFilecoinTransaction(
|
||||
chain_id, std::move(fil_tx_data), from, std::nullopt,
|
||||
std::move(swap_info), std::move(callback));
|
||||
}
|
||||
|
||||
void TxService::AddUnapprovedBitcoinTransaction(
|
||||
mojom::NewBitcoinTransactionParamsPtr params,
|
||||
AddUnapprovedBitcoinTransactionCallback callback) {
|
||||
@@ -397,6 +390,11 @@ mojom::TransactionInfoPtr TxService::GetTransactionInfoSync(
|
||||
return GetTxManager(coin_type)->GetTransactionInfo(tx_meta_id);
|
||||
}
|
||||
|
||||
std::optional<std::string> TxService::GetEthSignedTransaction(
|
||||
const std::string& tx_meta_id) {
|
||||
return GetEthTxManager()->GetSignedTransaction(tx_meta_id);
|
||||
}
|
||||
|
||||
void TxService::GetAllTransactionInfo(
|
||||
mojom::CoinType coin_type,
|
||||
const std::optional<std::string>& chain_id,
|
||||
|
||||
@@ -75,27 +75,41 @@ class TxService : public mojom::TxService,
|
||||
template <class T>
|
||||
void Bind(mojo::PendingReceiver<T> receiver);
|
||||
|
||||
void AddUnapprovedEvmDappTransaction(
|
||||
mojom::TxData1559Ptr tx_data_1559,
|
||||
mojom::AccountIdPtr from,
|
||||
const url::Origin& origin,
|
||||
bool sign_only,
|
||||
AddUnapprovedEvmTransactionCallback callback);
|
||||
void AddUnapprovedEvmDappTransaction(
|
||||
mojom::TxDataPtr tx_data,
|
||||
mojom::AccountIdPtr from,
|
||||
const url::Origin& origin,
|
||||
bool sign_only,
|
||||
AddUnapprovedEvmTransactionCallback callback);
|
||||
void AddUnapprovedSolanaDappTransaction(
|
||||
mojom::SolanaTxDataPtr solana_tx_data,
|
||||
const std::string& chain_id,
|
||||
mojom::AccountIdPtr from,
|
||||
const url::Origin& origin,
|
||||
AddUnapprovedSolanaTransactionCallback callback);
|
||||
|
||||
// mojom::TxService
|
||||
void AddUnapprovedTransaction(
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const std::string& chain_id,
|
||||
mojom::AccountIdPtr from,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback) override;
|
||||
void AddUnapprovedTransactionWithOrigin(
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const std::string& chain_id,
|
||||
mojom::AccountIdPtr from,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
const std::optional<url::Origin>& origin,
|
||||
AddUnapprovedTransactionCallback callback);
|
||||
void AddUnapprovedEvmTransaction(
|
||||
mojom::NewEvmTransactionParamsPtr params,
|
||||
AddUnapprovedEvmTransactionCallback callback) override;
|
||||
void AddUnapprovedEvmTransactionWithOrigin(
|
||||
mojom::NewEvmTransactionParamsPtr params,
|
||||
const std::optional<url::Origin>& origin,
|
||||
AddUnapprovedEvmTransactionCallback callback);
|
||||
void AddUnapprovedSolanaTransaction(
|
||||
mojom::SolanaTxDataPtr solana_tx_data,
|
||||
const std::string& chain_id,
|
||||
mojom::AccountIdPtr from,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedSolanaTransactionCallback callback) override;
|
||||
void AddUnapprovedFilecoinTransaction(
|
||||
mojom::FilTxDataPtr fil_tx_data,
|
||||
const std::string& chain_id,
|
||||
mojom::AccountIdPtr from,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedFilecoinTransactionCallback callback) override;
|
||||
void AddUnapprovedBitcoinTransaction(
|
||||
mojom::NewBitcoinTransactionParamsPtr params,
|
||||
AddUnapprovedBitcoinTransactionCallback callback) override;
|
||||
@@ -122,6 +136,8 @@ class TxService : public mojom::TxService,
|
||||
mojom::TransactionInfoPtr GetTransactionInfoSync(
|
||||
mojom::CoinType coin_type,
|
||||
const std::string& tx_meta_id);
|
||||
std::optional<std::string> GetEthSignedTransaction(
|
||||
const std::string& tx_meta_id);
|
||||
void GetAllTransactionInfo(mojom::CoinType coin_type,
|
||||
const std::optional<std::string>& chain_id,
|
||||
mojom::AccountIdPtr from,
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
|
||||
#include "base/functional/bind.h"
|
||||
#include "base/notimplemented.h"
|
||||
#include "base/notreached.h"
|
||||
#include "brave/components/brave_wallet/browser/zcash/zcash_block_tracker.h"
|
||||
#include "brave/components/brave_wallet/browser/zcash/zcash_transaction.h"
|
||||
#include "brave/components/brave_wallet/browser/zcash/zcash_tx_meta.h"
|
||||
@@ -48,16 +47,6 @@ void ZCashTxManager::OnLatestHeightUpdated(const std::string& chain_id,
|
||||
UpdatePendingTransactions(chain_id);
|
||||
}
|
||||
|
||||
void ZCashTxManager::AddUnapprovedTransaction(
|
||||
const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback) {
|
||||
NOTREACHED() << "AddUnapprovedZCashTransaction must be used";
|
||||
}
|
||||
|
||||
void ZCashTxManager::AddUnapprovedZCashTransaction(
|
||||
mojom::NewZCashTransactionParamsPtr params,
|
||||
AddUnapprovedZCashTransactionCallback callback) {
|
||||
@@ -124,7 +113,7 @@ void ZCashTxManager::ContinueAddUnapprovedTransaction(
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedZCashTransactionCallback callback,
|
||||
base::expected<ZCashTransaction, std::string> zcash_transaction) {
|
||||
if (!zcash_transaction.has_value()) {
|
||||
std::move(callback).Run(false, "", zcash_transaction.error());
|
||||
|
||||
@@ -6,14 +6,12 @@
|
||||
#ifndef BRAVE_COMPONENTS_BRAVE_WALLET_BROWSER_ZCASH_ZCASH_TX_MANAGER_H_
|
||||
#define BRAVE_COMPONENTS_BRAVE_WALLET_BROWSER_ZCASH_ZCASH_TX_MANAGER_H_
|
||||
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
|
||||
#include "base/scoped_observation.h"
|
||||
#include "brave/components/brave_wallet/browser/tx_manager.h"
|
||||
#include "brave/components/brave_wallet/browser/zcash/zcash_block_tracker.h"
|
||||
#include "brave/components/brave_wallet/browser/zcash/zcash_rpc.h"
|
||||
#include "brave/components/brave_wallet/browser/zcash/zcash_transaction.h"
|
||||
#include "brave/components/brave_wallet/browser/zcash/zcash_wallet_service.h"
|
||||
|
||||
@@ -54,12 +52,6 @@ class ZCashTxManager : public TxManager, public ZCashBlockTracker::Observer {
|
||||
uint32_t latest_height) override;
|
||||
|
||||
// TxManager
|
||||
void AddUnapprovedTransaction(const std::string& chain_id,
|
||||
mojom::TxDataUnionPtr tx_data_union,
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback) override;
|
||||
void ApproveTransaction(const std::string& tx_meta_id,
|
||||
ApproveTransactionCallback) override;
|
||||
|
||||
@@ -77,7 +69,7 @@ class ZCashTxManager : public TxManager, public ZCashBlockTracker::Observer {
|
||||
const mojom::AccountIdPtr& from,
|
||||
const std::optional<url::Origin>& origin,
|
||||
mojom::SwapInfoPtr swap_info,
|
||||
AddUnapprovedTransactionCallback callback,
|
||||
AddUnapprovedZCashTransactionCallback callback,
|
||||
base::expected<ZCashTransaction, std::string> zcash_transaction);
|
||||
|
||||
void ContinueApproveTransaction(const std::string& tx_meta_id,
|
||||
|
||||
@@ -1643,8 +1643,6 @@ struct TxData {
|
||||
string to;
|
||||
string value;
|
||||
array<uint8> data;
|
||||
bool sign_only;
|
||||
string? signed_transaction;
|
||||
};
|
||||
|
||||
struct GasEstimation1559 {
|
||||
@@ -2764,13 +2762,19 @@ struct NewPolkadotTransactionParams {
|
||||
// For transaction management such as creation, broadcasting, and storing
|
||||
// transactions.
|
||||
interface TxService {
|
||||
AddUnapprovedTransaction(TxDataUnion tx_data_union,
|
||||
string chain_id,
|
||||
AccountId from,
|
||||
SwapInfo? swap_info)
|
||||
AddUnapprovedEvmTransaction(NewEvmTransactionParams params)
|
||||
=> (bool success, string tx_meta_id, string error_message);
|
||||
|
||||
AddUnapprovedEvmTransaction(NewEvmTransactionParams params)
|
||||
AddUnapprovedSolanaTransaction(SolanaTxData tx_data,
|
||||
string chain_id,
|
||||
AccountId from,
|
||||
SwapInfo? swap_info)
|
||||
=> (bool success, string tx_meta_id, string error_message);
|
||||
|
||||
AddUnapprovedFilecoinTransaction(FilTxData tx_data,
|
||||
string chain_id,
|
||||
AccountId from,
|
||||
SwapInfo? swap_info)
|
||||
=> (bool success, string tx_meta_id, string error_message);
|
||||
|
||||
AddUnapprovedBitcoinTransaction(NewBitcoinTransactionParams params)
|
||||
|
||||
@@ -64,8 +64,6 @@ export const getMockedTransactionInfo =
|
||||
nonce: '0x03',
|
||||
gasLimit: '0x5208', // 2100
|
||||
gasPrice: '0x22ecb25c00', // 150 Gwei
|
||||
signOnly: false,
|
||||
signedTransaction: undefined,
|
||||
},
|
||||
maxPriorityFeePerGas: '',
|
||||
maxFeePerGas: '',
|
||||
|
||||
@@ -49,7 +49,7 @@ import {
|
||||
import { makeSerializableTransaction } from '../../../utils/model-serialization-utils'
|
||||
import { getCoinFromTxDataUnion } from '../../../utils/network-utils'
|
||||
import { TX_CACHE_TAGS } from '../../../utils/query-cache-utils'
|
||||
import { sortTransactionByDate, toTxDataUnion } from '../../../utils/tx-utils'
|
||||
import { sortTransactionByDate } from '../../../utils/tx-utils'
|
||||
import {
|
||||
signLedgerEthereumTransaction,
|
||||
signLedgerFilecoinTransaction,
|
||||
@@ -215,18 +215,15 @@ export const transactionEndpoints = ({
|
||||
try {
|
||||
const { solanaTxManagerProxy, txService } = baseQuery(undefined).data
|
||||
|
||||
const {
|
||||
error,
|
||||
errorMessage: transferTxDataErrorMessage,
|
||||
txData,
|
||||
} = await solanaTxManagerProxy //
|
||||
.makeSystemProgramTransferTxData(
|
||||
payload.fromAccount.address,
|
||||
payload.to,
|
||||
BigInt(payload.value),
|
||||
)
|
||||
const { errorMessage: transferTxDataErrorMessage, txData } =
|
||||
await solanaTxManagerProxy //
|
||||
.makeSystemProgramTransferTxData(
|
||||
payload.fromAccount.address,
|
||||
payload.to,
|
||||
BigInt(payload.value),
|
||||
)
|
||||
|
||||
if (error && transferTxDataErrorMessage) {
|
||||
if (!txData || transferTxDataErrorMessage) {
|
||||
throw new Error(
|
||||
'Failed to make SOL system program transfer txData): '
|
||||
+ transferTxDataErrorMessage || 'unknown error',
|
||||
@@ -234,8 +231,8 @@ export const transactionEndpoints = ({
|
||||
}
|
||||
|
||||
const { errorMessage, success } =
|
||||
await txService.addUnapprovedTransaction(
|
||||
toTxDataUnion({ solanaTxData: txData ?? undefined }),
|
||||
await txService.addUnapprovedSolanaTransaction(
|
||||
txData,
|
||||
payload.network.chainId,
|
||||
payload.fromAccount.accountId,
|
||||
payload.swapInfo ?? null,
|
||||
@@ -298,8 +295,8 @@ export const transactionEndpoints = ({
|
||||
}
|
||||
|
||||
const { errorMessage, success } =
|
||||
await txService.addUnapprovedTransaction(
|
||||
toTxDataUnion({ solanaTxData: txData }),
|
||||
await txService.addUnapprovedSolanaTransaction(
|
||||
txData,
|
||||
payload.network.chainId,
|
||||
payload.fromAccount.accountId,
|
||||
payload.swapInfo ?? null,
|
||||
@@ -360,15 +357,15 @@ export const transactionEndpoints = ({
|
||||
payload.sendOptions || null,
|
||||
)
|
||||
|
||||
if (result.error !== BraveWallet.ProviderError.kSuccess) {
|
||||
if (!result.txData) {
|
||||
throw new Error(
|
||||
`Failed to sign Solana message: ${result.errorMessage}`,
|
||||
)
|
||||
}
|
||||
|
||||
const { errorMessage, success } =
|
||||
await txService.addUnapprovedTransaction(
|
||||
toTxDataUnion({ solanaTxData: result.txData ?? undefined }),
|
||||
await txService.addUnapprovedSolanaTransaction(
|
||||
result.txData,
|
||||
payload.chainId,
|
||||
payload.accountId,
|
||||
payload.swapInfo ?? null,
|
||||
@@ -819,8 +816,8 @@ export const transactionEndpoints = ({
|
||||
}
|
||||
|
||||
const { errorMessage, success } =
|
||||
await txService.addUnapprovedTransaction(
|
||||
toTxDataUnion({ filTxData: filTxData }),
|
||||
await txService.addUnapprovedFilecoinTransaction(
|
||||
filTxData,
|
||||
payload.network.chainId,
|
||||
payload.fromAccount.accountId,
|
||||
payload.swapInfo ?? null,
|
||||
|
||||
@@ -52,8 +52,6 @@ export const mockTransactionInfo: SerializableTransactionInfo = {
|
||||
to: mockBasicAttentionToken.contractAddress,
|
||||
value: '0x15ddf09c97b0000',
|
||||
data: Array.from(new Uint8Array(24)),
|
||||
signOnly: false,
|
||||
signedTransaction: undefined,
|
||||
},
|
||||
maxPriorityFeePerGas: '80410000', // (0.08041 gwei)
|
||||
maxFeePerGas: '3600000000', // (3.6 gwei)
|
||||
@@ -545,8 +543,6 @@ export const mockERC20TransferTransaction: SerializableTransactionInfo = {
|
||||
data: [
|
||||
168, 0, 5, 168, 0, 5, 168, 0, 5, 168, 0, 5, 168, 0, 5, 168, 0, 5,
|
||||
],
|
||||
signOnly: false,
|
||||
signedTransaction: 'mockSignedTx',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -70,8 +70,6 @@ const transactionDummyData: SerializableTransactionInfo[][] = [
|
||||
nonce: '0x1',
|
||||
to: 'ETHEREUM ACCOUNT 2',
|
||||
value: '0xb1a2bc2ec50000',
|
||||
signOnly: false,
|
||||
signedTransaction: undefined,
|
||||
},
|
||||
maxFeePerGas: '',
|
||||
maxPriorityFeePerGas: '',
|
||||
@@ -109,8 +107,6 @@ const transactionDummyData: SerializableTransactionInfo[][] = [
|
||||
nonce: '0x1',
|
||||
to: '0xcd3a3f8e0e4bdc174c9e2e63b4c22e15a7f7f92a',
|
||||
value: '0xb1a2bc2ec50000',
|
||||
signOnly: false,
|
||||
signedTransaction: undefined,
|
||||
},
|
||||
maxFeePerGas: '',
|
||||
maxPriorityFeePerGas: '',
|
||||
@@ -148,8 +144,6 @@ const transactionDummyData: SerializableTransactionInfo[][] = [
|
||||
nonce: '0x1',
|
||||
to: '0x7d66c9ddAED3115d93Bd1790332f3Cd06Cf52B14',
|
||||
value: '0xb1a2bc2ec90000',
|
||||
signOnly: false,
|
||||
signedTransaction: undefined,
|
||||
},
|
||||
maxFeePerGas: '',
|
||||
maxPriorityFeePerGas: '',
|
||||
@@ -187,8 +181,6 @@ const transactionDummyData: SerializableTransactionInfo[][] = [
|
||||
nonce: '0x1',
|
||||
to: '0xcd3a3f8e0e4bdc174c9e2e63b4c22e15a7f7f92a',
|
||||
value: '0xb1a2bc2ec90000',
|
||||
signOnly: false,
|
||||
signedTransaction: undefined,
|
||||
},
|
||||
maxFeePerGas: '',
|
||||
maxPriorityFeePerGas: '',
|
||||
@@ -226,8 +218,6 @@ const transactionDummyData: SerializableTransactionInfo[][] = [
|
||||
nonce: '0x1',
|
||||
to: '0xcd3a3f8e0e4bdc174c9e2e63b4c22e15a7f7f92a',
|
||||
value: '0xb1a2bc2ec90000',
|
||||
signOnly: false,
|
||||
signedTransaction: undefined,
|
||||
},
|
||||
maxFeePerGas: '',
|
||||
maxPriorityFeePerGas: '',
|
||||
@@ -267,8 +257,6 @@ const transactionDummyData: SerializableTransactionInfo[][] = [
|
||||
nonce: '0x1',
|
||||
to: '0xcd3a3f8e0e4bdc174c9e2e63b4c22e15a7f7f92a',
|
||||
value: '0xb1a2bc2ec90000',
|
||||
signOnly: false,
|
||||
signedTransaction: undefined,
|
||||
},
|
||||
maxFeePerGas: '',
|
||||
maxPriorityFeePerGas: '',
|
||||
@@ -306,8 +294,6 @@ const transactionDummyData: SerializableTransactionInfo[][] = [
|
||||
nonce: '0x1',
|
||||
to: '0xcd3a3f8e0e4bdc174c9e2e63b4c22e15a7f7f92a',
|
||||
value: '0xb1a2bc2ec90000',
|
||||
signOnly: false,
|
||||
signedTransaction: undefined,
|
||||
},
|
||||
maxFeePerGas: '',
|
||||
maxPriorityFeePerGas: '',
|
||||
|
||||
@@ -57,7 +57,6 @@ import {
|
||||
getTransactionTypeName,
|
||||
isCancelTransaction,
|
||||
parseSwapInfo,
|
||||
toTxDataUnion,
|
||||
} from './tx-utils'
|
||||
|
||||
const mockCardanoMinswapTokenIdHex = 'deadbeefcafe'
|
||||
@@ -736,30 +735,6 @@ describe('check for insufficient funds errors', () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe('toTxDataUnion', () => {
|
||||
test('works', () => {
|
||||
const filTxData: BraveWallet.FilTxData = {
|
||||
nonce: '',
|
||||
gasPremium: '',
|
||||
gasFeeCap: '',
|
||||
gasLimit: '',
|
||||
maxFee: '0',
|
||||
to: 'to',
|
||||
value: 'value',
|
||||
}
|
||||
|
||||
const union = toTxDataUnion({ filTxData: filTxData })
|
||||
|
||||
expect(Object.keys(union).length).toBe(1)
|
||||
expect(union.filTxData).toBe(filTxData)
|
||||
expect(union.ethTxData).toBe(undefined)
|
||||
expect(union.ethTxData1559).toBe(undefined)
|
||||
expect(union.solanaTxData).toBe(undefined)
|
||||
expect(union.btcTxData).toBe(undefined)
|
||||
expect(union.zecTxData).toBe(undefined)
|
||||
})
|
||||
})
|
||||
|
||||
describe('getIsRevokeApprovalTx', () => {
|
||||
test('correctly detects revocations', () => {
|
||||
expect(
|
||||
|
||||
@@ -2149,12 +2149,6 @@ export const parseTransactionWithPrices = ({
|
||||
}
|
||||
}
|
||||
|
||||
export function toTxDataUnion<D extends keyof BraveWallet.TxDataUnion>(
|
||||
unionItem: Pick<BraveWallet.TxDataUnion, D>,
|
||||
) {
|
||||
return Object.assign({}, unionItem) as BraveWallet.TxDataUnion
|
||||
}
|
||||
|
||||
export const isAssociatedTokenAccountCreationTx = (
|
||||
tx: Pick<BraveWallet.TransactionInfo, 'txType'> | undefined,
|
||||
) =>
|
||||
|
||||
@@ -857,9 +857,8 @@ public class SendTokenStore: ObservableObject, WalletObserverStore {
|
||||
completion(false, errMsg)
|
||||
return
|
||||
}
|
||||
let txDataUnion = BraveWallet.TxDataUnion(solanaTxData: solanaTxData)
|
||||
self.txService.addUnapprovedTransaction(
|
||||
txDataUnion: txDataUnion,
|
||||
self.txService.addUnapprovedSolanaTransaction(
|
||||
txData: solanaTxData,
|
||||
chainId: network.chainId,
|
||||
from: fromAccountInfo.accountId,
|
||||
swapInfo: nil
|
||||
@@ -924,9 +923,8 @@ public class SendTokenStore: ObservableObject, WalletObserverStore {
|
||||
errMsg: String,
|
||||
completion: @escaping (_ success: Bool, _ errMsg: String?) -> Void
|
||||
) {
|
||||
let txDataUnion = BraveWallet.TxDataUnion(solanaTxData: solTxData)
|
||||
self.txService.addUnapprovedTransaction(
|
||||
txDataUnion: txDataUnion,
|
||||
self.txService.addUnapprovedSolanaTransaction(
|
||||
txData: solTxData,
|
||||
chainId: network.chainId,
|
||||
from: fromAccountInfo.accountId,
|
||||
swapInfo: nil
|
||||
@@ -968,8 +966,8 @@ public class SendTokenStore: ObservableObject, WalletObserverStore {
|
||||
to: sendAddress,
|
||||
value: weiString
|
||||
)
|
||||
self.txService.addUnapprovedTransaction(
|
||||
txDataUnion: BraveWallet.TxDataUnion(filTxData: filTxData),
|
||||
self.txService.addUnapprovedFilecoinTransaction(
|
||||
txData: filTxData,
|
||||
chainId: network.chainId,
|
||||
from: fromAccountId,
|
||||
swapInfo: nil
|
||||
|
||||
@@ -986,8 +986,8 @@ public class SwapTokenStore: ObservableObject, WalletObserverStore {
|
||||
self.state = .error(Strings.Wallet.unknownError)
|
||||
return false
|
||||
}
|
||||
let (success, _, _) = await txService.addUnapprovedTransaction(
|
||||
txDataUnion: .init(solanaTxData: solTxData),
|
||||
let (success, _, _) = await txService.addUnapprovedSolanaTransaction(
|
||||
txData: solTxData,
|
||||
chainId: network.chainId,
|
||||
from: accountInfo.accountId,
|
||||
swapInfo: nil
|
||||
|
||||
@@ -297,9 +297,7 @@ extension BraveWallet.TransactionInfo {
|
||||
gasLimit: "0x5208",
|
||||
to: "0x3f2116ef98fcab1a9c3c2d8988e0064ab59acfca",
|
||||
value: "0x2386f26fc10000",
|
||||
data: [],
|
||||
signOnly: false,
|
||||
signedTransaction: nil
|
||||
data: []
|
||||
),
|
||||
maxPriorityFeePerGas: "0x2540be400",
|
||||
maxFeePerGas: "0x25b7f3d400"
|
||||
@@ -337,9 +335,7 @@ extension BraveWallet.TransactionInfo {
|
||||
data: _transactionBase64ToData(
|
||||
|
||||
"QVVlsAAAAAAAAAAAAAAAAO7u7u7u7u7u7u7u7u7u7u7u7u7uAAAAAAAAAAAAAAAAB4Zcboe59wJVN34CSs5mMMHqo38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI4byb8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZ4WzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAA7u7u7u7u7u7u7u7u7u7u7u7u7u4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI4byb8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHeEF+BjFBE5/OAQmCeAFAqgzVqwAAAAAAAAAAAAAAAAeGXG6HufcCVTd+AkrOZjDB6qN/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI4byb8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAJTdXNoaVN3YXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOG8m/BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWqrBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAbAtqMsNCX641XoXW4jH2LR5l1BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAADHeEF+BjFBE5/OAQmCeAFAqgzVqwAAAAAAAAAAAAAAAAeGXG6HufcCVTd+AkrOZjDB6qN/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAHhlxuh7n3AlU3fgJKzmYwweqjfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyVUAAAAAAAAAAAAAAAAqS1GGpqYin8R7ChdOXg6Y3/da6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAMd4QX4GMUETn84BCYJ4AUCqDNWrAAAAAAAAAAAAAAAAB4Zcboe59wJVN34CSs5mMMHqo38AAAAAAAAAAAAAAADu7u7u7u7u7u7u7u7u7u7u7u7u7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhpWEzQAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkhrRRGGC+/E="
|
||||
),
|
||||
signOnly: false,
|
||||
signedTransaction: nil
|
||||
)
|
||||
),
|
||||
maxPriorityFeePerGas: "0x77359400",
|
||||
maxFeePerGas: "0x39bdf3b000"
|
||||
@@ -388,9 +384,7 @@ extension BraveWallet.TransactionInfo {
|
||||
value: "0x0",
|
||||
data: _transactionBase64ToData(
|
||||
"CV6nswAAAAAAAAAAAAAAAOWSQnoK7Okt4+3uHxjgFXwFhhVk//////////////////////////////////////////8="
|
||||
),
|
||||
signOnly: false,
|
||||
signedTransaction: nil
|
||||
)
|
||||
),
|
||||
maxPriorityFeePerGas: "0x77359400",
|
||||
maxFeePerGas: "0x39bdf3b000"
|
||||
@@ -431,9 +425,7 @@ extension BraveWallet.TransactionInfo {
|
||||
value: "0x0",
|
||||
data: _transactionBase64ToData(
|
||||
"CV6nswAAAAAAAAAAAAAAAOWSQnoK7Okt4+3uHxjgFXwFhhVk//////////////////////////////////////////8="
|
||||
),
|
||||
signOnly: false,
|
||||
signedTransaction: nil
|
||||
)
|
||||
),
|
||||
maxPriorityFeePerGas: "",
|
||||
maxFeePerGas: ""
|
||||
|
||||
@@ -23,8 +23,18 @@ class MockTxService: BraveWalletTxService {
|
||||
completion(txs.first(where: { $0.id == txMetaId }))
|
||||
}
|
||||
|
||||
func addUnapprovedTransaction(
|
||||
txDataUnion: BraveWallet.TxDataUnion,
|
||||
func addUnapprovedSolanaTransaction(
|
||||
txData: BraveWallet.SolanaTxData,
|
||||
chainId: String,
|
||||
from: BraveWallet.AccountId,
|
||||
swapInfo: BraveWallet.SwapInfo?,
|
||||
completion: @escaping (Bool, String, String) -> Void
|
||||
) {
|
||||
completion(true, "txMetaId", "")
|
||||
}
|
||||
|
||||
func addUnapprovedFilecoinTransaction(
|
||||
txData: BraveWallet.FilTxData,
|
||||
chainId: String,
|
||||
from: BraveWallet.AccountId,
|
||||
swapInfo: BraveWallet.SwapInfo?,
|
||||
|
||||
@@ -333,7 +333,6 @@ class SwapStoreTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
let txService = BraveWallet.TestTxService()
|
||||
txService._addUnapprovedTransaction = { $4(true, "tx-meta-id", "") }
|
||||
let walletService = BraveWallet.TestBraveWalletService()
|
||||
let mockAssetManager = TestableWalletUserAssetManager()
|
||||
mockAssetManager._getAllUserAssetsInNetworkAssets = { _, _ in
|
||||
@@ -879,9 +878,9 @@ class SwapStoreTests: XCTestCase {
|
||||
solTxManagerProxy._makeTxDataFromBase64EncodedTransaction = { _, _, _, completion in
|
||||
completion(.init(), .success, "")
|
||||
}
|
||||
var submittedTxData: BraveWallet.TxDataUnion?
|
||||
txService._addUnapprovedTransaction = { txData, _, _, _, completion in
|
||||
submittedTxData = txData
|
||||
var submittedSolanaTxData: BraveWallet.SolanaTxData?
|
||||
txService._addUnapprovedSolanaTransaction = { txData, _, _, _, completion in
|
||||
submittedSolanaTxData = txData
|
||||
completion(true, "tx-meta-id", "")
|
||||
}
|
||||
let store = SwapTokenStore(
|
||||
@@ -918,7 +917,7 @@ class SwapStoreTests: XCTestCase {
|
||||
let success = await store.createSwapTransaction()
|
||||
XCTAssertTrue(success, "Expected to successfully create transaction")
|
||||
XCTAssertFalse(store.isMakingTx)
|
||||
XCTAssertNotNil(submittedTxData?.solanaTxData)
|
||||
XCTAssertNotNil(submittedSolanaTxData)
|
||||
}
|
||||
|
||||
func testSwapFullBalanceNoRounding() {
|
||||
|
||||
@@ -240,9 +240,7 @@ class TransactionParserTests: XCTestCase {
|
||||
gasLimit: "0x5208",
|
||||
to: "0x0987654321098765432109876543210987654321",
|
||||
value: "0x1b667a56d488000", // 0.1234
|
||||
data: [],
|
||||
signOnly: false,
|
||||
signedTransaction: nil
|
||||
data: []
|
||||
),
|
||||
maxPriorityFeePerGas: "0x59672ead",
|
||||
maxFeePerGas: "0x59672eb6"
|
||||
@@ -324,9 +322,7 @@ class TransactionParserTests: XCTestCase {
|
||||
gasLimit: "0xca48",
|
||||
to: BraveWallet.BlockchainToken.previewDaiToken.contractAddress,
|
||||
value: "0x0",
|
||||
data: [],
|
||||
signOnly: false,
|
||||
signedTransaction: nil
|
||||
data: []
|
||||
),
|
||||
maxPriorityFeePerGas: "0x59672ead",
|
||||
maxFeePerGas: "0x59672eb6"
|
||||
@@ -391,9 +387,7 @@ class TransactionParserTests: XCTestCase {
|
||||
gasLimit: "0x4be75",
|
||||
to: "0xDef1C0ded9bec7F1a1670819833240f027b25EfF", // 0x exchange address
|
||||
value: "0x1b6951ef585a000",
|
||||
data: [],
|
||||
signOnly: false,
|
||||
signedTransaction: nil
|
||||
data: []
|
||||
),
|
||||
maxPriorityFeePerGas: "0x59682f00",
|
||||
maxFeePerGas: "0x59682f09"
|
||||
@@ -476,9 +470,7 @@ class TransactionParserTests: XCTestCase {
|
||||
gasLimit: "0x4be75",
|
||||
to: "0xDef1C0ded9bec7F1a1670819833240f027b25EfF", // 0x exchange address
|
||||
value: "0x0",
|
||||
data: [],
|
||||
signOnly: false,
|
||||
signedTransaction: nil
|
||||
data: []
|
||||
),
|
||||
maxPriorityFeePerGas: "0x59682f00",
|
||||
maxFeePerGas: "0x59682f09"
|
||||
@@ -561,9 +553,7 @@ class TransactionParserTests: XCTestCase {
|
||||
gasLimit: "0xb53f",
|
||||
to: BraveWallet.BlockchainToken.previewDaiToken.contractAddress,
|
||||
value: "0x0",
|
||||
data: [],
|
||||
signOnly: false,
|
||||
signedTransaction: nil
|
||||
data: []
|
||||
),
|
||||
maxPriorityFeePerGas: "0x59682f00",
|
||||
maxFeePerGas: "0x59682f09"
|
||||
@@ -630,9 +620,7 @@ class TransactionParserTests: XCTestCase {
|
||||
gasLimit: "0xb53f",
|
||||
to: BraveWallet.BlockchainToken.previewDaiToken.contractAddress,
|
||||
value: "0x0",
|
||||
data: [],
|
||||
signOnly: false,
|
||||
signedTransaction: nil
|
||||
data: []
|
||||
),
|
||||
maxPriorityFeePerGas: "0x59682f00",
|
||||
maxFeePerGas: "0x59682f09"
|
||||
@@ -700,9 +688,7 @@ class TransactionParserTests: XCTestCase {
|
||||
gasLimit: "0x5208",
|
||||
to: BraveWallet.BlockchainToken.previewDaiToken.contractAddress,
|
||||
value: "0xde0b6b3a7640000", // 1
|
||||
data: [],
|
||||
signOnly: false,
|
||||
signedTransaction: nil
|
||||
data: []
|
||||
),
|
||||
maxPriorityFeePerGas: "0x59672ead",
|
||||
maxFeePerGas: "0x59672eb6"
|
||||
|
||||
Reference in New Issue
Block a user