summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ssl
diff options
context:
space:
mode:
authorabarth@chromium.org <abarth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-13 08:48:30 +0000
committerabarth@chromium.org <abarth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-13 08:48:30 +0000
commit52b56d1abe78e4a87b6c6a540b41d46961af0b61 (patch)
tree90b594101ee79f95e65284c7759321cece8687f0 /chrome/browser/ssl
parentd26f58aeca2d32c34ceeb84f905f81d9ba183438 (diff)
downloadchromium_src-52b56d1abe78e4a87b6c6a540b41d46961af0b61.zip
chromium_src-52b56d1abe78e4a87b6c6a540b41d46961af0b61.tar.gz
chromium_src-52b56d1abe78e4a87b6c6a540b41d46961af0b61.tar.bz2
Revert 9747
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9748 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ssl')
-rwxr-xr-xchrome/browser/ssl/ssl_host_state.cc47
-rwxr-xr-xchrome/browser/ssl/ssl_host_state.h59
-rw-r--r--chrome/browser/ssl/ssl_manager.cc38
-rw-r--r--chrome/browser/ssl/ssl_manager.h55
4 files changed, 49 insertions, 150 deletions
diff --git a/chrome/browser/ssl/ssl_host_state.cc b/chrome/browser/ssl/ssl_host_state.cc
deleted file mode 100755
index 5bee7d9..0000000
--- a/chrome/browser/ssl/ssl_host_state.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ssl/ssl_host_state.h"
-
-SSLHostState::SSLHostState() {
-}
-
-SSLHostState::~SSLHostState() {
-}
-
-void SSLHostState::DenyCertForHost(net::X509Certificate* cert,
- const std::string& host) {
- DCHECK(CalledOnValidThread());
-
- // Remember that we don't like this cert for this host.
- cert_policy_for_host_[host].Deny(cert);
-}
-
-void SSLHostState::AllowCertForHost(net::X509Certificate* cert,
- const std::string& host) {
- DCHECK(CalledOnValidThread());
-
- // Remember that we do like this cert for this host.
- cert_policy_for_host_[host].Allow(cert);
-}
-
-net::X509Certificate::Policy::Judgment SSLHostState::QueryPolicy(
- net::X509Certificate* cert, const std::string& host) {
- DCHECK(CalledOnValidThread());
-
- return cert_policy_for_host_[host].Check(cert);
-}
-
-bool SSLHostState::CanShowInsecureContent(const GURL& url) {
- DCHECK(CalledOnValidThread());
-
- return (can_show_insecure_content_for_host_.find(url.host()) !=
- can_show_insecure_content_for_host_.end());
-}
-
-void SSLHostState::AllowShowInsecureContentForURL(const GURL& url) {
- DCHECK(CalledOnValidThread());
-
- can_show_insecure_content_for_host_.insert(url.host());
-}
diff --git a/chrome/browser/ssl/ssl_host_state.h b/chrome/browser/ssl/ssl_host_state.h
deleted file mode 100755
index 6d0194f..0000000
--- a/chrome/browser/ssl/ssl_host_state.h
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_SSL_SSL_HOST_STATE_H_
-#define CHROME_BROWSER_SSL_SSL_HOST_STATE_H_
-
-#include <string>
-#include <map>
-#include <set>
-
-#include "base/basictypes.h"
-#include "base/non_thread_safe.h"
-#include "googleurl/src/gurl.h"
-#include "net/base/x509_certificate.h"
-
-// SSLHostState
-//
-// The SSLHostState encapulates the host-specific state for SSL errors. For
-// example, SSLHostState rememebers whether the user has whitelisted a
-// particular broken cert for use with particular host. We separate this state
-// from the SSLManager because this state is shared across many navigation
-// controllers.
-
-class SSLHostState : public NonThreadSafe {
- public:
- SSLHostState();
- ~SSLHostState();
-
- // Records that |cert| is permitted to be used for |host| in the future.
- void DenyCertForHost(net::X509Certificate* cert, const std::string& host);
-
- // Records that |cert| is not permitted to be used for |host| in the future.
- void AllowCertForHost(net::X509Certificate* cert, const std::string& host);
-
- // Queries whether |cert| is allowed or denied for |host|.
- net::X509Certificate::Policy::Judgment QueryPolicy(
- net::X509Certificate* cert, const std::string& host);
-
- // Allow mixed/unsafe content to be visible (non filtered) for the specified
- // URL.
- // Note that the current implementation allows on a host name basis.
- void AllowShowInsecureContentForURL(const GURL& url);
-
- // Returns whether the specified URL is allowed to show insecure (mixed or
- // unsafe) content.
- bool CanShowInsecureContent(const GURL& url);
-
- private:
- // Certificate policies for each host.
- std::map<std::string, net::X509Certificate::Policy> cert_policy_for_host_;
-
- // Domains for which it is OK to show insecure content.
- std::set<std::string> can_show_insecure_content_for_host_;
-
- DISALLOW_COPY_AND_ASSIGN(SSLHostState);
-};
-
-#endif // CHROME_BROWSER_SSL_SSL_HOST_STATE_H_
diff --git a/chrome/browser/ssl/ssl_manager.cc b/chrome/browser/ssl/ssl_manager.cc
index 195d25e..910d43f 100644
--- a/chrome/browser/ssl/ssl_manager.cc
+++ b/chrome/browser/ssl/ssl_manager.cc
@@ -12,7 +12,6 @@
#include "chrome/browser/renderer_host/render_view_host.h"
#include "chrome/browser/renderer_host/resource_request_details.h"
#include "chrome/browser/ssl/ssl_error_info.h"
-#include "chrome/browser/ssl/ssl_host_state.h"
#include "chrome/browser/tab_contents/navigation_controller.h"
#include "chrome/browser/tab_contents/navigation_entry.h"
#include "chrome/browser/tab_contents/provisional_load_details.h"
@@ -44,14 +43,14 @@
class SSLInfoBarDelegate : public ConfirmInfoBarDelegate {
public:
- SSLInfoBarDelegate(TabContents* contents,
- const std::wstring message,
- const std::wstring& button_label,
- Task* task)
- : ConfirmInfoBarDelegate(contents),
- message_(message),
- button_label_(button_label),
- task_(task) {
+ SSLInfoBarDelegate(TabContents* contents,
+ const std::wstring message,
+ const std::wstring& button_label,
+ Task* task)
+ : ConfirmInfoBarDelegate(contents),
+ message_(message),
+ button_label_(button_label),
+ task_(task) {
}
virtual ~SSLInfoBarDelegate() {}
@@ -102,8 +101,7 @@ void SSLManager::RegisterUserPrefs(PrefService* prefs) {
SSLManager::SSLManager(NavigationController* controller, Delegate* delegate)
: delegate_(delegate),
- controller_(controller),
- ssl_host_state_(controller->profile()->GetSSLHostState()) {
+ controller_(controller) {
DCHECK(controller_);
// If do delegate is supplied, use the default policy.
@@ -193,27 +191,33 @@ void SSLManager::AddMessageToConsole(const std::wstring& msg,
void SSLManager::DenyCertForHost(net::X509Certificate* cert,
const std::string& host) {
// Remember that we don't like this cert for this host.
- ssl_host_state_->DenyCertForHost(cert, host);
+ // TODO(abarth): Do we want to persist this information in the user's profile?
+ cert_policy_for_host_[host].Deny(cert);
}
// Delegate API method.
void SSLManager::AllowCertForHost(net::X509Certificate* cert,
const std::string& host) {
- ssl_host_state_->AllowCertForHost(cert, host);
+ // Remember that we do like this cert for this host.
+ // TODO(abarth): Do we want to persist this information in the user's profile?
+ cert_policy_for_host_[host].Allow(cert);
}
// Delegate API method.
net::X509Certificate::Policy::Judgment SSLManager::QueryPolicy(
net::X509Certificate* cert, const std::string& host) {
- return ssl_host_state_->QueryPolicy(cert, host);
+ // TODO(abarth): Do we want to read this information from the user's profile?
+ return cert_policy_for_host_[host].Check(cert);
}
bool SSLManager::CanShowInsecureContent(const GURL& url) {
- return ssl_host_state_->CanShowInsecureContent(url);
+ // TODO(jcampan): Do we want to read this information from the user's profile?
+ return (can_show_insecure_content_for_host_.find(url.host()) !=
+ can_show_insecure_content_for_host_.end());
}
void SSLManager::AllowShowInsecureContentForURL(const GURL& url) {
- ssl_host_state_->AllowShowInsecureContentForURL(url);
+ can_show_insecure_content_for_host_.insert(url.host());
}
bool SSLManager::ProcessedSSLErrorFromRequest() const {
@@ -605,7 +609,7 @@ void SSLManager::DidCommitProvisionalLoad(
// If the frame has been blocked we keep our security style as
// authenticated in that case as nothing insecure is actually showing or
// loaded.
- if (!details->is_content_filtered &&
+ if (!details->is_content_filtered &&
!details->entry->ssl().has_mixed_content()) {
details->entry->ssl().set_has_mixed_content();
changed = true;
diff --git a/chrome/browser/ssl/ssl_manager.h b/chrome/browser/ssl/ssl_manager.h
index 0b1842e..2c013a9 100644
--- a/chrome/browser/ssl/ssl_manager.h
+++ b/chrome/browser/ssl/ssl_manager.h
@@ -2,12 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_SSL_SSL_MANAGER_H_
-#define CHROME_BROWSER_SSL_SSL_MANAGER_H_
+#ifndef CHROME_BROWSER_SSL_MANAGER_H_
+#define CHROME_BROWSER_SSL_MANAGER_H_
#include <string>
#include <map>
-#include <vector>
#include "base/basictypes.h"
#include "base/observer_list.h"
@@ -33,7 +32,6 @@ class PrefService;
class ResourceRedirectDetails;
class ResourceRequestDetails;
class SSLErrorInfo;
-class SSLHostState;
class Task;
class URLRequest;
class WebContents;
@@ -61,7 +59,7 @@ class SSLManager : public NotificationObserver {
// necessary for ensuring the instance is not leaked.
class ErrorHandler : public base::RefCountedThreadSafe<ErrorHandler> {
public:
- virtual ~ErrorHandler() { }
+ virtual ~ErrorHandler() { }
// Find the appropriate SSLManager for the URLRequest and begin handling
// this error.
@@ -73,7 +71,7 @@ class SSLManager : public NotificationObserver {
const GURL& request_url() const { return request_url_; }
// Call on the UI thread.
- SSLManager* manager() const { return manager_; }
+ SSLManager* manager() const { return manager_; };
// Returns the WebContents this object is associated with. Should be
// called from the UI thread.
@@ -164,8 +162,8 @@ class SSLManager : public NotificationObserver {
const GURL request_url_; // The URL that we requested.
// Should only be accessed on the IO thread
- bool request_has_been_notified_; // A flag to make sure we notify the
- // URLRequest exactly once.
+ bool request_has_been_notified_; // A flag to make sure we notify the
+ // URLRequest exactly once.
DISALLOW_EVIL_CONSTRUCTORS(ErrorHandler);
};
@@ -200,7 +198,7 @@ class SSLManager : public NotificationObserver {
// These read-only members can be accessed on any thread.
net::SSLInfo ssl_info_;
- const int cert_error_; // The error we represent.
+ const int cert_error_; // The error we represent.
// What kind of resource is associated with the requested that generated
// that error.
@@ -339,7 +337,7 @@ class SSLManager : public NotificationObserver {
// Called when a mixed-content sub-resource request has been detected. The
// request is not started yet. The SSLManager will make a decision on whether
// to filter that request's content (with the filter_policy flag).
- // TODO(jcampan): Implement a way to just cancel the request. This is not
+ // TODO (jcampan): Implement a way to just cancel the request. This is not
// straight-forward as canceling a request that has not been started will
// not remove from the pending_requests_ of the ResourceDispatcherHost.
// Called on the IO thread.
@@ -400,25 +398,24 @@ class SSLManager : public NotificationObserver {
// in an info-bar.
struct SSLMessageInfo {
public:
- explicit SSLMessageInfo(const std::wstring& text)
+ explicit SSLMessageInfo(const std::wstring& text)
: message(text),
action(NULL) { }
-
- SSLMessageInfo(const std::wstring& message,
- const std::wstring& link_text,
- Task* action)
+ SSLMessageInfo(const std::wstring& message,
+ const std::wstring& link_text,
+ Task* action)
: message(message), link_text(link_text), action(action) { }
- // Overridden so that std::find works.
- bool operator==(const std::wstring& other_message) const {
- // We are uniquing SSLMessageInfo by their message only.
- return message == other_message;
- }
+ // Overridden so that std::find works.
+ bool operator==(const std::wstring& other_message) const {
+ // We are uniquing SSLMessageInfo by their message only.
+ return message == other_message;
+ }
- std::wstring message;
- std::wstring link_text;
- Task* action;
- };
+ std::wstring message;
+ std::wstring link_text;
+ Task* action;
+ };
// Entry points for notifications to which we subscribe. Note that
// DidCommitProvisionalLoad uses the abstract NotificationDetails type since
@@ -450,8 +447,11 @@ class SSLManager : public NotificationObserver {
// Handles registering notifications with the NotificationService.
NotificationRegistrar registrar_;
- // SSL state specific for each host.
- SSLHostState* ssl_host_state_;
+ // Certificate policies for each host.
+ std::map<std::string, net::X509Certificate::Policy> cert_policy_for_host_;
+
+ // Domains for which it is OK to show insecure content.
+ std::set<std::string> can_show_insecure_content_for_host_;
// The list of messages that should be displayed (in info bars) when the page
// currently loading had loaded.
@@ -460,4 +460,5 @@ class SSLManager : public NotificationObserver {
DISALLOW_COPY_AND_ASSIGN(SSLManager);
};
-#endif // CHROME_BROWSER_SSL_SSL_MANAGER_H_
+#endif // CHROME_BROWSER_SSL_MANAGER_H_
+