// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_POSSIBLE_URL_MODEL_H_ #define CHROME_BROWSER_POSSIBLE_URL_MODEL_H_ #pragma once #include #include #include #include "app/table_model.h" #include "chrome/browser/history/history.h" class SkBitmap; //////////////////////////////////////////////////////////////////////////////// // // A table model to represent the list of URLs that the user might want to // bookmark. // //////////////////////////////////////////////////////////////////////////////// class PossibleURLModel : public TableModel { public: PossibleURLModel(); virtual ~PossibleURLModel(); void Reload(Profile *profile); void OnHistoryQueryComplete(HistoryService::Handle h, history::QueryResults* result); virtual int RowCount(); const GURL& GetURL(int row); const std::wstring& GetTitle(int row); virtual std::wstring GetText(int row, int col_id); virtual SkBitmap GetIcon(int row); virtual int CompareValues(int row1, int row2, int column_id); virtual void OnFavIconAvailable(FaviconService::Handle h, bool fav_icon_available, scoped_refptr data, bool expired, GURL icon_url); virtual void SetObserver(TableModelObserver* observer); private: // The current profile. Profile* profile_; // Our observer. TableModelObserver* observer_; // Our consumer for favicon requests. CancelableRequestConsumerT consumer_; // The results we're showing. struct Result; std::vector results_; // Map Result::index -> Favicon. typedef std::map FavIconMap; FavIconMap fav_icon_map_; DISALLOW_COPY_AND_ASSIGN(PossibleURLModel); }; #endif // CHROME_BROWSER_POSSIBLE_URL_MODEL_H_