| 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/policy/core/browser/managed_bookmarks_tracker.h" | 5 #include "components/policy/core/browser/managed_bookmarks_tracker.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 using testing::_; | 28 using testing::_; |
| 29 | 29 |
| 30 namespace policy { | 30 namespace policy { |
| 31 | 31 |
| 32 class ManagedBookmarksTrackerTest : public testing::Test { | 32 class ManagedBookmarksTrackerTest : public testing::Test { |
| 33 public: | 33 public: |
| 34 ManagedBookmarksTrackerTest() : managed_node_(NULL) {} | 34 ManagedBookmarksTrackerTest() : managed_node_(NULL) {} |
| 35 virtual ~ManagedBookmarksTrackerTest() {} | 35 virtual ~ManagedBookmarksTrackerTest() {} |
| 36 | 36 |
| 37 virtual void SetUp() OVERRIDE { | 37 virtual void SetUp() OVERRIDE { |
| 38 prefs_.registry()->RegisterListPref(prefs::kManagedBookmarks); | 38 prefs_.registry()->RegisterListPref(bookmarks::prefs::kManagedBookmarks); |
| 39 prefs_.registry()->RegisterListPref(prefs::kBookmarkEditorExpandedNodes); | 39 prefs_.registry()->RegisterListPref( |
| 40 bookmarks::prefs::kBookmarkEditorExpandedNodes); |
| 40 } | 41 } |
| 41 | 42 |
| 42 virtual void TearDown() OVERRIDE { | 43 virtual void TearDown() OVERRIDE { |
| 43 if (model_) | 44 if (model_) |
| 44 model_->RemoveObserver(&observer_); | 45 model_->RemoveObserver(&observer_); |
| 45 } | 46 } |
| 46 | 47 |
| 47 void CreateModel() { | 48 void CreateModel() { |
| 48 // Simulate the creation of the managed node by the BookmarkClient. | 49 // Simulate the creation of the managed node by the BookmarkClient. |
| 49 BookmarkPermanentNode* managed_node = new BookmarkPermanentNode(100); | 50 BookmarkPermanentNode* managed_node = new BookmarkPermanentNode(100); |
| 50 policy::ManagedBookmarksTracker::LoadInitial( | 51 policy::ManagedBookmarksTracker::LoadInitial( |
| 51 managed_node, prefs_.GetList(prefs::kManagedBookmarks), 101); | 52 managed_node, prefs_.GetList(bookmarks::prefs::kManagedBookmarks), 101); |
| 52 managed_node->set_visible(!managed_node->empty()); | 53 managed_node->set_visible(!managed_node->empty()); |
| 53 managed_node->SetTitle(l10n_util::GetStringUTF16( | 54 managed_node->SetTitle(l10n_util::GetStringUTF16( |
| 54 IDS_BOOKMARK_BAR_MANAGED_FOLDER_DEFAULT_NAME)); | 55 IDS_BOOKMARK_BAR_MANAGED_FOLDER_DEFAULT_NAME)); |
| 55 | 56 |
| 56 bookmarks::BookmarkPermanentNodeList extra_nodes; | 57 bookmarks::BookmarkPermanentNodeList extra_nodes; |
| 57 extra_nodes.push_back(managed_node); | 58 extra_nodes.push_back(managed_node); |
| 58 client_.SetExtraNodesToLoad(extra_nodes.Pass()); | 59 client_.SetExtraNodesToLoad(extra_nodes.Pass()); |
| 59 | 60 |
| 60 model_.reset(new BookmarkModel(&client_)); | 61 model_.reset(new BookmarkModel(&client_)); |
| 61 model_->AddObserver(&observer_); | 62 model_->AddObserver(&observer_); |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 TEST_F(ManagedBookmarksTrackerTest, Empty) { | 172 TEST_F(ManagedBookmarksTrackerTest, Empty) { |
| 172 CreateModel(); | 173 CreateModel(); |
| 173 EXPECT_TRUE(model_->bookmark_bar_node()->empty()); | 174 EXPECT_TRUE(model_->bookmark_bar_node()->empty()); |
| 174 EXPECT_TRUE(model_->other_node()->empty()); | 175 EXPECT_TRUE(model_->other_node()->empty()); |
| 175 EXPECT_TRUE(managed_node()->empty()); | 176 EXPECT_TRUE(managed_node()->empty()); |
| 176 EXPECT_FALSE(managed_node()->IsVisible()); | 177 EXPECT_FALSE(managed_node()->IsVisible()); |
| 177 } | 178 } |
| 178 | 179 |
| 179 TEST_F(ManagedBookmarksTrackerTest, LoadInitial) { | 180 TEST_F(ManagedBookmarksTrackerTest, LoadInitial) { |
| 180 // Set a policy before loading the model. | 181 // Set a policy before loading the model. |
| 181 prefs_.SetManagedPref(prefs::kManagedBookmarks, CreateTestTree()); | 182 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree()); |
| 182 CreateModel(); | 183 CreateModel(); |
| 183 EXPECT_TRUE(model_->bookmark_bar_node()->empty()); | 184 EXPECT_TRUE(model_->bookmark_bar_node()->empty()); |
| 184 EXPECT_TRUE(model_->other_node()->empty()); | 185 EXPECT_TRUE(model_->other_node()->empty()); |
| 185 EXPECT_FALSE(managed_node()->empty()); | 186 EXPECT_FALSE(managed_node()->empty()); |
| 186 EXPECT_TRUE(managed_node()->IsVisible()); | 187 EXPECT_TRUE(managed_node()->IsVisible()); |
| 187 | 188 |
| 188 scoped_ptr<base::DictionaryValue> expected(CreateExpectedTree()); | 189 scoped_ptr<base::DictionaryValue> expected(CreateExpectedTree()); |
| 189 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get())); | 190 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get())); |
| 190 } | 191 } |
| 191 | 192 |
| 192 TEST_F(ManagedBookmarksTrackerTest, SwapNodes) { | 193 TEST_F(ManagedBookmarksTrackerTest, SwapNodes) { |
| 193 prefs_.SetManagedPref(prefs::kManagedBookmarks, CreateTestTree()); | 194 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree()); |
| 194 CreateModel(); | 195 CreateModel(); |
| 195 | 196 |
| 196 // Swap the Google bookmark with the Folder. | 197 // Swap the Google bookmark with the Folder. |
| 197 scoped_ptr<base::ListValue> updated(CreateTestTree()); | 198 scoped_ptr<base::ListValue> updated(CreateTestTree()); |
| 198 scoped_ptr<base::Value> removed; | 199 scoped_ptr<base::Value> removed; |
| 199 ASSERT_TRUE(updated->Remove(0, &removed)); | 200 ASSERT_TRUE(updated->Remove(0, &removed)); |
| 200 updated->Append(removed.release()); | 201 updated->Append(removed.release()); |
| 201 | 202 |
| 202 // These two nodes should just be swapped. | 203 // These two nodes should just be swapped. |
| 203 const BookmarkNode* parent = managed_node(); | 204 const BookmarkNode* parent = managed_node(); |
| 204 EXPECT_CALL(observer_, BookmarkNodeMoved(model_.get(), parent, 1, parent, 0)); | 205 EXPECT_CALL(observer_, BookmarkNodeMoved(model_.get(), parent, 1, parent, 0)); |
| 205 prefs_.SetManagedPref(prefs::kManagedBookmarks, updated->DeepCopy()); | 206 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, |
| 207 updated->DeepCopy()); |
| 206 Mock::VerifyAndClearExpectations(&observer_); | 208 Mock::VerifyAndClearExpectations(&observer_); |
| 207 | 209 |
| 208 // Verify the final tree. | 210 // Verify the final tree. |
| 209 scoped_ptr<base::DictionaryValue> expected( | 211 scoped_ptr<base::DictionaryValue> expected( |
| 210 CreateFolder(GetManagedFolderTitle(), updated.release())); | 212 CreateFolder(GetManagedFolderTitle(), updated.release())); |
| 211 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get())); | 213 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get())); |
| 212 } | 214 } |
| 213 | 215 |
| 214 TEST_F(ManagedBookmarksTrackerTest, RemoveNode) { | 216 TEST_F(ManagedBookmarksTrackerTest, RemoveNode) { |
| 215 prefs_.SetManagedPref(prefs::kManagedBookmarks, CreateTestTree()); | 217 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree()); |
| 216 CreateModel(); | 218 CreateModel(); |
| 217 | 219 |
| 218 // Remove the Folder. | 220 // Remove the Folder. |
| 219 scoped_ptr<base::ListValue> updated(CreateTestTree()); | 221 scoped_ptr<base::ListValue> updated(CreateTestTree()); |
| 220 ASSERT_TRUE(updated->Remove(1, NULL)); | 222 ASSERT_TRUE(updated->Remove(1, NULL)); |
| 221 | 223 |
| 222 const BookmarkNode* parent = managed_node(); | 224 const BookmarkNode* parent = managed_node(); |
| 223 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_.get(), parent, 1, _, _)); | 225 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_.get(), parent, 1, _, _)); |
| 224 prefs_.SetManagedPref(prefs::kManagedBookmarks, updated->DeepCopy()); | 226 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, |
| 227 updated->DeepCopy()); |
| 225 Mock::VerifyAndClearExpectations(&observer_); | 228 Mock::VerifyAndClearExpectations(&observer_); |
| 226 | 229 |
| 227 // Verify the final tree. | 230 // Verify the final tree. |
| 228 scoped_ptr<base::DictionaryValue> expected( | 231 scoped_ptr<base::DictionaryValue> expected( |
| 229 CreateFolder(GetManagedFolderTitle(), updated.release())); | 232 CreateFolder(GetManagedFolderTitle(), updated.release())); |
| 230 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get())); | 233 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get())); |
| 231 } | 234 } |
| 232 | 235 |
| 233 TEST_F(ManagedBookmarksTrackerTest, CreateNewNodes) { | 236 TEST_F(ManagedBookmarksTrackerTest, CreateNewNodes) { |
| 234 prefs_.SetManagedPref(prefs::kManagedBookmarks, CreateTestTree()); | 237 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree()); |
| 235 CreateModel(); | 238 CreateModel(); |
| 236 | 239 |
| 237 // Put all the nodes inside another folder. | 240 // Put all the nodes inside another folder. |
| 238 scoped_ptr<base::ListValue> updated(new base::ListValue); | 241 scoped_ptr<base::ListValue> updated(new base::ListValue); |
| 239 updated->Append(CreateFolder("Container", CreateTestTree())); | 242 updated->Append(CreateFolder("Container", CreateTestTree())); |
| 240 | 243 |
| 241 EXPECT_CALL(observer_, BookmarkNodeAdded(model_.get(), _, _)).Times(5); | 244 EXPECT_CALL(observer_, BookmarkNodeAdded(model_.get(), _, _)).Times(5); |
| 242 // The remaining nodes have been pushed to positions 1 and 2; they'll both be | 245 // The remaining nodes have been pushed to positions 1 and 2; they'll both be |
| 243 // removed when at position 1. | 246 // removed when at position 1. |
| 244 const BookmarkNode* parent = managed_node(); | 247 const BookmarkNode* parent = managed_node(); |
| 245 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_.get(), parent, 1, _, _)) | 248 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_.get(), parent, 1, _, _)) |
| 246 .Times(2); | 249 .Times(2); |
| 247 prefs_.SetManagedPref(prefs::kManagedBookmarks, updated->DeepCopy()); | 250 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, |
| 251 updated->DeepCopy()); |
| 248 Mock::VerifyAndClearExpectations(&observer_); | 252 Mock::VerifyAndClearExpectations(&observer_); |
| 249 | 253 |
| 250 // Verify the final tree. | 254 // Verify the final tree. |
| 251 scoped_ptr<base::DictionaryValue> expected( | 255 scoped_ptr<base::DictionaryValue> expected( |
| 252 CreateFolder(GetManagedFolderTitle(), updated.release())); | 256 CreateFolder(GetManagedFolderTitle(), updated.release())); |
| 253 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get())); | 257 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get())); |
| 254 } | 258 } |
| 255 | 259 |
| 256 TEST_F(ManagedBookmarksTrackerTest, RemoveAll) { | 260 TEST_F(ManagedBookmarksTrackerTest, RemoveAll) { |
| 257 prefs_.SetManagedPref(prefs::kManagedBookmarks, CreateTestTree()); | 261 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree()); |
| 258 CreateModel(); | 262 CreateModel(); |
| 259 EXPECT_TRUE(managed_node()->IsVisible()); | 263 EXPECT_TRUE(managed_node()->IsVisible()); |
| 260 | 264 |
| 261 // Remove the policy. | 265 // Remove the policy. |
| 262 const BookmarkNode* parent = managed_node(); | 266 const BookmarkNode* parent = managed_node(); |
| 263 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_.get(), parent, 0, _, _)) | 267 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_.get(), parent, 0, _, _)) |
| 264 .Times(2); | 268 .Times(2); |
| 265 prefs_.RemoveManagedPref(prefs::kManagedBookmarks); | 269 prefs_.RemoveManagedPref(bookmarks::prefs::kManagedBookmarks); |
| 266 Mock::VerifyAndClearExpectations(&observer_); | 270 Mock::VerifyAndClearExpectations(&observer_); |
| 267 | 271 |
| 268 EXPECT_TRUE(managed_node()->empty()); | 272 EXPECT_TRUE(managed_node()->empty()); |
| 269 EXPECT_FALSE(managed_node()->IsVisible()); | 273 EXPECT_FALSE(managed_node()->IsVisible()); |
| 270 } | 274 } |
| 271 | 275 |
| 272 TEST_F(ManagedBookmarksTrackerTest, IsManaged) { | 276 TEST_F(ManagedBookmarksTrackerTest, IsManaged) { |
| 273 prefs_.SetManagedPref(prefs::kManagedBookmarks, CreateTestTree()); | 277 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree()); |
| 274 CreateModel(); | 278 CreateModel(); |
| 275 | 279 |
| 276 EXPECT_FALSE(IsManaged(model_->root_node())); | 280 EXPECT_FALSE(IsManaged(model_->root_node())); |
| 277 EXPECT_FALSE(IsManaged(model_->bookmark_bar_node())); | 281 EXPECT_FALSE(IsManaged(model_->bookmark_bar_node())); |
| 278 EXPECT_FALSE(IsManaged(model_->other_node())); | 282 EXPECT_FALSE(IsManaged(model_->other_node())); |
| 279 EXPECT_FALSE(IsManaged(model_->mobile_node())); | 283 EXPECT_FALSE(IsManaged(model_->mobile_node())); |
| 280 EXPECT_TRUE(IsManaged(managed_node())); | 284 EXPECT_TRUE(IsManaged(managed_node())); |
| 281 | 285 |
| 282 const BookmarkNode* parent = managed_node(); | 286 const BookmarkNode* parent = managed_node(); |
| 283 ASSERT_EQ(2, parent->child_count()); | 287 ASSERT_EQ(2, parent->child_count()); |
| 284 EXPECT_TRUE(IsManaged(parent->GetChild(0))); | 288 EXPECT_TRUE(IsManaged(parent->GetChild(0))); |
| 285 EXPECT_TRUE(IsManaged(parent->GetChild(1))); | 289 EXPECT_TRUE(IsManaged(parent->GetChild(1))); |
| 286 | 290 |
| 287 parent = parent->GetChild(1); | 291 parent = parent->GetChild(1); |
| 288 ASSERT_EQ(2, parent->child_count()); | 292 ASSERT_EQ(2, parent->child_count()); |
| 289 EXPECT_TRUE(IsManaged(parent->GetChild(0))); | 293 EXPECT_TRUE(IsManaged(parent->GetChild(0))); |
| 290 EXPECT_TRUE(IsManaged(parent->GetChild(1))); | 294 EXPECT_TRUE(IsManaged(parent->GetChild(1))); |
| 291 } | 295 } |
| 292 | 296 |
| 293 TEST_F(ManagedBookmarksTrackerTest, RemoveAllUserBookmarksDoesntRemoveManaged) { | 297 TEST_F(ManagedBookmarksTrackerTest, RemoveAllUserBookmarksDoesntRemoveManaged) { |
| 294 prefs_.SetManagedPref(prefs::kManagedBookmarks, CreateTestTree()); | 298 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree()); |
| 295 CreateModel(); | 299 CreateModel(); |
| 296 EXPECT_EQ(2, managed_node()->child_count()); | 300 EXPECT_EQ(2, managed_node()->child_count()); |
| 297 | 301 |
| 298 EXPECT_CALL(observer_, | 302 EXPECT_CALL(observer_, |
| 299 BookmarkNodeAdded(model_.get(), model_->bookmark_bar_node(), 0)); | 303 BookmarkNodeAdded(model_.get(), model_->bookmark_bar_node(), 0)); |
| 300 EXPECT_CALL(observer_, | 304 EXPECT_CALL(observer_, |
| 301 BookmarkNodeAdded(model_.get(), model_->bookmark_bar_node(), 1)); | 305 BookmarkNodeAdded(model_.get(), model_->bookmark_bar_node(), 1)); |
| 302 model_->AddURL(model_->bookmark_bar_node(), | 306 model_->AddURL(model_->bookmark_bar_node(), |
| 303 0, | 307 0, |
| 304 base::ASCIIToUTF16("Test"), | 308 base::ASCIIToUTF16("Test"), |
| 305 GURL("http://google.com/")); | 309 GURL("http://google.com/")); |
| 306 model_->AddFolder( | 310 model_->AddFolder( |
| 307 model_->bookmark_bar_node(), 1, base::ASCIIToUTF16("Test Folder")); | 311 model_->bookmark_bar_node(), 1, base::ASCIIToUTF16("Test Folder")); |
| 308 EXPECT_EQ(2, model_->bookmark_bar_node()->child_count()); | 312 EXPECT_EQ(2, model_->bookmark_bar_node()->child_count()); |
| 309 Mock::VerifyAndClearExpectations(&observer_); | 313 Mock::VerifyAndClearExpectations(&observer_); |
| 310 | 314 |
| 311 EXPECT_CALL(observer_, BookmarkAllUserNodesRemoved(model_.get(), _)); | 315 EXPECT_CALL(observer_, BookmarkAllUserNodesRemoved(model_.get(), _)); |
| 312 model_->RemoveAllUserBookmarks(); | 316 model_->RemoveAllUserBookmarks(); |
| 313 EXPECT_EQ(2, managed_node()->child_count()); | 317 EXPECT_EQ(2, managed_node()->child_count()); |
| 314 EXPECT_EQ(0, model_->bookmark_bar_node()->child_count()); | 318 EXPECT_EQ(0, model_->bookmark_bar_node()->child_count()); |
| 315 Mock::VerifyAndClearExpectations(&observer_); | 319 Mock::VerifyAndClearExpectations(&observer_); |
| 316 } | 320 } |
| 317 | 321 |
| 318 } // namespace policy | 322 } // namespace policy |
| OLD | NEW |