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

Unified Diff: chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.cc

Issue 231883002: Refactor some ResourceMessageReply usages. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use ReplyMessageContext.is_valid() method. Created 6 years, 8 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/renderer_host/pepper/pepper_extensions_common_message_filter.cc
diff --git a/chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.cc
index 25384b5264f423f3c33f3c4c911118ce19be35cb..955d5f002737d5cca4a3b12bec515ff9b98feb01 100644
--- a/chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.cc
@@ -136,26 +136,44 @@ int32_t PepperExtensionsCommonMessageFilter::OnPost(
ppapi::host::HostMessageContext* context,
const std::string& request_name,
base::ListValue& args) {
- if (HandleRequest(context, request_name, &args, false))
- return PP_OK;
- else
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+
+ if (!EnsureDispatcherOwnerInitialized())
return PP_ERROR_FAILED;
+
+ ExtensionHostMsg_Request_Params params;
+ PopulateParams(request_name, &args, false, &params);
+
+ dispatcher_owner_->dispatcher()->DispatchWithCallback(
+ params, dispatcher_owner_->render_frame_host(),
+ base::Bind(&PepperExtensionsCommonMessageFilter::OnPostCompleted, this));
+ // There will be no callback so return PP_OK.
+ return PP_OK;
}
int32_t PepperExtensionsCommonMessageFilter::OnCall(
ppapi::host::HostMessageContext* context,
const std::string& request_name,
base::ListValue& args) {
- if (HandleRequest(context, request_name, &args, true))
- return PP_OK_COMPLETIONPENDING;
- else
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+
+ if (!EnsureDispatcherOwnerInitialized())
return PP_ERROR_FAILED;
+
+ ExtensionHostMsg_Request_Params params;
+ PopulateParams(request_name, &args, true, &params);
+
+ dispatcher_owner_->dispatcher()->DispatchWithCallback(
+ params, dispatcher_owner_->render_frame_host(),
+ base::Bind(&PepperExtensionsCommonMessageFilter::OnCallCompleted, this,
+ context->MakeReplyMessageContext()));
+ return PP_OK_COMPLETIONPENDING;
}
-void PepperExtensionsCommonMessageFilter::EnsureDispatcherOwnerInitialized() {
+bool PepperExtensionsCommonMessageFilter::EnsureDispatcherOwnerInitialized() {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
if (dispatcher_owner_initialized_)
- return;
+ return (!!dispatcher_owner_);
dispatcher_owner_initialized_ = true;
DCHECK(!dispatcher_owner_);
@@ -165,16 +183,17 @@ void PepperExtensionsCommonMessageFilter::EnsureDispatcherOwnerInitialized() {
content::WebContents::FromRenderFrameHost(frame_host);
if (!document_url_.SchemeIs(extensions::kExtensionScheme))
- return;
+ return false;
ProfileManager* profile_manager = g_browser_process->profile_manager();
if (!profile_manager)
- return;
+ return false;
Profile* profile = profile_manager->GetProfile(profile_directory_);
// It will be automatically destroyed when |view_host| goes away.
dispatcher_owner_ = new DispatcherOwner(
this, profile, frame_host, web_contents);
+ return true;
}
void PepperExtensionsCommonMessageFilter::DetachDispatcherOwner() {
@@ -201,18 +220,20 @@ void PepperExtensionsCommonMessageFilter::PopulateParams(
params->user_gesture = false;
}
-void PepperExtensionsCommonMessageFilter::OnExtensionFunctionCompleted(
- scoped_ptr<ppapi::host::ReplyMessageContext> reply_context,
+void PepperExtensionsCommonMessageFilter::OnPostCompleted(
ExtensionFunction::ResponseType type,
const base::ListValue& results,
const std::string& /* error */) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+ DCHECK_EQ(0u, results.GetSize());
+}
- // Ignore responses resulted from calls to OnPost().
- if (!reply_context) {
- DCHECK_EQ(0u, results.GetSize());
- return;
- }
+void PepperExtensionsCommonMessageFilter::OnCallCompleted(
+ const ppapi::host::ReplyMessageContext& reply_context,
+ ExtensionFunction::ResponseType type,
+ const base::ListValue& results,
+ const std::string& /* error */) {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
if (type == ExtensionFunction::BAD_MESSAGE) {
// The input arguments were not validated at the plugin side, so don't kill
@@ -221,38 +242,10 @@ void PepperExtensionsCommonMessageFilter::OnExtensionFunctionCompleted(
type = ExtensionFunction::FAILED;
}
- reply_context->params.set_result(
+ ppapi::host::ReplyMessageContext context(reply_context);
+ context.params.set_result(
type == ExtensionFunction::SUCCEEDED ? PP_OK : PP_ERROR_FAILED);
- SendReply(*reply_context, PpapiPluginMsg_ExtensionsCommon_CallReply(results));
-}
-
-bool PepperExtensionsCommonMessageFilter::HandleRequest(
- ppapi::host::HostMessageContext* context,
- const std::string& request_name,
- base::ListValue* args,
- bool has_callback) {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
-
- EnsureDispatcherOwnerInitialized();
- if (!dispatcher_owner_)
- return false;
-
- ExtensionHostMsg_Request_Params params;
- PopulateParams(request_name, args, has_callback, &params);
-
- scoped_ptr<ppapi::host::ReplyMessageContext> reply_context;
- if (has_callback) {
- reply_context.reset(new ppapi::host::ReplyMessageContext(
- context->MakeReplyMessageContext()));
- }
-
- dispatcher_owner_->dispatcher()->DispatchWithCallback(
- params, dispatcher_owner_->render_frame_host(),
- base::Bind(
- &PepperExtensionsCommonMessageFilter::OnExtensionFunctionCompleted,
- this,
- base::Passed(&reply_context)));
- return true;
+ SendReply(context, PpapiPluginMsg_ExtensionsCommon_CallReply(results));
}
} // namespace chrome

Powered by Google App Engine
This is Rietveld 408576698