1 // 2 // Copyright (C) 2014 The Android Open Source Project 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 // 16 17 #ifndef UPDATE_ENGINE_UPDATE_MANAGER_REAL_UPDATER_PROVIDER_H_ 18 #define UPDATE_ENGINE_UPDATE_MANAGER_REAL_UPDATER_PROVIDER_H_ 19 20 #include <memory> 21 #include <string> 22 23 #include "update_engine/update_manager/generic_variables.h" 24 #include "update_engine/update_manager/updater_provider.h" 25 26 namespace chromeos_update_manager { 27 28 // A concrete UpdaterProvider implementation using local (in-process) bindings. 29 class RealUpdaterProvider : public UpdaterProvider { 30 public: 31 // We assume that any other object handle we get from the system state is 32 // "volatile", and so must be re-acquired whenever access is needed; this 33 // guarantees that parts of the system state can be mocked out at any time 34 // during testing. We further assume that, by the time Init() is called, the 35 // system state object is fully populated and usable. 36 RealUpdaterProvider(); 37 38 // Initializes the provider and returns whether it succeeded. Init()39 bool Init() { return true; } 40 var_updater_started_time()41 Variable<base::Time>* var_updater_started_time() override { 42 return &var_updater_started_time_; 43 } 44 var_last_checked_time()45 Variable<base::Time>* var_last_checked_time() override { 46 return var_last_checked_time_.get(); 47 } 48 var_update_completed_time()49 Variable<base::Time>* var_update_completed_time() override { 50 return var_update_completed_time_.get(); 51 } 52 var_progress()53 Variable<double>* var_progress() override { return var_progress_.get(); } 54 var_stage()55 Variable<Stage>* var_stage() override { return var_stage_.get(); } 56 var_new_version()57 Variable<std::string>* var_new_version() override { 58 return var_new_version_.get(); 59 } 60 var_payload_size()61 Variable<uint64_t>* var_payload_size() override { 62 return var_payload_size_.get(); 63 } 64 var_curr_channel()65 Variable<std::string>* var_curr_channel() override { 66 return var_curr_channel_.get(); 67 } 68 var_new_channel()69 Variable<std::string>* var_new_channel() override { 70 return var_new_channel_.get(); 71 } 72 var_p2p_enabled()73 Variable<bool>* var_p2p_enabled() override { return var_p2p_enabled_.get(); } 74 var_cellular_enabled()75 Variable<bool>* var_cellular_enabled() override { 76 return var_cellular_enabled_.get(); 77 } 78 var_consecutive_failed_update_checks()79 Variable<unsigned int>* var_consecutive_failed_update_checks() override { 80 return var_consecutive_failed_update_checks_.get(); 81 } 82 var_server_dictated_poll_interval()83 Variable<unsigned int>* var_server_dictated_poll_interval() override { 84 return var_server_dictated_poll_interval_.get(); 85 } 86 var_forced_update_requested()87 Variable<UpdateRequestStatus>* var_forced_update_requested() override { 88 return var_forced_update_requested_.get(); 89 } 90 var_update_restrictions()91 Variable<UpdateRestrictions>* var_update_restrictions() override { 92 return var_update_restrictions_.get(); 93 } 94 var_test_update_check_interval_timeout()95 Variable<int64_t>* var_test_update_check_interval_timeout() override { 96 return var_test_update_check_interval_timeout_.get(); 97 } 98 99 private: 100 // Variable implementations. 101 ConstCopyVariable<base::Time> var_updater_started_time_; 102 std::unique_ptr<Variable<base::Time>> var_last_checked_time_; 103 std::unique_ptr<Variable<base::Time>> var_update_completed_time_; 104 std::unique_ptr<Variable<double>> var_progress_; 105 std::unique_ptr<Variable<Stage>> var_stage_; 106 std::unique_ptr<Variable<std::string>> var_new_version_; 107 std::unique_ptr<Variable<uint64_t>> var_payload_size_; 108 std::unique_ptr<Variable<std::string>> var_curr_channel_; 109 std::unique_ptr<Variable<std::string>> var_new_channel_; 110 std::unique_ptr<Variable<bool>> var_p2p_enabled_; 111 std::unique_ptr<Variable<bool>> var_cellular_enabled_; 112 std::unique_ptr<Variable<unsigned int>> var_consecutive_failed_update_checks_; 113 std::unique_ptr<Variable<unsigned int>> var_server_dictated_poll_interval_; 114 std::unique_ptr<Variable<UpdateRequestStatus>> var_forced_update_requested_; 115 std::unique_ptr<Variable<UpdateRestrictions>> var_update_restrictions_; 116 std::unique_ptr<Variable<int64_t>> var_test_update_check_interval_timeout_; 117 118 DISALLOW_COPY_AND_ASSIGN(RealUpdaterProvider); 119 }; 120 121 } // namespace chromeos_update_manager 122 123 #endif // UPDATE_ENGINE_UPDATE_MANAGER_REAL_UPDATER_PROVIDER_H_ 124