diff options
author | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-13 22:42:47 +0000 |
---|---|---|
committer | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-13 22:42:47 +0000 |
commit | cbab76d1c74c93837bc76298d1a2e43646154194 (patch) | |
tree | 7f1bdcd891e670b67eeac2993730c580698048eb /chrome/browser/ssl_blocking_page.h | |
parent | 3c1e4d080a8e69fb973638d1360d4d5dd0d2e4d5 (diff) | |
download | chromium_src-cbab76d1c74c93837bc76298d1a2e43646154194.zip chromium_src-cbab76d1c74c93837bc76298d1a2e43646154194.tar.gz chromium_src-cbab76d1c74c93837bc76298d1a2e43646154194.tar.bz2 |
This is the first pass at refactoring the interstitial page.
The SSL and malware blocking pages were doing similar things in 2 different classes.
There is now a base class called InterstitialPage that contains the common logic.
As part of that refactoring, the safe browsing was changed so that the SafeBrowsingBlockingPage is only used from the UI thread.
This CL also adds transient entries to the navigation controller: that type of entry gets deleted as soon as a navigation occurs. It is used by interstitial that need to create such a temporary entry while they show.
BUG=3013
TEST=Run the unit tests and ui tests.
Review URL: http://codereview.chromium.org/6311
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3324 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ssl_blocking_page.h')
-rw-r--r-- | chrome/browser/ssl_blocking_page.h | 63 |
1 files changed, 16 insertions, 47 deletions
diff --git a/chrome/browser/ssl_blocking_page.h b/chrome/browser/ssl_blocking_page.h index 9663124..0b4e9c6 100644 --- a/chrome/browser/ssl_blocking_page.h +++ b/chrome/browser/ssl_blocking_page.h @@ -2,18 +2,19 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_SSL_BLOCKING_PAGE_H__ -#define CHROME_BROWSER_SSL_BLOCKING_PAGE_H__ +#ifndef CHROME_BROWSER_SSL_BLOCKING_PAGE_H_ +#define CHROME_BROWSER_SSL_BLOCKING_PAGE_H_ #include <string> +#include "chrome/browser/interstitial_page.h" #include "chrome/browser/ssl_manager.h" #include "chrome/views/decision.h" // This class is responsible for showing/hiding the interstitial page that is // shown when a certificate error happens. // It deletes itself when the interstitial page is closed. -class SSLBlockingPage : public NotificationObserver { +class SSLBlockingPage : public InterstitialPage { public: // An interface that classes that want to interact with the SSLBlockingPage // should implement. @@ -30,45 +31,28 @@ class SSLBlockingPage : public NotificationObserver { virtual void OnAllowCertificate(SSLManager::CertError* error) = 0; }; - SSLBlockingPage(SSLManager::CertError* error, - Delegate* delegate); + SSLBlockingPage(SSLManager::CertError* error, Delegate* delegate); virtual ~SSLBlockingPage(); - void Show(); - - virtual void Observe(NotificationType type, - const NotificationSource& source, - const NotificationDetails& details); - - // Invoked when the user clicks on proceed. - // Warning: 'this' has been deleted when this method returns. - void Proceed(); - - // Invoked when the user clicks on "take me out of here". - // Warning: 'this' has been deleted when this method returns. - void DontProceed(); - - // Retrieves the SSLBlockingPage if any associated with the specified - // |tab_contents| (used by ui tests). - static SSLBlockingPage* GetSSLBlockingPage(TabContents* tab_contents); - // A method that sets strings in the specified dictionary from the passed // vector so that they can be used to resource the ssl_roadblock.html/ // ssl_error.html files. // Note: there can be up to 5 strings in |extra_info|. static void SetExtraInfo(DictionaryValue* strings, const std::vector<std::wstring>& extra_info); - private: - typedef std::map<TabContents*,SSLBlockingPage*> SSLBlockingPageMap; - void NotifyDenyCertificate(); + protected: + // InterstitialPage implementation. + virtual std::string GetHTMLContents(); + virtual void CommandReceived(const std::string& command); + virtual void UpdateEntry(NavigationEntry* entry); + virtual void Proceed(); + virtual void DontProceed(); + private: + void NotifyDenyCertificate(); void NotifyAllowCertificate(); - // Initializes tab_to_blocking_page_ in a thread-safe manner. Should be - // called before accessing tab_to_blocking_page_. - static void InitSSLBlockingPageMap(); - // The error we represent. We will either call CancelRequest() or // ContinueRequest() on this object. scoped_refptr<SSLManager::CertError> error_; @@ -80,23 +64,8 @@ class SSLBlockingPage : public NotificationObserver { // A flag to indicate if we've notified |delegate_| of the user's decision. bool delegate_has_been_notified_; - // A flag used to know whether we should remove the last navigation entry from - // the navigation controller. - bool remove_last_entry_; - - // The tab in which we are displayed. - TabContents* tab_; - // Whether we created a fake navigation entry as part of showing the - // interstitial page. - bool created_nav_entry_; - - // We keep a map of the various blocking pages shown as the UI tests need to - // be able to retrieve them. - static SSLBlockingPageMap* tab_to_blocking_page_; - - DISALLOW_EVIL_CONSTRUCTORS(SSLBlockingPage); + DISALLOW_COPY_AND_ASSIGN(SSLBlockingPage); }; - -#endif // #ifndef CHROME_BROWSER_SSL_BLOCKING_PAGE_H__ +#endif // #ifndef CHROME_BROWSER_SSL_BLOCKING_PAGE_H_ |