| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/common/extensions/extension_unpacker.h" | 5 #include "chrome/common/extensions/extension_unpacker.h" |
| 6 | 6 |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/scoped_handle.h" | 8 #include "base/scoped_handle.h" |
| 9 #include "base/scoped_temp_dir.h" | 9 #include "base/scoped_temp_dir.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 | 133 |
| 134 return true; | 134 return true; |
| 135 } | 135 } |
| 136 | 136 |
| 137 bool ExtensionUnpacker::Run() { | 137 bool ExtensionUnpacker::Run() { |
| 138 LOG(INFO) << "Installing extension " << extension_path_.value(); | 138 LOG(INFO) << "Installing extension " << extension_path_.value(); |
| 139 | 139 |
| 140 // <profile>/Extensions/INSTALL_TEMP/<version> | 140 // <profile>/Extensions/INSTALL_TEMP/<version> |
| 141 temp_install_dir_ = | 141 temp_install_dir_ = |
| 142 extension_path_.DirName().AppendASCII(filenames::kTempExtensionName); | 142 extension_path_.DirName().AppendASCII(filenames::kTempExtensionName); |
| 143 |
| 144 #if defined(OS_WIN) |
| 145 std::ostringstream log_stream; |
| 146 std::string dir_string = WideToUTF8(temp_install_dir_.value()); |
| 147 log_stream << kCouldNotCreateDirectoryError << dir_string << std::endl; |
| 148 if (!file_util::CreateDirectoryExtraLogging(temp_install_dir_, log_stream)) { |
| 149 log_stream.flush(); |
| 150 SetError(log_stream.str()); |
| 151 return false; |
| 152 } |
| 153 #else |
| 143 if (!file_util::CreateDirectory(temp_install_dir_)) { | 154 if (!file_util::CreateDirectory(temp_install_dir_)) { |
| 144 #if defined(OS_WIN) | |
| 145 std::string dir_string = WideToUTF8(temp_install_dir_.value()); | |
| 146 #else | |
| 147 std::string dir_string = temp_install_dir_.value(); | 155 std::string dir_string = temp_install_dir_.value(); |
| 148 #endif | |
| 149 SetError(kCouldNotCreateDirectoryError + dir_string); | 156 SetError(kCouldNotCreateDirectoryError + dir_string); |
| 150 return false; | 157 return false; |
| 151 } | 158 } |
| 159 #endif |
| 152 | 160 |
| 153 if (!Unzip(extension_path_, temp_install_dir_)) { | 161 if (!Unzip(extension_path_, temp_install_dir_)) { |
| 154 SetError(kCouldNotUnzipExtension); | 162 SetError(kCouldNotUnzipExtension); |
| 155 return false; | 163 return false; |
| 156 } | 164 } |
| 157 | 165 |
| 158 // Parse the manifest. | 166 // Parse the manifest. |
| 159 parsed_manifest_.reset(ReadManifest()); | 167 parsed_manifest_.reset(ReadManifest()); |
| 160 if (!parsed_manifest_.get()) | 168 if (!parsed_manifest_.get()) |
| 161 return false; // Error was already reported. | 169 return false; // Error was already reported. |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 | 302 |
| 295 parsed_catalogs_->Set(relative_path.DirName().ToWStringHack(), | 303 parsed_catalogs_->Set(relative_path.DirName().ToWStringHack(), |
| 296 root.release()); | 304 root.release()); |
| 297 | 305 |
| 298 return true; | 306 return true; |
| 299 } | 307 } |
| 300 | 308 |
| 301 void ExtensionUnpacker::SetError(const std::string &error) { | 309 void ExtensionUnpacker::SetError(const std::string &error) { |
| 302 error_message_ = error; | 310 error_message_ = error; |
| 303 } | 311 } |
| OLD | NEW |