Index: ios/chrome/browser/sessions/session_window.h |
diff --git a/ios/chrome/browser/sessions/session_window.h b/ios/chrome/browser/sessions/session_window.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ebcc2e3b47bf94b248d5e394e05fbfc44143cd0f |
--- /dev/null |
+++ b/ios/chrome/browser/sessions/session_window.h |
@@ -0,0 +1,41 @@ |
+// Copyright 2012 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 IOS_CHROME_BROWSER_SESSIONS_SESSION_WINDOW_H_ |
+#define IOS_CHROME_BROWSER_SESSIONS_SESSION_WINDOW_H_ |
+ |
+#import <Foundation/Foundation.h> |
+ |
+#include <memory> |
+ |
+#import "ios/web/web_state/web_state_impl.h" |
+ |
+// Encapsulates everything required to save a session "window". For iOS, there |
+// will only be one window at a time. |
+@interface SessionWindowIOS : NSObject<NSCoding> |
+ |
+// So that ownership transfer of WebStateImpls is explicit, SessionWindows |
+// are initialized "empty" (without any sessions) and sessions are added |
+// one at a time. For example: |
+// SessionWindowIOS* window = [[SessionWindow alloc] init]; |
+// [window addSession:some_scoped_webstate_ptr.Pass()]; |
+// ... |
+// [window setSelectedInex:mySelectedIndex]; |
+- (void)addSession:(std::unique_ptr<web::WebStateImpl>)session; |
+ |
+- (void)clearSessions; |
+ |
+// Takes the first session stored in the reciever, removes it and passes |
+// ownership of it to the caller. |
+- (std::unique_ptr<web::WebStateImpl>)nextSession; |
+ |
+// The currently selected session. NSNotFound if the sessionWindow contains |
+// no sessions; otherwise 0 <= |selectedIndex| < |unclaimedSessions|. |
+@property(nonatomic) NSUInteger selectedIndex; |
+// A count of the remaining sessions that haven't been claimed. |
+@property(nonatomic, readonly) NSUInteger unclaimedSessions; |
+ |
+@end |
+ |
+#endif // IOS_CHROME_BROWSER_SESSIONS_SESSION_WINDOW_H_ |