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 |