blob: b7f41800c6f1de0b23ffe0c30ea94b83c8d1f910 [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import <UIKit/UIKit.h>
namespace {
void PopulateUIWindow(UIWindow* window) {
window.backgroundColor = UIColor.whiteColor;
[window makeKeyAndVisible];
CGRect bounds = window.windowScene.screen.bounds;
// Add a label with the app name.
UILabel* label = [[UILabel alloc] initWithFrame:bounds];
label.text = NSProcessInfo.processInfo.processName;
label.textAlignment = NSTextAlignmentCenter;
[window addSubview:label];
// An NSInternalInconsistencyException is thrown if the app doesn't have a
// root view controller. Set an empty one here.
window.rootViewController = [[UIViewController alloc] init];
}
} // namespace
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication*)application
didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
return YES;
}
@end
@interface ChromeUnitTestSceneDelegate : NSObject <UIWindowSceneDelegate>
@property(nonatomic, strong) UIWindow* window;
@end
@implementation ChromeUnitTestSceneDelegate
- (void)scene:(UIScene*)scene
willConnectToSession:(UISceneSession*)session
options:(UISceneConnectionOptions*)connectionOptions {
_window =
[[UIWindow alloc] initWithWindowScene:static_cast<UIWindowScene*>(scene)];
PopulateUIWindow(_window);
}
- (void)sceneDidDisconnect:(UIScene*)scene {
_window = nil;
}
@end
int main(int argc, char* argv[]) {
NSString* appDelegateClassName;
@autoreleasepool {
// Setup code that might create autoreleased objects goes here.
appDelegateClassName = NSStringFromClass([AppDelegate class]);
}
return UIApplicationMain(argc, argv, nil, appDelegateClassName);
}