1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_UI_WEBUI_HELP_VERSION_UPDATER_CHROMEOS_H_
6#define CHROME_BROWSER_UI_WEBUI_HELP_VERSION_UPDATER_CHROMEOS_H_
7
8#include "base/compiler_specific.h"
9#include "base/memory/weak_ptr.h"
10#include "chrome/browser/ui/webui/help/version_updater.h"
11#include "chromeos/dbus/update_engine_client.h"
12
13class VersionUpdaterCros : public VersionUpdater,
14                           public chromeos::UpdateEngineClient::Observer {
15 public:
16  // VersionUpdater implementation.
17  virtual void CheckForUpdate(const StatusCallback& callback) OVERRIDE;
18  virtual void RelaunchBrowser() const OVERRIDE;
19  virtual void SetChannel(const std::string& channel,
20                          bool is_powerwash_allowed) OVERRIDE;
21  virtual void GetChannel(bool get_current_channel,
22                          const ChannelCallback& callback) OVERRIDE;
23
24 protected:
25  friend class VersionUpdater;
26
27  // Clients must use VersionUpdater::Create().
28  VersionUpdaterCros();
29  virtual ~VersionUpdaterCros();
30
31 private:
32  // UpdateEngineClient::Observer implementation.
33  virtual void UpdateStatusChanged(
34      const chromeos::UpdateEngineClient::Status& status) OVERRIDE;
35
36  // Callback from UpdateEngineClient::RequestUpdateCheck().
37  void OnUpdateCheck(chromeos::UpdateEngineClient::UpdateCheckResult result);
38
39  // Callback used to communicate update status to the client.
40  StatusCallback callback_;
41
42  // Last state received via UpdateStatusChanged().
43  chromeos::UpdateEngineClient::UpdateStatusOperation last_operation_;
44
45  base::WeakPtrFactory<VersionUpdaterCros> weak_ptr_factory_;
46
47  DISALLOW_COPY_AND_ASSIGN(VersionUpdaterCros);
48};
49
50#endif  // CHROME_BROWSER_UI_WEBUI_HELP_VERSION_UPDATER_CHROMEOS_H_
51