page_state.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1// Copyright (c) 2013 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 CONTENT_PUBLIC_COMMON_PAGE_STATE_H_ 6#define CONTENT_PUBLIC_COMMON_PAGE_STATE_H_ 7 8#include <string> 9#include <vector> 10 11#include "content/common/content_export.h" 12 13class GURL; 14 15namespace base { 16class FilePath; 17} 18 19namespace content { 20 21// The PageState class represents the information needed by the rendering 22// engine to reconstruct a web page (and its tree of frames), including for 23// example the URLs of the documents and the values of any form fields. This 24// information is used when navigating back & forward through session history. 25// 26// The browser process only sees the encoded form of the data, which is 27// designed as an archival format. The renderer process can decode the data 28// using methods found in public/renderer/history_item_serialization.h. 29class CONTENT_EXPORT PageState { 30 public: 31 static PageState CreateFromEncodedData(const std::string& data); 32 static PageState CreateFromURL(const GURL& url); 33 34 static PageState CreateForTesting( 35 const GURL& url, 36 bool body_contains_password_data, 37 const char* optional_body_data, 38 const base::FilePath* optional_body_file_path); 39 40 PageState(); 41 42 bool IsValid() const; 43 bool Equals(const PageState& page_state) const; 44 const std::string& ToEncodedData() const; 45 46 std::vector<base::FilePath> GetReferencedFiles() const; 47 PageState RemovePasswordData() const; 48 PageState RemoveScrollOffset() const; 49 PageState RemoveReferrer() const; 50 51 private: 52 PageState(const std::string& data); 53 54 std::string data_; 55}; 56 57// Support DCHECK_EQ(a, b), etc. 58inline bool operator==(const PageState& a, const PageState& b) { 59 return a.Equals(b); 60} 61inline bool operator!=(const PageState& a, const PageState& b) { 62 return !(a == b); 63} 64 65} // namespace content 66 67#endif // CONTENT_PUBLIC_COMMON_PAGE_STATE_H_ 68