1// Copyright (c) 2012 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
8#include "base/strings/string16.h"
9#include "base/time/time.h"
10#include "chrome/browser/history/history_types.h"
11#include "url/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::SegmentID id);
28
29  virtual ~PageUsageData();
30
31  // Return the url ID
32  history::SegmentID 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 SetDuration(base::TimeDelta duration) {
61    duration_ = duration;
62  }
63
64  base::TimeDelta duration() const {
65    return duration_;
66  }
67
68  // Sort predicate to sort instances by score (high to low)
69  static bool Predicate(const PageUsageData* dud1, const PageUsageData* dud2);
70
71 private:
72  history::SegmentID id_;
73  GURL url_;
74  string16 title_;
75
76  double score_;
77
78  // Duration is only set by QuerySegmentDurationSince().
79  base::TimeDelta duration_;
80};
81
82#endif  // CHROME_BROWSER_HISTORY_PAGE_USAGE_DATA_H__
83