page_state_serialization.h revision 1e9bf3e0803691d0a228da41fc608347b6db4340
1// Copyright 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_COMMON_PAGE_STATE_SERIALIZATION_H_
6#define CONTENT_COMMON_PAGE_STATE_SERIALIZATION_H_
7
8#include <vector>
9
10#include "base/strings/nullable_string16.h"
11#include "content/common/content_export.h"
12#include "third_party/WebKit/public/platform/WebHTTPBody.h"
13#include "ui/gfx/point.h"
14#include "url/gurl.h"
15
16namespace content {
17
18struct CONTENT_EXPORT ExplodedHttpBodyElement {
19  WebKit::WebHTTPBody::Element::Type type;
20  std::string data;
21  base::NullableString16 file_path;
22  GURL filesystem_url;
23  int64 file_start;
24  int64 file_length;
25  double file_modification_time;
26  std::string blob_uuid;
27
28  ExplodedHttpBodyElement();
29  ~ExplodedHttpBodyElement();
30};
31
32struct CONTENT_EXPORT ExplodedHttpBody {
33  base::NullableString16 http_content_type;
34  std::vector<ExplodedHttpBodyElement> elements;
35  int64 identifier;
36  bool contains_passwords;
37  bool is_null;
38
39  ExplodedHttpBody();
40  ~ExplodedHttpBody();
41};
42
43struct CONTENT_EXPORT ExplodedFrameState {
44  base::NullableString16 url_string;
45  base::NullableString16 original_url_string;
46  base::NullableString16 referrer;
47  base::NullableString16 target;
48  base::NullableString16 state_object;
49  std::vector<base::NullableString16> document_state;
50  gfx::Point scroll_offset;
51  int64 item_sequence_number;
52  int64 document_sequence_number;
53  double page_scale_factor;
54  ExplodedHttpBody http_body;
55  std::vector<ExplodedFrameState> children;
56
57  ExplodedFrameState();
58  ~ExplodedFrameState();
59};
60
61struct CONTENT_EXPORT ExplodedPageState {
62  std::vector<base::NullableString16> referenced_files;
63  ExplodedFrameState top;
64
65  ExplodedPageState();
66  ~ExplodedPageState();
67};
68
69CONTENT_EXPORT bool DecodePageState(const std::string& encoded,
70                                    ExplodedPageState* exploded);
71CONTENT_EXPORT bool EncodePageState(const ExplodedPageState& exploded,
72                                    std::string* encoded);
73
74#if defined(OS_ANDROID)
75CONTENT_EXPORT bool DecodePageStateWithDeviceScaleFactorForTesting(
76    const std::string& encoded,
77    float device_scale_factor,
78    ExplodedPageState* exploded);
79#endif
80
81}  // namespace content
82
83#endif  // CONTENT_COMMON_PAGE_STATE_SERIALIZATION_H_
84