| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_ATTEMPTER_H__ | 5 #ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_ATTEMPTER_H__ |
| 6 #define CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_ATTEMPTER_H__ | 6 #define CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_ATTEMPTER_H__ |
| 7 | 7 |
| 8 #include <time.h> | 8 #include <time.h> |
| 9 | 9 |
| 10 #include <tr1/memory> | 10 #include <tr1/memory> |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 UPDATE_STATUS_FINALIZING, | 38 UPDATE_STATUS_FINALIZING, |
| 39 UPDATE_STATUS_UPDATED_NEED_REBOOT, | 39 UPDATE_STATUS_UPDATED_NEED_REBOOT, |
| 40 UPDATE_STATUS_REPORTING_ERROR_EVENT, | 40 UPDATE_STATUS_REPORTING_ERROR_EVENT, |
| 41 }; | 41 }; |
| 42 | 42 |
| 43 const char* UpdateStatusToString(UpdateStatus status); | 43 const char* UpdateStatusToString(UpdateStatus status); |
| 44 | 44 |
| 45 class UpdateAttempter : public ActionProcessorDelegate, | 45 class UpdateAttempter : public ActionProcessorDelegate, |
| 46 public DownloadActionDelegate { | 46 public DownloadActionDelegate { |
| 47 public: | 47 public: |
| 48 static const int kMaxDeltaUpdateFailures; |
| 49 |
| 48 UpdateAttempter(PrefsInterface* prefs, MetricsLibraryInterface* metrics_lib); | 50 UpdateAttempter(PrefsInterface* prefs, MetricsLibraryInterface* metrics_lib); |
| 49 virtual ~UpdateAttempter(); | 51 virtual ~UpdateAttempter(); |
| 50 | 52 |
| 51 // Checks for update and, if a newer version is available, attempts | 53 // Checks for update and, if a newer version is available, attempts |
| 52 // to update the system. Non-empty |in_app_version| or | 54 // to update the system. Non-empty |in_app_version| or |
| 53 // |in_update_url| prevents automatic detection of the parameter. | 55 // |in_update_url| prevents automatic detection of the parameter. |
| 54 virtual void Update(const std::string& app_version, | 56 virtual void Update(const std::string& app_version, |
| 55 const std::string& omaha_url); | 57 const std::string& omaha_url); |
| 56 | 58 |
| 57 // ActionProcessorDelegate methods: | 59 // ActionProcessorDelegate methods: |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 // Initiates a reboot if the current state is | 101 // Initiates a reboot if the current state is |
| 100 // UPDATED_NEED_REBOOT. Returns true on sucess, false otherwise. | 102 // UPDATED_NEED_REBOOT. Returns true on sucess, false otherwise. |
| 101 bool RebootIfNeeded(); | 103 bool RebootIfNeeded(); |
| 102 | 104 |
| 103 // DownloadActionDelegate methods | 105 // DownloadActionDelegate methods |
| 104 void SetDownloadStatus(bool active); | 106 void SetDownloadStatus(bool active); |
| 105 void BytesReceived(uint64_t bytes_received, uint64_t total); | 107 void BytesReceived(uint64_t bytes_received, uint64_t total); |
| 106 | 108 |
| 107 private: | 109 private: |
| 108 friend class UpdateAttempterTest; | 110 friend class UpdateAttempterTest; |
| 111 FRIEND_TEST(UpdateAttempterTest, DisableDeltaUpdateIfNeededTest); |
| 112 FRIEND_TEST(UpdateAttempterTest, MarkDeltaUpdateFailureTest); |
| 109 FRIEND_TEST(UpdateAttempterTest, UpdateTest); | 113 FRIEND_TEST(UpdateAttempterTest, UpdateTest); |
| 110 | 114 |
| 111 // Sets the status to the given status and notifies a status update | 115 // Sets the status to the given status and notifies a status update |
| 112 // over dbus. | 116 // over dbus. |
| 113 void SetStatusAndNotify(UpdateStatus status); | 117 void SetStatusAndNotify(UpdateStatus status); |
| 114 | 118 |
| 115 // Creates an error event object in |error_event_| to be included in | 119 // Creates an error event object in |error_event_| to be included in |
| 116 // an OmahaRequestAction once the current action processor is done. | 120 // an OmahaRequestAction once the current action processor is done. |
| 117 void CreatePendingErrorEvent(AbstractAction* action, ActionExitCode code); | 121 void CreatePendingErrorEvent(AbstractAction* action, ActionExitCode code); |
| 118 | 122 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 135 // timeout sources. | 139 // timeout sources. |
| 136 void CleanupPriorityManagement(); | 140 void CleanupPriorityManagement(); |
| 137 | 141 |
| 138 // The process priority timeout source callback increases the | 142 // The process priority timeout source callback increases the |
| 139 // current priority by one step (low goes to normal, normal goes to | 143 // current priority by one step (low goes to normal, normal goes to |
| 140 // high). Returns true if the callback must be invoked again after a | 144 // high). Returns true if the callback must be invoked again after a |
| 141 // timeout, or false if GLib can destroy this timeout source. | 145 // timeout, or false if GLib can destroy this timeout source. |
| 142 static gboolean StaticManagePriorityCallback(gpointer data); | 146 static gboolean StaticManagePriorityCallback(gpointer data); |
| 143 bool ManagePriorityCallback(); | 147 bool ManagePriorityCallback(); |
| 144 | 148 |
| 149 // Checks if a full update is needed and forces it by updating the Omaha |
| 150 // request params. |
| 151 void DisableDeltaUpdateIfNeeded(); |
| 152 |
| 153 // If this was a delta update attempt that failed, count it so that a full |
| 154 // update can be tried when needed. |
| 155 void MarkDeltaUpdateFailure(); |
| 156 |
| 145 // Last status notification timestamp used for throttling. Use | 157 // Last status notification timestamp used for throttling. Use |
| 146 // monotonic TimeTicks to ensure that notifications are sent even if | 158 // monotonic TimeTicks to ensure that notifications are sent even if |
| 147 // the system clock is set back in the middle of an update. | 159 // the system clock is set back in the middle of an update. |
| 148 base::TimeTicks last_notify_time_; | 160 base::TimeTicks last_notify_time_; |
| 149 | 161 |
| 150 std::vector<std::tr1::shared_ptr<AbstractAction> > actions_; | 162 std::vector<std::tr1::shared_ptr<AbstractAction> > actions_; |
| 151 scoped_ptr<ActionProcessor> processor_; | 163 scoped_ptr<ActionProcessor> processor_; |
| 152 | 164 |
| 153 // If non-null, this UpdateAttempter will send status updates over this | 165 // If non-null, this UpdateAttempter will send status updates over this |
| 154 // dbus service. | 166 // dbus service. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 181 // Set to true if an update download is active (and BytesReceived | 193 // Set to true if an update download is active (and BytesReceived |
| 182 // will be called), set to false otherwise. | 194 // will be called), set to false otherwise. |
| 183 bool download_active_; | 195 bool download_active_; |
| 184 | 196 |
| 185 // For status: | 197 // For status: |
| 186 UpdateStatus status_; | 198 UpdateStatus status_; |
| 187 double download_progress_; | 199 double download_progress_; |
| 188 int64_t last_checked_time_; | 200 int64_t last_checked_time_; |
| 189 std::string new_version_; | 201 std::string new_version_; |
| 190 int64_t new_size_; | 202 int64_t new_size_; |
| 203 bool is_full_update_; |
| 191 | 204 |
| 192 // Device paramaters common to all Omaha requests. | 205 // Device paramaters common to all Omaha requests. |
| 193 OmahaRequestDeviceParams omaha_request_params_; | 206 OmahaRequestDeviceParams omaha_request_params_; |
| 194 | 207 |
| 195 DISALLOW_COPY_AND_ASSIGN(UpdateAttempter); | 208 DISALLOW_COPY_AND_ASSIGN(UpdateAttempter); |
| 196 }; | 209 }; |
| 197 | 210 |
| 198 } // namespace chromeos_update_engine | 211 } // namespace chromeos_update_engine |
| 199 | 212 |
| 200 #endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_ATTEMPTER_H__ | 213 #endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_ATTEMPTER_H__ |
| OLD | NEW |