ssl_client_certificate_selector.h revision 868fa2fe829687343ffae624259930155e16dbd8
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 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_VIEWS_SSL_CLIENT_CERTIFICATE_SELECTOR_H_ 6#define CHROME_BROWSER_UI_VIEWS_SSL_CLIENT_CERTIFICATE_SELECTOR_H_ 7 8#include <string> 9#include <vector> 10 11#include "base/basictypes.h" 12#include "base/memory/ref_counted.h" 13#include "base/strings/string16.h" 14#include "chrome/browser/ssl/ssl_client_auth_observer.h" 15#include "chrome/browser/ssl/ssl_client_certificate_selector.h" 16#include "ui/views/controls/button/button.h" 17#include "ui/views/controls/table/table_view_observer.h" 18#include "ui/views/view.h" 19#include "ui/views/window/dialog_delegate.h" 20 21// This header file exists only for testing. Chrome should access the 22// certificate selector only through the cross-platform interface 23// chrome/browser/ssl_client_certificate_selector.h. 24 25namespace net { 26class SSLCertRequestInfo; 27class X509Certificate; 28} 29 30namespace views { 31class LabelButton; 32class TableView; 33class Widget; 34} 35 36class CertificateSelectorTableModel; 37 38class SSLClientCertificateSelector : public SSLClientAuthObserver, 39 public views::DialogDelegateView, 40 public views::ButtonListener, 41 public views::TableViewObserver { 42 public: 43 SSLClientCertificateSelector( 44 content::WebContents* web_contents, 45 const net::HttpNetworkSession* network_session, 46 net::SSLCertRequestInfo* cert_request_info, 47 const chrome::SelectCertificateCallback& callback); 48 virtual ~SSLClientCertificateSelector(); 49 50 void Init(); 51 52 net::X509Certificate* GetSelectedCert() const; 53 54 // SSLClientAuthObserver implementation: 55 virtual void OnCertSelectedByNotification() OVERRIDE; 56 57 // DialogDelegateView: 58 virtual bool CanResize() const OVERRIDE; 59 virtual string16 GetWindowTitle() const OVERRIDE; 60 virtual void DeleteDelegate() OVERRIDE; 61 virtual bool IsDialogButtonEnabled(ui::DialogButton button) const OVERRIDE; 62 virtual bool Cancel() OVERRIDE; 63 virtual bool Accept() OVERRIDE; 64 virtual views::NonClientFrameView* CreateNonClientFrameView( 65 views::Widget* widget) OVERRIDE; 66 virtual views::View* GetInitiallyFocusedView() OVERRIDE; 67 virtual views::View* CreateExtraView() OVERRIDE; 68 virtual ui::ModalType GetModalType() const OVERRIDE; 69 70 // views::ButtonListener: 71 virtual void ButtonPressed(views::Button* sender, 72 const ui::Event& event) OVERRIDE; 73 74 // views::TableViewObserver: 75 virtual void OnSelectionChanged() OVERRIDE; 76 virtual void OnDoubleClick() OVERRIDE; 77 78 private: 79 void CreateCertTable(); 80 81 scoped_ptr<CertificateSelectorTableModel> model_; 82 83 content::WebContents* web_contents_; 84 85 views::Widget* window_; 86 views::TableView* table_; 87 views::LabelButton* view_cert_button_; 88 89 DISALLOW_COPY_AND_ASSIGN(SSLClientCertificateSelector); 90}; 91 92#endif // CHROME_BROWSER_UI_VIEWS_SSL_CLIENT_CERTIFICATE_SELECTOR_H_ 93