| Index: cc/ipc/cc_param_traits.cc | 
| diff --git a/cc/ipc/cc_param_traits.cc b/cc/ipc/cc_param_traits.cc | 
| index 6d7eb5291c39a73ff998c1772dd6410112761c67..fdbb431976336c5872513da18a7bdf3a67fd20f2 100644 | 
| --- a/cc/ipc/cc_param_traits.cc | 
| +++ b/cc/ipc/cc_param_traits.cc | 
| @@ -568,15 +568,51 @@ void ParamTraits<cc::RenderPass>::Log(const param_type& p, std::string* l) { | 
| l->append("])"); | 
| } | 
|  | 
| +void ParamTraits<cc::FrameSinkId>::GetSize(base::PickleSizer* s, | 
| +                                           const param_type& p) { | 
| +  GetParamSize(s, p.client_id()); | 
| +  GetParamSize(s, p.sink_id()); | 
| +} | 
| + | 
| +void ParamTraits<cc::FrameSinkId>::Write(base::Pickle* m, const param_type& p) { | 
| +  WriteParam(m, p.client_id()); | 
| +  WriteParam(m, p.sink_id()); | 
| +} | 
| + | 
| +bool ParamTraits<cc::FrameSinkId>::Read(const base::Pickle* m, | 
| +                                        base::PickleIterator* iter, | 
| +                                        param_type* p) { | 
| +  uint32_t client_id; | 
| +  if (!ReadParam(m, iter, &client_id)) | 
| +    return false; | 
| + | 
| +  uint32_t sink_id; | 
| +  if (!ReadParam(m, iter, &sink_id)) | 
| +    return false; | 
| + | 
| +  *p = cc::FrameSinkId(client_id, sink_id); | 
| +  return true; | 
| +} | 
| + | 
| +void ParamTraits<cc::FrameSinkId>::Log(const param_type& p, std::string* l) { | 
| +  l->append("FrameSinkId("); | 
| +  LogParam(p.client_id(), l); | 
| +  l->append(", "); | 
| +  LogParam(p.sink_id(), l); | 
| +  l->append(")"); | 
| +} | 
| + | 
| void ParamTraits<cc::SurfaceId>::GetSize(base::PickleSizer* s, | 
| const param_type& p) { | 
| GetParamSize(s, p.client_id()); | 
| +  GetParamSize(s, p.sink_id()); | 
| GetParamSize(s, p.local_id()); | 
| GetParamSize(s, p.nonce()); | 
| } | 
|  | 
| void ParamTraits<cc::SurfaceId>::Write(base::Pickle* m, const param_type& p) { | 
| WriteParam(m, p.client_id()); | 
| +  WriteParam(m, p.sink_id()); | 
| WriteParam(m, p.local_id()); | 
| WriteParam(m, p.nonce()); | 
| } | 
| @@ -588,6 +624,10 @@ bool ParamTraits<cc::SurfaceId>::Read(const base::Pickle* m, | 
| if (!ReadParam(m, iter, &client_id)) | 
| return false; | 
|  | 
| +  uint32_t sink_id; | 
| +  if (!ReadParam(m, iter, &sink_id)) | 
| +    return false; | 
| + | 
| uint32_t local_id; | 
| if (!ReadParam(m, iter, &local_id)) | 
| return false; | 
| @@ -596,7 +636,7 @@ bool ParamTraits<cc::SurfaceId>::Read(const base::Pickle* m, | 
| if (!ReadParam(m, iter, &nonce)) | 
| return false; | 
|  | 
| -  *p = cc::SurfaceId(client_id, local_id, nonce); | 
| +  *p = cc::SurfaceId(cc::FrameSinkId(client_id, sink_id), local_id, nonce); | 
| return true; | 
| } | 
|  | 
| @@ -604,6 +644,8 @@ void ParamTraits<cc::SurfaceId>::Log(const param_type& p, std::string* l) { | 
| l->append("SurfaceId("); | 
| LogParam(p.client_id(), l); | 
| l->append(", "); | 
| +  LogParam(p.sink_id(), l); | 
| +  l->append(", "); | 
| LogParam(p.local_id(), l); | 
| l->append(", "); | 
| LogParam(p.nonce(), l); | 
|  |