| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_SESSIONS_TAB_RESTORE_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_SESSIONS_TAB_RESTORE_SERVICE_H_ |
| 6 #define CHROME_BROWSER_SESSIONS_TAB_RESTORE_SERVICE_H_ | 6 #define CHROME_BROWSER_SESSIONS_TAB_RESTORE_SERVICE_H_ |
| 7 | 7 |
| 8 #include <list> | 8 #include <list> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 virtual void TabRestoreServiceChanged(TabRestoreService* service) = 0; | 41 virtual void TabRestoreServiceChanged(TabRestoreService* service) = 0; |
| 42 | 42 |
| 43 // Sent to all remaining Observers when TabRestoreService's | 43 // Sent to all remaining Observers when TabRestoreService's |
| 44 // destructor is run. | 44 // destructor is run. |
| 45 virtual void TabRestoreServiceDestroyed(TabRestoreService* service) = 0; | 45 virtual void TabRestoreServiceDestroyed(TabRestoreService* service) = 0; |
| 46 }; | 46 }; |
| 47 | 47 |
| 48 // Interface used to allow the test to provide a custom time. | 48 // Interface used to allow the test to provide a custom time. |
| 49 class TimeFactory { | 49 class TimeFactory { |
| 50 public: | 50 public: |
| 51 virtual ~TimeFactory() {} | 51 virtual ~TimeFactory(); |
| 52 virtual base::Time TimeNow() = 0; | 52 virtual base::Time TimeNow() = 0; |
| 53 }; | 53 }; |
| 54 | 54 |
| 55 // The type of entry. | 55 // The type of entry. |
| 56 enum Type { | 56 enum Type { |
| 57 TAB, | 57 TAB, |
| 58 WINDOW | 58 WINDOW |
| 59 }; | 59 }; |
| 60 | 60 |
| 61 struct Entry { | 61 struct Entry { |
| 62 Entry(); | 62 Entry(); |
| 63 explicit Entry(Type type); | 63 explicit Entry(Type type); |
| 64 virtual ~Entry() {} | 64 virtual ~Entry(); |
| 65 | 65 |
| 66 // Unique id for this entry. The id is guaranteed to be unique for a | 66 // Unique id for this entry. The id is guaranteed to be unique for a |
| 67 // session. | 67 // session. |
| 68 SessionID::id_type id; | 68 SessionID::id_type id; |
| 69 | 69 |
| 70 // The type of the entry. | 70 // The type of the entry. |
| 71 Type type; | 71 Type type; |
| 72 | 72 |
| 73 // The time when the window or tab was closed. | 73 // The time when the window or tab was closed. |
| 74 base::Time timestamp; | 74 base::Time timestamp; |
| 75 | 75 |
| 76 // Is this entry from the last session? This is set to true for entries that | 76 // Is this entry from the last session? This is set to true for entries that |
| 77 // were closed during the last session, and false for entries that were | 77 // were closed during the last session, and false for entries that were |
| 78 // closed during this session. | 78 // closed during this session. |
| 79 bool from_last_session; | 79 bool from_last_session; |
| 80 }; | 80 }; |
| 81 | 81 |
| 82 // Represents a previously open tab. | 82 // Represents a previously open tab. |
| 83 struct Tab : public Entry { | 83 struct Tab : public Entry { |
| 84 Tab(); | 84 Tab(); |
| 85 virtual ~Tab(); |
| 85 | 86 |
| 86 bool has_browser() const { return browser_id > 0; } | 87 bool has_browser() const { return browser_id > 0; } |
| 87 | 88 |
| 88 // The navigations. | 89 // The navigations. |
| 89 std::vector<TabNavigation> navigations; | 90 std::vector<TabNavigation> navigations; |
| 90 | 91 |
| 91 // Index of the selected navigation in navigations. | 92 // Index of the selected navigation in navigations. |
| 92 int current_navigation_index; | 93 int current_navigation_index; |
| 93 | 94 |
| 94 // The ID of the browser to which this tab belonged, so it can be restored | 95 // The ID of the browser to which this tab belonged, so it can be restored |
| 95 // there. May be 0 (an invalid SessionID) when restoring an entire session. | 96 // there. May be 0 (an invalid SessionID) when restoring an entire session. |
| 96 SessionID::id_type browser_id; | 97 SessionID::id_type browser_id; |
| 97 | 98 |
| 98 // Index within the tab strip. May be -1 for an unknown index. | 99 // Index within the tab strip. May be -1 for an unknown index. |
| 99 int tabstrip_index; | 100 int tabstrip_index; |
| 100 | 101 |
| 101 // True if the tab was pinned. | 102 // True if the tab was pinned. |
| 102 bool pinned; | 103 bool pinned; |
| 103 | 104 |
| 104 // If non-empty gives the id of the extension for the tab. | 105 // If non-empty gives the id of the extension for the tab. |
| 105 std::string extension_app_id; | 106 std::string extension_app_id; |
| 106 }; | 107 }; |
| 107 | 108 |
| 108 // Represents a previously open window. | 109 // Represents a previously open window. |
| 109 struct Window : public Entry { | 110 struct Window : public Entry { |
| 110 Window(); | 111 Window(); |
| 112 virtual ~Window(); |
| 111 | 113 |
| 112 // The tabs that comprised the window, in order. | 114 // The tabs that comprised the window, in order. |
| 113 std::vector<Tab> tabs; | 115 std::vector<Tab> tabs; |
| 114 | 116 |
| 115 // Index of the selected tab. | 117 // Index of the selected tab. |
| 116 int selected_tab_index; | 118 int selected_tab_index; |
| 117 }; | 119 }; |
| 118 | 120 |
| 119 typedef std::list<Entry*> Entries; | 121 typedef std::list<Entry*> Entries; |
| 120 | 122 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 140 | 142 |
| 141 // Invoked when the browser is done closing. | 143 // Invoked when the browser is done closing. |
| 142 void BrowserClosed(Browser* browser); | 144 void BrowserClosed(Browser* browser); |
| 143 | 145 |
| 144 // Removes all entries from the list and notifies observers the list | 146 // Removes all entries from the list and notifies observers the list |
| 145 // of tabs has changed. | 147 // of tabs has changed. |
| 146 void ClearEntries(); | 148 void ClearEntries(); |
| 147 | 149 |
| 148 // Returns the entries, ordered with most recently closed entries at the | 150 // Returns the entries, ordered with most recently closed entries at the |
| 149 // front. | 151 // front. |
| 150 virtual const Entries& entries() const { return entries_; } | 152 virtual const Entries& entries() const; |
| 151 | 153 |
| 152 // Restores the most recently closed entry. Does nothing if there are no | 154 // Restores the most recently closed entry. Does nothing if there are no |
| 153 // entries to restore. If the most recently restored entry is a tab, it is | 155 // entries to restore. If the most recently restored entry is a tab, it is |
| 154 // added to |browser|. | 156 // added to |browser|. |
| 155 void RestoreMostRecentEntry(Browser* browser); | 157 void RestoreMostRecentEntry(Browser* browser); |
| 156 | 158 |
| 157 // Restores an entry by id. If there is no entry with an id matching |id|, | 159 // Restores an entry by id. If there is no entry with an id matching |id|, |
| 158 // this does nothing. If |replace_existing_tab| is true and id identifies a | 160 // this does nothing. If |replace_existing_tab| is true and id identifies a |
| 159 // tab, the newly created tab replaces the selected tab in |browser|. If | 161 // tab, the newly created tab replaces the selected tab in |browser|. If |
| 160 // |browser| is NULL, this creates a new window for the entry. | 162 // |browser| is NULL, this creates a new window for the entry. |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 // entries_. | 341 // entries_. |
| 340 std::vector<Entry*> staging_entries_; | 342 std::vector<Entry*> staging_entries_; |
| 341 | 343 |
| 342 TimeFactory* time_factory_; | 344 TimeFactory* time_factory_; |
| 343 | 345 |
| 344 DISALLOW_COPY_AND_ASSIGN(TabRestoreService); | 346 DISALLOW_COPY_AND_ASSIGN(TabRestoreService); |
| 345 }; | 347 }; |
| 346 | 348 |
| 347 #endif // CHROME_BROWSER_SESSIONS_TAB_RESTORE_SERVICE_H_ | 349 #endif // CHROME_BROWSER_SESSIONS_TAB_RESTORE_SERVICE_H_ |
| 348 | 350 |
| OLD | NEW |