Chromium Code Reviews| 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.h" | 8 #include "chrome/browser/extensions/extension_service.h" |
| 9 #include "chrome/browser/extensions/extension_service_test_base.h" | 9 #include "chrome/browser/extensions/extension_service_test_base.h" |
| 10 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" | 10 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" |
| 11 #include "chrome/test/base/testing_profile.h" | 11 #include "chrome/test/base/testing_profile.h" |
| 12 #include "content/public/browser/render_process_host.h" | 12 #include "content/public/browser/render_process_host.h" |
| 13 #include "content/public/browser/web_contents.h" | 13 #include "content/public/browser/web_contents.h" |
| 14 #include "content/public/test/web_contents_tester.h" | 14 #include "content/public/test/web_contents_tester.h" |
| 15 #include "extensions/browser/extension_registry.h" | 15 #include "extensions/browser/extension_registry.h" |
| 16 #include "extensions/common/constants.h" | 16 #include "extensions/common/constants.h" |
| 17 #include "extensions/common/extension_icon_set.h" | 17 #include "extensions/common/extension_icon_set.h" |
| 18 #include "extensions/common/manifest_handlers/icons_handler.h" | 18 #include "extensions/common/manifest_handlers/icons_handler.h" |
| 19 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
| 20 #include "third_party/skia/include/core/SkBitmap.h" | 20 #include "third_party/skia/include/core/SkBitmap.h" |
| 21 #include "ui/gfx/skia_util.h" | 21 #include "ui/gfx/skia_util.h" |
| 22 | 22 |
| 23 namespace extensions { | |
| 24 | |
| 23 namespace { | 25 namespace { |
| 24 | 26 |
| 25 const char kAppUrl[] = "http://www.chromium.org"; | 27 const char kAppUrl[] = "http://www.chromium.org"; |
| 26 const char kAlternativeAppUrl[] = "http://www.notchromium.org"; | 28 const char kAlternativeAppUrl[] = "http://www.notchromium.org"; |
| 27 const char kAppTitle[] = "Test title"; | 29 const char kAppTitle[] = "Test title"; |
| 28 const char kAppShortName[] = "Test short name"; | 30 const char kAppShortName[] = "Test short name"; |
| 29 const char kAlternativeAppTitle[] = "Different test title"; | 31 const char kAlternativeAppTitle[] = "Different test title"; |
| 30 const char kAppDescription[] = "Test description"; | 32 const char kAppDescription[] = "Test description"; |
| 31 const char kAppIcon1[] = "fav1.png"; | 33 const char kAppIcon1[] = "fav1.png"; |
| 32 const char kAppIcon2[] = "fav2.png"; | 34 const char kAppIcon2[] = "fav2.png"; |
| 33 const char kAppIcon3[] = "fav3.png"; | 35 const char kAppIcon3[] = "fav3.png"; |
| 36 const char kAppIconURL1[] = "http://foo.com/1.png"; | |
| 37 const char kAppIconURL2[] = "http://foo.com/2.png"; | |
| 38 const char kAppIconURL3[] = "http://foo.com/3.png"; | |
| 39 const char kAppIconURL4[] = "http://foo.com/4.png"; | |
| 34 | 40 |
| 35 const int kIconSizeTiny = extension_misc::EXTENSION_ICON_BITTY; | 41 const int kIconSizeTiny = extension_misc::EXTENSION_ICON_BITTY; |
| 36 const int kIconSizeSmall = extension_misc::EXTENSION_ICON_SMALL; | 42 const int kIconSizeSmall = extension_misc::EXTENSION_ICON_SMALL; |
| 37 const int kIconSizeMedium = extension_misc::EXTENSION_ICON_MEDIUM; | 43 const int kIconSizeMedium = extension_misc::EXTENSION_ICON_MEDIUM; |
| 38 const int kIconSizeLarge = extension_misc::EXTENSION_ICON_LARGE; | 44 const int kIconSizeLarge = extension_misc::EXTENSION_ICON_LARGE; |
| 45 const int kIconSizeUnsupported = 123; | |
| 39 | 46 |
| 40 class BookmarkAppHelperTest : public testing::Test { | 47 class BookmarkAppHelperTest : public testing::Test { |
| 41 public: | 48 public: |
| 42 BookmarkAppHelperTest() {} | 49 BookmarkAppHelperTest() {} |
| 43 ~BookmarkAppHelperTest() override {} | 50 ~BookmarkAppHelperTest() override {} |
| 44 | 51 |
| 45 private: | 52 private: |
| 46 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperTest); | 53 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperTest); |
| 47 }; | 54 }; |
| 48 | 55 |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 76 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperExtensionServiceTest); | 83 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperExtensionServiceTest); |
| 77 }; | 84 }; |
| 78 | 85 |
| 79 SkBitmap CreateSquareBitmapWithColor(int size, SkColor color) { | 86 SkBitmap CreateSquareBitmapWithColor(int size, SkColor color) { |
| 80 SkBitmap bitmap; | 87 SkBitmap bitmap; |
| 81 bitmap.allocN32Pixels(size, size); | 88 bitmap.allocN32Pixels(size, size); |
| 82 bitmap.eraseColor(color); | 89 bitmap.eraseColor(color); |
| 83 return bitmap; | 90 return bitmap; |
| 84 } | 91 } |
| 85 | 92 |
| 93 BookmarkAppHelper::BitmapAndSource CreateSquareBitmapAndSourceWithColor( | |
| 94 int size, | |
| 95 SkColor color) { | |
| 96 return BookmarkAppHelper::BitmapAndSource( | |
| 97 GURL(), CreateSquareBitmapWithColor(size, color)); | |
| 98 } | |
| 99 | |
| 100 void ValidateBitmapSizeAndColor(SkBitmap bitmap, int size, SkColor color) { | |
| 101 // Obtain pixel lock to access pixels. | |
| 102 SkAutoLockPixels lock(bitmap); | |
| 103 EXPECT_EQ(color, bitmap.getColor(0, 0)); | |
| 104 EXPECT_EQ(size, bitmap.width()); | |
| 105 EXPECT_EQ(size, bitmap.height()); | |
| 106 } | |
| 107 | |
| 86 WebApplicationInfo::IconInfo CreateIconInfoWithBitmap(int size, SkColor color) { | 108 WebApplicationInfo::IconInfo CreateIconInfoWithBitmap(int size, SkColor color) { |
| 87 WebApplicationInfo::IconInfo icon_info; | 109 WebApplicationInfo::IconInfo icon_info; |
| 88 icon_info.width = size; | 110 icon_info.width = size; |
| 89 icon_info.height = size; | 111 icon_info.height = size; |
| 90 icon_info.data = CreateSquareBitmapWithColor(size, color); | 112 icon_info.data = CreateSquareBitmapWithColor(size, color); |
| 91 return icon_info; | 113 return icon_info; |
| 92 } | 114 } |
| 93 | 115 |
| 116 void ValidateAllIconsWithURLsArePresent(const WebApplicationInfo& info_to_check, | |
| 117 const WebApplicationInfo& other_info) { | |
| 118 for (const auto& icon : info_to_check.icons) { | |
| 119 if (!icon.url.is_empty()) { | |
| 120 bool found = false; | |
| 121 for (const auto& other_icon : info_to_check.icons) { | |
| 122 if (other_icon.url == icon.url && other_icon.width == icon.width) { | |
| 123 found = true; | |
| 124 break; | |
| 125 } | |
| 126 } | |
| 127 EXPECT_TRUE(found); | |
| 128 } | |
| 129 } | |
| 130 } | |
| 131 | |
| 94 void ValidateWebApplicationInfo(base::Closure callback, | 132 void ValidateWebApplicationInfo(base::Closure callback, |
| 95 const WebApplicationInfo& expected, | 133 const WebApplicationInfo& original, |
| 96 const WebApplicationInfo& actual) { | 134 const WebApplicationInfo& newly_made) { |
| 97 EXPECT_EQ(expected.title, actual.title); | 135 EXPECT_EQ(original.title, newly_made.title); |
| 98 EXPECT_EQ(expected.description, actual.description); | 136 EXPECT_EQ(original.description, newly_made.description); |
| 99 EXPECT_EQ(expected.app_url, actual.app_url); | 137 EXPECT_EQ(original.app_url, newly_made.app_url); |
| 100 EXPECT_EQ(expected.icons.size(), actual.icons.size()); | 138 // There should be 6 icons, as there are three sizes which need to be |
| 101 for (size_t i = 0; i < expected.icons.size(); ++i) { | 139 // generated, and each will generate a 1x and 2x icon. |
| 102 EXPECT_EQ(expected.icons[i].width, actual.icons[i].width); | 140 EXPECT_EQ(6u, newly_made.icons.size()); |
| 103 EXPECT_EQ(expected.icons[i].height, actual.icons[i].height); | |
| 104 EXPECT_EQ(expected.icons[i].url, actual.icons[i].url); | |
| 105 EXPECT_TRUE( | |
| 106 gfx::BitmapsAreEqual(expected.icons[i].data, actual.icons[i].data)); | |
| 107 } | |
| 108 callback.Run(); | 141 callback.Run(); |
| 109 } | 142 } |
| 110 | 143 |
| 111 } // namespace | 144 } // namespace |
| 112 | 145 |
| 113 namespace extensions { | |
| 114 | |
| 115 class TestBookmarkAppHelper : public BookmarkAppHelper { | 146 class TestBookmarkAppHelper : public BookmarkAppHelper { |
| 116 public: | 147 public: |
| 117 TestBookmarkAppHelper(ExtensionService* service, | 148 TestBookmarkAppHelper(ExtensionService* service, |
| 118 WebApplicationInfo web_app_info, | 149 WebApplicationInfo web_app_info, |
| 119 content::WebContents* contents) | 150 content::WebContents* contents) |
| 120 : BookmarkAppHelper(service->profile(), web_app_info, contents) {} | 151 : BookmarkAppHelper(service->profile(), web_app_info, contents) {} |
| 121 | 152 |
| 122 ~TestBookmarkAppHelper() override {} | 153 ~TestBookmarkAppHelper() override {} |
| 123 | 154 |
| 124 void CreationComplete(const extensions::Extension* extension, | 155 void CreationComplete(const extensions::Extension* extension, |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 219 base::RunLoop().RunUntilIdle(); | 250 base::RunLoop().RunUntilIdle(); |
| 220 EXPECT_TRUE(helper.extension()); | 251 EXPECT_TRUE(helper.extension()); |
| 221 const Extension* extension = | 252 const Extension* extension = |
| 222 service_->GetInstalledExtension(helper.extension()->id()); | 253 service_->GetInstalledExtension(helper.extension()->id()); |
| 223 EXPECT_TRUE(extension); | 254 EXPECT_TRUE(extension); |
| 224 EXPECT_EQ(1u, registry()->enabled_extensions().size()); | 255 EXPECT_EQ(1u, registry()->enabled_extensions().size()); |
| 225 EXPECT_TRUE(extension->from_bookmark()); | 256 EXPECT_TRUE(extension->from_bookmark()); |
| 226 EXPECT_EQ(kAppTitle, extension->name()); | 257 EXPECT_EQ(kAppTitle, extension->name()); |
| 227 EXPECT_EQ(kAppDescription, extension->description()); | 258 EXPECT_EQ(kAppDescription, extension->description()); |
| 228 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); | 259 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); |
| 229 // The tiny icon should have been removed and only the generated ones used. | 260 EXPECT_FALSE( |
| 230 EXPECT_TRUE( | |
| 231 IconsInfo::GetIconResource(extension, kIconSizeTiny, | 261 IconsInfo::GetIconResource(extension, kIconSizeTiny, |
| 232 ExtensionIconSet::MATCH_EXACTLY).empty()); | 262 ExtensionIconSet::MATCH_EXACTLY).empty()); |
| 233 EXPECT_FALSE( | 263 EXPECT_FALSE( |
| 234 IconsInfo::GetIconResource( | 264 IconsInfo::GetIconResource( |
| 235 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty()); | 265 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty()); |
| 236 EXPECT_FALSE( | 266 EXPECT_FALSE( |
| 237 IconsInfo::GetIconResource(extension, | 267 IconsInfo::GetIconResource(extension, |
| 238 kIconSizeSmall * 2, | 268 kIconSizeSmall * 2, |
| 239 ExtensionIconSet::MATCH_EXACTLY).empty()); | 269 ExtensionIconSet::MATCH_EXACTLY).empty()); |
| 240 EXPECT_FALSE( | 270 EXPECT_FALSE( |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 278 base::RunLoop().RunUntilIdle(); | 308 base::RunLoop().RunUntilIdle(); |
| 279 | 309 |
| 280 { | 310 { |
| 281 EXPECT_EQ(1u, registry()->enabled_extensions().size()); | 311 EXPECT_EQ(1u, registry()->enabled_extensions().size()); |
| 282 const Extension* extension = | 312 const Extension* extension = |
| 283 registry()->enabled_extensions().begin()->get(); | 313 registry()->enabled_extensions().begin()->get(); |
| 284 EXPECT_TRUE(extension->from_bookmark()); | 314 EXPECT_TRUE(extension->from_bookmark()); |
| 285 EXPECT_EQ(kAlternativeAppTitle, extension->name()); | 315 EXPECT_EQ(kAlternativeAppTitle, extension->name()); |
| 286 EXPECT_EQ(kAppDescription, extension->description()); | 316 EXPECT_EQ(kAppDescription, extension->description()); |
| 287 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); | 317 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); |
| 288 EXPECT_TRUE(extensions::IconsInfo::GetIconResource( | 318 EXPECT_FALSE(extensions::IconsInfo::GetIconResource( |
| 289 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY) | 319 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY) |
| 290 .empty()); | 320 .empty()); |
| 291 EXPECT_FALSE(extensions::IconsInfo::GetIconResource( | 321 EXPECT_FALSE(extensions::IconsInfo::GetIconResource( |
| 292 extension, kIconSizeLarge, ExtensionIconSet::MATCH_EXACTLY) | 322 extension, kIconSizeLarge, ExtensionIconSet::MATCH_EXACTLY) |
| 293 .empty()); | 323 .empty()); |
| 294 } | 324 } |
| 295 } | 325 } |
| 296 | 326 |
| 297 TEST_F(BookmarkAppHelperExtensionServiceTest, GetWebApplicationInfo) { | 327 TEST_F(BookmarkAppHelperExtensionServiceTest, GetWebApplicationInfo) { |
| 298 WebApplicationInfo web_app_info; | 328 WebApplicationInfo web_app_info; |
| 299 web_app_info.app_url = GURL(kAppUrl); | 329 web_app_info.app_url = GURL(kAppUrl); |
| 300 web_app_info.title = base::UTF8ToUTF16(kAppTitle); | 330 web_app_info.title = base::UTF8ToUTF16(kAppTitle); |
| 301 web_app_info.description = base::UTF8ToUTF16(kAppDescription); | 331 web_app_info.description = base::UTF8ToUTF16(kAppDescription); |
| 302 | 332 |
| 303 web_app_info.icons.push_back( | |
| 304 CreateIconInfoWithBitmap(kIconSizeSmall, SK_ColorRED)); | |
| 305 web_app_info.icons.push_back( | |
| 306 CreateIconInfoWithBitmap(kIconSizeLarge, SK_ColorRED)); | |
| 307 | |
| 308 extensions::CreateOrUpdateBookmarkApp(service_, &web_app_info); | 333 extensions::CreateOrUpdateBookmarkApp(service_, &web_app_info); |
| 309 base::RunLoop().RunUntilIdle(); | 334 base::RunLoop().RunUntilIdle(); |
| 310 | 335 |
| 311 EXPECT_EQ(1u, registry()->enabled_extensions().size()); | 336 EXPECT_EQ(1u, registry()->enabled_extensions().size()); |
| 312 base::RunLoop run_loop; | 337 base::RunLoop run_loop; |
| 313 extensions::GetWebApplicationInfoFromApp( | 338 extensions::GetWebApplicationInfoFromApp( |
| 314 profile_.get(), registry()->enabled_extensions().begin()->get(), | 339 profile_.get(), registry()->enabled_extensions().begin()->get(), |
| 315 base::Bind(&ValidateWebApplicationInfo, run_loop.QuitClosure(), | 340 base::Bind(&ValidateWebApplicationInfo, run_loop.QuitClosure(), |
| 316 web_app_info)); | 341 web_app_info)); |
| 317 run_loop.Run(); | 342 run_loop.Run(); |
| 318 } | 343 } |
| 319 | 344 |
| 345 TEST_F(BookmarkAppHelperExtensionServiceTest, LinkedAppIconsAreNotChanged) { | |
| 346 WebApplicationInfo web_app_info; | |
| 347 | |
| 348 // Add two icons with a URL and bitmap, two icons with just a bitmap, an | |
| 349 // icon with just URL and an icon in an unsupported size with just a URL. | |
| 350 WebApplicationInfo::IconInfo icon_info = | |
| 351 CreateIconInfoWithBitmap(kIconSizeSmall, SK_ColorRED); | |
| 352 icon_info.url = GURL(kAppIconURL1); | |
| 353 web_app_info.icons.push_back(icon_info); | |
| 354 | |
| 355 icon_info = CreateIconInfoWithBitmap(kIconSizeMedium, SK_ColorRED); | |
| 356 icon_info.url = GURL(kAppIconURL2); | |
| 357 web_app_info.icons.push_back(icon_info); | |
| 358 | |
| 359 icon_info.data = SkBitmap(); | |
| 360 icon_info.url = GURL(kAppIconURL3); | |
| 361 web_app_info.icons.push_back(icon_info); | |
| 362 | |
| 363 icon_info.url = GURL(kAppIconURL4); | |
| 364 web_app_info.icons.push_back(icon_info); | |
| 365 | |
| 366 icon_info = CreateIconInfoWithBitmap(kIconSizeLarge, SK_ColorRED); | |
| 367 web_app_info.icons.push_back(icon_info); | |
| 368 | |
| 369 icon_info = CreateIconInfoWithBitmap(kIconSizeUnsupported, SK_ColorRED); | |
| 370 web_app_info.icons.push_back(icon_info); | |
| 371 | |
| 372 // Now run the resizing and generation into a new web app info. | |
| 373 WebApplicationInfo new_web_app_info; | |
| 374 std::map<int, BookmarkAppHelper::BitmapAndSource> size_map = | |
| 375 BookmarkAppHelper::ResizeIconsAndGenerateMissing( | |
| 376 std::vector<BookmarkAppHelper::BitmapAndSource>(), &new_web_app_info); | |
| 377 | |
| 378 // Now check that the linked app icons (i.e. those with URLs) are matching in | |
| 379 // both lists. | |
| 380 ValidateAllIconsWithURLsArePresent(web_app_info, new_web_app_info); | |
| 381 ValidateAllIconsWithURLsArePresent(new_web_app_info, web_app_info); | |
|
calamity
2015/04/28 06:56:35
You could just use a counter in ValidateAllIconsWi
benwells
2015/04/28 08:10:56
As discussed there could be icons without URLs.
| |
| 382 } | |
| 383 | |
| 320 TEST_F(BookmarkAppHelperTest, UpdateWebAppInfoFromManifest) { | 384 TEST_F(BookmarkAppHelperTest, UpdateWebAppInfoFromManifest) { |
| 321 WebApplicationInfo web_app_info; | 385 WebApplicationInfo web_app_info; |
| 322 web_app_info.title = base::UTF8ToUTF16(kAlternativeAppTitle); | 386 web_app_info.title = base::UTF8ToUTF16(kAlternativeAppTitle); |
| 323 web_app_info.app_url = GURL(kAlternativeAppUrl); | 387 web_app_info.app_url = GURL(kAlternativeAppUrl); |
| 324 WebApplicationInfo::IconInfo info; | 388 WebApplicationInfo::IconInfo info; |
| 325 info.url = GURL(kAppIcon1); | 389 info.url = GURL(kAppIcon1); |
| 326 web_app_info.icons.push_back(info); | 390 web_app_info.icons.push_back(info); |
| 327 | 391 |
| 328 content::Manifest manifest; | 392 content::Manifest manifest; |
| 329 manifest.start_url = GURL(kAppUrl); | 393 manifest.start_url = GURL(kAppUrl); |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 350 manifest.icons.push_back(icon); | 414 manifest.icons.push_back(icon); |
| 351 | 415 |
| 352 BookmarkAppHelper::UpdateWebAppInfoFromManifest(manifest, &web_app_info); | 416 BookmarkAppHelper::UpdateWebAppInfoFromManifest(manifest, &web_app_info); |
| 353 EXPECT_EQ(base::UTF8ToUTF16(kAppTitle), web_app_info.title); | 417 EXPECT_EQ(base::UTF8ToUTF16(kAppTitle), web_app_info.title); |
| 354 | 418 |
| 355 EXPECT_EQ(2u, web_app_info.icons.size()); | 419 EXPECT_EQ(2u, web_app_info.icons.size()); |
| 356 EXPECT_EQ(GURL(kAppIcon2), web_app_info.icons[0].url); | 420 EXPECT_EQ(GURL(kAppIcon2), web_app_info.icons[0].url); |
| 357 EXPECT_EQ(GURL(kAppIcon3), web_app_info.icons[1].url); | 421 EXPECT_EQ(GURL(kAppIcon3), web_app_info.icons[1].url); |
| 358 } | 422 } |
| 359 | 423 |
| 424 TEST_F(BookmarkAppHelperTest, ConstrainBitmapsToSizes) { | |
| 425 std::set<int> desired_sizes; | |
| 426 desired_sizes.insert(16); | |
| 427 desired_sizes.insert(32); | |
| 428 desired_sizes.insert(128); | |
| 429 desired_sizes.insert(256); | |
| 430 | |
| 431 { | |
| 432 std::vector<BookmarkAppHelper::BitmapAndSource> bitmaps; | |
| 433 bitmaps.push_back(CreateSquareBitmapAndSourceWithColor(16, SK_ColorRED)); | |
| 434 bitmaps.push_back(CreateSquareBitmapAndSourceWithColor(32, SK_ColorGREEN)); | |
| 435 bitmaps.push_back(CreateSquareBitmapAndSourceWithColor(48, SK_ColorBLUE)); | |
| 436 bitmaps.push_back( | |
| 437 CreateSquareBitmapAndSourceWithColor(144, SK_ColorYELLOW)); | |
| 438 | |
| 439 std::map<int, BookmarkAppHelper::BitmapAndSource> results( | |
| 440 BookmarkAppHelper::ConstrainBitmapsToSizes(bitmaps, desired_sizes)); | |
| 441 | |
| 442 EXPECT_EQ(3u, results.size()); | |
| 443 ValidateBitmapSizeAndColor(results[16].bitmap, 16, SK_ColorRED); | |
| 444 ValidateBitmapSizeAndColor(results[32].bitmap, 32, SK_ColorGREEN); | |
| 445 ValidateBitmapSizeAndColor(results[128].bitmap, 128, SK_ColorYELLOW); | |
| 446 } | |
| 447 { | |
| 448 std::vector<BookmarkAppHelper::BitmapAndSource> bitmaps; | |
| 449 bitmaps.push_back(CreateSquareBitmapAndSourceWithColor(512, SK_ColorRED)); | |
| 450 bitmaps.push_back(CreateSquareBitmapAndSourceWithColor(18, SK_ColorGREEN)); | |
| 451 bitmaps.push_back(CreateSquareBitmapAndSourceWithColor(33, SK_ColorBLUE)); | |
| 452 bitmaps.push_back(CreateSquareBitmapAndSourceWithColor(17, SK_ColorYELLOW)); | |
| 453 | |
| 454 std::map<int, BookmarkAppHelper::BitmapAndSource> results( | |
| 455 BookmarkAppHelper::ConstrainBitmapsToSizes(bitmaps, desired_sizes)); | |
| 456 | |
| 457 EXPECT_EQ(3u, results.size()); | |
| 458 ValidateBitmapSizeAndColor(results[16].bitmap, 16, SK_ColorYELLOW); | |
| 459 ValidateBitmapSizeAndColor(results[32].bitmap, 32, SK_ColorBLUE); | |
| 460 ValidateBitmapSizeAndColor(results[256].bitmap, 256, SK_ColorRED); | |
| 461 } | |
| 462 } | |
| 463 | |
| 360 TEST_F(BookmarkAppHelperTest, IsValidBookmarkAppUrl) { | 464 TEST_F(BookmarkAppHelperTest, IsValidBookmarkAppUrl) { |
| 361 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("https://www.chromium.org"))); | 465 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("https://www.chromium.org"))); |
| 362 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("http://www.chromium.org/path"))); | 466 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("http://www.chromium.org/path"))); |
| 363 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("ftp://www.chromium.org"))); | 467 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("ftp://www.chromium.org"))); |
| 364 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("chrome://flags"))); | 468 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("chrome://flags"))); |
| 365 } | 469 } |
| 366 | 470 |
| 367 } // namespace extensions | 471 } // namespace extensions |
| OLD | NEW |