Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2902)

Unified Diff: chrome/browser/ui/webui/browsing_history_handler_unittest.cc

Issue 2263613002: Make BrowsingDataHandler observe WebHistoryService deletions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/browsing_history_handler_unittest.cc
diff --git a/chrome/browser/ui/webui/browsing_history_handler_unittest.cc b/chrome/browser/ui/webui/browsing_history_handler_unittest.cc
index f8f6a4b8331533cdfcfd3179575ad0f65efaf456..7e37df8e0f055673a537f31477eeca3fcada6ccd 100644
--- a/chrome/browser/ui/webui/browsing_history_handler_unittest.cc
+++ b/chrome/browser/ui/webui/browsing_history_handler_unittest.cc
@@ -5,10 +5,33 @@
#include "chrome/browser/ui/webui/browsing_history_handler.h"
#include <stdint.h>
+#include <set>
#include "base/macros.h"
+#include "base/memory/ptr_util.h"
#include "base/strings/utf_string_conversions.h"
+#include "chrome/browser/history/web_history_service_factory.h"
+#include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h"
+#include "chrome/browser/signin/fake_signin_manager_builder.h"
+#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
+#include "chrome/browser/signin/signin_manager_factory.h"
+#include "chrome/browser/sync/profile_sync_service_factory.h"
+#include "chrome/browser/sync/profile_sync_test_util.h"
+#include "chrome/test/base/testing_profile.h"
+#include "components/history/core/test/fake_web_history_service.h"
+#include "components/signin/core/browser/fake_profile_oauth2_token_service.h"
+#include "components/signin/core/browser/fake_signin_manager.h"
+#include "components/signin/core/browser/test_signin_client.h"
+#include "components/sync/base/model_type.h"
+#include "components/sync/driver/fake_sync_service.h"
+#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+#include "content/public/test/test_web_ui.h"
+#include "net/http/http_status_code.h"
+#include "net/url_request/url_request_test_util.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
namespace {
@@ -48,8 +71,100 @@ bool ResultEquals(
return result.time == correct_time && result.url == GURL(correct_result.url);
}
+void IgnoreBoolAndDoNothing(bool ignored_argument) {}
+
+class TestSyncService : public ProfileSyncService {
+ public:
+ explicit TestSyncService(Profile* profile)
+ : ProfileSyncService(CreateProfileSyncServiceParamsForTest(profile)),
+ sync_active_(false) {}
+
+ bool IsSyncActive() const override { return true; }
+
+ syncer::ModelTypeSet GetActiveDataTypes() const override {
+ return syncer::ModelTypeSet::All();
+ }
+
+ void set_sync_active(bool active) { sync_active_ = active; }
+
+ private:
+ bool sync_active_;
tsergeant 2016/08/24 08:47:04 sync_active_ doesn't appear to be actually used an
msramek 2016/08/24 12:16:07 Thanks for spotting - I forgot the hardcoded "true
+};
+
+class BrowsingHistoryHandlerWithWebUIForTesting
+ : public BrowsingHistoryHandler {
+ public:
+ explicit BrowsingHistoryHandlerWithWebUIForTesting(content::WebUI* web_ui) {
+ set_web_ui(web_ui);
+ }
+};
+
} // namespace
+class BrowsingHistoryHandlerTest : public ::testing::Test {
+ public:
+ void SetUp() override {
+ TestingProfile::Builder builder;
+ builder.AddTestingFactory(ProfileOAuth2TokenServiceFactory::GetInstance(),
+ &BuildFakeProfileOAuth2TokenService);
+ builder.AddTestingFactory(SigninManagerFactory::GetInstance(),
+ &BuildFakeSigninManagerBase);
+ builder.AddTestingFactory(ProfileSyncServiceFactory::GetInstance(),
+ &BuildFakeSyncService);
+ builder.AddTestingFactory(WebHistoryServiceFactory::GetInstance(),
+ &BuildFakeWebHistoryService);
+ profile_ = builder.Build();
+
+ sync_service_ = static_cast<TestSyncService*>(
+ ProfileSyncServiceFactory::GetForProfile(profile_.get()));
+ web_history_service_ = static_cast<history::FakeWebHistoryService*>(
+ WebHistoryServiceFactory::GetForProfile(profile_.get()));
+ web_history_service_->SetupFakeResponse(true /* success */, net::HTTP_OK);
+
+ web_contents_.reset(content::WebContents::Create(
+ content::WebContents::CreateParams(profile_.get())));
+ web_ui_.reset(new content::TestWebUI);
+ web_ui_->set_web_contents(web_contents_.get());
+ }
+
+ void TearDown() override {
+ web_contents_.reset();
+ web_ui_.reset();
+ profile_.reset();
+ }
+
+ Profile* profile() { return profile_.get(); }
+ TestSyncService* sync_service() { return sync_service_; }
+ history::WebHistoryService* web_history_service() {
+ return web_history_service_;
+ }
+ content::TestWebUI* web_ui() { return web_ui_.get(); }
+
+ private:
+ static std::unique_ptr<KeyedService> BuildFakeSyncService(
+ content::BrowserContext* context) {
+ return base::MakeUnique<TestSyncService>(
+ static_cast<TestingProfile*>(context));
+ }
+
+ static std::unique_ptr<KeyedService> BuildFakeWebHistoryService(
+ content::BrowserContext* context) {
+ Profile* profile = static_cast<TestingProfile*>(context);
+
+ return base::MakeUnique<history::FakeWebHistoryService>(
+ ProfileOAuth2TokenServiceFactory::GetForProfile(profile),
+ SigninManagerFactory::GetForProfile(profile),
+ profile->GetRequestContext());
+ }
+
+ content::TestBrowserThreadBundle thread_bundle_;
+ std::unique_ptr<TestingProfile> profile_;
+ TestSyncService* sync_service_;
+ history::FakeWebHistoryService* web_history_service_;
+ std::unique_ptr<content::TestWebUI> web_ui_;
+ std::unique_ptr<content::WebContents> web_contents_;
+};
+
// Tests that the MergeDuplicateResults method correctly removes duplicate
// visits to the same URL on the same day.
// Fails on Android. http://crbug.com/2345
@@ -58,7 +173,7 @@ bool ResultEquals(
#else
#define MAYBE_MergeDuplicateResults MergeDuplicateResults
#endif
-TEST(BrowsingHistoryHandlerTest, MAYBE_MergeDuplicateResults) {
+TEST_F(BrowsingHistoryHandlerTest, MAYBE_MergeDuplicateResults) {
{
// Basic test that duplicates on the same day are removed.
TestResult test_data[] = {
@@ -137,3 +252,36 @@ TEST(BrowsingHistoryHandlerTest, MAYBE_MergeDuplicateResults) {
EXPECT_EQ(1u, results[1].all_timestamps.size());
}
}
+
+// Tests that BrowsingHistoryHandler observes WebHistoryService deletions.
+TEST_F(BrowsingHistoryHandlerTest, ObservingWebHistoryDeletions) {
+ base::Callback<void(bool)> callback = base::Bind(&IgnoreBoolAndDoNothing);
+
+ // BrowsingHistoryHandler listens to WebHistoryService history deletions.
+ {
+ sync_service()->set_sync_active(true);
+ BrowsingHistoryHandlerWithWebUIForTesting handler(web_ui());
+ handler.RegisterMessages();
+
+ web_history_service()->ExpireHistoryBetween(std::set<GURL>(), base::Time(),
+ base::Time::Max(), callback);
+
+ EXPECT_EQ(1U, web_ui()->call_data().size());
+ EXPECT_EQ("historyDeleted", web_ui()->call_data().back()->function_name());
+ }
+
+ // BrowsingHistoryHandler will listen to WebHistoryService deletions even if
+ // history sync is activated later.
+ {
+ sync_service()->set_sync_active(false);
+ BrowsingHistoryHandlerWithWebUIForTesting handler(web_ui());
+ handler.RegisterMessages();
+ sync_service()->set_sync_active(true);
+
+ web_history_service()->ExpireHistoryBetween(std::set<GURL>(), base::Time(),
+ base::Time::Max(), callback);
+
+ EXPECT_EQ(2U, web_ui()->call_data().size());
+ EXPECT_EQ("historyDeleted", web_ui()->call_data().back()->function_name());
+ }
+}
« no previous file with comments | « chrome/browser/ui/webui/browsing_history_handler.cc ('k') | components/history/core/browser/web_history_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698