1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#ifndef CHROME_BROWSER_UI_WEBUI_FILEICON_SOURCE_H_
6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define CHROME_BROWSER_UI_WEBUI_FILEICON_SOURCE_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string>
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/icon_manager.h"
12dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass GURL;
153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass RefCountedBytes;
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsennamespace gfx {
18dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass Image;
19dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}
20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// FileIconSource is the gateway between network-level chrome:
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// requests for favicons and the history backend that serves these.
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FileIconSource : public ChromeURLDataManager::DataSource {
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  explicit FileIconSource();
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Called when the network layer has requested a resource underneath
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // the path we registered.
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void StartDataRequest(const std::string& path,
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                                bool is_incognito,
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                int request_id);
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
3321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  virtual std::string GetMimeType(const std::string&) const;
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Called when favicon data is available from the history backend.
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void OnFileIconDataAvailable(
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      IconManager::Handle request_handle,
38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      gfx::Image* icon);
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ~FileIconSource();
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  CancelableRequestConsumerT<int, 0> cancelable_consumer_;
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Raw PNG representation of the favicon to show when the favicon
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // database doesn't have a favicon for a webpage.
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_refptr<RefCountedBytes> default_favicon_;
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(FileIconSource);
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
51dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif  // CHROME_BROWSER_UI_WEBUI_FILEICON_SOURCE_H_
52