| 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..0501683374c3fa67233cdef8a07985efd1d8f5cd 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_height(values[1]);
|
| 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_height(values[1]);
|
| return true;
|
| }
|
|
|
| @@ -233,20 +235,20 @@ 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);
|
| + r->set_x(values[0]);
|
| + r->set_y(values[1]);
|
| return true;
|
| }
|
|
|
| @@ -254,20 +256,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 +278,20 @@ 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);
|
| + if (values[2] < 0 || values[3] < 0)
|
| + return false;
|
| + 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;
|
| }
|
|
|
|
|