summaryrefslogtreecommitdiffstats
path: root/ipc
diff options
context:
space:
mode:
authortsepez@chromium.org <tsepez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-30 21:15:57 +0000
committertsepez@chromium.org <tsepez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-30 21:15:57 +0000
commitc410e02b297c491b5ad1cf49606679edaf018dba (patch)
tree7887c4e7ac1819f78c8d02030b16366997c38448 /ipc
parent1c6a905fc512c9276e619af5c9fb7ad11369bc3b (diff)
downloadchromium_src-c410e02b297c491b5ad1cf49606679edaf018dba.zip
chromium_src-c410e02b297c491b5ad1cf49606679edaf018dba.tar.gz
chromium_src-c410e02b297c491b5ad1cf49606679edaf018dba.tar.bz2
Move ParamTraits<base::PlatformFileInfo> and <base::PlatformFileError>.
Move thse to ipc/ from content/common so that they may be used in directories parallel to content/. Pre-requisite for fixing the associated bug. BUG=127624 Review URL: https://chromiumcodereview.appspot.com/10442072 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@139636 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ipc')
-rw-r--r--ipc/ipc_message_utils.cc43
-rw-r--r--ipc/ipc_message_utils.h14
2 files changed, 57 insertions, 0 deletions
diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc
index 8f27c52..3caf2a4 100644
--- a/ipc/ipc_message_utils.cc
+++ b/ipc/ipc_message_utils.cc
@@ -251,6 +251,49 @@ void ParamTraits<unsigned short>::Log(const param_type& p, std::string* l) {
l->append(base::UintToString(p));
}
+void ParamTraits<base::PlatformFileInfo>::Write(
+ Message* m, const param_type& p) {
+ WriteParam(m, p.size);
+ WriteParam(m, p.is_directory);
+ WriteParam(m, p.last_modified.ToDoubleT());
+ WriteParam(m, p.last_accessed.ToDoubleT());
+ WriteParam(m, p.creation_time.ToDoubleT());
+}
+
+bool ParamTraits<base::PlatformFileInfo>::Read(
+ const Message* m, PickleIterator* iter, param_type* p) {
+ double last_modified;
+ double last_accessed;
+ double creation_time;
+ bool result =
+ ReadParam(m, iter, &p->size) &&
+ ReadParam(m, iter, &p->is_directory) &&
+ ReadParam(m, iter, &last_modified) &&
+ ReadParam(m, iter, &last_accessed) &&
+ ReadParam(m, iter, &creation_time);
+ if (result) {
+ p->last_modified = base::Time::FromDoubleT(last_modified);
+ p->last_accessed = base::Time::FromDoubleT(last_accessed);
+ p->creation_time = base::Time::FromDoubleT(creation_time);
+ }
+ return result;
+}
+
+void ParamTraits<base::PlatformFileInfo>::Log(
+ const param_type& p, std::string* l) {
+ l->append("(");
+ LogParam(p.size, l);
+ l->append(",");
+ LogParam(p.is_directory, l);
+ l->append(",");
+ LogParam(p.last_modified.ToDoubleT(), l);
+ l->append(",");
+ LogParam(p.last_accessed.ToDoubleT(), l);
+ l->append(",");
+ LogParam(p.creation_time.ToDoubleT(), l);
+ l->append(")");
+}
+
void ParamTraits<base::Time>::Write(Message* m, const param_type& p) {
ParamTraits<int64>::Write(m, p.ToInternalValue());
}
diff --git a/ipc/ipc_message_utils.h b/ipc/ipc_message_utils.h
index 9e259f1..d744389 100644
--- a/ipc/ipc_message_utils.h
+++ b/ipc/ipc_message_utils.h
@@ -13,6 +13,7 @@
#include <vector>
#include "base/format_macros.h"
+#include "base/platform_file.h"
#include "base/string16.h"
#include "base/stringprintf.h"
#include "base/string_util.h"
@@ -335,6 +336,19 @@ struct ParamTraits<double> {
};
template <>
+struct IPC_EXPORT ParamTraits<base::PlatformFileInfo> {
+ typedef base::PlatformFileInfo param_type;
+ static void Write(Message* m, const param_type& p);
+ static bool Read(const Message* m, PickleIterator* iter, param_type* r);
+ static void Log(const param_type& p, std::string* l);
+};
+
+template <>
+struct SimilarTypeTraits<base::PlatformFileError> {
+ typedef int Type;
+};
+
+template <>
struct IPC_EXPORT ParamTraits<base::Time> {
typedef base::Time param_type;
static void Write(Message* m, const param_type& p);