// Copyright 2014 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 CHROME_BROWSER_ANDROID_TAB_STATE_H_ #define CHROME_BROWSER_ANDROID_TAB_STATE_H_ #include #include #include "base/android/scoped_java_ref.h" namespace content { class NavigationEntry; class WebContents; } class TabAndroid; // Stores state for a WebContents, including its navigation history. class WebContentsState { public: static base::android::ScopedJavaLocalRef GetContentsStateAsByteBuffer(JNIEnv* env, TabAndroid* tab); // Common implementation for GetContentsStateAsByteBuffer() and // CreateContentsStateAsByteBuffer(). Does not assume ownership of the // navigations. static base::android::ScopedJavaLocalRef WriteNavigationsAsByteBuffer( JNIEnv* env, bool is_off_the_record, const std::vector& navigations, int current_entry); // Extracts display title from serialized tab data on restore static base::android::ScopedJavaLocalRef GetDisplayTitleFromByteBuffer(JNIEnv* env, void* data, int size, int saved_state_version); // Extracts virtual url from serialized tab data on restore static base::android::ScopedJavaLocalRef GetVirtualUrlFromByteBuffer(JNIEnv* env, void* data, int size, int saved_state_version); // Restores a WebContents from the passed in state. static content::WebContents* RestoreContentsFromByteBuffer( void* data, int size, int saved_state_version, bool initially_hidden); // Restores a WebContents from the passed in state. static content::WebContents* RestoreContentsFromByteBuffer( JNIEnv* env, jclass clazz, jobject state, jint saved_state_version, jboolean initially_hidden); // Synthesizes a stub, single-navigation state for a tab that will be loaded // lazily. static base::android::ScopedJavaLocalRef CreateSingleNavigationStateAsByteBuffer(JNIEnv* env, jstring url, jstring referrer_url, jint referrer_policy, jboolean is_off_the_record); }; // Registers methods for JNI. bool RegisterTabState(JNIEnv* env); #endif // CHROME_BROWSER_ANDROID_TAB_STATE_H_