| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/file_util.h" | 6 #include "base/file_util.h" |
| 7 #include "base/files/file_enumerator.h" | 7 #include "base/files/file_enumerator.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/message_loop/message_loop_proxy.h" | 10 #include "base/message_loop/message_loop_proxy.h" |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 older_dirs.push_back(path); | 157 older_dirs.push_back(path); |
| 158 } | 158 } |
| 159 } else { | 159 } else { |
| 160 latest_dir = path; | 160 latest_dir = path; |
| 161 latest_version = version; | 161 latest_version = version; |
| 162 found = true; | 162 found = true; |
| 163 } | 163 } |
| 164 } | 164 } |
| 165 | 165 |
| 166 if (found) { | 166 if (found) { |
| 167 current_version_ = latest_version; | |
| 168 // TODO(ddorwin): Remove these members and pass them directly to | |
| 169 // FinishRegistration(). | |
| 170 base::ReadFileToString(latest_dir.AppendASCII("manifest.fingerprint"), | |
| 171 ¤t_fingerprint_); | |
| 172 current_manifest_ = ReadManifest(latest_dir); | 167 current_manifest_ = ReadManifest(latest_dir); |
| 173 if (!current_manifest_) { | 168 if (current_manifest_) { |
| 169 current_version_ = latest_version; |
| 170 // TODO(ddorwin): Remove these members and pass them directly to |
| 171 // FinishRegistration(). |
| 172 base::ReadFileToString(latest_dir.AppendASCII("manifest.fingerprint"), |
| 173 ¤t_fingerprint_); |
| 174 } else { |
| 175 // If the manifest can't be read, mark the directory for deletion and |
| 176 // continue as if there were no versioned directories at all. |
| 174 DLOG(ERROR) << "Failed to read manifest for " | 177 DLOG(ERROR) << "Failed to read manifest for " |
| 175 << installer_traits_->GetName() << " (" | 178 << installer_traits_->GetName() << " (" |
| 176 << base_dir.MaybeAsASCII() << ")."; | 179 << base_dir.MaybeAsASCII() << ")."; |
| 177 return; | 180 older_dirs.push_back(latest_dir); |
| 178 } | 181 } |
| 179 } | 182 } |
| 180 | 183 |
| 181 // Remove older versions of the component. None should be in use during | 184 // Remove older versions of the component. None should be in use during |
| 182 // browser startup. | 185 // browser startup. |
| 183 for (std::vector<base::FilePath>::iterator iter = older_dirs.begin(); | 186 for (std::vector<base::FilePath>::iterator iter = older_dirs.begin(); |
| 184 iter != older_dirs.end(); | 187 iter != older_dirs.end(); |
| 185 ++iter) { | 188 ++iter) { |
| 186 base::DeleteFile(*iter, true); | 189 base::DeleteFile(*iter, true); |
| 187 } | 190 } |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 | 222 |
| 220 if (current_version_.CompareTo(base::Version(kNullVersion)) > 0) { | 223 if (current_version_.CompareTo(base::Version(kNullVersion)) > 0) { |
| 221 scoped_ptr<base::DictionaryValue> manifest_copy( | 224 scoped_ptr<base::DictionaryValue> manifest_copy( |
| 222 current_manifest_->DeepCopy()); | 225 current_manifest_->DeepCopy()); |
| 223 installer_traits_->ComponentReady( | 226 installer_traits_->ComponentReady( |
| 224 current_version_, GetInstallDirectory(), manifest_copy.Pass()); | 227 current_version_, GetInstallDirectory(), manifest_copy.Pass()); |
| 225 } | 228 } |
| 226 } | 229 } |
| 227 | 230 |
| 228 } // namespace component_updater | 231 } // namespace component_updater |
| OLD | NEW |