| Index: chrome/browser/chromeos/cros/update_library.cc
|
| diff --git a/chrome/browser/chromeos/cros/update_library.cc b/chrome/browser/chromeos/cros/update_library.cc
|
| index f89763814033ae59f5a4914da3d2a72b0a44658f..deda502748bb2d19063a3f99a48fe3c23f186e3e 100644
|
| --- a/chrome/browser/chromeos/cros/update_library.cc
|
| +++ b/chrome/browser/chromeos/cros/update_library.cc
|
| @@ -5,6 +5,7 @@
|
| #include "chrome/browser/chromeos/cros/update_library.h"
|
|
|
| #include "base/basictypes.h"
|
| +#include "base/logging.h"
|
| #include "base/message_loop.h"
|
| #include "base/observer_list.h"
|
| #include "chrome/browser/chromeos/cros/cros_library.h"
|
| @@ -14,10 +15,7 @@ namespace chromeos {
|
|
|
| class UpdateLibraryImpl : public UpdateLibrary {
|
| public:
|
| - UpdateLibraryImpl() : status_connection_(NULL) {
|
| - if (CrosLibrary::Get()->EnsureLoaded())
|
| - Init();
|
| - }
|
| + UpdateLibraryImpl() : status_connection_(NULL) {}
|
|
|
| virtual ~UpdateLibraryImpl() {
|
| if (status_connection_) {
|
| @@ -26,6 +24,16 @@ class UpdateLibraryImpl : public UpdateLibrary {
|
| }
|
| }
|
|
|
| + void Init() {
|
| + if (CrosLibrary::Get()->EnsureLoaded()) {
|
| + CHECK(!status_connection_) << "Already initialized";
|
| + status_connection_ =
|
| + chromeos::MonitorUpdateStatus(&UpdateStatusHandler, this);
|
| + // Asynchronously load the initial state.
|
| + chromeos::RequestUpdateStatus(&UpdateStatusHandler, this);
|
| + }
|
| + }
|
| +
|
| void AddObserver(Observer* observer) {
|
| observers_.AddObserver(observer);
|
| }
|
| @@ -66,17 +74,11 @@ class UpdateLibraryImpl : public UpdateLibrary {
|
| }
|
|
|
| private:
|
| - static void ChangedHandler(void* object, const UpdateProgress& status) {
|
| + static void UpdateStatusHandler(void* object, const UpdateProgress& status) {
|
| UpdateLibraryImpl* impl = static_cast<UpdateLibraryImpl*>(object);
|
| impl->UpdateStatus(Status(status));
|
| }
|
|
|
| - void Init() {
|
| - status_connection_ = chromeos::MonitorUpdateStatus(&ChangedHandler, this);
|
| - // Asynchronously load the initial state.
|
| - RequestUpdateStatus(&ChangedHandler, this);
|
| - }
|
| -
|
| void UpdateStatus(const Status& status) {
|
| // Make sure we run on UI thread.
|
| if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| @@ -106,6 +108,7 @@ class UpdateLibraryStubImpl : public UpdateLibrary {
|
| public:
|
| UpdateLibraryStubImpl() {}
|
| virtual ~UpdateLibraryStubImpl() {}
|
| + void Init() {}
|
| void AddObserver(Observer* observer) {}
|
| void RemoveObserver(Observer* observer) {}
|
| bool HasObserver(Observer* observer) { return false; }
|
| @@ -120,9 +123,7 @@ class UpdateLibraryStubImpl : public UpdateLibrary {
|
| if (callback)
|
| callback(user_data, "beta-channel");
|
| }
|
| - const UpdateLibrary::Status& status() const {
|
| - return status_;
|
| - }
|
| + const UpdateLibrary::Status& status() const { return status_; }
|
|
|
| private:
|
| Status status_;
|
| @@ -132,10 +133,13 @@ class UpdateLibraryStubImpl : public UpdateLibrary {
|
|
|
| // static
|
| UpdateLibrary* UpdateLibrary::GetImpl(bool stub) {
|
| + UpdateLibrary* impl;
|
| if (stub)
|
| - return new UpdateLibraryStubImpl();
|
| + impl = new UpdateLibraryStubImpl();
|
| else
|
| - return new UpdateLibraryImpl();
|
| + impl = new UpdateLibraryImpl();
|
| + impl->Init();
|
| + return impl;
|
| }
|
|
|
| } // namespace chromeos
|
|
|