Skip to content

Commit

Permalink
Create a RenderProcess message class and move keygen to it.
Browse files Browse the repository at this point in the history
Among everything else it does, this reverts commit 5d4a2a9.

BUG=304341
TEST=none

Review URL: https://codereview.chromium.org/1345483002

Cr-Commit-Position: refs/heads/master@{#348674}
  • Loading branch information
avi authored and Commit bot committed Sep 14, 2015
1 parent f72ad72 commit 914d82e
Show file tree
Hide file tree
Showing 10 changed files with 107 additions and 83 deletions.
63 changes: 0 additions & 63 deletions content/browser/frame_host/render_frame_message_filter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

#include "content/browser/frame_host/render_frame_message_filter.h"

#include "base/threading/worker_pool.h"
#include "content/browser/bad_message.h"
#include "content/browser/child_process_security_policy_impl.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
Expand All @@ -14,10 +13,8 @@
#include "content/common/view_messages.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/resource_context.h"
#include "content/public/common/content_constants.h"
#include "gpu/GLES2/gl2extchromium.h"
#include "net/base/keygen_handler.h"
#include "net/cookies/cookie_store.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_getter.h"
Expand Down Expand Up @@ -299,7 +296,6 @@ bool RenderFrameMessageFilter::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(FrameHostMsg_CookiesEnabled, OnCookiesEnabled)
IPC_MESSAGE_HANDLER(FrameHostMsg_Are3DAPIsBlocked, OnAre3DAPIsBlocked)
IPC_MESSAGE_HANDLER(FrameHostMsg_DidLose3DContext, OnDidLose3DContext)
IPC_MESSAGE_HANDLER_DELAY_REPLY(FrameHostMsg_Keygen, OnKeygen)
#if defined(OS_MACOSX)
IPC_MESSAGE_HANDLER_DELAY_REPLY(FrameHostMsg_LoadFont, OnLoadFont)
#elif defined(OS_WIN)
Expand Down Expand Up @@ -461,65 +457,6 @@ void RenderFrameMessageFilter::OnDidLose3DContext(
top_origin_url, guilt);
}

void RenderFrameMessageFilter::OnKeygen(uint32 key_size_index,
const std::string& challenge_string,
const GURL& url,
IPC::Message* reply_msg) {
// Map displayed strings indicating level of keysecurity in the <keygen>
// menu to the key size in bits. (See SSLKeyGeneratorChromium.cpp in WebCore.)
int key_size_in_bits;
switch (key_size_index) {
case 0:
key_size_in_bits = 2048;
break;
case 1:
key_size_in_bits = 1024;
break;
default:
DCHECK(false) << "Illegal key_size_index " << key_size_index;
FrameHostMsg_Keygen::WriteReplyParams(reply_msg, std::string());
Send(reply_msg);
return;
}

resource_context_->CreateKeygenHandler(
key_size_in_bits,
challenge_string,
url,
base::Bind(&RenderFrameMessageFilter::PostKeygenToWorkerThread,
this, reply_msg));
}

void RenderFrameMessageFilter::PostKeygenToWorkerThread(
IPC::Message* reply_msg,
scoped_ptr<net::KeygenHandler> keygen_handler) {
VLOG(1) << "Dispatching keygen task to worker pool.";
// Dispatch to worker pool, so we do not block the IO thread.
if (!base::WorkerPool::PostTask(
FROM_HERE,
base::Bind(&RenderFrameMessageFilter::OnKeygenOnWorkerThread,
this,
base::Passed(&keygen_handler),
reply_msg),
true)) {
NOTREACHED() << "Failed to dispatch keygen task to worker pool";
FrameHostMsg_Keygen::WriteReplyParams(reply_msg, std::string());
Send(reply_msg);
}
}

void RenderFrameMessageFilter::OnKeygenOnWorkerThread(
scoped_ptr<net::KeygenHandler> keygen_handler,
IPC::Message* reply_msg) {
DCHECK(reply_msg);

// Generate a signed public key and challenge, then send it back.
FrameHostMsg_Keygen::WriteReplyParams(
reply_msg,
keygen_handler->GenKeyAndSignChallenge());
Send(reply_msg);
}

#if defined(OS_MACOSX)

