personalization: null safety |OnUserImageIsEnterpriseManagedChanged|
In some cases, there is no user associated with a given AccountId
that was used to remove policy controlled avatar image data. Be more
careful about null safety to prevent a crash in that instance.
Only notify user image enterprise state observers of the change
if there is a valid user.
BUG=b:242644179
Change-Id: I31ffb0260d4e12de53a35897c57a05874ffa277b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3840856
Reviewed-by: Tao Wu <wutao@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Jeffrey Young <cowmoo@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1040497}
diff --git a/chrome/browser/ash/login/users/avatar/user_image_manager_impl.cc b/chrome/browser/ash/login/users/avatar/user_image_manager_impl.cc
index f43e27e..c84be48 100644
--- a/chrome/browser/ash/login/users/avatar/user_image_manager_impl.cc
+++ b/chrome/browser/ash/login/users/avatar/user_image_manager_impl.cc
@@ -697,9 +697,12 @@
job_.reset();
const user_manager::User* user = GetUser();
+ if (!user) {
+ return;
+ }
// If the user image for the currently logged-in user became managed, stop the
// sync observer so that the policy-set image does not get synced out.
- if (user && user->is_logged_in())
+ if (user->is_logged_in())
user_image_sync_observer_.reset();
user_manager_->NotifyUserImageIsEnterpriseManagedChanged(
@@ -712,8 +715,12 @@
return;
has_managed_image_ = false;
- user_manager_->NotifyUserImageIsEnterpriseManagedChanged(
- *GetUser(), /*is_enterprise_managed=*/false);
+
+ const auto* user = GetUser();
+ if (user) {
+ user_manager_->NotifyUserImageIsEnterpriseManagedChanged(
+ *user, /*is_enterprise_managed=*/false);
+ }
SetInitialUserImage();
TryToCreateImageSyncObserver();
}
diff --git a/chrome/browser/ash/web_applications/personalization_app/enterprise_policy_delegate_impl.cc b/chrome/browser/ash/web_applications/personalization_app/enterprise_policy_delegate_impl.cc
index 3c4f0d27..4ab2c6fe 100644
--- a/chrome/browser/ash/web_applications/personalization_app/enterprise_policy_delegate_impl.cc
+++ b/chrome/browser/ash/web_applications/personalization_app/enterprise_policy_delegate_impl.cc
@@ -42,7 +42,7 @@
bool EnterprisePolicyDelegateImpl::IsWallpaperEnterpriseManaged() const {
return WallpaperController::Get()->IsWallpaperControlledByPolicy(
- GetUser(profile_)->GetAccountId());
+ GetAccountId(profile_));
}
void EnterprisePolicyDelegateImpl::AddObserver(
@@ -59,7 +59,7 @@
const user_manager::User& user,
bool is_enterprise_managed) {
// Filter out updates from other users.
- if (user.GetAccountId() != GetUser(profile_)->GetAccountId()) {
+ if (user.GetAccountId() != GetAccountId(profile_)) {
return;
}