Introduce TabRestoreServiceClient and //chrome implementation.
[chromium-blink-merge.git] / components / sessions / core / tab_restore_service_client.h
blobc2933220a22dfccb293597996cf24eaeefd6c5d9
1 // Copyright 2015 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.
5 #ifndef COMPONENTS_SESSIONS_CORE_TAB_RESTORE_SERVICE_CLIENT_H_
6 #define COMPONENTS_SESSIONS_CORE_TAB_RESTORE_SERVICE_CLIENT_H_
8 #include "base/callback.h"
9 #include "base/memory/scoped_vector.h"
10 #include "components/sessions/session_id.h"
12 namespace base {
13 class CancelableTaskTracker;
16 namespace sessions {
17 struct SessionWindow;
20 namespace sessions {
22 struct SessionWindow;
24 // Callback from TabRestoreServiceClient::GetLastSession.
25 // The second parameter is the id of the window that was last active.
26 typedef base::Callback<void(ScopedVector<SessionWindow>, SessionID::id_type)>
27 GetLastSessionCallback;
29 // A client interface that needs to be supplied to the tab restore service by
30 // the embedder.
31 class TabRestoreServiceClient {
32 public:
33 virtual ~TabRestoreServiceClient() {}
35 // Returns whether there is a previous session to load.
36 virtual bool HasLastSession() = 0;
38 // Fetches the contents of the last session, notifying the callback when
39 // done. If the callback is supplied an empty vector of SessionWindows
40 // it means the session could not be restored.
41 virtual void GetLastSession(const GetLastSessionCallback& callback,
42 base::CancelableTaskTracker* tracker) = 0;
45 } // namespace sessions
47 #endif // COMPONENTS_SESSIONS_CORE_TAB_RESTORE_SERVICE_CLIENT_H_