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

Side by Side Diff: chrome/browser/ui/intents/web_intent_picker_model_unittest.cc

Issue 12225076: Delete most web intents code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 10 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 "base/utf_string_conversions.h"
6 #include "chrome/browser/ui/intents/web_intent_picker_model.h"
7 #include "chrome/browser/ui/intents/web_intent_picker_model_observer.h"
8 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/gfx/image/image.h"
11 #include "ui/gfx/image/image_unittest_util.h"
12
13 namespace {
14
15 const string16 kTitle1(ASCIIToUTF16("Foo"));
16 const string16 kTitle2(ASCIIToUTF16("Bar"));
17 const string16 kTitle3(ASCIIToUTF16("Baz"));
18 const string16 kTitle4(ASCIIToUTF16("Biff"));
19 const string16 kTitle5(ASCIIToUTF16("Max"));
20 const string16 kTitle6(ASCIIToUTF16("Lulz"));
21 const GURL kUrl1("http://www.example.com/foo");
22 const GURL kUrl2("http://www.example.com/bar");
23 const GURL kUrl3("http://www.example.com/baz");
24 const std::string kId1("nhkckhebbbncbkefhcpcgepcgfaclehe");
25 const std::string kId2("hcpcgepcgfaclehenhkckhebbbncbkef");
26 const std::string kId3("aclehenhkckhebbbncbkefhcpcgepcgf");
27 const std::string kId4("bclehenhkckhebbbncbkefhcpcgepcgf");
28 const std::string kId5("cclehenhkckhebbbncbkefhcpcgepcgf");
29 const std::string kId6("dclehenhkckhebbbncbkefhcpcgepcgf");
30 const webkit_glue::WebIntentServiceData::Disposition kWindowDisposition(
31 webkit_glue::WebIntentServiceData::DISPOSITION_WINDOW);
32 const webkit_glue::WebIntentServiceData::Disposition kInlineDisposition(
33 webkit_glue::WebIntentServiceData::DISPOSITION_INLINE);
34
35 }
36
37 class WebIntentPickerModelObserverMock : public WebIntentPickerModelObserver {
38 public:
39 MOCK_METHOD1(OnModelChanged, void(WebIntentPickerModel* model));
40 MOCK_METHOD2(OnFaviconChanged,
41 void(WebIntentPickerModel* model, size_t index));
42 MOCK_METHOD2(OnExtensionIconChanged,
43 void(WebIntentPickerModel* model,
44 const std::string& extension_id));
45 MOCK_METHOD2(OnInlineDisposition,
46 void(const string16& title, const GURL& url));
47 };
48
49 class WebIntentPickerModelTest : public testing::Test {
50 public:
51 typedef WebIntentPickerModel::SuggestedExtension SuggestedExtension;
52 WebIntentPickerModelTest() {}
53
54 virtual void SetUp() {
55 testing::Test::SetUp();
56 model_.set_observer(&observer_);
57 }
58
59 WebIntentPickerModel model_;
60 WebIntentPickerModelObserverMock observer_;
61 };
62
63 TEST_F(WebIntentPickerModelTest, AddInstalledService) {
64 EXPECT_CALL(observer_, OnModelChanged(&model_)).Times(2);
65
66 EXPECT_EQ(0U, model_.GetInstalledServiceCount());
67
68 model_.AddInstalledService(kTitle1, kUrl1, kWindowDisposition);
69 model_.AddInstalledService(kTitle2, kUrl2, kWindowDisposition);
70
71 EXPECT_EQ(2U, model_.GetInstalledServiceCount());
72 EXPECT_EQ(kUrl1, model_.GetInstalledServiceAt(0).url);
73 EXPECT_EQ(kUrl2, model_.GetInstalledServiceAt(1).url);
74 }
75
76 // Test that AddInstalledServices() is idempotent.
77 TEST_F(WebIntentPickerModelTest, AddInstalledServiceIsIdempotent) {
78 EXPECT_CALL(observer_, OnModelChanged(&model_)).Times(2);
79
80 EXPECT_EQ(0U, model_.GetInstalledServiceCount());
81
82 model_.AddInstalledService(kTitle1, kUrl1, kWindowDisposition);
83 model_.AddInstalledService(kTitle2, kUrl2, kWindowDisposition);
84
85 EXPECT_EQ(2U, model_.GetInstalledServiceCount());
86 EXPECT_EQ(kUrl1, model_.GetInstalledServiceAt(0).url);
87 EXPECT_EQ(kUrl2, model_.GetInstalledServiceAt(1).url);
88
89 model_.AddInstalledService(kTitle2, kUrl2, kWindowDisposition);
90 model_.AddInstalledService(kTitle1, kUrl1, kWindowDisposition);
91
92 EXPECT_EQ(2U, model_.GetInstalledServiceCount());
93 EXPECT_EQ(kUrl1, model_.GetInstalledServiceAt(0).url);
94 EXPECT_EQ(kUrl2, model_.GetInstalledServiceAt(1).url);
95 }
96
97
98 TEST_F(WebIntentPickerModelTest, RemoveInstalledServiceAt) {
99 EXPECT_CALL(observer_, OnModelChanged(&model_)).Times(4);
100
101 model_.AddInstalledService(kTitle1, kUrl1, kWindowDisposition);
102 model_.AddInstalledService(kTitle2, kUrl2, kWindowDisposition);
103 model_.AddInstalledService(kTitle3, kUrl3, kWindowDisposition);
104
105 EXPECT_EQ(3U, model_.GetInstalledServiceCount());
106
107 model_.RemoveInstalledServiceAt(1);
108
109 EXPECT_EQ(2U, model_.GetInstalledServiceCount());
110 EXPECT_EQ(kUrl1, model_.GetInstalledServiceAt(0).url);
111 EXPECT_EQ(kUrl3, model_.GetInstalledServiceAt(1).url);
112 }
113
114 TEST_F(WebIntentPickerModelTest, Clear) {
115 EXPECT_CALL(observer_, OnModelChanged(&model_)).Times(testing::AtLeast(3));
116
117 model_.AddInstalledService(kTitle1, kUrl1, kWindowDisposition);
118 model_.AddInstalledService(kTitle2, kUrl2, kWindowDisposition);
119
120 EXPECT_EQ(2U, model_.GetInstalledServiceCount());
121
122 model_.Clear();
123
124 EXPECT_EQ(0U, model_.GetInstalledServiceCount());
125 }
126
127 TEST_F(WebIntentPickerModelTest, GetInstalledServiceWithURL) {
128 EXPECT_CALL(observer_, OnModelChanged(&model_)).Times(2);
129
130 model_.AddInstalledService(kTitle1, kUrl1, kWindowDisposition);
131 model_.AddInstalledService(kTitle2, kUrl2, kWindowDisposition);
132
133 EXPECT_EQ(kTitle2, model_.GetInstalledServiceWithURL(kUrl2)->title);
134 EXPECT_EQ(NULL, model_.GetInstalledServiceWithURL(kUrl3));
135 }
136
137 TEST_F(WebIntentPickerModelTest, UpdateFaviconForServiceWithURL) {
138 EXPECT_CALL(observer_, OnModelChanged(&model_)).Times(2);
139 EXPECT_CALL(observer_, OnFaviconChanged(&model_, 1U)).Times(1);
140
141 model_.AddInstalledService(kTitle1, kUrl1, kWindowDisposition);
142 model_.AddInstalledService(kTitle2, kUrl2, kWindowDisposition);
143 gfx::Image image(gfx::test::CreateImage());
144 model_.UpdateFaviconForServiceWithURL(kUrl2, image);
145
146 EXPECT_FALSE(gfx::test::IsEqual(
147 image, model_.GetInstalledServiceAt(0).favicon));
148 EXPECT_TRUE(gfx::test::IsEqual(
149 image, model_.GetInstalledServiceAt(1).favicon));
150 }
151
152 TEST_F(WebIntentPickerModelTest, AddSuggestedExtensions) {
153 EXPECT_CALL(observer_, OnModelChanged(&model_)).Times(1);
154
155 EXPECT_EQ(0U, model_.GetSuggestedExtensionCount());
156
157 std::vector<WebIntentPickerModel::SuggestedExtension> suggestions;
158 suggestions.push_back(
159 WebIntentPickerModel::SuggestedExtension(kTitle1, kId1, 3.0));
160 suggestions.push_back(
161 WebIntentPickerModel::SuggestedExtension(kTitle2, kId2, 4.0));
162 model_.AddSuggestedExtensions(suggestions);
163
164 EXPECT_EQ(2U, model_.GetSuggestedExtensionCount());
165 EXPECT_EQ(kId1, model_.GetSuggestedExtensionAt(0).id);
166 EXPECT_EQ(kId2, model_.GetSuggestedExtensionAt(1).id);
167
168 EXPECT_EQ(string16(), model_.GetSuggestionsLinkText());
169 }
170
171 TEST_F(WebIntentPickerModelTest, MaxSuggestedExtensions) {
172 EXPECT_CALL(observer_, OnModelChanged(&model_)).Times(1);
173
174 std::vector<SuggestedExtension> suggestions;
175 suggestions.push_back(SuggestedExtension(kTitle1, kId1, 3.0));
176 suggestions.push_back(SuggestedExtension(kTitle2, kId2, 4.3));
177 suggestions.push_back(SuggestedExtension(kTitle3, kId3, 4.4));
178 suggestions.push_back(SuggestedExtension(kTitle4, kId4, 4.5));
179 suggestions.push_back(SuggestedExtension(kTitle5, kId5, 4.6));
180 suggestions.push_back(SuggestedExtension(kTitle6, kId6, 4.7));
181 model_.AddSuggestedExtensions(suggestions);
182
183 // Max to show currently set to 5.
184 EXPECT_EQ(5U, model_.GetSuggestedExtensionCount());
185 EXPECT_NE(string16(), model_.GetSuggestionsLinkText());
186 }
187
188 TEST_F(WebIntentPickerModelTest, SetSuggestedExtensionIconWithId) {
189 EXPECT_CALL(observer_, OnModelChanged(&model_)).Times(1);
190 EXPECT_CALL(observer_, OnExtensionIconChanged(&model_, kId2)).Times(1);
191
192 std::vector<SuggestedExtension> suggestions;
193 suggestions.push_back(SuggestedExtension(kTitle1, kId1, 3.0));
194 suggestions.push_back(SuggestedExtension(kTitle2, kId2, 4.3));
195 model_.AddSuggestedExtensions(suggestions);
196
197 gfx::Image image(gfx::test::CreateImage());
198 model_.SetSuggestedExtensionIconWithId(kId2, image);
199
200 EXPECT_FALSE(gfx::test::IsEqual(
201 image, model_.GetSuggestedExtensionAt(0).icon));
202 EXPECT_TRUE(gfx::test::IsEqual(
203 image, model_.GetSuggestedExtensionAt(1).icon));
204 }
205
206 TEST_F(WebIntentPickerModelTest, SetInlineDisposition) {
207 EXPECT_CALL(observer_, OnModelChanged(&model_)).Times(testing::AtLeast(3));
208 EXPECT_CALL(observer_, OnInlineDisposition(kTitle2, testing::_)).Times(1);
209
210 EXPECT_FALSE(model_.IsInlineDisposition());
211 EXPECT_EQ(GURL::EmptyGURL(), model_.inline_disposition_url());
212
213 model_.AddInstalledService(kTitle1, kUrl1, kWindowDisposition);
214 model_.AddInstalledService(kTitle2, kUrl2, kInlineDisposition);
215 model_.SetInlineDisposition(kUrl2);
216
217 EXPECT_TRUE(model_.IsInlineDisposition());
218 EXPECT_EQ(kUrl2, model_.inline_disposition_url());
219
220 model_.Clear();
221 EXPECT_FALSE(model_.IsInlineDisposition());
222 EXPECT_EQ(GURL::EmptyGURL(), model_.inline_disposition_url());
223 }
224
225
226 TEST_F(WebIntentPickerModelTest, WaitingForSuggestions) {
227 // Default status is that "waiting for suggestions".
228 EXPECT_TRUE(model_.IsWaitingForSuggestions());
229
230 // "waiting" status can be toggled manually.
231 EXPECT_CALL(observer_, OnModelChanged(&model_)).Times(2);
232 model_.SetWaitingForSuggestions(false);
233 EXPECT_FALSE(model_.IsWaitingForSuggestions());
234 model_.SetWaitingForSuggestions(true);
235 EXPECT_TRUE(model_.IsWaitingForSuggestions());
236 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/intents/web_intent_picker_model_observer.h ('k') | chrome/browser/ui/intents/web_intent_picker_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698