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 format of the encoded data is not exposed by the content API. 27class CONTENT_EXPORT PageState { 28 public: 29 static PageState CreateFromEncodedData(const std::string& data); 30 static PageState CreateFromURL(const GURL& url); 31 32 static PageState CreateForTesting( 33 const GURL& url, 34 bool body_contains_password_data, 35 const char* optional_body_data, 36 const base::FilePath* optional_body_file_path); 37 38 PageState(); 39 40 bool IsValid() const; 41 bool Equals(const PageState& page_state) const; 42 const std::string& ToEncodedData() const; 43 44 std::vector<base::FilePath> GetReferencedFiles() const; 45 PageState RemovePasswordData() const; 46 PageState RemoveScrollOffset() const; 47 PageState RemoveReferrer() const; 48 49 private: 50 PageState(const std::string& data); 51 52 std::string data_; 53}; 54 55// Support DCHECK_EQ(a, b), etc. 56inline bool operator==(const PageState& a, const PageState& b) { 57 return a.Equals(b); 58} 59inline bool operator!=(const PageState& a, const PageState& b) { 60 return !(a == b); 61} 62 63} // namespace content 64 65#endif // CONTENT_PUBLIC_COMMON_PAGE_STATE_H_ 66