| Index: chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
 | 
| diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc b/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
 | 
| index edf02a0f07ce54d1255879e9f45f6dba1c0ea7ec..ffddf48ce6ab3aeeaed621830853f73b0f1629b9 100644
 | 
| --- a/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
 | 
| +++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
 | 
| @@ -61,13 +61,13 @@ using content::WebContents;
 | 
|  
 | 
|  namespace {
 | 
|  
 | 
| +const int kContentEdgeShadowThickness =
 | 
| +    OpaqueBrowserFrameViewLayout::kContentEdgeShadowThickness;
 | 
| +
 | 
|  // In the window corners, the resize areas don't actually expand bigger, but the
 | 
|  // 16 px at the end of each edge triggers diagonal resizing.
 | 
|  const int kResizeAreaCornerSize = 16;
 | 
|  
 | 
| -// The content edge images have a shadow built into them.
 | 
| -const int kContentEdgeShadowThickness = 2;
 | 
| -
 | 
|  #if !defined(OS_WIN)
 | 
|  // The icon never shrinks below 16 px on a side.
 | 
|  const int kIconMinimumSize = 16;
 | 
| @@ -729,26 +729,25 @@ void OpaqueBrowserFrameView::PaintClientEdge(gfx::Canvas* canvas) const {
 | 
|    int y = client_bounds.y();
 | 
|    const int w = client_bounds.width();
 | 
|    const int right = client_bounds.right();
 | 
| -  const bool normal_mode = browser_view()->IsTabStripVisible();
 | 
| +  const bool tabstrip_visible = browser_view()->IsTabStripVisible();
 | 
|    const bool md = ui::MaterialDesignController::IsModeMaterial();
 | 
|    const ui::ThemeProvider* tp = GetThemeProvider();
 | 
|    const SkColor toolbar_color =
 | 
| -      normal_mode
 | 
| +      tabstrip_visible
 | 
|            ? tp->GetColor(ThemeProperties::COLOR_TOOLBAR)
 | 
|            : ThemeProperties::GetDefaultColor(ThemeProperties::COLOR_TOOLBAR,
 | 
|                                               browser_view()->IsOffTheRecord());
 | 
|  
 | 
|    const gfx::Rect toolbar_bounds(browser_view()->GetToolbarBounds());
 | 
|    int img_y_offset = 0;
 | 
| -  if (normal_mode) {
 | 
| +  if (tabstrip_visible) {
 | 
|      // Pre-Material Design, the client edge images start below the toolbar.  In
 | 
|      // MD the client edge images start at the top of the toolbar.
 | 
|      y += md ? toolbar_bounds.y() : toolbar_bounds.bottom();
 | 
|    } else {
 | 
|      // The toolbar isn't going to draw a top edge for us, so draw one ourselves.
 | 
|      if (IsToolbarVisible()) {
 | 
| -      y += toolbar_bounds.y() + kContentEdgeShadowThickness +
 | 
| -          kClientEdgeThickness;
 | 
| +      y += toolbar_bounds.y() + kClientEdgeThickness;
 | 
|      }
 | 
|      client_bounds.set_y(y);
 | 
|      client_bounds.Inset(-kClientEdgeThickness, -kClientEdgeThickness,
 | 
| @@ -789,17 +788,18 @@ void OpaqueBrowserFrameView::PaintClientEdge(gfx::Canvas* canvas) const {
 | 
|  
 | 
|    const int img_y = y + img_y_offset;
 | 
|    const int bottom = std::max(y, height() - NonClientBorderThickness());
 | 
| -  int height = bottom - img_y;
 | 
| +  const int height = bottom - y;
 | 
| +  const int img_h = bottom - img_y;
 | 
|  
 | 
|    // Draw the client edge images.  For non-MD, we fill the toolbar color
 | 
|    // underneath these images so they will lighten/darken it appropriately to
 | 
|    // create a "3D shaded" effect.  For MD, where we want a flatter appearance,
 | 
|    // we do the filling afterwards so the user sees the unmodified toolbar color.
 | 
|    if (!md)
 | 
| -    FillClientEdgeRects(x, y, right, bottom, toolbar_color, canvas);
 | 
| +    FillClientEdgeRects(x, y, w, height, toolbar_color, canvas);
 | 
|    gfx::ImageSkia* right_image = tp->GetImageSkiaNamed(IDR_CONTENT_RIGHT_SIDE);
 | 
|    const int img_w = right_image->width();
 | 
| -  canvas->TileImageInt(*right_image, right, img_y, img_w, height);
 | 
| +  canvas->TileImageInt(*right_image, right, img_y, img_w, img_h);
 | 
|    canvas->DrawImageInt(*tp->GetImageSkiaNamed(IDR_CONTENT_BOTTOM_RIGHT_CORNER),
 | 
|                         right, bottom);
 | 
|    gfx::ImageSkia* bottom_image =
 | 
| @@ -808,22 +808,23 @@ void OpaqueBrowserFrameView::PaintClientEdge(gfx::Canvas* canvas) const {
 | 
|    canvas->DrawImageInt(*tp->GetImageSkiaNamed(IDR_CONTENT_BOTTOM_LEFT_CORNER),
 | 
|                         x - img_w, bottom);
 | 
|    canvas->TileImageInt(*tp->GetImageSkiaNamed(IDR_CONTENT_LEFT_SIDE), x - img_w,
 | 
| -                       img_y, img_w, height);
 | 
| +                       img_y, img_w, img_h);
 | 
|    if (md)
 | 
| -    FillClientEdgeRects(x, y, right, bottom, toolbar_color, canvas);
 | 
| +    FillClientEdgeRects(x, y, w, height, toolbar_color, canvas);
 | 
|  }
 | 
|  
 | 
|  void OpaqueBrowserFrameView::FillClientEdgeRects(int x,
 | 
|                                                   int y,
 | 
| -                                                 int right,
 | 
| -                                                 int bottom,
 | 
| +                                                 int w,
 | 
| +                                                 int h,
 | 
|                                                   SkColor color,
 | 
|                                                   gfx::Canvas* canvas) const {
 | 
| -  gfx::Rect side(x - kClientEdgeThickness, y, kClientEdgeThickness,
 | 
| -                 bottom + kClientEdgeThickness - y);
 | 
| +  x -= kClientEdgeThickness;
 | 
| +  gfx::Rect side(x, y, kClientEdgeThickness, h);
 | 
|    canvas->FillRect(side, color);
 | 
| -  canvas->FillRect(gfx::Rect(x, bottom, right - x, kClientEdgeThickness),
 | 
| +  canvas->FillRect(gfx::Rect(x, y + h, w + (2 * kClientEdgeThickness),
 | 
| +                             kClientEdgeThickness),
 | 
|                     color);
 | 
| -  side.set_x(right);
 | 
| +  side.Offset(w + kClientEdgeThickness, 0);
 | 
|    canvas->FillRect(side, color);
 | 
|  }
 | 
| 
 |