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 #include <windows.h> | 5 #include <windows.h> |
6 | 6 |
7 #include <fstream> | 7 #include <fstream> |
8 | 8 |
9 #include "base/base_paths.h" | 9 #include "base/base_paths.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "base/file_path.h" | 11 #include "base/file_path.h" |
12 #include "base/file_util.h" | 12 #include "base/file_util.h" |
| 13 #include "base/files/scoped_temp_dir.h" |
13 #include "base/path_service.h" | 14 #include "base/path_service.h" |
14 #include "base/process_util.h" | 15 #include "base/process_util.h" |
15 #include "base/scoped_temp_dir.h" | |
16 #include "base/string_util.h" | 16 #include "base/string_util.h" |
17 #include "base/test/test_reg_util_win.h" | 17 #include "base/test/test_reg_util_win.h" |
18 #include "base/utf_string_conversions.h" | 18 #include "base/utf_string_conversions.h" |
19 #include "base/version.h" | 19 #include "base/version.h" |
20 #include "base/win/registry.h" | 20 #include "base/win/registry.h" |
21 #include "base/win/scoped_handle.h" | 21 #include "base/win/scoped_handle.h" |
22 #include "chrome/common/chrome_constants.h" | 22 #include "chrome/common/chrome_constants.h" |
23 #include "chrome/installer/test/alternate_version_generator.h" | 23 #include "chrome/installer/test/alternate_version_generator.h" |
24 #include "chrome/installer/util/fake_installation_state.h" | 24 #include "chrome/installer/util/fake_installation_state.h" |
25 #include "chrome/installer/util/fake_product_state.h" | 25 #include "chrome/installer/util/fake_product_state.h" |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 | 137 |
138 FilePath chrome_dll_4(chrome_dir_4); | 138 FilePath chrome_dll_4(chrome_dir_4); |
139 chrome_dll_4 = chrome_dll_4.AppendASCII("chrome.dll"); | 139 chrome_dll_4 = chrome_dll_4.AppendASCII("chrome.dll"); |
140 CreateTextFile(chrome_dll_4.value(), text_content_1); | 140 CreateTextFile(chrome_dll_4.value(), text_content_1); |
141 ASSERT_TRUE(file_util::PathExists(chrome_dll_4)); | 141 ASSERT_TRUE(file_util::PathExists(chrome_dll_4)); |
142 | 142 |
143 MockInstallerState installer_state; | 143 MockInstallerState installer_state; |
144 BuildSingleChromeState(chrome_dir, &installer_state); | 144 BuildSingleChromeState(chrome_dir, &installer_state); |
145 Version latest_version("1.0.4.0"); | 145 Version latest_version("1.0.4.0"); |
146 { | 146 { |
147 ScopedTempDir temp_dir; | 147 base::ScopedTempDir temp_dir; |
148 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 148 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
149 installer_state.RemoveOldVersionDirectories(latest_version, NULL, | 149 installer_state.RemoveOldVersionDirectories(latest_version, NULL, |
150 temp_dir.path()); | 150 temp_dir.path()); |
151 } | 151 } |
152 | 152 |
153 // old versions should be gone | 153 // old versions should be gone |
154 EXPECT_FALSE(file_util::PathExists(chrome_dir_1)); | 154 EXPECT_FALSE(file_util::PathExists(chrome_dir_1)); |
155 EXPECT_FALSE(file_util::PathExists(chrome_dir_2)); | 155 EXPECT_FALSE(file_util::PathExists(chrome_dir_2)); |
156 EXPECT_FALSE(file_util::PathExists(chrome_dir_3)); | 156 EXPECT_FALSE(file_util::PathExists(chrome_dir_3)); |
157 // the latest version should stay | 157 // the latest version should stay |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 FilePath chrome_dll_4(chrome_dir_4); | 218 FilePath chrome_dll_4(chrome_dir_4); |
219 chrome_dll_4 = chrome_dll_4.AppendASCII("chrome.dll"); | 219 chrome_dll_4 = chrome_dll_4.AppendASCII("chrome.dll"); |
220 CreateTextFile(chrome_dll_4.value(), text_content_1); | 220 CreateTextFile(chrome_dll_4.value(), text_content_1); |
221 ASSERT_TRUE(file_util::PathExists(chrome_dll_4)); | 221 ASSERT_TRUE(file_util::PathExists(chrome_dll_4)); |
222 | 222 |
223 MockInstallerState installer_state; | 223 MockInstallerState installer_state; |
224 BuildSingleChromeState(chrome_dir, &installer_state); | 224 BuildSingleChromeState(chrome_dir, &installer_state); |
225 Version latest_version("1.0.4.0"); | 225 Version latest_version("1.0.4.0"); |
226 Version existing_version("1.0.1.0"); | 226 Version existing_version("1.0.1.0"); |
227 { | 227 { |
228 ScopedTempDir temp_dir; | 228 base::ScopedTempDir temp_dir; |
229 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 229 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
230 installer_state.RemoveOldVersionDirectories(latest_version, | 230 installer_state.RemoveOldVersionDirectories(latest_version, |
231 &existing_version, | 231 &existing_version, |
232 temp_dir.path()); | 232 temp_dir.path()); |
233 } | 233 } |
234 | 234 |
235 // the version defined as the existing version should stay | 235 // the version defined as the existing version should stay |
236 EXPECT_TRUE(file_util::PathExists(chrome_dir_1)); | 236 EXPECT_TRUE(file_util::PathExists(chrome_dir_1)); |
237 // old versions not in used should be gone | 237 // old versions not in used should be gone |
238 EXPECT_FALSE(file_util::PathExists(chrome_dir_3)); | 238 EXPECT_FALSE(file_util::PathExists(chrome_dir_3)); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 EXPECT_FALSE(file_util::PathExists(old_chrome_dll)); | 295 EXPECT_FALSE(file_util::PathExists(old_chrome_dll)); |
296 | 296 |
297 // Hold on to the file exclusively to prevent the directory from | 297 // Hold on to the file exclusively to prevent the directory from |
298 // being deleted. | 298 // being deleted. |
299 base::win::ScopedHandle file( | 299 base::win::ScopedHandle file( |
300 ::CreateFile(old_chrome_dll.value().c_str(), GENERIC_READ, | 300 ::CreateFile(old_chrome_dll.value().c_str(), GENERIC_READ, |
301 0, NULL, OPEN_ALWAYS, 0, NULL)); | 301 0, NULL, OPEN_ALWAYS, 0, NULL)); |
302 EXPECT_TRUE(file.IsValid()); | 302 EXPECT_TRUE(file.IsValid()); |
303 EXPECT_TRUE(file_util::PathExists(old_chrome_dll)); | 303 EXPECT_TRUE(file_util::PathExists(old_chrome_dll)); |
304 | 304 |
305 ScopedTempDir temp_dir; | 305 base::ScopedTempDir temp_dir; |
306 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 306 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
307 | 307 |
308 // Don't explicitly tell the directory cleanup logic not to delete the | 308 // Don't explicitly tell the directory cleanup logic not to delete the |
309 // old version, rely on the key files to keep it around. | 309 // old version, rely on the key files to keep it around. |
310 installer_state.RemoveOldVersionDirectories(new_version, | 310 installer_state.RemoveOldVersionDirectories(new_version, |
311 NULL, | 311 NULL, |
312 temp_dir.path()); | 312 temp_dir.path()); |
313 | 313 |
314 // The old directory should still exist. | 314 // The old directory should still exist. |
315 EXPECT_TRUE(file_util::PathExists(old_version_dir)); | 315 EXPECT_TRUE(file_util::PathExists(old_version_dir)); |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 MasterPreferences prefs(cmd_line); | 462 MasterPreferences prefs(cmd_line); |
463 InstallerState installer_state; | 463 InstallerState installer_state; |
464 installer_state.Initialize(cmd_line, prefs, machine_state); | 464 installer_state.Initialize(cmd_line, prefs, machine_state); |
465 | 465 |
466 // Is the Chrome version picked up? | 466 // Is the Chrome version picked up? |
467 scoped_ptr<Version> version(installer_state.GetCurrentVersion(machine_state)); | 467 scoped_ptr<Version> version(installer_state.GetCurrentVersion(machine_state)); |
468 EXPECT_TRUE(version.get() != NULL); | 468 EXPECT_TRUE(version.get() != NULL); |
469 } | 469 } |
470 | 470 |
471 TEST_F(InstallerStateTest, IsFileInUse) { | 471 TEST_F(InstallerStateTest, IsFileInUse) { |
472 ScopedTempDir temp_dir; | 472 base::ScopedTempDir temp_dir; |
473 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 473 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
474 | 474 |
475 FilePath temp_file; | 475 FilePath temp_file; |
476 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir.path(), &temp_file)); | 476 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir.path(), &temp_file)); |
477 | 477 |
478 EXPECT_FALSE(MockInstallerState::IsFileInUse(temp_file)); | 478 EXPECT_FALSE(MockInstallerState::IsFileInUse(temp_file)); |
479 | 479 |
480 { | 480 { |
481 // Open a handle to the file with the same access mode and sharing options | 481 // Open a handle to the file with the same access mode and sharing options |
482 // as the loader. | 482 // as the loader. |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
748 // Critical update newer than the new version. | 748 // Critical update newer than the new version. |
749 EXPECT_FALSE( | 749 EXPECT_FALSE( |
750 installer_state.DetermineCriticalVersion(NULL, *pv_version_).IsValid()); | 750 installer_state.DetermineCriticalVersion(NULL, *pv_version_).IsValid()); |
751 EXPECT_FALSE( | 751 EXPECT_FALSE( |
752 installer_state.DetermineCriticalVersion(opv_version_, *pv_version_) | 752 installer_state.DetermineCriticalVersion(opv_version_, *pv_version_) |
753 .IsValid()); | 753 .IsValid()); |
754 EXPECT_FALSE( | 754 EXPECT_FALSE( |
755 installer_state.DetermineCriticalVersion(pv_version_, *pv_version_) | 755 installer_state.DetermineCriticalVersion(pv_version_, *pv_version_) |
756 .IsValid()); | 756 .IsValid()); |
757 } | 757 } |
OLD | NEW |