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

Unified Diff: components/nacl/renderer/trusted_plugin_channel.cc

Issue 1090233003: Set up a NaCl load status callback to start replacing "start_module". (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: use the enum instead of int Created 5 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
« no previous file with comments | « components/nacl/renderer/trusted_plugin_channel.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/nacl/renderer/trusted_plugin_channel.cc
diff --git a/components/nacl/renderer/trusted_plugin_channel.cc b/components/nacl/renderer/trusted_plugin_channel.cc
index 729644cb089458632312aab5d879811dadf723a0..1ba39fe1efa48025d970c015fc87788197ec0ba5 100644
--- a/components/nacl/renderer/trusted_plugin_channel.cc
+++ b/components/nacl/renderer/trusted_plugin_channel.cc
@@ -6,6 +6,7 @@
#include "base/callback_helpers.h"
#include "components/nacl/common/nacl_renderer_messages.h"
+#include "components/nacl/renderer/histogram.h"
#include "components/nacl/renderer/nexe_load_manager.h"
#include "content/public/renderer/render_thread.h"
#include "ipc/ipc_sync_channel.h"
@@ -18,9 +19,9 @@ TrustedPluginChannel::TrustedPluginChannel(
NexeLoadManager* nexe_load_manager,
const IPC::ChannelHandle& handle,
base::WaitableEvent* shutdown_event,
- bool report_exit_status)
+ bool is_helper_nexe)
: nexe_load_manager_(nexe_load_manager),
- report_exit_status_(report_exit_status) {
+ is_helper_nexe_(is_helper_nexe) {
channel_ = IPC::SyncChannel::Create(
handle,
IPC::Channel::MODE_CLIENT,
@@ -41,19 +42,41 @@ bool TrustedPluginChannel::OnMessageReceived(const IPC::Message& msg) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(TrustedPluginChannel, msg)
IPC_MESSAGE_HANDLER(NaClRendererMsg_ReportExitStatus, OnReportExitStatus);
+ IPC_MESSAGE_HANDLER(NaClRendererMsg_ReportLoadStatus, OnReportLoadStatus);
IPC_MESSAGE_UNHANDLED(handled = false);
IPC_END_MESSAGE_MAP()
return handled;
}
void TrustedPluginChannel::OnChannelError() {
- if (report_exit_status_)
+ if (!is_helper_nexe_)
nexe_load_manager_->NexeDidCrash();
}
void TrustedPluginChannel::OnReportExitStatus(int exit_status) {
- if (report_exit_status_)
+ if (!is_helper_nexe_)
nexe_load_manager_->set_exit_status(exit_status);
}
+void TrustedPluginChannel::OnReportLoadStatus(NaClErrorCode load_status) {
+ if (load_status < 0 || load_status > NACL_ERROR_CODE_MAX) {
+ load_status = LOAD_STATUS_UNKNOWN;
+ }
+ // For now, we only report UMA for non-helper nexes
+ // (don't report for the PNaCl translators nexes).
+ if (!is_helper_nexe_) {
+ HistogramEnumerate("NaCl.LoadStatus.SelLdr", load_status,
+ NACL_ERROR_CODE_MAX);
+ // Gather data to see if being installed changes load outcomes.
+ const char* name = nexe_load_manager_->is_installed()
+ ? "NaCl.LoadStatus.SelLdr.InstalledApp"
+ : "NaCl.LoadStatus.SelLdr.NotInstalledApp";
+ HistogramEnumerate(name, load_status, NACL_ERROR_CODE_MAX);
+ }
+ if (load_status != LOAD_OK) {
+ nexe_load_manager_->ReportLoadError(PP_NACL_ERROR_SEL_LDR_START_STATUS,
+ NaClErrorString(load_status));
+ }
+}
+
} // namespace nacl
« no previous file with comments | « components/nacl/renderer/trusted_plugin_channel.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698