void RenderFrameMessageFilter::OnLoadFont(const FontDescriptor& font,
Expand Down
10 changes: 0 additions & 10 deletions content/browser/frame_host/render_frame_message_filter.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
class GURL;

namespace net {
class KeygenHandler;
class URLRequestContext;
class URLRequestContextGetter;
}
Expand Down Expand Up @@ -105,15 +104,6 @@ class RenderFrameMessageFilter : public BrowserMessageFilter {
ThreeDAPIType context_type,
int arb_robustness_status_code);

void OnKeygen(uint32 key_size_index,
const std::string& challenge_string,
const GURL& url,
IPC::Message* reply_msg);
void PostKeygenToWorkerThread(IPC::Message* reply_msg,
scoped_ptr<net::KeygenHandler> keygen_handler);
void OnKeygenOnWorkerThread(scoped_ptr<net::KeygenHandler> keygen_handler,
IPC::Message* reply_msg);

#if defined(OS_MACOSX)
// Messages for OOP font loading.
void OnLoadFont(const FontDescriptor& font, IPC::Message* reply_msg);
Expand Down
63 changes: 63 additions & 0 deletions content/browser/renderer_host/render_message_filter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
#include "content/common/content_constants_internal.h"
#include "content/common/gpu/client/gpu_memory_buffer_impl.h"
#include "content/common/host_shared_bitmap_manager.h"
#include "content/common/render_process_messages.h"
#include "content/common/view_messages.h"
#include "content/public/browser/browser_child_process_host.h"
#include "content/public/browser/browser_context.h"
Expand All @@ -50,6 +51,7 @@
#include "media/audio/audio_parameters.h"
#include "media/base/media_log_event.h"
#include "net/base/io_buffer.h"
#include "net/base/keygen_handler.h"
#include "net/base/mime_util.h"
#include "net/base/request_priority.h"
#include "net/http/http_cache.h"
Expand All @@ -71,6 +73,7 @@ namespace {

const uint32 kFilteredMessageClasses[] = {
ChildProcessMsgStart,
RenderProcessMsgStart,
ViewMsgStart,
};

Expand Down Expand Up @@ -162,6 +165,7 @@ bool RenderMessageFilter::OnMessageReceived(const IPC::Message& message) {
OnAllocateLockedDiscardableSharedMemory)
IPC_MESSAGE_HANDLER(ChildProcessHostMsg_DeletedDiscardableSharedMemory,
OnDeletedDiscardableSharedMemory)
IPC_MESSAGE_HANDLER_DELAY_REPLY(RenderProcessHostMsg_Keygen, OnKeygen)
IPC_MESSAGE_HANDLER(ViewHostMsg_DidGenerateCacheableMetadata,
OnCacheableMetadataAvailable)
IPC_MESSAGE_HANDLER(ViewHostMsg_GetAudioHardwareConfig,
Expand Down Expand Up @@ -490,6 +494,65 @@ void RenderMessageFilter::OnCacheableMetadataAvailable(
data.size());
}

void RenderMessageFilter::OnKeygen(uint32 key_size_index,
const std::string& challenge_string,
const GURL& url,
IPC::Message* reply_msg) {
// Map displayed strings indicating level of keysecurity in the <keygen>
// menu to the key size in bits. (See SSLKeyGeneratorChromium.cpp in WebCore.)
int key_size_in_bits;
switch (key_size_index) {
case 0:
key_size_in_bits = 2048;
break;
case 1:
key_size_in_bits = 1024;
break;
default:
DCHECK(false) << "Illegal key_size_index " << key_size_index;
RenderProcessHostMsg_Keygen::WriteReplyParams(reply_msg, std::string());
Send(reply_msg);
return;
}

resource_context_->CreateKeygenHandler(
key_size_in_bits,
challenge_string,
url,
base::Bind(
&RenderMessageFilter::PostKeygenToWorkerThread, this, reply_msg));
}

void RenderMessageFilter::PostKeygenToWorkerThread(
IPC::Message* reply_msg,
scoped_ptr<net::KeygenHandler> keygen_handler) {
VLOG(1) << "Dispatching keygen task to worker pool.";
// Dispatch to worker pool, so we do not block the IO thread.
if (!base::WorkerPool::PostTask(
FROM_HERE,
base::Bind(&RenderMessageFilter::OnKeygenOnWorkerThread,
this,
base::Passed(&keygen_handler),
reply_msg),
true)) {
NOTREACHED() << "Failed to dispatch keygen task to worker pool";
RenderProcessHostMsg_Keygen::WriteReplyParams(reply_msg, std::string());
Send(reply_msg);
}
}

void RenderMessageFilter::OnKeygenOnWorkerThread(
scoped_ptr<net::KeygenHandler> keygen_handler,
IPC::Message* reply_msg) {
DCHECK(reply_msg);

// Generate a signed public key and challenge, then send it back.
RenderProcessHostMsg_Keygen::WriteReplyParams(
reply_msg,
keygen_handler->GenKeyAndSignChallenge());
Send(reply_msg);
}

void RenderMessageFilter::OnMediaLogEvents(
const std::vector<media::MediaLogEvent>& events) {
// OnMediaLogEvents() is always dispatched to the UI thread for handling.
Expand Down
7 changes: 7 additions & 0 deletions content/browser/renderer_host/render_message_filter.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ struct MediaLogEvent;
}

namespace net {
class KeygenHandler;
class URLRequestContext;
class URLRequestContextGetter;
}
Expand Down Expand Up @@ -179,6 +180,12 @@ class CONTENT_EXPORT RenderMessageFilter : public BrowserMessageFilter {
void OnCacheableMetadataAvailable(const GURL& url,
base::Time expected_response_time,
const std::vector<char>& data);
void OnKeygen(uint32 key_size_index, const std::string& challenge_string,
const GURL& url, IPC::Message* reply_msg);
void PostKeygenToWorkerThread(IPC::Message* reply_msg,
scoped_ptr<net::KeygenHandler> keygen_handler);
void OnKeygenOnWorkerThread(scoped_ptr<net::KeygenHandler> keygen_handler,
IPC::Message* reply_msg);
void OnMediaLogEvents(const std::vector<media::MediaLogEvent>&);

bool CheckBenchmarkingEnabled() const;
Expand Down
1 change: 1 addition & 0 deletions content/common/content_message_generator.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
#include "content/common/power_monitor_messages.h"
#include "content/common/push_messaging_messages.h"
#include "content/common/quota_messages.h"
#include "content/common/render_process_messages.h"
#include "content/common/resource_messages.h"
#include "content/common/screen_orientation_messages.h"
#include "content/common/service_worker/embedded_worker_messages.h"
Expand Down
9 changes: 0 additions & 9 deletions content/common/frame_messages.h
Original file line number Diff line number Diff line change
Expand Up @@ -1164,15 +1164,6 @@ IPC_MESSAGE_ROUTED2(FrameHostMsg_DidRunInsecureContent,
std::string /* security_origin */,
GURL /* target URL */)

// Asks the browser process to generate a keypair for grabbing a client
// certificate from a CA (<keygen> tag), and returns the signed public
// key and challenge string.
IPC_SYNC_MESSAGE_CONTROL3_1(FrameHostMsg_Keygen,
uint32 /* key size index */,
std::string /* challenge string */,
GURL /* URL of requestor */,
std::string /* signed public key and challenge */)

#if defined(OS_MACOSX) || defined(OS_ANDROID)

// Message to show/hide a popup menu using native controls.
Expand Down
32 changes: 32 additions & 0 deletions content/common/render_process_messages.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Common IPC messages used for render processes.
// Multiply-included message file, hence no include guard.

#include <string>

#include "ipc/ipc_message_macros.h"
#include "ipc/ipc_message_utils.h"
#include "url/gurl.h"

#undef IPC_MESSAGE_EXPORT
#define IPC_MESSAGE_EXPORT CONTENT_EXPORT

#define IPC_MESSAGE_START RenderProcessMsgStart

////////////////////////////////////////////////////////////////////////////////
// Messages sent from the browser to the render process.

////////////////////////////////////////////////////////////////////////////////
// Messages sent from the render process to the browser.

// Asks the browser process to generate a keypair for grabbing a client
// certificate from a CA (<keygen> tag), and returns the signed public
// key and challenge string.
IPC_SYNC_MESSAGE_CONTROL3_1(RenderProcessHostMsg_Keygen,
uint32 /* key size index */,
std::string /* challenge string */,
GURL /* URL of requestor */,
std::string /* signed public key and challenge */)
1 change: 1 addition & 0 deletions content/content_common.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,7 @@
'common/process_type.cc',
'common/push_messaging_messages.h',
'common/quota_messages.h',
'common/render_process_messages.h',
'common/resource_messages.cc',
'common/resource_messages.h',
'common/resource_request_body.cc',
Expand Down
3 changes: 2 additions & 1 deletion content/renderer/renderer_blink_platform_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
#include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h"
#include "content/common/gpu/gpu_process_launch_causes.h"
#include "content/common/mime_registry_messages.h"
#include "content/common/render_process_messages.h"
#include "content/common/view_messages.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/service_registry.h"
Expand Down Expand Up @@ -819,7 +820,7 @@ blink::WebString RendererBlinkPlatformImpl::signedPublicKeyAndChallengeString(
const blink::WebString& challenge,
const blink::WebURL& url) {
std::string signed_public_key;
RenderThread::Get()->Send(new FrameHostMsg_Keygen(
RenderThread::Get()->Send(new RenderProcessHostMsg_Keygen(
static_cast<uint32>(key_size_index),
challenge.utf8(),
GURL(url),
Expand Down
1 change: 1 addition & 0 deletions ipc/ipc_message_start.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ enum IPCMessageStart {
ChromeAppBannerMsgStart,
SafeJsonParserMsgStart,
AttachmentBrokerMsgStart,
RenderProcessMsgStart,
LastIPCMsgStart // Must come last.
};

Expand Down

0 comments on commit 914d82e

Please sign in to comment.