OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/ui/bookmarks/recently_used_folders_combo_model.h" | 5 #include "chrome/browser/ui/bookmarks/recently_used_folders_combo_model.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/message_loop/message_loop.h" | |
11 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
12 #include "components/bookmarks/browser/bookmark_model.h" | 11 #include "components/bookmarks/browser/bookmark_model.h" |
13 #include "components/bookmarks/test/bookmark_test_helpers.h" | 12 #include "components/bookmarks/test/bookmark_test_helpers.h" |
14 #include "components/bookmarks/test/test_bookmark_client.h" | 13 #include "components/bookmarks/test/test_bookmark_client.h" |
15 #include "content/public/test/test_browser_thread.h" | 14 #include "content/public/test/test_browser_thread_bundle.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
17 #include "ui/base/models/combobox_model_observer.h" | 16 #include "ui/base/models/combobox_model_observer.h" |
18 | 17 |
19 using bookmarks::BookmarkModel; | 18 using bookmarks::BookmarkModel; |
20 using bookmarks::BookmarkNode; | 19 using bookmarks::BookmarkNode; |
21 using bookmarks::TestBookmarkClient; | 20 using bookmarks::TestBookmarkClient; |
22 using content::BrowserThread; | |
23 | |
24 // Implementation of ComboboxModelObserver that records when | 21 // Implementation of ComboboxModelObserver that records when |
25 // OnComboboxModelChanged() is invoked. | 22 // OnComboboxModelChanged() is invoked. |
26 class TestComboboxModelObserver : public ui::ComboboxModelObserver { | 23 class TestComboboxModelObserver : public ui::ComboboxModelObserver { |
27 public: | 24 public: |
28 TestComboboxModelObserver() : changed_(false) {} | 25 TestComboboxModelObserver() : changed_(false) {} |
29 ~TestComboboxModelObserver() override {} | 26 ~TestComboboxModelObserver() override {} |
30 | 27 |
31 // Returns whether the model changed and clears changed state. | 28 // Returns whether the model changed and clears changed state. |
32 bool GetAndClearChanged() { | 29 bool GetAndClearChanged() { |
33 const bool changed = changed_; | 30 const bool changed = changed_; |
34 changed_ = false; | 31 changed_ = false; |
35 return changed; | 32 return changed; |
36 } | 33 } |
37 | 34 |
38 // ui::ComboboxModelObserver: | 35 // ui::ComboboxModelObserver: |
39 void OnComboboxModelChanged(ui::ComboboxModel* model) override { | 36 void OnComboboxModelChanged(ui::ComboboxModel* model) override { |
40 changed_ = true; | 37 changed_ = true; |
41 } | 38 } |
42 | 39 |
43 private: | 40 private: |
44 bool changed_; | 41 bool changed_; |
45 | 42 |
46 DISALLOW_COPY_AND_ASSIGN(TestComboboxModelObserver); | 43 DISALLOW_COPY_AND_ASSIGN(TestComboboxModelObserver); |
47 }; | 44 }; |
48 | 45 |
49 class RecentlyUsedFoldersComboModelTest : public testing::Test { | 46 class RecentlyUsedFoldersComboModelTest : public testing::Test { |
50 public: | 47 public: |
51 RecentlyUsedFoldersComboModelTest(); | 48 RecentlyUsedFoldersComboModelTest() = default; |
52 | 49 |
53 private: | 50 private: |
54 base::MessageLoopForUI message_loop_; | 51 content::TestBrowserThreadBundle test_browser_thread_bundle_; |
55 content::TestBrowserThread ui_thread_; | |
56 content::TestBrowserThread file_thread_; | |
57 | 52 |
58 DISALLOW_COPY_AND_ASSIGN(RecentlyUsedFoldersComboModelTest); | 53 DISALLOW_COPY_AND_ASSIGN(RecentlyUsedFoldersComboModelTest); |
59 }; | 54 }; |
60 | 55 |
61 RecentlyUsedFoldersComboModelTest::RecentlyUsedFoldersComboModelTest() | |
62 : ui_thread_(BrowserThread::UI, &message_loop_), | |
63 file_thread_(BrowserThread::FILE, &message_loop_) { | |
64 } | |
65 | |
66 // Verifies there are no duplicate nodes in the model. | 56 // Verifies there are no duplicate nodes in the model. |
67 TEST_F(RecentlyUsedFoldersComboModelTest, NoDups) { | 57 TEST_F(RecentlyUsedFoldersComboModelTest, NoDups) { |
68 std::unique_ptr<BookmarkModel> bookmark_model( | 58 std::unique_ptr<BookmarkModel> bookmark_model( |
69 TestBookmarkClient::CreateModel()); | 59 TestBookmarkClient::CreateModel()); |
70 const BookmarkNode* new_node = bookmark_model->AddURL( | 60 const BookmarkNode* new_node = bookmark_model->AddURL( |
71 bookmark_model->bookmark_bar_node(), 0, base::ASCIIToUTF16("a"), | 61 bookmark_model->bookmark_bar_node(), 0, base::ASCIIToUTF16("a"), |
72 GURL("http://a")); | 62 GURL("http://a")); |
73 RecentlyUsedFoldersComboModel model(bookmark_model.get(), new_node); | 63 RecentlyUsedFoldersComboModel model(bookmark_model.get(), new_node); |
74 std::set<base::string16> items; | 64 std::set<base::string16> items; |
75 for (int i = 0; i < model.GetItemCount(); ++i) { | 65 for (int i = 0; i < model.GetItemCount(); ++i) { |
(...skipping 23 matching lines...) Expand all Loading... |
99 const int updated_count = model.GetItemCount(); | 89 const int updated_count = model.GetItemCount(); |
100 EXPECT_LT(updated_count, initial_count); | 90 EXPECT_LT(updated_count, initial_count); |
101 | 91 |
102 // Remove all, which should remove a folder too. | 92 // Remove all, which should remove a folder too. |
103 bookmark_model->RemoveAllUserBookmarks(); | 93 bookmark_model->RemoveAllUserBookmarks(); |
104 EXPECT_TRUE(observer.GetAndClearChanged()); | 94 EXPECT_TRUE(observer.GetAndClearChanged()); |
105 EXPECT_LT(model.GetItemCount(), updated_count); | 95 EXPECT_LT(model.GetItemCount(), updated_count); |
106 | 96 |
107 model.RemoveObserver(&observer); | 97 model.RemoveObserver(&observer); |
108 } | 98 } |
OLD | NEW |