Home | History | Annotate | Download | only in history
      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 
     13 class 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 /////////////////////////////////////////////////////////////////////////////
     25 class 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