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

Side by Side Diff: chrome/browser/ui/webui/ntp/android/partner_bookmarks_shim_unittest.cc

Issue 10834237: Add the android partner bookmark shim. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Moved shim to android/ntp and removed the conflicting ID namespace issue. Created 8 years, 4 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 | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/webui/ntp/android/partner_bookmarks_shim.h"
6
7 #include "base/message_loop.h"
8 #include "base/string16.h"
9 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/bookmarks/bookmark_model.h"
11 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
12 #include "chrome/test/base/testing_profile.h"
13 #include "content/public/browser/browser_thread.h"
14 #include "content/public/test/test_browser_thread.h"
15 #include "googleurl/src/gurl.h"
16 #include "testing/gtest/include/gtest/gtest.h"
17
18 class PartnerBookmarksShimTest : public testing::Test {
19 public:
20 PartnerBookmarksShimTest()
21 : ui_thread_(content::BrowserThread::UI, &message_loop_),
22 file_thread_(content::BrowserThread::FILE, &message_loop_) {
23 }
24
25 TestingProfile* profile() const { return profile_.get(); }
26
27 const BookmarkNode* AddBookmark(const BookmarkNode* parent,
28 const GURL& url,
29 const string16& title) {
30 BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile());
31 if (!parent)
32 parent = model->bookmark_bar_node();
33 return model->AddURL(parent, parent->child_count(), title, url);
34 }
35
36 const BookmarkNode* AddFolder(const BookmarkNode* parent,
37 const string16& title) {
38 BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile());
39 if (!parent)
40 parent = model->bookmark_bar_node();
41 return model->AddFolder(parent, parent->child_count(), title);
42 }
43
44 protected:
45 // testing::Test
46 virtual void SetUp() OVERRIDE {
47 profile_.reset(new TestingProfile());
48 profile_->CreateBookmarkModel(true);
49 profile_->BlockUntilBookmarkModelLoaded();
50 }
51
52 virtual void TearDown() OVERRIDE {
53 profile_.reset(NULL);
54 PartnerBookmarksShim::GetInstance()->Reset();
55 }
56
57 scoped_ptr<TestingProfile> profile_;
58
59 MessageLoopForUI message_loop_;
60 content::TestBrowserThread ui_thread_;
61 content::TestBrowserThread file_thread_;
62
63 DISALLOW_COPY_AND_ASSIGN(PartnerBookmarksShimTest);
64 };
65
66 class TestObserver : public PartnerBookmarksShim::Observer {
67 public:
68 TestObserver()
69 : notified_of_load_(false) {
70 }
71
72 // Called when everything is loaded and attached
73 virtual void PartnerShimLoaded(PartnerBookmarksShim*) OVERRIDE {
74 notified_of_load_ = true;
75 }
76
77 bool IsNotifiedOfLoad() { return notified_of_load_; }
78
79 private:
80 bool notified_of_load_;
81
82 DISALLOW_COPY_AND_ASSIGN(TestObserver);
83 };
84
85 TEST_F(PartnerBookmarksShimTest, GetNodeByID) {
86 // Add a bookmark.
87 GURL bookmark_url("http://www.google.com/");
88 AddBookmark(
89 NULL,
90 bookmark_url,
91 ASCIIToUTF16("bar"));
92 const BookmarkNode* test_folder1 = AddFolder(NULL,
93 ASCIIToUTF16("test_folder1"));
94 const BookmarkNode* test_folder2 = AddFolder(test_folder1,
95 ASCIIToUTF16("test_folder2"));
96 const BookmarkNode* model_bookmark1 = AddBookmark(test_folder2,
97 GURL("http://www.test.com"),
98 ASCIIToUTF16("bar"));
99 const BookmarkNode* model_bookmark2 = AddBookmark(test_folder2,
100 GURL("http://www.foo.com"),
101 ASCIIToUTF16("baz"));
102
103 BookmarkNode* root_partner_node = new BookmarkPermanentNode(0);
104 BookmarkNode* partner_folder1 = new BookmarkNode(1, GURL());
105 partner_folder1->set_type(BookmarkNode::FOLDER);
106 root_partner_node->Add(partner_folder1, root_partner_node->child_count());
107
108 BookmarkNode* partner_folder2 = new BookmarkNode(2, GURL());
109 partner_folder2->set_type(BookmarkNode::FOLDER);
110 partner_folder1->Add(partner_folder2, partner_folder1->child_count());
111
112 BookmarkNode* partner_bookmark1 = new BookmarkNode(3,
113 GURL("http://www.a.com"));
114 partner_bookmark1->set_type(BookmarkNode::URL);
115 partner_folder1->Add(partner_bookmark1, partner_folder1->child_count());
116
117 BookmarkNode* partner_bookmark2 = new BookmarkNode(4,
118 GURL("http://www.b.com"));
119 partner_bookmark2->set_type(BookmarkNode::URL);
120 partner_folder2->Add(partner_bookmark2, partner_folder2->child_count());
121
122 PartnerBookmarksShim* shim = PartnerBookmarksShim::GetInstance();
123 ASSERT_FALSE(shim->IsLoaded());
124 BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile());
125 shim->AttachTo(model, model->mobile_node());
126 shim->SetPartnerBookmarksRoot(root_partner_node);
127 ASSERT_TRUE(shim->IsLoaded());
128
129 ASSERT_EQ(shim->GetNodeByID(model_bookmark1->id(), false), model_bookmark1);
130 ASSERT_EQ(shim->GetNodeByID(model_bookmark2->id(), false), model_bookmark2);
131 ASSERT_EQ(shim->GetNodeByID(test_folder2->id(), false), test_folder2);
132 ASSERT_EQ(shim->GetNodeByID(0, true), root_partner_node);
133 ASSERT_EQ(shim->GetNodeByID(1, true), partner_folder1);
134 ASSERT_EQ(shim->GetNodeByID(4, true), partner_bookmark2);
135 }
136
137 TEST_F(PartnerBookmarksShimTest, ObserverNotifiedOfLoadNoPartnerBookmarks) {
138 TestObserver* observer = new TestObserver();
139 PartnerBookmarksShim* shim = PartnerBookmarksShim::GetInstance();
140 shim->AddObserver(observer);
141 ASSERT_FALSE(observer->IsNotifiedOfLoad());
142 shim->SetPartnerBookmarksRoot(NULL);
143 ASSERT_TRUE(observer->IsNotifiedOfLoad());
144 }
145
146 TEST_F(PartnerBookmarksShimTest, ObserverNotifiedOfLoadWithPartnerBookmarks) {
147 int64 id = 5;
148 BookmarkNode* root_partner_node = new BookmarkPermanentNode(id++);
149 BookmarkNode* partner_bookmark1 = new BookmarkNode(id++,
150 GURL("http://www.a.com"));
151 partner_bookmark1->set_type(BookmarkNode::URL);
152 root_partner_node->Add(partner_bookmark1, root_partner_node->child_count());
153
154 TestObserver* observer = new TestObserver();
155 PartnerBookmarksShim* shim = PartnerBookmarksShim::GetInstance();
156 shim->AddObserver(observer);
157 BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile());
158 shim->AttachTo(model, model->bookmark_bar_node());
159 ASSERT_FALSE(observer->IsNotifiedOfLoad());
160 shim->SetPartnerBookmarksRoot(root_partner_node);
161 ASSERT_TRUE(observer->IsNotifiedOfLoad());
162 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/ntp/android/partner_bookmarks_shim.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698