OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "chrome/browser/ui/website_settings/website_settings.h" | 5 #include "chrome/browser/ui/website_settings/website_settings.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 content::CertStore* cert_store) | 82 content::CertStore* cert_store) |
83 : TabSpecificContentSettings::SiteDataObserver( | 83 : TabSpecificContentSettings::SiteDataObserver( |
84 tab_specific_content_settings), | 84 tab_specific_content_settings), |
85 ui_(ui), | 85 ui_(ui), |
86 infobar_service_(infobar_service), | 86 infobar_service_(infobar_service), |
87 show_info_bar_(false), | 87 show_info_bar_(false), |
88 site_url_(url), | 88 site_url_(url), |
89 site_identity_status_(SITE_IDENTITY_STATUS_UNKNOWN), | 89 site_identity_status_(SITE_IDENTITY_STATUS_UNKNOWN), |
90 cert_id_(0), | 90 cert_id_(0), |
91 site_connection_status_(SITE_CONNECTION_STATUS_UNKNOWN), | 91 site_connection_status_(SITE_CONNECTION_STATUS_UNKNOWN), |
| 92 cert_transparency_status_(CERT_TRANSPARENCY_STATUS_UNKNOWN), |
92 cert_store_(cert_store), | 93 cert_store_(cert_store), |
93 content_settings_(profile->GetHostContentSettingsMap()) { | 94 content_settings_(profile->GetHostContentSettingsMap()) { |
94 Init(profile, url, ssl); | 95 Init(profile, url, ssl); |
95 | 96 |
96 HistoryService* history_service = HistoryServiceFactory::GetForProfile( | 97 HistoryService* history_service = HistoryServiceFactory::GetForProfile( |
97 profile, Profile::EXPLICIT_ACCESS); | 98 profile, Profile::EXPLICIT_ACCESS); |
98 if (history_service) { | 99 if (history_service) { |
99 history_service->GetVisibleVisitCountToHost( | 100 history_service->GetVisibleVisitCountToHost( |
100 site_url_, | 101 site_url_, |
101 &visit_count_request_consumer_, | 102 &visit_count_request_consumer_, |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
355 site_identity_details_ += errors[i].short_description(); | 356 site_identity_details_ += errors[i].short_description(); |
356 } | 357 } |
357 | 358 |
358 if (ssl.cert_status & net::CERT_STATUS_NON_UNIQUE_NAME) { | 359 if (ssl.cert_status & net::CERT_STATUS_NON_UNIQUE_NAME) { |
359 site_identity_details_ += ASCIIToUTF16("\n\n"); | 360 site_identity_details_ += ASCIIToUTF16("\n\n"); |
360 site_identity_details_ += l10n_util::GetStringUTF16( | 361 site_identity_details_ += l10n_util::GetStringUTF16( |
361 IDS_PAGE_INFO_SECURITY_TAB_NON_UNIQUE_NAME); | 362 IDS_PAGE_INFO_SECURITY_TAB_NON_UNIQUE_NAME); |
362 } | 363 } |
363 } | 364 } |
364 | 365 |
| 366 |
| 367 // Certificate Transparency: Priority for indicators: |
| 368 // 1. Has valid SCT from known log. |
| 369 // 2. Has SCT which could not be verified from a known log. |
| 370 // 3. Has SCT(s) from unknown logs |
| 371 // 4. No CT information |
| 372 if (ssl.cert_id) { |
| 373 if (ssl.cert_status & net::CERT_STATUS_HAS_VALID_SCT) { |
| 374 cert_transparency_status_ = CERT_TRANSPARENCY_STATUS_HAS_VALID_SCT; |
| 375 cert_transparency_details_.assign(l10n_util::GetStringUTF16( |
| 376 IDS_PAGE_INFO_SECURITY_TAB_CT_VERIFIED)); |
| 377 } else if (ssl.cert_status & net::CERT_STATUS_HAS_SCT_FROM_KNOWN_LOG) { |
| 378 cert_transparency_status_ = CERT_TRANSPARENCY_STATUS_HAS_SCT; |
| 379 cert_transparency_details_.assign(l10n_util::GetStringUTF16( |
| 380 IDS_PAGE_INFO_SECURITY_TAB_CT_NOT_VERIFIED)); |
| 381 } else if (ssl.cert_status & net::CERT_STATUS_HAS_ANY_SCT) { |
| 382 cert_transparency_status_ = CERT_TRANSPARENCY_STATUS_HAS_SCT; |
| 383 cert_transparency_details_.assign(l10n_util::GetStringUTF16( |
| 384 IDS_PAGE_INFO_SECURITY_TAB_CT_HAS_SCT)); |
| 385 } else { |
| 386 // No CT information |
| 387 cert_transparency_status_ = CERT_TRANSPARENCY_STATUS_UNKNOWN; |
| 388 cert_transparency_details_.assign(l10n_util::GetStringUTF16( |
| 389 IDS_PAGE_INFO_SECURITY_TAB_CT_NO_SCT)); |
| 390 } |
| 391 } |
| 392 |
365 // Site Connection | 393 // Site Connection |
366 // We consider anything less than 80 bits encryption to be weak encryption. | 394 // We consider anything less than 80 bits encryption to be weak encryption. |
367 // TODO(wtc): Bug 1198735: report mixed/unsafe content for unencrypted and | 395 // TODO(wtc): Bug 1198735: report mixed/unsafe content for unencrypted and |
368 // weakly encrypted connections. | 396 // weakly encrypted connections. |
369 site_connection_status_ = SITE_CONNECTION_STATUS_UNKNOWN; | 397 site_connection_status_ = SITE_CONNECTION_STATUS_UNKNOWN; |
370 | 398 |
371 if (!ssl.cert_id) { | 399 if (!ssl.cert_id) { |
372 // Not HTTPS. | 400 // Not HTTPS. |
373 DCHECK_EQ(ssl.security_style, content::SECURITY_STYLE_UNAUTHENTICATED); | 401 DCHECK_EQ(ssl.security_style, content::SECURITY_STYLE_UNAUTHENTICATED); |
374 if (ssl.security_style == content::SECURITY_STYLE_UNAUTHENTICATED) | 402 if (ssl.security_style == content::SECURITY_STYLE_UNAUTHENTICATED) |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
585 else | 613 else |
586 info.site_identity = site_url_.host(); | 614 info.site_identity = site_url_.host(); |
587 | 615 |
588 info.connection_status = site_connection_status_; | 616 info.connection_status = site_connection_status_; |
589 info.connection_status_description = | 617 info.connection_status_description = |
590 UTF16ToUTF8(site_connection_details_); | 618 UTF16ToUTF8(site_connection_details_); |
591 info.identity_status = site_identity_status_; | 619 info.identity_status = site_identity_status_; |
592 info.identity_status_description = | 620 info.identity_status_description = |
593 UTF16ToUTF8(site_identity_details_); | 621 UTF16ToUTF8(site_identity_details_); |
594 info.cert_id = cert_id_; | 622 info.cert_id = cert_id_; |
| 623 |
| 624 info.cert_transparency_status = cert_transparency_status_; |
| 625 info.cert_transparency_description = UTF16ToUTF8(cert_transparency_details_); |
| 626 |
595 ui_->SetIdentityInfo(info); | 627 ui_->SetIdentityInfo(info); |
596 } | 628 } |
597 | 629 |
598 void WebsiteSettings::PresentHistoryInfo(base::Time first_visit) { | 630 void WebsiteSettings::PresentHistoryInfo(base::Time first_visit) { |
599 if (first_visit == base::Time()) { | 631 if (first_visit == base::Time()) { |
600 ui_->SetFirstVisit(string16()); | 632 ui_->SetFirstVisit(string16()); |
601 return; | 633 return; |
602 } | 634 } |
603 | 635 |
604 bool visited_before_today = false; | 636 bool visited_before_today = false; |
605 base::Time today = base::Time::Now().LocalMidnight(); | 637 base::Time today = base::Time::Now().LocalMidnight(); |
606 base::Time first_visit_midnight = first_visit.LocalMidnight(); | 638 base::Time first_visit_midnight = first_visit.LocalMidnight(); |
607 visited_before_today = (first_visit_midnight < today); | 639 visited_before_today = (first_visit_midnight < today); |
608 | 640 |
609 string16 first_visit_text; | 641 string16 first_visit_text; |
610 if (visited_before_today) { | 642 if (visited_before_today) { |
611 first_visit_text = l10n_util::GetStringFUTF16( | 643 first_visit_text = l10n_util::GetStringFUTF16( |
612 IDS_PAGE_INFO_SECURITY_TAB_VISITED_BEFORE_TODAY, | 644 IDS_PAGE_INFO_SECURITY_TAB_VISITED_BEFORE_TODAY, |
613 base::TimeFormatShortDate(first_visit)); | 645 base::TimeFormatShortDate(first_visit)); |
614 } else { | 646 } else { |
615 first_visit_text = l10n_util::GetStringUTF16( | 647 first_visit_text = l10n_util::GetStringUTF16( |
616 IDS_PAGE_INFO_SECURITY_TAB_FIRST_VISITED_TODAY); | 648 IDS_PAGE_INFO_SECURITY_TAB_FIRST_VISITED_TODAY); |
617 | 649 |
618 } | 650 } |
619 ui_->SetFirstVisit(first_visit_text); | 651 ui_->SetFirstVisit(first_visit_text); |
620 } | 652 } |
OLD | NEW |