diff options
Diffstat (limited to 'components')
18 files changed, 98 insertions, 104 deletions
diff --git a/components/bookmarks/browser/bookmark_client.cc b/components/bookmarks/browser/bookmark_client.cc index fc22f3a..9325015 100644 --- a/components/bookmarks/browser/bookmark_client.cc +++ b/components/bookmarks/browser/bookmark_client.cc @@ -8,6 +8,8 @@ namespace bookmarks { +void BookmarkClient::Init(BookmarkModel* model) {} + bool BookmarkClient::PreferTouchIcon() { return false; } diff --git a/components/bookmarks/browser/bookmark_client.h b/components/bookmarks/browser/bookmark_client.h index 3ea0269..5eb625f 100644 --- a/components/bookmarks/browser/bookmark_client.h +++ b/components/bookmarks/browser/bookmark_client.h @@ -24,12 +24,13 @@ struct UserMetricsAction; namespace bookmarks { +class BookmarkModel; class BookmarkNode; class BookmarkPermanentNode; // This class abstracts operations that depends on the embedder's environment, // e.g. Chrome. -class BookmarkClient : public KeyedService { +class BookmarkClient { public: // Types representing a set of BookmarkNode and a mapping from BookmarkNode // to the number of time the corresponding URL has been typed by the user in @@ -38,6 +39,11 @@ class BookmarkClient : public KeyedService { typedef std::pair<const BookmarkNode*, int> NodeTypedCountPair; typedef std::vector<NodeTypedCountPair> NodeTypedCountPairs; + virtual ~BookmarkClient() {} + + // Called during initialization of BookmarkModel. + virtual void Init(BookmarkModel* model); + // Returns true if the embedder favors touch icons over favicons. virtual bool PreferTouchIcon(); @@ -55,7 +61,7 @@ class BookmarkClient : public KeyedService { const favicon_base::FaviconImageCallback& callback, base::CancelableTaskTracker* tracker); - // Returns true if the embedder supports typed count for URL. + // Returns true if the embedder supports typed count for URL. virtual bool SupportsTypedCountForNodes(); // Retrieves the number of time each BookmarkNode URL has been typed in @@ -87,9 +93,6 @@ class BookmarkClient : public KeyedService { // should give the client a means to temporarily disable those checks. // http://crbug.com/49598 virtual bool CanBeEditedByUser(const BookmarkNode* node) = 0; - - protected: - ~BookmarkClient() override {} }; } // namespace bookmarks diff --git a/components/bookmarks/browser/bookmark_codec_unittest.cc b/components/bookmarks/browser/bookmark_codec_unittest.cc index 26a2abf..51e4c18 100644 --- a/components/bookmarks/browser/bookmark_codec_unittest.cc +++ b/components/bookmarks/browser/bookmark_codec_unittest.cc @@ -88,20 +88,20 @@ class BookmarkCodecTest : public testing::Test { protected: // Helpers to create bookmark models with different data. BookmarkModel* CreateTestModel1() { - scoped_ptr<BookmarkModel> model(client_.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); const BookmarkNode* bookmark_bar = model->bookmark_bar_node(); model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url)); return model.release(); } BookmarkModel* CreateTestModel2() { - scoped_ptr<BookmarkModel> model(client_.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); const BookmarkNode* bookmark_bar = model->bookmark_bar_node(); model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url)); model->AddURL(bookmark_bar, 1, ASCIIToUTF16(kUrl2Title), GURL(kUrl2Url)); return model.release(); } BookmarkModel* CreateTestModel3() { - scoped_ptr<BookmarkModel> model(client_.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); const BookmarkNode* bookmark_bar = model->bookmark_bar_node(); model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url)); const BookmarkNode* folder1 = @@ -189,7 +189,7 @@ class BookmarkCodecTest : public testing::Test { EXPECT_EQ("", decoder.computed_checksum()); EXPECT_EQ("", decoder.stored_checksum()); - scoped_ptr<BookmarkModel> model(client_.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); EXPECT_TRUE(Decode(&decoder, model.get(), value)); *computed_checksum = decoder.computed_checksum(); @@ -227,8 +227,6 @@ class BookmarkCodecTest : public testing::Test { CheckIDs(model->other_node(), &assigned_ids); CheckIDs(model->mobile_node(), &assigned_ids); } - - TestBookmarkClient client_; }; TEST_F(BookmarkCodecTest, ChecksumEncodeDecodeTest) { @@ -329,7 +327,7 @@ TEST_F(BookmarkCodecTest, PersistIDsTest) { BookmarkCodec encoder; scoped_ptr<base::Value> model_value(encoder.Encode(model_to_encode.get())); - scoped_ptr<BookmarkModel> decoded_model(client_.CreateModel()); + scoped_ptr<BookmarkModel> decoded_model(TestBookmarkClient::CreateModel()); BookmarkCodec decoder; ASSERT_TRUE(Decode(&decoder, decoded_model.get(), *model_value.get())); ASSERT_NO_FATAL_FAILURE( @@ -350,7 +348,7 @@ TEST_F(BookmarkCodecTest, PersistIDsTest) { BookmarkCodec encoder2; scoped_ptr<base::Value> model_value2(encoder2.Encode(decoded_model.get())); - scoped_ptr<BookmarkModel> decoded_model2(client_.CreateModel()); + scoped_ptr<BookmarkModel> decoded_model2(TestBookmarkClient::CreateModel()); BookmarkCodec decoder2; ASSERT_TRUE(Decode(&decoder2, decoded_model2.get(), *model_value2.get())); ASSERT_NO_FATAL_FAILURE( @@ -365,7 +363,7 @@ TEST_F(BookmarkCodecTest, CanDecodeModelWithoutMobileBookmarks) { JSONFileValueDeserializer deserializer(test_file); scoped_ptr<base::Value> root = deserializer.Deserialize(NULL, NULL); - scoped_ptr<BookmarkModel> decoded_model(client_.CreateModel()); + scoped_ptr<BookmarkModel> decoded_model(TestBookmarkClient::CreateModel()); BookmarkCodec decoder; ASSERT_TRUE(Decode(&decoder, decoded_model.get(), *root.get())); ExpectIDsUnique(decoded_model.get()); @@ -451,7 +449,7 @@ TEST_F(BookmarkCodecTest, CanDecodeMetaInfoAsString) { JSONFileValueDeserializer deserializer(test_file); scoped_ptr<base::Value> root = deserializer.Deserialize(NULL, NULL); - scoped_ptr<BookmarkModel> model(client_.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); BookmarkCodec decoder; ASSERT_TRUE(Decode(&decoder, model.get(), *root.get())); diff --git a/components/bookmarks/browser/bookmark_expanded_state_tracker_unittest.cc b/components/bookmarks/browser/bookmark_expanded_state_tracker_unittest.cc index 56aa491..2b97a42 100644 --- a/components/bookmarks/browser/bookmark_expanded_state_tracker_unittest.cc +++ b/components/bookmarks/browser/bookmark_expanded_state_tracker_unittest.cc @@ -31,7 +31,6 @@ class BookmarkExpandedStateTrackerTest : public testing::Test { base::MessageLoop message_loop_; TestingPrefServiceSimple prefs_; - TestBookmarkClient client_; scoped_ptr<BookmarkModel> model_; DISALLOW_COPY_AND_ASSIGN(BookmarkExpandedStateTrackerTest); @@ -45,7 +44,7 @@ void BookmarkExpandedStateTrackerTest::SetUp() { prefs_.registry()->RegisterListPref(prefs::kBookmarkEditorExpandedNodes, new base::ListValue); prefs_.registry()->RegisterListPref(prefs::kManagedBookmarks); - model_.reset(new BookmarkModel(&client_)); + model_.reset(new BookmarkModel(make_scoped_ptr(new TestBookmarkClient()))); model_->Load(&prefs_, std::string(), base::FilePath(), base::ThreadTaskRunnerHandle::Get(), base::ThreadTaskRunnerHandle::Get()); diff --git a/components/bookmarks/browser/bookmark_index_unittest.cc b/components/bookmarks/browser/bookmark_index_unittest.cc index 514172d..8a365a4 100644 --- a/components/bookmarks/browser/bookmark_index_unittest.cc +++ b/components/bookmarks/browser/bookmark_index_unittest.cc @@ -57,7 +57,7 @@ class BookmarkClientMock : public TestBookmarkClient { class BookmarkIndexTest : public testing::Test { public: - BookmarkIndexTest() : model_(client_.CreateModel()) {} + BookmarkIndexTest() : model_(TestBookmarkClient::CreateModel()) {} typedef std::pair<std::string, std::string> TitleAndURL; @@ -137,7 +137,6 @@ class BookmarkIndexTest : public testing::Test { } protected: - TestBookmarkClient client_; scoped_ptr<BookmarkModel> model_; private: @@ -212,7 +211,7 @@ TEST_F(BookmarkIndexTest, GetBookmarksMatching) { ExpectMatches(data[i].query, query_parser::MatchingAlgorithm::DEFAULT, expected); - model_ = client_.CreateModel(); + model_ = TestBookmarkClient::CreateModel(); } } @@ -274,7 +273,7 @@ TEST_F(BookmarkIndexTest, GetBookmarksMatchingAlwaysPrefixSearch) { query_parser::MatchingAlgorithm::ALWAYS_PREFIX_SEARCH, expected); - model_ = client_.CreateModel(); + model_ = TestBookmarkClient::CreateModel(); } } @@ -323,7 +322,7 @@ TEST_F(BookmarkIndexTest, GetBookmarksMatchingWithURLs) { }; for (size_t i = 0; i < arraysize(data); ++i) { - model_ = client_.CreateModel(); + model_ = TestBookmarkClient::CreateModel(); std::vector<TitleAndURL> bookmarks; bookmarks.push_back(TitleAndURL(data[i].title, data[i].url)); AddBookmarks(bookmarks); @@ -361,7 +360,7 @@ TEST_F(BookmarkIndexTest, Normalization) { std::vector<BookmarkMatch> matches; model_->GetBookmarksMatching(UTF8ToUTF16(data[i].query), 10, &matches); EXPECT_EQ(1u, matches.size()); - model_ = client_.CreateModel(); + model_ = TestBookmarkClient::CreateModel(); } } @@ -398,7 +397,7 @@ TEST_F(BookmarkIndexTest, MatchPositionsTitles) { ExpectMatchPositions(matches[0].title_match_positions, expected_title_matches); - model_ = client_.CreateModel(); + model_ = TestBookmarkClient::CreateModel(); } } @@ -434,7 +433,7 @@ TEST_F(BookmarkIndexTest, MatchPositionsURLs) { }; for (size_t i = 0; i < arraysize(data); ++i) { - model_ = client_.CreateModel(); + model_ = TestBookmarkClient::CreateModel(); std::vector<TitleAndURL> bookmarks; TitleAndURL bookmark("123456", data[i].url); bookmarks.push_back(bookmark); @@ -527,8 +526,8 @@ TEST_F(BookmarkIndexTest, GetResultsSortedByTypedCount) { for (size_t i = 0; i < arraysize(data); ++i) typed_count_map.insert(std::make_pair(data[i].url, data[i].typed_count)); - BookmarkClientMock client(typed_count_map); - scoped_ptr<BookmarkModel> model = client.CreateModel(); + scoped_ptr<BookmarkModel> model = TestBookmarkClient::CreateModelWithClient( + make_scoped_ptr(new BookmarkClientMock(typed_count_map))); for (size_t i = 0; i < arraysize(data); ++i) // Populate the BookmarkIndex. diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmarks/browser/bookmark_model.cc index 3f9f459..3b50276 100644 --- a/components/bookmarks/browser/bookmark_model.cc +++ b/components/bookmarks/browser/bookmark_model.cc @@ -112,8 +112,8 @@ class EmptyUndoDelegate : public BookmarkUndoDelegate { // BookmarkModel -------------------------------------------------------------- -BookmarkModel::BookmarkModel(BookmarkClient* client) - : client_(client), +BookmarkModel::BookmarkModel(scoped_ptr<BookmarkClient> client) + : client_(std::move(client)), loaded_(false), root_(GURL()), bookmark_bar_node_(NULL), @@ -127,6 +127,7 @@ BookmarkModel::BookmarkModel(BookmarkClient* client) undo_delegate_(nullptr), empty_undo_delegate_(new EmptyUndoDelegate) { DCHECK(client_); + client_->Init(this); } BookmarkModel::~BookmarkModel() { @@ -862,7 +863,7 @@ void BookmarkModel::DoneLoading(scoped_ptr<BookmarkLoadDetails> details) { std::stable_sort(root_children.begin(), root_children.end(), - VisibilityComparator(client_)); + VisibilityComparator(client_.get())); for (size_t i = 0; i < root_children.size(); ++i) root_.Add(root_children[i], static_cast<int>(i)); @@ -1107,7 +1108,7 @@ scoped_ptr<BookmarkLoadDetails> BookmarkModel::CreateLoadDetails( other_node, mobile_node, client_->GetLoadExtraNodesCallback(), - new BookmarkIndex(client_, accept_languages), + new BookmarkIndex(client_.get(), accept_languages), next_node_id_)); } diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmarks/browser/bookmark_model.h index 2bae0d2..a5138f2 100644 --- a/components/bookmarks/browser/bookmark_model.h +++ b/components/bookmarks/browser/bookmark_model.h @@ -72,7 +72,7 @@ class BookmarkModel : public BookmarkUndoProvider, base::string16 title; }; - explicit BookmarkModel(BookmarkClient* client); + explicit BookmarkModel(scoped_ptr<BookmarkClient> client); ~BookmarkModel() override; // KeyedService: @@ -310,7 +310,7 @@ class BookmarkModel : public BookmarkUndoProvider, const GURL& icon_url); // Returns the client used by this BookmarkModel. - BookmarkClient* client() const { return client_; } + BookmarkClient* client() const { return client_.get(); } void SetUndoDelegate(BookmarkUndoDelegate* undo_delegate); @@ -421,7 +421,7 @@ class BookmarkModel : public BookmarkUndoProvider, BookmarkUndoDelegate* undo_delegate() const; - BookmarkClient* const client_; + scoped_ptr<BookmarkClient> client_; // Whether the initial set of data has been loaded. bool loaded_; diff --git a/components/bookmarks/browser/bookmark_model_unittest.cc b/components/bookmarks/browser/bookmark_model_unittest.cc index d9e724a..9067665 100644 --- a/components/bookmarks/browser/bookmark_model_unittest.cc +++ b/components/bookmarks/browser/bookmark_model_unittest.cc @@ -270,7 +270,7 @@ class BookmarkModelTest : public testing::Test, int64_t node_id; }; - BookmarkModelTest() : model_(client_.CreateModel()) { + BookmarkModelTest() : model_(TestBookmarkClient::CreateModel()) { model_->AddObserver(this); ClearCounts(); } @@ -423,13 +423,16 @@ class BookmarkModelTest : public testing::Test, int AllNodesRemovedObserverCount() const { return all_bookmarks_removed_; } BookmarkPermanentNode* ReloadModelWithExtraNode() { + model_->RemoveObserver(this); + BookmarkPermanentNode* extra_node = new BookmarkPermanentNode(100); BookmarkPermanentNodeList extra_nodes; extra_nodes.push_back(extra_node); - client_.SetExtraNodesToLoad(std::move(extra_nodes)); - model_->RemoveObserver(this); - model_ = client_.CreateModel(); + scoped_ptr<TestBookmarkClient> client(new TestBookmarkClient); + client->SetExtraNodesToLoad(std::move(extra_nodes)); + + model_ = TestBookmarkClient::CreateModelWithClient(std::move(client)); model_->AddObserver(this); ClearCounts(); @@ -440,7 +443,6 @@ class BookmarkModelTest : public testing::Test, } protected: - TestBookmarkClient client_; scoped_ptr<BookmarkModel> model_; ObserverDetails observer_details_; std::vector<NodeRemovalDetail> node_removal_details_; @@ -1231,10 +1233,9 @@ TEST(BookmarkModelTest2, CreateAndRestore) { { "a [ b ]", "" }, { "a b c [ d e [ f ] ]", "g h i [ j k [ l ] ]"}, }; - TestBookmarkClient client; scoped_ptr<BookmarkModel> model; for (size_t i = 0; i < arraysize(data); ++i) { - model = client.CreateModel(); + model = TestBookmarkClient::CreateModel(); TestNode bbn; PopulateNodeFromString(data[i].bbn_contents, &bbn); @@ -1260,7 +1261,7 @@ TEST(BookmarkModelTest2, CreateAndRestore) { class BookmarkModelFaviconTest : public testing::Test, public BookmarkModelObserver { public: - BookmarkModelFaviconTest() : model_(client_.CreateModel()) { + BookmarkModelFaviconTest() : model_(TestBookmarkClient::CreateModel()) { model_->AddObserver(this); } @@ -1325,7 +1326,6 @@ class BookmarkModelFaviconTest : public testing::Test, const std::set<GURL>& removed_urls) override { } - TestBookmarkClient client_; scoped_ptr<BookmarkModel> model_; std::vector<const BookmarkNode*> updated_nodes_; diff --git a/components/bookmarks/browser/bookmark_node_data_unittest.cc b/components/bookmarks/browser/bookmark_node_data_unittest.cc index b5f332c..fc457ce 100644 --- a/components/bookmarks/browser/bookmark_node_data_unittest.cc +++ b/components/bookmarks/browser/bookmark_node_data_unittest.cc @@ -29,7 +29,7 @@ class BookmarkNodeDataTest : public testing::Test { void SetUp() override { event_source_ = ui::PlatformEventSource::CreateDefault(); - model_ = client_.CreateModel(); + model_ = TestBookmarkClient::CreateModel(); test::WaitForBookmarkModelToLoad(model_.get()); bool success = profile_dir_.CreateUniqueTempDir(); ASSERT_TRUE(success); @@ -52,7 +52,6 @@ class BookmarkNodeDataTest : public testing::Test { private: base::ScopedTempDir profile_dir_; - TestBookmarkClient client_; scoped_ptr<BookmarkModel> model_; scoped_ptr<ui::PlatformEventSource> event_source_; base::MessageLoopForUI loop_; diff --git a/components/bookmarks/browser/bookmark_utils_unittest.cc b/components/bookmarks/browser/bookmark_utils_unittest.cc index 29225d4..d9b0186 100644 --- a/components/bookmarks/browser/bookmark_utils_unittest.cc +++ b/components/bookmarks/browser/bookmark_utils_unittest.cc @@ -78,8 +78,7 @@ class BookmarkUtilsTest : public testing::Test, }; TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesWordPhraseQuery) { - TestBookmarkClient client; - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); const BookmarkNode* node1 = model->AddURL(model->other_node(), 0, ASCIIToUTF16("foo bar"), @@ -136,8 +135,7 @@ TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesWordPhraseQuery) { // Check exact matching against a URL query. TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesUrl) { - TestBookmarkClient client; - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); const BookmarkNode* node1 = model->AddURL(model->other_node(), 0, ASCIIToUTF16("Google"), @@ -172,8 +170,7 @@ TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesUrl) { // Check exact matching against a title query. TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesTitle) { - TestBookmarkClient client; - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); const BookmarkNode* node1 = model->AddURL(model->other_node(), 0, ASCIIToUTF16("Google"), @@ -210,8 +207,7 @@ TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesTitle) { // Check matching against a query with multiple predicates. TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesConjunction) { - TestBookmarkClient client; - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); const BookmarkNode* node1 = model->AddURL(model->other_node(), 0, ASCIIToUTF16("Google"), @@ -262,8 +258,7 @@ TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesConjunction) { // Copy and paste is not yet supported on iOS. http://crbug.com/228147 #if !defined(OS_IOS) TEST_F(BookmarkUtilsTest, PasteBookmarkFromURL) { - TestBookmarkClient client; - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); const base::string16 url_text = ASCIIToUTF16("http://www.google.com/"); const BookmarkNode* new_folder = model->AddFolder( model->bookmark_bar_node(), 0, ASCIIToUTF16("New_Folder")); @@ -292,8 +287,7 @@ TEST_F(BookmarkUtilsTest, PasteBookmarkFromURL) { } TEST_F(BookmarkUtilsTest, CopyPaste) { - TestBookmarkClient client; - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); const BookmarkNode* node = model->AddURL(model->other_node(), 0, ASCIIToUTF16("foo bar"), @@ -321,8 +315,7 @@ TEST_F(BookmarkUtilsTest, CopyPaste) { // Test for updating title such that url and title pair are unique among the // children of parent. TEST_F(BookmarkUtilsTest, MakeTitleUnique) { - TestBookmarkClient client; - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); const base::string16 url_text = ASCIIToUTF16("http://www.google.com/"); const base::string16 title_text = ASCIIToUTF16("foobar"); const BookmarkNode* bookmark_bar_node = model->bookmark_bar_node(); @@ -355,8 +348,7 @@ TEST_F(BookmarkUtilsTest, MakeTitleUnique) { } TEST_F(BookmarkUtilsTest, CopyPasteMetaInfo) { - TestBookmarkClient client; - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); const BookmarkNode* node = model->AddURL(model->other_node(), 0, ASCIIToUTF16("foo bar"), @@ -398,8 +390,7 @@ TEST_F(BookmarkUtilsTest, CopyPasteMetaInfo) { #define MAYBE_CutToClipboard CutToClipboard #endif TEST_F(BookmarkUtilsTest, MAYBE_CutToClipboard) { - TestBookmarkClient client; - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); model->AddObserver(this); base::string16 title(ASCIIToUTF16("foo")); @@ -424,14 +415,15 @@ TEST_F(BookmarkUtilsTest, MAYBE_CutToClipboard) { } TEST_F(BookmarkUtilsTest, PasteNonEditableNodes) { - TestBookmarkClient client; // Load a model with an extra node that is not editable. + scoped_ptr<TestBookmarkClient> client(new TestBookmarkClient()); BookmarkPermanentNode* extra_node = new BookmarkPermanentNode(100); BookmarkPermanentNodeList extra_nodes; extra_nodes.push_back(extra_node); - client.SetExtraNodesToLoad(std::move(extra_nodes)); + client->SetExtraNodesToLoad(std::move(extra_nodes)); - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model( + TestBookmarkClient::CreateModelWithClient(std::move(client))); const BookmarkNode* node = model->AddURL(model->other_node(), 0, ASCIIToUTF16("foo bar"), @@ -446,15 +438,14 @@ TEST_F(BookmarkUtilsTest, PasteNonEditableNodes) { EXPECT_TRUE(CanPasteFromClipboard(model.get(), model->bookmark_bar_node())); // But it can't be pasted into a non-editable folder. - BookmarkClient* upcast = &client; + BookmarkClient* upcast = model->client(); EXPECT_FALSE(upcast->CanBeEditedByUser(extra_node)); EXPECT_FALSE(CanPasteFromClipboard(model.get(), extra_node)); } #endif // !defined(OS_IOS) TEST_F(BookmarkUtilsTest, GetParentForNewNodes) { - TestBookmarkClient client; - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); // This tests the case where selection contains one item and that item is a // folder. std::vector<const BookmarkNode*> nodes; @@ -495,8 +486,7 @@ TEST_F(BookmarkUtilsTest, GetParentForNewNodes) { // Verifies that meta info is copied when nodes are cloned. TEST_F(BookmarkUtilsTest, CloneMetaInfo) { - TestBookmarkClient client; - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); // Add a node containing meta info. const BookmarkNode* node = model->AddURL(model->other_node(), 0, @@ -529,8 +519,7 @@ TEST_F(BookmarkUtilsTest, CloneMetaInfo) { // Verifies that meta info fields in the non cloned set are not copied when // cloning a bookmark. TEST_F(BookmarkUtilsTest, CloneBookmarkResetsNonClonedKey) { - TestBookmarkClient client; - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); model->AddNonClonedKey("foo"); const BookmarkNode* parent = model->other_node(); const BookmarkNode* node = model->AddURL( @@ -555,8 +544,7 @@ TEST_F(BookmarkUtilsTest, CloneBookmarkResetsNonClonedKey) { // Verifies that meta info fields in the non cloned set are not copied when // cloning a folder. TEST_F(BookmarkUtilsTest, CloneFolderResetsNonClonedKey) { - TestBookmarkClient client; - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel()); model->AddNonClonedKey("foo"); const BookmarkNode* parent = model->other_node(); const BookmarkNode* node = model->AddFolder(parent, 0, ASCIIToUTF16("title")); @@ -578,14 +566,15 @@ TEST_F(BookmarkUtilsTest, CloneFolderResetsNonClonedKey) { } TEST_F(BookmarkUtilsTest, RemoveAllBookmarks) { - TestBookmarkClient client; // Load a model with an extra node that is not editable. + scoped_ptr<TestBookmarkClient> client(new TestBookmarkClient()); BookmarkPermanentNode* extra_node = new BookmarkPermanentNode(100); BookmarkPermanentNodeList extra_nodes; extra_nodes.push_back(extra_node); - client.SetExtraNodesToLoad(std::move(extra_nodes)); + client->SetExtraNodesToLoad(std::move(extra_nodes)); - scoped_ptr<BookmarkModel> model(client.CreateModel()); + scoped_ptr<BookmarkModel> model( + TestBookmarkClient::CreateModelWithClient(std::move(client))); EXPECT_TRUE(model->bookmark_bar_node()->empty()); EXPECT_TRUE(model->other_node()->empty()); EXPECT_TRUE(model->mobile_node()->empty()); diff --git a/components/bookmarks/managed/managed_bookmarks_tracker_unittest.cc b/components/bookmarks/managed/managed_bookmarks_tracker_unittest.cc index 3ce78c3..83f3bcd 100644 --- a/components/bookmarks/managed/managed_bookmarks_tracker_unittest.cc +++ b/components/bookmarks/managed/managed_bookmarks_tracker_unittest.cc @@ -63,9 +63,11 @@ class ManagedBookmarksTrackerTest : public testing::Test { BookmarkPermanentNodeList extra_nodes; extra_nodes.push_back(managed_node); - client_.SetExtraNodesToLoad(std::move(extra_nodes)); - model_.reset(new BookmarkModel(&client_)); + scoped_ptr<TestBookmarkClient> client(new TestBookmarkClient); + client->SetExtraNodesToLoad(std::move(extra_nodes)); + model_.reset(new BookmarkModel(std::move(client))); + model_->AddObserver(&observer_); EXPECT_CALL(observer_, BookmarkModelLoaded(model_.get(), _)); model_->Load(&prefs_, std::string(), base::FilePath(), @@ -74,8 +76,10 @@ class ManagedBookmarksTrackerTest : public testing::Test { test::WaitForBookmarkModelToLoad(model_.get()); Mock::VerifyAndClearExpectations(&observer_); - ASSERT_EQ(1u, client_.extra_nodes().size()); - managed_node_ = client_.extra_nodes()[0]; + TestBookmarkClient* client_ptr = + static_cast<TestBookmarkClient*>(model_->client()); + ASSERT_EQ(1u, client_ptr->extra_nodes().size()); + managed_node_ = client_ptr->extra_nodes()[0]; ASSERT_EQ(managed_node, managed_node_); managed_bookmarks_tracker_.reset(new ManagedBookmarksTracker( @@ -168,7 +172,6 @@ class ManagedBookmarksTrackerTest : public testing::Test { base::MessageLoop loop_; TestingPrefServiceSimple prefs_; - TestBookmarkClient client_; scoped_ptr<BookmarkModel> model_; MockBookmarkModelObserver observer_; BookmarkPermanentNode* managed_node_; diff --git a/components/bookmarks/test/test_bookmark_client.cc b/components/bookmarks/test/test_bookmark_client.cc index 89ca479..a4fddc2 100644 --- a/components/bookmarks/test/test_bookmark_client.cc +++ b/components/bookmarks/test/test_bookmark_client.cc @@ -20,8 +20,16 @@ TestBookmarkClient::TestBookmarkClient() {} TestBookmarkClient::~TestBookmarkClient() {} +// static scoped_ptr<BookmarkModel> TestBookmarkClient::CreateModel() { - scoped_ptr<BookmarkModel> bookmark_model(new BookmarkModel(this)); + return CreateModelWithClient(make_scoped_ptr(new TestBookmarkClient)); +} + +// static +scoped_ptr<BookmarkModel> TestBookmarkClient::CreateModelWithClient( + scoped_ptr<BookmarkClient> client) { + scoped_ptr<BookmarkModel> bookmark_model( + new BookmarkModel(std::move(client))); scoped_ptr<BookmarkLoadDetails> details = bookmark_model->CreateLoadDetails(std::string()); details->LoadExtraNodes(); diff --git a/components/bookmarks/test/test_bookmark_client.h b/components/bookmarks/test/test_bookmark_client.h index ef7b8db..a97019bc 100644 --- a/components/bookmarks/test/test_bookmark_client.h +++ b/components/bookmarks/test/test_bookmark_client.h @@ -20,9 +20,12 @@ class TestBookmarkClient : public BookmarkClient { TestBookmarkClient(); ~TestBookmarkClient() override; - // Create a BookmarkModel using this object as its client. The returned - // BookmarkModel* is owned by the caller. - scoped_ptr<BookmarkModel> CreateModel(); + // Returns a new BookmarkModel using a TestBookmarkClient. + static scoped_ptr<BookmarkModel> CreateModel(); + + // Returns a new BookmarkModel using |client|. + static scoped_ptr<BookmarkModel> CreateModelWithClient( + scoped_ptr<BookmarkClient> client); // Sets the list of extra nodes to be returned by the next call to // CreateModel() or GetLoadExtraNodesCallback(). diff --git a/components/offline_pages/offline_page_model_unittest.cc b/components/offline_pages/offline_page_model_unittest.cc index 0f5aeb7..253dc67 100644 --- a/components/offline_pages/offline_page_model_unittest.cc +++ b/components/offline_pages/offline_page_model_unittest.cc @@ -764,7 +764,6 @@ class OfflinePageModelBookmarkChangeTest : } private: - bookmarks::TestBookmarkClient bookmark_client_; scoped_ptr<bookmarks::BookmarkModel> bookmark_model_; bookmarks::BookmarkUndoProvider* bookmark_undo_provider_; const bookmarks::BookmarkNode* removed_bookmark_parent_; @@ -774,11 +773,10 @@ class OfflinePageModelBookmarkChangeTest : OfflinePageModelBookmarkChangeTest::OfflinePageModelBookmarkChangeTest() : OfflinePageModelTest(), - bookmark_model_(bookmark_client_.CreateModel()), + bookmark_model_(bookmarks::TestBookmarkClient::CreateModel()), bookmark_undo_provider_(nullptr), removed_bookmark_parent_(nullptr), - removed_bookmark_index_(-1) { -} + removed_bookmark_index_(-1) {} OfflinePageModelBookmarkChangeTest::~OfflinePageModelBookmarkChangeTest() { } diff --git a/components/omnibox/browser/bookmark_provider_unittest.cc b/components/omnibox/browser/bookmark_provider_unittest.cc index fbc7ad8d..fe33368 100644 --- a/components/omnibox/browser/bookmark_provider_unittest.cc +++ b/components/omnibox/browser/bookmark_provider_unittest.cc @@ -172,7 +172,6 @@ class BookmarkProviderTest : public testing::Test { void SetUp() override; base::MessageLoop message_loop_; - bookmarks::TestBookmarkClient bookmark_client_; scoped_ptr<MockAutocompleteProviderClient> provider_client_; scoped_ptr<BookmarkModel> model_; scoped_refptr<BookmarkProvider> provider_; @@ -183,7 +182,7 @@ class BookmarkProviderTest : public testing::Test { }; BookmarkProviderTest::BookmarkProviderTest() { - model_ = bookmark_client_.CreateModel(); + model_ = bookmarks::TestBookmarkClient::CreateModel(); } void BookmarkProviderTest::SetUp() { diff --git a/components/omnibox/browser/history_quick_provider_unittest.cc b/components/omnibox/browser/history_quick_provider_unittest.cc index 410004a..cec085b 100644 --- a/components/omnibox/browser/history_quick_provider_unittest.cc +++ b/components/omnibox/browser/history_quick_provider_unittest.cc @@ -201,7 +201,7 @@ class QuitTask : public history::HistoryDBTask { class FakeAutocompleteProviderClient : public MockAutocompleteProviderClient { public: FakeAutocompleteProviderClient() { - bookmark_model_ = bookmark_client_.CreateModel(); + bookmark_model_ = bookmarks::TestBookmarkClient::CreateModel(); set_template_url_service( make_scoped_ptr(new TemplateURLService(nullptr, 0))); } @@ -233,7 +233,6 @@ class FakeAutocompleteProviderClient : public MockAutocompleteProviderClient { } private: - bookmarks::TestBookmarkClient bookmark_client_; scoped_ptr<bookmarks::BookmarkModel> bookmark_model_; TestSchemeClassifier scheme_classifier_; SearchTermsData search_terms_data_; diff --git a/components/sync_bookmarks/bookmark_data_type_controller_unittest.cc b/components/sync_bookmarks/bookmark_data_type_controller_unittest.cc index 0082fe8..ba84fe4 100644 --- a/components/sync_bookmarks/bookmark_data_type_controller_unittest.cc +++ b/components/sync_bookmarks/bookmark_data_type_controller_unittest.cc @@ -71,7 +71,6 @@ class SyncBookmarkDataTypeControllerTest : public testing::Test, void SetUp() override { model_associator_ = new ModelAssociatorMock(); change_processor_ = new ChangeProcessorMock(); - bookmark_client_.reset(new bookmarks::TestBookmarkClient()); history_service_.reset(new HistoryMock()); profile_sync_factory_.reset( new SyncApiComponentFactoryMock(model_associator_, @@ -88,7 +87,8 @@ class SyncBookmarkDataTypeControllerTest : public testing::Test, }; void CreateBookmarkModel(BookmarkLoadPolicy bookmark_load_policy) { - bookmark_model_.reset(new BookmarkModel(bookmark_client_.get())); + bookmark_model_.reset(new BookmarkModel( + make_scoped_ptr(new bookmarks::TestBookmarkClient()))); if (bookmark_load_policy == LOAD_MODEL) { TestingPrefServiceSimple prefs; bookmark_model_->Load(&prefs, std::string(), base::FilePath(), @@ -136,7 +136,6 @@ class SyncBookmarkDataTypeControllerTest : public testing::Test, base::MessageLoop message_loop_; scoped_refptr<BookmarkDataTypeController> bookmark_dtc_; scoped_ptr<SyncApiComponentFactoryMock> profile_sync_factory_; - scoped_ptr<bookmarks::TestBookmarkClient> bookmark_client_; scoped_ptr<BookmarkModel> bookmark_model_; scoped_ptr<HistoryMock> history_service_; sync_driver::FakeSyncService service_; diff --git a/components/undo/bookmark_undo_service_test.cc b/components/undo/bookmark_undo_service_test.cc index ea3752e..3716845 100644 --- a/components/undo/bookmark_undo_service_test.cc +++ b/components/undo/bookmark_undo_service_test.cc @@ -30,7 +30,6 @@ class BookmarkUndoServiceTest : public testing::Test { BookmarkUndoService* GetUndoService(); private: - scoped_ptr<bookmarks::TestBookmarkClient> test_bookmark_client_; scoped_ptr<bookmarks::BookmarkModel> bookmark_model_; scoped_ptr<BookmarkUndoService> bookmark_undo_service_; @@ -40,11 +39,9 @@ class BookmarkUndoServiceTest : public testing::Test { BookmarkUndoServiceTest::BookmarkUndoServiceTest() {} void BookmarkUndoServiceTest::SetUp() { - DCHECK(!test_bookmark_client_); DCHECK(!bookmark_model_); DCHECK(!bookmark_undo_service_); - test_bookmark_client_.reset(new bookmarks::TestBookmarkClient); - bookmark_model_ = test_bookmark_client_->CreateModel(); + bookmark_model_ = bookmarks::TestBookmarkClient::CreateModel(); bookmark_undo_service_.reset(new BookmarkUndoService); bookmark_undo_service_->Start(bookmark_model_.get()); bookmarks::test::WaitForBookmarkModelToLoad(bookmark_model_.get()); @@ -62,10 +59,8 @@ void BookmarkUndoServiceTest::TearDown() { // Implement two-phase KeyedService shutdown for test KeyedServices. bookmark_undo_service_->Shutdown(); bookmark_model_->Shutdown(); - test_bookmark_client_->Shutdown(); bookmark_undo_service_.reset(); bookmark_model_.reset(); - test_bookmark_client_.reset(); } TEST_F(BookmarkUndoServiceTest, AddBookmark) { |