auto import from //depot/cupcake/@135843
diff --git a/simulator/app/UserEventMessage.h b/simulator/app/UserEventMessage.h
new file mode 100644
index 0000000..4a66cc2
--- /dev/null
+++ b/simulator/app/UserEventMessage.h
@@ -0,0 +1,84 @@
+//
+// Copyright 2005 The Android Open Source Project
+//
+// Contents of the "user event" sent from the device thread.
+//
+#ifndef _SIM_USER_EVENT_MESSAGE_H
+#define _SIM_USER_EVENT_MESSAGE_H
+
+#include <utils.h>
+#include "LogMessage.h"
+
+/*
+ * This gets stuffed into a UserEvent, which is posted to the main thread
+ * from a worker thread.
+ *
+ * The object does NOT own anything you stuff into it. It's just a vehicle
+ * for carting data from one thread to another in a wxWidgets-safe manner,
+ * usually as pointers to data that can be shared between threads.
+ */
+class UserEventMessage {
+public:
+ /*
+ * What type of message is this?
+ */
+ typedef enum UEMType {
+ kUnknown = 0,
+
+ kRuntimeStarted,
+ kRuntimeStopped,
+ kErrorMessage, // message in mString
+ kLogMessage, // ptr to heap-allocated LogMessage
+ kExternalRuntime, // external runtime wants to party
+ } UEMType;
+
+ UserEventMessage(void)
+ : mType(kUnknown), mpLogMessage(NULL)
+ {}
+ ~UserEventMessage(void) {
+ }
+
+ /*
+ * Create one of our various messages.
+ */
+ void CreateRuntimeStarted(void) {
+ mType = kRuntimeStarted;
+ }
+ void CreateRuntimeStopped(void) {
+ mType = kRuntimeStopped;
+ }
+ void CreateErrorMessage(wxString& str) {
+ mType = kErrorMessage;
+ mString = str;
+ }
+ void CreateLogMessage(LogMessage* pLogMessage) {
+ mType = kLogMessage;
+ mpLogMessage = pLogMessage;
+ }
+ void CreateExternalRuntime(android::Pipe* reader, android::Pipe* writer) {
+ mType = kExternalRuntime;
+ mReader = reader;
+ mWriter = writer;
+ }
+
+ /*
+ * Accessors.
+ */
+ UEMType GetType(void) const { return mType; }
+ const wxString& GetString(void) const { return mString; }
+ LogMessage* GetLogMessage(void) const { return mpLogMessage; }
+ android::Pipe* GetReader(void) const { return mReader; }
+ android::Pipe* GetWriter(void) const { return mWriter; }
+
+private:
+ UserEventMessage& operator=(const UserEventMessage&); // not implemented
+ UserEventMessage(const UserEventMessage&); // not implemented
+
+ UEMType mType;
+ wxString mString; // for kErrorMessage
+ LogMessage* mpLogMessage; // for kLogMessage
+ android::Pipe* mReader; // for kExternalRuntime
+ android::Pipe* mWriter; // for kExternalRuntime
+};
+
+#endif // _SIM_USER_EVENT_MESSAGE_H