1cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// 2cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// Copyright (C) 2017 The Android Open Source Project 3cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// 4cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// Licensed under the Apache License, Version 2.0 (the "License"); 5cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// you may not use this file except in compliance with the License. 6cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// You may obtain a copy of the License at 7cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// 8cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// http://www.apache.org/licenses/LICENSE-2.0 9cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// 10cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// Unless required by applicable law or agreed to in writing, software 11cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// distributed under the License is distributed on an "AS IS" BASIS, 12cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// See the License for the specific language governing permissions and 14cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// limitations under the License. 15cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// 16cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood 17cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood#include "update_engine/update_manager/interactive_update_policy_impl.h" 18cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood 19cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Woodnamespace chromeos_update_manager { 20cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood 21cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood// Check to see if an interactive update was requested. 22cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron WoodEvalStatus InteractiveUpdatePolicyImpl::UpdateCheckAllowed( 23cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood EvaluationContext* ec, 24cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood State* state, 25cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood std::string* error, 26cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood UpdateCheckParams* result) const { 27cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood UpdaterProvider* const updater_provider = state->updater_provider(); 28cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood 29cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood // First, check to see if an interactive update was requested. 30cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood const UpdateRequestStatus* forced_update_requested_p = 31cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood ec->GetValue(updater_provider->var_forced_update_requested()); 32cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood if (forced_update_requested_p != nullptr && 33cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood *forced_update_requested_p != UpdateRequestStatus::kNone) { 34cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood result->is_interactive = 35cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood (*forced_update_requested_p == UpdateRequestStatus::kInteractive); 36cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood LOG(INFO) << "Forced update signaled (" 37cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood << (result->is_interactive ? "interactive" : "periodic") 38cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood << "), allowing update check."; 39cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood return EvalStatus::kSucceeded; 40cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood } 41cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood return EvalStatus::kContinue; 42cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood} 43cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood 44cdd6bab2e1071f440db5d99eece02fe7ae8acf90Aaron Wood} // namespace chromeos_update_manager 45