OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 IOS_CHROME_BROWSER_TABS_TAB_MODEL_H_ | 5 #ifndef IOS_CHROME_BROWSER_TABS_TAB_MODEL_H_ |
6 #define IOS_CHROME_BROWSER_TABS_TAB_MODEL_H_ | 6 #define IOS_CHROME_BROWSER_TABS_TAB_MODEL_H_ |
7 | 7 |
8 #import <Foundation/Foundation.h> | 8 #import <Foundation/Foundation.h> |
9 #import <UIKit/UIKit.h> | 9 #import <UIKit/UIKit.h> |
10 | 10 |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 - (BOOL)restoreSessionWindow:(SessionWindowIOS*)window; | 136 - (BOOL)restoreSessionWindow:(SessionWindowIOS*)window; |
137 | 137 |
138 // Uses the SessionServiceIOS to persist the tab model to disk, either | 138 // Uses the SessionServiceIOS to persist the tab model to disk, either |
139 // immediately or deferred based on the value of |immediately|. | 139 // immediately or deferred based on the value of |immediately|. |
140 - (void)saveSessionImmediately:(BOOL)immediately; | 140 - (void)saveSessionImmediately:(BOOL)immediately; |
141 | 141 |
142 // Accesses the tab at the given index. | 142 // Accesses the tab at the given index. |
143 - (Tab*)tabAtIndex:(NSUInteger)index; | 143 - (Tab*)tabAtIndex:(NSUInteger)index; |
144 - (NSUInteger)indexOfTab:(Tab*)tab; | 144 - (NSUInteger)indexOfTab:(Tab*)tab; |
145 | 145 |
146 // Returns the tab object associated from the given JS-level window name. | |
147 - (Tab*)tabWithWindowName:(NSString*)windowName; | |
148 | |
149 // Returns the next Tab, starting after |tab|, spawned by the specified Tab, If | 146 // Returns the next Tab, starting after |tab|, spawned by the specified Tab, If |
150 // |after| is a valid tab, will only look at tabs following it (in tab ordering, | 147 // |after| is a valid tab, will only look at tabs following it (in tab ordering, |
151 // not order opened) in the list, even if it comes before |tab|. Returns nil if | 148 // not order opened) in the list, even if it comes before |tab|. Returns nil if |
152 // no tab meets this constraint. | 149 // no tab meets this constraint. |
153 - (Tab*)nextTabWithOpener:(Tab*)tab afterTab:(Tab*)afterTab; | 150 - (Tab*)nextTabWithOpener:(Tab*)tab afterTab:(Tab*)afterTab; |
154 | 151 |
155 // TODO(crbug.com/661980): Make these |firstTabOpenedBy| and |lastTabOpenedBy| | 152 // TODO(crbug.com/661980): Make these |firstTabOpenedBy| and |lastTabOpenedBy| |
156 // better mimic what desktop chrome does. Or, better yet, use shared code. | 153 // better mimic what desktop chrome does. Or, better yet, use shared code. |
157 // Placing anew tab in its proper location along the tab strip is based on the | 154 // Placing anew tab in its proper location along the tab strip is based on the |
158 // tab's 'opener' tab, the tab from which the new tab was opened. For the user, | 155 // tab's 'opener' tab, the tab from which the new tab was opened. For the user, |
159 // that does not mean the tab in UI terms, but the page from which the new tab | 156 // that does not mean the tab in UI terms, but the page from which the new tab |
160 // is opened. Currently, to best provide this behavior, the session ID of the | 157 // is opened. Currently, to best provide this behavior, the session ID of the |
161 // tab is supplemented with its navigation index. If both those items match, it | 158 // tab is supplemented with its navigation index. If both those items match, it |
162 // is assumed that the tabs belong to the same owner's group. Note that using | 159 // is assumed that the tabs belong to the same owner's group. Note that using |
163 // navigation index is a limited solution, and may in some cases be incorrect, | 160 // navigation index is a limited solution, and may in some cases be incorrect, |
164 // as forward or back navigations (incrementing/decrementing the navigation | 161 // as forward or back navigations (incrementing/decrementing the navigation |
165 // index) may result in incorrect tab pairings. | 162 // index) may result in incorrect tab pairings. |
166 | 163 |
167 // Returns the last tab in the model opened by the specified tab at its current | 164 // Returns the last tab in the model opened by the specified tab at its current |
168 // navigation index. The search starts at |tab|. Returns nil if no tab meets | 165 // navigation index. The search starts at |tab|. Returns nil if no tab meets |
169 // these constraints. | 166 // these constraints. |
170 - (Tab*)lastTabWithOpener:(Tab*)tab; | 167 - (Tab*)lastTabWithOpener:(Tab*)tab; |
171 | 168 |
172 // Returns the tab which opened this tab, or nil if it's not a child. | 169 // Returns the tab which opened this tab, or nil if it's not a child. |
173 - (Tab*)openerOfTab:(Tab*)tab; | 170 - (Tab*)openerOfTab:(Tab*)tab; |
174 | 171 |
175 // Add/modify tabs. | 172 // Add/modify tabs. |
176 | 173 |
177 // Either opens a tab at the specified URL and register its JS-supplied window | 174 // Opens a tab at the specified URL. For certain transition types, will consult |
178 // name if appropriate, or navigates the tab corresponding to |windowName| to | 175 // the order controller and thus may only use |index| as a hint. |parentTab| may |
179 // the given |URL|. Will also update the current tab if |inBackground| is NO. | 176 // be nil if there is no parent associated with this new tab. |openedByDOM| is |
180 // |openedByDOM| is YES if the page was opened by DOM. The |index| parameter can | 177 // YES if the page was opened by DOM. The |index| parameter can be set to |
181 // be set to TabModelConstants::kTabPositionAutomatically if the caller doesn't | 178 // TabModelConstants::kTabPositionAutomatically if the caller doesn't have a |
182 // have a preference for the position of the tab. | 179 // preference for the position of the tab. |
183 - (Tab*)insertOrUpdateTabWithURL:(const GURL&)URL | 180 - (Tab*)insertTabWithURL:(const GURL&)URL |
184 referrer:(const web::Referrer&)referrer | 181 referrer:(const web::Referrer&)referrer |
185 transition:(ui::PageTransition)transition | 182 transition:(ui::PageTransition)transition |
186 windowName:(NSString*)windowName | 183 opener:(Tab*)parentTab |
187 opener:(Tab*)parentTab | 184 openedByDOM:(BOOL)openedByDOM |
188 openedByDOM:(BOOL)openedByDOM | 185 atIndex:(NSUInteger)index |
189 atIndex:(NSUInteger)index | 186 inBackground:(BOOL)inBackground; |
190 inBackground:(BOOL)inBackground; | |
191 | 187 |
192 // As above, but using WebLoadParams to specify various optional parameters. | 188 // As above, but using WebLoadParams to specify various optional parameters. |
193 - (Tab*)insertOrUpdateTabWithLoadParams: | 189 - (Tab*)insertTabWithLoadParams: |
194 (const web::NavigationManager::WebLoadParams&)params | 190 (const web::NavigationManager::WebLoadParams&)params |
195 windowName:(NSString*)windowName | 191 opener:(Tab*)parentTab |
196 opener:(Tab*)parentTab | 192 openedByDOM:(BOOL)openedByDOM |
197 openedByDOM:(BOOL)openedByDOM | 193 atIndex:(NSUInteger)index |
198 atIndex:(NSUInteger)index | 194 inBackground:(BOOL)inBackground; |
199 inBackground:(BOOL)inBackground; | |
200 | 195 |
201 // Opens a blank tab without URL and updates the current tab if |inBackground| | 196 // Opens a blank tab without URL and updates the current tab if |inBackground| |
202 // is NO. | 197 // is NO. |
203 - (Tab*)insertBlankTabWithTransition:(ui::PageTransition)transition | 198 - (Tab*)insertBlankTabWithTransition:(ui::PageTransition)transition |
204 opener:(Tab*)parentTab | 199 opener:(Tab*)parentTab |
205 openedByDOM:(BOOL)openedByDOM | 200 openedByDOM:(BOOL)openedByDOM |
206 atIndex:(NSUInteger)index | 201 atIndex:(NSUInteger)index |
207 inBackground:(BOOL)inBackground; | 202 inBackground:(BOOL)inBackground; |
208 | 203 |
209 // Inserts a new tab at the given |index| with the session history specified by | 204 // Inserts a new tab at the given |index| with the session history specified by |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
284 - (void)didCloseTab:(Tab*)closedTab; | 279 - (void)didCloseTab:(Tab*)closedTab; |
285 // Called by |tab| to inform the model that a navigation has taken place. | 280 // Called by |tab| to inform the model that a navigation has taken place. |
286 // TODO(crbug.com/661983): once more of the navigation state has moved into WC, | 281 // TODO(crbug.com/661983): once more of the navigation state has moved into WC, |
287 // replace this with WebStateObserver. | 282 // replace this with WebStateObserver. |
288 - (void)navigationCommittedInTab:(Tab*)tab; | 283 - (void)navigationCommittedInTab:(Tab*)tab; |
289 | 284 |
290 @end | 285 @end |
291 | 286 |
292 @interface TabModel (PrivateForTestingOnly) | 287 @interface TabModel (PrivateForTestingOnly) |
293 | 288 |
294 // Opens a tab at the specified URL and register its JS-supplied window name if | 289 // Opens a tab at the specified URL. The newly created tab will not be the child |
295 // appropriate. The newly created tab will not be the child of any other tab. | 290 // of any other tab. This does not go through the order controller. Used a page |
296 // This does not go through the order controller. Used a page transition of | 291 // transition of TYPED. |
297 // TYPED. | 292 - (Tab*)addTabWithURL:(const GURL&)URL referrer:(const web::Referrer&)referrer; |
298 - (Tab*)addTabWithURL:(const GURL&)URL | |
299 referrer:(const web::Referrer&)referrer | |
300 windowName:(NSString*)windowName; | |
301 | 293 |
302 // Inserts a new tab at the given |index| with the given |URL| and |referrer|. | 294 // Inserts a new tab at the given |index| with the given |URL| and |referrer|. |
303 // This does not go through the order controller. Uses a page transition of | 295 // This does not go through the order controller. Uses a page transition of |
304 // TYPED. | 296 // TYPED. |
305 - (Tab*)insertTabWithURL:(const GURL&)URL | 297 - (Tab*)insertTabWithURL:(const GURL&)URL |
306 referrer:(const web::Referrer&)referrer | 298 referrer:(const web::Referrer&)referrer |
307 windowName:(NSString*)windowName | |
308 opener:(Tab*)parentTab | 299 opener:(Tab*)parentTab |
309 atIndex:(NSUInteger)index; | 300 atIndex:(NSUInteger)index; |
310 | 301 |
311 @end | 302 @end |
312 | 303 |
313 #endif // IOS_CHROME_BROWSER_TABS_TAB_MODEL_H_ | 304 #endif // IOS_CHROME_BROWSER_TABS_TAB_MODEL_H_ |
OLD | NEW |