1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 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 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_POSSIBLE_URL_MODEL_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_POSSIBLE_URL_MODEL_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 93345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include <map> 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string> 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <vector> 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 133f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "base/compiler_specific.h" 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/history/history.h" 1572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/models/table_model.h" 163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass SkBitmap; 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch//////////////////////////////////////////////////////////////////////////////// 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A table model to represent the list of URLs that the user might want to 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// bookmark. 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch//////////////////////////////////////////////////////////////////////////////// 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass PossibleURLModel : public ui::TableModel { 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch PossibleURLModel(); 293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual ~PossibleURLModel(); 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void Reload(Profile *profile); 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void OnHistoryQueryComplete(HistoryService::Handle h, 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch history::QueryResults* result); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const GURL& GetURL(int row); 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::wstring& GetTitle(int row); 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void OnFaviconAvailable(FaviconService::Handle h, 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen history::FaviconData favicon); 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 423f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen // TableModel overrides 433f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual int RowCount() OVERRIDE; 443f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual string16 GetText(int row, int col_id) OVERRIDE; 453f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual SkBitmap GetIcon(int row) OVERRIDE; 463f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual int CompareValues(int row1, int row2, int column_id) OVERRIDE; 4772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual void SetObserver(ui::TableModelObserver* observer) OVERRIDE; 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The current profile. 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Profile* profile_; 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Our observer. 5472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ui::TableModelObserver* observer_; 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Our consumer for favicon requests. 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CancelableRequestConsumerT<size_t, NULL> consumer_; 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The results we're showing. 603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick struct Result; 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::vector<Result> results_; 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Map Result::index -> Favicon. 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen typedef std::map<size_t, SkBitmap> FaviconMap; 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FaviconMap favicon_map_; 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(PossibleURLModel); 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_POSSIBLE_URL_MODEL_H_ 71