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

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

Issue 2690163003: Rename CRIWVWebView to CWVWebView. (Closed)
Patch Set: 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
« no previous file with comments | « ios/web_view/internal/criwv.mm ('k') | ios/web_view/internal/cwv_web_view.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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_web_view.h"
6
7 #include <memory>
8 #include <utility>
9
10 #import "base/ios/weak_nsobject.h"
11 #include "base/memory/ptr_util.h"
12 #include "base/strings/sys_string_conversions.h"
13 #import "ios/web/public/navigation_manager.h"
14 #include "ios/web/public/referrer.h"
15 #import "ios/web/public/web_state/js/crw_js_injection_receiver.h"
16 #import "ios/web/public/web_state/ui/crw_web_delegate.h"
17 #import "ios/web/public/web_state/web_state.h"
18 #import "ios/web/public/web_state/web_state_delegate_bridge.h"
19 #import "ios/web/public/web_state/web_state_observer_bridge.h"
20 #include "ios/web_view/internal/criwv_browser_state.h"
21 #import "ios/web_view/internal/criwv_website_data_store_internal.h"
22 #import "ios/web_view/internal/translate/criwv_translate_client.h"
23 #import "ios/web_view/public/criwv_web_view_configuration.h"
24 #import "ios/web_view/public/criwv_web_view_delegate.h"
25 #import "ios/web_view/public/criwv_website_data_store.h"
26 #import "net/base/mac/url_conversions.h"
27 #include "ui/base/page_transition_types.h"
28 #include "url/gurl.h"
29
30 #if !defined(__has_feature) || !__has_feature(objc_arc)
31 #error "This file requires ARC support."
32 #endif
33
34 @interface CRIWVWebView ()<CRWWebStateDelegate, CRWWebStateObserver> {
35 CRIWVWebViewConfiguration* _configuration;
36 std::unique_ptr<web::WebState> _webState;
37 std::unique_ptr<web::WebStateDelegateBridge> _webStateDelegate;
38 std::unique_ptr<web::WebStateObserverBridge> _webStateObserver;
39 CGFloat _loadProgress;
40 }
41
42 @end
43
44 @implementation CRIWVWebView
45
46 @synthesize delegate = _delegate;
47 @synthesize loadProgress = _loadProgress;
48
49 - (instancetype)initWithFrame:(CGRect)frame
50 configuration:(CRIWVWebViewConfiguration*)configuration {
51 self = [super initWithFrame:frame];
52 if (self) {
53 _configuration = [configuration copy];
54
55 web::WebState::CreateParams webStateCreateParams(
56 [configuration.websiteDataStore browserState]);
57 _webState = web::WebState::Create(webStateCreateParams);
58 _webState->SetWebUsageEnabled(true);
59
60 _webStateObserver =
61 base::MakeUnique<web::WebStateObserverBridge>(_webState.get(), self);
62 _webStateDelegate = base::MakeUnique<web::WebStateDelegateBridge>(self);
63 _webState->SetDelegate(_webStateDelegate.get());
64
65 // Initialize Translate.
66 ios_web_view::CRIWVTranslateClient::CreateForWebState(_webState.get());
67 }
68 return self;
69 }
70
71 - (void)willMoveToSuperview:(UIView*)newSuperview {
72 [super willMoveToSuperview:newSuperview];
73 UIView* subview = _webState->GetView();
74 if (subview.superview == self) {
75 return;
76 }
77 subview.frame = self.frame;
78 subview.autoresizingMask =
79 UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
80 [self addSubview:subview];
81 }
82
83 - (UIView*)view {
84 return _webState->GetView();
85 }
86
87 - (BOOL)canGoBack {
88 return _webState && _webState->GetNavigationManager()->CanGoBack();
89 }
90
91 - (BOOL)canGoForward {
92 return _webState && _webState->GetNavigationManager()->CanGoForward();
93 }
94
95 - (BOOL)isLoading {
96 return _webState->IsLoading();
97 }
98
99 - (NSURL*)visibleURL {
100 return net::NSURLWithGURL(_webState->GetVisibleURL());
101 }
102
103 - (NSString*)pageTitle {
104 return base::SysUTF16ToNSString(_webState->GetTitle());
105 }
106
107 - (void)goBack {
108 if (_webState->GetNavigationManager())
109 _webState->GetNavigationManager()->GoBack();
110 }
111
112 - (void)goForward {
113 if (_webState->GetNavigationManager())
114 _webState->GetNavigationManager()->GoForward();
115 }
116
117 - (void)reload {
118 _webState->GetNavigationManager()->Reload(true);
119 }
120
121 - (void)stopLoading {
122 _webState->Stop();
123 }
124
125 - (void)loadRequest:(NSURLRequest*)request {
126 DCHECK_EQ(nil, request.HTTPBodyStream)
127 << "request.HTTPBodyStream is not supported.";
128
129 web::NavigationManager::WebLoadParams params(net::GURLWithNSURL(request.URL));
130 params.transition_type = ui::PAGE_TRANSITION_TYPED;
131 params.extra_headers.reset([request.allHTTPHeaderFields copy]);
132 params.post_data.reset([request.HTTPBody copy]);
133 _webState->GetNavigationManager()->LoadURLWithParams(params);
134 }
135
136 - (void)evaluateJavaScript:(NSString*)javaScriptString
137 completionHandler:(void (^)(id, NSError*))completionHandler {
138 [_webState->GetJSInjectionReceiver() executeJavaScript:javaScriptString
139 completionHandler:completionHandler];
140 }
141
142 - (void)setDelegate:(id<CRIWVWebViewDelegate>)delegate {
143 _delegate = delegate;
144
145 // Set up the translate delegate.
146 ios_web_view::CRIWVTranslateClient* translateClient =
147 ios_web_view::CRIWVTranslateClient::FromWebState(_webState.get());
148 id<CRIWVTranslateDelegate> translateDelegate = nil;
149 if ([_delegate respondsToSelector:@selector(translateDelegate)])
150 translateDelegate = [_delegate translateDelegate];
151 translateClient->set_translate_delegate(translateDelegate);
152 }
153
154 - (void)notifyDidUpdateWithChanges:(CRIWVWebViewUpdateType)changes {
155 SEL selector = @selector(webView:didUpdateWithChanges:);
156 if ([_delegate respondsToSelector:selector]) {
157 [_delegate webView:self didUpdateWithChanges:changes];
158 }
159 }
160
161 // -----------------------------------------------------------------------
162 // WebStateObserver implementation.
163
164 - (void)didStartProvisionalNavigationForURL:(const GURL&)URL {
165 [self notifyDidUpdateWithChanges:CRIWVWebViewUpdateTypeURL];
166 }
167
168 - (void)didCommitNavigationWithDetails:
169 (const web::LoadCommittedDetails&)details {
170 [self notifyDidUpdateWithChanges:CRIWVWebViewUpdateTypeURL];
171 }
172
173 - (void)webState:(web::WebState*)webState didLoadPageWithSuccess:(BOOL)success {
174 DCHECK_EQ(_webState.get(), webState);
175 SEL selector = @selector(webView:didFinishLoadingWithURL:loadSuccess:);
176 if ([_delegate respondsToSelector:selector]) {
177 [_delegate webView:self
178 didFinishLoadingWithURL:[self visibleURL]
179 loadSuccess:success];
180 }
181 }
182
183 - (void)webState:(web::WebState*)webState
184 didChangeLoadingProgress:(double)progress {
185 [self notifyDidUpdateWithChanges:CRIWVWebViewUpdateTypeProgress];
186 }
187
188 @end
OLDNEW
« no previous file with comments | « ios/web_view/internal/criwv.mm ('k') | ios/web_view/internal/cwv_web_view.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698