update_engine: Delete android things policy
Android things policy not used.
BUG=b:171829801
TEST=none
Change-Id: Ibf14e72ac9061dcad7c4b291474834529681c395
Reviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/2518384
Tested-by: Jae Hoon Kim <kimjae@chromium.org>
Commit-Queue: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
diff --git a/update_manager/android_things_policy.cc b/update_manager/android_things_policy.cc
deleted file mode 100644
index 5759145..0000000
--- a/update_manager/android_things_policy.cc
+++ /dev/null
@@ -1,181 +0,0 @@
-//
-// Copyright (C) 2017 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include "update_engine/update_manager/android_things_policy.h"
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include <base/logging.h>
-#include <base/time/time.h>
-
-#include "update_engine/update_manager/api_restricted_downloads_policy_impl.h"
-#include "update_engine/update_manager/enough_slots_ab_updates_policy_impl.h"
-#include "update_engine/update_manager/interactive_update_policy_impl.h"
-#include "update_engine/update_manager/official_build_check_policy_impl.h"
-
-using base::Time;
-using chromeos_update_engine::ErrorCode;
-using std::string;
-using std::unique_ptr;
-using std::vector;
-
-namespace chromeos_update_manager {
-
-unique_ptr<Policy> GetSystemPolicy() {
- return std::make_unique<AndroidThingsPolicy>();
-}
-
-const NextUpdateCheckPolicyConstants
- AndroidThingsPolicy::kNextUpdateCheckPolicyConstants = {
- .timeout_initial_interval = 7 * 60,
- .timeout_periodic_interval = 5 * 60 * 60,
- .timeout_max_backoff_interval = 26 * 60 * 60,
- .timeout_regular_fuzz = 10 * 60,
- .attempt_backoff_max_interval_in_days = 16,
- .attempt_backoff_fuzz_in_hours = 12,
-};
-
-EvalStatus AndroidThingsPolicy::UpdateCheckAllowed(
- EvaluationContext* ec,
- State* state,
- string* error,
- UpdateCheckParams* result) const {
- // Set the default return values.
- result->updates_enabled = true;
- result->target_channel.clear();
- result->lts_tag.clear();
- result->target_version_prefix.clear();
- result->rollback_allowed = false;
- result->rollback_data_save_requested = false;
- result->rollback_allowed_milestones = -1;
- result->rollback_on_channel_downgrade = false;
- result->interactive = false;
-
- // Build a list of policies to consult. Note that each policy may modify the
- // result structure, even if it signals kContinue.
- EnoughSlotsAbUpdatesPolicyImpl enough_slots_ab_updates_policy;
- OnlyUpdateOfficialBuildsPolicyImpl only_update_official_builds_policy;
- InteractiveUpdatePolicyImpl interactive_update_policy;
- NextUpdateCheckTimePolicyImpl next_update_check_time_policy(
- kNextUpdateCheckPolicyConstants);
-
- vector<Policy const*> policies_to_consult = {
- // Do not perform any updates if there are not enough slots to do
- // A/B updates
- &enough_slots_ab_updates_policy,
-
- // Check to see if an interactive update was requested.
- &interactive_update_policy,
-
- // Unofficial builds should not perform periodic update checks.
- &only_update_official_builds_policy,
-
- // Ensure that periodic update checks are timed properly.
- &next_update_check_time_policy,
- };
-
- // Now that the list of policy implementations, and the order to consult them,
- // as been setup, do that. If none of the policies make a definitive
- // decisions about whether or not to check for updates, then allow the update
- // check to happen.
- EvalStatus status = ConsultPolicies(policies_to_consult,
- &Policy::UpdateCheckAllowed,
- ec,
- state,
- error,
- result);
- if (status != EvalStatus::kContinue) {
- return status;
- } else {
- // It is time to check for an update.
- LOG(INFO) << "Allowing update check.";
- return EvalStatus::kSucceeded;
- }
-}
-
-// Uses the |UpdateRestrictions| to determine if the download and apply can
-// occur at this time.
-EvalStatus AndroidThingsPolicy::UpdateCanBeApplied(
- EvaluationContext* ec,
- State* state,
- string* error,
- ErrorCode* result,
- chromeos_update_engine::InstallPlan* install_plan) const {
- // Build a list of policies to consult. Note that each policy may modify the
- // result structure, even if it signals kContinue.
- ApiRestrictedDownloadsPolicyImpl api_restricted_downloads_policy;
-
- vector<Policy const*> policies_to_consult = {
- // Do not apply the update if all updates are restricted by the API.
- &api_restricted_downloads_policy,
- };
-
- // Now that the list of policy implementations, and the order to consult them,
- // as been setup, do that. If none of the policies make a definitive
- // decisions about whether or not to check for updates, then allow the update
- // check to happen.
- EvalStatus status = ConsultPolicies(policies_to_consult,
- &Policy::UpdateCanBeApplied,
- ec,
- state,
- error,
- result,
- install_plan);
- if (EvalStatus::kContinue != status) {
- return status;
- } else {
- // The update can proceed.
- LOG(INFO) << "Allowing update to be applied.";
- *result = ErrorCode::kSuccess;
- return EvalStatus::kSucceeded;
- }
-}
-
-// Always returns |EvalStatus::kSucceeded|
-EvalStatus AndroidThingsPolicy::UpdateCanStart(EvaluationContext* ec,
- State* state,
- string* error,
- UpdateDownloadParams* result,
- UpdateState update_state) const {
- // Update is good to go.
- result->update_can_start = true;
- return EvalStatus::kSucceeded;
-}
-
-// P2P is always disabled. Returns |result|==|false| and
-// |EvalStatus::kSucceeded|
-EvalStatus AndroidThingsPolicy::P2PEnabled(EvaluationContext* ec,
- State* state,
- string* error,
- bool* result) const {
- *result = false;
- return EvalStatus::kSucceeded;
-}
-
-// This will return immediately with |EvalStatus::kSucceeded| and set
-// |result|==|false|
-EvalStatus AndroidThingsPolicy::P2PEnabledChanged(EvaluationContext* ec,
- State* state,
- string* error,
- bool* result,
- bool prev_result) const {
- *result = false;
- return EvalStatus::kSucceeded;
-}
-
-} // namespace chromeos_update_manager
diff --git a/update_manager/android_things_policy.h b/update_manager/android_things_policy.h
deleted file mode 100644
index 3b273ca..0000000
--- a/update_manager/android_things_policy.h
+++ /dev/null
@@ -1,86 +0,0 @@
-//
-// Copyright (C) 2017 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#ifndef UPDATE_ENGINE_UPDATE_MANAGER_ANDROID_THINGS_POLICY_H_
-#define UPDATE_ENGINE_UPDATE_MANAGER_ANDROID_THINGS_POLICY_H_
-
-#include <string>
-
-#include "update_engine/update_manager/next_update_check_policy_impl.h"
-#include "update_engine/update_manager/policy_utils.h"
-
-namespace chromeos_update_manager {
-
-// AndroidThingsPolicy implements the policy-related logic used in
-// AndroidThings.
-class AndroidThingsPolicy : public Policy {
- public:
- AndroidThingsPolicy() = default;
- ~AndroidThingsPolicy() override = default;
-
- // Policy overrides.
- EvalStatus UpdateCheckAllowed(EvaluationContext* ec,
- State* state,
- std::string* error,
- UpdateCheckParams* result) const override;
-
- // Uses the |UpdateRestrictions| to determine if the download and apply can
- // occur at this time.
- EvalStatus UpdateCanBeApplied(
- EvaluationContext* ec,
- State* state,
- std::string* error,
- chromeos_update_engine::ErrorCode* result,
- chromeos_update_engine::InstallPlan* install_plan) const override;
-
- // Always returns |EvalStatus::kSucceeded|
- EvalStatus UpdateCanStart(EvaluationContext* ec,
- State* state,
- std::string* error,
- UpdateDownloadParams* result,
- UpdateState update_state) const override;
-
- // P2P is always disabled. Returns |result|==|false| and
- // |EvalStatus::kSucceeded|
- EvalStatus P2PEnabled(EvaluationContext* ec,
- State* state,
- std::string* error,
- bool* result) const override;
-
- // This will return immediately with |EvalStatus::kSucceeded| and set
- // |result|==|false|
- EvalStatus P2PEnabledChanged(EvaluationContext* ec,
- State* state,
- std::string* error,
- bool* result,
- bool prev_result) const override;
-
- protected:
- // Policy override.
- std::string PolicyName() const override { return "AndroidThingsPolicy"; }
-
- private:
- friend class UmAndroidThingsPolicyTest;
- FRIEND_TEST(UmAndroidThingsPolicyTest, UpdateCheckAllowedWaitsForTheTimeout);
-
- static const NextUpdateCheckPolicyConstants kNextUpdateCheckPolicyConstants;
-
- DISALLOW_COPY_AND_ASSIGN(AndroidThingsPolicy);
-};
-
-} // namespace chromeos_update_manager
-
-#endif // UPDATE_ENGINE_UPDATE_MANAGER_ANDROID_THINGS_POLICY_H_
diff --git a/update_manager/android_things_policy_unittest.cc b/update_manager/android_things_policy_unittest.cc
deleted file mode 100644
index 6961efc..0000000
--- a/update_manager/android_things_policy_unittest.cc
+++ /dev/null
@@ -1,188 +0,0 @@
-//
-// Copyright (C) 2017 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include "update_engine/update_manager/android_things_policy.h"
-
-#include <memory>
-
-#include "update_engine/update_manager/next_update_check_policy_impl.h"
-#include "update_engine/update_manager/policy_test_utils.h"
-
-using base::Time;
-using base::TimeDelta;
-using chromeos_update_engine::ErrorCode;
-using chromeos_update_engine::InstallPlan;
-
-namespace chromeos_update_manager {
-
-class UmAndroidThingsPolicyTest : public UmPolicyTestBase {
- protected:
- UmAndroidThingsPolicyTest() {
- policy_ = std::make_unique<AndroidThingsPolicy>();
- }
-
- void SetUpDefaultState() override {
- UmPolicyTestBase::SetUpDefaultState();
-
- // For the purpose of the tests, this is an official build
- fake_state_.system_provider()->var_is_official_build()->reset(
- new bool(true));
- // NOLINTNEXTLINE(readability/casting)
- fake_state_.system_provider()->var_num_slots()->reset(new unsigned int(2));
- }
-
- // Configures the policy to return a desired value from UpdateCheckAllowed by
- // faking the current wall clock time as needed. Restores the default state.
- // This is used when testing policies that depend on this one.
- virtual void SetUpdateCheckAllowed(bool allow_check) {
- Time next_update_check;
- CallMethodWithContext(&NextUpdateCheckTimePolicyImpl::NextUpdateCheckTime,
- &next_update_check,
- AndroidThingsPolicy::kNextUpdateCheckPolicyConstants);
- SetUpDefaultState();
- Time curr_time = next_update_check;
- if (allow_check)
- curr_time += TimeDelta::FromSeconds(1);
- else
- curr_time -= TimeDelta::FromSeconds(1);
- fake_clock_.SetWallclockTime(curr_time);
- }
-};
-
-TEST_F(UmAndroidThingsPolicyTest, UpdateCheckAllowedWaitsForTheTimeout) {
- // We get the next update_check timestamp from the policy's private method
- // and then we check the public method respects that value on the normal
- // case.
- Time next_update_check;
- Time last_checked_time =
- fake_clock_.GetWallclockTime() + TimeDelta::FromMinutes(1234);
-
- LOG(INFO) << "last_checked_time: " << last_checked_time;
- fake_state_.updater_provider()->var_last_checked_time()->reset(
- new Time(last_checked_time));
- CallMethodWithContext(&NextUpdateCheckTimePolicyImpl::NextUpdateCheckTime,
- &next_update_check,
- AndroidThingsPolicy::kNextUpdateCheckPolicyConstants);
- LOG(INFO) << "Next check allowed at: " << next_update_check;
-
- // Check that the policy blocks until the next_update_check is reached.
- SetUpDefaultClock();
- SetUpDefaultState();
- fake_state_.updater_provider()->var_last_checked_time()->reset(
- new Time(last_checked_time));
- fake_clock_.SetWallclockTime(next_update_check - TimeDelta::FromSeconds(1));
-
- UpdateCheckParams result;
- ExpectPolicyStatus(
- EvalStatus::kAskMeAgainLater, &Policy::UpdateCheckAllowed, &result);
-
- SetUpDefaultClock();
- SetUpDefaultState();
- fake_state_.updater_provider()->var_last_checked_time()->reset(
- new Time(last_checked_time));
- fake_clock_.SetWallclockTime(next_update_check + TimeDelta::FromSeconds(1));
- ExpectPolicyStatus(
- EvalStatus::kSucceeded, &Policy::UpdateCheckAllowed, &result);
- EXPECT_TRUE(result.updates_enabled);
- EXPECT_FALSE(result.interactive);
-}
-
-TEST_F(UmAndroidThingsPolicyTest,
- UpdateCheckAllowedUpdatesDisabledForUnofficialBuilds) {
- // UpdateCheckAllowed should return kAskMeAgainLater if this is an unofficial
- // build; we don't want periodic update checks on developer images.
-
- fake_state_.system_provider()->var_is_official_build()->reset(
- new bool(false));
-
- UpdateCheckParams result;
- ExpectPolicyStatus(
- EvalStatus::kAskMeAgainLater, &Policy::UpdateCheckAllowed, &result);
-}
-
-TEST_F(UmAndroidThingsPolicyTest,
- UpdateCheckAllowedUpdatesDisabledWhenNotEnoughSlotsAbUpdates) {
- // UpdateCheckAllowed should return false (kSucceeded) if the image booted
- // without enough slots to do A/B updates.
-
- // NOLINTNEXTLINE(readability/casting)
- fake_state_.system_provider()->var_num_slots()->reset(new unsigned int(1));
-
- UpdateCheckParams result;
- ExpectPolicyStatus(
- EvalStatus::kSucceeded, &Policy::UpdateCheckAllowed, &result);
- EXPECT_FALSE(result.updates_enabled);
-}
-
-TEST_F(UmAndroidThingsPolicyTest,
- UpdateCheckAllowedForcedUpdateRequestedInteractive) {
- // UpdateCheckAllowed should return true because a forced update request was
- // signaled for an interactive update.
-
- SetUpdateCheckAllowed(true);
- fake_state_.updater_provider()->var_forced_update_requested()->reset(
- new UpdateRequestStatus(UpdateRequestStatus::kInteractive));
-
- UpdateCheckParams result;
- ExpectPolicyStatus(
- EvalStatus::kSucceeded, &Policy::UpdateCheckAllowed, &result);
- EXPECT_TRUE(result.updates_enabled);
- EXPECT_TRUE(result.interactive);
-}
-
-TEST_F(UmAndroidThingsPolicyTest,
- UpdateCheckAllowedForcedUpdateRequestedPeriodic) {
- // UpdateCheckAllowed should return true because a forced update request was
- // signaled for a periodic check.
-
- SetUpdateCheckAllowed(true);
- fake_state_.updater_provider()->var_forced_update_requested()->reset(
- new UpdateRequestStatus(UpdateRequestStatus::kPeriodic));
-
- UpdateCheckParams result;
- ExpectPolicyStatus(
- EvalStatus::kSucceeded, &Policy::UpdateCheckAllowed, &result);
- EXPECT_TRUE(result.updates_enabled);
- EXPECT_FALSE(result.interactive);
-}
-
-TEST_F(UmAndroidThingsPolicyTest, UpdateCanBeAppliedOk) {
- // UpdateCanBeApplied should return kSucceeded in the base case
-
- InstallPlan plan;
- ErrorCode result;
- ExpectPolicyStatus(
- EvalStatus::kSucceeded, &Policy::UpdateCanBeApplied, &result, &plan);
-
- EXPECT_EQ(ErrorCode::kSuccess, result);
-}
-
-TEST_F(UmAndroidThingsPolicyTest, UpdateCanBeAppliedRestricted) {
- // UpdateCanBeApplied should return kOmahaUpdateDeferredPerPolicy in
- // when the restricted flag is set in the Updater.
-
- fake_state_.updater_provider()->var_update_restrictions()->reset(
- new UpdateRestrictions(UpdateRestrictions::kRestrictDownloading));
-
- InstallPlan plan;
- ErrorCode result;
- ExpectPolicyStatus(
- EvalStatus::kSucceeded, &Policy::UpdateCanBeApplied, &result, &plan);
-
- EXPECT_EQ(ErrorCode::kOmahaUpdateDeferredPerPolicy, result);
-}
-
-} // namespace chromeos_update_manager
diff --git a/update_manager/policy.h b/update_manager/policy.h
index 7543ea9..595fb7c 100644
--- a/update_manager/policy.h
+++ b/update_manager/policy.h
@@ -303,9 +303,7 @@
DISALLOW_COPY_AND_ASSIGN(Policy);
};
-// Get system dependent (Chrome OS vs. Android) policy
-// implementation. Implementations can be found in chromeos_policy.cc and
-// android_things_policy.cc.
+// Get system dependent policy implementation.
std::unique_ptr<Policy> GetSystemPolicy();
} // namespace chromeos_update_manager