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/macros.h" | 7 #include "base/macros.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "chrome/browser/banners/app_banner_settings_helper.h" | 9 #include "chrome/browser/banners/app_banner_settings_helper.h" |
10 #include "chrome/browser/extensions/extension_service.h" | 10 #include "chrome/browser/extensions/extension_service.h" |
11 #include "chrome/browser/extensions/extension_service_test_base.h" | 11 #include "chrome/browser/extensions/extension_service_test_base.h" |
| 12 #include "chrome/browser/extensions/test_bookmark_app_helper.h" |
12 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" | 13 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" |
13 #include "chrome/test/base/testing_profile.h" | 14 #include "chrome/test/base/testing_profile.h" |
14 #include "content/public/browser/render_process_host.h" | 15 #include "content/public/browser/render_process_host.h" |
15 #include "content/public/browser/web_contents.h" | 16 #include "content/public/browser/web_contents.h" |
16 #include "content/public/test/test_utils.h" | 17 #include "content/public/test/test_utils.h" |
17 #include "content/public/test/web_contents_tester.h" | 18 #include "content/public/test/web_contents_tester.h" |
18 #include "extensions/browser/extension_registry.h" | 19 #include "extensions/browser/extension_registry.h" |
19 #include "extensions/common/constants.h" | 20 #include "extensions/common/constants.h" |
20 #include "extensions/common/extension_icon_set.h" | 21 #include "extensions/common/extension_icon_set.h" |
21 #include "extensions/common/manifest_handlers/icons_handler.h" | 22 #include "extensions/common/manifest_handlers/icons_handler.h" |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 std::map<int, BookmarkAppHelper::BitmapAndSource> size_map = | 271 std::map<int, BookmarkAppHelper::BitmapAndSource> size_map = |
271 BookmarkAppHelper::ResizeIconsAndGenerateMissing( | 272 BookmarkAppHelper::ResizeIconsAndGenerateMissing( |
272 downloaded, TestSizesToGenerate(), &web_app_info); | 273 downloaded, TestSizesToGenerate(), &web_app_info); |
273 | 274 |
274 ValidateIconsGeneratedAndResizedCorrectly(downloaded, size_map, | 275 ValidateIconsGeneratedAndResizedCorrectly(downloaded, size_map, |
275 TestSizesToGenerate(), | 276 TestSizesToGenerate(), |
276 expected_generated, | 277 expected_generated, |
277 expected_resized); | 278 expected_resized); |
278 } | 279 } |
279 | 280 |
280 } // namespace | 281 class TestBookmarkAppHelperImpl : public test::TestBookmarkAppHelper { |
| 282 public: |
| 283 TestBookmarkAppHelperImpl(ExtensionService* service, |
| 284 WebApplicationInfo web_app_info, |
| 285 content::WebContents* contents) |
| 286 : TestBookmarkAppHelper(service->profile(), web_app_info, contents) {} |
281 | 287 |
282 class TestBookmarkAppHelper : public BookmarkAppHelper { | 288 ~TestBookmarkAppHelperImpl() override {} |
283 public: | |
284 TestBookmarkAppHelper(ExtensionService* service, | |
285 WebApplicationInfo web_app_info, | |
286 content::WebContents* contents) | |
287 : BookmarkAppHelper(service->profile(), web_app_info, contents) {} | |
288 | |
289 ~TestBookmarkAppHelper() override {} | |
290 | 289 |
291 void CreationComplete(const extensions::Extension* extension, | 290 void CreationComplete(const extensions::Extension* extension, |
292 const WebApplicationInfo& web_app_info) { | 291 const WebApplicationInfo& web_app_info) { |
293 extension_ = extension; | 292 extension_ = extension; |
294 } | 293 } |
295 | 294 |
296 void CompleteGetManifest(const content::Manifest& manifest) { | 295 void CompleteGetManifest(const content::Manifest& manifest) { |
297 BookmarkAppHelper::OnDidGetManifest(GURL(), manifest); | 296 TestBookmarkAppHelper::OnDidGetManifest(GURL(), manifest); |
298 } | 297 } |
299 | 298 |
300 void CompleteIconDownload( | 299 void CompleteIconDownload( |
301 bool success, | 300 bool success, |
302 const std::map<GURL, std::vector<SkBitmap> >& bitmaps) { | 301 const std::map<GURL, std::vector<SkBitmap> >& bitmaps) { |
303 BookmarkAppHelper::OnIconsDownloaded(success, bitmaps); | 302 TestBookmarkAppHelper::OnIconsDownloaded(success, bitmaps); |
304 } | 303 } |
305 | 304 |
306 const Extension* extension() { return extension_; } | 305 const Extension* extension() { return extension_; } |
307 | 306 |
308 private: | 307 private: |
309 const Extension* extension_; | 308 const Extension* extension_; |
310 | 309 |
311 DISALLOW_COPY_AND_ASSIGN(TestBookmarkAppHelper); | 310 DISALLOW_COPY_AND_ASSIGN(TestBookmarkAppHelperImpl); |
312 }; | 311 }; |
313 | 312 |
| 313 } // namespace |
| 314 |
314 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkApp) { | 315 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkApp) { |
315 WebApplicationInfo web_app_info; | 316 WebApplicationInfo web_app_info; |
316 web_app_info.app_url = GURL(kAppUrl); | 317 web_app_info.app_url = GURL(kAppUrl); |
317 web_app_info.title = base::UTF8ToUTF16(kAppTitle); | 318 web_app_info.title = base::UTF8ToUTF16(kAppTitle); |
318 web_app_info.description = base::UTF8ToUTF16(kAppDescription); | 319 web_app_info.description = base::UTF8ToUTF16(kAppDescription); |
319 | 320 |
320 std::unique_ptr<content::WebContents> contents( | 321 std::unique_ptr<content::WebContents> contents( |
321 content::WebContentsTester::CreateTestWebContents(profile(), nullptr)); | 322 content::WebContentsTester::CreateTestWebContents(profile(), nullptr)); |
322 TestBookmarkAppHelper helper(service_, web_app_info, contents.get()); | 323 TestBookmarkAppHelperImpl helper(service_, web_app_info, contents.get()); |
323 helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete, | 324 helper.Create(base::Bind(&TestBookmarkAppHelperImpl::CreationComplete, |
324 base::Unretained(&helper))); | 325 base::Unretained(&helper))); |
325 | 326 |
326 std::map<GURL, std::vector<SkBitmap> > icon_map; | 327 std::map<GURL, std::vector<SkBitmap> > icon_map; |
327 icon_map[GURL(kAppUrl)].push_back( | 328 icon_map[GURL(kAppUrl)].push_back( |
328 CreateSquareBitmapWithColor(kIconSizeSmall, SK_ColorRED)); | 329 CreateSquareBitmapWithColor(kIconSizeSmall, SK_ColorRED)); |
329 helper.CompleteIconDownload(true, icon_map); | 330 helper.CompleteIconDownload(true, icon_map); |
330 | 331 |
331 content::RunAllBlockingPoolTasksUntilIdle(); | 332 content::RunAllBlockingPoolTasksUntilIdle(); |
332 EXPECT_TRUE(helper.extension()); | 333 EXPECT_TRUE(helper.extension()); |
333 const Extension* extension = | 334 const Extension* extension = |
(...skipping 12 matching lines...) Expand all Loading... |
346 contents.get(), web_app_info.app_url, web_app_info.app_url.spec(), | 347 contents.get(), web_app_info.app_url, web_app_info.app_url.spec(), |
347 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN) | 348 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN) |
348 .is_null()); | 349 .is_null()); |
349 } | 350 } |
350 | 351 |
351 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkAppWithManifest) { | 352 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkAppWithManifest) { |
352 WebApplicationInfo web_app_info; | 353 WebApplicationInfo web_app_info; |
353 | 354 |
354 std::unique_ptr<content::WebContents> contents( | 355 std::unique_ptr<content::WebContents> contents( |
355 content::WebContentsTester::CreateTestWebContents(profile(), nullptr)); | 356 content::WebContentsTester::CreateTestWebContents(profile(), nullptr)); |
356 TestBookmarkAppHelper helper(service_, web_app_info, contents.get()); | 357 TestBookmarkAppHelperImpl helper(service_, web_app_info, contents.get()); |
357 helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete, | 358 helper.Create(base::Bind(&TestBookmarkAppHelperImpl::CreationComplete, |
358 base::Unretained(&helper))); | 359 base::Unretained(&helper))); |
359 | 360 |
360 content::Manifest manifest; | 361 content::Manifest manifest; |
361 manifest.start_url = GURL(kAppUrl); | 362 manifest.start_url = GURL(kAppUrl); |
362 manifest.name = base::NullableString16(base::UTF8ToUTF16(kAppTitle), false); | 363 manifest.name = base::NullableString16(base::UTF8ToUTF16(kAppTitle), false); |
363 helper.CompleteGetManifest(manifest); | 364 helper.CompleteGetManifest(manifest); |
364 | 365 |
365 std::map<GURL, std::vector<SkBitmap> > icon_map; | 366 std::map<GURL, std::vector<SkBitmap> > icon_map; |
366 helper.CompleteIconDownload(true, icon_map); | 367 helper.CompleteIconDownload(true, icon_map); |
367 | 368 |
(...skipping 14 matching lines...) Expand all Loading... |
382 } | 383 } |
383 | 384 |
384 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkAppNoContents) { | 385 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkAppNoContents) { |
385 WebApplicationInfo web_app_info; | 386 WebApplicationInfo web_app_info; |
386 web_app_info.app_url = GURL(kAppUrl); | 387 web_app_info.app_url = GURL(kAppUrl); |
387 web_app_info.title = base::UTF8ToUTF16(kAppTitle); | 388 web_app_info.title = base::UTF8ToUTF16(kAppTitle); |
388 web_app_info.description = base::UTF8ToUTF16(kAppDescription); | 389 web_app_info.description = base::UTF8ToUTF16(kAppDescription); |
389 web_app_info.icons.push_back( | 390 web_app_info.icons.push_back( |
390 CreateIconInfoWithBitmap(kIconSizeTiny, SK_ColorRED)); | 391 CreateIconInfoWithBitmap(kIconSizeTiny, SK_ColorRED)); |
391 | 392 |
392 TestBookmarkAppHelper helper(service_, web_app_info, NULL); | 393 TestBookmarkAppHelperImpl helper(service_, web_app_info, NULL); |
393 helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete, | 394 helper.Create(base::Bind(&TestBookmarkAppHelperImpl::CreationComplete, |
394 base::Unretained(&helper))); | 395 base::Unretained(&helper))); |
395 | 396 |
396 content::RunAllBlockingPoolTasksUntilIdle(); | 397 content::RunAllBlockingPoolTasksUntilIdle(); |
397 EXPECT_TRUE(helper.extension()); | 398 EXPECT_TRUE(helper.extension()); |
398 const Extension* extension = | 399 const Extension* extension = |
399 service_->GetInstalledExtension(helper.extension()->id()); | 400 service_->GetInstalledExtension(helper.extension()->id()); |
400 EXPECT_TRUE(extension); | 401 EXPECT_TRUE(extension); |
401 EXPECT_EQ(1u, registry()->enabled_extensions().size()); | 402 EXPECT_EQ(1u, registry()->enabled_extensions().size()); |
402 EXPECT_TRUE(extension->from_bookmark()); | 403 EXPECT_TRUE(extension->from_bookmark()); |
403 EXPECT_EQ(kAppTitle, extension->name()); | 404 EXPECT_EQ(kAppTitle, extension->name()); |
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
773 TestIconGeneration(kIconSizeTiny, 0, 3); | 774 TestIconGeneration(kIconSizeTiny, 0, 3); |
774 } | 775 } |
775 | 776 |
776 TEST_F(BookmarkAppHelperTest, IconsResizedWhenOnlyAGigantorOneIsProvided) { | 777 TEST_F(BookmarkAppHelperTest, IconsResizedWhenOnlyAGigantorOneIsProvided) { |
777 // When an enormous icon is provided, each desired icon size should be resized | 778 // When an enormous icon is provided, each desired icon size should be resized |
778 // from it, and no icons should be generated. | 779 // from it, and no icons should be generated. |
779 TestIconGeneration(kIconSizeGigantor, 0, 3); | 780 TestIconGeneration(kIconSizeGigantor, 0, 3); |
780 } | 781 } |
781 | 782 |
782 } // namespace extensions | 783 } // namespace extensions |
OLD | NEW |