OLD | NEW |
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 1080 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1091 if (!appended_name.empty()) { | 1091 if (!appended_name.empty()) { |
1092 shortcut->append(L" ("); | 1092 shortcut->append(L" ("); |
1093 shortcut->append(appended_name); | 1093 shortcut->append(appended_name); |
1094 shortcut->append(L")"); | 1094 shortcut->append(L")"); |
1095 } | 1095 } |
1096 shortcut->append(L".lnk"); | 1096 shortcut->append(L".lnk"); |
1097 return true; | 1097 return true; |
1098 } | 1098 } |
1099 | 1099 |
1100 bool ShellUtil::GetDesktopPath(bool system_level, FilePath* path) { | 1100 bool ShellUtil::GetDesktopPath(bool system_level, FilePath* path) { |
1101 wchar_t desktop[MAX_PATH]; | 1101 int dir_key = system_level ? base::DIR_COMMON_DESKTOP : |
1102 int dir = system_level ? CSIDL_COMMON_DESKTOPDIRECTORY : | 1102 base::DIR_USER_DESKTOP; |
1103 CSIDL_DESKTOPDIRECTORY; | 1103 return PathService::Get(dir_key, path); |
1104 if (FAILED(SHGetFolderPath(NULL, dir, NULL, SHGFP_TYPE_CURRENT, desktop))) | |
1105 return false; | |
1106 *path = FilePath(desktop); | |
1107 return true; | |
1108 } | 1104 } |
1109 | 1105 |
1110 bool ShellUtil::GetQuickLaunchPath(bool system_level, FilePath* path) { | 1106 bool ShellUtil::GetQuickLaunchPath(bool system_level, FilePath* path) { |
1111 if (system_level) { | 1107 int dir_key = system_level ? base::DIR_DEFAULT_USER_QUICK_LAUNCH : |
1112 wchar_t qlaunch[MAX_PATH]; | 1108 base::DIR_USER_QUICK_LAUNCH; |
1113 // We are accessing GetDefaultUserProfileDirectory this way so that we do | 1109 return PathService::Get(dir_key, path); |
1114 // not have to declare dependency to Userenv.lib for chrome.exe | |
1115 typedef BOOL (WINAPI *PROFILE_FUNC)(LPWSTR, LPDWORD); | |
1116 HMODULE module = LoadLibrary(L"Userenv.dll"); | |
1117 PROFILE_FUNC p = reinterpret_cast<PROFILE_FUNC>(GetProcAddress(module, | |
1118 "GetDefaultUserProfileDirectoryW")); | |
1119 DWORD size = _countof(qlaunch); | |
1120 if ((p == NULL) || ((p)(qlaunch, &size) != TRUE)) | |
1121 return false; | |
1122 *path = FilePath(qlaunch); | |
1123 if (base::win::GetVersion() >= base::win::VERSION_VISTA) { | |
1124 *path = path->AppendASCII("AppData"); | |
1125 *path = path->AppendASCII("Roaming"); | |
1126 } else { | |
1127 *path = path->AppendASCII("Application Data"); | |
1128 } | |
1129 } else { | |
1130 if (!PathService::Get(base::DIR_APP_DATA, path)) { | |
1131 return false; | |
1132 } | |
1133 } | |
1134 *path = path->AppendASCII("Microsoft"); | |
1135 *path = path->AppendASCII("Internet Explorer"); | |
1136 *path = path->AppendASCII("Quick Launch"); | |
1137 return true; | |
1138 } | 1110 } |
1139 | 1111 |
1140 void ShellUtil::GetRegisteredBrowsers( | 1112 void ShellUtil::GetRegisteredBrowsers( |
1141 BrowserDistribution* dist, | 1113 BrowserDistribution* dist, |
1142 std::map<string16, string16>* browsers) { | 1114 std::map<string16, string16>* browsers) { |
1143 DCHECK(dist); | 1115 DCHECK(dist); |
1144 DCHECK(browsers); | 1116 DCHECK(browsers); |
1145 | 1117 |
1146 const string16 base_key(ShellUtil::kRegStartMenuInternet); | 1118 const string16 base_key(ShellUtil::kRegStartMenuInternet); |
1147 string16 client_path; | 1119 string16 client_path; |
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1744 // are any left...). | 1716 // are any left...). |
1745 if (free_bits >= 8 && next_byte_index < size) { | 1717 if (free_bits >= 8 && next_byte_index < size) { |
1746 free_bits -= 8; | 1718 free_bits -= 8; |
1747 bit_stream += bytes[next_byte_index++] << free_bits; | 1719 bit_stream += bytes[next_byte_index++] << free_bits; |
1748 } | 1720 } |
1749 } | 1721 } |
1750 | 1722 |
1751 DCHECK_EQ(ret.length(), encoded_length); | 1723 DCHECK_EQ(ret.length(), encoded_length); |
1752 return ret; | 1724 return ret; |
1753 } | 1725 } |
OLD | NEW |