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