diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-11 20:05:02 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-11 20:05:02 +0000 |
commit | aaa2a6c52ed5a8c6c1e505c58c2a84494395860b (patch) | |
tree | 364f501b5c118598851600d3f0b45e77f855eb8c /content/browser/ssl/ssl_manager.cc | |
parent | 851cecc3c52f089f54dfcc9bcc527c35ad6d1285 (diff) | |
download | chromium_src-aaa2a6c52ed5a8c6c1e505c58c2a84494395860b.zip chromium_src-aaa2a6c52ed5a8c6c1e505c58c2a84494395860b.tar.gz chromium_src-aaa2a6c52ed5a8c6c1e505c58c2a84494395860b.tar.bz2 |
Revert "content: convert SSL notifications to observer usage"
Caused new crashes.
TBR=jam
BUG=175308, 170921
Review URL: https://codereview.chromium.org/12220100
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@181738 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/ssl/ssl_manager.cc')
-rw-r--r-- | content/browser/ssl/ssl_manager.cc | 81 |
1 files changed, 27 insertions, 54 deletions
diff --git a/content/browser/ssl/ssl_manager.cc b/content/browser/ssl/ssl_manager.cc index 18c64c8..d41260e 100644 --- a/content/browser/ssl/ssl_manager.cc +++ b/content/browser/ssl/ssl_manager.cc @@ -4,10 +4,7 @@ #include "content/browser/ssl/ssl_manager.h" -#include <set> - #include "base/bind.h" -#include "base/supports_user_data.h" #include "base/utf_string_conversions.h" #include "content/browser/loader/resource_dispatcher_host_impl.h" #include "content/browser/loader/resource_request_info_impl.h" @@ -17,7 +14,6 @@ #include "content/browser/web_contents/navigation_entry_impl.h" #include "content/browser/web_contents/web_contents_impl.h" #include "content/common/ssl_status_serialization.h" -#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/load_from_memory_cache_details.h" #include "content/public/browser/navigation_details.h" @@ -29,25 +25,6 @@ namespace content { -namespace { - -const char kSSLManagerKeyName[] = "content_ssl_manager"; - -class SSLManagerSet : public base::SupportsUserData::Data { - public: - SSLManagerSet() { - } - - std::set<SSLManager*>& get() { return set_; } - - private: - std::set<SSLManager*> set_; - - DISALLOW_COPY_AND_ASSIGN(SSLManagerSet); -}; - -} // namespace - // static void SSLManager::OnSSLCertificateError( const base::WeakPtr<SSLErrorHandler::Delegate>& delegate, @@ -84,15 +61,12 @@ void SSLManager::OnSSLCertificateError( } // static -void SSLManager::NotifySSLInternalStateChanged(BrowserContext* context) { - SSLManagerSet* managers = static_cast<SSLManagerSet*>( - context->GetUserData(kSSLManagerKeyName)); - - for (std::set<SSLManager*>::iterator i = managers->get().begin(); - i != managers->get().end(); ++i) { - (*i)->UpdateEntry(NavigationEntryImpl::FromNavigationEntry( - (*i)->controller()->GetActiveEntry())); - } +void SSLManager::NotifySSLInternalStateChanged( + NavigationControllerImpl* controller) { + NotificationService::current()->Notify( + NOTIFICATION_SSL_INTERNAL_STATE_CHANGED, + Source<BrowserContext>(controller->GetBrowserContext()), + NotificationService::NoDetails()); } SSLManager::SSLManager(NavigationControllerImpl* controller) @@ -111,20 +85,13 @@ SSLManager::SSLManager(NavigationControllerImpl* controller) registrar_.Add( this, NOTIFICATION_LOAD_FROM_MEMORY_CACHE, Source<NavigationController>(controller_)); - - SSLManagerSet* managers = static_cast<SSLManagerSet*>( - controller_->GetBrowserContext()->GetUserData(kSSLManagerKeyName)); - if (!managers) { - managers = new SSLManagerSet; - controller_->GetBrowserContext()->SetUserData(kSSLManagerKeyName, managers); - } - managers->get().insert(this); + registrar_.Add( + this, NOTIFICATION_SSL_INTERNAL_STATE_CHANGED, + Source<BrowserContext>( + controller_->GetBrowserContext())); } SSLManager::~SSLManager() { - SSLManagerSet* managers = static_cast<SSLManagerSet*>( - controller_->GetBrowserContext()->GetUserData(kSSLManagerKeyName)); - managers->get().erase(this); } void SSLManager::DidCommitProvisionalLoad( @@ -161,16 +128,10 @@ void SSLManager::DidCommitProvisionalLoad( UpdateEntry(entry); } -void SSLManager::DidDisplayInsecureContent() { - UpdateEntry( - NavigationEntryImpl::FromNavigationEntry(controller_->GetActiveEntry())); -} - void SSLManager::DidRunInsecureContent(const std::string& security_origin) { - NavigationEntryImpl* navigation_entry = - NavigationEntryImpl::FromNavigationEntry(controller_->GetActiveEntry()); - policy()->DidRunInsecureContent(navigation_entry, security_origin); - UpdateEntry(navigation_entry); + policy()->DidRunInsecureContent( + NavigationEntryImpl::FromNavigationEntry(controller_->GetActiveEntry()), + security_origin); } void SSLManager::Observe(int type, @@ -190,6 +151,9 @@ void SSLManager::Observe(int type, DidLoadFromMemoryCache( Details<LoadFromMemoryCacheDetails>(details).ptr()); break; + case NOTIFICATION_SSL_INTERNAL_STATE_CHANGED: + DidChangeSSLInternalState(); + break; default: NOTREACHED() << "The SSLManager received an unexpected notification."; } @@ -234,6 +198,11 @@ void SSLManager::DidReceiveResourceRedirect(ResourceRedirectDetails* details) { // HTTP request to https://attacker.com/payload.js. } +void SSLManager::DidChangeSSLInternalState() { + UpdateEntry( + NavigationEntryImpl::FromNavigationEntry(controller_->GetActiveEntry())); +} + void SSLManager::UpdateEntry(NavigationEntryImpl* entry) { // We don't always have a navigation entry to update, for example in the // case of the Web Inspector. @@ -244,8 +213,12 @@ void SSLManager::UpdateEntry(NavigationEntryImpl* entry) { policy()->UpdateEntry(entry, controller_->web_contents()); - if (!entry->GetSSL().Equals(original_ssl_status)) - controller_->web_contents()->DidChangeVisibleSSLState(); + if (!entry->GetSSL().Equals(original_ssl_status)) { + NotificationService::current()->Notify( + NOTIFICATION_SSL_VISIBLE_STATE_CHANGED, + Source<NavigationController>(controller_), + NotificationService::NoDetails()); + } } } // namespace content |