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 "ui/gfx/point.h"
     14 #include "url/gurl.h"
     15 
     16 namespace content {
     17 
     18 struct CONTENT_EXPORT ExplodedHttpBodyElement {
     19   blink::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 
     32 struct 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 
     43 struct 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   int64 target_frame_id;
     54   double page_scale_factor;
     55   ExplodedHttpBody http_body;
     56   std::vector<ExplodedFrameState> children;
     57 
     58   ExplodedFrameState();
     59   ~ExplodedFrameState();
     60 };
     61 
     62 struct CONTENT_EXPORT ExplodedPageState {
     63   std::vector<base::NullableString16> referenced_files;
     64   ExplodedFrameState top;
     65 
     66   ExplodedPageState();
     67   ~ExplodedPageState();
     68 };
     69 
     70 CONTENT_EXPORT bool DecodePageState(const std::string& encoded,
     71                                     ExplodedPageState* exploded);
     72 CONTENT_EXPORT bool EncodePageState(const ExplodedPageState& exploded,
     73                                     std::string* encoded);
     74 
     75 #if defined(OS_ANDROID)
     76 CONTENT_EXPORT bool DecodePageStateWithDeviceScaleFactorForTesting(
     77     const std::string& encoded,
     78     float device_scale_factor,
     79     ExplodedPageState* exploded);
     80 #endif
     81 
     82 }  // namespace content
     83 
     84 #endif  // CONTENT_COMMON_PAGE_STATE_SERIALIZATION_H_
     85