| Index: remoting/base/decoder_vp8.cc
 | 
| diff --git a/remoting/base/decoder_vp8.cc b/remoting/base/decoder_vp8.cc
 | 
| index 234fc079799e2735f0e70e08d204dc55b4a2e599..4befd6944ed543aeea1a00aa657a39ae0551b2d9 100644
 | 
| --- a/remoting/base/decoder_vp8.cc
 | 
| +++ b/remoting/base/decoder_vp8.cc
 | 
| @@ -89,13 +89,14 @@ Decoder::DecodeResult DecoderVp8::DecodePacket(const VideoPacket* packet) {
 | 
|    }
 | 
|    last_image_ = image;
 | 
|  
 | 
| -  std::vector<gfx::Rect> rects;
 | 
| +  RectVector rects;
 | 
| +  rects.reserve(packet->dirty_rects_size());
 | 
|    for (int i = 0; i < packet->dirty_rects_size(); ++i) {
 | 
| -    gfx::Rect r = gfx::Rect(packet->dirty_rects(i).x(),
 | 
| -                            packet->dirty_rects(i).y(),
 | 
| -                            packet->dirty_rects(i).width(),
 | 
| -                            packet->dirty_rects(i).height());
 | 
| -    rects.push_back(r);
 | 
| +    Rect remoting_rect = packet->dirty_rects(i);
 | 
| +    rects.push_back(SkIRect::MakeXYWH(remoting_rect.x(),
 | 
| +                                      remoting_rect.y(),
 | 
| +                                      remoting_rect.width(),
 | 
| +                                      remoting_rect.height()));
 | 
|    }
 | 
|  
 | 
|    if (!DoScaling())
 | 
| @@ -105,7 +106,7 @@ Decoder::DecodeResult DecoderVp8::DecodePacket(const VideoPacket* packet) {
 | 
|    return DECODE_DONE;
 | 
|  }
 | 
|  
 | 
