Chromium Code Reviews| Index: content/public/common/common_param_traits.cc |
| diff --git a/content/public/common/common_param_traits.cc b/content/public/common/common_param_traits.cc |
| index f2a5c8a0e9d66798f1030cc6047a4ba0ad1872ee..db7854169b300f8f4b8799827abfa10753145a16 100644 |
| --- a/content/public/common/common_param_traits.cc |
| +++ b/content/public/common/common_param_traits.cc |
| @@ -192,19 +192,21 @@ void ParamTraits<gfx::PointF>::Log(const gfx::PointF& v, std::string* l) { |
| void ParamTraits<gfx::Size>::Write(Message* m, const gfx::Size& p) { |
| DCHECK_GE(p.width(), 0); |
| DCHECK_GE(p.height(), 0); |
| - m->WriteInt(p.width()); |
| - m->WriteInt(p.height()); |
| + int values[2] = { p.width(), p.height() }; |
| + m->WriteBytes(&values, sizeof(int) * 2); |
| } |
| bool ParamTraits<gfx::Size>::Read(const Message* m, |
| PickleIterator* iter, |
| gfx::Size* r) { |
| - int w, h; |
| - if (!m->ReadInt(iter, &w) || w < 0 || |
| - !m->ReadInt(iter, &h) || h < 0) |
| + const char* char_values; |
| + if (!m->ReadBytes(iter, &char_values, sizeof(int) * 2)) |
| return false; |
| - r->set_width(w); |
| - r->set_height(h); |
| + const int* values = reinterpret_cast<const int*>(char_values); |
| + if (values[0] < 0 || values[1] < 0) |
| + return false; |
| + r->set_width(values[0]); |
| + r->set_width(values[1]); |
|
piman
2013/10/22 20:14:38
set_height
|
| return true; |
| } |
| @@ -213,19 +215,19 @@ void ParamTraits<gfx::Size>::Log(const gfx::Size& p, std::string* l) { |
| } |
| void ParamTraits<gfx::SizeF>::Write(Message* m, const gfx::SizeF& p) { |
| - ParamTraits<float>::Write(m, p.width()); |
| - ParamTraits<float>::Write(m, p.height()); |
| + float values[2] = { p.width(), p.height() }; |
| + m->WriteBytes(&values, sizeof(float) * 2); |
| } |
| bool ParamTraits<gfx::SizeF>::Read(const Message* m, |
| PickleIterator* iter, |
| - gfx::SizeF* p) { |
| - float w, h; |
| - if (!ParamTraits<float>::Read(m, iter, &w) || |
| - !ParamTraits<float>::Read(m, iter, &h)) |
| + gfx::SizeF* r) { |
| + const char* char_values; |
| + if (!m->ReadBytes(iter, &char_values, sizeof(float) * 2)) |
| return false; |
| - p->set_width(w); |
| - p->set_height(h); |
| + const float* values = reinterpret_cast<const float*>(char_values); |
| + r->set_width(values[0]); |
| + r->set_width(values[1]); |
|
piman
2013/10/22 20:14:38
set_height
|
| return true; |
| } |
| @@ -233,20 +235,22 @@ void ParamTraits<gfx::SizeF>::Log(const gfx::SizeF& p, std::string* l) { |
| l->append(base::StringPrintf("(%f, %f)", p.width(), p.height())); |
| } |
| -void ParamTraits<gfx::Vector2d>::Write(Message* m, const gfx::Vector2d& v) { |
| - m->WriteInt(v.x()); |
| - m->WriteInt(v.y()); |
| +void ParamTraits<gfx::Vector2d>::Write(Message* m, const gfx::Vector2d& p) { |
| + int values[2] = { p.x(), p.y() }; |
| + m->WriteBytes(&values, sizeof(int) * 2); |
| } |
| bool ParamTraits<gfx::Vector2d>::Read(const Message* m, |
| PickleIterator* iter, |
| gfx::Vector2d* r) { |
| - int x, y; |
| - if (!m->ReadInt(iter, &x) || |
| - !m->ReadInt(iter, &y)) |
| + const char* char_values; |
| + if (!m->ReadBytes(iter, &char_values, sizeof(int) * 2)) |
| return false; |
| - r->set_x(x); |
| - r->set_y(y); |
| + const int* values = reinterpret_cast<const int*>(char_values); |
| + if (values[0] < 0 || values[1] < 0) |
| + return false; |
| + r->set_x(values[0]); |
| + r->set_y(values[1]); |
| return true; |
| } |
| @@ -254,20 +258,20 @@ void ParamTraits<gfx::Vector2d>::Log(const gfx::Vector2d& v, std::string* l) { |
| l->append(base::StringPrintf("(%d, %d)", v.x(), v.y())); |
| } |
| -void ParamTraits<gfx::Vector2dF>::Write(Message* m, const gfx::Vector2dF& v) { |
| - ParamTraits<float>::Write(m, v.x()); |
| - ParamTraits<float>::Write(m, v.y()); |
| +void ParamTraits<gfx::Vector2dF>::Write(Message* m, const gfx::Vector2dF& p) { |
| + float values[2] = { p.x(), p.y() }; |
| + m->WriteBytes(&values, sizeof(float) * 2); |
| } |
| bool ParamTraits<gfx::Vector2dF>::Read(const Message* m, |
| PickleIterator* iter, |
| gfx::Vector2dF* r) { |
| - float x, y; |
| - if (!ParamTraits<float>::Read(m, iter, &x) || |
| - !ParamTraits<float>::Read(m, iter, &y)) |
| + const char* char_values; |
| + if (!m->ReadBytes(iter, &char_values, sizeof(float) * 2)) |
| return false; |
| - r->set_x(x); |
| - r->set_y(y); |
| + const float* values = reinterpret_cast<const float*>(char_values); |
| + r->set_x(values[0]); |
| + r->set_y(values[1]); |
| return true; |
| } |
| @@ -276,20 +280,18 @@ void ParamTraits<gfx::Vector2dF>::Log(const gfx::Vector2dF& v, std::string* l) { |
| } |
| void ParamTraits<gfx::Rect>::Write(Message* m, const gfx::Rect& p) { |
| - WriteParam(m, p.origin()); |
| - WriteParam(m, p.size()); |
| + int values[4] = { p.x(), p.y(), p.width(), p.height() }; |
| + m->WriteBytes(&values, sizeof(int) * 4); |
| } |
| bool ParamTraits<gfx::Rect>::Read(const Message* m, |
| PickleIterator* iter, |
| gfx::Rect* r) { |
| - gfx::Point origin; |
| - gfx::Size size; |
| - if (!ReadParam(m, iter, &origin) || |
| - !ReadParam(m, iter, &size)) |
| + const char* char_values; |
| + if (!m->ReadBytes(iter, &char_values, sizeof(int) * 4)) |
| return false; |
| - r->set_origin(origin); |
| - r->set_size(size); |
| + const int* values = reinterpret_cast<const int*>(char_values); |
| + r->SetRect(values[0], values[1], values[2], values[3]); |
| return true; |
| } |
| @@ -299,25 +301,18 @@ void ParamTraits<gfx::Rect>::Log(const gfx::Rect& p, std::string* l) { |
| } |
| void ParamTraits<gfx::RectF>::Write(Message* m, const gfx::RectF& p) { |
| - ParamTraits<float>::Write(m, p.x()); |
| - ParamTraits<float>::Write(m, p.y()); |
| - ParamTraits<float>::Write(m, p.width()); |
| - ParamTraits<float>::Write(m, p.height()); |
| + float values[4] = { p.x(), p.y(), p.width(), p.height() }; |
| + m->WriteBytes(&values, sizeof(float) * 4); |
| } |
| bool ParamTraits<gfx::RectF>::Read(const Message* m, |
| PickleIterator* iter, |
| gfx::RectF* r) { |
| - float x, y, w, h; |
| - if (!ParamTraits<float>::Read(m, iter, &x) || |
| - !ParamTraits<float>::Read(m, iter, &y) || |
| - !ParamTraits<float>::Read(m, iter, &w) || |
| - !ParamTraits<float>::Read(m, iter, &h)) |
| + const char* char_values; |
| + if (!m->ReadBytes(iter, &char_values, sizeof(float) * 4)) |
| return false; |
| - r->set_x(x); |
| - r->set_y(y); |
| - r->set_width(w); |
| - r->set_height(h); |
| + const float* values = reinterpret_cast<const float*>(char_values); |
| + r->SetRect(values[0], values[1], values[2], values[3]); |
| return true; |
| } |