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

Side by Side Diff: ios/web/web_state/ui/crw_ui_web_view_web_controller.mm

Issue 1458703004: Fixes document type detection on iOS 9. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/web_state/ui/crw_ui_web_view_web_controller.h" 5 #import "ios/web/web_state/ui/crw_ui_web_view_web_controller.h"
6 6
7 #import "base/ios/ns_error_util.h" 7 #import "base/ios/ns_error_util.h"
8 #import "base/ios/weak_nsobject.h" 8 #import "base/ios/weak_nsobject.h"
9 #include "base/json/json_reader.h" 9 #include "base/json/json_reader.h"
10 #include "base/json/string_escape.h" 10 #include "base/json/string_escape.h"
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 // The core.js cannot pass messages back to obj-c if it is injected 543 // The core.js cannot pass messages back to obj-c if it is injected
544 // to |WEB_VIEW_DOCUMENT| because it does not support iframe creation used 544 // to |WEB_VIEW_DOCUMENT| because it does not support iframe creation used
545 // by core.js to communicate back. That functionality is only supported 545 // by core.js to communicate back. That functionality is only supported
546 // by |WEB_VIEW_HTML_DOCUMENT|. |WEB_VIEW_DOCUMENT| is used when displaying 546 // by |WEB_VIEW_HTML_DOCUMENT|. |WEB_VIEW_DOCUMENT| is used when displaying
547 // non-HTML contents (e.g. PDF documents). 547 // non-HTML contents (e.g. PDF documents).
548 - (web::WebViewDocumentType)webViewDocumentType { 548 - (web::WebViewDocumentType)webViewDocumentType {
549 // This happens during tests. 549 // This happens during tests.
550 if (!_uiWebView) { 550 if (!_uiWebView) {
551 return web::WEB_VIEW_DOCUMENT_TYPE_GENERIC; 551 return web::WEB_VIEW_DOCUMENT_TYPE_GENERIC;
552 } 552 }
553 NSString* documentType = 553
554 [_uiWebView stringByEvaluatingJavaScriptFromString: 554 if (base::ios::IsRunningOnIOS9OrLater()) {
Eugene But (OOO till 7-30) 2015/11/18 16:30:57 Please explain in the comments why iOS9 implementa
stkhapugin 2015/11/19 16:16:35 Done.
555 @"'' + document"]; 555 NSString* documentType = [_uiWebView
556 if ([documentType isEqualToString:@"[object HTMLDocument]"]) 556 stringByEvaluatingJavaScriptFromString:@"document.contentType"];
557 return web::WEB_VIEW_DOCUMENT_TYPE_HTML; 557 if ([documentType isEqualToString:@"text/html"])
Eugene But (OOO till 7-30) 2015/11/18 16:30:57 I think you also want to check for "application/xh
stkhapugin 2015/11/19 16:16:35 Done.
558 else if ([documentType isEqualToString:@"[object Document]"]) 558 return web::WEB_VIEW_DOCUMENT_TYPE_HTML;
559 return web::WEB_VIEW_DOCUMENT_TYPE_GENERIC; 559 else if ([documentType isEqualToString:@"application/pdf"])
560 return web::WEB_VIEW_DOCUMENT_TYPE_GENERIC;
561 } else {
562 NSString* documentType =
563 [_uiWebView stringByEvaluatingJavaScriptFromString:@"'' + document"];
564 if ([documentType isEqualToString:@"[object HTMLDocument]"])
565 return web::WEB_VIEW_DOCUMENT_TYPE_HTML;
566 else if ([documentType isEqualToString:@"[object Document]"])
567 return web::WEB_VIEW_DOCUMENT_TYPE_GENERIC;
568 }
569
560 return web::WEB_VIEW_DOCUMENT_TYPE_UNKNOWN; 570 return web::WEB_VIEW_DOCUMENT_TYPE_UNKNOWN;
561 } 571 }
562 572
563 - (void)loadRequest:(NSMutableURLRequest*)request { 573 - (void)loadRequest:(NSMutableURLRequest*)request {
564 DCHECK(web::GetWebClient()); 574 DCHECK(web::GetWebClient());
565 GURL requestURL = net::GURLWithNSURL(request.URL); 575 GURL requestURL = net::GURLWithNSURL(request.URL);
566 // If the request is for WebUI, add information to let the network stack 576 // If the request is for WebUI, add information to let the network stack
567 // access the requestGroupID. 577 // access the requestGroupID.
568 if (web::GetWebClient()->IsAppSpecificURL(requestURL)) { 578 if (web::GetWebClient()->IsAppSpecificURL(requestURL)) {
569 // Sub requests of a chrome:// page will not contain the user agent. 579 // Sub requests of a chrome:// page will not contain the user agent.
(...skipping 984 matching lines...) Expand 10 before | Expand all | Expand 10 after
1554 } 1564 }
1555 1565
1556 #pragma mark - 1566 #pragma mark -
1557 #pragma mark Testing methods 1567 #pragma mark Testing methods
1558 1568
1559 -(id<CRWRecurringTaskDelegate>)recurringTaskDelegate { 1569 -(id<CRWRecurringTaskDelegate>)recurringTaskDelegate {
1560 return _recurringTaskDelegate; 1570 return _recurringTaskDelegate;
1561 } 1571 }
1562 1572
1563 @end 1573 @end
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698