1// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_HISTORY_PAGE_USAGE_DATA_H__
6#define CHROME_BROWSER_HISTORY_PAGE_USAGE_DATA_H__
7#pragma once
8
9#include "base/string16.h"
10#include "chrome/browser/history/history_types.h"
11#include "googleurl/src/gurl.h"
12
13class SkBitmap;
14
15/////////////////////////////////////////////////////////////////////////////
16//
17// PageUsageData
18//
19// A per domain usage data structure to compute and manage most visited
20// pages.
21//
22// See History::QueryPageUsageSince()
23//
24/////////////////////////////////////////////////////////////////////////////
25class PageUsageData {
26 public:
27  explicit PageUsageData(history::URLID id);
28
29  virtual ~PageUsageData();
30
31  // Return the url ID
32  history::URLID GetID() const {
33    return id_;
34  }
35
36  void SetURL(const GURL& url) {
37    url_ = url;
38  }
39
40  const GURL& GetURL() const {
41    return url_;
42  }
43
44  void SetTitle(const string16& s) {
45    title_ = s;
46  }
47
48  const string16& GetTitle() const {
49    return title_;
50  }
51
52  void SetScore(double v) {
53    score_ = v;
54  }
55
56  double GetScore() const {
57    return score_;
58  }
59
60  void SetThumbnailMissing() {
61    thumbnail_set_ = true;
62  }
63
64  void SetThumbnail(SkBitmap* img);
65
66  bool HasThumbnail() const {
67    return thumbnail_set_;
68  }
69
70  const SkBitmap* GetThumbnail() const {
71    return thumbnail_;
72  }
73
74  bool thumbnail_pending() const {
75    return thumbnail_pending_;
76  }
77
78  void set_thumbnail_pending(bool pending) {
79    thumbnail_pending_ = pending;
80  }
81
82  void SetFaviconMissing() {
83    favicon_set_ = true;
84  }
85
86  void SetFavicon(SkBitmap* img);
87
88  bool HasFavicon() const {
89    return favicon_set_;
90  }
91
92  bool favicon_pending() const {
93    return favicon_pending_;
94  }
95
96  void set_favicon_pending(bool pending) {
97    favicon_pending_ = pending;
98  }
99
100  const SkBitmap* GetFavicon() const {
101    return favicon_;
102  }
103
104  // Sort predicate to sort instances by score (high to low)
105  static bool Predicate(const PageUsageData* dud1,
106                        const PageUsageData* dud2);
107
108 private:
109  history::URLID id_;
110  GURL url_;
111  string16 title_;
112
113  SkBitmap* thumbnail_;
114  bool thumbnail_set_;
115  // Whether we have an outstanding request for the thumbnail.
116  bool thumbnail_pending_;
117
118  SkBitmap* favicon_;
119  bool favicon_set_;
120  // Whether we have an outstanding request for the favicon.
121  bool favicon_pending_;
122
123  double score_;
124};
125
126#endif  // CHROME_BROWSER_HISTORY_PAGE_USAGE_DATA_H__
127