1 // Copyright (c) 2012 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 ANDROID_WEBVIEW_NATIVE_STATE_SERIALIZER_H_ 6 #define ANDROID_WEBVIEW_NATIVE_STATE_SERIALIZER_H_ 7 8 #include "base/compiler_specific.h" 9 10 class Pickle; 11 class PickleIterator; 12 13 namespace content { 14 15 class NavigationEntry; 16 class WebContents; 17 18 } // namespace content 19 20 namespace android_webview { 21 22 // Write and restore a WebContents to and from a pickle. Return true on 23 // success. 24 25 // Note that |pickle| may be changed even if function returns false. 26 bool WriteToPickle(const content::WebContents& web_contents, 27 Pickle* pickle) WARN_UNUSED_RESULT; 28 29 // |web_contents| will not be modified if function returns false. 30 bool RestoreFromPickle(PickleIterator* iterator, 31 content::WebContents* web_contents) WARN_UNUSED_RESULT; 32 33 34 namespace internal { 35 // Functions below are individual helper functiosn called by functions above. 36 // They are broken up for unit testing, and should not be called out side of 37 // tests. 38 bool WriteHeaderToPickle(Pickle* pickle) WARN_UNUSED_RESULT; 39 bool RestoreHeaderFromPickle(PickleIterator* iterator) WARN_UNUSED_RESULT; 40 bool WriteNavigationEntryToPickle(const content::NavigationEntry& entry, 41 Pickle* pickle) WARN_UNUSED_RESULT; 42 bool RestoreNavigationEntryFromPickle( 43 PickleIterator* iterator, 44 content::NavigationEntry* entry) WARN_UNUSED_RESULT; 45 46 } // namespace interanl 47 48 } // namespace android_webview 49 50 #endif // ANDROID_WEBVIEW_NATIVE_STATE_SERIALIZER_H_ 51