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

// 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.

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

#import "base/memory/ref_counted.h"
#import "base/task/single_thread_task_runner.h"
#import "ios/chrome/browser/sessions/model/session_window_ios_factory.h"

namespace {
constexpr base::TimeDelta kTestSaveDelay = base::Seconds(2.5);
}

@implementation TestSessionService

- (instancetype)init {
  return [super
      initWithSaveDelay:kTestSaveDelay
             taskRunner:base::SingleThreadTaskRunner::GetCurrentDefault()];
}

- (void)saveSession:(__weak SessionWindowIOSFactory*)factory
          sessionID:(NSString*)sessionID
          directory:(const base::FilePath&)directory
        immediately:(BOOL)immediately {
  NSString* sessionPath = [[self class] sessionPathForSessionID:sessionID
                                                      directory:directory];
  NSData* data =
      [NSKeyedArchiver archivedDataWithRootObject:[factory sessionForSaving]
                            requiringSecureCoding:NO
                                            error:nil];
  if (self.performIO)
    [self performSaveSessionData:data sessionPath:sessionPath];
  _saveSessionCallsCount++;
}

- (SessionWindowIOS*)loadSessionWithSessionID:(NSString*)sessionID
                                    directory:(const base::FilePath&)directory {
  _loadSessionCallsCount++;
  return [super loadSessionWithSessionID:sessionID directory:directory];
}

@end