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

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

Issue 432273005: Fix shortcut tests and remove legacy shortcut code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Don't check system-level Quick Launch folder on uninstall. Created 6 years, 4 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 | Annotate | Revision Log
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 // This file defines functions that integrate Chrome in Windows shell. These 5 // This file defines functions that integrate Chrome in Windows shell. These
6 // functions can be used by Chrome as well as Chrome installer. All of the 6 // functions can be used by Chrome as well as Chrome installer. All of the
7 // work is done by the local functions defined in anonymous namespace in 7 // work is done by the local functions defined in anonymous namespace in
8 // this class. 8 // this class.
9 9
10 #include "chrome/installer/util/shell_util.h" 10 #include "chrome/installer/util/shell_util.h"
(...skipping 1317 matching lines...) Expand 10 before | Expand all | Expand 10 after
1328 // This method will abort and return false if |cancel| is non-NULL and gets set 1328 // This method will abort and return false if |cancel| is non-NULL and gets set
1329 // at any point during this call. 1329 // at any point during this call.
1330 bool BatchShortcutAction( 1330 bool BatchShortcutAction(
1331 const ShortcutFilterCallback& shortcut_filter, 1331 const ShortcutFilterCallback& shortcut_filter,
1332 const ShortcutOperationCallback& shortcut_operation, 1332 const ShortcutOperationCallback& shortcut_operation,
1333 ShellUtil::ShortcutLocation location, 1333 ShellUtil::ShortcutLocation location,
1334 BrowserDistribution* dist, 1334 BrowserDistribution* dist,
1335 ShellUtil::ShellChange level, 1335 ShellUtil::ShellChange level,
1336 const scoped_refptr<ShellUtil::SharedCancellationFlag>& cancel) { 1336 const scoped_refptr<ShellUtil::SharedCancellationFlag>& cancel) {
1337 DCHECK(!shortcut_operation.is_null()); 1337 DCHECK(!shortcut_operation.is_null());
1338
1339 // There is no system-level Quick Launch shortcut folder.
1340 if (level == ShellUtil::SYSTEM_LEVEL &&
1341 location == ShellUtil::SHORTCUT_LOCATION_QUICK_LAUNCH) {
1342 return true;
1343 }
1344
1338 base::FilePath shortcut_folder; 1345 base::FilePath shortcut_folder;
1339 if (!ShellUtil::GetShortcutPath(location, dist, level, &shortcut_folder)) { 1346 if (!ShellUtil::GetShortcutPath(location, dist, level, &shortcut_folder)) {
1340 LOG(WARNING) << "Cannot find path at location " << location; 1347 LOG(WARNING) << "Cannot find path at location " << location;
1341 return false; 1348 return false;
1342 } 1349 }
1343 1350
1344 bool success = true; 1351 bool success = true;
1345 base::FileEnumerator enumerator( 1352 base::FileEnumerator enumerator(
1346 shortcut_folder, false, base::FileEnumerator::FILES, 1353 shortcut_folder, false, base::FileEnumerator::FILES,
1347 base::string16(L"*") + installer::kLnkExt); 1354 base::string16(L"*") + installer::kLnkExt);
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1467 base::FilePath* path) { 1474 base::FilePath* path) {
1468 DCHECK(path); 1475 DCHECK(path);
1469 int dir_key = -1; 1476 int dir_key = -1;
1470 base::string16 folder_to_append; 1477 base::string16 folder_to_append;
1471 switch (location) { 1478 switch (location) {
1472 case SHORTCUT_LOCATION_DESKTOP: 1479 case SHORTCUT_LOCATION_DESKTOP:
1473 dir_key = (level == CURRENT_USER) ? base::DIR_USER_DESKTOP : 1480 dir_key = (level == CURRENT_USER) ? base::DIR_USER_DESKTOP :
1474 base::DIR_COMMON_DESKTOP; 1481 base::DIR_COMMON_DESKTOP;
1475 break; 1482 break;
1476 case SHORTCUT_LOCATION_QUICK_LAUNCH: 1483 case SHORTCUT_LOCATION_QUICK_LAUNCH:
1477 dir_key = (level == CURRENT_USER) ? base::DIR_USER_QUICK_LAUNCH : 1484 // There is no support for a system-level Quick Launch shortcut.
1478 base::DIR_DEFAULT_USER_QUICK_LAUNCH; 1485 DCHECK_EQ(level, CURRENT_USER);
1486 dir_key = base::DIR_USER_QUICK_LAUNCH;
1479 break; 1487 break;
1480 case SHORTCUT_LOCATION_START_MENU_ROOT: 1488 case SHORTCUT_LOCATION_START_MENU_ROOT:
1481 dir_key = (level == CURRENT_USER) ? base::DIR_START_MENU : 1489 dir_key = (level == CURRENT_USER) ? base::DIR_START_MENU :
1482 base::DIR_COMMON_START_MENU; 1490 base::DIR_COMMON_START_MENU;
1483 break; 1491 break;
1484 case SHORTCUT_LOCATION_START_MENU_CHROME_DIR: 1492 case SHORTCUT_LOCATION_START_MENU_CHROME_DIR:
1485 dir_key = (level == CURRENT_USER) ? base::DIR_START_MENU : 1493 dir_key = (level == CURRENT_USER) ? base::DIR_START_MENU :
1486 base::DIR_COMMON_START_MENU; 1494 base::DIR_COMMON_START_MENU;
1487 folder_to_append = dist->GetStartMenuShortcutSubfolder( 1495 folder_to_append = dist->GetStartMenuShortcutSubfolder(
1488 BrowserDistribution::SUBFOLDER_CHROME); 1496 BrowserDistribution::SUBFOLDER_CHROME);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1532 } 1540 }
1533 1541
1534 DCHECK(dist); 1542 DCHECK(dist);
1535 // |pin_to_taskbar| is only acknowledged when first creating the shortcut. 1543 // |pin_to_taskbar| is only acknowledged when first creating the shortcut.
1536 DCHECK(!properties.pin_to_taskbar || 1544 DCHECK(!properties.pin_to_taskbar ||
1537 operation == SHELL_SHORTCUT_CREATE_ALWAYS || 1545 operation == SHELL_SHORTCUT_CREATE_ALWAYS ||
1538 operation == SHELL_SHORTCUT_CREATE_IF_NO_SYSTEM_LEVEL); 1546 operation == SHELL_SHORTCUT_CREATE_IF_NO_SYSTEM_LEVEL);
1539 1547
1540 base::FilePath user_shortcut_path; 1548 base::FilePath user_shortcut_path;
1541 base::FilePath system_shortcut_path; 1549 base::FilePath system_shortcut_path;
1542 if (!GetShortcutPath(location, dist, SYSTEM_LEVEL, &system_shortcut_path)) { 1550 if (location == SHORTCUT_LOCATION_QUICK_LAUNCH) {
1551 // There is no system-level shortcut for Quick Launch.
1552 DCHECK_EQ(properties.level, CURRENT_USER);
1553 } else if (!GetShortcutPath(
1554 location, dist, SYSTEM_LEVEL, &system_shortcut_path)) {
1543 NOTREACHED(); 1555 NOTREACHED();
1544 return false; 1556 return false;
1545 } 1557 }
1546 1558
1547 base::string16 shortcut_name( 1559 base::string16 shortcut_name(
1548 ExtractShortcutNameFromProperties(dist, properties)); 1560 ExtractShortcutNameFromProperties(dist, properties));
1549 system_shortcut_path = system_shortcut_path.Append(shortcut_name); 1561 system_shortcut_path = system_shortcut_path.Append(shortcut_name);
1550 1562
1551 base::FilePath* chosen_path; 1563 base::FilePath* chosen_path;
1552 bool should_install_shortcut = true; 1564 bool should_install_shortcut = true;
1553 if (properties.level == SYSTEM_LEVEL) { 1565 if (properties.level == SYSTEM_LEVEL) {
1554 // Install the system-level shortcut if requested. 1566 // Install the system-level shortcut if requested.
1555 chosen_path = &system_shortcut_path; 1567 chosen_path = &system_shortcut_path;
1556 } else if (operation != SHELL_SHORTCUT_CREATE_IF_NO_SYSTEM_LEVEL || 1568 } else if (operation != SHELL_SHORTCUT_CREATE_IF_NO_SYSTEM_LEVEL ||
1569 system_shortcut_path.empty() ||
1557 !base::PathExists(system_shortcut_path)) { 1570 !base::PathExists(system_shortcut_path)) {
1558 // Otherwise install the user-level shortcut, unless the system-level 1571 // Otherwise install the user-level shortcut, unless the system-level
1559 // variant of this shortcut is present on the machine and |operation| states 1572 // variant of this shortcut is present on the machine and |operation| states
1560 // not to create a user-level shortcut in that case. 1573 // not to create a user-level shortcut in that case.
1561 if (!GetShortcutPath(location, dist, CURRENT_USER, &user_shortcut_path)) { 1574 if (!GetShortcutPath(location, dist, CURRENT_USER, &user_shortcut_path)) {
1562 NOTREACHED(); 1575 NOTREACHED();
1563 return false; 1576 return false;
1564 } 1577 }
1565 user_shortcut_path = user_shortcut_path.Append(shortcut_name); 1578 user_shortcut_path = user_shortcut_path.Append(shortcut_name);
1566 chosen_path = &user_shortcut_path; 1579 chosen_path = &user_shortcut_path;
(...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after
2274 // are any left...). 2287 // are any left...).
2275 if (free_bits >= 8 && next_byte_index < size) { 2288 if (free_bits >= 8 && next_byte_index < size) {
2276 free_bits -= 8; 2289 free_bits -= 8;
2277 bit_stream += bytes[next_byte_index++] << free_bits; 2290 bit_stream += bytes[next_byte_index++] << free_bits;
2278 } 2291 }
2279 } 2292 }
2280 2293
2281 DCHECK_EQ(ret.length(), encoded_length); 2294 DCHECK_EQ(ret.length(), encoded_length);
2282 return ret; 2295 return ret;
2283 } 2296 }
OLDNEW
« no previous file with comments | « chrome/installer/setup/install_unittest.cc ('k') | chrome/installer/util/shell_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698