| Index: ios/web/net/crw_ssl_status_updater.mm
|
| diff --git a/ios/web/net/crw_ssl_status_updater.mm b/ios/web/net/crw_ssl_status_updater.mm
|
| index 9dee9036cec439d80e81e4c5eee05347d363e293..7840caa43da5e6a7b9b8a9bfc80b4237373ecc7e 100644
|
| --- a/ios/web/net/crw_ssl_status_updater.mm
|
| +++ b/ios/web/net/crw_ssl_status_updater.mm
|
| @@ -6,6 +6,7 @@
|
|
|
| #import "base/mac/scoped_nsobject.h"
|
| #import "base/strings/sys_string_conversions.h"
|
| +#include "ios/web/navigation/navigation_manager_util.h"
|
| #import "ios/web/public/navigation_item.h"
|
| #import "ios/web/public/navigation_manager.h"
|
| #include "ios/web/public/ssl_status.h"
|
| @@ -125,29 +126,25 @@ using web::SecurityStyle;
|
| host:(NSString*)host
|
| withSecurityStyle:(SecurityStyle)style
|
| certStatus:(CertStatus)certStatus {
|
| - // The searched item almost always be the last one, so walk backward rather
|
| - // than forward.
|
| - for (int i = _navigationManager->GetItemCount() - 1; 0 <= i; i--) {
|
| - web::NavigationItem* item = _navigationManager->GetItemAtIndex(i);
|
| - if (item->GetUniqueID() != navigationItemID)
|
| - continue;
|
| -
|
| - // NavigationItem's UniqueID is preserved even after redirects, so
|
| - // checking that cert and URL match is necessary.
|
| - scoped_refptr<net::X509Certificate> cert(web::CreateCertFromTrust(trust));
|
| - std::string GURLHost = base::SysNSStringToUTF8(host);
|
| - web::SSLStatus& SSLStatus = item->GetSSL();
|
| - if (item->GetURL().SchemeIsCryptographic() && !!SSLStatus.certificate &&
|
| - SSLStatus.certificate->Equals(cert.get()) &&
|
| - item->GetURL().host() == GURLHost) {
|
| - web::SSLStatus previousSSLStatus = item->GetSSL();
|
| - SSLStatus.cert_status = certStatus;
|
| - SSLStatus.security_style = style;
|
| - if (!previousSSLStatus.Equals(SSLStatus)) {
|
| - [self didChangeSSLStatusForNavigationItem:item];
|
| - }
|
| - }
|
| + web::NavigationItem* item =
|
| + web::GetCommittedItemWithUniqueID(_navigationManager, navigationItemID);
|
| + if (!item)
|
| return;
|
| +
|
| + // NavigationItem's UniqueID is preserved even after redirects, so
|
| + // checking that cert and URL match is necessary.
|
| + scoped_refptr<net::X509Certificate> cert(web::CreateCertFromTrust(trust));
|
| + std::string GURLHost = base::SysNSStringToUTF8(host);
|
| + web::SSLStatus& SSLStatus = item->GetSSL();
|
| + if (item->GetURL().SchemeIsCryptographic() && !!SSLStatus.certificate &&
|
| + SSLStatus.certificate->Equals(cert.get()) &&
|
| + item->GetURL().host() == GURLHost) {
|
| + web::SSLStatus previousSSLStatus = item->GetSSL();
|
| + SSLStatus.cert_status = certStatus;
|
| + SSLStatus.security_style = style;
|
| + if (!previousSSLStatus.Equals(SSLStatus)) {
|
| + [self didChangeSSLStatusForNavigationItem:item];
|
| + }
|
| }
|
| }
|
|
|
|
|