Commit 094b89d6 authored by Sylvain Defresne's avatar Sylvain Defresne Committed by Commit Bot

Convert indirect uses of TestingFactoryFunction

TestingFactoryFunction is a simple function pointer. It is
deprecated in favor of TestingFactory which is a Callback<>.
Convert indirect uses by using base::BindRepeating() in all
invocation of SetTestingFactory/AddTestingFactory.

Remove the RecentModelFactory::SetForProfileAndUseForTest
method as it pass a std::unique_ptr<> object to return from
the factory which is difficult to adapt to the new API that
requires a base::RepeatingCallback<>.

Instead inline the implementation in the sole unit test that
called this method and modify it to pass a factory returning
a std::vector<std::unique_ptr<RecentModel>>.

This converts uses in src//chrome/browser/chromeos/fileapi.

This CL was uploaded by git cl split.

R=slangley@chromium.org

Bug: 809610
Change-Id: Idb8bae335e3defca5b2c6736d302586faf97d929
Reviewed-on: https://chromium-review.googlesource.com/c/1259014Reviewed-by: default avatarStuart Langley <slangley@chromium.org>
Commit-Queue: Sylvain Defresne <sdefresne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#601644}
parent 9afa0fc3
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include <utility> #include <utility>
#include "base/bind.h"
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/test/metrics/histogram_tester.h" #include "base/test/metrics/histogram_tester.h"
#include "base/time/time.h" #include "base/time/time.h"
...@@ -66,7 +67,9 @@ class RecentArcMediaSourceTest : public testing::Test { ...@@ -66,7 +67,9 @@ class RecentArcMediaSourceTest : public testing::Test {
runner_ = static_cast<arc::ArcFileSystemOperationRunner*>( runner_ = static_cast<arc::ArcFileSystemOperationRunner*>(
arc::ArcFileSystemOperationRunner::GetFactory() arc::ArcFileSystemOperationRunner::GetFactory()
->SetTestingFactoryAndUse( ->SetTestingFactoryAndUse(
profile_.get(), &CreateFileSystemOperationRunnerForTesting)); profile_.get(),
base::BindRepeating(
&CreateFileSystemOperationRunnerForTesting)));
// Mount ARC file systems. // Mount ARC file systems.
arc::ArcFileSystemMounter::GetForBrowserContext(profile_.get()); arc::ArcFileSystemMounter::GetForBrowserContext(profile_.get());
......
...@@ -17,39 +17,12 @@ ...@@ -17,39 +17,12 @@
namespace chromeos { namespace chromeos {
// static
RecentModel* RecentModelFactory::model_for_test_ = nullptr;
// static // static
RecentModel* RecentModelFactory::GetForProfile(Profile* profile) { RecentModel* RecentModelFactory::GetForProfile(Profile* profile) {
return static_cast<RecentModel*>( return static_cast<RecentModel*>(
GetInstance()->GetServiceForBrowserContext(profile, true)); GetInstance()->GetServiceForBrowserContext(profile, true));
} }
// static
RecentModel* RecentModelFactory::SetForProfileAndUseForTest(
Profile* profile,
std::unique_ptr<RecentModel> model) {
DCHECK(model);
DCHECK(!model_for_test_);
RecentModel* saved_model = model.get();
model_for_test_ = model.release();
KeyedService* used_model = GetInstance()->SetTestingFactoryAndUse(
profile,
[](content::BrowserContext* context) -> std::unique_ptr<KeyedService> {
std::unique_ptr<KeyedService> model(model_for_test_);
model_for_test_ = nullptr;
return model;
});
DCHECK_EQ(used_model, saved_model);
DCHECK(!model_for_test_);
return saved_model;
}
RecentModelFactory::RecentModelFactory() RecentModelFactory::RecentModelFactory()
: BrowserContextKeyedServiceFactory( : BrowserContextKeyedServiceFactory(
"RecentModel", "RecentModel",
......
...@@ -22,11 +22,6 @@ class RecentModelFactory : public BrowserContextKeyedServiceFactory { ...@@ -22,11 +22,6 @@ class RecentModelFactory : public BrowserContextKeyedServiceFactory {
// Returns the RecentModel for |profile|, creating it if not created yet. // Returns the RecentModel for |profile|, creating it if not created yet.
static RecentModel* GetForProfile(Profile* profile); static RecentModel* GetForProfile(Profile* profile);
// Sets the RecentModel for |profile| for testing.
static RecentModel* SetForProfileAndUseForTest(
Profile* profile,
std::unique_ptr<RecentModel> model);
// Returns the singleton RecentModelFactory instance. // Returns the singleton RecentModelFactory instance.
static RecentModelFactory* GetInstance(); static RecentModelFactory* GetInstance();
...@@ -42,8 +37,6 @@ class RecentModelFactory : public BrowserContextKeyedServiceFactory { ...@@ -42,8 +37,6 @@ class RecentModelFactory : public BrowserContextKeyedServiceFactory {
KeyedService* BuildServiceInstanceFor( KeyedService* BuildServiceInstanceFor(
content::BrowserContext* context) const override; content::BrowserContext* context) const override;
static RecentModel* model_for_test_;
DISALLOW_COPY_AND_ASSIGN(RecentModelFactory); DISALLOW_COPY_AND_ASSIGN(RecentModelFactory);
}; };
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <string> #include <string>
#include <utility> #include <utility>
#include "base/bind.h"
#include "base/files/file_path.h" #include "base/files/file_path.h"
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/test/metrics/histogram_tester.h" #include "base/test/metrics/histogram_tester.h"
...@@ -31,6 +32,21 @@ RecentFile MakeRecentFile(const std::string& name, ...@@ -31,6 +32,21 @@ RecentFile MakeRecentFile(const std::string& name,
return RecentFile(url, last_modified); return RecentFile(url, last_modified);
} }
std::vector<std::unique_ptr<RecentSource>> BuildDefaultSources() {
auto source1 = std::make_unique<FakeRecentSource>();
source1->AddFile(MakeRecentFile("aaa.jpg", base::Time::FromJavaTime(1000)));
source1->AddFile(MakeRecentFile("ccc.jpg", base::Time::FromJavaTime(3000)));
auto source2 = std::make_unique<FakeRecentSource>();
source2->AddFile(MakeRecentFile("bbb.jpg", base::Time::FromJavaTime(2000)));
source2->AddFile(MakeRecentFile("ddd.jpg", base::Time::FromJavaTime(4000)));
std::vector<std::unique_ptr<RecentSource>> sources;
sources.emplace_back(std::move(source1));
sources.emplace_back(std::move(source2));
return sources;
}
} // namespace } // namespace
class RecentModelTest : public testing::Test { class RecentModelTest : public testing::Test {
...@@ -38,27 +54,23 @@ class RecentModelTest : public testing::Test { ...@@ -38,27 +54,23 @@ class RecentModelTest : public testing::Test {
RecentModelTest() = default; RecentModelTest() = default;
protected: protected:
std::vector<std::unique_ptr<RecentSource>> BuildDefaultSources() { using RecentSourceList = std::vector<std::unique_ptr<RecentSource>>;
auto source1 = std::make_unique<FakeRecentSource>(); using RecentSourceListFactory = base::RepeatingCallback<RecentSourceList()>;
source1->AddFile(MakeRecentFile("aaa.jpg", base::Time::FromJavaTime(1000)));
source1->AddFile(MakeRecentFile("ccc.jpg", base::Time::FromJavaTime(3000)));
auto source2 = std::make_unique<FakeRecentSource>();
source2->AddFile(MakeRecentFile("bbb.jpg", base::Time::FromJavaTime(2000)));
source2->AddFile(MakeRecentFile("ddd.jpg", base::Time::FromJavaTime(4000)));
std::vector<std::unique_ptr<RecentSource>> sources;
sources.emplace_back(std::move(source1));
sources.emplace_back(std::move(source2));
return sources;
}
std::vector<RecentFile> BuildModelAndGetRecentFiles( std::vector<RecentFile> BuildModelAndGetRecentFiles(
std::vector<std::unique_ptr<RecentSource>> sources, RecentSourceListFactory source_list_factory,
size_t max_files, size_t max_files,
const base::Time& cutoff_time) { const base::Time& cutoff_time) {
RecentModel* model = RecentModelFactory::SetForProfileAndUseForTest( RecentModel* model = static_cast<RecentModel*>(
&profile_, RecentModel::CreateForTest(std::move(sources))); RecentModelFactory::GetInstance()->SetTestingFactoryAndUse(
&profile_,
base::BindRepeating(
[](const RecentSourceListFactory& source_list_factory,
content::BrowserContext* context)
-> std::unique_ptr<KeyedService> {
return RecentModel::CreateForTest(source_list_factory.Run());
},
std::move(source_list_factory))));
model->SetMaxFilesForTest(max_files); model->SetMaxFilesForTest(max_files);
model->SetForcedCutoffTimeForTest(cutoff_time); model->SetForcedCutoffTimeForTest(cutoff_time);
...@@ -87,8 +99,8 @@ class RecentModelTest : public testing::Test { ...@@ -87,8 +99,8 @@ class RecentModelTest : public testing::Test {
}; };
TEST_F(RecentModelTest, GetRecentFiles) { TEST_F(RecentModelTest, GetRecentFiles) {
std::vector<RecentFile> files = std::vector<RecentFile> files = BuildModelAndGetRecentFiles(
BuildModelAndGetRecentFiles(BuildDefaultSources(), 10, base::Time()); base::BindRepeating(&BuildDefaultSources), 10, base::Time());
ASSERT_EQ(4u, files.size()); ASSERT_EQ(4u, files.size());
EXPECT_EQ("ddd.jpg", files[0].url().path().value()); EXPECT_EQ("ddd.jpg", files[0].url().path().value());
...@@ -102,8 +114,8 @@ TEST_F(RecentModelTest, GetRecentFiles) { ...@@ -102,8 +114,8 @@ TEST_F(RecentModelTest, GetRecentFiles) {
} }
TEST_F(RecentModelTest, GetRecentFiles_MaxFiles) { TEST_F(RecentModelTest, GetRecentFiles_MaxFiles) {
std::vector<RecentFile> files = std::vector<RecentFile> files = BuildModelAndGetRecentFiles(
BuildModelAndGetRecentFiles(BuildDefaultSources(), 3, base::Time()); base::BindRepeating(&BuildDefaultSources), 3, base::Time());
ASSERT_EQ(3u, files.size()); ASSERT_EQ(3u, files.size());
EXPECT_EQ("ddd.jpg", files[0].url().path().value()); EXPECT_EQ("ddd.jpg", files[0].url().path().value());
...@@ -115,8 +127,9 @@ TEST_F(RecentModelTest, GetRecentFiles_MaxFiles) { ...@@ -115,8 +127,9 @@ TEST_F(RecentModelTest, GetRecentFiles_MaxFiles) {
} }
TEST_F(RecentModelTest, GetRecentFiles_CutoffTime) { TEST_F(RecentModelTest, GetRecentFiles_CutoffTime) {
std::vector<RecentFile> files = BuildModelAndGetRecentFiles( std::vector<RecentFile> files =
BuildDefaultSources(), 10, base::Time::FromJavaTime(2500)); BuildModelAndGetRecentFiles(base::BindRepeating(&BuildDefaultSources), 10,
base::Time::FromJavaTime(2500));
ASSERT_EQ(2u, files.size()); ASSERT_EQ(2u, files.size());
EXPECT_EQ("ddd.jpg", files[0].url().path().value()); EXPECT_EQ("ddd.jpg", files[0].url().path().value());
...@@ -128,7 +141,9 @@ TEST_F(RecentModelTest, GetRecentFiles_CutoffTime) { ...@@ -128,7 +141,9 @@ TEST_F(RecentModelTest, GetRecentFiles_CutoffTime) {
TEST_F(RecentModelTest, GetRecentFiles_UmaStats) { TEST_F(RecentModelTest, GetRecentFiles_UmaStats) {
base::HistogramTester histogram_tester; base::HistogramTester histogram_tester;
BuildModelAndGetRecentFiles({}, 10, base::Time()); BuildModelAndGetRecentFiles(
base::BindRepeating([]() { return RecentSourceList(); }), 10,
base::Time());
histogram_tester.ExpectTotalCount(RecentModel::kLoadHistogramName, 1); histogram_tester.ExpectTotalCount(RecentModel::kLoadHistogramName, 1);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment