Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(929)

Side by Side Diff: chrome/browser/extensions/bookmark_app_helper_unittest.cc

Issue 782693002: Ensure there are always nice icons for bookmark apps. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mac compile Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperExtensionServiceTest); 76 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperExtensionServiceTest);
77 }; 77 };
78 78
79 SkBitmap CreateSquareBitmapWithColor(int size, SkColor color) { 79 SkBitmap CreateSquareBitmapWithColor(int size, SkColor color) {
80 SkBitmap bitmap; 80 SkBitmap bitmap;
81 bitmap.allocN32Pixels(size, size); 81 bitmap.allocN32Pixels(size, size);
82 bitmap.eraseColor(color); 82 bitmap.eraseColor(color);
83 return bitmap; 83 return bitmap;
84 } 84 }
85 85
86 void ValidateBitmapSizeAndColor(SkBitmap bitmap, int size, SkColor color) {
87 // Obtain pixel lock to access pixels.
88 SkAutoLockPixels lock(bitmap);
89 EXPECT_EQ(color, bitmap.getColor(0, 0));
90 EXPECT_EQ(size, bitmap.width());
91 EXPECT_EQ(size, bitmap.height());
92 }
93
94 WebApplicationInfo::IconInfo CreateIconInfoWithBitmap(int size, SkColor color) { 86 WebApplicationInfo::IconInfo CreateIconInfoWithBitmap(int size, SkColor color) {
95 WebApplicationInfo::IconInfo icon_info; 87 WebApplicationInfo::IconInfo icon_info;
96 icon_info.width = size; 88 icon_info.width = size;
97 icon_info.height = size; 89 icon_info.height = size;
98 icon_info.data = CreateSquareBitmapWithColor(size, color); 90 icon_info.data = CreateSquareBitmapWithColor(size, color);
99 return icon_info; 91 return icon_info;
100 } 92 }
101 93
102 void ValidateWebApplicationInfo(base::Closure callback, 94 void ValidateWebApplicationInfo(base::Closure callback,
103 const WebApplicationInfo& expected, 95 const WebApplicationInfo& expected,
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 base::RunLoop().RunUntilIdle(); 219 base::RunLoop().RunUntilIdle();
228 EXPECT_TRUE(helper.extension()); 220 EXPECT_TRUE(helper.extension());
229 const Extension* extension = 221 const Extension* extension =
230 service_->GetInstalledExtension(helper.extension()->id()); 222 service_->GetInstalledExtension(helper.extension()->id());
231 EXPECT_TRUE(extension); 223 EXPECT_TRUE(extension);
232 EXPECT_EQ(1u, registry()->enabled_extensions().size()); 224 EXPECT_EQ(1u, registry()->enabled_extensions().size());
233 EXPECT_TRUE(extension->from_bookmark()); 225 EXPECT_TRUE(extension->from_bookmark());
234 EXPECT_EQ(kAppTitle, extension->name()); 226 EXPECT_EQ(kAppTitle, extension->name());
235 EXPECT_EQ(kAppDescription, extension->description()); 227 EXPECT_EQ(kAppDescription, extension->description());
236 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); 228 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension));
237 EXPECT_FALSE( 229 // The tiny icon should have been removed and only the generated ones used.
238 IconsInfo::GetIconResource( 230 EXPECT_TRUE(
239 extension, kIconSizeTiny, ExtensionIconSet::MATCH_EXACTLY).empty()); 231 IconsInfo::GetIconResource(extension, kIconSizeTiny,
232 ExtensionIconSet::MATCH_EXACTLY).empty());
240 EXPECT_FALSE( 233 EXPECT_FALSE(
241 IconsInfo::GetIconResource( 234 IconsInfo::GetIconResource(
242 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty()); 235 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty());
243 EXPECT_FALSE( 236 EXPECT_FALSE(
244 IconsInfo::GetIconResource(extension, 237 IconsInfo::GetIconResource(extension,
245 kIconSizeSmall * 2, 238 kIconSizeSmall * 2,
246 ExtensionIconSet::MATCH_EXACTLY).empty()); 239 ExtensionIconSet::MATCH_EXACTLY).empty());
247 EXPECT_FALSE( 240 EXPECT_FALSE(
248 IconsInfo::GetIconResource( 241 IconsInfo::GetIconResource(
249 extension, kIconSizeMedium, ExtensionIconSet::MATCH_EXACTLY).empty()); 242 extension, kIconSizeMedium, ExtensionIconSet::MATCH_EXACTLY).empty());
250 EXPECT_FALSE( 243 EXPECT_FALSE(
251 IconsInfo::GetIconResource(extension, 244 IconsInfo::GetIconResource(extension,
252 kIconSizeMedium * 2, 245 kIconSizeMedium * 2,
253 ExtensionIconSet::MATCH_EXACTLY).empty()); 246 ExtensionIconSet::MATCH_EXACTLY).empty());
254 } 247 }
255 248
256 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateAndUpdateBookmarkApp) { 249 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateAndUpdateBookmarkApp) {
257 EXPECT_EQ(0u, registry()->enabled_extensions().size()); 250 EXPECT_EQ(0u, registry()->enabled_extensions().size());
258 WebApplicationInfo web_app_info; 251 WebApplicationInfo web_app_info;
259 web_app_info.app_url = GURL(kAppUrl); 252 web_app_info.app_url = GURL(kAppUrl);
260 web_app_info.title = base::UTF8ToUTF16(kAppTitle); 253 web_app_info.title = base::UTF8ToUTF16(kAppTitle);
261 web_app_info.description = base::UTF8ToUTF16(kAppDescription); 254 web_app_info.description = base::UTF8ToUTF16(kAppDescription);
262 web_app_info.icons.push_back( 255 web_app_info.icons.push_back(
263 CreateIconInfoWithBitmap(kIconSizeSmall, SK_ColorRED)); 256 CreateIconInfoWithBitmap(kIconSizeSmall, SK_ColorRED));
264 257
265 extensions::CreateOrUpdateBookmarkApp(service_, web_app_info); 258 extensions::CreateOrUpdateBookmarkApp(service_, &web_app_info);
266 base::RunLoop().RunUntilIdle(); 259 base::RunLoop().RunUntilIdle();
267 260
268 { 261 {
269 EXPECT_EQ(1u, registry()->enabled_extensions().size()); 262 EXPECT_EQ(1u, registry()->enabled_extensions().size());
270 const Extension* extension = 263 const Extension* extension =
271 registry()->enabled_extensions().begin()->get(); 264 registry()->enabled_extensions().begin()->get();
272 EXPECT_TRUE(extension->from_bookmark()); 265 EXPECT_TRUE(extension->from_bookmark());
273 EXPECT_EQ(kAppTitle, extension->name()); 266 EXPECT_EQ(kAppTitle, extension->name());
274 EXPECT_EQ(kAppDescription, extension->description()); 267 EXPECT_EQ(kAppDescription, extension->description());
275 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); 268 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension));
276 EXPECT_FALSE(extensions::IconsInfo::GetIconResource( 269 EXPECT_FALSE(extensions::IconsInfo::GetIconResource(
277 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY) 270 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY)
278 .empty()); 271 .empty());
279 } 272 }
280 273
281 web_app_info.title = base::UTF8ToUTF16(kAlternativeAppTitle); 274 web_app_info.title = base::UTF8ToUTF16(kAlternativeAppTitle);
282 web_app_info.icons[0] = CreateIconInfoWithBitmap(kIconSizeLarge, SK_ColorRED); 275 web_app_info.icons[0] = CreateIconInfoWithBitmap(kIconSizeLarge, SK_ColorRED);
283 276
284 extensions::CreateOrUpdateBookmarkApp(service_, web_app_info); 277 extensions::CreateOrUpdateBookmarkApp(service_, &web_app_info);
285 base::RunLoop().RunUntilIdle(); 278 base::RunLoop().RunUntilIdle();
286 279
287 { 280 {
288 EXPECT_EQ(1u, registry()->enabled_extensions().size()); 281 EXPECT_EQ(1u, registry()->enabled_extensions().size());
289 const Extension* extension = 282 const Extension* extension =
290 registry()->enabled_extensions().begin()->get(); 283 registry()->enabled_extensions().begin()->get();
291 EXPECT_TRUE(extension->from_bookmark()); 284 EXPECT_TRUE(extension->from_bookmark());
292 EXPECT_EQ(kAlternativeAppTitle, extension->name()); 285 EXPECT_EQ(kAlternativeAppTitle, extension->name());
293 EXPECT_EQ(kAppDescription, extension->description()); 286 EXPECT_EQ(kAppDescription, extension->description());
294 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); 287 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension));
(...skipping 10 matching lines...) Expand all
305 WebApplicationInfo web_app_info; 298 WebApplicationInfo web_app_info;
306 web_app_info.app_url = GURL(kAppUrl); 299 web_app_info.app_url = GURL(kAppUrl);
307 web_app_info.title = base::UTF8ToUTF16(kAppTitle); 300 web_app_info.title = base::UTF8ToUTF16(kAppTitle);
308 web_app_info.description = base::UTF8ToUTF16(kAppDescription); 301 web_app_info.description = base::UTF8ToUTF16(kAppDescription);
309 302
310 web_app_info.icons.push_back( 303 web_app_info.icons.push_back(
311 CreateIconInfoWithBitmap(kIconSizeSmall, SK_ColorRED)); 304 CreateIconInfoWithBitmap(kIconSizeSmall, SK_ColorRED));
312 web_app_info.icons.push_back( 305 web_app_info.icons.push_back(
313 CreateIconInfoWithBitmap(kIconSizeLarge, SK_ColorRED)); 306 CreateIconInfoWithBitmap(kIconSizeLarge, SK_ColorRED));
314 307
315 extensions::CreateOrUpdateBookmarkApp(service_, web_app_info); 308 extensions::CreateOrUpdateBookmarkApp(service_, &web_app_info);
316 base::RunLoop().RunUntilIdle(); 309 base::RunLoop().RunUntilIdle();
317 310
318 EXPECT_EQ(1u, registry()->enabled_extensions().size()); 311 EXPECT_EQ(1u, registry()->enabled_extensions().size());
319 base::RunLoop run_loop; 312 base::RunLoop run_loop;
320 extensions::GetWebApplicationInfoFromApp( 313 extensions::GetWebApplicationInfoFromApp(
321 profile_.get(), registry()->enabled_extensions().begin()->get(), 314 profile_.get(), registry()->enabled_extensions().begin()->get(),
322 base::Bind(&ValidateWebApplicationInfo, run_loop.QuitClosure(), 315 base::Bind(&ValidateWebApplicationInfo, run_loop.QuitClosure(),
323 web_app_info)); 316 web_app_info));
324 run_loop.Run(); 317 run_loop.Run();
325 } 318 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 manifest.icons.push_back(icon); 350 manifest.icons.push_back(icon);
358 351
359 BookmarkAppHelper::UpdateWebAppInfoFromManifest(manifest, &web_app_info); 352 BookmarkAppHelper::UpdateWebAppInfoFromManifest(manifest, &web_app_info);
360 EXPECT_EQ(base::UTF8ToUTF16(kAppTitle), web_app_info.title); 353 EXPECT_EQ(base::UTF8ToUTF16(kAppTitle), web_app_info.title);
361 354
362 EXPECT_EQ(2u, web_app_info.icons.size()); 355 EXPECT_EQ(2u, web_app_info.icons.size());
363 EXPECT_EQ(GURL(kAppIcon2), web_app_info.icons[0].url); 356 EXPECT_EQ(GURL(kAppIcon2), web_app_info.icons[0].url);
364 EXPECT_EQ(GURL(kAppIcon3), web_app_info.icons[1].url); 357 EXPECT_EQ(GURL(kAppIcon3), web_app_info.icons[1].url);
365 } 358 }
366 359
367 TEST_F(BookmarkAppHelperTest, ConstrainBitmapsToSizes) {
368 std::set<int> desired_sizes;
369 desired_sizes.insert(16);
370 desired_sizes.insert(32);
371 desired_sizes.insert(128);
372 desired_sizes.insert(256);
373
374 {
375 std::vector<SkBitmap> bitmaps;
376 bitmaps.push_back(CreateSquareBitmapWithColor(16, SK_ColorRED));
377 bitmaps.push_back(CreateSquareBitmapWithColor(32, SK_ColorGREEN));
378 bitmaps.push_back(CreateSquareBitmapWithColor(48, SK_ColorBLUE));
379 bitmaps.push_back(CreateSquareBitmapWithColor(144, SK_ColorYELLOW));
380
381 std::map<int, SkBitmap> results(
382 BookmarkAppHelper::ConstrainBitmapsToSizes(bitmaps, desired_sizes));
383
384 EXPECT_EQ(3u, results.size());
385 ValidateBitmapSizeAndColor(results[16], 16, SK_ColorRED);
386 ValidateBitmapSizeAndColor(results[32], 32, SK_ColorGREEN);
387 ValidateBitmapSizeAndColor(results[128], 128, SK_ColorYELLOW);
388 }
389 {
390 std::vector<SkBitmap> bitmaps;
391 bitmaps.push_back(CreateSquareBitmapWithColor(512, SK_ColorRED));
392 bitmaps.push_back(CreateSquareBitmapWithColor(18, SK_ColorGREEN));
393 bitmaps.push_back(CreateSquareBitmapWithColor(33, SK_ColorBLUE));
394 bitmaps.push_back(CreateSquareBitmapWithColor(17, SK_ColorYELLOW));
395
396 std::map<int, SkBitmap> results(
397 BookmarkAppHelper::ConstrainBitmapsToSizes(bitmaps, desired_sizes));
398
399 EXPECT_EQ(3u, results.size());
400 ValidateBitmapSizeAndColor(results[16], 16, SK_ColorYELLOW);
401 ValidateBitmapSizeAndColor(results[32], 32, SK_ColorBLUE);
402 ValidateBitmapSizeAndColor(results[256], 256, SK_ColorRED);
403 }
404 }
405
406 TEST_F(BookmarkAppHelperTest, IsValidBookmarkAppUrl) { 360 TEST_F(BookmarkAppHelperTest, IsValidBookmarkAppUrl) {
407 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("https://www.chromium.org"))); 361 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("https://www.chromium.org")));
408 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("http://www.chromium.org/path"))); 362 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("http://www.chromium.org/path")));
409 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("ftp://www.chromium.org"))); 363 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("ftp://www.chromium.org")));
410 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("chrome://flags"))); 364 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("chrome://flags")));
411 } 365 }
412 366
413 } // namespace extensions 367 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/bookmark_app_helper.cc ('k') | chrome/browser/extensions/convert_web_app.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698