blob: adc543f50ef968169d7d8ee94cb366c74e453992 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/web/shell/app_delegate.h"
#include <memory>
#include "ios/web/public/app/web_main.h"
#import "ios/web/public/web_client.h"
#import "ios/web/public/web_state/web_state.h"
#include "ios/web/shell/shell_browser_state.h"
#include "ios/web/shell/shell_main_delegate.h"
#import "ios/web/shell/shell_web_client.h"
#import "ios/web/shell/view_controller.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
@interface AppDelegate () {
std::unique_ptr<web::ShellMainDelegate> _delegate;
std::unique_ptr<web::WebMain> _webMain;
}
@end
@implementation AppDelegate
@synthesize window = _window;
- (BOOL)application:(UIApplication*)application
didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
_window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window makeKeyAndVisible];
self.window.backgroundColor = [UIColor whiteColor];
self.window.tintColor = [UIColor darkGrayColor];
_delegate.reset(new web::ShellMainDelegate());
web::WebMainParams params(_delegate.get());
_webMain = std::make_unique<web::WebMain>(std::move(params));
web::ShellWebClient* client =
static_cast<web::ShellWebClient*>(web::GetWebClient());
web::BrowserState* browserState = client->browser_state();
ViewController* controller =
[[ViewController alloc] initWithBrowserState:browserState];
self.window.rootViewController = controller;
return YES;
}
- (void)applicationWillResignActive:(UIApplication*)application {
}
- (void)applicationDidEnterBackground:(UIApplication*)application {
}
- (void)applicationWillEnterForeground:(UIApplication*)application {
}
- (void)applicationDidBecomeActive:(UIApplication*)application {
}
- (void)applicationWillTerminate:(UIApplication*)application {
_webMain.reset();
_delegate.reset();
}
@end