1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/ssl/ssl_host_state.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/logging.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochSSLHostState::SSLHostState() { 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochSSLHostState::~SSLHostState() { 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SSLHostState::HostRanInsecureContent(const std::string& host, int pid) { 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DCHECK(CalledOnValidThread()); 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ran_insecure_content_hosts_.insert(BrokenHostEntry(host, pid)); 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool SSLHostState::DidHostRunInsecureContent(const std::string& host, 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int pid) const { 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DCHECK(CalledOnValidThread()); 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return !!ran_insecure_content_hosts_.count(BrokenHostEntry(host, pid)); 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SSLHostState::DenyCertForHost(net::X509Certificate* cert, 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string& host) { 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DCHECK(CalledOnValidThread()); 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch cert_policy_for_host_[host].Deny(cert); 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SSLHostState::AllowCertForHost(net::X509Certificate* cert, 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string& host) { 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DCHECK(CalledOnValidThread()); 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch cert_policy_for_host_[host].Allow(cert); 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnet::CertPolicy::Judgment SSLHostState::QueryPolicy( 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch net::X509Certificate* cert, const std::string& host) { 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DCHECK(CalledOnValidThread()); 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return cert_policy_for_host_[host].Check(cert); 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 46