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_H_ 6 #define CHROME_BROWSER_UI_WEBUI_HELP_VERSION_UPDATER_H_ 7 8 #include <string> 9 10 #include "base/callback.h" 11 #include "base/strings/string16.h" 12 13 // Interface implemented to expose per-platform updating functionality. 14 class VersionUpdater { 15 public: 16 // Update process state machine. 17 enum Status { 18 CHECKING, 19 UPDATING, 20 NEARLY_UPDATED, 21 UPDATED, 22 FAILED, 23 FAILED_OFFLINE, 24 FAILED_CONNECTION_TYPE_DISALLOWED, 25 DISABLED, 26 }; 27 28 #if defined(OS_MACOSX) 29 // Promotion state. 30 enum PromotionState { 31 PROMOTE_HIDDEN, 32 PROMOTE_ENABLED, 33 PROMOTE_DISABLED 34 }; 35 #endif // defined(OS_MACOSX) 36 37 // TODO(jhawkins): Use a delegate interface instead of multiple callback 38 // types. 39 #if defined(OS_CHROMEOS) 40 typedef base::Callback<void(const std::string&)> ChannelCallback; 41 #endif 42 43 // Used to update the client of status changes. int parameter is the progress 44 // and should only be non-zero for the UPDATING state. string16 parameter is 45 // a message explaining a failure. 46 typedef base::Callback<void(Status, int, const string16&)> 47 StatusCallback; 48 49 #if defined(OS_MACOSX) 50 // Used to show or hide the promote UI elements. 51 typedef base::Callback<void(PromotionState)> PromoteCallback; 52 #endif 53 54 virtual ~VersionUpdater() {} 55 56 // Sub-classes must implement this method to create the respective 57 // specialization. 58 static VersionUpdater* Create(); 59 60 // Begins the update process by checking for update availability. 61 // |status_callback| is called for each status update. |promote_callback| can 62 // be used to show or hide the promote UI elements. 63 virtual void CheckForUpdate(const StatusCallback& status_callback 64 #if defined(OS_MACOSX) 65 , const PromoteCallback& promote_callback 66 #endif 67 ) = 0; 68 69 #if defined(OS_MACOSX) 70 // Make updates available for all users. 71 virtual void PromoteUpdater() const = 0; 72 #endif 73 74 // Relaunches the browser, generally after being updated. 75 virtual void RelaunchBrowser() const = 0; 76 77 #if defined(OS_CHROMEOS) 78 virtual void SetChannel(const std::string& channel, 79 bool is_powerwash_allowed) = 0; 80 virtual void GetChannel(bool get_current_channel, 81 const ChannelCallback& callback) = 0; 82 #endif 83 }; 84 85 #endif // CHROME_BROWSER_UI_WEBUI_HELP_VERSION_UPDATER_H_ 86