OLD | NEW |
| (Empty) |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #import "ios/web_view/public/criwv.h" | |
6 | |
7 #include <memory> | |
8 | |
9 #include "base/location.h" | |
10 #import "base/mac/bind_objc_block.h" | |
11 #include "base/single_thread_task_runner.h" | |
12 #include "ios/web/public/app/web_main.h" | |
13 #include "ios/web/public/web_thread.h" | |
14 #import "ios/web_view/internal/criwv_web_main_delegate.h" | |
15 #import "ios/web_view/public/cwv_delegate.h" | |
16 #import "ios/web_view/public/cwv_web_view.h" | |
17 #import "ios/web_view/public/cwv_web_view_configuration.h" | |
18 #import "ios/web_view/public/cwv_website_data_store.h" | |
19 | |
20 #if !defined(__has_feature) || !__has_feature(objc_arc) | |
21 #error "This file requires ARC support." | |
22 #endif | |
23 | |
24 namespace { | |
25 CRIWV* g_criwv = nil; | |
26 } | |
27 | |
28 @interface CRIWV () { | |
29 std::unique_ptr<ios_web_view::CRIWVWebMainDelegate> _webMainDelegate; | |
30 std::unique_ptr<web::WebMain> _webMain; | |
31 } | |
32 | |
33 @property(nonatomic, weak) id<CWVDelegate> delegate; | |
34 | |
35 - (instancetype)initWithDelegate:(id<CWVDelegate>)delegate; | |
36 @end | |
37 | |
38 @implementation CRIWV | |
39 | |
40 @synthesize delegate = _delegate; | |
41 | |
42 + (void)configureWithDelegate:(id<CWVDelegate>)delegate { | |
43 g_criwv = [[CRIWV alloc] initWithDelegate:delegate]; | |
44 } | |
45 | |
46 + (void)shutDown { | |
47 g_criwv = nil; | |
48 } | |
49 | |
50 + (CWVWebView*)webViewWithFrame:(CGRect)frame { | |
51 CWVWebViewConfiguration* configuration = | |
52 [[CWVWebViewConfiguration alloc] init]; | |
53 configuration.websiteDataStore = [CWVWebsiteDataStore defaultDataStore]; | |
54 | |
55 return [[CWVWebView alloc] initWithFrame:frame configuration:configuration]; | |
56 } | |
57 | |
58 - (instancetype)initWithDelegate:(id<CWVDelegate>)delegate { | |
59 self = [super init]; | |
60 if (self) { | |
61 _delegate = delegate; | |
62 _webMainDelegate.reset(new ios_web_view::CRIWVWebMainDelegate(_delegate)); | |
63 web::WebMainParams params(_webMainDelegate.get()); | |
64 _webMain.reset(new web::WebMain(params)); | |
65 } | |
66 return self; | |
67 } | |
68 | |
69 - (void)dealloc { | |
70 _webMain.reset(); | |
71 _webMainDelegate.reset(); | |
72 } | |
73 | |
74 @end | |
OLD | NEW |