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