chromium/ios/chrome/app/application_delegate/startup_information.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_APP_APPLICATION_DELEGATE_STARTUP_INFORMATION_H_
#define IOS_CHROME_APP_APPLICATION_DELEGATE_STARTUP_INFORMATION_H_

class FirstUserActionRecorder;

namespace base {
class TimeTicks;
}

// Contains information about the startup.
@protocol StartupInformation<NSObject>

// Whether the app is starting in first run.
@property(nonatomic, assign) BOOL isFirstRun;
// Whether the current session began from a cold start. NO if the app has
// entered the background at least once since start up.
@property(nonatomic) BOOL isColdStart;
// Start of the application, used for UMA.
@property(nonatomic, assign) base::TimeTicks appLaunchTime;
// An object to record metrics related to the user's first action.
@property(nonatomic, readonly) FirstUserActionRecorder* firstUserActionRecorder;
// Tick of the call to didFinishLaunching, used for UMA.
@property(nonatomic, assign) base::TimeTicks didFinishLaunchingTime;
// Tick of the first scene connection, used for UMA.
@property(nonatomic, assign) base::TimeTicks firstSceneConnectionTime;

// Disables the FirstUserActionRecorder.
- (void)resetFirstUserActionRecorder;

// Expire the FirstUserActionRecorder and disable it.
- (void)expireFirstUserActionRecorder;

// Expire the FirstUserActionRecorder and disable it after a delay.
- (void)expireFirstUserActionRecorderAfterDelay:(NSTimeInterval)delay;

// Enable the FirstUserActionRecorder with the time spent in background.
- (void)activateFirstUserActionRecorderWithBackgroundTime:
    (NSTimeInterval)backgroundTime;

// Teardown that is needed by common Chrome code. This should not be called if
// Chrome code is still on the stack.
- (void)stopChromeMain;

@end

#endif  // IOS_CHROME_APP_APPLICATION_DELEGATE_STARTUP_INFORMATION_H_