chromium/ash/wallpaper/wallpaper_utils/wallpaper_resolution.cc

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ash/wallpaper/wallpaper_utils/wallpaper_resolution.h"

#include "ash/public/cpp/wallpaper/wallpaper_types.h"
#include "ui/display/display.h"
#include "ui/display/screen.h"
#include "ui/gfx/geometry/size.h"

namespace ash {

gfx::Size GetMaxDisplaySizeInNative() {
  // Return an empty size for test environments where the screen is null.
  if (!display::Screen::GetScreen()) {
    return gfx::Size();
  }

  gfx::Size max;
  for (const auto& display : display::Screen::GetScreen()->GetAllDisplays()) {
    max.SetToMax(display.GetSizeInPixel());
  }

  return max;
}

WallpaperResolution GetAppropriateResolution() {
  gfx::Size size = GetMaxDisplaySizeInNative();
  return (size.width() > kSmallWallpaperMaxWidth ||
          size.height() > kSmallWallpaperMaxHeight)
             ? WallpaperResolution::kLarge
             : WallpaperResolution::kSmall;
}

}  // namespace ash