172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian 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_THUMBNAIL_SOURCE_H_ 6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define CHROME_BROWSER_UI_WEBUI_THUMBNAIL_SOURCE_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string> 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h" 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/ref_counted.h" 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/ref_counted_memory.h" 14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/webui/chrome_url_data_manager.h" 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Profile; 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 18513209b27ff55e2841eac0e4120199c23acce758Ben Murdochnamespace history { 19513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass TopSites; 20513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch} 21513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 22513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// ThumbnailSource is the gateway between network-level chrome: requests for 23513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// thumbnails and the history/top-sites backend that serves these. 24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass ThumbnailSource : public ChromeURLDataManager::DataSource { 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen explicit ThumbnailSource(Profile* profile); 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Called when the network layer has requested a resource underneath 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // the path we registered. 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void StartDataRequest(const std::string& path, 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool is_incognito, 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int request_id); 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 34513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual std::string GetMimeType(const std::string& path) const; 35513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 36513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual MessageLoop* MessageLoopForRequestPath(const std::string& path) const; 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual ~ThumbnailSource(); 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Send the default thumbnail when we are missing a real one. 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SendDefaultThumbnail(int request_id); 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Raw PNG representation of the thumbnail to show when the thumbnail 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // database doesn't have a thumbnail for a webpage. 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<RefCountedMemory> default_thumbnail_; 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 4872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // TopSites. 49513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch scoped_refptr<history::TopSites> top_sites_; 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 51dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen DISALLOW_COPY_AND_ASSIGN(ThumbnailSource); 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 54dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif // CHROME_BROWSER_UI_WEBUI_THUMBNAIL_SOURCE_H_ 55