| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/browser/chromeos/cros/burn_library.h" | 5 #include "chrome/browser/chromeos/cros/burn_library.h" |
| 6 | 6 |
| 7 #include <cstring> | 7 #include <cstring> |
| 8 #include "base/memory/linked_ptr.h" | 8 #include "base/memory/linked_ptr.h" |
| 9 #include "chrome/browser/chromeos/cros/cros_library.h" | 9 #include "chrome/browser/chromeos/cros/cros_library.h" |
| 10 #include "chrome/common/zip.h" | 10 #include "chrome/common/zip.h" |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 | 81 |
| 82 friend class base::RefCountedThreadSafe<BurnLibraryTaskProxy>; | 82 friend class base::RefCountedThreadSafe<BurnLibraryTaskProxy>; |
| 83 | 83 |
| 84 DISALLOW_COPY_AND_ASSIGN(BurnLibraryTaskProxy); | 84 DISALLOW_COPY_AND_ASSIGN(BurnLibraryTaskProxy); |
| 85 }; | 85 }; |
| 86 | 86 |
| 87 BurnLibraryImpl::BurnLibraryImpl() : unzipping_(false), | 87 BurnLibraryImpl::BurnLibraryImpl() : unzipping_(false), |
| 88 cancelled_(false), | 88 cancelled_(false), |
| 89 burning_(false), | 89 burning_(false), |
| 90 block_burn_signals_(false) { | 90 block_burn_signals_(false) { |
| 91 if (CrosLibrary::Get()->EnsureLoaded()) { | |
| 92 Init(); | |
| 93 } else { | |
| 94 LOG(ERROR) << "Cros Library has not been loaded"; | |
| 95 } | |
| 96 } | 91 } |
| 97 | 92 |
| 98 BurnLibraryImpl::~BurnLibraryImpl() { | 93 BurnLibraryImpl::~BurnLibraryImpl() { |
| 99 if (burn_status_connection_) { | 94 if (burn_status_connection_) { |
| 100 DisconnectBurnStatus(burn_status_connection_); | 95 DisconnectBurnStatus(burn_status_connection_); |
| 101 } | 96 } |
| 102 } | 97 } |
| 103 | 98 |
| 104 void BurnLibraryImpl::Init() { | 99 void BurnLibraryImpl::Init() { |
| 105 burn_status_connection_ = MonitorBurnStatus(&BurnStatusChangedHandler, this); | 100 DCHECK(CrosLibrary::Get()->libcros_loaded()); |
| 101 burn_status_connection_ = |
| 102 chromeos::MonitorBurnStatus(&BurnStatusChangedHandler, this); |
| 106 } | 103 } |
| 107 | 104 |
| 108 void BurnLibraryImpl::AddObserver(Observer* observer) { | 105 void BurnLibraryImpl::AddObserver(Observer* observer) { |
| 109 observers_.AddObserver(observer); | 106 observers_.AddObserver(observer); |
| 110 if (unzipping_ && !cancelled_) | 107 if (unzipping_ && !cancelled_) |
| 111 UpdateBurnStatus(ImageBurnStatus(), UNZIP_STARTED); | 108 UpdateBurnStatus(ImageBurnStatus(), UNZIP_STARTED); |
| 112 } | 109 } |
| 113 | 110 |
| 114 void BurnLibraryImpl::RemoveObserver(Observer* observer) { | 111 void BurnLibraryImpl::RemoveObserver(Observer* observer) { |
| 115 observers_.RemoveObserver(observer); | 112 observers_.RemoveObserver(observer); |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 247 FOR_EACH_OBSERVER(Observer, observers_, | 244 FOR_EACH_OBSERVER(Observer, observers_, |
| 248 BurnProgressUpdated(this, evt, status)); | 245 BurnProgressUpdated(this, evt, status)); |
| 249 } | 246 } |
| 250 | 247 |
| 251 class BurnLibraryStubImpl : public BurnLibrary { | 248 class BurnLibraryStubImpl : public BurnLibrary { |
| 252 public: | 249 public: |
| 253 BurnLibraryStubImpl() {} | 250 BurnLibraryStubImpl() {} |
| 254 virtual ~BurnLibraryStubImpl() {} | 251 virtual ~BurnLibraryStubImpl() {} |
| 255 | 252 |
| 256 // BurnLibrary overrides. | 253 // BurnLibrary overrides. |
| 254 virtual void Init() OVERRIDE {} |
| 257 virtual void AddObserver(Observer* observer) OVERRIDE {} | 255 virtual void AddObserver(Observer* observer) OVERRIDE {} |
| 258 virtual void RemoveObserver(Observer* observer) OVERRIDE {} | 256 virtual void RemoveObserver(Observer* observer) OVERRIDE {} |
| 259 virtual void DoBurn(const FilePath& source_path, | 257 virtual void DoBurn(const FilePath& source_path, |
| 260 const std::string& image_name, | 258 const std::string& image_name, |
| 261 const FilePath& target_file_path, | 259 const FilePath& target_file_path, |
| 262 const FilePath& target_device_path) OVERRIDE { | 260 const FilePath& target_device_path) OVERRIDE { |
| 263 } | 261 } |
| 264 virtual void CancelBurnImage() OVERRIDE {} | 262 virtual void CancelBurnImage() OVERRIDE {} |
| 265 | 263 |
| 266 DISALLOW_COPY_AND_ASSIGN(BurnLibraryStubImpl); | 264 DISALLOW_COPY_AND_ASSIGN(BurnLibraryStubImpl); |
| 267 }; | 265 }; |
| 268 | 266 |
| 269 // static | 267 // static |
| 270 BurnLibrary* BurnLibrary::GetImpl(bool stub) { | 268 BurnLibrary* BurnLibrary::GetImpl(bool stub) { |
| 269 BurnLibrary* impl; |
| 271 if (stub) | 270 if (stub) |
| 272 return new BurnLibraryStubImpl(); | 271 impl = new BurnLibraryStubImpl(); |
| 273 else | 272 else |
| 274 return new BurnLibraryImpl(); | 273 impl = new BurnLibraryImpl(); |
| 274 impl->Init(); |
| 275 return impl; |
| 275 } | 276 } |
| 276 | 277 |
| 277 } // namespace chromeos | 278 } // namespace chromeos |
| 278 | 279 |
| 279 // Allows InvokeLater without adding refcounting. This class is a Singleton and | 280 // Allows InvokeLater without adding refcounting. This class is a Singleton and |
| 280 // won't be deleted until it's last InvokeLater is run. | 281 // won't be deleted until it's last InvokeLater is run. |
| 281 DISABLE_RUNNABLE_METHOD_REFCOUNT(chromeos::BurnLibraryImpl); | 282 DISABLE_RUNNABLE_METHOD_REFCOUNT(chromeos::BurnLibraryImpl); |
| 282 | |
| OLD | NEW |