| 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 bd1890344066e8cdf56eadf18b30f15e85872a80..058443e78bda54bc8f7e2c80ef0ba9babdd6916a 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
|
| @@ -119,3 +119,57 @@ IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorCocoaTest, HideShow) {
|
| EXPECT_EQ(1.0, [sheetWindow alphaValue]);
|
| EXPECT_FALSE([[selector overlayWindow] ignoresMouseEvents]);
|
| }
|
| +
|
| +@interface DeallocTrackingSSLClientCertificateSelectorCocoa
|
| + : SSLClientCertificateSelectorCocoa
|
| +@property(nonatomic) BOOL* wasDeallocated;
|
| +@end
|
| +
|
| +@implementation DeallocTrackingSSLClientCertificateSelectorCocoa
|
| +@synthesize wasDeallocated = wasDeallocated_;
|
| +
|
| +- (void)dealloc {
|
| + *wasDeallocated_ = true;
|
| + [super dealloc];
|
| +}
|
| +
|
| +@end
|
| +
|
| +// Test that we can't trigger the crash from https://crbug.com/653093
|
| +IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorCocoaTest,
|
| + WorkaroundCrashySierra) {
|
| + BOOL selector_was_deallocated = false;
|
| +
|
| + @autoreleasepool {
|
| + content::WebContents* web_contents =
|
| + browser()->tab_strip_model()->GetActiveWebContents();
|
| + DeallocTrackingSSLClientCertificateSelectorCocoa* selector =
|
| + [[DeallocTrackingSSLClientCertificateSelectorCocoa alloc]
|
| + initWithBrowserContext:web_contents->GetBrowserContext()
|
| + certRequestInfo:auth_requestor_->cert_request_info_.get()
|
| + delegate:nil];
|
| + [selector displayForWebContents:web_contents];
|
| + content::RunAllPendingInMessageLoop();
|
| +
|
| + selector.wasDeallocated = &selector_was_deallocated;
|
| +
|
| + [selector.overlayWindow endSheet:selector.overlayWindow.attachedSheet];
|
| + content::RunAllPendingInMessageLoop();
|
| + }
|
| +
|
| + EXPECT_TRUE(selector_was_deallocated);
|
| +
|
| + // Without the workaround, this will crash on Sierra.
|
| + [[NSNotificationCenter defaultCenter]
|
| + postNotificationName:NSPreferredScrollerStyleDidChangeNotification
|
| + object:nil
|
| + userInfo:@{
|
| + @"NSScrollerStyle" : @(NSScrollerStyleLegacy)
|
| + }];
|
| + [[NSNotificationCenter defaultCenter]
|
| + postNotificationName:NSPreferredScrollerStyleDidChangeNotification
|
| + object:nil
|
| + userInfo:@{
|
| + @"NSScrollerStyle" : @(NSScrollerStyleOverlay)
|
| + }];
|
| +}
|
|
|