1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_USERS_AVATAR_USER_IMAGE_MANAGER_TEST_UTIL_H_
6#define CHROME_BROWSER_CHROMEOS_LOGIN_USERS_AVATAR_USER_IMAGE_MANAGER_TEST_UTIL_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "base/files/file_path.h"
11#include "base/memory/scoped_ptr.h"
12#include "base/run_loop.h"
13#include "chrome/browser/image_decoder.h"
14
15class SKBitmap;
16
17namespace base {
18class FilePath;
19}
20
21namespace gfx {
22class ImageSkia;
23}
24
25namespace chromeos {
26namespace test {
27
28extern const char kUserAvatarImage1RelativePath[];
29extern const char kUserAvatarImage2RelativePath[];
30
31// Returns |true| if the two given images are pixel-for-pixel identical.
32bool AreImagesEqual(const gfx::ImageSkia& first, const gfx::ImageSkia& second);
33
34class ImageLoader : public ImageDecoder::Delegate {
35 public:
36  explicit ImageLoader(const base::FilePath& path);
37  virtual ~ImageLoader();
38
39  scoped_ptr<gfx::ImageSkia> Load();
40
41  // ImageDecoder::Delegate:
42  virtual void OnImageDecoded(const ImageDecoder* decoder,
43                              const SkBitmap& decoded_image) OVERRIDE;
44  virtual void OnDecodeImageFailed(const ImageDecoder* decoder) OVERRIDE;
45
46 private:
47  base::FilePath path_;
48  base::RunLoop run_loop_;
49
50  scoped_ptr<gfx::ImageSkia> decoded_image_;
51
52  DISALLOW_COPY_AND_ASSIGN(ImageLoader);
53};
54
55}  // namespace test
56}  // namespace chromeos
57
58#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_USERS_AVATAR_USER_IMAGE_MANAGER_TEST_UTIL_H_
59