summaryrefslogtreecommitdiffstats
path: root/content/plugin
diff options
context:
space:
mode:
authorshess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-06 04:28:17 +0000
committershess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-06 04:28:17 +0000
commit8feb52c0ba8d0136f03321827f9abe2aae1a757d (patch)
tree59158d6c5015ddee36b99b332eaf60679f3569b9 /content/plugin
parentd8e4f13fbb4eafb7a54c28c9809d6b7c19fd2411 (diff)
downloadchromium_src-8feb52c0ba8d0136f03321827f9abe2aae1a757d.zip
chromium_src-8feb52c0ba8d0136f03321827f9abe2aae1a757d.tar.gz
chromium_src-8feb52c0ba8d0136f03321827f9abe2aae1a757d.tar.bz2
Code to collect issue 97285 debugging info for crash reports.
It is useful to record breakpad keys for debugging, which is not applicable to multi-process bugs. This adds infrastructure to allow collection of information across processes. Also, fix so that GetPluginChannelHost() can successfully fail without crashing. BUG=97285,141055 Review URL: https://chromiumcodereview.appspot.com/10908078 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@155122 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/plugin')
-rw-r--r--content/plugin/plugin_thread.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/content/plugin/plugin_thread.cc b/content/plugin/plugin_thread.cc
index 75a692e..3f90eb7 100644
--- a/content/plugin/plugin_thread.cc
+++ b/content/plugin/plugin_thread.cc
@@ -23,6 +23,7 @@
#include "content/common/child_process.h"
#include "content/common/npobject_util.h"
#include "content/common/plugin_messages.h"
+#include "content/public/common/content_debug_logging.h"
#include "content/public/common/content_switches.h"
#include "content/public/plugin/content_plugin_client.h"
#include "ipc/ipc_channel_handle.h"
@@ -68,6 +69,19 @@ class EnsureTerminateMessageFilter : public IPC::ChannelProxy::MessageFilter {
}
};
+void RecordMsg(int bug_id, const std::string& msg) {
+ PluginThread::current()->Send(
+ new PluginProcessHostMsg_ContentDebugRecordMsg(bug_id, msg));
+}
+
+bool GetMessages(int bug_id, std::vector<std::string>* msgs) {
+ bool handled = false;
+ PluginThread::current()->Send(
+ new PluginProcessHostMsg_ContentDebugGetMessages(
+ bug_id, &handled, msgs));
+ return handled;
+}
+
} // namespace
static base::LazyInstance<base::ThreadLocalPointer<PluginThread> > lazy_tls =
@@ -107,6 +121,8 @@ PluginThread::PluginThread()
ui::SetDefaultX11ErrorHandlers();
#endif
+ content::debug::RegisterMessageHandlers(RecordMsg, GetMessages);
+
PatchNPNFunctions();
// Preload the library to avoid loading, unloading then reloading
@@ -177,6 +193,11 @@ void PluginThread::OnCreateChannel(int renderer_id,
channel->set_incognito(incognito);
}
+#if defined(OS_MACOSX)
+ content::debug::RecordMsg(97285, base::StringPrintf(
+ "OnCreateChannel({%s, %d})",
+ channel_handle.name.c_str(), channel_handle.socket.fd));
+#endif
Send(new PluginProcessHostMsg_ChannelCreated(channel_handle));
}