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 1829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1840 return file_util::Delete(shortcut_folder, true); | 1840 return file_util::Delete(shortcut_folder, true); |
1841 else | 1841 else |
1842 return file_util::Delete(shortcut_path, false); | 1842 return file_util::Delete(shortcut_path, false); |
1843 } | 1843 } |
1844 | 1844 |
1845 // The shortcut at |shortcut_path| doesn't point to |chrome_exe|, act as if | 1845 // The shortcut at |shortcut_path| doesn't point to |chrome_exe|, act as if |
1846 // our shortcut had been deleted. | 1846 // our shortcut had been deleted. |
1847 return true; | 1847 return true; |
1848 } | 1848 } |
1849 | 1849 |
1850 void ShellUtil::RemoveChromeTaskbarShortcuts(const string16& chrome_exe) { | |
1851 FilePath taskbar_pins_path; | |
1852 if (!PathService::Get(base::DIR_TASKBAR_PINS, &taskbar_pins_path) || | |
1853 !file_util::PathExists(taskbar_pins_path)) { | |
1854 LOG(ERROR) << "Couldn't find path to taskbar pins."; | |
1855 return; | |
1856 } | |
1857 | |
1858 file_util::FileEnumerator shortcuts_enum( | |
1859 taskbar_pins_path, false, | |
1860 file_util::FileEnumerator::FILES, FILE_PATH_LITERAL("*.lnk")); | |
1861 | |
1862 FilePath chrome_path(chrome_exe); | |
1863 InstallUtil::ProgramCompare chrome_compare(chrome_path); | |
1864 for (FilePath shortcut_path = shortcuts_enum.Next(); !shortcut_path.empty(); | |
1865 shortcut_path = shortcuts_enum.Next()) { | |
1866 FilePath read_target; | |
1867 if (!base::win::ResolveShortcut(shortcut_path, &read_target, NULL)) { | |
1868 NOTREACHED(); | |
1869 continue; | |
1870 } | |
1871 if (chrome_compare.Evaluate(read_target.value())) { | |
1872 // Unpin this shortcut if it points to |chrome_exe|. | |
1873 base::win::TaskbarUnpinShortcutLink(shortcut_path.value().c_str()); | |
1874 } | |
1875 } | |
1876 } | |
1877 | |
1878 void ShellUtil::RemoveChromeStartScreenShortcuts(BrowserDistribution* dist, | 1850 void ShellUtil::RemoveChromeStartScreenShortcuts(BrowserDistribution* dist, |
1879 const string16& chrome_exe) { | 1851 const string16& chrome_exe) { |
1880 if (base::win::GetVersion() < base::win::VERSION_WIN8) | 1852 if (base::win::GetVersion() < base::win::VERSION_WIN8) |
1881 return; | 1853 return; |
1882 | 1854 |
1883 FilePath app_shortcuts_path; | 1855 FilePath app_shortcuts_path; |
1884 if (!PathService::Get(base::DIR_APP_SHORTCUTS, &app_shortcuts_path)) { | 1856 if (!PathService::Get(base::DIR_APP_SHORTCUTS, &app_shortcuts_path)) { |
1885 LOG(ERROR) << "Could not get application shortcuts location to delete" | 1857 LOG(ERROR) << "Could not get application shortcuts location to delete" |
1886 << " start screen shortcuts."; | 1858 << " start screen shortcuts."; |
1887 return; | 1859 return; |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1963 // are any left...). | 1935 // are any left...). |
1964 if (free_bits >= 8 && next_byte_index < size) { | 1936 if (free_bits >= 8 && next_byte_index < size) { |
1965 free_bits -= 8; | 1937 free_bits -= 8; |
1966 bit_stream += bytes[next_byte_index++] << free_bits; | 1938 bit_stream += bytes[next_byte_index++] << free_bits; |
1967 } | 1939 } |
1968 } | 1940 } |
1969 | 1941 |
1970 DCHECK_EQ(ret.length(), encoded_length); | 1942 DCHECK_EQ(ret.length(), encoded_length); |
1971 return ret; | 1943 return ret; |
1972 } | 1944 } |
OLD | NEW |