// Copyright 2018 The Chromium Authors. All rights reserved.
// 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_decoder.h"

#include "ash/shell.h"
#include "base/bind.h"
#include "ipc/ipc_channel.h"

namespace ash {
namespace {

const int64_t kMaxImageSizeInBytes =
    static_cast<int64_t>(IPC::Channel::kMaximumMessageSize);

void ConvertToImageSkia(OnWallpaperDecoded callback, const SkBitmap& image) {
  if (image.isNull()) {
    std::move(callback).Run(gfx::ImageSkia());
    return;
  }
  SkBitmap final_image = image;
  final_image.setImmutable();
  gfx::ImageSkia image_skia = gfx::ImageSkia::CreateFrom1xBitmap(final_image);
  image_skia.MakeThreadSafe();

  std::move(callback).Run(image_skia);
}

}  // namespace

void DecodeWallpaper(const std::string& image_data,
                     const data_decoder::mojom::ImageCodec& image_codec,
                     OnWallpaperDecoded callback) {
  // The connector for the mojo service manager is null in unit tests.
  if (!Shell::Get()->connector()) {
    std::move(callback).Run(gfx::ImageSkia());
    return;
  }
  std::vector<uint8_t> image_bytes(image_data.begin(), image_data.end());
  data_decoder::DecodeImage(
      Shell::Get()->connector(), std::move(image_bytes), image_codec,
      /*shrink_to_fit=*/true, kMaxImageSizeInBytes,
      /*desired_image_frame_size=*/gfx::Size(),
      base::BindOnce(&ConvertToImageSkia, std::move(callback)));
}

}  // namespace ash
