| 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 #ifndef CHROME_BROWSER_CHROMEOS_VERSION_LOADER_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_VERSION_LOADER_H_ |
| 6 #define CHROME_BROWSER_CHROMEOS_VERSION_LOADER_H_ | 6 #define CHROME_BROWSER_CHROMEOS_VERSION_LOADER_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| 11 #include "base/gtest_prod_util.h" | 11 #include "base/gtest_prod_util.h" |
| 12 #include "chrome/common/cancelable_task_tracker.h" | 12 #include "base/task/cancelable_task_tracker.h" |
| 13 | 13 |
| 14 namespace chromeos { | 14 namespace chromeos { |
| 15 | 15 |
| 16 // ChromeOSVersionLoader loads the version of Chrome OS from the file system. | 16 // ChromeOSVersionLoader loads the version of Chrome OS from the file system. |
| 17 // Loading is done asynchronously in the blocking thread pool. Once loaded, | 17 // Loading is done asynchronously in the blocking thread pool. Once loaded, |
| 18 // ChromeOSVersionLoader callback to a method of your choice with the version | 18 // ChromeOSVersionLoader callback to a method of your choice with the version |
| 19 // (or an empty string if the version couldn't be found). | 19 // (or an empty string if the version couldn't be found). |
| 20 // To use ChromeOSVersionLoader do the following: | 20 // To use ChromeOSVersionLoader do the following: |
| 21 // | 21 // |
| 22 // . In your class define a member field of type chromeos::VersionLoader and | 22 // . In your class define a member field of type chromeos::VersionLoader and |
| 23 // CancelableTaskTracker. | 23 // base::CancelableTaskTracker. |
| 24 // . Define the callback method, something like: | 24 // . Define the callback method, something like: |
| 25 // void OnGetChromeOSVersion(const std::string& version); | 25 // void OnGetChromeOSVersion(const std::string& version); |
| 26 // . When you want the version invoke: | 26 // . When you want the version invoke: |
| 27 // VersionLoader::GetVersion() | 27 // VersionLoader::GetVersion() |
| 28 // | 28 // |
| 29 // This class also provides the ability to load the bios firmware using | 29 // This class also provides the ability to load the bios firmware using |
| 30 // VersionLoader::GetFirmware() | 30 // VersionLoader::GetFirmware() |
| 31 class VersionLoader { | 31 class VersionLoader { |
| 32 public: | 32 public: |
| 33 VersionLoader(); | 33 VersionLoader(); |
| 34 virtual ~VersionLoader(); | 34 virtual ~VersionLoader(); |
| 35 | 35 |
| 36 enum VersionFormat { | 36 enum VersionFormat { |
| 37 VERSION_SHORT, | 37 VERSION_SHORT, |
| 38 VERSION_SHORT_WITH_DATE, | 38 VERSION_SHORT_WITH_DATE, |
| 39 VERSION_FULL, | 39 VERSION_FULL, |
| 40 }; | 40 }; |
| 41 | 41 |
| 42 // Signature | 42 // Signature |
| 43 typedef base::Callback<void(const std::string&)> GetVersionCallback; | 43 typedef base::Callback<void(const std::string&)> GetVersionCallback; |
| 44 typedef base::Callback<void(const std::string&)> GetFirmwareCallback; | 44 typedef base::Callback<void(const std::string&)> GetFirmwareCallback; |
| 45 | 45 |
| 46 // Asynchronously requests the version. | 46 // Asynchronously requests the version. |
| 47 // If |full_version| is true version string with extra info is extracted, | 47 // If |full_version| is true version string with extra info is extracted, |
| 48 // otherwise it's in short format x.x.xx.x. | 48 // otherwise it's in short format x.x.xx.x. |
| 49 CancelableTaskTracker::TaskId GetVersion(VersionFormat format, | 49 base::CancelableTaskTracker::TaskId GetVersion( |
| 50 const GetVersionCallback& callback, | 50 VersionFormat format, |
| 51 CancelableTaskTracker* tracker); | 51 const GetVersionCallback& callback, |
| 52 base::CancelableTaskTracker* tracker); |
| 52 | 53 |
| 53 CancelableTaskTracker::TaskId GetFirmware(const GetFirmwareCallback& callback, | 54 base::CancelableTaskTracker::TaskId GetFirmware( |
| 54 CancelableTaskTracker* tracker); | 55 const GetFirmwareCallback& callback, |
| 56 base::CancelableTaskTracker* tracker); |
| 55 | 57 |
| 56 private: | 58 private: |
| 57 FRIEND_TEST_ALL_PREFIXES(VersionLoaderTest, ParseFirmware); | 59 FRIEND_TEST_ALL_PREFIXES(VersionLoaderTest, ParseFirmware); |
| 58 | 60 |
| 59 // VersionLoader calls into the Backend in the blocking thread pool to load | 61 // VersionLoader calls into the Backend in the blocking thread pool to load |
| 60 // and extract the version. | 62 // and extract the version. |
| 61 class Backend : public base::RefCountedThreadSafe<Backend> { | 63 class Backend : public base::RefCountedThreadSafe<Backend> { |
| 62 public: | 64 public: |
| 63 Backend() {} | 65 Backend() {} |
| 64 | 66 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 82 static std::string ParseFirmware(const std::string& contents); | 84 static std::string ParseFirmware(const std::string& contents); |
| 83 | 85 |
| 84 scoped_refptr<Backend> backend_; | 86 scoped_refptr<Backend> backend_; |
| 85 | 87 |
| 86 DISALLOW_COPY_AND_ASSIGN(VersionLoader); | 88 DISALLOW_COPY_AND_ASSIGN(VersionLoader); |
| 87 }; | 89 }; |
| 88 | 90 |
| 89 } // namespace chromeos | 91 } // namespace chromeos |
| 90 | 92 |
| 91 #endif // CHROME_BROWSER_CHROMEOS_VERSION_LOADER_H_ | 93 #endif // CHROME_BROWSER_CHROMEOS_VERSION_LOADER_H_ |
| OLD | NEW |