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 COMPONENTS_SESSIONS_CORE_TAB_RESTORE_SERVICE_IMPL_H_ 6 #define COMPONENTS_SESSIONS_CORE_TAB_RESTORE_SERVICE_IMPL_H_ 7 8 #include <memory> 9 #include <vector> 10 11 #include "base/compiler_specific.h" 12 #include "base/macros.h" 13 #include "components/prefs/pref_change_registrar.h" 14 #include "components/sessions/core/sessions_export.h" 15 #include "components/sessions/core/tab_restore_service.h" 16 #include "components/sessions/core/tab_restore_service_client.h" 17 #include "components/sessions/core/tab_restore_service_helper.h" 18 19 class PrefService; 20 class TabRestoreServiceImplTest; 21 22 namespace sessions { 23 24 // Tab restore service that persists data on disk. 25 class SESSIONS_EXPORT TabRestoreServiceImpl : public TabRestoreService { 26 public: 27 // Does not take ownership of |time_factory|. 28 TabRestoreServiceImpl(std::unique_ptr<TabRestoreServiceClient> client, 29 PrefService* pref_service, 30 TimeFactory* time_factory); 31 32 ~TabRestoreServiceImpl() override; 33 34 // TabRestoreService: 35 void AddObserver(TabRestoreServiceObserver* observer) override; 36 void RemoveObserver(TabRestoreServiceObserver* observer) override; 37 void CreateHistoricalTab(LiveTab* live_tab, int index) override; 38 void BrowserClosing(LiveTabContext* context) override; 39 void BrowserClosed(LiveTabContext* context) override; 40 void ClearEntries() override; 41 void DeleteNavigationEntries(const DeletionPredicate& predicate) override; 42 const Entries& entries() const override; 43 std::vector<LiveTab*> RestoreMostRecentEntry( 44 LiveTabContext* context) override; 45 std::unique_ptr<Tab> RemoveTabEntryById(SessionID id) override; 46 std::vector<LiveTab*> RestoreEntryById( 47 LiveTabContext* context, 48 SessionID id, 49 WindowOpenDisposition disposition) override; 50 void LoadTabsFromLastSession() override; 51 bool IsLoaded() const override; 52 void DeleteLastSession() override; 53 bool IsRestoring() const override; 54 void Shutdown() override; 55 56 private: 57 friend class ::TabRestoreServiceImplTest; 58 59 class PersistenceDelegate; 60 void UpdatePersistenceDelegate(); 61 62 // Exposed for testing. 63 Entries* mutable_entries(); 64 void PruneEntries(); 65 66 std::unique_ptr<TabRestoreServiceClient> client_; 67 std::unique_ptr<PersistenceDelegate> persistence_delegate_; 68 TabRestoreServiceHelper helper_; 69 PrefChangeRegistrar pref_change_registrar_; 70 71 DISALLOW_COPY_AND_ASSIGN(TabRestoreServiceImpl); 72 }; 73 74 } // namespace sessions 75 76 #endif // COMPONENTS_SESSIONS_CORE_TAB_RESTORE_SERVICE_IMPL_H_ 77