| Index: chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
 | 
| diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
 | 
| index c0848d869f53fa2a0b52dcdd4f4e0c6931762799..071e3921fd1bf00b4aaca50bf4c52e517cebeedd 100644
 | 
| --- a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
 | 
| +++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
 | 
| @@ -4,6 +4,8 @@
 | 
|  
 | 
|  #include "chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h"
 | 
|  
 | 
| +#include "chrome/browser/profiles/profiles_state.h"
 | 
| +#include "chrome/browser/ui/views/new_avatar_button.h"
 | 
|  #include "ui/gfx/font.h"
 | 
|  #include "ui/views/controls/button/image_button.h"
 | 
|  #include "ui/views/controls/label.h"
 | 
| @@ -49,6 +51,9 @@ const int kAvatarLeftSpacing = 2;
 | 
|  // Space between the right edge of the avatar and the tabstrip.
 | 
|  const int kAvatarRightSpacing = -4;
 | 
|  
 | 
| +// How far the new avatar button is from the closest caption button.
 | 
| +const int kNewAvatarButtonOffset = 5;
 | 
| +
 | 
|  // In restored mode, the New Tab button isn't at the same height as the caption
 | 
|  // buttons, but the space will look cluttered if it actually slides under them,
 | 
|  // so we stop it when the gap between the two is down to 5 px.
 | 
| @@ -101,7 +106,8 @@ OpaqueBrowserFrameViewLayout::OpaqueBrowserFrameViewLayout(
 | 
|        window_icon_(NULL),
 | 
|        window_title_(NULL),
 | 
|        avatar_label_(NULL),
 | 
| -      avatar_button_(NULL) {
 | 
| +      avatar_button_(NULL),
 | 
| +      new_avatar_button_(NULL) {
 | 
|    trailing_buttons_.push_back(views::FRAME_BUTTON_MINIMIZE);
 | 
|    trailing_buttons_.push_back(views::FRAME_BUTTON_MAXIMIZE);
 | 
|    trailing_buttons_.push_back(views::FRAME_BUTTON_CLOSE);
 | 
| @@ -355,6 +361,24 @@ void OpaqueBrowserFrameViewLayout::LayoutTitleBar(views::View* host) {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +void OpaqueBrowserFrameViewLayout::LayoutNewStyleAvatar(views::View* host) {
 | 
| +  gfx::Size label_size = new_avatar_button_->GetPreferredSize();
 | 
| +  int button_size_with_offset = kNewAvatarButtonOffset + label_size.width();
 | 
| +
 | 
| +  int button_x = host->width() - trailing_button_start_ -
 | 
| +      button_size_with_offset;
 | 
| +  int button_y = CaptionButtonY(false);
 | 
| +
 | 
| +  trailing_button_start_ += button_size_with_offset;
 | 
| +  minimum_size_for_buttons_ += button_size_with_offset;
 | 
| +
 | 
| +  new_avatar_button_->SetBounds(
 | 
| +      button_x,
 | 
| +      button_y,
 | 
| +      label_size.width(),
 | 
| +      button_y + kCaptionButtonHeightWithPadding);
 | 
| +}
 | 
| +
 | 
|  void OpaqueBrowserFrameViewLayout::LayoutAvatar() {
 | 
|    // Even though the avatar is used for both incognito and profiles we always
 | 
|    // use the incognito icon to layout the avatar button. The profile icon
 | 
| @@ -567,6 +591,9 @@ void OpaqueBrowserFrameViewLayout::SetView(int id, views::View* view) {
 | 
|      case VIEW_ID_AVATAR_BUTTON:
 | 
|        avatar_button_ = view;
 | 
|        break;
 | 
| +    case VIEW_ID_NEW_AVATAR_BUTTON:
 | 
| +      new_avatar_button_ = static_cast<NewAvatarButton*>(view);
 | 
| +      break;
 | 
|      default:
 | 
|        NOTIMPLEMENTED() << "Unknown view id " << id;
 | 
|        break;
 | 
| @@ -593,7 +620,11 @@ void OpaqueBrowserFrameViewLayout::Layout(views::View* host) {
 | 
|    // on the trailing side.
 | 
|    leading_button_start_++;
 | 
|  
 | 
| -  LayoutAvatar();
 | 
| +  if (delegate_->IsRegularOrGuestSession() &&
 | 
| +      profiles::IsNewProfileManagementEnabled())
 | 
| +    LayoutNewStyleAvatar(host);
 | 
| +  else
 | 
| +    LayoutAvatar();
 | 
|  
 | 
|    client_view_bounds_ = CalculateClientAreaBounds(
 | 
|        host->width(), host->height());
 | 
| 
 |