1// Copyright (c) 2012 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_UI_WEBUI_OPTIONS_CHROMEOS_USER_IMAGE_SOURCE_H_
6#define CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_USER_IMAGE_SOURCE_H_
7
8#include <string>
9#include <vector>
10
11#include "base/basictypes.h"
12#include "base/compiler_specific.h"
13#include "content/public/browser/url_data_source.h"
14#include "ui/base/layout.h"
15
16namespace base {
17class RefCountedMemory;
18}
19
20namespace chromeos {
21namespace options {
22
23// UserImageSource is the data source that serves user images for users that
24// have it.
25class UserImageSource : public content::URLDataSource {
26 public:
27  UserImageSource();
28
29  // content::URLDataSource implementation.
30  virtual std::string GetSource() const OVERRIDE;
31  virtual void StartDataRequest(
32      const std::string& path,
33      int render_process_id,
34      int render_frame_id,
35      const content::URLDataSource::GotDataCallback& callback) OVERRIDE;
36  virtual std::string GetMimeType(const std::string& path) const OVERRIDE;
37
38  // Returns PNG encoded image for user with specified email. If there's
39  // no user with such email, returns the first default image.
40  base::RefCountedMemory* GetUserImage(const std::string& email,
41                                       ui::ScaleFactor scale_factor) const;
42
43 private:
44  virtual ~UserImageSource();
45
46  DISALLOW_COPY_AND_ASSIGN(UserImageSource);
47};
48
49}  // namespace options
50}  // namespace chromeos
51
52#endif  // CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_USER_IMAGE_SOURCE_H_
53