Skip to content

Commit

Permalink
Fixes brave/brave-browser#3657, adds table view for excluded sites
Browse files Browse the repository at this point in the history
  • Loading branch information
ryanml authored and NejcZdovc committed May 29, 2019
1 parent 7f7564d commit 26df12a
Show file tree
Hide file tree
Showing 33 changed files with 318 additions and 321 deletions.
95 changes: 68 additions & 27 deletions browser/ui/webui/brave_rewards_ui.cc
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,15 @@ class RewardsDOMHandler : public WebUIMessageHandler,
void OnContentSiteList(
std::unique_ptr<brave_rewards::ContentSiteList>,
uint32_t record);
void OnExcludedSiteList(
std::unique_ptr<brave_rewards::ContentSiteList>,
uint32_t record);
void OnGetAllBalanceReports(
const std::map<std::string, brave_rewards::BalanceReport>& reports);
void GetBalanceReports(const base::ListValue* args);
void ExcludePublisher(const base::ListValue* args);
void RestorePublishers(const base::ListValue* args);
void RestorePublisher(const base::ListValue* args);
void WalletExists(const base::ListValue* args);
void GetContributionAmount(const base::ListValue* args);
void RemoveRecurringTip(const base::ListValue* args);
Expand All @@ -87,7 +91,6 @@ class RewardsDOMHandler : public WebUIMessageHandler,
void OnGetContributionAmount(double amount);
void OnGetAddresses(const std::string func_name,
const std::map<std::string, std::string>& addresses);
void OnGetExcludedPublishersNumber(uint32_t num);
void OnGetAutoContributeProps(
int error_code,
std::unique_ptr<brave_rewards::WalletProperties> wallet_properties,
Expand All @@ -104,8 +107,9 @@ class RewardsDOMHandler : public WebUIMessageHandler,
void GetTransactionHistoryForThisCycle(const base::ListValue* args);
void GetRewardsMainEnabled(const base::ListValue* args);
void OnGetRewardsMainEnabled(bool enabled);

void GetExcludedPublishersNumber(const base::ListValue* args);
void GetExcludedSites(const base::ListValue* args);
void OnAutoContributePropsReadyExcluded(
std::unique_ptr<brave_rewards::AutoContributeProps> auto_contri_props);

void OnTransactionHistoryForThisCycle(
int ads_notifications_received,
Expand Down Expand Up @@ -257,6 +261,9 @@ void RewardsDOMHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback("brave_rewards.restorePublishers",
base::BindRepeating(&RewardsDOMHandler::RestorePublishers,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.restorePublisher",
base::BindRepeating(&RewardsDOMHandler::RestorePublisher,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.checkWalletExistence",
base::BindRepeating(&RewardsDOMHandler::WalletExists,
base::Unretained(this)));
Expand Down Expand Up @@ -302,22 +309,22 @@ void RewardsDOMHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback("brave_rewards.getRewardsMainEnabled",
base::BindRepeating(&RewardsDOMHandler::GetRewardsMainEnabled,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getExcludedPublishersNumber",
base::BindRepeating(&RewardsDOMHandler::GetExcludedPublishersNumber,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.setInlineTipSetting",
base::BindRepeating(&RewardsDOMHandler::SetInlineTipSetting,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getPendingContributions",
base::BindRepeating(&RewardsDOMHandler::GetPendingContributions,
base::Unretained(this)));
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.removePendingContribution",
base::BindRepeating(&RewardsDOMHandler::RemovePendingContribution,
base::Unretained(this)));
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
"brave_rewards.removeAllPendingContribution",
base::BindRepeating(&RewardsDOMHandler::RemoveAllPendingContributions,
base::Unretained(this)));
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getExcludedSites",
base::BindRepeating(&RewardsDOMHandler::GetExcludedSites,
base::Unretained(this)));
}

void RewardsDOMHandler::Init() {
Expand Down Expand Up @@ -644,31 +651,46 @@ void RewardsDOMHandler::OnAutoContributePropsReady(
props->reconcile_stamp,
props->contribution_non_verified,
props->contribution_min_visits,
false,
base::Bind(&RewardsDOMHandler::OnContentSiteList,
weak_factory_.GetWeakPtr()));
}

void RewardsDOMHandler::OnAutoContributePropsReadyExcluded(
std::unique_ptr<brave_rewards::AutoContributeProps> props) {
rewards_service_->GetContentSiteList(
0,
0,
props->contribution_min_time,
props->reconcile_stamp,
props->contribution_non_verified,
props->contribution_min_visits,
true,
base::Bind(&RewardsDOMHandler::OnExcludedSiteList,
weak_factory_.GetWeakPtr()));
}

void RewardsDOMHandler::OnContentSiteUpdated(
brave_rewards::RewardsService* rewards_service) {
rewards_service_->GetAutoContributeProps(
base::Bind(&RewardsDOMHandler::OnAutoContributePropsReady,
weak_factory_.GetWeakPtr()));
}

void RewardsDOMHandler::OnGetExcludedPublishersNumber(uint32_t num) {
if (web_ui()->CanCallJavascript()) {
web_ui()->CallJavascriptFunctionUnsafe("brave_rewards.excludedNumber",
base::Value(std::to_string(num)));
}
void RewardsDOMHandler::GetExcludedSites(const base::ListValue* args) {
rewards_service_->GetAutoContributeProps(
base::Bind(&RewardsDOMHandler::OnAutoContributePropsReadyExcluded,
weak_factory_.GetWeakPtr()));
}

void RewardsDOMHandler::OnExcludedSitesChanged(
brave_rewards::RewardsService* rewards_service,
std::string publisher_id,
bool excluded) {
if (rewards_service_)
rewards_service_->GetExcludedPublishersNumber(
base::Bind(&RewardsDOMHandler::OnGetExcludedPublishersNumber,
weak_factory_.GetWeakPtr()));
if (rewards_service_) {
base::ListValue args;
GetExcludedSites(&args);
}
}

void RewardsDOMHandler::OnNotificationAdded(
Expand Down Expand Up @@ -746,6 +768,14 @@ void RewardsDOMHandler::RestorePublishers(const base::ListValue *args) {
}
}

void RewardsDOMHandler::RestorePublisher(const base::ListValue *args) {
if (rewards_service_) {
std::string publisherKey;
args->GetString(0, &publisherKey);
rewards_service_->RestorePublisher(publisherKey);
}
}

void RewardsDOMHandler::OnContentSiteList(
std::unique_ptr<brave_rewards::ContentSiteList> list,
uint32_t record) {
Expand All @@ -770,6 +800,26 @@ void RewardsDOMHandler::OnContentSiteList(
}
}

void RewardsDOMHandler::OnExcludedSiteList(
std::unique_ptr<brave_rewards::ContentSiteList> list,
uint32_t record) {
if (web_ui()->CanCallJavascript()) {
auto publishers = std::make_unique<base::ListValue>();
for (auto const& item : *list) {
auto publisher = std::make_unique<base::DictionaryValue>();
publisher->SetString("id", item.id);
publisher->SetBoolean("verified", item.verified);
publisher->SetString("name", item.name);
publisher->SetString("provider", item.provider);
publisher->SetString("url", item.url);
publisher->SetString("favIcon", item.favicon_url);
publishers->Append(std::move(publisher));
}

web_ui()->CallJavascriptFunctionUnsafe(
"brave_rewards.excludedList", *publishers);
}
}

void RewardsDOMHandler::GetBalanceReports(const base::ListValue* args) {
GetAllBalanceReports();
Expand Down Expand Up @@ -1054,15 +1104,6 @@ void RewardsDOMHandler::OnGetRewardsMainEnabled(
}
}

void RewardsDOMHandler::GetExcludedPublishersNumber(
const base::ListValue* args) {
if (rewards_service_) {
rewards_service_->GetExcludedPublishersNumber(
base::Bind(&RewardsDOMHandler::OnGetExcludedPublishersNumber,
weak_factory_.GetWeakPtr()));
}
}

void RewardsDOMHandler::OnRecurringTipSaved(
brave_rewards::RewardsService* rewards_service,
bool success) {
Expand Down
6 changes: 6 additions & 0 deletions browser/ui/webui/brave_webui_source.cc
Original file line number Diff line number Diff line change
Expand Up @@ -470,11 +470,17 @@ void CustomizeWebUIHTMLSource(const std::string &name,
{ "yourWallet", IDS_BRAVE_UI_YOUR_WALLET },

{ "and", IDS_BRAVE_UI_AND },
{ "excludedSites", IDS_BRAVE_UI_EXCLUDED_SITES_TEXT },
{ "privacyPolicy", IDS_BRAVE_UI_PRIVACY_POLICY },
{ "restoreSite", IDS_BRAVE_UI_RESTORE_SITE },
{ "rewardsExcludedText1", IDS_BRAVE_UI_REWARDS_EXCLUDED_TEXT_1 },
{ "rewardsExcludedText2", IDS_BRAVE_UI_REWARDS_EXCLUDED_TEXT_2 },
{ "rewardsOffText5", IDS_BRAVE_UI_REWARDS_OFF_TEXT5 },
{ "serviceTextToggle", IDS_BRAVE_UI_SERVICE_TEXT_TOGGLE },
{ "serviceTextWelcome", IDS_BRAVE_UI_SERVICE_TEXT_WELCOME },
{ "serviceTextReady", IDS_BRAVE_UI_SERVICE_TEXT_READY },
{ "showAll", IDS_BRAVE_UI_SHOW_ALL },
{ "supportedSites", IDS_BRAVE_UI_SUPPORTED_SITES },
{ "termsOfService", IDS_BRAVE_UI_TERMS_OF_SERVICE }
}
}, {
Expand Down
6 changes: 3 additions & 3 deletions components/brave_ads/browser/ads_service_impl_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -35,25 +35,25 @@ class MockRewardsService : public RewardsService {

MOCK_METHOD0(CreateWallet, void());
MOCK_METHOD0(FetchWalletProperties, void());
MOCK_METHOD7(GetContentSiteList,
MOCK_METHOD8(GetContentSiteList,
void(uint32_t,
uint32_t,
uint64_t,
uint64_t,
bool,
uint32_t,
bool,
const brave_rewards::GetContentSiteListCallback&));
MOCK_METHOD2(FetchGrants, void(const std::string&, const std::string&));
MOCK_METHOD2(GetGrantCaptcha, void(const std::string&, const std::string&));
MOCK_CONST_METHOD2(SolveGrantCaptcha, void(const std::string&,
const std::string&));
MOCK_METHOD1(GetWalletPassphrase,
void(const brave_rewards::GetWalletPassphraseCallback&));
MOCK_METHOD1(GetExcludedPublishersNumber,
void(const brave_rewards::GetExcludedPublishersNumberCallback&));
MOCK_CONST_METHOD1(RecoverWallet, void(const std::string));
MOCK_CONST_METHOD1(ExcludePublisher, void(const std::string));
MOCK_METHOD0(RestorePublishers, void());
MOCK_CONST_METHOD1(RestorePublisher, void(const std::string));
MOCK_METHOD2(OnLoad, void(SessionID, const GURL&));
MOCK_METHOD1(OnUnload, void(SessionID));
MOCK_METHOD1(OnShow, void(SessionID));
Expand Down
58 changes: 35 additions & 23 deletions components/brave_rewards/browser/publisher_info_database.cc
Original file line number Diff line number Diff line change
Expand Up @@ -387,29 +387,6 @@ bool PublisherInfoDatabase::RestorePublishers() {
return restore_q.Run();
}

int PublisherInfoDatabase::GetExcludedPublishersCount() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);

bool initialized = Init();
DCHECK(initialized);

if (!initialized) {
return 0;
}

sql::Statement query(db_.GetUniqueStatement(
"SELECT COUNT(*) FROM publisher_info WHERE excluded=?"));

query.BindInt(0, static_cast<int>(
ledger::PUBLISHER_EXCLUDE::EXCLUDED));

if (query.Step()) {
return query.ColumnInt(0);
}

return 0;
}

/**
*
* ACTIVITY INFO
Expand Down Expand Up @@ -753,6 +730,41 @@ PublisherInfoDatabase::GetMediaPublisherInfo(const std::string& media_key) {
return nullptr;
}

bool PublisherInfoDatabase::GetExcludedList(
ledger::PublisherInfoList* list) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);

CHECK(list);

bool initialized = Init();
DCHECK(initialized);

if (!initialized) {
return false;
}

// We will use every attribute from publisher_info
std::string query = "SELECT * FROM publisher_info WHERE excluded = 1";

sql::Statement info_sql(db_.GetUniqueStatement(query.c_str()));

while (info_sql.Step()) {
std::string id(info_sql.ColumnString(0));

auto info = ledger::PublisherInfo::New();
info->id = info_sql.ColumnString(0);
info->verified = info_sql.ColumnBool(1);
info->name = info_sql.ColumnString(3);
info->favicon_url = info_sql.ColumnString(4);
info->url = info_sql.ColumnString(5);
info->provider = info_sql.ColumnString(9);

list->push_back(std::move(info));
}

return true;
}

/**
*
* RECURRING TIPS
Expand Down
4 changes: 2 additions & 2 deletions components/brave_rewards/browser/publisher_info_database.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,6 @@ class PublisherInfoDatabase {

bool RestorePublishers();

int GetExcludedPublishersCount();

bool InsertOrUpdateActivityInfo(const ledger::PublisherInfo& info);

bool InsertOrUpdateActivityInfos(const ledger::PublisherInfoList& list);
Expand All @@ -65,6 +63,8 @@ class PublisherInfoDatabase {
const ledger::ActivityInfoFilter& filter,
ledger::PublisherInfoList* list);

bool GetExcludedList(ledger::PublisherInfoList* list);

bool InsertOrUpdateMediaPublisherInfo(const std::string& media_key,
const std::string& publisher_id);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -920,45 +920,6 @@ TEST_F(PublisherInfoDatabaseTest, Migrationv4tov6) {
EXPECT_EQ(publisher_info_database_->GetTableVersionNumber(), 6);
}

TEST_F(PublisherInfoDatabaseTest, GetExcludedPublishersCount) {
base::ScopedTempDir temp_dir;
base::FilePath db_file;
CreateTempDatabase(&temp_dir, &db_file);

// empty table
EXPECT_EQ(publisher_info_database_->GetExcludedPublishersCount(), 0);

// with data
ledger::PublisherInfo info;
info.id = "publisher_1";
info.verified = false;
info.excluded = ledger::PUBLISHER_EXCLUDE::DEFAULT;
info.name = "name";
info.url = "https://brave.com";
info.provider = "";
info.favicon_url = "0";

EXPECT_TRUE(publisher_info_database_->InsertOrUpdatePublisherInfo(info));

info.id = "publisher_2";
EXPECT_TRUE(publisher_info_database_->InsertOrUpdatePublisherInfo(info));

info.id = "publisher_3";
info.excluded = ledger::PUBLISHER_EXCLUDE::INCLUDED;
EXPECT_TRUE(publisher_info_database_->InsertOrUpdatePublisherInfo(info));

info.id = "publisher_4";
info.excluded = ledger::PUBLISHER_EXCLUDE::EXCLUDED;
EXPECT_TRUE(publisher_info_database_->InsertOrUpdatePublisherInfo(info));

info.id = "publisher_5";
info.excluded = ledger::PUBLISHER_EXCLUDE::EXCLUDED;
EXPECT_TRUE(publisher_info_database_->InsertOrUpdatePublisherInfo(info));
EXPECT_EQ(CountTableRows("publisher_info"), 5);

EXPECT_EQ(publisher_info_database_->GetExcludedPublishersCount(), 2);
}

TEST_F(PublisherInfoDatabaseTest, DeleteActivityInfo) {
base::ScopedTempDir temp_dir;
base::FilePath db_file;
Expand Down
Loading

0 comments on commit 26df12a

Please sign in to comment.