Index: chrome/browser/ui/views/certificate_viewer_win.cc |
diff --git a/chrome/browser/ui/views/certificate_viewer_win.cc b/chrome/browser/ui/views/certificate_viewer_win.cc |
index fa345391d1eb89c4dec3a0a3ba4532f566aa4c20..4c4fd8f5617b69992184b3d020e05a248f6ae409 100644 |
--- a/chrome/browser/ui/views/certificate_viewer_win.cc |
+++ b/chrome/browser/ui/views/certificate_viewer_win.cc |
@@ -9,6 +9,7 @@ |
#pragma comment(lib, "cryptui.lib") |
#include "base/logging.h" |
+#include "base/message_loop/message_loop.h" |
#include "net/cert/x509_certificate.h" |
#if defined(USE_AURA) |
@@ -40,6 +41,11 @@ void ShowCertificateViewerImpl(content::WebContents* web_contents, |
view_info.rghStores = &cert_store; |
BOOL properties_changed; |
+ // We must allow nested tasks to dispatch so that, e.g. gpu tasks are |
+ // processed for painting. This allows a second window to continue painting |
+ // while the the certificate dialog is open. |
+ base::MessageLoop::ScopedNestableTaskAllower allow( |
+ base::MessageLoop::current()); |
// This next call blocks but keeps processing windows messages, making it |
// modal to the browser window. |
BOOL rv = ::CryptUIDlgViewCertificate(&view_info, &properties_changed); |