| -void DecoderVp8::GetUpdatedRects(UpdatedRects* rects) {
 | 
| +void DecoderVp8::GetUpdatedRects(RectVector* rects) {
 | 
|    rects->swap(updated_rects_);
 | 
|  }
 | 
|  
 | 
| @@ -136,11 +137,11 @@ void DecoderVp8::SetScaleRatios(double horizontal_ratio,
 | 
|    vertical_scale_ratio_ = vertical_ratio;
 | 
|  }
 | 
|  
 | 
| -void DecoderVp8::SetClipRect(const gfx::Rect& clip_rect) {
 | 
| +void DecoderVp8::SetClipRect(const SkIRect& clip_rect) {
 | 
|    clip_rect_ = clip_rect;
 | 
|  }
 | 
|  
 | 
| -void DecoderVp8::RefreshRects(const std::vector<gfx::Rect>& rects) {
 | 
| +void DecoderVp8::RefreshRects(const RectVector& rects) {
 | 
|    if (!DoScaling())
 | 
|      ConvertRects(rects, &updated_rects_);
 | 
|    else
 | 
| @@ -151,8 +152,8 @@ bool DecoderVp8::DoScaling() const {
 | 
|    return horizontal_scale_ratio_ != 1.0 || vertical_scale_ratio_ != 1.0;
 | 
|  }
 | 
|  
 | 
| -void DecoderVp8::ConvertRects(const UpdatedRects& rects,
 | 
| -                              UpdatedRects* output_rects) {
 | 
| +void DecoderVp8::ConvertRects(const RectVector& rects,
 | 
| +                              RectVector* output_rects) {
 | 
|    if (!last_image_)
 | 
|      return;
 | 
|  
 | 
| @@ -160,24 +161,24 @@ void DecoderVp8::ConvertRects(const UpdatedRects& rects,
 | 
|    const int stride = frame_->stride(media::VideoFrame::kRGBPlane);
 | 
|  
 | 
|    output_rects->clear();
 | 
| +  output_rects->reserve(rects.size());
 | 
|    for (size_t i = 0; i < rects.size(); ++i) {
 | 
| +    // Clip by the clipping rectangle first.
 | 
| +    SkIRect dest_rect = rects[i];
 | 
| +    if (!dest_rect.intersect(clip_rect_))
 | 
| +      continue;
 | 
| +
 | 
|      // Round down the image width and height.
 | 
|      int image_width = RoundToTwosMultiple(last_image_->d_w);
 | 
|      int image_height = RoundToTwosMultiple(last_image_->d_h);
 | 
|  
 | 
| -    // Clip by the clipping rectangle first.
 | 
| -    gfx::Rect dest_rect = rects[i].Intersect(clip_rect_);
 | 
| -
 | 
|      // Then clip by the rounded down dimension of the image for safety.
 | 
| -    dest_rect = dest_rect.Intersect(
 | 
| -        gfx::Rect(0, 0, image_width, image_height));
 | 
| +    if (!dest_rect.intersect(SkIRect::MakeWH(image_width, image_height)))
 | 
| +      continue;
 | 
|  
 | 
|      // Align the rectangle to avoid artifacts in color space conversion.
 | 
|      dest_rect = AlignRect(dest_rect);
 | 
|  
 | 
| -    if (dest_rect.IsEmpty())
 | 
| -      continue;
 | 
| -
 | 
|      ConvertYUVToRGB32WithRect(last_image_->planes[0],
 | 
|                                last_image_->planes[1],
 | 
|                                last_image_->planes[2],
 | 
| @@ -190,8 +191,8 @@ void DecoderVp8::ConvertRects(const UpdatedRects& rects,
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -void DecoderVp8::ScaleAndConvertRects(const UpdatedRects& rects,
 | 
| -                                      UpdatedRects* output_rects) {
 | 
| +void DecoderVp8::ScaleAndConvertRects(const RectVector& rects,
 | 
| +                                      RectVector* output_rects) {
 | 
|    if (!last_image_)
 | 
|      return;
 | 
|  
 | 
| @@ -199,24 +200,23 @@ void DecoderVp8::ScaleAndConvertRects(const UpdatedRects& rects,
 | 
|    const int stride = frame_->stride(media::VideoFrame::kRGBPlane);
 | 
|  
 | 
|    output_rects->clear();
 | 
| +  output_rects->reserve(rects.size());
 | 
|    for (size_t i = 0; i < rects.size(); ++i) {
 | 
|      // Round down the image width and height.
 | 
|      int image_width = RoundToTwosMultiple(last_image_->d_w);
 | 
|      int image_height = RoundToTwosMultiple(last_image_->d_h);
 | 
|  
 | 
|      // Clip by the rounded down dimension of the image for safety.
 | 
| -    gfx::Rect dest_rect =
 | 
| -        rects[i].Intersect(gfx::Rect(0, 0, image_width, image_height));
 | 
| +    SkIRect dest_rect = rects[i];
 | 
| +    if (!dest_rect.intersect(SkIRect::MakeWH(image_width, image_height)))
 | 
| +      continue;
 | 
|  
 | 
|      // Align the rectangle to avoid artifacts in color space conversion.
 | 
|      dest_rect = AlignRect(dest_rect);
 | 
|  
 | 
| -    if (dest_rect.IsEmpty())
 | 
| -      continue;
 | 
| -
 | 
| -    gfx::Rect scaled_rect = ScaleRect(dest_rect,
 | 
| -                                      horizontal_scale_ratio_,
 | 
| -                                      vertical_scale_ratio_);
 | 
| +    SkIRect scaled_rect = ScaleRect(dest_rect,
 | 
| +                                    horizontal_scale_ratio_,
 | 
| +                                    vertical_scale_ratio_);
 | 
|  
 | 
|      ScaleYUVToRGB32WithRect(last_image_->planes[0],
 | 
|                              last_image_->planes[1],
 | 
| 
 |