| Index: chrome/browser/renderer_host/resource_message_filter.cc
|
| diff --git a/chrome/browser/renderer_host/resource_message_filter.cc b/chrome/browser/renderer_host/resource_message_filter.cc
|
| index 2914388dc990dd43f47a6896d9e1daa47b07720f..eb32449a8664fb9f11c6b3745c1ea3088b31bc24 100644
|
| --- a/chrome/browser/renderer_host/resource_message_filter.cc
|
| +++ b/chrome/browser/renderer_host/resource_message_filter.cc
|
| @@ -35,6 +35,9 @@
|
| #include "chrome/browser/geolocation/geolocation_permission_context.h"
|
| #include "chrome/browser/geolocation/geolocation_dispatcher_host.h"
|
| #include "chrome/browser/gpu_process_host.h"
|
| +#if defined(USE_NSS) && defined(TOOLKIT_USES_GTK)
|
| +#include "chrome/browser/gtk/pk11_password_dialog.h"
|
| +#endif // defined(USE_NSS) && defined(TOOLKIT_USES_GTK)
|
| #include "chrome/browser/host_zoom_map.h"
|
| #include "chrome/browser/in_process_webkit/dom_storage_dispatcher_host.h"
|
| #include "chrome/browser/in_process_webkit/indexed_db_dispatcher_host.h"
|
| @@ -1612,6 +1615,13 @@ void ResourceMessageFilter::OnKeygen(uint32 key_size_index,
|
| Send(reply_msg);
|
| return;
|
| }
|
| +
|
| + // Disable the hang monitor while we generate a key. There may also
|
| + // be a dialog with NSS and GTK.
|
| + //
|
| + // TODO(davidben): This won't work until we figure out the render
|
| + // view id.
|
| + CallRenderViewHost(id(), FIXME, &RenderViewHost::StopHangMonitorTimeout);
|
| }
|
|
|
| void ResourceMessageFilter::OnKeygenOnWorkerThread(
|
| @@ -1626,6 +1636,13 @@ void ResourceMessageFilter::OnKeygenOnWorkerThread(
|
| // Generate a signed public key and challenge, then send it back.
|
| net::KeygenHandler keygen_handler(key_size_in_bits, challenge_string, url);
|
|
|
| +#if defined(USE_NSS) && defined(TOOLKIT_USES_GTK)
|
| + // Attach a password delegate so we can authenticate.
|
| + keygen_handler.set_pk11_password_delegate(
|
| + browser::NewPK11BlockingDialogDelegate(browser::kPK11PasswordKeygen,
|
| + url));
|
| +#endif // defined(USE_NSS) && defined(TOOLKIT_USES_GTK)
|
| +
|
| ViewHostMsg_Keygen::WriteReplyParams(
|
| reply_msg,
|
| keygen_handler.GenKeyAndSignChallenge());
|
| @@ -1633,6 +1650,12 @@ void ResourceMessageFilter::OnKeygenOnWorkerThread(
|
| ChromeThread::PostTask(
|
| ChromeThread::IO, FROM_HERE,
|
| NewRunnableMethod(this, &ResourceMessageFilter::Send, reply_msg));
|
| +
|
| + // Okay, the hang monitor can be enabled again.
|
| + //
|
| + // TODO(davidben): This won't work until we figure out the render
|
| + // view id.
|
| + CallRenderViewHost(id(), FIXME, &RenderViewHost::RestartHangMonitorTimeout);
|
| }
|
|
|
| #if defined(USE_TCMALLOC)
|
|
|