Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(319)

Side by Side Diff: ios/web_view/internal/criwv_web_view_impl.mm

Issue 2650323002: Cleanup ios/web_view. (Closed)
Patch Set: Respond to comments. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "ios/web_view/internal/criwv_web_view_impl.h" 5 #import "ios/web_view/internal/criwv_web_view_impl.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #import "base/ios/weak_nsobject.h" 10 #import "base/ios/weak_nsobject.h"
11 #include "base/memory/ptr_util.h"
11 #include "base/strings/sys_string_conversions.h" 12 #include "base/strings/sys_string_conversions.h"
12 #import "ios/web/navigation/crw_session_controller.h" 13 #import "ios/web/navigation/crw_session_controller.h"
13 #include "ios/web/public/referrer.h" 14 #include "ios/web/public/referrer.h"
14 #import "ios/web/public/navigation_manager.h" 15 #import "ios/web/public/navigation_manager.h"
15 #import "ios/web/public/web_state/ui/crw_web_delegate.h" 16 #import "ios/web/public/web_state/ui/crw_web_delegate.h"
16 #import "ios/web/public/web_state/web_state.h" 17 #import "ios/web/public/web_state/web_state.h"
17 #import "ios/web/public/web_state/web_state_delegate_bridge.h" 18 #import "ios/web/public/web_state/web_state_delegate_bridge.h"
18 #import "ios/web/web_state/ui/crw_web_controller.h" 19 #import "ios/web/web_state/ui/crw_web_controller.h"
19 #import "ios/web/web_state/web_state_impl.h" 20 #import "ios/web/web_state/web_state_impl.h"
20 #include "ios/web_view/internal/criwv_browser_state.h" 21 #include "ios/web_view/internal/criwv_browser_state.h"
21 #import "ios/web_view/internal/translate/criwv_translate_client.h" 22 #import "ios/web_view/internal/translate/criwv_translate_client.h"
22 #import "ios/web_view/public/criwv_web_view_delegate.h" 23 #import "ios/web_view/public/criwv_web_view_delegate.h"
23 #import "net/base/mac/url_conversions.h" 24 #import "net/base/mac/url_conversions.h"
24 #include "ui/base/page_transition_types.h" 25 #include "ui/base/page_transition_types.h"
25 #include "url/gurl.h" 26 #include "url/gurl.h"
26 27
27 @interface CRIWVWebViewImpl ()<CRWWebDelegate, CRWWebStateDelegate> { 28 @interface CRIWVWebViewImpl ()<CRWWebDelegate, CRWWebStateDelegate> {
28 id<CRIWVWebViewDelegate> _delegate; 29 id<CRIWVWebViewDelegate> _delegate;
29 ios_web_view::CRIWVBrowserState* _browserState; 30 ios_web_view::CRIWVBrowserState* _browserState;
30 std::unique_ptr<web::WebStateImpl> _webStateImpl; 31 std::unique_ptr<web::WebStateImpl> _webStateImpl;
31 base::WeakNSObject<CRWWebController> _webController; 32 base::WeakNSObject<CRWWebController> _webController;
32 std::unique_ptr<web::WebStateDelegateBridge> _webStateDelegate; 33 std::unique_ptr<web::WebStateDelegateBridge> _webStateDelegate;
33 34
34 CGFloat _loadProgress; 35 CGFloat _loadProgress;
35 } 36 }
36 37
37 // Returns the web state associated with this web view.
38 - (web::WebState*)webState;
39
40 @end 38 @end
41 39
42 @implementation CRIWVWebViewImpl 40 @implementation CRIWVWebViewImpl
43 41
44 @synthesize delegate = _delegate; 42 @synthesize delegate = _delegate;
45 @synthesize loadProgress = _loadProgress; 43 @synthesize loadProgress = _loadProgress;
46 44
47 - (instancetype)initWithBrowserState: 45 - (instancetype)initWithBrowserState:
48 (ios_web_view::CRIWVBrowserState*)browserState { 46 (ios_web_view::CRIWVBrowserState*)browserState {
49 self = [super init]; 47 self = [super init];
50 if (self) { 48 if (self) {
51 _browserState = browserState; 49 _browserState = browserState;
52 _webStateImpl.reset(new web::WebStateImpl(_browserState)); 50 _webStateImpl = base::MakeUnique<web::WebStateImpl>(_browserState);
53 _webStateImpl->GetNavigationManagerImpl().InitializeSession(nil, nil, NO, 51 _webStateImpl->GetNavigationManagerImpl().InitializeSession(nil, nil, NO,
54 0); 52 0);
55 _webStateDelegate.reset(new web::WebStateDelegateBridge(self)); 53 _webStateDelegate = base::MakeUnique<web::WebStateDelegateBridge>(self);
56 _webStateImpl->SetDelegate(_webStateDelegate.get()); 54 _webStateImpl->SetDelegate(_webStateDelegate.get());
57 _webController.reset(_webStateImpl->GetWebController()); 55 _webController.reset(_webStateImpl->GetWebController());
58 [_webController setDelegate:self]; 56 [_webController setDelegate:self];
59 [_webController setWebUsageEnabled:YES]; 57 [_webController setWebUsageEnabled:YES];
60 58
61 // Initialize Translate. 59 // Initialize Translate.
62 web::WebState* webState = [_webController webStateImpl]; 60 ios_web_view::CRIWVTranslateClient::CreateForWebState(_webStateImpl.get());
63 ios_web_view::CRIWVTranslateClient::CreateForWebState(webState);
64 } 61 }
65 return self; 62 return self;
66 } 63 }
67 64
68 - (web::WebState*)webState {
69 // TODO(crbug.com/679895): Stop using the private CRWWebController API.
70 return [_webController webStateImpl];
71 }
72
73 - (UIView*)view { 65 - (UIView*)view {
74 return [_webController view]; 66 return [_webController view];
75 } 67 }
76 68
77 - (BOOL)canGoBack { 69 - (BOOL)canGoBack {
78 return _webStateImpl && _webStateImpl->GetNavigationManager()->CanGoBack(); 70 return _webStateImpl && _webStateImpl->GetNavigationManager()->CanGoBack();
79 } 71 }
80 72
81 - (BOOL)canGoForward { 73 - (BOOL)canGoForward {
82 return _webStateImpl && _webStateImpl->GetNavigationManager()->CanGoForward(); 74 return _webStateImpl && _webStateImpl->GetNavigationManager()->CanGoForward();
83 } 75 }
84 76
85 - (BOOL)isLoading { 77 - (BOOL)isLoading {
86 return [_webController webStateImpl]->IsLoading(); 78 return _webStateImpl->IsLoading();
87 } 79 }
88 80
89 - (NSURL*)visibleURL { 81 - (NSURL*)visibleURL {
90 return net::NSURLWithGURL([self webState]->GetVisibleURL()); 82 return net::NSURLWithGURL(_webStateImpl->GetVisibleURL());
91 } 83 }
92 84
93 - (NSString*)pageTitle { 85 - (NSString*)pageTitle {
94 return base::SysUTF16ToNSString([_webController webStateImpl]->GetTitle()); 86 return base::SysUTF16ToNSString(_webStateImpl->GetTitle());
95 } 87 }
96 88
97 - (void)goBack { 89 - (void)goBack {
98 if (_webStateImpl) 90 if (_webStateImpl->GetNavigationManager())
99 _webStateImpl->GetNavigationManager()->GoBack(); 91 _webStateImpl->GetNavigationManager()->GoBack();
100 } 92 }
101 93
102 - (void)goForward { 94 - (void)goForward {
103 if (_webStateImpl) 95 if (_webStateImpl->GetNavigationManager())
104 _webStateImpl->GetNavigationManager()->GoForward(); 96 _webStateImpl->GetNavigationManager()->GoForward();
105 } 97 }
106 98
107 - (void)reload { 99 - (void)reload {
108 [_webController reload]; 100 [_webController reload];
109 } 101 }
110 102
111 - (void)stopLoading { 103 - (void)stopLoading {
112 [_webController stopLoading]; 104 [_webController stopLoading];
113 } 105 }
114 106
115 - (void)loadURL:(NSURL*)URL { 107 - (void)loadURL:(NSURL*)URL {
116 web::NavigationManager::WebLoadParams params(net::GURLWithNSURL(URL)); 108 web::NavigationManager::WebLoadParams params(net::GURLWithNSURL(URL));
117 params.transition_type = ui::PAGE_TRANSITION_TYPED; 109 params.transition_type = ui::PAGE_TRANSITION_TYPED;
118 [_webController loadWithParams:params]; 110 [_webController loadWithParams:params];
119 } 111 }
120 112
121 - (void)evaluateJavaScript:(NSString*)javaScriptString 113 - (void)evaluateJavaScript:(NSString*)javaScriptString
122 completionHandler:(void (^)(id, NSError*))completionHandler { 114 completionHandler:(void (^)(id, NSError*))completionHandler {
123 [[self webState]->GetJSInjectionReceiver() 115 [_webStateImpl->GetJSInjectionReceiver() executeJavaScript:javaScriptString
124 executeJavaScript:javaScriptString 116 completionHandler:completionHandler];
125 completionHandler:completionHandler];
126 } 117 }
127 118
128 - (void)setDelegate:(id<CRIWVWebViewDelegate>)delegate { 119 - (void)setDelegate:(id<CRIWVWebViewDelegate>)delegate {
129 _delegate = delegate; 120 _delegate = delegate;
130 121
131 // Set up the translate delegate. 122 // Set up the translate delegate.
132 ios_web_view::CRIWVTranslateClient* translateClient = 123 ios_web_view::CRIWVTranslateClient* translateClient =
133 ios_web_view::CRIWVTranslateClient::FromWebState([self webState]); 124 ios_web_view::CRIWVTranslateClient::FromWebState(_webStateImpl.get());
134 id<CRIWVTranslateDelegate> translateDelegate = nil; 125 id<CRIWVTranslateDelegate> translateDelegate = nil;
135 if ([_delegate respondsToSelector:@selector(translateDelegate)]) 126 if ([_delegate respondsToSelector:@selector(translateDelegate)])
136 translateDelegate = [_delegate translateDelegate]; 127 translateDelegate = [_delegate translateDelegate];
137 translateClient->set_translate_delegate(translateDelegate); 128 translateClient->set_translate_delegate(translateDelegate);
138 } 129 }
139 130
140 // ----------------------------------------------------------------------- 131 // -----------------------------------------------------------------------
141 // WebDelegate implementation. 132 // WebDelegate implementation.
142 133
143 - (void)notifyDidUpdateWithChanges:(CRIWVWebViewUpdateType)changes { 134 - (void)notifyDidUpdateWithChanges:(CRIWVWebViewUpdateType)changes {
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 233
243 // ----------------------------------------------------------------------- 234 // -----------------------------------------------------------------------
244 // CRWWebStateDelegate implementation. 235 // CRWWebStateDelegate implementation.
245 236
246 - (void)webState:(web::WebState*)webState didChangeProgress:(double)progress { 237 - (void)webState:(web::WebState*)webState didChangeProgress:(double)progress {
247 _loadProgress = progress; 238 _loadProgress = progress;
248 [self notifyDidUpdateWithChanges:CRIWVWebViewUpdateTypeProgress]; 239 [self notifyDidUpdateWithChanges:CRIWVWebViewUpdateTypeProgress];
249 } 240 }
250 241
251 @end 242 @end
OLDNEW
« no previous file with comments | « ios/web_view/internal/criwv_web_view_impl.h ('k') | ios/web_view/internal/translate/criwv_translate_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698