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

Side by Side Diff: chrome/installer/util/shell_util_unittest.cc

Issue 14287008: Refactoring installer shortcut deletion; adding dedicated shortcut update feature. (Closed) Base URL: http://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comment fixes; some refactoring in ShellUtil unittest. Created 7 years, 7 months 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/installer/util/shell_util.h" 5 #include "chrome/installer/util/shell_util.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/base_paths.h" 9 #include "base/base_paths.h"
10 #include "base/base_paths_win.h" 10 #include "base/base_paths_win.h"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 test_properties_.reset( 70 test_properties_.reset(
71 new ShellUtil::ShortcutProperties(ShellUtil::CURRENT_USER)); 71 new ShellUtil::ShortcutProperties(ShellUtil::CURRENT_USER));
72 test_properties_->set_target(chrome_exe_); 72 test_properties_->set_target(chrome_exe_);
73 test_properties_->set_arguments(L"--test --chrome"); 73 test_properties_->set_arguments(L"--test --chrome");
74 test_properties_->set_description(L"Makes polar bears dance."); 74 test_properties_->set_description(L"Makes polar bears dance.");
75 test_properties_->set_icon(icon_path, 0); 75 test_properties_->set_icon(icon_path, 0);
76 test_properties_->set_app_id(L"Polar.Bear"); 76 test_properties_->set_app_id(L"Polar.Bear");
77 test_properties_->set_dual_mode(true); 77 test_properties_->set_dual_mode(true);
78 } 78 }
79 79
80 // Creates a shortcut in |temp_dir| using |test_properties_|. The shortcut
gab 2013/05/02 21:23:59 This is not actually true, your method always crea
huangs 2013/05/02 21:59:35 Moot; undoing change.
81 // name is specified by |name|, or obtained from |dist_| if |name| is empty.
82 base::FilePath CreateTestShortcutHelper(
gab 2013/05/02 21:23:59 I feel this method makes the tests slightly less r
huangs 2013/05/02 21:59:35 Done.
83 const base::ScopedTempDir& temp_dir,
84 const string16& name) {
85 bool res = ShellUtil::CreateOrUpdateShortcut(
gab 2013/05/02 21:23:59 s/res/result
huangs 2013/05/02 21:59:35 Okay, do so in the future.
86 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_,
87 *test_properties_,
88 ShellUtil::SHELL_SHORTCUT_CREATE_ALWAYS);
89 DCHECK(res);
90 string16 shortcut_name(!name.empty() ? name :
91 dist_->GetAppShortCutName() + installer::kLnkExt);
92 base::FilePath shortcut_path(temp_dir.path().Append(shortcut_name));
93 DCHECK(file_util::PathExists(shortcut_path));
94 return shortcut_path;
95 }
96
80 // Validates that the shortcut at |location| matches |properties| (and 97 // Validates that the shortcut at |location| matches |properties| (and
81 // implicit default properties) for |dist|. 98 // implicit default properties) for |dist|.
82 // Note: This method doesn't verify the |pin_to_taskbar| property as it 99 // Note: This method doesn't verify the |pin_to_taskbar| property as it
83 // implies real (non-mocked) state which is flaky to test. 100 // implies real (non-mocked) state which is flaky to test.
84 void ValidateChromeShortcut( 101 void ValidateChromeShortcut(
85 ShellUtil::ShortcutLocation location, 102 ShellUtil::ShortcutLocation location,
86 BrowserDistribution* dist, 103 BrowserDistribution* dist,
87 const ShellUtil::ShortcutProperties& properties) { 104 const ShellUtil::ShortcutProperties& properties) {
88 base::FilePath expected_path; 105 base::FilePath expected_path;
89 switch (location) { 106 switch (location) {
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 test_properties_->level = ShellUtil::CURRENT_USER; 357 test_properties_->level = ShellUtil::CURRENT_USER;
341 ASSERT_TRUE(ShellUtil::CreateOrUpdateShortcut( 358 ASSERT_TRUE(ShellUtil::CreateOrUpdateShortcut(
342 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, 359 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_,
343 *test_properties_, 360 *test_properties_,
344 ShellUtil::SHELL_SHORTCUT_CREATE_ALWAYS)); 361 ShellUtil::SHELL_SHORTCUT_CREATE_ALWAYS));
345 ASSERT_TRUE(file_util::PathExists( 362 ASSERT_TRUE(file_util::PathExists(
346 fake_user_desktop_.path().Append(shortcut_name))); 363 fake_user_desktop_.path().Append(shortcut_name)));
347 } 364 }
348 365
349 TEST_F(ShellUtilShortcutTest, RemoveChromeShortcut) { 366 TEST_F(ShellUtilShortcutTest, RemoveChromeShortcut) {
350 ASSERT_TRUE(ShellUtil::CreateOrUpdateShortcut( 367 base::FilePath shortcut_path(
351 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, 368 CreateTestShortcutHelper(fake_user_desktop_, L""));
352 *test_properties_,
353 ShellUtil::SHELL_SHORTCUT_CREATE_ALWAYS));
354 369
355 string16 shortcut_name(dist_->GetAppShortCutName() + installer::kLnkExt); 370 ASSERT_TRUE(ShellUtil::RemoveShortcuts(
356 base::FilePath shortcut_path(fake_user_desktop_.path().Append(shortcut_name)); 371 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, ShellUtil::CURRENT_USER,
357 ASSERT_TRUE(file_util::PathExists(shortcut_path)); 372 chrome_exe_));
358
359 ASSERT_TRUE(ShellUtil::RemoveShortcut(
360 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, chrome_exe_,
361 ShellUtil::CURRENT_USER, NULL));
362 ASSERT_FALSE(file_util::PathExists(shortcut_path)); 373 ASSERT_FALSE(file_util::PathExists(shortcut_path));
363 ASSERT_TRUE(file_util::PathExists(shortcut_path.DirName())); 374 ASSERT_TRUE(file_util::PathExists(shortcut_path.DirName()));
364 } 375 }
365 376
366 TEST_F(ShellUtilShortcutTest, RemoveSystemLevelChromeShortcut) { 377 TEST_F(ShellUtilShortcutTest, RemoveSystemLevelChromeShortcut) {
367 test_properties_->level = ShellUtil::SYSTEM_LEVEL; 378 test_properties_->level = ShellUtil::SYSTEM_LEVEL;
368 ASSERT_TRUE(ShellUtil::CreateOrUpdateShortcut( 379 base::FilePath shortcut_path(
369 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, 380 CreateTestShortcutHelper(fake_common_desktop_, L""));
370 *test_properties_,
371 ShellUtil::SHELL_SHORTCUT_CREATE_ALWAYS));
372 381
373 string16 shortcut_name(dist_->GetAppShortCutName() + installer::kLnkExt); 382 ASSERT_TRUE(ShellUtil::RemoveShortcuts(
374 base::FilePath shortcut_path( 383 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, ShellUtil::SYSTEM_LEVEL,
375 fake_common_desktop_.path().Append(shortcut_name)); 384 chrome_exe_));
376 ASSERT_TRUE(file_util::PathExists(shortcut_path));
377
378 ASSERT_TRUE(ShellUtil::RemoveShortcut(
379 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, chrome_exe_,
380 ShellUtil::SYSTEM_LEVEL, NULL));
381 ASSERT_FALSE(file_util::PathExists(shortcut_path)); 385 ASSERT_FALSE(file_util::PathExists(shortcut_path));
382 ASSERT_TRUE(file_util::PathExists(shortcut_path.DirName())); 386 ASSERT_TRUE(file_util::PathExists(shortcut_path.DirName()));
383 } 387 }
384
385 TEST_F(ShellUtilShortcutTest, RemoveChromeShortcutWithSpecialName) {
386 static const wchar_t kSpecialName[] = L"I'm special";
387 test_properties_->set_shortcut_name(kSpecialName);
388 ASSERT_TRUE(ShellUtil::CreateOrUpdateShortcut(
389 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_,
390 *test_properties_,
391 ShellUtil::SHELL_SHORTCUT_CREATE_ALWAYS));
392
393 string16 shortcut_name(string16(kSpecialName).append(installer::kLnkExt));
394 base::FilePath shortcut_path(fake_user_desktop_.path().Append(shortcut_name));
395 ASSERT_TRUE(file_util::PathExists(shortcut_path));
396
397 ASSERT_TRUE(ShellUtil::RemoveShortcut(
398 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, chrome_exe_,
399 ShellUtil::CURRENT_USER, &string16(kSpecialName)));
400 ASSERT_FALSE(file_util::PathExists(shortcut_path));
401 ASSERT_TRUE(file_util::PathExists(shortcut_path.DirName()));
402 }
403 388
404 TEST_F(ShellUtilShortcutTest, RemoveMultipleChromeShortcuts) { 389 TEST_F(ShellUtilShortcutTest, RemoveMultipleChromeShortcuts) {
405 const wchar_t kShortcutName1[] = L"Chrome 1"; 390 const wchar_t kShortcutName1[] = L"Chrome 1";
406 const wchar_t kShortcutName2[] = L"Chrome 2"; 391 const wchar_t kShortcutName2[] = L"Chrome 2";
407 392
408 test_properties_->set_shortcut_name(kShortcutName1); 393 test_properties_->set_shortcut_name(kShortcutName1);
409 ASSERT_TRUE(ShellUtil::CreateOrUpdateShortcut(
410 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_,
411 *test_properties_,
412 ShellUtil::SHELL_SHORTCUT_CREATE_ALWAYS));
413 string16 shortcut1_name(
414 string16(kShortcutName1).append(installer::kLnkExt));
415 base::FilePath shortcut1_path( 394 base::FilePath shortcut1_path(
416 fake_user_desktop_.path().Append(shortcut1_name)); 395 CreateTestShortcutHelper(fake_user_desktop_,
417 ASSERT_TRUE(file_util::PathExists(shortcut1_path)); 396 string16(kShortcutName1).append(installer::kLnkExt)));
418 397
419 test_properties_->set_shortcut_name(kShortcutName2); 398 test_properties_->set_shortcut_name(kShortcutName2);
420 test_properties_->set_arguments(L"--profile-directory=\"Profile 2\""); 399 test_properties_->set_arguments(L"--profile-directory=\"Profile 2\"");
421 ASSERT_TRUE(ShellUtil::CreateOrUpdateShortcut(
422 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_,
423 *test_properties_,
424 ShellUtil::SHELL_SHORTCUT_CREATE_ALWAYS));
425 string16 shortcut2_name(string16(kShortcutName2).append(installer::kLnkExt));
426 base::FilePath shortcut2_path( 400 base::FilePath shortcut2_path(
427 fake_user_desktop_.path().Append(shortcut2_name)); 401 CreateTestShortcutHelper(fake_user_desktop_,
428 ASSERT_TRUE(file_util::PathExists(shortcut2_path)); 402 string16(kShortcutName2).append(installer::kLnkExt)));
429 403
430 ASSERT_TRUE(ShellUtil::RemoveShortcut( 404 ASSERT_TRUE(ShellUtil::RemoveShortcuts(
431 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, chrome_exe_, 405 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, ShellUtil::CURRENT_USER,
432 ShellUtil::CURRENT_USER, NULL)); 406 chrome_exe_));
433 ASSERT_FALSE(file_util::PathExists(shortcut1_path)); 407 ASSERT_FALSE(file_util::PathExists(shortcut1_path));
434 ASSERT_FALSE(file_util::PathExists(shortcut2_path)); 408 ASSERT_FALSE(file_util::PathExists(shortcut2_path));
435 ASSERT_TRUE(file_util::PathExists(shortcut1_path.DirName())); 409 ASSERT_TRUE(file_util::PathExists(shortcut1_path.DirName()));
436 } 410 }
437 411
412 TEST_F(ShellUtilShortcutTest, UpdateChromeShortcut) {
413 base::FilePath shortcut_path(
414 CreateTestShortcutHelper(fake_user_desktop_, L""));
415
416 base::FilePath new_exe = temp_dir_.path().Append(L"manganese.exe");
417 ShellUtil::ShortcutProperties properties(ShellUtil::CURRENT_USER);
418 properties.set_target(new_exe);
419
420 ASSERT_TRUE(ShellUtil::UpdateShortcuts(
421 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, ShellUtil::CURRENT_USER,
422 chrome_exe_, properties));
423 base::FilePath target_path;
424 ASSERT_TRUE(base::win::ResolveShortcut(shortcut_path, &target_path, NULL));
gab 2013/05/02 21:23:59 Please use ValidateChromeShortcut to validate all
huangs 2013/05/02 21:59:35 Not using ValidateChromeShortcut for now, per disc
425 ASSERT_EQ(new_exe, target_path);
426 }
427
428 TEST_F(ShellUtilShortcutTest, UpdateSystemLevelChromeShortcut) {
429 test_properties_->level = ShellUtil::SYSTEM_LEVEL;
430 base::FilePath shortcut_path(
431 CreateTestShortcutHelper(fake_common_desktop_, L""));
432
433 base::FilePath new_exe = temp_dir_.path().Append(L"manganese.exe");
434 ShellUtil::ShortcutProperties properties(ShellUtil::CURRENT_USER);
435 properties.set_target(new_exe);
436
437 ASSERT_TRUE(ShellUtil::UpdateShortcuts(
438 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, ShellUtil::SYSTEM_LEVEL,
439 chrome_exe_, properties));
440 base::FilePath target_path;
441 ASSERT_TRUE(base::win::ResolveShortcut(shortcut_path, &target_path, NULL));
442 ASSERT_EQ(new_exe, target_path);
443 }
444
445 TEST_F(ShellUtilShortcutTest, UpdateMultipleChromeShortcuts) {
446 const wchar_t kShortcutName1[] = L"Chrome 1";
447 const wchar_t kShortcutName2[] = L"Chrome 2";
448
449 test_properties_->set_shortcut_name(kShortcutName1);
450 base::FilePath shortcut1_path(
451 CreateTestShortcutHelper(fake_user_desktop_,
452 string16(kShortcutName1).append(installer::kLnkExt)));
453
454 test_properties_->set_shortcut_name(kShortcutName2);
455 test_properties_->set_arguments(L"--profile-directory=\"Profile 2\"");
456 base::FilePath shortcut2_path(
457 CreateTestShortcutHelper(fake_user_desktop_,
458 string16(kShortcutName2).append(installer::kLnkExt)));
459
460 base::FilePath new_exe = temp_dir_.path().Append(L"manganese.exe");
461 ShellUtil::ShortcutProperties properties(ShellUtil::CURRENT_USER);
462 properties.set_target(new_exe);
463
464 ASSERT_TRUE(ShellUtil::UpdateShortcuts(
465 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, ShellUtil::CURRENT_USER,
466 chrome_exe_, properties));
467
468 base::FilePath target_path1;
469 ASSERT_TRUE(base::win::ResolveShortcut(shortcut1_path, &target_path1, NULL));
470 ASSERT_EQ(new_exe, target_path1);
471 base::FilePath target_path2;
472 ASSERT_TRUE(base::win::ResolveShortcut(shortcut2_path, &target_path2, NULL));
473 ASSERT_EQ(new_exe, target_path2);
474 }
475
438 TEST_F(ShellUtilShortcutTest, CreateMultipleStartMenuShortcutsAndRemoveFolder) { 476 TEST_F(ShellUtilShortcutTest, CreateMultipleStartMenuShortcutsAndRemoveFolder) {
439 ASSERT_TRUE(ShellUtil::CreateOrUpdateShortcut( 477 ASSERT_TRUE(ShellUtil::CreateOrUpdateShortcut(
440 ShellUtil::SHORTCUT_LOCATION_START_MENU, 478 ShellUtil::SHORTCUT_LOCATION_START_MENU,
441 dist_, *test_properties_, 479 dist_, *test_properties_,
442 ShellUtil::SHELL_SHORTCUT_CREATE_ALWAYS)); 480 ShellUtil::SHELL_SHORTCUT_CREATE_ALWAYS));
443 test_properties_->set_shortcut_name(L"A second shortcut"); 481 test_properties_->set_shortcut_name(L"A second shortcut");
444 ASSERT_TRUE(ShellUtil::CreateOrUpdateShortcut( 482 ASSERT_TRUE(ShellUtil::CreateOrUpdateShortcut(
445 ShellUtil::SHORTCUT_LOCATION_START_MENU, 483 ShellUtil::SHORTCUT_LOCATION_START_MENU,
446 dist_, *test_properties_, 484 dist_, *test_properties_,
447 ShellUtil::SHELL_SHORTCUT_CREATE_ALWAYS)); 485 ShellUtil::SHELL_SHORTCUT_CREATE_ALWAYS));
448 486
449 base::FilePath shortcut_folder( 487 base::FilePath shortcut_folder(
450 fake_start_menu_.path().Append(dist_->GetAppShortCutName())); 488 fake_start_menu_.path().Append(dist_->GetAppShortCutName()));
451 file_util::FileEnumerator file_counter(shortcut_folder, false, 489 file_util::FileEnumerator file_counter(shortcut_folder, false,
452 file_util::FileEnumerator::FILES); 490 file_util::FileEnumerator::FILES);
453 int count = 0; 491 int count = 0;
454 while (!file_counter.Next().empty()) 492 while (!file_counter.Next().empty())
455 ++count; 493 ++count;
456 EXPECT_EQ(2, count); 494 EXPECT_EQ(2, count);
457 495
458 ASSERT_TRUE(file_util::PathExists(shortcut_folder)); 496 ASSERT_TRUE(file_util::PathExists(shortcut_folder));
459 ASSERT_TRUE(ShellUtil::RemoveShortcut( 497 ASSERT_TRUE(ShellUtil::RemoveShortcuts(
460 ShellUtil::SHORTCUT_LOCATION_START_MENU, dist_, chrome_exe_, 498 ShellUtil::SHORTCUT_LOCATION_START_MENU, dist_, ShellUtil::CURRENT_USER,
461 ShellUtil::CURRENT_USER, NULL)); 499 chrome_exe_));
462 ASSERT_FALSE(file_util::PathExists(shortcut_folder)); 500 ASSERT_FALSE(file_util::PathExists(shortcut_folder));
463 } 501 }
464 502
465 TEST_F(ShellUtilShortcutTest, DontRemoveChromeShortcutIfPointsToAnotherChrome) { 503 TEST_F(ShellUtilShortcutTest, DontRemoveChromeShortcutIfPointsToAnotherChrome) {
466 base::ScopedTempDir other_exe_dir; 504 base::ScopedTempDir other_exe_dir;
467 ASSERT_TRUE(other_exe_dir.CreateUniqueTempDir()); 505 ASSERT_TRUE(other_exe_dir.CreateUniqueTempDir());
468 base::FilePath other_chrome_exe = 506 base::FilePath other_chrome_exe =
469 other_exe_dir.path().Append(installer::kChromeExe); 507 other_exe_dir.path().Append(installer::kChromeExe);
470 EXPECT_EQ(0, file_util::WriteFile(other_chrome_exe, "", 0)); 508 EXPECT_EQ(0, file_util::WriteFile(other_chrome_exe, "", 0));
471 509
472 test_properties_->set_target(other_chrome_exe); 510 test_properties_->set_target(other_chrome_exe);
473 ASSERT_TRUE(ShellUtil::CreateOrUpdateShortcut( 511 ASSERT_TRUE(ShellUtil::CreateOrUpdateShortcut(
474 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, 512 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_,
475 *test_properties_, 513 *test_properties_,
476 ShellUtil::SHELL_SHORTCUT_CREATE_ALWAYS)); 514 ShellUtil::SHELL_SHORTCUT_CREATE_ALWAYS));
477 515
478 string16 shortcut_name(dist_->GetAppShortCutName() + installer::kLnkExt); 516 string16 shortcut_name(dist_->GetAppShortCutName() + installer::kLnkExt);
479 base::FilePath shortcut_path(fake_user_desktop_.path().Append(shortcut_name)); 517 base::FilePath shortcut_path(fake_user_desktop_.path().Append(shortcut_name));
480 ASSERT_TRUE(file_util::PathExists(shortcut_path)); 518 ASSERT_TRUE(file_util::PathExists(shortcut_path));
481 519
482 // The shortcut shouldn't be removed as it was installed pointing to 520 // The shortcut shouldn't be removed as it was installed pointing to
483 // |other_chrome_exe| and RemoveChromeShortcut() is being told that the 521 // |other_chrome_exe| and RemoveChromeShortcut() is being told that the
484 // removed shortcut should point to |chrome_exe_|. 522 // removed shortcut should point to |chrome_exe_|.
485 ASSERT_TRUE(ShellUtil::RemoveShortcut( 523 ASSERT_TRUE(ShellUtil::RemoveShortcuts(
486 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, chrome_exe_, 524 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist_, ShellUtil::CURRENT_USER,
487 ShellUtil::CURRENT_USER, NULL)); 525 chrome_exe_));
488 ASSERT_TRUE(file_util::PathExists(shortcut_path)); 526 ASSERT_TRUE(file_util::PathExists(shortcut_path));
489 ASSERT_TRUE(file_util::PathExists(shortcut_path.DirName())); 527 ASSERT_TRUE(file_util::PathExists(shortcut_path.DirName()));
490 } 528 }
491 529
492 TEST(ShellUtilTest, BuildAppModelIdBasic) { 530 TEST(ShellUtilTest, BuildAppModelIdBasic) {
493 std::vector<string16> components; 531 std::vector<string16> components;
494 BrowserDistribution* dist = BrowserDistribution::GetDistribution(); 532 BrowserDistribution* dist = BrowserDistribution::GetDistribution();
495 const string16 base_app_id(dist->GetBaseAppId()); 533 const string16 base_app_id(dist->GetBaseAppId());
496 components.push_back(base_app_id); 534 components.push_back(base_app_id);
497 ASSERT_EQ(base_app_id, ShellUtil::BuildAppModelId(components)); 535 ASSERT_EQ(base_app_id, ShellUtil::BuildAppModelId(components));
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 598
561 const string16 expected[] = { L"", L"MY", L"MZXQ", L"MZXW6", L"MZXW6YQ", 599 const string16 expected[] = { L"", L"MY", L"MZXQ", L"MZXW6", L"MZXW6YQ",
562 L"MZXW6YTB", L"MZXW6YTBOI"}; 600 L"MZXW6YTB", L"MZXW6YTBOI"};
563 601
564 // Run the tests, with one more letter in the input every pass. 602 // Run the tests, with one more letter in the input every pass.
565 for (int i = 0; i < arraysize(expected); ++i) { 603 for (int i = 0; i < arraysize(expected); ++i) {
566 ASSERT_EQ(expected[i], 604 ASSERT_EQ(expected[i],
567 ShellUtil::ByteArrayToBase32(test_array, i)); 605 ShellUtil::ByteArrayToBase32(test_array, i));
568 } 606 }
569 } 607 }
OLDNEW
« chrome/installer/util/shell_util.cc ('K') | « chrome/installer/util/shell_util.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698