blob: 1ea71f1bc2ba38cb31a4aa7c496ba516ccb61939 [file] [log] [blame]
// Copyright 2015 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 COMPONENTS_SESSIONS_CORE_LIVE_TAB_H_
#define COMPONENTS_SESSIONS_CORE_LIVE_TAB_H_
#include "components/sessions/core/serialized_navigation_entry.h"
#include "components/sessions/core/sessions_export.h"
#include "components/sessions/core/tab_restore_service.h"
namespace sessions {
// Interface that represents a currently-live tab to the core sessions code, and
// in particular, the tab restore service. This interface abstracts the concrete
// representation of a live tab on different platforms (e.g., WebContents on
// //content-based platforms).
class SESSIONS_EXPORT LiveTab {
public:
virtual ~LiveTab();
// Methods that return information about the navigation state of the tab.
virtual bool IsInitialBlankNavigation() = 0;
virtual int GetCurrentEntryIndex() = 0;
virtual int GetPendingEntryIndex() = 0;
virtual SerializedNavigationEntry GetEntryAtIndex(int index) = 0;
virtual SerializedNavigationEntry GetPendingEntry() = 0;
virtual int GetEntryCount() = 0;
// Returns any platform-specific data that should be associated with the
// TabRestoreService::Tab corresponding to this instance. The default
// implementation returns null.
virtual std::unique_ptr<PlatformSpecificTabData> GetPlatformSpecificTabData();
// Returns the user agent override, if any.
virtual const std::string& GetUserAgentOverride() = 0;
};
} // namespace sessions
#endif // COMPONENTS_SESSIONS_CORE_LIVE_TAB_H_