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;
   }