OLD | NEW |
---|---|
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 #include "ios/chrome/browser/ui/static_content/static_html_view_controller.h" | 5 #include "ios/chrome/browser/ui/static_content/static_html_view_controller.h" |
6 | 6 |
7 #include <WebKit/WebKit.h> | 7 #include <WebKit/WebKit.h> |
8 | 8 |
9 #include <stdlib.h> | 9 #include <stdlib.h> |
10 | 10 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
77 id<CRWNativeContentDelegate> delegate_; // weak | 77 id<CRWNativeContentDelegate> delegate_; // weak |
78 | 78 |
79 // The loader to navigate from the page. | 79 // The loader to navigate from the page. |
80 id<UrlLoader> loader_; // weak | 80 id<UrlLoader> loader_; // weak |
81 } | 81 } |
82 | 82 |
83 // Returns the URL of the static page to display. | 83 // Returns the URL of the static page to display. |
84 - (NSURL*)resourceURL; | 84 - (NSURL*)resourceURL; |
85 // Ensures that webView_ has been created, creating it if necessary. | 85 // Ensures that webView_ has been created, creating it if necessary. |
86 - (void)ensureWebViewCreated; | 86 - (void)ensureWebViewCreated; |
87 // Determines if the page load should begin based on the current |resourceURL|. | 87 // Determines if the page load should begin based on the current |resourceURL| |
88 - (BOOL)shouldStartLoadWithRequest:(NSURLRequest*)request; | 88 // and the navigation type |type|. |
89 - (BOOL)shouldStartLoadWithRequest:(NSURLRequest*)request | |
90 type:(WKNavigationType)type; | |
Eugene But (OOO till 7-30)
2016/12/22 16:21:56
nit: s/type/navigationType:
Olivier
2016/12/22 16:42:59
Done.
Eugene But (OOO till 7-30)
2016/12/22 17:37:51
Sorry I meant words before arguments (s/type:/navi
| |
89 @end | 91 @end |
90 | 92 |
91 @implementation StaticHtmlViewController | 93 @implementation StaticHtmlViewController |
92 | 94 |
93 - (instancetype)initWithResource:(NSString*)resource | 95 - (instancetype)initWithResource:(NSString*)resource |
94 browserState:(web::BrowserState*)browserState { | 96 browserState:(web::BrowserState*)browserState { |
95 DCHECK(resource); | 97 DCHECK(resource); |
96 DCHECK(browserState); | 98 DCHECK(browserState); |
97 if ((self = [super init])) { | 99 if ((self = [super init])) { |
98 resource_.reset([resource copy]); | 100 resource_.reset([resource copy]); |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
192 [[self scrollView] setScrollEnabled:enabled]; | 194 [[self scrollView] setScrollEnabled:enabled]; |
193 } | 195 } |
194 | 196 |
195 #pragma mark - | 197 #pragma mark - |
196 #pragma mark WKNavigationDelegate implementation | 198 #pragma mark WKNavigationDelegate implementation |
197 | 199 |
198 - (void)webView:(WKWebView*)webView | 200 - (void)webView:(WKWebView*)webView |
199 decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction | 201 decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction |
200 decisionHandler: | 202 decisionHandler: |
201 (void (^)(WKNavigationActionPolicy))decisionHandler { | 203 (void (^)(WKNavigationActionPolicy))decisionHandler { |
202 decisionHandler([self shouldStartLoadWithRequest:navigationAction.request] | 204 decisionHandler( |
203 ? WKNavigationActionPolicyAllow | 205 [self shouldStartLoadWithRequest:navigationAction.request |
204 : WKNavigationActionPolicyCancel); | 206 type:navigationAction.navigationType] |
207 ? WKNavigationActionPolicyAllow | |
208 : WKNavigationActionPolicyCancel); | |
205 } | 209 } |
206 | 210 |
207 #pragma mark - | 211 #pragma mark - |
208 #pragma mark KVO callback | 212 #pragma mark KVO callback |
209 | 213 |
210 - (void)observeValueForKeyPath:(NSString*)keyPath | 214 - (void)observeValueForKeyPath:(NSString*)keyPath |
211 ofObject:(id)object | 215 ofObject:(id)object |
212 change:(NSDictionary*)change | 216 change:(NSDictionary*)change |
213 context:(void*)context { | 217 context:(void*)context { |
214 DCHECK([keyPath isEqualToString:@"title"]); | 218 DCHECK([keyPath isEqualToString:@"title"]); |
215 if ([delegate_ respondsToSelector:@selector(nativeContent:titleDidChange:)]) { | 219 if ([delegate_ respondsToSelector:@selector(nativeContent:titleDidChange:)]) { |
216 // WKWebView's |title| changes to nil when its web process crashes. | 220 // WKWebView's |title| changes to nil when its web process crashes. |
217 if ([webView_ title]) | 221 if ([webView_ title]) |
218 [delegate_ nativeContent:self titleDidChange:[webView_ title]]; | 222 [delegate_ nativeContent:self titleDidChange:[webView_ title]]; |
219 } | 223 } |
220 } | 224 } |
221 | 225 |
222 #pragma mark - | 226 #pragma mark - |
223 #pragma mark Private | 227 #pragma mark Private |
224 | 228 |
225 - (BOOL)shouldStartLoadWithRequest:(NSURLRequest*)request { | 229 - (BOOL)shouldStartLoadWithRequest:(NSURLRequest*)request |
230 type:(WKNavigationType)type { | |
226 // Only allow displaying the URL which correspond to the authorized resource. | 231 // Only allow displaying the URL which correspond to the authorized resource. |
227 if ([[request URL] isEqual:[self resourceURL]]) | 232 if ([[request URL] isEqual:[self resourceURL]]) |
228 return YES; | 233 return YES; |
229 | 234 |
230 // All other URLs will be loaded by our UrlLoader if we have one. | 235 // All other navigation URLs will be loaded by our UrlLoader if we have one. |
Eugene But (OOO till 7-30)
2016/12/22 16:21:56
nit: Please avoid "we" in the comments (go/avoidwe
Olivier
2016/12/22 16:42:59
I did not add the we :)
Removed.
| |
231 if (loader_) { | 236 // If type is |WKNavigationTypeOther|, the URL corresponds to an external |
Eugene But (OOO till 7-30)
2016/12/22 16:21:56
What does "external resource mean"? I think WKNavi
Olivier
2016/12/22 16:42:59
Clicking on regular link is WKNavigationTypeLinkAc
| |
237 // resource and should not be loaded at all. | |
238 if (loader_ && type != WKNavigationTypeOther) { | |
232 dispatch_async(dispatch_get_main_queue(), ^{ | 239 dispatch_async(dispatch_get_main_queue(), ^{ |
233 [loader_ loadURL:net::GURLWithNSURL([request URL]) | 240 [loader_ loadURL:net::GURLWithNSURL([request URL]) |
234 referrer:referrer_ | 241 referrer:referrer_ |
235 transition:ui::PAGE_TRANSITION_LINK | 242 transition:ui::PAGE_TRANSITION_LINK |
236 rendererInitiated:YES]; | 243 rendererInitiated:YES]; |
237 }); | 244 }); |
238 } | 245 } |
239 return NO; | 246 return NO; |
240 } | 247 } |
241 | 248 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
287 allowingReadAccessToURL:resourcesRootDirectory_]; | 294 allowingReadAccessToURL:resourcesRootDirectory_]; |
288 } else { | 295 } else { |
289 NSURL* resourceURL = [self resourceURL]; | 296 NSURL* resourceURL = [self resourceURL]; |
290 [generator_ generateHtml:^(NSString* HTML) { | 297 [generator_ generateHtml:^(NSString* HTML) { |
291 [webView loadHTMLString:HTML baseURL:resourceURL]; | 298 [webView loadHTMLString:HTML baseURL:resourceURL]; |
292 }]; | 299 }]; |
293 } | 300 } |
294 } | 301 } |
295 | 302 |
296 @end | 303 @end |
OLD | NEW |