Index: chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa_browsertest.mm |
diff --git a/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa_browsertest.mm b/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa_browsertest.mm |
index a0c71106e6692e7941e9f90ba3cd50fc2e7e4115..26842361f3746e8e902040222eca8907162c3ecf 100644 |
--- a/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa_browsertest.mm |
+++ b/chrome/browser/ui/cocoa/ssl_client_certificate_selector_cocoa_browsertest.mm |
@@ -8,12 +8,14 @@ |
#include "base/bind.h" |
#import "base/mac/mac_util.h" |
+#include "base/macros.h" |
#include "chrome/browser/ssl/ssl_client_certificate_selector.h" |
#include "chrome/browser/ssl/ssl_client_certificate_selector_test.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_commands.h" |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
#include "components/web_modal/web_contents_modal_dialog_manager.h" |
+#include "content/public/browser/client_certificate_delegate.h" |
#include "content/public/browser/web_contents.h" |
#include "content/public/test/test_utils.h" |
#include "ui/base/cocoa/window_size_constants.h" |
@@ -22,12 +24,33 @@ using web_modal::WebContentsModalDialogManager; |
namespace { |
-void OnCertificateSelected(net::X509Certificate** out_cert, |
- int* out_count, |
- net::X509Certificate* cert) { |
- *out_cert = cert; |
- ++(*out_count); |
-} |
+class TestClientCertificateDelegate |
+ : public content::ClientCertificateDelegate { |
+ public: |
+ // Creates a ClientCertificateDelegate that sets |*destroyed| to true on |
+ // destruction. |
+ explicit TestClientCertificateDelegate(bool* destroyed) |
+ : destroyed_(destroyed) {} |
+ |
+ ~TestClientCertificateDelegate() override { |
+ if (destroyed_ != nullptr) |
+ *destroyed_ = true; |
+ } |
+ |
+ // content::ClientCertificateDelegate. |
+ void ContinueWithCertificate(net::X509Certificate* cert) override { |
+ // TODO(davidben): Add a test which explicitly tests selecting a |
+ // certificate, or selecting no certificate, since closing the dialog |
+ // (normally by closing the tab) is not the same as explicitly selecting no |
+ // certificate. |
+ ADD_FAILURE() << "Certificate selected"; |
+ } |
+ |
+ private: |
+ bool* destroyed_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TestClientCertificateDelegate); |
+}; |
} // namespace |
@@ -46,15 +69,13 @@ IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorCocoaTest, DISABLED_Basic) { |
WebContentsModalDialogManager::FromWebContents(web_contents); |
EXPECT_FALSE(web_contents_modal_dialog_manager->IsDialogActive()); |
- net::X509Certificate* cert = NULL; |
- int count = 0; |
- SSLClientCertificateSelectorCocoa* selector = |
- [[SSLClientCertificateSelectorCocoa alloc] |
- initWithBrowserContext:web_contents->GetBrowserContext() |
- certRequestInfo:auth_requestor_->cert_request_info_.get() |
- callback:base::Bind(&OnCertificateSelected, |
- &cert, |
- &count)]; |
+ bool destroyed = false; |
+ SSLClientCertificateSelectorCocoa* selector = [ |
+ [SSLClientCertificateSelectorCocoa alloc] |
+ initWithBrowserContext:web_contents->GetBrowserContext() |
+ certRequestInfo:auth_requestor_->cert_request_info_.get() |
+ delegate:make_scoped_ptr(new TestClientCertificateDelegate( |
+ &destroyed))]; |
[selector displayForWebContents:web_contents]; |
content::RunAllPendingInMessageLoop(); |
EXPECT_TRUE([selector panel]); |
@@ -66,19 +87,19 @@ IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorCocoaTest, DISABLED_Basic) { |
content::RunAllPendingInMessageLoop(); |
EXPECT_FALSE(web_contents_modal_dialog_manager->IsDialogActive()); |
- EXPECT_EQ(NULL, cert); |
- EXPECT_EQ(1, count); |
+ EXPECT_TRUE(destroyed); |
} |
// Test that switching to another tab correctly hides the sheet. |
IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorCocoaTest, HideShow) { |
content::WebContents* web_contents = |
browser()->tab_strip_model()->GetActiveWebContents(); |
- SSLClientCertificateSelectorCocoa* selector = |
- [[SSLClientCertificateSelectorCocoa alloc] |
- initWithBrowserContext:web_contents->GetBrowserContext() |
- certRequestInfo:auth_requestor_->cert_request_info_.get() |
- callback:chrome::SelectCertificateCallback()]; |
+ SSLClientCertificateSelectorCocoa* selector = [ |
+ [SSLClientCertificateSelectorCocoa alloc] |
+ initWithBrowserContext:web_contents->GetBrowserContext() |
+ certRequestInfo:auth_requestor_->cert_request_info_.get() |
+ delegate:make_scoped_ptr( |
+ new TestClientCertificateDelegate(nullptr))]; |
[selector displayForWebContents:web_contents]; |
content::RunAllPendingInMessageLoop(); |