Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6444)

Unified Diff: chrome/browser/ui/cocoa/certificate_viewer_mac_browsertest.mm

Issue 2039823002: MacViews: Refactor certificate viewer tests to work for MacViews browser. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@certview
Patch Set: Rebase onto master & add ignoreMouseEvents fix for hiding/reshowing the certificate viewer. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/certificate_viewer_mac_browsertest.mm
diff --git a/chrome/browser/ui/cocoa/certificate_viewer_mac_browsertest.mm b/chrome/browser/ui/cocoa/certificate_viewer_mac_browsertest.mm
index fd425108141b8bbf6644436e80979904e6c07df2..f5247566b08992f516e93f3163c0a8fb29c498c8 100644
--- a/chrome/browser/ui/cocoa/certificate_viewer_mac_browsertest.mm
+++ b/chrome/browser/ui/cocoa/certificate_viewer_mac_browsertest.mm
@@ -20,21 +20,38 @@
using web_modal::WebContentsModalDialogManager;
-typedef InProcessBrowserTest SSLCertificateViewerCocoaTest;
+typedef InProcessBrowserTest SSLCertificateViewerMacTest;
tapted 2016/06/17 06:11:33 nit: using SSLCertificateViewerMacTest = InProcess
Patti Lor 2016/06/20 03:42:28 Done.
namespace {
+
scoped_refptr<net::X509Certificate> GetSampleCertificate() {
return net::ImportCertFromFile(net::GetTestCertsDirectory(),
"mit.davidben.der");
}
+
+void CheckCertificateViewerVisibility(NSWindow* overlay_window,
+ NSWindow* dialog_sheet,
+ bool visible) {
+ CGFloat alpha = visible ? 1.0 : 0.0;
+ BOOL ignore_events = visible ? NO : YES;
+
+ SCOPED_TRACE(testing::Message() << "visible=" << visible);
+ // The overlay window underneath the certificate viewer should block mouse
+ // events only if the certificate viewer is visible.
+ EXPECT_EQ(ignore_events, [overlay_window ignoresMouseEvents]);
+ // Check certificate viewer sheet visibility and if it accepts mouse events.
+ EXPECT_EQ(alpha, [dialog_sheet alphaValue]);
+ EXPECT_EQ(ignore_events, [dialog_sheet ignoresMouseEvents]);
+}
+
} // namespace
-IN_PROC_BROWSER_TEST_F(SSLCertificateViewerCocoaTest, Basic) {
+IN_PROC_BROWSER_TEST_F(SSLCertificateViewerMacTest, Basic) {
scoped_refptr<net::X509Certificate> cert = GetSampleCertificate();
ASSERT_TRUE(cert.get());
content::WebContents* web_contents =
browser()->tab_strip_model()->GetActiveWebContents();
- gfx::NativeWindow window = web_contents->GetTopLevelNativeWindow();
+ NSWindow* window = web_contents->GetTopLevelNativeWindow();
WebContentsModalDialogManager* web_contents_modal_dialog_manager =
WebContentsModalDialogManager::FromWebContents(web_contents);
EXPECT_FALSE(web_contents_modal_dialog_manager->IsDialogActive());
@@ -52,29 +69,41 @@ IN_PROC_BROWSER_TEST_F(SSLCertificateViewerCocoaTest, Basic) {
}
// Test that switching to another tab correctly hides the sheet.
-IN_PROC_BROWSER_TEST_F(SSLCertificateViewerCocoaTest, HideShow) {
+IN_PROC_BROWSER_TEST_F(SSLCertificateViewerMacTest, HideShow) {
scoped_refptr<net::X509Certificate> cert = GetSampleCertificate();
ASSERT_TRUE(cert.get());
content::WebContents* web_contents =
browser()->tab_strip_model()->GetActiveWebContents();
- SSLCertificateViewerCocoa* viewer =
- [[SSLCertificateViewerCocoa alloc] initWithCertificate:cert.get()];
- [viewer displayForWebContents:web_contents];
+ NSWindow* window = web_contents->GetTopLevelNativeWindow();
+ WebContentsModalDialogManager* web_contents_modal_dialog_manager =
+ WebContentsModalDialogManager::FromWebContents(web_contents);
+ // Account for any child windows that might be present before the certificate
+ // viewer is open.
+ NSUInteger num_child_windows = [[window childWindows] count];
+ ShowCertificateViewer(web_contents, window, cert.get());
content::RunAllPendingInMessageLoop();
+ EXPECT_TRUE(web_contents_modal_dialog_manager->IsDialogActive());
- NSWindow* sheetWindow = [[viewer overlayWindow] attachedSheet];
- NSRect sheetFrame = [sheetWindow frame];
- EXPECT_EQ(1.0, [sheetWindow alphaValue]);
+ EXPECT_EQ(num_child_windows + 1, [[window childWindows] count]);
+ // Assume the last child is the overlay window that was added.
+ NSWindow* overlay_window = [[window childWindows] lastObject];
+ NSWindow* dialog_sheet = [overlay_window attachedSheet];
+ EXPECT_TRUE(dialog_sheet);
+ NSRect sheet_frame = [dialog_sheet frame];
- // Switch to another tab and verify that the sheet is hidden.
+ // Verify the certificate viewer is showing and accepts mouse events.
+ CheckCertificateViewerVisibility(overlay_window, dialog_sheet, true);
+
+ // Switch to another tab and verify that |overlay_window| and |dialog_sheet|
+ // are not blocking mouse events, and |dialog_sheet| is hidden.
AddBlankTabAndShow(browser());
- EXPECT_EQ(0.0, [sheetWindow alphaValue]);
- EXPECT_NSEQ(ui::kWindowSizeDeterminedLater, [sheetWindow frame]);
+ CheckCertificateViewerVisibility(overlay_window, dialog_sheet, false);
+ EXPECT_NSEQ(sheet_frame, [dialog_sheet frame]);
// Switch back and verify that the sheet is shown.
chrome::SelectNumberedTab(browser(), 0);
- EXPECT_EQ(1.0, [sheetWindow alphaValue]);
- EXPECT_NSEQ(sheetFrame, [sheetWindow frame]);
+ content::RunAllPendingInMessageLoop();
+ CheckCertificateViewerVisibility(overlay_window, dialog_sheet, true);
}

Powered by Google App Engine
This is Rietveld 408576698