| // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 | // | 
 | #ifndef ANDROID_WEBVIEW_NATIVE_STATE_SERIALIZER_H_ | 
 | #define ANDROID_WEBVIEW_NATIVE_STATE_SERIALIZER_H_ | 
 |  | 
 | #include <cstdint> | 
 |  | 
 | #include "base/compiler_specific.h" | 
 |  | 
 | namespace base { | 
 |  | 
 | class Pickle; | 
 | class PickleIterator; | 
 |  | 
 | }  // namespace base | 
 |  | 
 | namespace content { | 
 |  | 
 | class NavigationEntry; | 
 | class WebContents; | 
 |  | 
 | }  // namespace content | 
 |  | 
 | namespace android_webview { | 
 |  | 
 | // Write and restore a WebContents to and from a pickle. Return true on | 
 | // success. | 
 |  | 
 | // Note that |pickle| may be changed even if function returns false. | 
 | bool WriteToPickle(const content::WebContents& web_contents, | 
 |                    base::Pickle* pickle) WARN_UNUSED_RESULT; | 
 |  | 
 | // |web_contents| will not be modified if function returns false. | 
 | bool RestoreFromPickle(base::PickleIterator* iterator, | 
 |                        content::WebContents* web_contents) WARN_UNUSED_RESULT; | 
 |  | 
 |  | 
 | namespace internal { | 
 |  | 
 | const uint32_t AW_STATE_VERSION_INITIAL = 20130814; | 
 | const uint32_t AW_STATE_VERSION_DATA_URL = 20151204; | 
 |  | 
 | // Functions below are individual helper functions called by functions above. | 
 | // They are broken up for unit testing, and should not be called out side of | 
 | // tests. | 
 | bool WriteHeaderToPickle(base::Pickle* pickle) WARN_UNUSED_RESULT; | 
 | bool WriteHeaderToPickle(uint32_t state_version, | 
 |                          base::Pickle* pickle) WARN_UNUSED_RESULT; | 
 | uint32_t RestoreHeaderFromPickle(base::PickleIterator* iterator) | 
 |     WARN_UNUSED_RESULT; | 
 | bool IsSupportedVersion(uint32_t state_version) WARN_UNUSED_RESULT; | 
 | bool WriteNavigationEntryToPickle(const content::NavigationEntry& entry, | 
 |                                   base::Pickle* pickle) WARN_UNUSED_RESULT; | 
 | bool WriteNavigationEntryToPickle(uint32_t state_version, | 
 |                                   const content::NavigationEntry& entry, | 
 |                                   base::Pickle* pickle) WARN_UNUSED_RESULT; | 
 | bool RestoreNavigationEntryFromPickle(base::PickleIterator* iterator, | 
 |                                       content::NavigationEntry* entry) | 
 |     WARN_UNUSED_RESULT; | 
 | bool RestoreNavigationEntryFromPickle(uint32_t state_version, | 
 |                                       base::PickleIterator* iterator, | 
 |                                       content::NavigationEntry* entry) | 
 |     WARN_UNUSED_RESULT; | 
 |  | 
 | }  // namespace interanl | 
 |  | 
 | }  // namespace android_webview | 
 |  | 
 | #endif  // ANDROID_WEBVIEW_NATIVE_STATE_SERIALIZER_H_ |