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

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

Issue 12314090: Add utf_string_conversions to base namespace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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 #include "chrome/installer/util/installer_state.h" 5 #include "chrome/installer/util/installer_state.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 target_path().AppendASCII(current_version->GetString()) 592 target_path().AppendASCII(current_version->GetString())
593 .Append(kChromeFrameDll)); 593 .Append(kChromeFrameDll));
594 in_use = file_util::PathExists(cf_install_path) && 594 in_use = file_util::PathExists(cf_install_path) &&
595 IsFileInUse(cf_install_path); 595 IsFileInUse(cf_install_path);
596 } 596 }
597 return in_use; 597 return in_use;
598 } 598 }
599 599
600 base::FilePath InstallerState::GetInstallerDirectory( 600 base::FilePath InstallerState::GetInstallerDirectory(
601 const Version& version) const { 601 const Version& version) const {
602 return target_path().Append(ASCIIToWide(version.GetString())) 602 return target_path().Append(base::ASCIIToWide(version.GetString()))
603 .Append(kInstallerDir); 603 .Append(kInstallerDir);
604 } 604 }
605 605
606 // static 606 // static
607 bool InstallerState::IsFileInUse(const base::FilePath& file) { 607 bool InstallerState::IsFileInUse(const base::FilePath& file) {
608 // Call CreateFile with a share mode of 0 which should cause this to fail 608 // Call CreateFile with a share mode of 0 which should cause this to fail
609 // with ERROR_SHARING_VIOLATION if the file exists and is in-use. 609 // with ERROR_SHARING_VIOLATION if the file exists and is in-use.
610 return !base::win::ScopedHandle(CreateFile(file.value().c_str(), 610 return !base::win::ScopedHandle(CreateFile(file.value().c_str(),
611 GENERIC_WRITE, 0, NULL, 611 GENERIC_WRITE, 0, NULL,
612 OPEN_EXISTING, 0, 0)).IsValid(); 612 OPEN_EXISTING, 0, 0)).IsValid();
613 } 613 }
614 614
615 void InstallerState::GetExistingExeVersions( 615 void InstallerState::GetExistingExeVersions(
616 std::set<std::string>* existing_versions) const { 616 std::set<std::string>* existing_versions) const {
617 617
618 static const wchar_t* const kChromeFilenames[] = { 618 static const wchar_t* const kChromeFilenames[] = {
619 installer::kChromeExe, 619 installer::kChromeExe,
620 installer::kChromeNewExe, 620 installer::kChromeNewExe,
621 installer::kChromeOldExe, 621 installer::kChromeOldExe,
622 }; 622 };
623 623
624 for (int i = 0; i < arraysize(kChromeFilenames); ++i) { 624 for (int i = 0; i < arraysize(kChromeFilenames); ++i) {
625 base::FilePath chrome_exe(target_path().Append(kChromeFilenames[i])); 625 base::FilePath chrome_exe(target_path().Append(kChromeFilenames[i]));
626 scoped_ptr<FileVersionInfo> file_version_info( 626 scoped_ptr<FileVersionInfo> file_version_info(
627 FileVersionInfo::CreateFileVersionInfo(chrome_exe)); 627 FileVersionInfo::CreateFileVersionInfo(chrome_exe));
628 if (file_version_info) { 628 if (file_version_info) {
629 string16 version_string = file_version_info->file_version(); 629 string16 version_string = file_version_info->file_version();
630 if (!version_string.empty() && IsStringASCII(version_string)) 630 if (!version_string.empty() && IsStringASCII(version_string))
631 existing_versions->insert(WideToASCII(version_string)); 631 existing_versions->insert(base::WideToASCII(version_string));
632 } 632 }
633 } 633 }
634 } 634 }
635 635
636 void InstallerState::RemoveOldVersionDirectories( 636 void InstallerState::RemoveOldVersionDirectories(
637 const Version& new_version, 637 const Version& new_version,
638 Version* existing_version, 638 Version* existing_version,
639 const base::FilePath& temp_path) const { 639 const base::FilePath& temp_path) const {
640 Version version; 640 Version version;
641 std::vector<base::FilePath> key_files; 641 std::vector<base::FilePath> key_files;
642 scoped_ptr<WorkItem> item; 642 scoped_ptr<WorkItem> item;
643 643
644 std::set<std::string> existing_version_strings; 644 std::set<std::string> existing_version_strings;
645 existing_version_strings.insert(new_version.GetString()); 645 existing_version_strings.insert(new_version.GetString());
646 if (existing_version) 646 if (existing_version)
647 existing_version_strings.insert(existing_version->GetString()); 647 existing_version_strings.insert(existing_version->GetString());
648 648
649 // Make sure not to delete any version dir that is "referenced" by an existing 649 // Make sure not to delete any version dir that is "referenced" by an existing
650 // Chrome executable. 650 // Chrome executable.
651 GetExistingExeVersions(&existing_version_strings); 651 GetExistingExeVersions(&existing_version_strings);
652 652
653 // Try to delete all directories that are not in the set we care to keep. 653 // Try to delete all directories that are not in the set we care to keep.
654 file_util::FileEnumerator version_enum(target_path(), false, 654 file_util::FileEnumerator version_enum(target_path(), false,
655 file_util::FileEnumerator::DIRECTORIES); 655 file_util::FileEnumerator::DIRECTORIES);
656 for (base::FilePath next_version = version_enum.Next(); !next_version.empty(); 656 for (base::FilePath next_version = version_enum.Next(); !next_version.empty();
657 next_version = version_enum.Next()) { 657 next_version = version_enum.Next()) {
658 base::FilePath dir_name(next_version.BaseName()); 658 base::FilePath dir_name(next_version.BaseName());
659 version = Version(WideToASCII(dir_name.value())); 659 version = Version(base::WideToASCII(dir_name.value()));
660 // Delete the version folder if it is less than the new version and not 660 // Delete the version folder if it is less than the new version and not
661 // equal to the old version (if we have an old version). 661 // equal to the old version (if we have an old version).
662 if (version.IsValid() && 662 if (version.IsValid() &&
663 existing_version_strings.count(version.GetString()) == 0) { 663 existing_version_strings.count(version.GetString()) == 0) {
664 // Note: temporarily log old version deletion at ERROR level to make it 664 // Note: temporarily log old version deletion at ERROR level to make it
665 // more likely we see this in the installer log. 665 // more likely we see this in the installer log.
666 LOG(ERROR) << "Deleting old version directory: " << next_version.value(); 666 LOG(ERROR) << "Deleting old version directory: " << next_version.value();
667 667
668 // Attempt to recursively delete the old version dir. 668 // Attempt to recursively delete the old version dir.
669 bool delete_succeeded = file_util::Delete(next_version, true); 669 bool delete_succeeded = file_util::Delete(next_version, true);
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 } 792 }
793 if (!install_list->Do()) 793 if (!install_list->Do())
794 LOG(ERROR) << "Failed to record installer error information in registry."; 794 LOG(ERROR) << "Failed to record installer error information in registry.";
795 } 795 }
796 796
797 bool InstallerState::RequiresActiveSetup() const { 797 bool InstallerState::RequiresActiveSetup() const {
798 return system_install() && FindProduct(BrowserDistribution::CHROME_BROWSER); 798 return system_install() && FindProduct(BrowserDistribution::CHROME_BROWSER);
799 } 799 }
800 800
801 } // namespace installer 801 } // namespace installer
OLDNEW
« no previous file with comments | « chrome/installer/util/installation_state.cc ('k') | chrome/installer/util/installer_state_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698