Commit df7838b5 authored by Sean Kau's avatar Sean Kau Committed by Commit Bot

Pull initial printing policies.

When the lifetime of the binders is changed, it can be initialized after
the Profile or Settings objects.  When this happens, we may never get a
change event if the policies don't change.  Alleviate this by querying
the policy objects on initialization.

Bug: chromium:1015949
Change-Id: I401e1c116c89b7a9165f60c7850a1a34f17c70ce
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1940306
Commit-Queue: Sean Kau <skau@chromium.org>
Reviewed-by: default avatarBailey Berro <baileyberro@chromium.org>
Cr-Commit-Position: refs/heads/master@{#720776}
parent 43da6997
......@@ -102,6 +102,7 @@ class SettingsBinder : public CalculatorsPoliciesBinder {
if (!settings_->GetInteger(kDeviceNativePrintersAccessMode, &mode_val)) {
mode_val = BulkPrintersCalculator::AccessMode::UNSET;
}
DVLOG(1) << "Device access mode: " << mode_val;
return mode_val;
}
......@@ -173,6 +174,7 @@ CalculatorsPoliciesBinder::GetWeakPtr() {
}
void CalculatorsPoliciesBinder::Init() {
// Register for future updates.
Bind(access_mode_name_,
base::BindRepeating(&CalculatorsPoliciesBinder::UpdateAccessMode,
GetWeakPtr()));
......@@ -182,6 +184,11 @@ void CalculatorsPoliciesBinder::Init() {
Bind(whitelist_name_,
base::BindRepeating(&CalculatorsPoliciesBinder::UpdateWhitelist,
GetWeakPtr()));
// Retrieve initial values for all policy fields.
UpdateAccessMode();
UpdateBlacklist();
UpdateWhitelist();
}
void CalculatorsPoliciesBinder::UpdateAccessMode() {
......
......@@ -187,13 +187,30 @@ TEST_F(CalculatorsPoliciesBinderTest, PrefsBlacklist) {
EXPECT_EQ(calculator->GetPrinters().size(), kBlacklistPrinters);
}
TEST_F(CalculatorsPoliciesBinderTest, PrefsBeforeBind) {
// Verify that if preferences are set before we bind to policies, the
// calculator is still properly populated.
prefs_.SetManagedPref(
prefs::kRecommendedNativePrintersAccessMode,
std::make_unique<base::Value>(
BulkPrintersCalculator::AccessMode::WHITELIST_ONLY));
prefs_.SetManagedPref(prefs::kRecommendedNativePrintersWhitelist,
StringsToList(kWhitelistIds));
auto calculator = UserCalculator();
env_.RunUntilIdle();
EXPECT_TRUE(calculator->IsComplete());
EXPECT_EQ(calculator->GetPrinters().size(), kWhitelistPrinters);
}
TEST_F(CalculatorsPoliciesBinderTest, SettingsAllAccess) {
auto calculator = DeviceCalculator();
SetDeviceSetting(kDeviceNativePrintersAccessMode,
base::Value(BulkPrintersCalculator::AccessMode::ALL_ACCESS));
env_.RunUntilIdle();
env_.RunUntilIdle();
EXPECT_TRUE(calculator->IsComplete());
EXPECT_EQ(calculator->GetPrinters().size(), kNumPrinters);
}
......@@ -226,5 +243,17 @@ TEST_F(CalculatorsPoliciesBinderTest, SettingsBlacklist) {
EXPECT_EQ(calculator->GetPrinters().size(), kBlacklistPrinters);
}
TEST_F(CalculatorsPoliciesBinderTest, SettingsBeforeBind) {
// Set policy before binding to the calculator.
SetDeviceSetting(kDeviceNativePrintersAccessMode,
base::Value(BulkPrintersCalculator::AccessMode::ALL_ACCESS));
auto calculator = DeviceCalculator();
env_.RunUntilIdle();
EXPECT_TRUE(calculator->IsComplete());
EXPECT_EQ(calculator->GetPrinters().size(), kNumPrinters);
}
} // namespace
} // namespace chromeos
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment