Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / content / public / common / page_state.h
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_