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 "chrome/browser/extensions/bookmark_app_helper.h" | 5 #include "chrome/browser/extensions/bookmark_app_helper.h" |
6 | 6 |
7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
8 #include "chrome/browser/extensions/extension_service_unittest.h" | 8 #include "chrome/browser/extensions/extension_service_unittest.h" |
9 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" | 9 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" |
10 #include "chrome/test/base/testing_profile.h" | 10 #include "chrome/test/base/testing_profile.h" |
11 #include "content/public/browser/render_process_host.h" | |
12 #include "content/public/browser/web_contents.h" | |
13 #include "content/public/test/web_contents_tester.h" | |
14 #include "extensions/browser/extension_registry.h" | 11 #include "extensions/browser/extension_registry.h" |
15 #include "extensions/common/constants.h" | 12 #include "extensions/common/constants.h" |
16 #include "extensions/common/extension_icon_set.h" | 13 #include "extensions/common/extension_icon_set.h" |
17 #include "extensions/common/manifest_handlers/icons_handler.h" | 14 #include "extensions/common/manifest_handlers/icons_handler.h" |
18 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
19 #include "third_party/skia/include/core/SkBitmap.h" | 16 #include "third_party/skia/include/core/SkBitmap.h" |
20 #include "ui/gfx/skia_util.h" | 17 #include "ui/gfx/skia_util.h" |
21 | 18 |
22 namespace { | 19 namespace { |
23 | 20 |
24 #if !defined(OS_ANDROID) | 21 #if !defined(OS_ANDROID) |
25 const char kAppUrl[] = "http://www.chromium.org"; | 22 const char kAppUrl[] = "http://www.chromium.org"; |
26 const char kAppTitle[] = "Test title"; | 23 const char kAppTitle[] = "Test title"; |
27 const char kAlternativeAppTitle[] = "Different test title"; | 24 const char kAlternativeAppTitle[] = "Different test title"; |
28 const char kAppDescription[] = "Test description"; | 25 const char kAppDescription[] = "Test description"; |
29 | 26 |
30 const int kIconSizeTiny = extension_misc::EXTENSION_ICON_BITTY; | |
31 const int kIconSizeSmall = extension_misc::EXTENSION_ICON_SMALL; | 27 const int kIconSizeSmall = extension_misc::EXTENSION_ICON_SMALL; |
32 const int kIconSizeMedium = extension_misc::EXTENSION_ICON_MEDIUM; | |
33 const int kIconSizeLarge = extension_misc::EXTENSION_ICON_LARGE; | 28 const int kIconSizeLarge = extension_misc::EXTENSION_ICON_LARGE; |
34 #endif | 29 #endif |
35 | 30 |
36 class BookmarkAppHelperTest : public testing::Test { | 31 class BookmarkAppHelperTest : public testing::Test { |
37 public: | 32 public: |
38 BookmarkAppHelperTest() {} | 33 BookmarkAppHelperTest() {} |
39 virtual ~BookmarkAppHelperTest() {} | 34 virtual ~BookmarkAppHelperTest() {} |
40 | 35 |
41 private: | 36 private: |
42 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperTest); | 37 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperTest); |
43 }; | 38 }; |
44 | 39 |
45 class BookmarkAppHelperExtensionServiceTest : public ExtensionServiceTestBase { | 40 class BookmarkAppHelperExtensionServiceTest : public ExtensionServiceTestBase { |
46 public: | 41 public: |
47 BookmarkAppHelperExtensionServiceTest() {} | 42 BookmarkAppHelperExtensionServiceTest() {} |
48 virtual ~BookmarkAppHelperExtensionServiceTest() {} | 43 virtual ~BookmarkAppHelperExtensionServiceTest() {} |
49 | 44 |
50 virtual void SetUp() OVERRIDE { | 45 virtual void SetUp() OVERRIDE { |
51 ExtensionServiceTestBase::SetUp(); | 46 ExtensionServiceTestBase::SetUp(); |
52 InitializeEmptyExtensionService(); | 47 InitializeEmptyExtensionService(); |
53 service_->Init(); | 48 service_->Init(); |
54 EXPECT_EQ(0u, service_->extensions()->size()); | 49 EXPECT_EQ(0u, service_->extensions()->size()); |
55 } | 50 } |
56 | 51 |
57 virtual void TearDown() OVERRIDE { | |
58 ExtensionServiceTestBase::TearDown(); | |
59 for (content::RenderProcessHost::iterator i( | |
60 content::RenderProcessHost::AllHostsIterator()); | |
61 !i.IsAtEnd(); | |
62 i.Advance()) { | |
63 content::RenderProcessHost* host = i.GetCurrentValue(); | |
64 if (Profile::FromBrowserContext(host->GetBrowserContext()) == | |
65 profile_.get()) | |
66 delete host; | |
67 } | |
68 } | |
69 | |
70 private: | 52 private: |
71 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperExtensionServiceTest); | 53 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperExtensionServiceTest); |
72 }; | 54 }; |
73 | 55 |
74 SkBitmap CreateSquareBitmapWithColor(int size, SkColor color) { | 56 SkBitmap CreateSquareBitmapWithColor(int size, SkColor color) { |
75 SkBitmap bitmap; | 57 SkBitmap bitmap; |
76 bitmap.setConfig(SkBitmap::kARGB_8888_Config, size, size); | 58 bitmap.setConfig(SkBitmap::kARGB_8888_Config, size, size); |
77 bitmap.allocPixels(); | 59 bitmap.allocPixels(); |
78 bitmap.eraseColor(color); | 60 bitmap.eraseColor(color); |
79 return bitmap; | 61 return bitmap; |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 }; | 129 }; |
148 | 130 |
149 // Android doesn't support extensions. | 131 // Android doesn't support extensions. |
150 #if !defined(OS_ANDROID) | 132 #if !defined(OS_ANDROID) |
151 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkApp) { | 133 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkApp) { |
152 WebApplicationInfo web_app_info; | 134 WebApplicationInfo web_app_info; |
153 web_app_info.app_url = GURL(kAppUrl); | 135 web_app_info.app_url = GURL(kAppUrl); |
154 web_app_info.title = base::UTF8ToUTF16(kAppTitle); | 136 web_app_info.title = base::UTF8ToUTF16(kAppTitle); |
155 web_app_info.description = base::UTF8ToUTF16(kAppDescription); | 137 web_app_info.description = base::UTF8ToUTF16(kAppDescription); |
156 | 138 |
157 scoped_ptr<content::WebContents> contents( | 139 TestBookmarkAppHelper helper(service_, web_app_info, NULL); |
158 content::WebContentsTester::CreateTestWebContents(profile_.get(), NULL)); | |
159 TestBookmarkAppHelper helper(service_, web_app_info, contents.get()); | |
160 helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete, | 140 helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete, |
161 base::Unretained(&helper))); | 141 base::Unretained(&helper))); |
162 | 142 |
163 std::map<GURL, std::vector<SkBitmap> > icon_map; | 143 std::map<GURL, std::vector<SkBitmap> > icon_map; |
164 icon_map[GURL(kAppUrl)].push_back( | 144 icon_map[GURL(kAppUrl)].push_back( |
165 CreateSquareBitmapWithColor(kIconSizeSmall, SK_ColorRED)); | 145 CreateSquareBitmapWithColor(kIconSizeSmall, SK_ColorRED)); |
166 helper.CompleteIconDownload(true, icon_map); | 146 helper.CompleteIconDownload(true, icon_map); |
167 | 147 |
168 base::RunLoop().RunUntilIdle(); | 148 base::RunLoop().RunUntilIdle(); |
169 EXPECT_TRUE(helper.extension()); | 149 EXPECT_TRUE(helper.extension()); |
170 const Extension* extension = | 150 const Extension* extension = |
171 service_->GetInstalledExtension(helper.extension()->id()); | 151 service_->GetInstalledExtension(helper.extension()->id()); |
172 EXPECT_TRUE(extension); | 152 EXPECT_TRUE(extension); |
173 EXPECT_EQ(1u, service_->extensions()->size()); | 153 EXPECT_EQ(1u, service_->extensions()->size()); |
174 EXPECT_TRUE(extension->from_bookmark()); | 154 EXPECT_TRUE(extension->from_bookmark()); |
175 EXPECT_EQ(kAppTitle, extension->name()); | 155 EXPECT_EQ(kAppTitle, extension->name()); |
176 EXPECT_EQ(kAppDescription, extension->description()); | 156 EXPECT_EQ(kAppDescription, extension->description()); |
177 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); | 157 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); |
178 EXPECT_FALSE( | 158 EXPECT_FALSE( |
179 IconsInfo::GetIconResource( | 159 IconsInfo::GetIconResource( |
180 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty()); | 160 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty()); |
181 } | 161 } |
182 | 162 |
183 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkAppNoContents) { | |
184 WebApplicationInfo web_app_info; | |
185 web_app_info.app_url = GURL(kAppUrl); | |
186 web_app_info.title = base::UTF8ToUTF16(kAppTitle); | |
187 web_app_info.description = base::UTF8ToUTF16(kAppDescription); | |
188 web_app_info.icons.push_back( | |
189 CreateIconInfoWithBitmap(kIconSizeTiny, SK_ColorRED)); | |
190 | |
191 TestBookmarkAppHelper helper(service_, web_app_info, NULL); | |
192 helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete, | |
193 base::Unretained(&helper))); | |
194 | |
195 base::RunLoop().RunUntilIdle(); | |
196 EXPECT_TRUE(helper.extension()); | |
197 const Extension* extension = | |
198 service_->GetInstalledExtension(helper.extension()->id()); | |
199 EXPECT_TRUE(extension); | |
200 EXPECT_EQ(1u, service_->extensions()->size()); | |
201 EXPECT_TRUE(extension->from_bookmark()); | |
202 EXPECT_EQ(kAppTitle, extension->name()); | |
203 EXPECT_EQ(kAppDescription, extension->description()); | |
204 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); | |
205 EXPECT_FALSE( | |
206 IconsInfo::GetIconResource( | |
207 extension, kIconSizeTiny, ExtensionIconSet::MATCH_EXACTLY).empty()); | |
208 EXPECT_FALSE( | |
209 IconsInfo::GetIconResource( | |
210 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty()); | |
211 EXPECT_FALSE( | |
212 IconsInfo::GetIconResource(extension, | |
213 kIconSizeSmall * 2, | |
214 ExtensionIconSet::MATCH_EXACTLY).empty()); | |
215 EXPECT_FALSE( | |
216 IconsInfo::GetIconResource( | |
217 extension, kIconSizeMedium, ExtensionIconSet::MATCH_EXACTLY).empty()); | |
218 EXPECT_FALSE( | |
219 IconsInfo::GetIconResource(extension, | |
220 kIconSizeMedium * 2, | |
221 ExtensionIconSet::MATCH_EXACTLY).empty()); | |
222 } | |
223 | |
224 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateAndUpdateBookmarkApp) { | 163 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateAndUpdateBookmarkApp) { |
225 EXPECT_EQ(0u, registry_->enabled_extensions().size()); | 164 EXPECT_EQ(0u, registry_->enabled_extensions().size()); |
226 WebApplicationInfo web_app_info; | 165 WebApplicationInfo web_app_info; |
227 web_app_info.app_url = GURL(kAppUrl); | 166 web_app_info.app_url = GURL(kAppUrl); |
228 web_app_info.title = base::UTF8ToUTF16(kAppTitle); | 167 web_app_info.title = base::UTF8ToUTF16(kAppTitle); |
229 web_app_info.description = base::UTF8ToUTF16(kAppDescription); | 168 web_app_info.description = base::UTF8ToUTF16(kAppDescription); |
230 web_app_info.icons.push_back( | 169 web_app_info.icons.push_back( |
231 CreateIconInfoWithBitmap(kIconSizeSmall, SK_ColorRED)); | 170 CreateIconInfoWithBitmap(kIconSizeSmall, SK_ColorRED)); |
232 | 171 |
233 extensions::CreateOrUpdateBookmarkApp(service_, web_app_info); | 172 extensions::CreateOrUpdateBookmarkApp(service_, web_app_info); |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 } | 271 } |
333 | 272 |
334 TEST_F(BookmarkAppHelperTest, IsValidBookmarkAppUrl) { | 273 TEST_F(BookmarkAppHelperTest, IsValidBookmarkAppUrl) { |
335 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("https://www.chromium.org"))); | 274 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("https://www.chromium.org"))); |
336 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("http://www.chromium.org/path"))); | 275 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("http://www.chromium.org/path"))); |
337 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("ftp://www.chromium.org"))); | 276 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("ftp://www.chromium.org"))); |
338 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("chrome://flags"))); | 277 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("chrome://flags"))); |
339 } | 278 } |
340 | 279 |
341 } // namespace extensions | 280 } // namespace extensions |
OLD | NEW |