| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/bookmarks/managed/managed_bookmark_service.h" | 5 #include "components/bookmarks/managed/managed_bookmark_service.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 | 36 |
| 37 class ManagedBookmarkServiceTest : public testing::Test { | 37 class ManagedBookmarkServiceTest : public testing::Test { |
| 38 public: | 38 public: |
| 39 ManagedBookmarkServiceTest() : managed_(NULL), model_(NULL) {} | 39 ManagedBookmarkServiceTest() : managed_(NULL), model_(NULL) {} |
| 40 ~ManagedBookmarkServiceTest() override {} | 40 ~ManagedBookmarkServiceTest() override {} |
| 41 | 41 |
| 42 void SetUp() override { | 42 void SetUp() override { |
| 43 prefs_ = profile_.GetTestingPrefService(); | 43 prefs_ = profile_.GetTestingPrefService(); |
| 44 ASSERT_FALSE(prefs_->HasPrefPath(bookmarks::prefs::kManagedBookmarks)); | 44 ASSERT_FALSE(prefs_->HasPrefPath(bookmarks::prefs::kManagedBookmarks)); |
| 45 | 45 |
| 46 // TODO(crbug.com/697817): Convert SetManagedPrefs to take a unique_ptr. |
| 46 prefs_->SetManagedPref(bookmarks::prefs::kManagedBookmarks, | 47 prefs_->SetManagedPref(bookmarks::prefs::kManagedBookmarks, |
| 47 CreateTestTree()); | 48 CreateTestTree().release()); |
| 48 ResetModel(); | 49 ResetModel(); |
| 49 | 50 |
| 50 // The managed node always exists. | 51 // The managed node always exists. |
| 51 ASSERT_TRUE(managed_->managed_node()); | 52 ASSERT_TRUE(managed_->managed_node()); |
| 52 ASSERT_TRUE(managed_->managed_node()->parent() == model_->root_node()); | 53 ASSERT_TRUE(managed_->managed_node()->parent() == model_->root_node()); |
| 53 EXPECT_NE(-1, model_->root_node()->GetIndexOf(managed_->managed_node())); | 54 EXPECT_NE(-1, model_->root_node()->GetIndexOf(managed_->managed_node())); |
| 54 } | 55 } |
| 55 | 56 |
| 56 void TearDown() override { model_->RemoveObserver(&observer_); } | 57 void TearDown() override { model_->RemoveObserver(&observer_); } |
| 57 | 58 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 69 const std::string& url) { | 70 const std::string& url) { |
| 70 EXPECT_TRUE(GURL(url).is_valid()); | 71 EXPECT_TRUE(GURL(url).is_valid()); |
| 71 auto dict = base::MakeUnique<base::DictionaryValue>(); | 72 auto dict = base::MakeUnique<base::DictionaryValue>(); |
| 72 dict->SetString("name", title); | 73 dict->SetString("name", title); |
| 73 dict->SetString("url", GURL(url).spec()); | 74 dict->SetString("url", GURL(url).spec()); |
| 74 return dict; | 75 return dict; |
| 75 } | 76 } |
| 76 | 77 |
| 77 static std::unique_ptr<base::DictionaryValue> CreateFolder( | 78 static std::unique_ptr<base::DictionaryValue> CreateFolder( |
| 78 const std::string& title, | 79 const std::string& title, |
| 79 base::ListValue* children) { | 80 std::unique_ptr<base::ListValue> children) { |
| 80 auto dict = base::MakeUnique<base::DictionaryValue>(); | 81 auto dict = base::MakeUnique<base::DictionaryValue>(); |
| 81 dict->SetString("name", title); | 82 dict->SetString("name", title); |
| 82 dict->Set("children", children); | 83 dict->Set("children", std::move(children)); |
| 83 return dict; | 84 return dict; |
| 84 } | 85 } |
| 85 | 86 |
| 86 static base::ListValue* CreateTestTree() { | 87 static std::unique_ptr<base::ListValue> CreateTestTree() { |
| 87 base::ListValue* folder = new base::ListValue(); | 88 auto folder = base::MakeUnique<base::ListValue>(); |
| 88 base::ListValue* empty = new base::ListValue(); | 89 folder->Append(CreateFolder("Empty", base::MakeUnique<base::ListValue>())); |
| 89 folder->Append(CreateFolder("Empty", empty)); | |
| 90 folder->Append(CreateBookmark("Youtube", "http://youtube.com/")); | 90 folder->Append(CreateBookmark("Youtube", "http://youtube.com/")); |
| 91 | 91 |
| 92 base::ListValue* list = new base::ListValue(); | 92 auto list = base::MakeUnique<base::ListValue>(); |
| 93 list->Append(CreateBookmark("Google", "http://google.com/")); | 93 list->Append(CreateBookmark("Google", "http://google.com/")); |
| 94 list->Append(CreateFolder("Folder", folder)); | 94 list->Append(CreateFolder("Folder", std::move(folder))); |
| 95 | 95 |
| 96 return list; | 96 return list; |
| 97 } | 97 } |
| 98 | 98 |
| 99 static std::unique_ptr<base::DictionaryValue> CreateExpectedTree() { | 99 static std::unique_ptr<base::DictionaryValue> CreateExpectedTree() { |
| 100 return CreateFolder(GetManagedFolderTitle(), CreateTestTree()); | 100 return CreateFolder(GetManagedFolderTitle(), CreateTestTree()); |
| 101 } | 101 } |
| 102 | 102 |
| 103 static std::string GetManagedFolderTitle() { | 103 static std::string GetManagedFolderTitle() { |
| 104 return l10n_util::GetStringUTF8( | 104 return l10n_util::GetStringUTF8( |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 | 176 |
| 177 // These two nodes should just be swapped. | 177 // These two nodes should just be swapped. |
| 178 const BookmarkNode* parent = managed_->managed_node(); | 178 const BookmarkNode* parent = managed_->managed_node(); |
| 179 EXPECT_CALL(observer_, BookmarkNodeMoved(model_, parent, 1, parent, 0)); | 179 EXPECT_CALL(observer_, BookmarkNodeMoved(model_, parent, 1, parent, 0)); |
| 180 prefs_->SetManagedPref(bookmarks::prefs::kManagedBookmarks, | 180 prefs_->SetManagedPref(bookmarks::prefs::kManagedBookmarks, |
| 181 updated->DeepCopy()); | 181 updated->DeepCopy()); |
| 182 Mock::VerifyAndClearExpectations(&observer_); | 182 Mock::VerifyAndClearExpectations(&observer_); |
| 183 | 183 |
| 184 // Verify the final tree. | 184 // Verify the final tree. |
| 185 std::unique_ptr<base::DictionaryValue> expected( | 185 std::unique_ptr<base::DictionaryValue> expected( |
| 186 CreateFolder(GetManagedFolderTitle(), updated.release())); | 186 CreateFolder(GetManagedFolderTitle(), std::move(updated))); |
| 187 EXPECT_TRUE(NodeMatchesValue(managed_->managed_node(), expected.get())); | 187 EXPECT_TRUE(NodeMatchesValue(managed_->managed_node(), expected.get())); |
| 188 } | 188 } |
| 189 | 189 |
| 190 TEST_F(ManagedBookmarkServiceTest, RemoveNode) { | 190 TEST_F(ManagedBookmarkServiceTest, RemoveNode) { |
| 191 // Remove the Folder. | 191 // Remove the Folder. |
| 192 std::unique_ptr<base::ListValue> updated(CreateTestTree()); | 192 std::unique_ptr<base::ListValue> updated(CreateTestTree()); |
| 193 ASSERT_TRUE(updated->Remove(1, NULL)); | 193 ASSERT_TRUE(updated->Remove(1, NULL)); |
| 194 | 194 |
| 195 const BookmarkNode* parent = managed_->managed_node(); | 195 const BookmarkNode* parent = managed_->managed_node(); |
| 196 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_, parent, 1, _, _)); | 196 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_, parent, 1, _, _)); |
| 197 prefs_->SetManagedPref(bookmarks::prefs::kManagedBookmarks, | 197 prefs_->SetManagedPref(bookmarks::prefs::kManagedBookmarks, |
| 198 updated->DeepCopy()); | 198 updated->DeepCopy()); |
| 199 Mock::VerifyAndClearExpectations(&observer_); | 199 Mock::VerifyAndClearExpectations(&observer_); |
| 200 | 200 |
| 201 // Verify the final tree. | 201 // Verify the final tree. |
| 202 std::unique_ptr<base::DictionaryValue> expected( | 202 std::unique_ptr<base::DictionaryValue> expected( |
| 203 CreateFolder(GetManagedFolderTitle(), updated.release())); | 203 CreateFolder(GetManagedFolderTitle(), std::move(updated))); |
| 204 EXPECT_TRUE(NodeMatchesValue(managed_->managed_node(), expected.get())); | 204 EXPECT_TRUE(NodeMatchesValue(managed_->managed_node(), expected.get())); |
| 205 } | 205 } |
| 206 | 206 |
| 207 TEST_F(ManagedBookmarkServiceTest, CreateNewNodes) { | 207 TEST_F(ManagedBookmarkServiceTest, CreateNewNodes) { |
| 208 // Put all the nodes inside another folder. | 208 // Put all the nodes inside another folder. |
| 209 std::unique_ptr<base::ListValue> updated(new base::ListValue); | 209 std::unique_ptr<base::ListValue> updated(new base::ListValue); |
| 210 updated->Append(CreateFolder("Container", CreateTestTree())); | 210 updated->Append(CreateFolder("Container", CreateTestTree())); |
| 211 | 211 |
| 212 EXPECT_CALL(observer_, BookmarkNodeAdded(model_, _, _)).Times(5); | 212 EXPECT_CALL(observer_, BookmarkNodeAdded(model_, _, _)).Times(5); |
| 213 // The remaining nodes have been pushed to positions 1 and 2; they'll both be | 213 // The remaining nodes have been pushed to positions 1 and 2; they'll both be |
| 214 // removed when at position 1. | 214 // removed when at position 1. |
| 215 const BookmarkNode* parent = managed_->managed_node(); | 215 const BookmarkNode* parent = managed_->managed_node(); |
| 216 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_, parent, 1, _, _)).Times(2); | 216 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_, parent, 1, _, _)).Times(2); |
| 217 prefs_->SetManagedPref(bookmarks::prefs::kManagedBookmarks, | 217 prefs_->SetManagedPref(bookmarks::prefs::kManagedBookmarks, |
| 218 updated->DeepCopy()); | 218 updated->DeepCopy()); |
| 219 Mock::VerifyAndClearExpectations(&observer_); | 219 Mock::VerifyAndClearExpectations(&observer_); |
| 220 | 220 |
| 221 // Verify the final tree. | 221 // Verify the final tree. |
| 222 std::unique_ptr<base::DictionaryValue> expected( | 222 std::unique_ptr<base::DictionaryValue> expected( |
| 223 CreateFolder(GetManagedFolderTitle(), updated.release())); | 223 CreateFolder(GetManagedFolderTitle(), std::move(updated))); |
| 224 EXPECT_TRUE(NodeMatchesValue(managed_->managed_node(), expected.get())); | 224 EXPECT_TRUE(NodeMatchesValue(managed_->managed_node(), expected.get())); |
| 225 } | 225 } |
| 226 | 226 |
| 227 TEST_F(ManagedBookmarkServiceTest, RemoveAllUserBookmarks) { | 227 TEST_F(ManagedBookmarkServiceTest, RemoveAllUserBookmarks) { |
| 228 // Remove the policy. | 228 // Remove the policy. |
| 229 const BookmarkNode* parent = managed_->managed_node(); | 229 const BookmarkNode* parent = managed_->managed_node(); |
| 230 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_, parent, 0, _, _)).Times(2); | 230 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_, parent, 0, _, _)).Times(2); |
| 231 prefs_->RemoveManagedPref(bookmarks::prefs::kManagedBookmarks); | 231 prefs_->RemoveManagedPref(bookmarks::prefs::kManagedBookmarks); |
| 232 Mock::VerifyAndClearExpectations(&observer_); | 232 Mock::VerifyAndClearExpectations(&observer_); |
| 233 | 233 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 const BookmarkNode* managed_node = managed_->managed_node()->GetChild(0); | 290 const BookmarkNode* managed_node = managed_->managed_node()->GetChild(0); |
| 291 ASSERT_TRUE(managed_node); | 291 ASSERT_TRUE(managed_node); |
| 292 | 292 |
| 293 std::vector<const BookmarkNode*> nodes; | 293 std::vector<const BookmarkNode*> nodes; |
| 294 EXPECT_FALSE(bookmarks::HasDescendantsOf(nodes, managed_->managed_node())); | 294 EXPECT_FALSE(bookmarks::HasDescendantsOf(nodes, managed_->managed_node())); |
| 295 nodes.push_back(user_node); | 295 nodes.push_back(user_node); |
| 296 EXPECT_FALSE(bookmarks::HasDescendantsOf(nodes, managed_->managed_node())); | 296 EXPECT_FALSE(bookmarks::HasDescendantsOf(nodes, managed_->managed_node())); |
| 297 nodes.push_back(managed_node); | 297 nodes.push_back(managed_node); |
| 298 EXPECT_TRUE(bookmarks::HasDescendantsOf(nodes, managed_->managed_node())); | 298 EXPECT_TRUE(bookmarks::HasDescendantsOf(nodes, managed_->managed_node())); |
| 299 } | 299 } |
| OLD | NEW |