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

Unified Diff: chrome/common/ipc_message_utils.h

Issue 21039: Revert my change to get the tree green. Not sure why the tests became flaky.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 11 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 | « chrome/common/ipc_message_unittest.cc ('k') | chrome/common/ipc_message_utils.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/common/ipc_message_utils.h
===================================================================
--- chrome/common/ipc_message_utils.h (revision 9131)
+++ chrome/common/ipc_message_utils.h (working copy)
@@ -34,43 +34,70 @@
struct WebApplicationInfo;
} // namespace webkit_glue
-// Used by IPC_BEGIN_MESSAGES so that each message class starts from a unique
-// base. Messages have unique IDs across channels in order for the IPC logging
-// code to figure out the message class from its ID.
-enum IPCMessageStart {
- // By using a start value of 0 for automation messages, we keep backward
- // compatibility with old builds.
- AutomationMsgStart = 0,
- ViewMsgStart,
- ViewHostMsgStart,
- PluginProcessMsgStart,
- PluginProcessHostMsgStart,
- PluginMsgStart,
- PluginHostMsgStart,
- NPObjectMsgStart,
- TestMsgStart,
- // NOTE: When you add a new message class, also update
- // IPCStatusView::IPCStatusView to ensure logging works.
- // NOTE: this enum is used by IPC_MESSAGE_MACRO to generate a unique message
- // id. Only 4 bits are used for the message type, so if this enum needs more
- // than 16 entries, that code needs to be updated.
- LastMsgIndex
-};
+namespace IPC {
-COMPILE_ASSERT(LastMsgIndex <= 16, need_to_update_IPC_MESSAGE_MACRO);
+// Used by the message macros to register a logging function based on the
+// message class.
+typedef void (LogFunction)(uint16 type,
+ std::wstring* name,
+ const IPC::Message* msg,
+ std::wstring* params);
+void RegisterMessageLogger(int msg_start, LogFunction* func);
+
//-----------------------------------------------------------------------------
+// An iterator class for reading the fields contained within a Message.
+
+class MessageIterator {
+ public:
+ explicit MessageIterator(const Message& m) : msg_(m), iter_(NULL) {
+ }
+ int NextInt() const {
+ int val;
+ if (!msg_.ReadInt(&iter_, &val))
+ NOTREACHED();
+ return val;
+ }
+ intptr_t NextIntPtr() const {
+ intptr_t val;
+ if (!msg_.ReadIntPtr(&iter_, &val))
+ NOTREACHED();
+ return val;
+ }
+ const std::string NextString() const {
+ std::string val;
+ if (!msg_.ReadString(&iter_, &val))
+ NOTREACHED();
+ return val;
+ }
+ const std::wstring NextWString() const {
+ std::wstring val;
+ if (!msg_.ReadWString(&iter_, &val))
+ NOTREACHED();
+ return val;
+ }
+ const void NextData(const char** data, int* length) const {
+ if (!msg_.ReadData(&iter_, data, length)) {
+ NOTREACHED();
+ }
+ }
+ private:
+ const Message& msg_;
+ mutable void* iter_;
+};
+
+//-----------------------------------------------------------------------------
// ParamTraits specializations, etc.
template <class P> struct ParamTraits {};
template <class P>
-static inline void WriteParam(IPC::Message* m, const P& p) {
+static inline void WriteParam(Message* m, const P& p) {
ParamTraits<P>::Write(m, p);
}
template <class P>
-static inline bool ReadParam(const IPC::Message* m, void** iter, P* p) {
+static inline bool ReadParam(const Message* m, void** iter, P* p) {
return ParamTraits<P>::Read(m, iter, p);
}
@@ -82,10 +109,10 @@
template <>
struct ParamTraits<bool> {
typedef bool param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteBool(p);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return m->ReadBool(iter, r);
}
static void Log(const param_type& p, std::wstring* l) {
@@ -96,10 +123,10 @@
template <>
struct ParamTraits<int> {
typedef int param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteInt(p);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return m->ReadInt(iter, r);
}
static void Log(const param_type& p, std::wstring* l) {
@@ -110,10 +137,10 @@
template <>
struct ParamTraits<long> {
typedef long param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteLong(p);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return m->ReadLong(iter, r);
}
static void Log(const param_type& p, std::wstring* l) {
@@ -124,10 +151,10 @@
template <>
struct ParamTraits<size_t> {
typedef size_t param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteSize(p);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return m->ReadSize(iter, r);
}
static void Log(const param_type& p, std::wstring* l) {
@@ -141,10 +168,10 @@
template <>
struct ParamTraits<uint32> {
typedef uint32 param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteUInt32(p);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return m->ReadUInt32(iter, r);
}
static void Log(const param_type& p, std::wstring* l) {
@@ -156,10 +183,10 @@
template <>
struct ParamTraits<int64> {
typedef int64 param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteInt64(p);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return m->ReadInt64(iter, r);
}
static void Log(const param_type& p, std::wstring* l) {
@@ -170,10 +197,10 @@
template <>
struct ParamTraits<uint64> {
typedef uint64 param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteInt64(static_cast<int64>(p));
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return m->ReadInt64(iter, reinterpret_cast<int64*>(r));
}
static void Log(const param_type& p, std::wstring* l) {
@@ -184,10 +211,10 @@
template <>
struct ParamTraits<double> {
typedef double param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteData(reinterpret_cast<const char*>(&p), sizeof(param_type));
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
const char *data;
int data_size = 0;
bool result = m->ReadData(iter, &data, &data_size);
@@ -208,10 +235,10 @@
template <>
struct ParamTraits<wchar_t> {
typedef wchar_t param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteData(reinterpret_cast<const char*>(&p), sizeof(param_type));
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
const char *data;
int data_size = 0;
bool result = m->ReadData(iter, &data, &data_size);
@@ -232,10 +259,10 @@
template <>
struct ParamTraits<base::Time> {
typedef base::Time param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
ParamTraits<int64>::Write(m, p.ToInternalValue());
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
int64 value;
if (!ParamTraits<int64>::Read(m, iter, &value))
return false;
@@ -251,10 +278,10 @@
template <>
struct ParamTraits<LOGFONT> {
typedef LOGFONT param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteData(reinterpret_cast<const char*>(&p), sizeof(LOGFONT));
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
const char *data;
int data_size = 0;
bool result = m->ReadData(iter, &data, &data_size);
@@ -275,10 +302,10 @@
template <>
struct ParamTraits<MSG> {
typedef MSG param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteData(reinterpret_cast<const char*>(&p), sizeof(MSG));
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
const char *data;
int data_size = 0;
bool result = m->ReadData(iter, &data, &data_size);
@@ -297,11 +324,11 @@
template <>
struct ParamTraits<SkBitmap> {
typedef SkBitmap param_type;
- static void Write(IPC::Message* m, const param_type& p);
+ static void Write(Message* m, const param_type& p);
// Note: This function expects parameter |r| to be of type &SkBitmap since
// r->SetConfig() and r->SetPixels() are called.
- static bool Read(const IPC::Message* m, void** iter, param_type* r);
+ static bool Read(const Message* m, void** iter, param_type* r);
static void Log(const param_type& p, std::wstring* l);
};
@@ -309,10 +336,10 @@
template <>
struct ParamTraits<std::string> {
typedef std::string param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteString(p);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return m->ReadString(iter, r);
}
static void Log(const param_type& p, std::wstring* l) {
@@ -323,7 +350,7 @@
template <>
struct ParamTraits<std::vector<unsigned char> > {
typedef std::vector<unsigned char> param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
if (p.size() == 0) {
m->WriteData(NULL, 0);
} else {
@@ -331,7 +358,7 @@
static_cast<int>(p.size()));
}
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
const char *data;
int data_size = 0;
if (!m->ReadData(iter, &data, &data_size) || data_size < 0)
@@ -350,14 +377,14 @@
template <>
struct ParamTraits<std::vector<char> > {
typedef std::vector<char> param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
if (p.size() == 0) {
m->WriteData(NULL, 0);
} else {
m->WriteData(&p.front(), static_cast<int>(p.size()));
}
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
const char *data;
int data_size = 0;
if (!m->ReadData(iter, &data, &data_size) || data_size < 0)
@@ -376,12 +403,12 @@
template <class P>
struct ParamTraits<std::vector<P> > {
typedef std::vector<P> param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
WriteParam(m, static_cast<int>(p.size()));
for (size_t i = 0; i < p.size(); i++)
WriteParam(m, p[i]);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
int size;
if (!m->ReadLength(iter, &size))
return false;
@@ -415,7 +442,7 @@
template <class K, class V>
struct ParamTraits<std::map<K, V> > {
typedef std::map<K, V> param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
WriteParam(m, static_cast<int>(p.size()));
typename param_type::const_iterator iter;
for (iter = p.begin(); iter != p.end(); ++iter) {
@@ -423,7 +450,7 @@
WriteParam(m, iter->second);
}
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
int size;
if (!ReadParam(m, iter, &size) || size < 0)
return false;
@@ -445,10 +472,10 @@
template <>
struct ParamTraits<std::wstring> {
typedef std::wstring param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteWString(p);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return m->ReadWString(iter, r);
}
static void Log(const param_type& p, std::wstring* l) {
@@ -459,8 +486,8 @@
template <>
struct ParamTraits<GURL> {
typedef GURL param_type;
- static void Write(IPC::Message* m, const param_type& p);
- static bool Read(const IPC::Message* m, void** iter, param_type* p);
+ static void Write(Message* m, const param_type& p);
+ static bool Read(const Message* m, void** iter, param_type* p);
static void Log(const param_type& p, std::wstring* l);
};
@@ -469,10 +496,10 @@
template <>
struct ParamTraits<HANDLE> {
typedef HANDLE param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteIntPtr(reinterpret_cast<intptr_t>(p));
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
DCHECK_EQ(sizeof(param_type), sizeof(intptr_t));
return m->ReadIntPtr(iter, reinterpret_cast<intptr_t*>(r));
}
@@ -484,10 +511,10 @@
template <>
struct ParamTraits<HCURSOR> {
typedef HCURSOR param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteIntPtr(reinterpret_cast<intptr_t>(p));
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
DCHECK_EQ(sizeof(param_type), sizeof(intptr_t));
return m->ReadIntPtr(iter, reinterpret_cast<intptr_t*>(r));
}
@@ -499,10 +526,10 @@
template <>
struct ParamTraits<HWND> {
typedef HWND param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteIntPtr(reinterpret_cast<intptr_t>(p));
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
DCHECK_EQ(sizeof(param_type), sizeof(intptr_t));
return m->ReadIntPtr(iter, reinterpret_cast<intptr_t*>(r));
}
@@ -514,7 +541,7 @@
template <>
struct ParamTraits<HRGN> {
typedef HRGN param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
int data_size = GetRegionData(p, 0, NULL);
if (data_size) {
char* bytes = new char[data_size];
@@ -525,7 +552,7 @@
m->WriteData(NULL, 0);
}
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
bool res = FALSE;
const char *data;
int data_size = 0;
@@ -547,10 +574,10 @@
template <>
struct ParamTraits<HACCEL> {
typedef HACCEL param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteIntPtr(reinterpret_cast<intptr_t>(p));
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
DCHECK_EQ(sizeof(param_type), sizeof(intptr_t));
return m->ReadIntPtr(iter, reinterpret_cast<intptr_t*>(r));
}
@@ -559,11 +586,11 @@
template <>
struct ParamTraits<POINT> {
typedef POINT param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteInt(p.x);
m->WriteInt(p.y);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
int x, y;
if (!m->ReadInt(iter, &x) || !m->ReadInt(iter, &y))
return false;
@@ -580,10 +607,10 @@
template <>
struct ParamTraits<FilePath> {
typedef FilePath param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
ParamTraits<FilePath::StringType>::Write(m, p.value());
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
FilePath::StringType value;
if (!ParamTraits<FilePath::StringType>::Read(m, iter, &value))
return false;
@@ -598,44 +625,44 @@
template <>
struct ParamTraits<gfx::Point> {
typedef gfx::Point param_type;
- static void Write(IPC::Message* m, const param_type& p);
- static bool Read(const IPC::Message* m, void** iter, param_type* r);
+ static void Write(Message* m, const param_type& p);
+ static bool Read(const Message* m, void** iter, param_type* r);
static void Log(const param_type& p, std::wstring* l);
};
template <>
struct ParamTraits<gfx::Rect> {
typedef gfx::Rect param_type;
- static void Write(IPC::Message* m, const param_type& p);
- static bool Read(const IPC::Message* m, void** iter, param_type* r);
+ static void Write(Message* m, const param_type& p);
+ static bool Read(const Message* m, void** iter, param_type* r);
static void Log(const param_type& p, std::wstring* l);
};
template <>
struct ParamTraits<gfx::Size> {
typedef gfx::Size param_type;
- static void Write(IPC::Message* m, const param_type& p);
- static bool Read(const IPC::Message* m, void** iter, param_type* r);
+ static void Write(Message* m, const param_type& p);
+ static bool Read(const Message* m, void** iter, param_type* r);
static void Log(const param_type& p, std::wstring* l);
};
template<>
struct ParamTraits<ThumbnailScore> {
typedef ThumbnailScore param_type;
- static void Write(IPC::Message* m, const param_type& p) {
- ParamTraits<double>::Write(m, p.boring_score);
- ParamTraits<bool>::Write(m, p.good_clipping);
- ParamTraits<bool>::Write(m, p.at_top);
- ParamTraits<base::Time>::Write(m, p.time_at_snapshot);
+ static void Write(Message* m, const param_type& p) {
+ IPC::ParamTraits<double>::Write(m, p.boring_score);
+ IPC::ParamTraits<bool>::Write(m, p.good_clipping);
+ IPC::ParamTraits<bool>::Write(m, p.at_top);
+ IPC::ParamTraits<base::Time>::Write(m, p.time_at_snapshot);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
double boring_score;
bool good_clipping, at_top;
base::Time time_at_snapshot;
- if (!ParamTraits<double>::Read(m, iter, &boring_score) ||
- !ParamTraits<bool>::Read(m, iter, &good_clipping) ||
- !ParamTraits<bool>::Read(m, iter, &at_top) ||
- !ParamTraits<base::Time>::Read(m, iter, &time_at_snapshot))
+ if (!IPC::ParamTraits<double>::Read(m, iter, &boring_score) ||
+ !IPC::ParamTraits<bool>::Read(m, iter, &good_clipping) ||
+ !IPC::ParamTraits<bool>::Read(m, iter, &at_top) ||
+ !IPC::ParamTraits<base::Time>::Read(m, iter, &time_at_snapshot))
return false;
r->boring_score = boring_score;
@@ -653,10 +680,10 @@
template <>
struct ParamTraits<WindowOpenDisposition> {
typedef WindowOpenDisposition param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteInt(p);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
int temp;
bool res = m->ReadInt(iter, &temp);
*r = static_cast<WindowOpenDisposition>(temp);
@@ -670,10 +697,10 @@
template <>
struct ParamTraits<ConsoleMessageLevel> {
typedef ConsoleMessageLevel param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteInt(p);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
int temp;
bool res = m->ReadInt(iter, &temp);
*r = static_cast<ConsoleMessageLevel>(temp);
@@ -687,13 +714,13 @@
template <>
struct ParamTraits<CacheManager::ResourceTypeStat> {
typedef CacheManager::ResourceTypeStat param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
WriteParam(m, p.count);
WriteParam(m, p.size);
WriteParam(m, p.live_size);
WriteParam(m, p.decoded_size);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
bool result =
ReadParam(m, iter, &r->count) &&
ReadParam(m, iter, &r->size) &&
@@ -710,14 +737,14 @@
template <>
struct ParamTraits<CacheManager::ResourceTypeStats> {
typedef CacheManager::ResourceTypeStats param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
WriteParam(m, p.images);
WriteParam(m, p.css_stylesheets);
WriteParam(m, p.scripts);
WriteParam(m, p.xsl_stylesheets);
WriteParam(m, p.fonts);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
bool result =
ReadParam(m, iter, &r->images) &&
ReadParam(m, iter, &r->css_stylesheets) &&
@@ -741,10 +768,10 @@
template <>
struct ParamTraits<XFORM> {
typedef XFORM param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
m->WriteData(reinterpret_cast<const char*>(&p), sizeof(XFORM));
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
const char *data;
int data_size = 0;
bool result = m->ReadData(iter, &data, &data_size);
@@ -766,10 +793,10 @@
template <>
struct ParamTraits<WebCursor> {
typedef WebCursor param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
p.Serialize(m);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return r->Deserialize(m, iter);
}
static void Log(const param_type& p, std::wstring* l) {
@@ -777,8 +804,6 @@
}
};
-namespace IPC {
-
struct LogData {
std::wstring channel;
uint16 type;
@@ -791,12 +816,10 @@
std::wstring params;
};
-}
-
template <>
-struct ParamTraits<IPC::LogData> {
- typedef IPC::LogData param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+struct ParamTraits<LogData> {
+ typedef LogData param_type;
+ static void Write(Message* m, const param_type& p) {
WriteParam(m, p.channel);
WriteParam(m, static_cast<int>(p.type));
WriteParam(m, p.flags);
@@ -805,7 +828,7 @@
WriteParam(m, p.dispatch);
WriteParam(m, p.params);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
int type;
bool result =
ReadParam(m, iter, &r->channel) &&
@@ -826,9 +849,9 @@
template <>
struct ParamTraits<Tuple0> {
typedef Tuple0 param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return true;
}
static void Log(const param_type& p, std::wstring* l) {
@@ -838,10 +861,10 @@
template <class A>
struct ParamTraits< Tuple1<A> > {
typedef Tuple1<A> param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
WriteParam(m, p.a);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return ReadParam(m, iter, &r->a);
}
static void Log(const param_type& p, std::wstring* l) {
@@ -852,11 +875,11 @@
template <class A, class B>
struct ParamTraits< Tuple2<A, B> > {
typedef Tuple2<A, B> param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
WriteParam(m, p.a);
WriteParam(m, p.b);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return (ReadParam(m, iter, &r->a) &&
ReadParam(m, iter, &r->b));
}
@@ -870,12 +893,12 @@
template <class A, class B, class C>
struct ParamTraits< Tuple3<A, B, C> > {
typedef Tuple3<A, B, C> param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
WriteParam(m, p.a);
WriteParam(m, p.b);
WriteParam(m, p.c);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return (ReadParam(m, iter, &r->a) &&
ReadParam(m, iter, &r->b) &&
ReadParam(m, iter, &r->c));
@@ -892,13 +915,13 @@
template <class A, class B, class C, class D>
struct ParamTraits< Tuple4<A, B, C, D> > {
typedef Tuple4<A, B, C, D> param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
WriteParam(m, p.a);
WriteParam(m, p.b);
WriteParam(m, p.c);
WriteParam(m, p.d);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return (ReadParam(m, iter, &r->a) &&
ReadParam(m, iter, &r->b) &&
ReadParam(m, iter, &r->c) &&
@@ -918,14 +941,14 @@
template <class A, class B, class C, class D, class E>
struct ParamTraits< Tuple5<A, B, C, D, E> > {
typedef Tuple5<A, B, C, D, E> param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
WriteParam(m, p.a);
WriteParam(m, p.b);
WriteParam(m, p.c);
WriteParam(m, p.d);
WriteParam(m, p.e);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return (ReadParam(m, iter, &r->a) &&
ReadParam(m, iter, &r->b) &&
ReadParam(m, iter, &r->c) &&
@@ -948,7 +971,7 @@
template <class A, class B, class C, class D, class E, class F>
struct ParamTraits< Tuple6<A, B, C, D, E, F> > {
typedef Tuple6<A, B, C, D, E, F> param_type;
- static void Write(IPC::Message* m, const param_type& p) {
+ static void Write(Message* m, const param_type& p) {
WriteParam(m, p.a);
WriteParam(m, p.b);
WriteParam(m, p.c);
@@ -956,7 +979,7 @@
WriteParam(m, p.e);
WriteParam(m, p.f);
}
- static bool Read(const IPC::Message* m, void** iter, param_type* r) {
+ static bool Read(const Message* m, void** iter, param_type* r) {
return (ReadParam(m, iter, &r->a) &&
ReadParam(m, iter, &r->b) &&
ReadParam(m, iter, &r->c) &&
@@ -982,79 +1005,13 @@
template <>
struct ParamTraits<webkit_glue::WebApplicationInfo> {
typedef webkit_glue::WebApplicationInfo param_type;
- static void Write(IPC::Message* m, const param_type& p);
- static bool Read(const IPC::Message* m, void** iter, param_type* r);
+ static void Write(Message* m, const param_type& p);
+ static bool Read(const Message* m, void** iter, param_type* r);
static void Log(const param_type& p, std::wstring* l);
};
-// Traits for ViewMsg_FindInPageMsg_Request structure to pack/unpack.
-template <>
-struct ParamTraits<FindInPageRequest> {
- typedef FindInPageRequest param_type;
- static void Write(IPC::Message* m, const param_type& p) {
- WriteParam(m, p.request_id);
- WriteParam(m, p.search_string);
- WriteParam(m, p.forward);
- WriteParam(m, p.match_case);
- WriteParam(m, p.find_next);
- }
- static bool Read(const IPC::Message* m, void** iter, param_type* p) {
- return
- ReadParam(m, iter, &p->request_id) &&
- ReadParam(m, iter, &p->search_string) &&
- ReadParam(m, iter, &p->forward) &&
- ReadParam(m, iter, &p->match_case) &&
- ReadParam(m, iter, &p->find_next);
- }
- static void Log(const param_type& p, std::wstring* l) {
- l->append(L"<FindInPageRequest>");
- }
-};
-namespace IPC {
-
//-----------------------------------------------------------------------------
-// An iterator class for reading the fields contained within a Message.
-
-class MessageIterator {
- public:
- explicit MessageIterator(const Message& m) : msg_(m), iter_(NULL) {
- }
- int NextInt() const {
- int val;
- if (!msg_.ReadInt(&iter_, &val))
- NOTREACHED();
- return val;
- }
- intptr_t NextIntPtr() const {
- intptr_t val;
- if (!msg_.ReadIntPtr(&iter_, &val))
- NOTREACHED();
- return val;
- }
- const std::string NextString() const {
- std::string val;
- if (!msg_.ReadString(&iter_, &val))
- NOTREACHED();
- return val;
- }
- const std::wstring NextWString() const {
- std::wstring val;
- if (!msg_.ReadWString(&iter_, &val))
- NOTREACHED();
- return val;
- }
- const void NextData(const char** data, int* length) const {
- if (!msg_.ReadData(&iter_, data, length)) {
- NOTREACHED();
- }
- }
- private:
- const Message& msg_;
- mutable void* iter_;
-};
-
-//-----------------------------------------------------------------------------
// Generic message subclasses
// Used for asynchronous messages.
@@ -1068,7 +1025,7 @@
WriteParam(this, p);
}
- static bool Read(const IPC::Message* msg, Param* p) {
+ static bool Read(const Message* msg, Param* p) {
void* iter = NULL;
bool rv = ReadParam(msg, &iter, p);
DCHECK(rv) << "Error deserializing message " << msg->type();
@@ -1077,7 +1034,7 @@
// Generic dispatcher. Should cover most cases.
template<class T, class Method>
- static bool Dispatch(const IPC::Message* msg, T* obj, Method func) {
+ static bool Dispatch(const Message* msg, T* obj, Method func) {
Param p;
if (Read(msg, &p)) {
DispatchToMethod(obj, func, p);
@@ -1090,7 +1047,7 @@
// needs the message as well. They assume that "Param" is a type of Tuple
// (except the one arg case, as there is no Tuple1).
template<class T, typename TA>
- static bool Dispatch(const IPC::Message* msg, T* obj,
+ static bool Dispatch(const Message* msg, T* obj,
void (T::*func)(const Message&, TA)) {
Param p;
if (Read(msg, &p)) {
@@ -1101,7 +1058,7 @@
}
template<class T, typename TA, typename TB>
- static bool Dispatch(const IPC::Message* msg, T* obj,
+ static bool Dispatch(const Message* msg, T* obj,
void (T::*func)(const Message&, TA, TB)) {
Param p;
if (Read(msg, &p)) {
@@ -1112,7 +1069,7 @@
}
template<class T, typename TA, typename TB, typename TC>
- static bool Dispatch(const IPC::Message* msg, T* obj,
+ static bool Dispatch(const Message* msg, T* obj,
void (T::*func)(const Message&, TA, TB, TC)) {
Param p;
if (Read(msg, &p)) {
@@ -1123,7 +1080,7 @@
}
template<class T, typename TA, typename TB, typename TC, typename TD>
- static bool Dispatch(const IPC::Message* msg, T* obj,
+ static bool Dispatch(const Message* msg, T* obj,
void (T::*func)(const Message&, TA, TB, TC, TD)) {
Param p;
if (Read(msg, &p)) {
@@ -1135,7 +1092,7 @@
template<class T, typename TA, typename TB, typename TC, typename TD,
typename TE>
- static bool Dispatch(const IPC::Message* msg, T* obj,
+ static bool Dispatch(const Message* msg, T* obj,
void (T::*func)(const Message&, TA, TB, TC, TD, TE)) {
Param p;
if (Read(msg, &p)) {
@@ -1145,59 +1102,11 @@
return false;
}
- static void Log(const IPC::Message* msg, std::wstring* l) {
+ static void Log(const Message* msg, std::wstring* l) {
Param p;
if (Read(msg, &p))
LogParam(p, l);
}
-
- // Functions used to do manual unpacking. Only used by the automation code,
- // these should go away once that code uses SyncChannel.
- template<typename TA, typename TB>
- static bool Read(const IPC::Message* msg, TA* a, TB* b) {
- ParamType params;
- if (!Read(msg, &params))
- return false;
- *a = params.a;
- *b = params.b;
- return true;
- }
-
- template<typename TA, typename TB, typename TC>
- static bool Read(const IPC::Message* msg, TA* a, TB* b, TC* c) {
- ParamType params;
- if (!Read(msg, &params))
- return false;
- *a = params.a;
- *b = params.b;
- *c = params.c;
- return true;
- }
-
- template<typename TA, typename TB, typename TC, typename TD>
- static bool Read(const IPC::Message* msg, TA* a, TB* b, TC* c, TD* d) {
- ParamType params;
- if (!Read(msg, &params))
- return false;
- *a = params.a;
- *b = params.b;
- *c = params.c;
- *d = params.d;
- return true;
- }
-
- template<typename TA, typename TB, typename TC, typename TD, typename TE>
- static bool Read(const IPC::Message* msg, TA* a, TB* b, TC* c, TD* d, TE* e) {
- ParamType params;
- if (!Read(msg, &params))
- return false;
- *a = params.a;
- *b = params.b;
- *c = params.c;
- *d = params.d;
- *e = params.e;
- return true;
- }
};
// This class assumes that its template argument is a RefTuple (a Tuple with
@@ -1229,7 +1138,7 @@
WriteParam(this, send);
}
- static void Log(const IPC::Message* msg, std::wstring* l) {
+ static void Log(const Message* msg, std::wstring* l) {
if (msg->is_sync()) {
SendParam p;
void* iter = SyncMessage::GetDataIterator(msg);
@@ -1254,7 +1163,7 @@
}
template<class T, class Method>
- static bool Dispatch(const IPC::Message* msg, T* obj, Method func) {
+ static bool Dispatch(const Message* msg, T* obj, Method func) {
SendParam send_params;
void* iter = GetDataIterator(msg);
Message* reply = GenerateReply(msg);
@@ -1282,7 +1191,7 @@
}
template<class T, class Method>
- static bool DispatchDelayReply(const IPC::Message* msg, T* obj, Method func) {
+ static bool DispatchDelayReply(const Message* msg, T* obj, Method func) {
SendParam send_params;
void* iter = GetDataIterator(msg);
Message* reply = GenerateReply(msg);
@@ -1343,6 +1252,32 @@
}
};
+// Traits for ViewMsg_FindInPageMsg_Request structure to pack/unpack.
+template <>
+struct ParamTraits<FindInPageRequest> {
+ typedef FindInPageRequest param_type;
+ static void Write(Message* m, const param_type& p) {
+ WriteParam(m, p.request_id);
+ WriteParam(m, p.search_string);
+ WriteParam(m, p.forward);
+ WriteParam(m, p.match_case);
+ WriteParam(m, p.find_next);
+ }
+ static bool Read(const Message* m, void** iter, param_type* p) {
+ return
+ ReadParam(m, iter, &p->request_id) &&
+ ReadParam(m, iter, &p->search_string) &&
+ ReadParam(m, iter, &p->forward) &&
+ ReadParam(m, iter, &p->match_case) &&
+ ReadParam(m, iter, &p->find_next);
+ }
+ static void Log(const param_type& p, std::wstring* l) {
+ l->append(L"<FindInPageRequest>");
+ }
+};
+
+//-----------------------------------------------------------------------------
+
} // namespace IPC
#endif // CHROME_COMMON_IPC_MESSAGE_UTILS_H_
« no previous file with comments | « chrome/common/ipc_message_unittest.cc ('k') | chrome/common/ipc_message_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698