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_COCOA_SSL_CLIENT_CERTIFICATE_SELECTOR_COCOA_H_ 6 #define CHROME_BROWSER_UI_COCOA_SSL_CLIENT_CERTIFICATE_SELECTOR_COCOA_H_ 7 8 #import <Cocoa/Cocoa.h> 9 #include <vector> 10 11 #include "base/mac/scoped_cftyperef.h" 12 #include "base/mac/scoped_nsobject.h" 13 #include "base/memory/ref_counted.h" 14 #include "base/memory/scoped_ptr.h" 15 #include "chrome/browser/ssl/ssl_client_certificate_selector.h" 16 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_sheet.h" 17 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_sheet_controller.h" 18 19 class ConstrainedWindowMac; 20 @class SFChooseIdentityPanel; 21 class SSLClientAuthObserverCocoaBridge; 22 23 @interface SSLClientCertificateSelectorCocoa 24 : NSObject<ConstrainedWindowSheet> { 25 @private 26 // The list of identities offered to the user. 27 base::ScopedCFTypeRef<CFMutableArrayRef> identities_; 28 // The corresponding list of certificates. 29 std::vector<scoped_refptr<net::X509Certificate> > certificates_; 30 // A C++ object to bridge SSLClientAuthObserver notifications to us. 31 scoped_ptr<SSLClientAuthObserverCocoaBridge> observer_; 32 base::scoped_nsobject<SFChooseIdentityPanel> panel_; 33 scoped_ptr<ConstrainedWindowMac> constrainedWindow_; 34 base::scoped_nsobject<NSWindow> overlayWindow_; 35 BOOL closePending_; 36 // A copy of the sheet's frame used to restore on show. 37 NSRect oldSheetFrame_; 38 // A copy of the sheet's |autoresizesSubviews| flag to restore on show. 39 BOOL oldResizesSubviews_; 40 } 41 42 @property (readonly, nonatomic) SFChooseIdentityPanel* panel; 43 44 - (id)initWithNetworkSession:(const net::HttpNetworkSession*)networkSession 45 certRequestInfo:(net::SSLCertRequestInfo*)certRequestInfo 46 callback:(const chrome::SelectCertificateCallback&)callback; 47 - (void)displayForWebContents:(content::WebContents*)webContents; 48 - (void)closeWebContentsModalDialog; 49 50 - (NSWindow*)overlayWindow; 51 52 @end 53 54 #endif // CHROME_BROWSER_UI_COCOA_SSL_CLIENT_CERTIFICATE_SELECTOR_COCOA_H_ 55