chromium/ios/chrome/browser/sessions/model/session_window_ios.h

// Copyright 2012 The Chromium Authors
// 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_MODEL_SESSION_WINDOW_IOS_H_
#define IOS_CHROME_BROWSER_SESSIONS_MODEL_SESSION_WINDOW_IOS_H_

#import <Foundation/Foundation.h>

@class CRWSessionStorage;
@class SessionTabGroup;

// Encapsulates everything required to save a session "window".
@interface SessionWindowIOS : NSObject<NSCoding>

// Initializes SessionsWindowIOS using the parameters are initial values for
// the `sessions` and `selectedIndex` properties. `selectedIndex` must be a
// valid index in `sessions` or NSNotFound if `sessions` is empty.
- (instancetype)initWithSessions:(NSArray<CRWSessionStorage*>*)sessions
                       tabGroups:(NSArray<SessionTabGroup*>*)tabGroups
                   selectedIndex:(NSUInteger)selectedIndex
    NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE;

// The serialized session objects. May be empty but never nil.
@property(nonatomic, readonly) NSArray<CRWSessionStorage*>* sessions;

// The serialized tab group objects. May be empty but never nil.
@property(nonatomic, readonly) NSArray<SessionTabGroup*>* tabGroups;

// The currently selected session. NSNotFound if the sessionWindow contains
// no sessions; otherwise a valid index in `sessions`.
@property(nonatomic, readonly) NSUInteger selectedIndex;

@end

#endif  // IOS_CHROME_BROWSER_SESSIONS_MODEL_SESSION_WINDOW_IOS_H_