Home | History | Annotate | Download | only in help
      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 
     60