- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / help / version_updater_mac.h
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_MAC_H_
6 #define CHROME_BROWSER_UI_WEBUI_HELP_VERSION_UPDATER_MAC_H_
7
8 #import <AppKit/AppKit.h>
9
10 #include "base/compiler_specific.h"
11 #include "base/mac/scoped_nsobject.h"
12 #include "chrome/browser/ui/webui/help/version_updater.h"
13
14 @class KeystoneObserver;
15
16 // OS X implementation of version update functionality, used by the WebUI
17 // About/Help page.
18 class VersionUpdaterMac : public VersionUpdater {
19  public:
20   // VersionUpdater implementation.
21   virtual void CheckForUpdate(const StatusCallback& status_callback,
22                               const PromoteCallback& promote_callback) OVERRIDE;
23   virtual void PromoteUpdater() const OVERRIDE;
24   virtual void RelaunchBrowser() const OVERRIDE;
25
26   // Process status updates received from Keystone. The dictionary will contain
27   // an AutoupdateStatus value as an intValue at key kAutoupdateStatusStatus. If
28   // a version is available (see AutoupdateStatus), it will be present at key
29   // kAutoupdateStatusVersion.
30   void UpdateStatus(NSDictionary* status);
31
32  protected:
33   friend class VersionUpdater;
34
35   // Clients must use VersionUpdater::Create().
36   VersionUpdaterMac();
37   virtual ~VersionUpdaterMac();
38
39  private:
40   // Update the visibility state of promote button.
41   void UpdateShowPromoteButton();
42
43   // Callback used to communicate update status to the client.
44   StatusCallback status_callback_;
45
46   // Callback used to show or hide the promote UI elements.
47   PromoteCallback promote_callback_;
48
49   // The visible state of the promote button.
50   bool show_promote_button_;
51
52   // The observer that will receive keystone status updates.
53   base::scoped_nsobject<KeystoneObserver> keystone_observer_;
54
55   DISALLOW_COPY_AND_ASSIGN(VersionUpdaterMac);
56 };
57
58 #endif  // CHROME_BROWSER_UI_WEBUI_HELP_VERSION_UPDATER_MAC_H_
59