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

Unified Diff: chrome/browser/chromeos/cros/burn_library.h

Issue 2808100: Code implements UI for downloading and burning Chrome OS images on SSD card a... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/cros/burn_library.h
===================================================================
--- chrome/browser/chromeos/cros/burn_library.h (revision 0)
+++ chrome/browser/chromeos/cros/burn_library.h (revision 0)
@@ -0,0 +1,103 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+
+#ifndef CHROME_BROWSER_CHROMEOS_CROS_BURN_LIBRARY_H_
+#define CHROME_BROWSER_CHROMEOS_CROS_BURN_LIBRARY_H_
+
+#include <string>
+#include <vector>
+
+#include "base/file_path.h"
+#include "base/weak_ptr.h"
+#include "base/observer_list.h"
+
+#include "third_party/cros/chromeos_imageburn.h"
+
+struct ImageBurnStatus {
+ explicit ImageBurnStatus(const chromeos::BurnStatus& status)
+ : amount_burnt(status.amount_burnt),
+ total_size(status.total_size) {
+ if (status.target_path)
+ target_path = status.target_path;
+ if (status.error)
+ error = status.error;
+ }
+ std::string target_path;
+ int64 amount_burnt;
+ int64 total_size;
+ std::string error;
+};
+
+namespace chromeos {
+class BurnLibrary {
+ public:
+ class Observer {
+ public:
+ virtual void ProgressUpdated(BurnLibrary* object, BurnEventType evt,
+ const ImageBurnStatus& status) = 0;
+ };
+
+ virtual ~BurnLibrary() {}
+
+ virtual void AddObserver(Observer* observer) = 0;
+ virtual void RemoveObserver(Observer* observer) = 0;
+ virtual bool DoBurn(const FilePath& from_path, const FilePath& to_path) = 0;
+
+ // Factory function, creates a new instance and returns ownership.
+ // For normal usage, access the singleton via CrosLibrary::Get().
+ static BurnLibrary* GetImpl(bool stub);
+};
+
+class BurnLibraryImpl : public BurnLibrary,
+ public base::SupportsWeakPtr<BurnLibraryImpl> {
+ public:
+
+ BurnLibraryImpl();
+ virtual ~BurnLibraryImpl();
+
+ // BurnLibrary implementation.
+ virtual void AddObserver(Observer* observer);
+ virtual void RemoveObserver(Observer* observer);
+ virtual bool DoBurn(const FilePath& from_path, const FilePath& to_path);
+
+ bool BurnImage(const FilePath& from_path, const FilePath& to_path);
+ void UpdateBurnStatus(const ImageBurnStatus& status, BurnEventType evt);
+
+ private:
+ void Init();
+ static void BurnStatusChangedHandler(void* object,
+ const BurnStatus& status,
+ BurnEventType evt);
+
+ private:
+ ObserverList<BurnLibrary::Observer> observers_;
+ BurnStatusConnection burn_status_connection_;
+
+ // Holds a path that is currently being burnt to.
+ std::string target_path_;
+
+ DISALLOW_COPY_AND_ASSIGN(BurnLibraryImpl);
+};
+
+class BurnLibraryTaskProxy
+ : public base::RefCountedThreadSafe<BurnLibraryTaskProxy> {
+ public:
+ explicit BurnLibraryTaskProxy(const base::WeakPtr<BurnLibraryImpl>& library);
+
+ void BurnImage(const FilePath& from_path, const FilePath& to_path);
+
+ void UpdateBurnStatus(ImageBurnStatus* status, BurnEventType evt);
+
+ private:
+ base::WeakPtr<BurnLibraryImpl> library_;
+
+ friend class base::RefCountedThreadSafe<BurnLibraryTaskProxy>;
+
+ DISALLOW_COPY_AND_ASSIGN(BurnLibraryTaskProxy);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_CROS_BURN_LIBRARY_H_

Powered by Google App Engine
This is Rietveld 408576698