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 icon_info.width = 0; |
| 362 icon_info.height = 0; |
| 363 web_app_info.icons.push_back(icon_info); |
| 364 |
| 365 icon_info.url = GURL(kAppIconURL4); |
| 366 web_app_info.icons.push_back(icon_info); |
| 367 |
| 368 icon_info = CreateIconInfoWithBitmap(kIconSizeLarge, SK_ColorRED); |
| 369 web_app_info.icons.push_back(icon_info); |
| 370 |
| 371 icon_info = CreateIconInfoWithBitmap(kIconSizeUnsupported, SK_ColorRED); |
| 372 web_app_info.icons.push_back(icon_info); |
| 373 |
| 374 // 'Download' one of the icons without a size or bitmap. |
| 375 std::vector<BookmarkAppHelper::BitmapAndSource> downloaded; |
| 376 downloaded.push_back(BookmarkAppHelper::BitmapAndSource( |
| 377 GURL(kAppIconURL3), |
| 378 CreateSquareBitmapWithColor(kIconSizeLarge, SK_ColorBLACK))); |
| 379 |
| 380 // Now run the resizing and generation into a new web app info. |
| 381 WebApplicationInfo new_web_app_info; |
| 382 std::map<int, BookmarkAppHelper::BitmapAndSource> size_map = |
| 383 BookmarkAppHelper::ResizeIconsAndGenerateMissing(downloaded, |
| 384 &new_web_app_info); |
| 385 |
| 386 // Now check that the linked app icons (i.e. those with URLs) are matching in |
| 387 // both lists. |
| 388 ValidateAllIconsWithURLsArePresent(web_app_info, new_web_app_info); |
| 389 ValidateAllIconsWithURLsArePresent(new_web_app_info, web_app_info); |
| 390 } |
| 391 |
320 TEST_F(BookmarkAppHelperTest, UpdateWebAppInfoFromManifest) { | 392 TEST_F(BookmarkAppHelperTest, UpdateWebAppInfoFromManifest) { |
321 WebApplicationInfo web_app_info; | 393 WebApplicationInfo web_app_info; |
322 web_app_info.title = base::UTF8ToUTF16(kAlternativeAppTitle); | 394 web_app_info.title = base::UTF8ToUTF16(kAlternativeAppTitle); |
323 web_app_info.app_url = GURL(kAlternativeAppUrl); | 395 web_app_info.app_url = GURL(kAlternativeAppUrl); |
324 WebApplicationInfo::IconInfo info; | 396 WebApplicationInfo::IconInfo info; |
325 info.url = GURL(kAppIcon1); | 397 info.url = GURL(kAppIcon1); |
326 web_app_info.icons.push_back(info); | 398 web_app_info.icons.push_back(info); |
327 | 399 |
328 content::Manifest manifest; | 400 content::Manifest manifest; |
329 manifest.start_url = GURL(kAppUrl); | 401 manifest.start_url = GURL(kAppUrl); |
(...skipping 20 matching lines...) Expand all Loading... |
350 manifest.icons.push_back(icon); | 422 manifest.icons.push_back(icon); |
351 | 423 |
352 BookmarkAppHelper::UpdateWebAppInfoFromManifest(manifest, &web_app_info); | 424 BookmarkAppHelper::UpdateWebAppInfoFromManifest(manifest, &web_app_info); |
353 EXPECT_EQ(base::UTF8ToUTF16(kAppTitle), web_app_info.title); | 425 EXPECT_EQ(base::UTF8ToUTF16(kAppTitle), web_app_info.title); |
354 | 426 |
355 EXPECT_EQ(2u, web_app_info.icons.size()); | 427 EXPECT_EQ(2u, web_app_info.icons.size()); |
356 EXPECT_EQ(GURL(kAppIcon2), web_app_info.icons[0].url); | 428 EXPECT_EQ(GURL(kAppIcon2), web_app_info.icons[0].url); |
357 EXPECT_EQ(GURL(kAppIcon3), web_app_info.icons[1].url); | 429 EXPECT_EQ(GURL(kAppIcon3), web_app_info.icons[1].url); |
358 } | 430 } |
359 | 431 |
| 432 TEST_F(BookmarkAppHelperTest, ConstrainBitmapsToSizes) { |
| 433 std::set<int> desired_sizes; |
| 434 desired_sizes.insert(16); |
| 435 desired_sizes.insert(32); |
| 436 desired_sizes.insert(128); |
| 437 desired_sizes.insert(256); |
| 438 |
| 439 { |
| 440 std::vector<BookmarkAppHelper::BitmapAndSource> bitmaps; |
| 441 bitmaps.push_back(CreateSquareBitmapAndSourceWithColor(16, SK_ColorRED)); |
| 442 bitmaps.push_back(CreateSquareBitmapAndSourceWithColor(32, SK_ColorGREEN)); |
| 443 bitmaps.push_back(CreateSquareBitmapAndSourceWithColor(48, SK_ColorBLUE)); |
| 444 bitmaps.push_back( |
| 445 CreateSquareBitmapAndSourceWithColor(144, SK_ColorYELLOW)); |
| 446 |
| 447 std::map<int, BookmarkAppHelper::BitmapAndSource> results( |
| 448 BookmarkAppHelper::ConstrainBitmapsToSizes(bitmaps, desired_sizes)); |
| 449 |
| 450 EXPECT_EQ(3u, results.size()); |
| 451 ValidateBitmapSizeAndColor(results[16].bitmap, 16, SK_ColorRED); |
| 452 ValidateBitmapSizeAndColor(results[32].bitmap, 32, SK_ColorGREEN); |
| 453 ValidateBitmapSizeAndColor(results[128].bitmap, 128, SK_ColorYELLOW); |
| 454 } |
| 455 { |
| 456 std::vector<BookmarkAppHelper::BitmapAndSource> bitmaps; |
| 457 bitmaps.push_back(CreateSquareBitmapAndSourceWithColor(512, SK_ColorRED)); |
| 458 bitmaps.push_back(CreateSquareBitmapAndSourceWithColor(18, SK_ColorGREEN)); |
| 459 bitmaps.push_back(CreateSquareBitmapAndSourceWithColor(33, SK_ColorBLUE)); |
| 460 bitmaps.push_back(CreateSquareBitmapAndSourceWithColor(17, SK_ColorYELLOW)); |
| 461 |
| 462 std::map<int, BookmarkAppHelper::BitmapAndSource> results( |
| 463 BookmarkAppHelper::ConstrainBitmapsToSizes(bitmaps, desired_sizes)); |
| 464 |
| 465 EXPECT_EQ(3u, results.size()); |
| 466 ValidateBitmapSizeAndColor(results[16].bitmap, 16, SK_ColorYELLOW); |
| 467 ValidateBitmapSizeAndColor(results[32].bitmap, 32, SK_ColorBLUE); |
| 468 ValidateBitmapSizeAndColor(results[256].bitmap, 256, SK_ColorRED); |
| 469 } |
| 470 } |
| 471 |
360 TEST_F(BookmarkAppHelperTest, IsValidBookmarkAppUrl) { | 472 TEST_F(BookmarkAppHelperTest, IsValidBookmarkAppUrl) { |
361 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("https://www.chromium.org"))); | 473 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("https://www.chromium.org"))); |
362 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("http://www.chromium.org/path"))); | 474 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("http://www.chromium.org/path"))); |
363 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("ftp://www.chromium.org"))); | 475 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("ftp://www.chromium.org"))); |
364 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("chrome://flags"))); | 476 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("chrome://flags"))); |
365 } | 477 } |
366 | 478 |
367 } // namespace extensions | 479 } // namespace extensions |
OLD | NEW |