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

// Copyright 2016 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_TEST_SESSION_SERVICE_H_
#define IOS_CHROME_BROWSER_SESSIONS_MODEL_TEST_SESSION_SERVICE_H_

#import <Foundation/Foundation.h>

#import "ios/chrome/browser/sessions/model/session_service_ios.h"

// Testing subclass of SessionService that immediately consumes session windows
// passed to -saveSessionWindow:sessionPath:immediately: is consumed immediately
// but only saved to disk if `performIO` is set to YES. Also it keeps track of
// how many calls to saveSessionWindow have been done.
@interface TestSessionService : SessionServiceIOS

- (instancetype)init NS_DESIGNATED_INITIALIZER;

- (instancetype)initWithSaveDelay:(base::TimeDelta)saveDelay
                       taskRunner:
                           (const scoped_refptr<base::SequencedTaskRunner>&)
                               taskRunner NS_UNAVAILABLE;

// If YES, then sessions are saved to disk, otherwise, data is discarded.
@property(nonatomic, assign) BOOL performIO;

@property(nonatomic, readonly) int saveSessionCallsCount;

@property(nonatomic, readonly) int loadSessionCallsCount;

@end

#endif  // IOS_CHROME_BROWSER_SESSIONS_MODEL_TEST_SESSION_SERVICE_H_