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" | |
11 #include "extensions/browser/extension_registry.h" | 14 #include "extensions/browser/extension_registry.h" |
12 #include "extensions/common/constants.h" | 15 #include "extensions/common/constants.h" |
13 #include "extensions/common/extension_icon_set.h" | 16 #include "extensions/common/extension_icon_set.h" |
14 #include "extensions/common/manifest_handlers/icons_handler.h" | 17 #include "extensions/common/manifest_handlers/icons_handler.h" |
15 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
16 #include "third_party/skia/include/core/SkBitmap.h" | 19 #include "third_party/skia/include/core/SkBitmap.h" |
17 #include "ui/gfx/skia_util.h" | 20 #include "ui/gfx/skia_util.h" |
18 | 21 |
19 namespace { | 22 namespace { |
20 | 23 |
21 #if !defined(OS_ANDROID) | 24 #if !defined(OS_ANDROID) |
22 const char kAppUrl[] = "http://www.chromium.org"; | 25 const char kAppUrl[] = "http://www.chromium.org"; |
23 const char kAppTitle[] = "Test title"; | 26 const char kAppTitle[] = "Test title"; |
24 const char kAlternativeAppTitle[] = "Different test title"; | 27 const char kAlternativeAppTitle[] = "Different test title"; |
25 const char kAppDescription[] = "Test description"; | 28 const char kAppDescription[] = "Test description"; |
26 | 29 |
30 const int kIconSizeTiny = extension_misc::EXTENSION_ICON_BITTY; | |
27 const int kIconSizeSmall = extension_misc::EXTENSION_ICON_SMALL; | 31 const int kIconSizeSmall = extension_misc::EXTENSION_ICON_SMALL; |
32 const int kIconSizeMedium = extension_misc::EXTENSION_ICON_MEDIUM; | |
28 const int kIconSizeLarge = extension_misc::EXTENSION_ICON_LARGE; | 33 const int kIconSizeLarge = extension_misc::EXTENSION_ICON_LARGE; |
29 #endif | 34 #endif |
30 | 35 |
31 class BookmarkAppHelperTest : public testing::Test { | 36 class BookmarkAppHelperTest : public testing::Test { |
32 public: | 37 public: |
33 BookmarkAppHelperTest() {} | 38 BookmarkAppHelperTest() {} |
34 virtual ~BookmarkAppHelperTest() {} | 39 virtual ~BookmarkAppHelperTest() {} |
35 | 40 |
36 private: | 41 private: |
37 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperTest); | 42 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperTest); |
38 }; | 43 }; |
39 | 44 |
40 class BookmarkAppHelperExtensionServiceTest : public ExtensionServiceTestBase { | 45 class BookmarkAppHelperExtensionServiceTest : public ExtensionServiceTestBase { |
41 public: | 46 public: |
42 BookmarkAppHelperExtensionServiceTest() {} | 47 BookmarkAppHelperExtensionServiceTest() {} |
43 virtual ~BookmarkAppHelperExtensionServiceTest() {} | 48 virtual ~BookmarkAppHelperExtensionServiceTest() {} |
44 | 49 |
45 virtual void SetUp() OVERRIDE { | 50 virtual void SetUp() OVERRIDE { |
46 ExtensionServiceTestBase::SetUp(); | 51 ExtensionServiceTestBase::SetUp(); |
47 InitializeEmptyExtensionService(); | 52 InitializeEmptyExtensionService(); |
48 service_->Init(); | 53 service_->Init(); |
49 EXPECT_EQ(0u, service_->extensions()->size()); | 54 EXPECT_EQ(0u, service_->extensions()->size()); |
50 } | 55 } |
51 | 56 |
wjywbs
2014/05/30 14:43:03
Creating TestWebContents also creates a RenderProc
| |
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 | |
52 private: | 70 private: |
53 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperExtensionServiceTest); | 71 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperExtensionServiceTest); |
54 }; | 72 }; |
55 | 73 |
56 SkBitmap CreateSquareBitmapWithColor(int size, SkColor color) { | 74 SkBitmap CreateSquareBitmapWithColor(int size, SkColor color) { |
57 SkBitmap bitmap; | 75 SkBitmap bitmap; |
58 bitmap.setConfig(SkBitmap::kARGB_8888_Config, size, size); | 76 bitmap.setConfig(SkBitmap::kARGB_8888_Config, size, size); |
59 bitmap.allocPixels(); | 77 bitmap.allocPixels(); |
60 bitmap.eraseColor(color); | 78 bitmap.eraseColor(color); |
61 return bitmap; | 79 return bitmap; |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
129 }; | 147 }; |
130 | 148 |
131 // Android doesn't support extensions. | 149 // Android doesn't support extensions. |
132 #if !defined(OS_ANDROID) | 150 #if !defined(OS_ANDROID) |
133 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkApp) { | 151 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkApp) { |
134 WebApplicationInfo web_app_info; | 152 WebApplicationInfo web_app_info; |
135 web_app_info.app_url = GURL(kAppUrl); | 153 web_app_info.app_url = GURL(kAppUrl); |
136 web_app_info.title = base::UTF8ToUTF16(kAppTitle); | 154 web_app_info.title = base::UTF8ToUTF16(kAppTitle); |
137 web_app_info.description = base::UTF8ToUTF16(kAppDescription); | 155 web_app_info.description = base::UTF8ToUTF16(kAppDescription); |
138 | 156 |
139 TestBookmarkAppHelper helper(service_, web_app_info, NULL); | 157 scoped_ptr<content::WebContents> contents( |
158 content::WebContentsTester::CreateTestWebContents(profile_.get(), NULL)); | |
159 TestBookmarkAppHelper helper(service_, web_app_info, contents.get()); | |
140 helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete, | 160 helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete, |
141 base::Unretained(&helper))); | 161 base::Unretained(&helper))); |
142 | 162 |
143 std::map<GURL, std::vector<SkBitmap> > icon_map; | 163 std::map<GURL, std::vector<SkBitmap> > icon_map; |
144 icon_map[GURL(kAppUrl)].push_back( | 164 icon_map[GURL(kAppUrl)].push_back( |
145 CreateSquareBitmapWithColor(kIconSizeSmall, SK_ColorRED)); | 165 CreateSquareBitmapWithColor(kIconSizeSmall, SK_ColorRED)); |
146 helper.CompleteIconDownload(true, icon_map); | 166 helper.CompleteIconDownload(true, icon_map); |
147 | 167 |
148 base::RunLoop().RunUntilIdle(); | 168 base::RunLoop().RunUntilIdle(); |
149 EXPECT_TRUE(helper.extension()); | 169 EXPECT_TRUE(helper.extension()); |
150 const Extension* extension = | 170 const Extension* extension = |
151 service_->GetInstalledExtension(helper.extension()->id()); | 171 service_->GetInstalledExtension(helper.extension()->id()); |
152 EXPECT_TRUE(extension); | 172 EXPECT_TRUE(extension); |
153 EXPECT_EQ(1u, service_->extensions()->size()); | 173 EXPECT_EQ(1u, service_->extensions()->size()); |
154 EXPECT_TRUE(extension->from_bookmark()); | 174 EXPECT_TRUE(extension->from_bookmark()); |
155 EXPECT_EQ(kAppTitle, extension->name()); | 175 EXPECT_EQ(kAppTitle, extension->name()); |
156 EXPECT_EQ(kAppDescription, extension->description()); | 176 EXPECT_EQ(kAppDescription, extension->description()); |
157 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); | 177 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); |
158 EXPECT_FALSE( | 178 EXPECT_FALSE( |
159 IconsInfo::GetIconResource( | 179 IconsInfo::GetIconResource( |
160 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty()); | 180 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty()); |
161 } | 181 } |
162 | 182 |
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 | |
163 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateAndUpdateBookmarkApp) { | 224 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateAndUpdateBookmarkApp) { |
164 EXPECT_EQ(0u, registry_->enabled_extensions().size()); | 225 EXPECT_EQ(0u, registry_->enabled_extensions().size()); |
165 WebApplicationInfo web_app_info; | 226 WebApplicationInfo web_app_info; |
166 web_app_info.app_url = GURL(kAppUrl); | 227 web_app_info.app_url = GURL(kAppUrl); |
167 web_app_info.title = base::UTF8ToUTF16(kAppTitle); | 228 web_app_info.title = base::UTF8ToUTF16(kAppTitle); |
168 web_app_info.description = base::UTF8ToUTF16(kAppDescription); | 229 web_app_info.description = base::UTF8ToUTF16(kAppDescription); |
169 web_app_info.icons.push_back( | 230 web_app_info.icons.push_back( |
170 CreateIconInfoWithBitmap(kIconSizeSmall, SK_ColorRED)); | 231 CreateIconInfoWithBitmap(kIconSizeSmall, SK_ColorRED)); |
171 | 232 |
172 extensions::CreateOrUpdateBookmarkApp(service_, web_app_info); | 233 extensions::CreateOrUpdateBookmarkApp(service_, web_app_info); |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
271 } | 332 } |
272 | 333 |
273 TEST_F(BookmarkAppHelperTest, IsValidBookmarkAppUrl) { | 334 TEST_F(BookmarkAppHelperTest, IsValidBookmarkAppUrl) { |
274 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("https://www.chromium.org"))); | 335 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("https://www.chromium.org"))); |
275 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("http://www.chromium.org/path"))); | 336 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("http://www.chromium.org/path"))); |
276 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("ftp://www.chromium.org"))); | 337 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("ftp://www.chromium.org"))); |
277 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("chrome://flags"))); | 338 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("chrome://flags"))); |
278 } | 339 } |
279 | 340 |
280 } // namespace extensions | 341 } // namespace extensions |
OLD | NEW |