Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(294)

Side by Side Diff: components/policy/core/browser/managed_bookmarks_tracker_unittest.cc

Issue 769153007: Managed bookmarks for supervised users (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Android fix; rebase Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 19 matching lines...) Expand all
30 30
31 namespace policy { 31 namespace policy {
32 32
33 class ManagedBookmarksTrackerTest : public testing::Test { 33 class ManagedBookmarksTrackerTest : public testing::Test {
34 public: 34 public:
35 ManagedBookmarksTrackerTest() : managed_node_(NULL) {} 35 ManagedBookmarksTrackerTest() : managed_node_(NULL) {}
36 ~ManagedBookmarksTrackerTest() override {} 36 ~ManagedBookmarksTrackerTest() override {}
37 37
38 void SetUp() override { 38 void SetUp() override {
39 prefs_.registry()->RegisterListPref(bookmarks::prefs::kManagedBookmarks); 39 prefs_.registry()->RegisterListPref(bookmarks::prefs::kManagedBookmarks);
40 prefs_.registry()->RegisterListPref(bookmarks::prefs::kSupervisedBookmarks);
40 prefs_.registry()->RegisterListPref( 41 prefs_.registry()->RegisterListPref(
41 bookmarks::prefs::kBookmarkEditorExpandedNodes); 42 bookmarks::prefs::kBookmarkEditorExpandedNodes);
42 } 43 }
43 44
44 void TearDown() override { 45 void TearDown() override {
45 if (model_) 46 if (model_)
46 model_->RemoveObserver(&observer_); 47 model_->RemoveObserver(&observer_);
47 } 48 }
48 49
49 void CreateModel() { 50 void CreateModel(bool is_supervised) {
50 // Simulate the creation of the managed node by the BookmarkClient. 51 // Simulate the creation of the managed node by the BookmarkClient.
51 BookmarkPermanentNode* managed_node = new BookmarkPermanentNode(100); 52 BookmarkPermanentNode* managed_node = new BookmarkPermanentNode(100);
52 policy::ManagedBookmarksTracker::LoadInitial( 53 policy::ManagedBookmarksTracker::LoadInitial(
53 managed_node, prefs_.GetList(bookmarks::prefs::kManagedBookmarks), 101); 54 managed_node,
55 prefs_.GetList(ManagedBookmarksTracker::GetPrefName(is_supervised)),
56 101);
54 managed_node->set_visible(!managed_node->empty()); 57 managed_node->set_visible(!managed_node->empty());
55 managed_node->SetTitle(l10n_util::GetStringUTF16( 58 managed_node->SetTitle(l10n_util::GetStringUTF16(
56 IDS_BOOKMARK_BAR_MANAGED_FOLDER_DEFAULT_NAME)); 59 is_supervised ? IDS_BOOKMARK_BAR_SUPERVISED_FOLDER_DEFAULT_NAME
60 : IDS_BOOKMARK_BAR_MANAGED_FOLDER_DEFAULT_NAME));
57 61
58 bookmarks::BookmarkPermanentNodeList extra_nodes; 62 bookmarks::BookmarkPermanentNodeList extra_nodes;
59 extra_nodes.push_back(managed_node); 63 extra_nodes.push_back(managed_node);
60 client_.SetExtraNodesToLoad(extra_nodes.Pass()); 64 client_.SetExtraNodesToLoad(extra_nodes.Pass());
61 65
62 model_.reset(new BookmarkModel(&client_)); 66 model_.reset(new BookmarkModel(&client_));
63 model_->AddObserver(&observer_); 67 model_->AddObserver(&observer_);
64 EXPECT_CALL(observer_, BookmarkModelLoaded(model_.get(), _)); 68 EXPECT_CALL(observer_, BookmarkModelLoaded(model_.get(), _));
65 model_->Load(&prefs_, 69 model_->Load(&prefs_,
66 std::string(), 70 std::string(),
67 base::FilePath(), 71 base::FilePath(),
68 base::MessageLoopProxy::current(), 72 base::MessageLoopProxy::current(),
69 base::MessageLoopProxy::current()); 73 base::MessageLoopProxy::current());
70 bookmarks::test::WaitForBookmarkModelToLoad(model_.get()); 74 bookmarks::test::WaitForBookmarkModelToLoad(model_.get());
71 Mock::VerifyAndClearExpectations(&observer_); 75 Mock::VerifyAndClearExpectations(&observer_);
72 76
73 ASSERT_EQ(1u, client_.extra_nodes().size()); 77 ASSERT_EQ(1u, client_.extra_nodes().size());
74 managed_node_ = client_.extra_nodes()[0]; 78 managed_node_ = client_.extra_nodes()[0];
75 ASSERT_EQ(managed_node, managed_node_); 79 ASSERT_EQ(managed_node, managed_node_);
76 80
77 managed_bookmarks_tracker_.reset(new ManagedBookmarksTracker( 81 managed_bookmarks_tracker_.reset(new ManagedBookmarksTracker(
78 model_.get(), 82 model_.get(),
79 &prefs_, 83 &prefs_,
84 is_supervised,
80 base::Bind(&ManagedBookmarksTrackerTest::GetManagementDomain))); 85 base::Bind(&ManagedBookmarksTrackerTest::GetManagementDomain)));
81 managed_bookmarks_tracker_->Init(managed_node_); 86 managed_bookmarks_tracker_->Init(managed_node_);
82 } 87 }
83 88
84 const BookmarkNode* managed_node() { 89 const BookmarkNode* managed_node() {
85 return managed_node_; 90 return managed_node_;
86 } 91 }
87 92
88 bool IsManaged(const BookmarkNode* node) { 93 bool IsManaged(const BookmarkNode* node) {
89 return node && node->HasAncestor(managed_node_); 94 return node && node->HasAncestor(managed_node_);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 base::MessageLoop loop_; 169 base::MessageLoop loop_;
165 TestingPrefServiceSimple prefs_; 170 TestingPrefServiceSimple prefs_;
166 bookmarks::TestBookmarkClient client_; 171 bookmarks::TestBookmarkClient client_;
167 scoped_ptr<BookmarkModel> model_; 172 scoped_ptr<BookmarkModel> model_;
168 bookmarks::MockBookmarkModelObserver observer_; 173 bookmarks::MockBookmarkModelObserver observer_;
169 BookmarkPermanentNode* managed_node_; 174 BookmarkPermanentNode* managed_node_;
170 scoped_ptr<ManagedBookmarksTracker> managed_bookmarks_tracker_; 175 scoped_ptr<ManagedBookmarksTracker> managed_bookmarks_tracker_;
171 }; 176 };
172 177
173 TEST_F(ManagedBookmarksTrackerTest, Empty) { 178 TEST_F(ManagedBookmarksTrackerTest, Empty) {
174 CreateModel(); 179 CreateModel(false /* is_supervised */);
175 EXPECT_TRUE(model_->bookmark_bar_node()->empty()); 180 EXPECT_TRUE(model_->bookmark_bar_node()->empty());
176 EXPECT_TRUE(model_->other_node()->empty()); 181 EXPECT_TRUE(model_->other_node()->empty());
177 EXPECT_TRUE(managed_node()->empty()); 182 EXPECT_TRUE(managed_node()->empty());
178 EXPECT_FALSE(managed_node()->IsVisible()); 183 EXPECT_FALSE(managed_node()->IsVisible());
179 } 184 }
180 185
181 TEST_F(ManagedBookmarksTrackerTest, LoadInitial) { 186 TEST_F(ManagedBookmarksTrackerTest, LoadInitial) {
182 // Set a policy before loading the model. 187 // Set a policy before loading the model.
183 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree()); 188 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree());
184 CreateModel(); 189 CreateModel(false /* is_supervised */);
185 EXPECT_TRUE(model_->bookmark_bar_node()->empty()); 190 EXPECT_TRUE(model_->bookmark_bar_node()->empty());
186 EXPECT_TRUE(model_->other_node()->empty()); 191 EXPECT_TRUE(model_->other_node()->empty());
187 EXPECT_FALSE(managed_node()->empty()); 192 EXPECT_FALSE(managed_node()->empty());
188 EXPECT_TRUE(managed_node()->IsVisible()); 193 EXPECT_TRUE(managed_node()->IsVisible());
189 194
190 scoped_ptr<base::DictionaryValue> expected(CreateExpectedTree()); 195 scoped_ptr<base::DictionaryValue> expected(CreateExpectedTree());
191 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get())); 196 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get()));
192 } 197 }
193 198
199 TEST_F(ManagedBookmarksTrackerTest, SupervisedTrackerIgnoresManagedPref) {
200 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree());
201 CreateModel(true /* is_supervised */);
202 EXPECT_TRUE(managed_node()->empty());
203 EXPECT_FALSE(managed_node()->IsVisible());
204 }
205
206 TEST_F(ManagedBookmarksTrackerTest, SupervisedTrackerHandlesSupervisedPref) {
207 prefs_.SetManagedPref(bookmarks::prefs::kSupervisedBookmarks,
208 CreateTestTree());
209 CreateModel(true /* is_supervised */);
210 EXPECT_FALSE(managed_node()->empty());
211 EXPECT_TRUE(managed_node()->IsVisible());
212 // Don't bother checking the actual contents, the non-supervised tests cover
213 // that already.
214 }
215
194 TEST_F(ManagedBookmarksTrackerTest, SwapNodes) { 216 TEST_F(ManagedBookmarksTrackerTest, SwapNodes) {
195 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree()); 217 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree());
196 CreateModel(); 218 CreateModel(false /* is_supervised */);
197 219
198 // Swap the Google bookmark with the Folder. 220 // Swap the Google bookmark with the Folder.
199 scoped_ptr<base::ListValue> updated(CreateTestTree()); 221 scoped_ptr<base::ListValue> updated(CreateTestTree());
200 scoped_ptr<base::Value> removed; 222 scoped_ptr<base::Value> removed;
201 ASSERT_TRUE(updated->Remove(0, &removed)); 223 ASSERT_TRUE(updated->Remove(0, &removed));
202 updated->Append(removed.release()); 224 updated->Append(removed.release());
203 225
204 // These two nodes should just be swapped. 226 // These two nodes should just be swapped.
205 const BookmarkNode* parent = managed_node(); 227 const BookmarkNode* parent = managed_node();
206 EXPECT_CALL(observer_, BookmarkNodeMoved(model_.get(), parent, 1, parent, 0)); 228 EXPECT_CALL(observer_, BookmarkNodeMoved(model_.get(), parent, 1, parent, 0));
207 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, 229 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks,
208 updated->DeepCopy()); 230 updated->DeepCopy());
209 Mock::VerifyAndClearExpectations(&observer_); 231 Mock::VerifyAndClearExpectations(&observer_);
210 232
211 // Verify the final tree. 233 // Verify the final tree.
212 scoped_ptr<base::DictionaryValue> expected( 234 scoped_ptr<base::DictionaryValue> expected(
213 CreateFolder(GetManagedFolderTitle(), updated.release())); 235 CreateFolder(GetManagedFolderTitle(), updated.release()));
214 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get())); 236 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get()));
215 } 237 }
216 238
217 TEST_F(ManagedBookmarksTrackerTest, RemoveNode) { 239 TEST_F(ManagedBookmarksTrackerTest, RemoveNode) {
218 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree()); 240 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree());
219 CreateModel(); 241 CreateModel(false /* is_supervised */);
220 242
221 // Remove the Folder. 243 // Remove the Folder.
222 scoped_ptr<base::ListValue> updated(CreateTestTree()); 244 scoped_ptr<base::ListValue> updated(CreateTestTree());
223 ASSERT_TRUE(updated->Remove(1, NULL)); 245 ASSERT_TRUE(updated->Remove(1, NULL));
224 246
225 const BookmarkNode* parent = managed_node(); 247 const BookmarkNode* parent = managed_node();
226 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_.get(), parent, 1, _, _)); 248 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_.get(), parent, 1, _, _));
227 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, 249 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks,
228 updated->DeepCopy()); 250 updated->DeepCopy());
229 Mock::VerifyAndClearExpectations(&observer_); 251 Mock::VerifyAndClearExpectations(&observer_);
230 252
231 // Verify the final tree. 253 // Verify the final tree.
232 scoped_ptr<base::DictionaryValue> expected( 254 scoped_ptr<base::DictionaryValue> expected(
233 CreateFolder(GetManagedFolderTitle(), updated.release())); 255 CreateFolder(GetManagedFolderTitle(), updated.release()));
234 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get())); 256 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get()));
235 } 257 }
236 258
237 TEST_F(ManagedBookmarksTrackerTest, CreateNewNodes) { 259 TEST_F(ManagedBookmarksTrackerTest, CreateNewNodes) {
238 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree()); 260 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree());
239 CreateModel(); 261 CreateModel(false /* is_supervised */);
240 262
241 // Put all the nodes inside another folder. 263 // Put all the nodes inside another folder.
242 scoped_ptr<base::ListValue> updated(new base::ListValue); 264 scoped_ptr<base::ListValue> updated(new base::ListValue);
243 updated->Append(CreateFolder("Container", CreateTestTree())); 265 updated->Append(CreateFolder("Container", CreateTestTree()));
244 266
245 EXPECT_CALL(observer_, BookmarkNodeAdded(model_.get(), _, _)).Times(5); 267 EXPECT_CALL(observer_, BookmarkNodeAdded(model_.get(), _, _)).Times(5);
246 // The remaining nodes have been pushed to positions 1 and 2; they'll both be 268 // The remaining nodes have been pushed to positions 1 and 2; they'll both be
247 // removed when at position 1. 269 // removed when at position 1.
248 const BookmarkNode* parent = managed_node(); 270 const BookmarkNode* parent = managed_node();
249 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_.get(), parent, 1, _, _)) 271 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_.get(), parent, 1, _, _))
250 .Times(2); 272 .Times(2);
251 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, 273 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks,
252 updated->DeepCopy()); 274 updated->DeepCopy());
253 Mock::VerifyAndClearExpectations(&observer_); 275 Mock::VerifyAndClearExpectations(&observer_);
254 276
255 // Verify the final tree. 277 // Verify the final tree.
256 scoped_ptr<base::DictionaryValue> expected( 278 scoped_ptr<base::DictionaryValue> expected(
257 CreateFolder(GetManagedFolderTitle(), updated.release())); 279 CreateFolder(GetManagedFolderTitle(), updated.release()));
258 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get())); 280 EXPECT_TRUE(NodeMatchesValue(managed_node(), expected.get()));
259 } 281 }
260 282
261 TEST_F(ManagedBookmarksTrackerTest, RemoveAll) { 283 TEST_F(ManagedBookmarksTrackerTest, RemoveAll) {
262 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree()); 284 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree());
263 CreateModel(); 285 CreateModel(false /* is_supervised */);
264 EXPECT_TRUE(managed_node()->IsVisible()); 286 EXPECT_TRUE(managed_node()->IsVisible());
265 287
266 // Remove the policy. 288 // Remove the policy.
267 const BookmarkNode* parent = managed_node(); 289 const BookmarkNode* parent = managed_node();
268 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_.get(), parent, 0, _, _)) 290 EXPECT_CALL(observer_, BookmarkNodeRemoved(model_.get(), parent, 0, _, _))
269 .Times(2); 291 .Times(2);
270 prefs_.RemoveManagedPref(bookmarks::prefs::kManagedBookmarks); 292 prefs_.RemoveManagedPref(bookmarks::prefs::kManagedBookmarks);
271 Mock::VerifyAndClearExpectations(&observer_); 293 Mock::VerifyAndClearExpectations(&observer_);
272 294
273 EXPECT_TRUE(managed_node()->empty()); 295 EXPECT_TRUE(managed_node()->empty());
274 EXPECT_FALSE(managed_node()->IsVisible()); 296 EXPECT_FALSE(managed_node()->IsVisible());
275 } 297 }
276 298
277 TEST_F(ManagedBookmarksTrackerTest, IsManaged) { 299 TEST_F(ManagedBookmarksTrackerTest, IsManaged) {
278 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree()); 300 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree());
279 CreateModel(); 301 CreateModel(false /* is_supervised */);
280 302
281 EXPECT_FALSE(IsManaged(model_->root_node())); 303 EXPECT_FALSE(IsManaged(model_->root_node()));
282 EXPECT_FALSE(IsManaged(model_->bookmark_bar_node())); 304 EXPECT_FALSE(IsManaged(model_->bookmark_bar_node()));
283 EXPECT_FALSE(IsManaged(model_->other_node())); 305 EXPECT_FALSE(IsManaged(model_->other_node()));
284 EXPECT_FALSE(IsManaged(model_->mobile_node())); 306 EXPECT_FALSE(IsManaged(model_->mobile_node()));
285 EXPECT_TRUE(IsManaged(managed_node())); 307 EXPECT_TRUE(IsManaged(managed_node()));
286 308
287 const BookmarkNode* parent = managed_node(); 309 const BookmarkNode* parent = managed_node();
288 ASSERT_EQ(2, parent->child_count()); 310 ASSERT_EQ(2, parent->child_count());
289 EXPECT_TRUE(IsManaged(parent->GetChild(0))); 311 EXPECT_TRUE(IsManaged(parent->GetChild(0)));
290 EXPECT_TRUE(IsManaged(parent->GetChild(1))); 312 EXPECT_TRUE(IsManaged(parent->GetChild(1)));
291 313
292 parent = parent->GetChild(1); 314 parent = parent->GetChild(1);
293 ASSERT_EQ(2, parent->child_count()); 315 ASSERT_EQ(2, parent->child_count());
294 EXPECT_TRUE(IsManaged(parent->GetChild(0))); 316 EXPECT_TRUE(IsManaged(parent->GetChild(0)));
295 EXPECT_TRUE(IsManaged(parent->GetChild(1))); 317 EXPECT_TRUE(IsManaged(parent->GetChild(1)));
296 } 318 }
297 319
298 TEST_F(ManagedBookmarksTrackerTest, RemoveAllUserBookmarksDoesntRemoveManaged) { 320 TEST_F(ManagedBookmarksTrackerTest, RemoveAllUserBookmarksDoesntRemoveManaged) {
299 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree()); 321 prefs_.SetManagedPref(bookmarks::prefs::kManagedBookmarks, CreateTestTree());
300 CreateModel(); 322 CreateModel(false /* is_supervised */);
301 EXPECT_EQ(2, managed_node()->child_count()); 323 EXPECT_EQ(2, managed_node()->child_count());
302 324
303 EXPECT_CALL(observer_, 325 EXPECT_CALL(observer_,
304 BookmarkNodeAdded(model_.get(), model_->bookmark_bar_node(), 0)); 326 BookmarkNodeAdded(model_.get(), model_->bookmark_bar_node(), 0));
305 EXPECT_CALL(observer_, 327 EXPECT_CALL(observer_,
306 BookmarkNodeAdded(model_.get(), model_->bookmark_bar_node(), 1)); 328 BookmarkNodeAdded(model_.get(), model_->bookmark_bar_node(), 1));
307 model_->AddURL(model_->bookmark_bar_node(), 329 model_->AddURL(model_->bookmark_bar_node(),
308 0, 330 0,
309 base::ASCIIToUTF16("Test"), 331 base::ASCIIToUTF16("Test"),
310 GURL("http://google.com/")); 332 GURL("http://google.com/"));
311 model_->AddFolder( 333 model_->AddFolder(
312 model_->bookmark_bar_node(), 1, base::ASCIIToUTF16("Test Folder")); 334 model_->bookmark_bar_node(), 1, base::ASCIIToUTF16("Test Folder"));
313 EXPECT_EQ(2, model_->bookmark_bar_node()->child_count()); 335 EXPECT_EQ(2, model_->bookmark_bar_node()->child_count());
314 Mock::VerifyAndClearExpectations(&observer_); 336 Mock::VerifyAndClearExpectations(&observer_);
315 337
316 EXPECT_CALL(observer_, BookmarkAllUserNodesRemoved(model_.get(), _)); 338 EXPECT_CALL(observer_, BookmarkAllUserNodesRemoved(model_.get(), _));
317 model_->RemoveAllUserBookmarks(); 339 model_->RemoveAllUserBookmarks();
318 EXPECT_EQ(2, managed_node()->child_count()); 340 EXPECT_EQ(2, managed_node()->child_count());
319 EXPECT_EQ(0, model_->bookmark_bar_node()->child_count()); 341 EXPECT_EQ(0, model_->bookmark_bar_node()->child_count());
320 Mock::VerifyAndClearExpectations(&observer_); 342 Mock::VerifyAndClearExpectations(&observer_);
321 } 343 }
322 344
323 } // namespace policy 345 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698