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 13 class GURL; 14 15 namespace base { 16 class FilePath; 17 } 18 19 namespace 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. 27 class 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. 56 inline bool operator==(const PageState& a, const PageState& b) { 57 return a.Equals(b); 58 } 59 inline 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