prerender_history.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1// Copyright (c) 2011 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_PRERENDER_PRERENDER_HISTORY_H_ 6#define CHROME_BROWSER_PRERENDER_PRERENDER_HISTORY_H_ 7 8#include <list> 9 10#include "base/threading/non_thread_safe.h" 11#include "base/time/time.h" 12#include "chrome/browser/prerender/prerender_final_status.h" 13#include "chrome/browser/prerender/prerender_origin.h" 14#include "url/gurl.h" 15 16namespace base { 17class Value; 18} 19 20namespace prerender { 21 22// PrerenderHistory maintains a per-session history of prerendered pages 23// and their final dispositions. It has a fixed maximum capacity, and old 24// items in history will be removed when the capacity is reached. 25class PrerenderHistory : public base::NonThreadSafe { 26 public: 27 // Entry is an individual entry in the history list. It corresponds to a 28 // specific prerendered page. 29 struct Entry { 30 Entry() : final_status(FINAL_STATUS_MAX), origin(ORIGIN_MAX) {} 31 32 Entry(const GURL& url_arg, 33 FinalStatus final_status_arg, 34 Origin origin_arg, 35 base::Time end_time_arg) 36 : url(url_arg), final_status(final_status_arg), 37 origin(origin_arg), 38 end_time(end_time_arg) { 39 } 40 41 // The URL which was prerendered. This should be the URL included in the 42 // <link rel="prerender"> tag, and not any URLs which it may have redirected 43 // to. 44 GURL url; 45 46 // The FinalStatus describing whether the prerendered page was used or why 47 // it was cancelled. 48 FinalStatus final_status; 49 50 // The Origin describing where the prerender originated from. 51 Origin origin; 52 53 // Time the PrerenderContents was destroyed. 54 base::Time end_time; 55 }; 56 57 // Creates a history with capacity for |max_items| entries. 58 explicit PrerenderHistory(size_t max_items); 59 ~PrerenderHistory(); 60 61 // Adds |entry| to the history. If at capacity, the oldest entry is dropped. 62 void AddEntry(const Entry& entry); 63 64 // Deletes all history entries. 65 void Clear(); 66 67 // Retrieves the entries as a value which can be displayed. 68 base::Value* GetEntriesAsValue() const; 69 70 private: 71 std::list<Entry> entries_; 72 size_t max_items_; 73 74 DISALLOW_COPY_AND_ASSIGN(PrerenderHistory); 75}; 76 77} 78#endif // CHROME_BROWSER_PRERENDER_PRERENDER_HISTORY_H_ 79