views: Make view::Views::GetPreferredSize() const.

Due to button refactoring patches, we now need to ask views for their
preferred sizes in const methods. Across the entire codebase, the
overwhelming majority of GetPreferredSize() implementations could be
const. There are only a few places where we can't, and they are usually
combining the sizing and layout code.

BookmarksBarView was simple enough to perform this separation. Most of
the other places were solved by adding "mutable" to value caches.

BUG=155363
[email protected], [email protected], [email protected], [email protected], pkasting, sky
TBR=jam, scheib

Review URL: https://codereview.chromium.org/273223002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@271682 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/apps/ui/views/app_window_frame_view.cc b/apps/ui/views/app_window_frame_view.cc
index 44ed714..6718bb4 100644
--- a/apps/ui/views/app_window_frame_view.cc
+++ b/apps/ui/views/app_window_frame_view.cc
@@ -229,7 +229,7 @@
   // We got nothing to say about no window mask.
 }
 
-gfx::Size AppWindowFrameView::GetPreferredSize() {
+gfx::Size AppWindowFrameView::GetPreferredSize() const {
   gfx::Size pref = widget_->client_view()->GetPreferredSize();
   gfx::Rect bounds(0, 0, pref.width(), pref.height());
   return widget_->non_client_view()
@@ -316,7 +316,7 @@
 
 const char* AppWindowFrameView::GetClassName() const { return kViewClassName; }
 
-gfx::Size AppWindowFrameView::GetMinimumSize() {
+gfx::Size AppWindowFrameView::GetMinimumSize() const {
   gfx::Size min_size = widget_->client_view()->GetMinimumSize();
   if (!draw_frame_)
     return min_size;
diff --git a/apps/ui/views/app_window_frame_view.h b/apps/ui/views/app_window_frame_view.h
index f29046f..1d13bbd6 100644
--- a/apps/ui/views/app_window_frame_view.h
+++ b/apps/ui/views/app_window_frame_view.h
@@ -77,11 +77,11 @@
   virtual void UpdateWindowTitle() OVERRIDE {}
 
   // views::View implementation.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual gfx::Size GetMaximumSize() OVERRIDE;
 
   // views::ButtonListener implementation.
diff --git a/apps/ui/views/native_app_window_views.cc b/apps/ui/views/native_app_window_views.cc
index 7784cca..88b9d27b 100644
--- a/apps/ui/views/native_app_window_views.cc
+++ b/apps/ui/views/native_app_window_views.cc
@@ -291,7 +291,7 @@
   }
 }
 
-gfx::Size NativeAppWindowViews::GetMinimumSize() {
+gfx::Size NativeAppWindowViews::GetMinimumSize() const {
   return size_constraints_.GetMinimumSize();
 }
 
diff --git a/apps/ui/views/native_app_window_views.h b/apps/ui/views/native_app_window_views.h
index 696cb2f..f42c4da9 100644
--- a/apps/ui/views/native_app_window_views.h
+++ b/apps/ui/views/native_app_window_views.h
@@ -127,7 +127,7 @@
   virtual void Layout() OVERRIDE;
   virtual void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual gfx::Size GetMaximumSize() OVERRIDE;
   virtual void OnFocus() OVERRIDE;
 
diff --git a/ash/accelerators/exit_warning_handler.cc b/ash/accelerators/exit_warning_handler.cc
index b3409e5..d2dc0f5 100644
--- a/ash/accelerators/exit_warning_handler.cc
+++ b/ash/accelerators/exit_warning_handler.cc
@@ -88,7 +88,7 @@
     SetLayoutManager(new views::FillLayout);
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(width_, height_);
   }
 
diff --git a/ash/frame/caption_buttons/frame_caption_button.cc b/ash/frame/caption_buttons/frame_caption_button.cc
index f7ecc2a1..c8d71c3 100644
--- a/ash/frame/caption_buttons/frame_caption_button.cc
+++ b/ash/frame/caption_buttons/frame_caption_button.cc
@@ -94,7 +94,7 @@
   return swap_images_animation_->is_animating();
 }
 
-gfx::Size FrameCaptionButton::GetPreferredSize() {
+gfx::Size FrameCaptionButton::GetPreferredSize() const {
   return hovered_background_image_.isNull() ?
       gfx::Size() : hovered_background_image_.size();
 }
diff --git a/ash/frame/caption_buttons/frame_caption_button.h b/ash/frame/caption_buttons/frame_caption_button.h
index f9a4de18..6fd9831 100644
--- a/ash/frame/caption_buttons/frame_caption_button.h
+++ b/ash/frame/caption_buttons/frame_caption_button.h
@@ -47,7 +47,7 @@
   bool IsAnimatingImageSwap() const;
 
   // views::View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
diff --git a/ash/frame/caption_buttons/frame_caption_button_container_view.cc b/ash/frame/caption_buttons/frame_caption_button_container_view.cc
index 06103f4..12bbb71 100644
--- a/ash/frame/caption_buttons/frame_caption_button_container_view.cc
+++ b/ash/frame/caption_buttons/frame_caption_button_container_view.cc
@@ -131,10 +131,10 @@
       !force_hidden && frame_->widget_delegate()->CanMaximize());
 }
 
-gfx::Size FrameCaptionButtonContainerView::GetPreferredSize() {
+gfx::Size FrameCaptionButtonContainerView::GetPreferredSize() const {
   int width = 0;
   for (int i = 0; i < child_count(); ++i) {
-    views::View* child = child_at(i);
+    const views::View* child = child_at(i);
     if (child->visible())
       width += child_at(i)->GetPreferredSize().width();
   }
diff --git a/ash/frame/caption_buttons/frame_caption_button_container_view.h b/ash/frame/caption_buttons/frame_caption_button_container_view.h
index d57695a7..9e67b93 100644
--- a/ash/frame/caption_buttons/frame_caption_button_container_view.h
+++ b/ash/frame/caption_buttons/frame_caption_button_container_view.h
@@ -91,7 +91,7 @@
   void UpdateSizeButtonVisibility(bool force_hidden);
 
   // views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
 
diff --git a/ash/frame/custom_frame_view_ash.cc b/ash/frame/custom_frame_view_ash.cc
index 68bc36a8..296dc3f1 100644
--- a/ash/frame/custom_frame_view_ash.cc
+++ b/ash/frame/custom_frame_view_ash.cc
@@ -467,7 +467,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // CustomFrameViewAsh, views::View overrides:
 
-gfx::Size CustomFrameViewAsh::GetPreferredSize() {
+gfx::Size CustomFrameViewAsh::GetPreferredSize() const {
   gfx::Size pref = frame_->client_view()->GetPreferredSize();
   gfx::Rect bounds(0, 0, pref.width(), pref.height());
   return frame_->non_client_view()->GetWindowBoundsForClientBounds(
@@ -478,7 +478,7 @@
   return kViewClassName;
 }
 
-gfx::Size CustomFrameViewAsh::GetMinimumSize() {
+gfx::Size CustomFrameViewAsh::GetMinimumSize() const {
   gfx::Size min_client_view_size(frame_->client_view()->GetMinimumSize());
   return gfx::Size(
       std::max(header_view_->GetMinimumWidth(), min_client_view_size.width()),
diff --git a/ash/frame/custom_frame_view_ash.h b/ash/frame/custom_frame_view_ash.h
index 3f024137..258f06a 100644
--- a/ash/frame/custom_frame_view_ash.h
+++ b/ash/frame/custom_frame_view_ash.h
@@ -53,9 +53,9 @@
   virtual void UpdateWindowTitle() OVERRIDE;
 
   // views::View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual gfx::Size GetMaximumSize() OVERRIDE;
   virtual void SchedulePaintInRect(const gfx::Rect& r) OVERRIDE;
   virtual bool HitTestRect(const gfx::Rect& rect) const OVERRIDE;
diff --git a/ash/frame/custom_frame_view_ash_unittest.cc b/ash/frame/custom_frame_view_ash_unittest.cc
index 7e702d1de..9751d7e 100644
--- a/ash/frame/custom_frame_view_ash_unittest.cc
+++ b/ash/frame/custom_frame_view_ash_unittest.cc
@@ -48,7 +48,7 @@
   virtual ~TestWidgetConstraintsDelegate() {}
 
   // views::View:
-  virtual gfx::Size GetMinimumSize() OVERRIDE {
+  virtual gfx::Size GetMinimumSize() const OVERRIDE {
     return minimum_size_;
   }
 
diff --git a/ash/ime/candidate_view.cc b/ash/ime/candidate_view.cc
index 4071071..e99167f 100644
--- a/ash/ime/candidate_view.cc
+++ b/ash/ime/candidate_view.cc
@@ -30,7 +30,7 @@
 
   // Returns the preferred size, but guarantees that the width has at
   // least kMinCandidateLabelWidth pixels.
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     gfx::Size size = Label::GetPreferredSize();
     size.SetToMax(gfx::Size(kMinCandidateLabelWidth, 0));
     size.SetToMin(gfx::Size(kMaxCandidateLabelWidth, size.height()));
@@ -272,7 +272,7 @@
   annotation_label_->SetBounds(x, 0, right - x, height());
 }
 
-gfx::Size CandidateView::GetPreferredSize() {
+gfx::Size CandidateView::GetPreferredSize() const {
   const int padding_width =
       orientation_ == ui::CandidateWindow::VERTICAL ? 4 : 6;
   gfx::Size size;
diff --git a/ash/ime/candidate_view.h b/ash/ime/candidate_view.h
index ad316d0..546f640 100644
--- a/ash/ime/candidate_view.h
+++ b/ash/ime/candidate_view.h
@@ -45,7 +45,7 @@
   // Overridden from View:
   virtual bool OnMouseDragged(const ui::MouseEvent& event) OVERRIDE;
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // The orientation of the candidate view.
   ui::CandidateWindow::Orientation orientation_;
diff --git a/ash/ime/candidate_window_view.cc b/ash/ime/candidate_window_view.cc
index 861e812..c759390 100644
--- a/ash/ime/candidate_window_view.cc
+++ b/ash/ime/candidate_window_view.cc
@@ -130,7 +130,7 @@
   }
 
  protected:
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     gfx::Size size = views::View::GetPreferredSize();
     size.SetToMax(gfx::Size(min_width_, 0));
     return size;
diff --git a/ash/ime/infolist_window.cc b/ash/ime/infolist_window.cc
index c29d623..429cca5 100644
--- a/ash/ime/infolist_window.cc
+++ b/ash/ime/infolist_window.cc
@@ -94,7 +94,7 @@
 
  private:
   // views::View implementation.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   void UpdateBackground();
 
@@ -143,7 +143,7 @@
   UpdateBackground();
 }
 
-gfx::Size InfolistEntryView::GetPreferredSize() {
+gfx::Size InfolistEntryView::GetPreferredSize() const {
   return gfx::Size(kInfolistEntryWidth, GetHeightForWidth(kInfolistEntryWidth));
 }
 
diff --git a/ash/ime/mode_indicator_view.cc b/ash/ime/mode_indicator_view.cc
index ccc1eaec..117d6c4 100644
--- a/ash/ime/mode_indicator_view.cc
+++ b/ash/ime/mode_indicator_view.cc
@@ -68,7 +68,7 @@
                &views::Widget::Close);
 }
 
-gfx::Size ModeIndicatorView::GetPreferredSize() {
+gfx::Size ModeIndicatorView::GetPreferredSize() const {
   gfx::Size size = label_view_->GetPreferredSize();
   size.SetToMax(gfx::Size(kMinSize, kMinSize));
   return size;
diff --git a/ash/ime/mode_indicator_view.h b/ash/ime/mode_indicator_view.h
index 853cd6e..aae64efc 100644
--- a/ash/ime/mode_indicator_view.h
+++ b/ash/ime/mode_indicator_view.h
@@ -31,7 +31,7 @@
   void ShowAndFadeOut();
 
   // views::BubbleDelegateView override:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  protected:
   // views::BubbleDelegateView override:
diff --git a/ash/popup_message.cc b/ash/popup_message.cc
index f321789..b83ba91 100644
--- a/ash/popup_message.cc
+++ b/ash/popup_message.cc
@@ -54,7 +54,7 @@
 
  private:
   // views::View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // Each component (width/height) can force a size override for that component
   // if not 0.
@@ -163,7 +163,7 @@
     GetWidget()->Close();
 }
 
-gfx::Size PopupMessage::MessageBubble::GetPreferredSize() {
+gfx::Size PopupMessage::MessageBubble::GetPreferredSize() const {
   gfx::Size pref_size = views::BubbleDelegateView::GetPreferredSize();
   // Override the size with either the provided size or adjust it to not
   // violate our minimum / maximum sizes.
diff --git a/ash/shelf/overflow_bubble_view.cc b/ash/shelf/overflow_bubble_view.cc
index b165b2d5..73b6477 100644
--- a/ash/shelf/overflow_bubble_view.cc
+++ b/ash/shelf/overflow_bubble_view.cc
@@ -108,7 +108,7 @@
   scroll_offset_.set_y(y);
 }
 
-gfx::Size OverflowBubbleView::GetPreferredSize() {
+gfx::Size OverflowBubbleView::GetPreferredSize() const {
   gfx::Size preferred_size = GetContentsSize();
 
   const gfx::Rect monitor_rect = Shell::GetScreen()->GetDisplayNearestPoint(
diff --git a/ash/shelf/overflow_bubble_view.h b/ash/shelf/overflow_bubble_view.h
index 58f80be..4348a2d 100644
--- a/ash/shelf/overflow_bubble_view.h
+++ b/ash/shelf/overflow_bubble_view.h
@@ -44,7 +44,7 @@
   void ScrollByYOffset(int y_offset);
 
   // views::View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void ChildPreferredSizeChanged(views::View* child) OVERRIDE;
   virtual bool OnMouseWheel(const ui::MouseWheelEvent& event) OVERRIDE;
diff --git a/ash/shelf/shelf_tooltip_manager.cc b/ash/shelf/shelf_tooltip_manager.cc
index cc80bdba..b4e1d347 100644
--- a/ash/shelf/shelf_tooltip_manager.cc
+++ b/ash/shelf/shelf_tooltip_manager.cc
@@ -60,7 +60,7 @@
   virtual void WindowClosing() OVERRIDE;
 
   // views::View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   ShelfTooltipManager* host_;
   views::Label* label_;
@@ -124,7 +124,7 @@
     host_->OnBubbleClosed(this);
 }
 
-gfx::Size ShelfTooltipManager::ShelfTooltipBubble::GetPreferredSize() {
+gfx::Size ShelfTooltipManager::ShelfTooltipBubble::GetPreferredSize() const {
   gfx::Size pref_size = views::BubbleDelegateView::GetPreferredSize();
   if (pref_size.height() < kTooltipMinHeight)
     pref_size.set_height(kTooltipMinHeight);
diff --git a/ash/shelf/shelf_view.cc b/ash/shelf/shelf_view.cc
index 1cc1cf61..65d09fd 100644
--- a/ash/shelf/shelf_view.cc
+++ b/ash/shelf/shelf_view.cc
@@ -702,7 +702,7 @@
   }
 }
 
-void ShelfView::CalculateIdealBounds(IdealBounds* bounds) {
+void ShelfView::CalculateIdealBounds(IdealBounds* bounds) const {
   int available_size = layout_manager_->PrimaryAxisValue(width(), height());
   DCHECK(model_->item_count() == view_model_->view_size());
   if (!available_size)
@@ -732,7 +732,7 @@
   }
 
   if (is_overflow_mode()) {
-    UpdateAllButtonsVisibilityInOverflowMode();
+    const_cast<ShelfView*>(this)->UpdateAllButtonsVisibilityInOverflowMode();
     return;
   }
 
@@ -1162,7 +1162,7 @@
   DestroyDragIconProxy();
 }
 
-ShelfView::RemovableState ShelfView::RemovableByRipOff(int index) {
+ShelfView::RemovableState ShelfView::RemovableByRipOff(int index) const {
   DCHECK(index >= 0 && index < model_->item_count());
   ShelfItemType type = model_->items()[index].type;
   if (type == TYPE_APP_LIST || type == TYPE_DIALOG || !delegate_->CanPin())
@@ -1253,7 +1253,7 @@
   }
 }
 
-void ShelfView::UpdateOverflowRange(ShelfView* overflow_view) {
+void ShelfView::UpdateOverflowRange(ShelfView* overflow_view) const {
   const int first_overflow_index = last_visible_index_ + 1;
   const int last_overflow_index = last_hidden_index_;
   DCHECK_LE(first_overflow_index, last_overflow_index);
@@ -1356,7 +1356,7 @@
   return modified_view ? view_model_->GetIndexOfView(modified_view) : -1;
 }
 
-gfx::Size ShelfView::GetPreferredSize() {
+gfx::Size ShelfView::GetPreferredSize() const {
   IdealBounds ideal_bounds;
   CalculateIdealBounds(&ideal_bounds);
 
diff --git a/ash/shelf/shelf_view.h b/ash/shelf/shelf_view.h
index 9f7c2dd..d909d91 100644
--- a/ash/shelf/shelf_view.h
+++ b/ash/shelf/shelf_view.h
@@ -169,7 +169,7 @@
 
   // Calculates the ideal bounds. The bounds of each button corresponding to an
   // item in the model is set in |view_model_|.
-  void CalculateIdealBounds(IdealBounds* bounds);
+  void CalculateIdealBounds(IdealBounds* bounds) const;
 
   // Returns the index of the last view whose max primary axis coordinate is
   // less than |max_value|. Returns -1 if nothing fits, or there are no views.
@@ -203,7 +203,7 @@
   void FinalizeRipOffDrag(bool cancel);
 
   // Check if an item can be ripped off or not.
-  RemovableState RemovableByRipOff(int index);
+  RemovableState RemovableByRipOff(int index) const;
 
   // Returns true if |typea| and |typeb| should be in the same drag range.
   bool SameDragType(ShelfItemType typea, ShelfItemType typeb) const;
@@ -238,10 +238,10 @@
   void StartFadeInLastVisibleItem();
 
   // Updates the visible range of overflow items in |overflow_view|.
-  void UpdateOverflowRange(ShelfView* overflow_view);
+  void UpdateOverflowRange(ShelfView* overflow_view) const;
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnBoundsChanged(const gfx::Rect& previous_bounds) OVERRIDE;
   virtual FocusTraversable* GetPaneFocusTraversable() OVERRIDE;
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
@@ -334,7 +334,7 @@
 
   // Last index of a launcher button that is visible
   // (does not go into overflow).
-  int last_visible_index_;
+  mutable int last_visible_index_;
 
   scoped_ptr<views::BoundsAnimator> bounds_animator_;
 
@@ -380,7 +380,7 @@
 
   // Index of the last hidden launcher item. If there are no hidden items this
   // will be equal to last_visible_index_ + 1.
-  int last_hidden_index_;
+  mutable int last_hidden_index_;
 
   // The timestamp of the event which closed the last menu - or 0.
   base::TimeDelta closing_event_time_;
diff --git a/ash/shell/lock_view.cc b/ash/shell/lock_view.cc
index d14b593..ed2e75d 100644
--- a/ash/shell/lock_view.cc
+++ b/ash/shell/lock_view.cc
@@ -35,7 +35,7 @@
   virtual ~LockView() {}
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(500, 400);
   }
 
diff --git a/ash/shell/panel_window.cc b/ash/shell/panel_window.cc
index 0cd5a25..3a197a3d 100644
--- a/ash/shell/panel_window.cc
+++ b/ash/shell/panel_window.cc
@@ -57,7 +57,7 @@
   return widget;
 }
 
-gfx::Size PanelWindow::GetPreferredSize() {
+gfx::Size PanelWindow::GetPreferredSize() const {
   return gfx::Size(kMinWidth, kMinHeight);
 }
 
diff --git a/ash/shell/panel_window.h b/ash/shell/panel_window.h
index eefe5e3f..2d3a0bd 100644
--- a/ash/shell/panel_window.h
+++ b/ash/shell/panel_window.h
@@ -33,7 +33,7 @@
 
  private:
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
   // Overridden from views::WidgetDelegate:
diff --git a/ash/shell/widgets.cc b/ash/shell/widgets.cc
index 7a71eb8d..09b192a 100644
--- a/ash/shell/widgets.cc
+++ b/ash/shell/widgets.cc
@@ -32,7 +32,7 @@
   // Overridden from views::View:
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // Overridden from views::WidgetDelegate:
   virtual views::View* GetContentsView() OVERRIDE;
@@ -113,7 +113,7 @@
   }
 }
 
-gfx::Size WidgetsWindow::GetPreferredSize() {
+gfx::Size WidgetsWindow::GetPreferredSize() const {
   return gfx::Size(kWindowWidth, kWindowHeight);
 }
 
diff --git a/ash/shell/window_type_launcher.cc b/ash/shell/window_type_launcher.cc
index 61ba3fa..a84b4cb 100644
--- a/ash/shell/window_type_launcher.cc
+++ b/ash/shell/window_type_launcher.cc
@@ -76,7 +76,7 @@
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE {
     canvas->FillRect(GetLocalBounds(), color_);
   }
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(200, 200);
   }
   virtual void Layout() OVERRIDE {
@@ -148,7 +148,7 @@
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE {
     canvas->FillRect(GetLocalBounds(), color_);
   }
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(250, 250);
   }
 
diff --git a/ash/system/audio/volume_view.cc b/ash/system/audio/volume_view.cc
index 03b3884..e12f765 100644
--- a/ash/system/audio/volume_view.cc
+++ b/ash/system/audio/volume_view.cc
@@ -73,7 +73,7 @@
 
  private:
   // Overridden from views::View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     gfx::Size size = views::ToggleImageButton::GetPreferredSize();
     size.set_height(kTrayPopupItemHeight);
     return size;
@@ -119,7 +119,7 @@
   virtual ~BarSeparator() {}
 
   // Overriden from views::View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(kBarSeparatorWidth, kBarSeparatorHeight);
   }
 
diff --git a/ash/system/chromeos/network/tray_sms.cc b/ash/system/chromeos/network/tray_sms.cc
index c3147a6..86295eb0 100644
--- a/ash/system/chromeos/network/tray_sms.cc
+++ b/ash/system/chromeos/network/tray_sms.cc
@@ -200,7 +200,7 @@
   }
 
   // Overridden from views::View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     gfx::Size preferred_size = TrayDetailsView::GetPreferredSize();
     if (preferred_size.height() < kMessageListMinHeight)
       preferred_size.set_height(kMessageListMinHeight);
diff --git a/ash/system/chromeos/power/power_status_view.cc b/ash/system/chromeos/power/power_status_view.cc
index 058ac08..760c3d4d 100644
--- a/ash/system/chromeos/power/power_status_view.cc
+++ b/ash/system/chromeos/power/power_status_view.cc
@@ -197,12 +197,12 @@
   PreferredSizeChanged();
 }
 
-gfx::Size PowerStatusView::GetPreferredSize() {
+gfx::Size PowerStatusView::GetPreferredSize() const {
   gfx::Size size = views::View::GetPreferredSize();
   return gfx::Size(size.width(), kTrayPopupItemHeight);
 }
 
-int PowerStatusView::GetHeightForWidth(int width) {
+int PowerStatusView::GetHeightForWidth(int width) const {
   return kTrayPopupItemHeight;
 }
 
diff --git a/ash/system/chromeos/power/power_status_view.h b/ash/system/chromeos/power/power_status_view.h
index 940ae0ed2..2d1a72b 100644
--- a/ash/system/chromeos/power/power_status_view.h
+++ b/ash/system/chromeos/power/power_status_view.h
@@ -28,8 +28,8 @@
   virtual ~PowerStatusView();
 
   // Overridden from views::View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
   // Overridden from PowerStatus::Observer.
diff --git a/ash/system/chromeos/virtual_keyboard/virtual_keyboard_tray.cc b/ash/system/chromeos/virtual_keyboard/virtual_keyboard_tray.cc
index 2875d9e..88d74c4 100644
--- a/ash/system/chromeos/virtual_keyboard/virtual_keyboard_tray.cc
+++ b/ash/system/chromeos/virtual_keyboard/virtual_keyboard_tray.cc
@@ -28,7 +28,7 @@
   virtual ~VirtualKeyboardButton();
 
   // Overridden from views::ImageButton:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(VirtualKeyboardButton);
@@ -41,7 +41,7 @@
 VirtualKeyboardButton::~VirtualKeyboardButton() {
 }
 
-gfx::Size VirtualKeyboardButton::GetPreferredSize() {
+gfx::Size VirtualKeyboardButton::GetPreferredSize() const {
   const int virtual_keyboard_button_height = kShelfSize;
   gfx::Size size = ImageButton::GetPreferredSize();
   int padding = virtual_keyboard_button_height - size.height();
diff --git a/ash/system/drive/tray_drive.cc b/ash/system/drive/tray_drive.cc
index c00b5bb..33217f19 100644
--- a/ash/system/drive/tray_drive.cc
+++ b/ash/system/drive/tray_drive.cc
@@ -129,7 +129,7 @@
    private:
 
     // Overridden from View:
-    virtual gfx::Size GetPreferredSize() OVERRIDE {
+    virtual gfx::Size GetPreferredSize() const OVERRIDE {
       return gfx::Size(kProgressBarWidth, kProgressBarHeight);
     }
 
@@ -198,7 +198,7 @@
    private:
 
     // views::View overrides.
-    virtual gfx::Size GetPreferredSize() OVERRIDE {
+    virtual gfx::Size GetPreferredSize() const OVERRIDE {
       return gfx::Size(
           status_img_->GetPreferredSize().width() +
           label_container_->GetPreferredSize().width() +
diff --git a/ash/system/tray/fixed_sized_image_view.cc b/ash/system/tray/fixed_sized_image_view.cc
index 9eb9497..841165e 100644
--- a/ash/system/tray/fixed_sized_image_view.cc
+++ b/ash/system/tray/fixed_sized_image_view.cc
@@ -16,7 +16,7 @@
 FixedSizedImageView::~FixedSizedImageView() {
 }
 
-gfx::Size FixedSizedImageView::GetPreferredSize() {
+gfx::Size FixedSizedImageView::GetPreferredSize() const {
   gfx::Size size = views::ImageView::GetPreferredSize();
   return gfx::Size(width_ ? width_ : size.width(),
                    height_ ? height_ : size.height());
diff --git a/ash/system/tray/fixed_sized_image_view.h b/ash/system/tray/fixed_sized_image_view.h
index b2b00ce..bcffd3ab 100644
--- a/ash/system/tray/fixed_sized_image_view.h
+++ b/ash/system/tray/fixed_sized_image_view.h
@@ -20,7 +20,7 @@
   virtual ~FixedSizedImageView();
 
  private:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   int width_;
   int height_;
diff --git a/ash/system/tray/fixed_sized_scroll_view.cc b/ash/system/tray/fixed_sized_scroll_view.cc
index c7a0394..c9415d40 100644
--- a/ash/system/tray/fixed_sized_scroll_view.cc
+++ b/ash/system/tray/fixed_sized_scroll_view.cc
@@ -25,7 +25,7 @@
   PreferredSizeChanged();
 }
 
-gfx::Size FixedSizedScrollView::GetPreferredSize() {
+gfx::Size FixedSizedScrollView::GetPreferredSize() const {
   gfx::Size size = fixed_size_.IsEmpty() ?
       contents()->GetPreferredSize() : fixed_size_;
   gfx::Insets insets = GetInsets();
diff --git a/ash/system/tray/fixed_sized_scroll_view.h b/ash/system/tray/fixed_sized_scroll_view.h
index d091028f..f3bf525f 100644
--- a/ash/system/tray/fixed_sized_scroll_view.h
+++ b/ash/system/tray/fixed_sized_scroll_view.h
@@ -26,7 +26,7 @@
   void set_fixed_size(const gfx::Size& size) { fixed_size_ = size; }
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
  protected:
diff --git a/ash/system/tray/hover_highlight_view.cc b/ash/system/tray/hover_highlight_view.cc
index 539cb72..e87708ca 100644
--- a/ash/system/tray/hover_highlight_view.cc
+++ b/ash/system/tray/hover_highlight_view.cc
@@ -147,14 +147,14 @@
   }
 }
 
-gfx::Size HoverHighlightView::GetPreferredSize() {
+gfx::Size HoverHighlightView::GetPreferredSize() const {
   gfx::Size size = ActionableView::GetPreferredSize();
   if (!expandable_ || size.height() < kTrayPopupItemHeight)
     size.set_height(kTrayPopupItemHeight);
   return size;
 }
 
-int HoverHighlightView::GetHeightForWidth(int width) {
+int HoverHighlightView::GetHeightForWidth(int width) const {
   return GetPreferredSize().height();
 }
 
diff --git a/ash/system/tray/hover_highlight_view.h b/ash/system/tray/hover_highlight_view.h
index 0797de6a..47d15cf 100644
--- a/ash/system/tray/hover_highlight_view.h
+++ b/ash/system/tray/hover_highlight_view.h
@@ -68,8 +68,8 @@
   virtual bool PerformAction(const ui::Event& event) OVERRIDE;
 
   // Overridden from views::View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
   virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnEnabledChanged() OVERRIDE;
diff --git a/ash/system/tray/special_popup_row.cc b/ash/system/tray/special_popup_row.cc
index 0f6899d3..c7a0a14d1 100644
--- a/ash/system/tray/special_popup_row.cc
+++ b/ash/system/tray/special_popup_row.cc
@@ -96,13 +96,13 @@
   button_container_->AddChildView(throbber);
 }
 
-gfx::Size SpecialPopupRow::GetPreferredSize() {
+gfx::Size SpecialPopupRow::GetPreferredSize() const {
   gfx::Size size = views::View::GetPreferredSize();
   size.set_height(kSpecialPopupRowHeight);
   return size;
 }
 
-int SpecialPopupRow::GetHeightForWidth(int width) {
+int SpecialPopupRow::GetHeightForWidth(int width) const {
   return kSpecialPopupRowHeight;
 }
 
diff --git a/ash/system/tray/special_popup_row.h b/ash/system/tray/special_popup_row.h
index 7f4ea1d..1cf8a843 100644
--- a/ash/system/tray/special_popup_row.h
+++ b/ash/system/tray/special_popup_row.h
@@ -35,8 +35,8 @@
 
  private:
   // Overridden from views::View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
   views::View* content_;
diff --git a/ash/system/tray/system_tray.cc b/ash/system/tray/system_tray.cc
index a68bd1e..1de8045 100644
--- a/ash/system/tray/system_tray.cc
+++ b/ash/system/tray/system_tray.cc
@@ -666,7 +666,7 @@
 gfx::Rect SystemTray::GetAnchorRect(
     views::Widget* anchor_widget,
     TrayBubbleView::AnchorType anchor_type,
-    TrayBubbleView::AnchorAlignment anchor_alignment) {
+    TrayBubbleView::AnchorAlignment anchor_alignment) const {
   return GetBubbleAnchorRect(anchor_widget, anchor_type, anchor_alignment);
 }
 
diff --git a/ash/system/tray/system_tray.h b/ash/system/tray/system_tray.h
index 3370c7db..99f5de03 100644
--- a/ash/system/tray/system_tray.h
+++ b/ash/system/tray/system_tray.h
@@ -135,9 +135,10 @@
   virtual void OnMouseEnteredView() OVERRIDE;
   virtual void OnMouseExitedView() OVERRIDE;
   virtual base::string16 GetAccessibleNameForBubble() OVERRIDE;
-  virtual gfx::Rect GetAnchorRect(views::Widget* anchor_widget,
-                                  AnchorType anchor_type,
-                                  AnchorAlignment anchor_alignment) OVERRIDE;
+  virtual gfx::Rect GetAnchorRect(
+      views::Widget* anchor_widget,
+      AnchorType anchor_type,
+      AnchorAlignment anchor_alignment) const OVERRIDE;
   virtual void HideBubble(const views::TrayBubbleView* bubble_view) OVERRIDE;
 
   TrayAccessibility* GetTrayAccessibilityForTest() {
diff --git a/ash/system/tray/throbber_view.cc b/ash/system/tray/throbber_view.cc
index c24b291..90372d1a 100644
--- a/ash/system/tray/throbber_view.cc
+++ b/ash/system/tray/throbber_view.cc
@@ -56,7 +56,7 @@
 ThrobberView::~ThrobberView() {
 }
 
-gfx::Size ThrobberView::GetPreferredSize() {
+gfx::Size ThrobberView::GetPreferredSize() const {
   return gfx::Size(ash::kTrayPopupItemHeight, ash::kTrayPopupItemHeight);
 }
 
diff --git a/ash/system/tray/throbber_view.h b/ash/system/tray/throbber_view.h
index c3f2004..c3dadcd 100644
--- a/ash/system/tray/throbber_view.h
+++ b/ash/system/tray/throbber_view.h
@@ -41,7 +41,7 @@
   void SetTooltipText(const base::string16& tooltip_text);
 
   // Overriden from views::View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual bool GetTooltipText(
       const gfx::Point& p, base::string16* tooltip) const OVERRIDE;
diff --git a/ash/system/tray/tray_background_view.cc b/ash/system/tray/tray_background_view.cc
index 23d5290..b6d06da 100644
--- a/ash/system/tray/tray_background_view.cc
+++ b/ash/system/tray/tray_background_view.cc
@@ -229,7 +229,7 @@
   UpdateLayout();
 }
 
-gfx::Size TrayBackgroundView::TrayContainer::GetPreferredSize() {
+gfx::Size TrayBackgroundView::TrayContainer::GetPreferredSize() const {
   if (size_.IsEmpty())
     return views::View::GetPreferredSize();
   return size_;
diff --git a/ash/system/tray/tray_background_view.h b/ash/system/tray/tray_background_view.h
index 365e63a..c76fd87d 100644
--- a/ash/system/tray/tray_background_view.h
+++ b/ash/system/tray/tray_background_view.h
@@ -39,7 +39,7 @@
     void set_size(const gfx::Size& size) { size_ = size; }
 
     // Overridden from views::View.
-    virtual gfx::Size GetPreferredSize() OVERRIDE;
+    virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
    protected:
     // Overridden from views::View.
diff --git a/ash/system/tray/tray_bar_button_with_title.cc b/ash/system/tray/tray_bar_button_with_title.cc
index a292a55..a020135 100644
--- a/ash/system/tray/tray_bar_button_with_title.cc
+++ b/ash/system/tray/tray_bar_button_with_title.cc
@@ -84,7 +84,7 @@
   image_->Update(control_on);
 }
 
-gfx::Size TrayBarButtonWithTitle::GetPreferredSize() {
+gfx::Size TrayBarButtonWithTitle::GetPreferredSize() const {
   return gfx::Size(width_, kTrayPopupItemHeight);
 }
 
diff --git a/ash/system/tray/tray_bar_button_with_title.h b/ash/system/tray/tray_bar_button_with_title.h
index 626a14a..3ad4f84 100644
--- a/ash/system/tray/tray_bar_button_with_title.h
+++ b/ash/system/tray/tray_bar_button_with_title.h
@@ -31,7 +31,7 @@
   class TrayBarButton;
 
   // Overridden from views::CustomButton:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
   TrayBarButton* image_;
diff --git a/ash/system/tray/tray_details_view.cc b/ash/system/tray/tray_details_view.cc
index 6a137f1..2c1fe17 100644
--- a/ash/system/tray/tray_details_view.cc
+++ b/ash/system/tray/tray_details_view.cc
@@ -27,7 +27,7 @@
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE {
     canvas->FillRect(gfx::Rect(0, height() / 2, width(), 1), kBorderLightColor);
   }
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(1, kTrayPopupScrollSeparatorHeight);
   }
 
diff --git a/ash/system/tray/tray_item_view.cc b/ash/system/tray/tray_item_view.cc
index b2177f9..ea2262dd 100644
--- a/ash/system/tray/tray_item_view.cc
+++ b/ash/system/tray/tray_item_view.cc
@@ -75,7 +75,7 @@
   }
 }
 
-gfx::Size TrayItemView::DesiredSize() {
+gfx::Size TrayItemView::DesiredSize() const {
   return views::View::GetPreferredSize();
 }
 
@@ -83,7 +83,7 @@
   return kTrayItemAnimationDurationMS;
 }
 
-gfx::Size TrayItemView::GetPreferredSize() {
+gfx::Size TrayItemView::GetPreferredSize() const {
   gfx::Size size = DesiredSize();
   if (owner()->system_tray()->shelf_alignment() == SHELF_ALIGNMENT_BOTTOM ||
       owner()->system_tray()->shelf_alignment() == SHELF_ALIGNMENT_TOP)
@@ -103,7 +103,7 @@
   return size;
 }
 
-int TrayItemView::GetHeightForWidth(int width) {
+int TrayItemView::GetHeightForWidth(int width) const {
   return GetPreferredSize().height();
 }
 
diff --git a/ash/system/tray/tray_item_view.h b/ash/system/tray/tray_item_view.h
index 854af3c1..37e239f0 100644
--- a/ash/system/tray/tray_item_view.h
+++ b/ash/system/tray/tray_item_view.h
@@ -42,8 +42,8 @@
 
   // Overridden from views::View.
   virtual void SetVisible(bool visible) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
 
  protected:
   // Makes sure the widget relayouts after the size/visibility of the view
@@ -54,7 +54,7 @@
   // returns GetPreferredSize. But since this class overrides GetPreferredSize
   // for animation purposes, we allow a different way to get this size, and do
   // not allow GetPreferredSize to be overridden.
-  virtual gfx::Size DesiredSize();
+  virtual gfx::Size DesiredSize() const;
 
   // The default animation duration is 200ms. But each view can customize this.
   virtual int GetAnimationDurationMS();
diff --git a/ash/system/tray/tray_popup_header_button.cc b/ash/system/tray/tray_popup_header_button.cc
index 50c13562..84c04fbb 100644
--- a/ash/system/tray/tray_popup_header_button.cc
+++ b/ash/system/tray/tray_popup_header_button.cc
@@ -49,7 +49,7 @@
   return kViewClassName;
 }
 
-gfx::Size TrayPopupHeaderButton::GetPreferredSize() {
+gfx::Size TrayPopupHeaderButton::GetPreferredSize() const {
   return gfx::Size(ash::kTrayPopupItemHeight, ash::kTrayPopupItemHeight);
 }
 
diff --git a/ash/system/tray/tray_popup_header_button.h b/ash/system/tray/tray_popup_header_button.h
index 054530b6..41a7627 100644
--- a/ash/system/tray/tray_popup_header_button.h
+++ b/ash/system/tray/tray_popup_header_button.h
@@ -29,7 +29,7 @@
  private:
   // Overridden from views::View:
   virtual const char* GetClassName() const OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnPaintBorder(gfx::Canvas* canvas) OVERRIDE;
 
   // Overridden from views::CustomButton:
diff --git a/ash/system/user/rounded_image_view.cc b/ash/system/user/rounded_image_view.cc
index b5a38bd..9c42a2c 100644
--- a/ash/system/user/rounded_image_view.cc
+++ b/ash/system/user/rounded_image_view.cc
@@ -45,7 +45,7 @@
   corner_radius_[3] = bottom_left;
 }
 
-gfx::Size RoundedImageView::GetPreferredSize() {
+gfx::Size RoundedImageView::GetPreferredSize() const {
   return gfx::Size(image_size_.width() + GetInsets().width(),
                    image_size_.height() + GetInsets().height());
 }
diff --git a/ash/system/user/rounded_image_view.h b/ash/system/user/rounded_image_view.h
index 5723d37..895043d 100644
--- a/ash/system/user/rounded_image_view.h
+++ b/ash/system/user/rounded_image_view.h
@@ -34,7 +34,7 @@
 
  private:
   // Overridden from views::View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
   gfx::ImageSkia image_;
diff --git a/ash/system/user/user_card_view.cc b/ash/system/user/user_card_view.cc
index c1bdd15..11cff83 100644
--- a/ash/system/user/user_card_view.cc
+++ b/ash/system/user/user_card_view.cc
@@ -131,7 +131,7 @@
  private:
   // Overridden from views::View.
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
   // Overridden from views::LinkListener.
@@ -260,7 +260,7 @@
   learn_more_->SetBoundsRect(learn_more_bounds);
 }
 
-gfx::Size PublicAccountUserDetails::GetPreferredSize() {
+gfx::Size PublicAccountUserDetails::GetPreferredSize() const {
   return preferred_size_;
 }
 
diff --git a/ash/system/user/user_view.cc b/ash/system/user/user_view.cc
index 289da28..ddfae386 100644
--- a/ash/system/user/user_view.cc
+++ b/ash/system/user/user_view.cc
@@ -137,7 +137,7 @@
 
  private:
   // Overridden from views::View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // Create the additional client content for this item.
   void AddContent();
@@ -164,7 +164,7 @@
   owner_->ForceBorderVisible(false);
 }
 
-gfx::Size AddUserView::GetPreferredSize() {
+gfx::Size AddUserView::GetPreferredSize() const {
   return owner_->bounds().size();
 }
 
@@ -257,7 +257,7 @@
   return user_card_view_->GetBoundsInScreen();
 }
 
-gfx::Size UserView::GetPreferredSize() {
+gfx::Size UserView::GetPreferredSize() const {
   gfx::Size size = views::View::GetPreferredSize();
   // Only the active user panel will be forced to a certain height.
   if (!multiprofile_index_) {
@@ -267,7 +267,7 @@
   return size;
 }
 
-int UserView::GetHeightForWidth(int width) {
+int UserView::GetHeightForWidth(int width) const {
   return GetPreferredSize().height();
 }
 
diff --git a/ash/system/user/user_view.h b/ash/system/user/user_view.h
index b51b4c7..e1dc65a 100644
--- a/ash/system/user/user_view.h
+++ b/ash/system/user/user_view.h
@@ -46,8 +46,8 @@
 
  private:
   // Overridden from views::View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
   // Overridden from views::ButtonListener.
diff --git a/ash/system/web_notification/web_notification_tray.cc b/ash/system/web_notification/web_notification_tray.cc
index 36c646f..a4bc850 100644
--- a/ash/system/web_notification/web_notification_tray.cc
+++ b/ash/system/web_notification/web_notification_tray.cc
@@ -268,11 +268,11 @@
 
  protected:
   // Overridden from views::ImageButton:
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(kShelfItemHeight, kShelfItemHeight);
   }
 
-  virtual int GetHeightForWidth(int width) OVERRIDE {
+  virtual int GetHeightForWidth(int width) const OVERRIDE {
     return GetPreferredSize().height();
   }
 
@@ -501,7 +501,7 @@
 gfx::Rect WebNotificationTray::GetAnchorRect(
     views::Widget* anchor_widget,
     views::TrayBubbleView::AnchorType anchor_type,
-    views::TrayBubbleView::AnchorAlignment anchor_alignment) {
+    views::TrayBubbleView::AnchorAlignment anchor_alignment) const {
   return GetBubbleAnchorRect(anchor_widget, anchor_type, anchor_alignment);
 }
 
diff --git a/ash/system/web_notification/web_notification_tray.h b/ash/system/web_notification/web_notification_tray.h
index 88be4b2..887a91dd 100644
--- a/ash/system/web_notification/web_notification_tray.h
+++ b/ash/system/web_notification/web_notification_tray.h
@@ -90,9 +90,10 @@
   virtual void OnMouseEnteredView() OVERRIDE;
   virtual void OnMouseExitedView() OVERRIDE;
   virtual base::string16 GetAccessibleNameForBubble() OVERRIDE;
-  virtual gfx::Rect GetAnchorRect(views::Widget* anchor_widget,
-                                  AnchorType anchor_type,
-                                  AnchorAlignment anchor_alignment) OVERRIDE;
+  virtual gfx::Rect GetAnchorRect(
+      views::Widget* anchor_widget,
+      AnchorType anchor_type,
+      AnchorAlignment anchor_alignment) const OVERRIDE;
   virtual void HideBubble(const views::TrayBubbleView* bubble_view) OVERRIDE;
 
   // Overridden from ButtonListener.
diff --git a/ash/wm/gestures/long_press_affordance_handler.cc b/ash/wm/gestures/long_press_affordance_handler.cc
index fb1471f..3fced37 100644
--- a/ash/wm/gestures/long_press_affordance_handler.cc
+++ b/ash/wm/gestures/long_press_affordance_handler.cc
@@ -187,7 +187,7 @@
 
  private:
   // Overridden from views::View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(2 * (kAffordanceOuterRadius + kAffordanceGlowWidth),
         2 * (kAffordanceOuterRadius + kAffordanceGlowWidth));
   }
diff --git a/ash/wm/panels/panel_frame_view.cc b/ash/wm/panels/panel_frame_view.cc
index 210435e7..a6e0822 100644
--- a/ash/wm/panels/panel_frame_view.cc
+++ b/ash/wm/panels/panel_frame_view.cc
@@ -59,7 +59,7 @@
   return header_painter_->GetHeaderHeightForPainting();
 }
 
-gfx::Size PanelFrameView::GetMinimumSize() {
+gfx::Size PanelFrameView::GetMinimumSize() const {
   if (!header_painter_)
     return gfx::Size();
   gfx::Size min_client_view_size(frame_->client_view()->GetMinimumSize());
diff --git a/ash/wm/panels/panel_frame_view.h b/ash/wm/panels/panel_frame_view.h
index 6ab0cbac..b2a0ea48 100644
--- a/ash/wm/panels/panel_frame_view.h
+++ b/ash/wm/panels/panel_frame_view.h
@@ -52,7 +52,7 @@
   virtual void UpdateWindowTitle() OVERRIDE;
 
   // Overridden from views::View:
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
diff --git a/ash/wm/system_modal_container_layout_manager_unittest.cc b/ash/wm/system_modal_container_layout_manager_unittest.cc
index 29e7eb17..ac03c104 100644
--- a/ash/wm/system_modal_container_layout_manager_unittest.cc
+++ b/ash/wm/system_modal_container_layout_manager_unittest.cc
@@ -73,7 +73,7 @@
   }
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(50, 50);
   }
 
diff --git a/ash/wm/workspace/multi_window_resize_controller.cc b/ash/wm/workspace/multi_window_resize_controller.cc
index f8788b4..d03cfa16 100644
--- a/ash/wm/workspace/multi_window_resize_controller.cc
+++ b/ash/wm/workspace/multi_window_resize_controller.cc
@@ -71,7 +71,7 @@
   }
 
   // views::View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(image_->width(), image_->height());
   }
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE {
diff --git a/chrome/browser/chromeos/attestation/platform_verification_dialog.cc b/chrome/browser/chromeos/attestation/platform_verification_dialog.cc
index 6070d60..2bda3a83 100644
--- a/chrome/browser/chromeos/attestation/platform_verification_dialog.cc
+++ b/chrome/browser/chromeos/attestation/platform_verification_dialog.cc
@@ -124,7 +124,7 @@
   return ui::MODAL_TYPE_CHILD;
 }
 
-gfx::Size PlatformVerificationDialog::GetPreferredSize() {
+gfx::Size PlatformVerificationDialog::GetPreferredSize() const {
   return gfx::Size(kDialogMaxWidthInPixel,
                    GetHeightForWidth(kDialogMaxWidthInPixel));
 }
diff --git a/chrome/browser/chromeos/attestation/platform_verification_dialog.h b/chrome/browser/chromeos/attestation/platform_verification_dialog.h
index 85687844..4afdf94 100644
--- a/chrome/browser/chromeos/attestation/platform_verification_dialog.h
+++ b/chrome/browser/chromeos/attestation/platform_verification_dialog.h
@@ -48,7 +48,7 @@
   virtual ui::ModalType GetModalType() const OVERRIDE;
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // Overridden from views::StyledLabelListener:
   virtual void StyledLabelLinkClicked(const gfx::Range& range,
diff --git a/chrome/browser/chromeos/enrollment_dialog_view.cc b/chrome/browser/chromeos/enrollment_dialog_view.cc
index 9797e0e..405f6afd 100644
--- a/chrome/browser/chromeos/enrollment_dialog_view.cc
+++ b/chrome/browser/chromeos/enrollment_dialog_view.cc
@@ -57,7 +57,7 @@
   virtual base::string16 GetWindowTitle() const OVERRIDE;
 
   // views::View overrides
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   EnrollmentDialogView(const std::string& network_name,
@@ -142,7 +142,7 @@
   return l10n_util::GetStringUTF16(IDS_NETWORK_ENROLLMENT_HANDLER_TITLE);
 }
 
-gfx::Size EnrollmentDialogView::GetPreferredSize() {
+gfx::Size EnrollmentDialogView::GetPreferredSize() const {
   return gfx::Size(kDefaultWidth, kDefaultHeight);
 }
 
diff --git a/chrome/browser/chromeos/options/network_config_view.cc b/chrome/browser/chromeos/options/network_config_view.cc
index a3f7442..9938176e 100644
--- a/chrome/browser/chromeos/options/network_config_view.cc
+++ b/chrome/browser/chromeos/options/network_config_view.cc
@@ -252,7 +252,7 @@
   child_config_view_->SetBounds(0, 0, width(), height());
 }
 
-gfx::Size NetworkConfigView::GetPreferredSize() {
+gfx::Size NetworkConfigView::GetPreferredSize() const {
   gfx::Size result(views::Widget::GetLocalizedContentsSize(
       IDS_JOIN_WIFI_NETWORK_DIALOG_WIDTH_CHARS,
       IDS_JOIN_WIFI_NETWORK_DIALOG_MINIMUM_HEIGHT_LINES));
@@ -336,7 +336,7 @@
   PreferredSizeChanged();
 }
 
-gfx::Size ControlledSettingIndicatorView::GetPreferredSize() {
+gfx::Size ControlledSettingIndicatorView::GetPreferredSize() const {
   return (managed_ && visible()) ? image_view_->GetPreferredSize()
                                  : gfx::Size();
 }
diff --git a/chrome/browser/chromeos/options/network_config_view.h b/chrome/browser/chromeos/options/network_config_view.h
index 9e839cd..a04da78 100644
--- a/chrome/browser/chromeos/options/network_config_view.h
+++ b/chrome/browser/chromeos/options/network_config_view.h
@@ -80,7 +80,7 @@
  protected:
   // views::View overrides:
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) OVERRIDE;
 
@@ -171,7 +171,7 @@
 
  protected:
   // views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
  private:
diff --git a/chrome/browser/chromeos/options/wifi_config_view.cc b/chrome/browser/chromeos/options/wifi_config_view.cc
index eb9218d5..f1d32bf 100644
--- a/chrome/browser/chromeos/options/wifi_config_view.cc
+++ b/chrome/browser/chromeos/options/wifi_config_view.cc
@@ -55,7 +55,7 @@
         width_(width) {
   }
   virtual ~ComboboxWithWidth() {}
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     gfx::Size size = Combobox::GetPreferredSize();
     size.set_width(width_);
     return size;
diff --git a/chrome/browser/chromeos/power/idle_action_warning_dialog_view.cc b/chrome/browser/chromeos/power/idle_action_warning_dialog_view.cc
index 7ca28d3..df5b64c 100644
--- a/chrome/browser/chromeos/power/idle_action_warning_dialog_view.cc
+++ b/chrome/browser/chromeos/power/idle_action_warning_dialog_view.cc
@@ -35,7 +35,7 @@
   explicit FixedWidthLabel(int width);
   virtual ~FixedWidthLabel();
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   int width_;
@@ -51,7 +51,7 @@
 FixedWidthLabel::~FixedWidthLabel() {
 }
 
-gfx::Size FixedWidthLabel::GetPreferredSize() {
+gfx::Size FixedWidthLabel::GetPreferredSize() const {
   return gfx::Size(width_, GetHeightForWidth(width_));
 }
 
diff --git a/chrome/browser/chromeos/profiles/multiprofiles_intro_dialog.cc b/chrome/browser/chromeos/profiles/multiprofiles_intro_dialog.cc
index c5b0261..0f6cb923 100644
--- a/chrome/browser/chromeos/profiles/multiprofiles_intro_dialog.cc
+++ b/chrome/browser/chromeos/profiles/multiprofiles_intro_dialog.cc
@@ -43,7 +43,7 @@
   virtual ui::ModalType GetModalType() const OVERRIDE;
 
   // views::View overrides.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   void InitDialog();
@@ -87,7 +87,7 @@
   return ui::MODAL_TYPE_SYSTEM;
 }
 
-gfx::Size MultiprofilesIntroView::GetPreferredSize() {
+gfx::Size MultiprofilesIntroView::GetPreferredSize() const {
   return gfx::Size(kDefaultWidth, kDefaultHeight);
 }
 
diff --git a/chrome/browser/chromeos/profiles/multiprofiles_session_aborted_dialog.cc b/chrome/browser/chromeos/profiles/multiprofiles_session_aborted_dialog.cc
index ddb6af7..18fac52 100644
--- a/chrome/browser/chromeos/profiles/multiprofiles_session_aborted_dialog.cc
+++ b/chrome/browser/chromeos/profiles/multiprofiles_session_aborted_dialog.cc
@@ -47,7 +47,7 @@
   virtual ui::ModalType GetModalType() const OVERRIDE;
 
   // views::View overrides.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   void InitDialog(const std::string& user_email);
@@ -105,7 +105,7 @@
   return ui::MODAL_TYPE_SYSTEM;
 }
 
-gfx::Size MultiprofilesSessionAbortedView::GetPreferredSize() {
+gfx::Size MultiprofilesSessionAbortedView::GetPreferredSize() const {
   return gfx::Size(kDefaultWidth, kDefaultHeight);
 }
 
diff --git a/chrome/browser/chromeos/ui/echo_dialog_view.cc b/chrome/browser/chromeos/ui/echo_dialog_view.cc
index bac6838..9433ffaf0 100644
--- a/chrome/browser/chromeos/ui/echo_dialog_view.cc
+++ b/chrome/browser/chromeos/ui/echo_dialog_view.cc
@@ -158,7 +158,7 @@
   listener_->OnMoreInfoLinkClicked();
 }
 
-gfx::Size EchoDialogView::GetPreferredSize() {
+gfx::Size EchoDialogView::GetPreferredSize() const {
   gfx::Size size =
       gfx::Size(kDialogLabelPreferredWidth,
                 label_->GetHeightForWidth(kDialogLabelPreferredWidth));
diff --git a/chrome/browser/chromeos/ui/echo_dialog_view.h b/chrome/browser/chromeos/ui/echo_dialog_view.h
index 31faff3..e214e46 100644
--- a/chrome/browser/chromeos/ui/echo_dialog_view.h
+++ b/chrome/browser/chromeos/ui/echo_dialog_view.h
@@ -66,7 +66,7 @@
                                       int event_flags) OVERRIDE;
 
   // views::View override.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // Sets the border and bounds for the styled label containing the dialog
   // text.
diff --git a/chrome/browser/extensions/extension_infobar_delegate.h b/chrome/browser/extensions/extension_infobar_delegate.h
index ec699d9c..213f783a 100644
--- a/chrome/browser/extensions/extension_infobar_delegate.h
+++ b/chrome/browser/extensions/extension_infobar_delegate.h
@@ -45,6 +45,10 @@
   extensions::ExtensionViewHost* extension_view_host() {
     return extension_view_host_.get();
   }
+  const extensions::ExtensionViewHost* extension_view_host() const {
+    return extension_view_host_.get();
+  }
+
   int height() { return height_; }
 
   bool closing() const { return closing_; }
diff --git a/chrome/browser/extensions/extension_view_host.h b/chrome/browser/extensions/extension_view_host.h
index 3c051860..b345454 100644
--- a/chrome/browser/extensions/extension_view_host.h
+++ b/chrome/browser/extensions/extension_view_host.h
@@ -52,6 +52,7 @@
 #endif
 
   PlatformExtensionView* view() { return view_.get(); }
+  const PlatformExtensionView* view() const { return view_.get(); }
 
   // Create an ExtensionView and tie it to this host and |browser|.  Note NULL
   // is a valid argument for |browser|.  Extension views may be bound to
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_warning_dialog.cc b/chrome/browser/ui/ash/multi_user/multi_user_warning_dialog.cc
index dea5396..9d5b700 100644
--- a/chrome/browser/ui/ash/multi_user/multi_user_warning_dialog.cc
+++ b/chrome/browser/ui/ash/multi_user/multi_user_warning_dialog.cc
@@ -43,7 +43,7 @@
   virtual ui::ModalType GetModalType() const OVERRIDE;
 
   // views::View overrides.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   void InitDialog();
@@ -87,7 +87,7 @@
   return ui::MODAL_TYPE_SYSTEM;
 }
 
-gfx::Size TeleportWarningView::GetPreferredSize() {
+gfx::Size TeleportWarningView::GetPreferredSize() const {
   return gfx::Size(kDefaultWidth, kDefaultHeight);
 }
 
diff --git a/chrome/browser/ui/extensions/extension_installed_bubble.h b/chrome/browser/ui/extensions/extension_installed_bubble.h
index fcf4b97..4982dd4 100644
--- a/chrome/browser/ui/extensions/extension_installed_bubble.h
+++ b/chrome/browser/ui/extensions/extension_installed_bubble.h
@@ -61,6 +61,7 @@
 
   const extensions::Extension* extension() const { return extension_; }
   Browser* browser() { return browser_; }
+  const Browser* browser() const { return browser_; }
   const SkBitmap& icon() const { return icon_; }
   BubbleType type() const { return type_; }
 
diff --git a/chrome/browser/ui/views/apps/app_info_dialog/app_info_dialog_views.cc b/chrome/browser/ui/views/apps/app_info_dialog/app_info_dialog_views.cc
index c1d4a79..ce79b3b2 100644
--- a/chrome/browser/ui/views/apps/app_info_dialog/app_info_dialog_views.cc
+++ b/chrome/browser/ui/views/apps/app_info_dialog/app_info_dialog_views.cc
@@ -56,7 +56,7 @@
   return true;
 }
 
-gfx::Size AppInfoDialog::GetPreferredSize() {
+gfx::Size AppInfoDialog::GetPreferredSize() const {
   // These numbers represent the size of the view, not the total size of the
   // dialog. The actual dialog will be slightly taller (have a larger height)
   // than what is specified here.
diff --git a/chrome/browser/ui/views/apps/app_info_dialog/app_info_dialog_views.h b/chrome/browser/ui/views/apps/app_info_dialog/app_info_dialog_views.h
index 2231b9f..c42035b1 100644
--- a/chrome/browser/ui/views/apps/app_info_dialog/app_info_dialog_views.h
+++ b/chrome/browser/ui/views/apps/app_info_dialog/app_info_dialog_views.h
@@ -29,7 +29,7 @@
 
  private:
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // Overridden from views::DialogDelegate:
   virtual bool Cancel() OVERRIDE;
diff --git a/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_tab.cc b/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_tab.cc
index 68d159ab..2af19573 100644
--- a/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_tab.cc
+++ b/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_tab.cc
@@ -74,7 +74,7 @@
     virtual ~DetailsView() {}
 
     // views::View:
-    virtual gfx::Size GetPreferredSize() OVERRIDE;
+    virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
     // Animates this to be a height proportional to |ratio|.
     void AnimateToRatio(double ratio);
@@ -180,7 +180,7 @@
   layout->AddPaddingRow(0, views::kPanelVertMargin);
 }
 
-gfx::Size ExpandableContainerView::DetailsView::GetPreferredSize() {
+gfx::Size ExpandableContainerView::DetailsView::GetPreferredSize() const {
   gfx::Size size = views::View::GetPreferredSize();
   return gfx::Size(size.width(), size.height() * visible_ratio_);
 }
diff --git a/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc b/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc
index 541c9009..c2e202b 100644
--- a/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc
+++ b/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc
@@ -567,7 +567,7 @@
 
 // views::View implementation.
 
-gfx::Size ChromeNativeAppWindowViews::GetPreferredSize() {
+gfx::Size ChromeNativeAppWindowViews::GetPreferredSize() const {
   if (!preferred_size_.IsEmpty())
     return preferred_size_;
   return NativeAppWindowViews::GetPreferredSize();
diff --git a/chrome/browser/ui/views/apps/chrome_native_app_window_views.h b/chrome/browser/ui/views/apps/chrome_native_app_window_views.h
index e5a65f4..ce890ac 100644
--- a/chrome/browser/ui/views/apps/chrome_native_app_window_views.h
+++ b/chrome/browser/ui/views/apps/chrome_native_app_window_views.h
@@ -66,7 +66,7 @@
   virtual void GetWidgetHitTestMask(gfx::Path* mask) const OVERRIDE;
 
   // views::View implementation.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE;
 
   // NativeAppWindow implementation.
diff --git a/chrome/browser/ui/views/apps/glass_app_window_frame_view_win.cc b/chrome/browser/ui/views/apps/glass_app_window_frame_view_win.cc
index 68d94dc..f93f53bf 100644
--- a/chrome/browser/ui/views/apps/glass_app_window_frame_view_win.cc
+++ b/chrome/browser/ui/views/apps/glass_app_window_frame_view_win.cc
@@ -97,7 +97,7 @@
   // We got nothing to say about no window mask.
 }
 
-gfx::Size GlassAppWindowFrameViewWin::GetPreferredSize() {
+gfx::Size GlassAppWindowFrameViewWin::GetPreferredSize() const {
   gfx::Size pref = widget_->client_view()->GetPreferredSize();
   gfx::Rect bounds(0, 0, pref.width(), pref.height());
   return widget_->non_client_view()
@@ -109,7 +109,7 @@
   return kViewClassName;
 }
 
-gfx::Size GlassAppWindowFrameViewWin::GetMinimumSize() {
+gfx::Size GlassAppWindowFrameViewWin::GetMinimumSize() const {
   gfx::Size min_size = widget_->client_view()->GetMinimumSize();
   gfx::Rect client_bounds = GetBoundsForClientView();
   min_size.Enlarge(0, client_bounds.y());
diff --git a/chrome/browser/ui/views/apps/glass_app_window_frame_view_win.h b/chrome/browser/ui/views/apps/glass_app_window_frame_view_win.h
index 9ad6975..245c8b3b 100644
--- a/chrome/browser/ui/views/apps/glass_app_window_frame_view_win.h
+++ b/chrome/browser/ui/views/apps/glass_app_window_frame_view_win.h
@@ -36,9 +36,9 @@
   virtual void UpdateWindowTitle() OVERRIDE {}
 
   // views::View implementation.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual gfx::Size GetMaximumSize() OVERRIDE;
 
   apps::NativeAppWindow* window_;
diff --git a/chrome/browser/ui/views/autofill/autofill_dialog_views.cc b/chrome/browser/ui/views/autofill/autofill_dialog_views.cc
index ec42f5c..4c1ae58 100644
--- a/chrome/browser/ui/views/autofill/autofill_dialog_views.cc
+++ b/chrome/browser/ui/views/autofill/autofill_dialog_views.cc
@@ -165,7 +165,7 @@
   virtual ~SectionRowView() {}
 
   // views::View implementation:
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     int height = 0;
     int width = 0;
     for (int i = 0; i < child_count(); ++i) {
@@ -317,10 +317,10 @@
                        vertical_padding, kDialogEdgePadding);
   }
 
-  virtual int GetHeightForWidth(int width) OVERRIDE {
+  virtual int GetHeightForWidth(int width) const OVERRIDE {
     int label_width = width - GetInsets().width();
     if (child_count() > 1) {
-      views::View* tooltip_icon = child_at(1);
+      const views::View* tooltip_icon = child_at(1);
       label_width -= tooltip_icon->GetPreferredSize().width() +
           kDialogEdgePadding;
     }
@@ -755,7 +755,7 @@
   PreferredSizeChanged();
 }
 
-gfx::Size AutofillDialogViews::NotificationArea::GetPreferredSize() {
+gfx::Size AutofillDialogViews::NotificationArea::GetPreferredSize() const {
   gfx::Size size = views::View::GetPreferredSize();
   // Ensure that long notifications wrap and don't enlarge the dialog.
   size.set_width(1);
@@ -993,7 +993,7 @@
 
 AutofillDialogViews::SuggestedButton::~SuggestedButton() {}
 
-gfx::Size AutofillDialogViews::SuggestedButton::GetPreferredSize() {
+gfx::Size AutofillDialogViews::SuggestedButton::GetPreferredSize() const {
   ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
   gfx::Size size = rb.GetImageNamed(ResourceIDForState()).Size();
   const gfx::Insets insets = GetInsets();
@@ -1088,13 +1088,13 @@
 
 AutofillDialogViews::SuggestionView::~SuggestionView() {}
 
-gfx::Size AutofillDialogViews::SuggestionView::GetPreferredSize() {
+gfx::Size AutofillDialogViews::SuggestionView::GetPreferredSize() const {
   // There's no preferred width. The parent's layout should get the preferred
   // height from GetHeightForWidth().
   return gfx::Size();
 }
 
-int AutofillDialogViews::SuggestionView::GetHeightForWidth(int width) {
+int AutofillDialogViews::SuggestionView::GetHeightForWidth(int width) const {
   int height = 0;
   CanUseVerticallyCompactText(width, &height);
   return height;
@@ -1102,7 +1102,7 @@
 
 bool AutofillDialogViews::SuggestionView::CanUseVerticallyCompactText(
     int available_width,
-    int* resulting_height) {
+    int* resulting_height) const {
   // This calculation may be costly, avoid doing it more than once per width.
   if (!calculated_heights_.count(available_width)) {
     // Changing the state of |this| now will lead to extra layouts and
@@ -1472,14 +1472,14 @@
   ValidateGroup(*GroupForSection(section), VALIDATE_EDIT);
 }
 
-gfx::Size AutofillDialogViews::GetPreferredSize() {
+gfx::Size AutofillDialogViews::GetPreferredSize() const {
   if (preferred_size_.IsEmpty())
     preferred_size_ = CalculatePreferredSize(false);
 
   return preferred_size_;
 }
 
-gfx::Size AutofillDialogViews::GetMinimumSize() {
+gfx::Size AutofillDialogViews::GetMinimumSize() const {
   return CalculatePreferredSize(true);
 }
 
@@ -1766,7 +1766,8 @@
   group->suggested_button->SetState(state);
 }
 
-gfx::Size AutofillDialogViews::CalculatePreferredSize(bool get_minimum_size) {
+gfx::Size AutofillDialogViews::CalculatePreferredSize(
+    bool get_minimum_size) const {
   gfx::Insets insets = GetInsets();
   gfx::Size scroll_size = scrollable_area_->contents()->GetPreferredSize();
   // The width is always set by the scroll area.
diff --git a/chrome/browser/ui/views/autofill/autofill_dialog_views.h b/chrome/browser/ui/views/autofill/autofill_dialog_views.h
index ddadf14..3e88bfd 100644
--- a/chrome/browser/ui/views/autofill/autofill_dialog_views.h
+++ b/chrome/browser/ui/views/autofill/autofill_dialog_views.h
@@ -98,8 +98,8 @@
   virtual void ValidateSection(DialogSection section) OVERRIDE;
 
   // views::View implementation.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void OnNativeThemeChanged(const ui::NativeTheme* theme) OVERRIDE;
 
@@ -259,7 +259,7 @@
     void SetNotifications(const std::vector<DialogNotification>& notifications);
 
     // views::View implementation.
-    virtual gfx::Size GetPreferredSize() OVERRIDE;
+    virtual gfx::Size GetPreferredSize() const OVERRIDE;
     virtual const char* GetClassName() const OVERRIDE;
     virtual void PaintChildren(gfx::Canvas* canvas,
                                const views::CullSet& cull_set) OVERRIDE;
@@ -340,7 +340,7 @@
     virtual ~SuggestedButton();
 
     // views::MenuButton implementation.
-    virtual gfx::Size GetPreferredSize() OVERRIDE;
+    virtual gfx::Size GetPreferredSize() const OVERRIDE;
     virtual const char* GetClassName() const OVERRIDE;
     virtual void PaintChildren(gfx::Canvas* canvas,
                                const views::CullSet& cull_set) OVERRIDE;
@@ -386,8 +386,8 @@
     void SetState(const SuggestionState& state);
 
     // views::View implementation.
-    virtual gfx::Size GetPreferredSize() OVERRIDE;
-    virtual int GetHeightForWidth(int width) OVERRIDE;
+    virtual gfx::Size GetPreferredSize() const OVERRIDE;
+    virtual int GetHeightForWidth(int width) const OVERRIDE;
     virtual void OnBoundsChanged(const gfx::Rect& previous_bounds) OVERRIDE;
 
     ExpandingTextfield* textfield() { return textfield_; }
@@ -399,7 +399,7 @@
     // |vertically_compact_text| or |horizontally_compact_text| as the case may
     // be.
     bool CanUseVerticallyCompactText(int available_width,
-                                     int* resulting_height);
+                                     int* resulting_height) const;
 
     // Sets the display text of the suggestion.
     void SetLabelText(const base::string16& text);
@@ -420,7 +420,7 @@
 
     // This caches preferred heights for given widths. The key is a preferred
     // width, the value is a cached result of CanUseVerticallyCompactText.
-    std::map<int, std::pair<bool, int> > calculated_heights_;
+    mutable std::map<int, std::pair<bool, int> > calculated_heights_;
 
     // The label that holds the suggestion description text.
     views::Label* label_;
@@ -460,7 +460,7 @@
   typedef std::map<DialogSection, DetailsGroup> DetailGroupMap;
 
   // Returns the preferred size or minimum size (if |get_minimum_size| is true).
-  gfx::Size CalculatePreferredSize(bool get_minimum_size);
+  gfx::Size CalculatePreferredSize(bool get_minimum_size) const;
 
   // Returns the minimum size of the sign in view for this dialog.
   gfx::Size GetMinimumSignInViewSize() const;
@@ -592,7 +592,7 @@
   AutofillDialogViewDelegate* const delegate_;
 
   // The preferred size of the view, cached to avoid needless recomputation.
-  gfx::Size preferred_size_;
+  mutable gfx::Size preferred_size_;
 
   // The current number of unmatched calls to UpdatesStarted.
   int updates_scope_;
diff --git a/chrome/browser/ui/views/autofill/decorated_textfield.cc b/chrome/browser/ui/views/autofill/decorated_textfield.cc
index c25cc0f..9ca059e 100644
--- a/chrome/browser/ui/views/autofill/decorated_textfield.cc
+++ b/chrome/browser/ui/views/autofill/decorated_textfield.cc
@@ -106,7 +106,7 @@
   return this;
 }
 
-gfx::Size DecoratedTextfield::GetPreferredSize() {
+gfx::Size DecoratedTextfield::GetPreferredSize() const {
   static const int height =
       views::LabelButton(NULL, base::string16()).GetPreferredSize().height();
   const gfx::Size size = views::Textfield::GetPreferredSize();
diff --git a/chrome/browser/ui/views/autofill/decorated_textfield.h b/chrome/browser/ui/views/autofill/decorated_textfield.h
index 5a4d348..5602c9f 100644
--- a/chrome/browser/ui/views/autofill/decorated_textfield.h
+++ b/chrome/browser/ui/views/autofill/decorated_textfield.h
@@ -48,7 +48,7 @@
 
   // views::View implementation.
   virtual const char* GetClassName() const OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual views::View* GetEventHandlerForRect(const gfx::Rect& rect) OVERRIDE;
 
diff --git a/chrome/browser/ui/views/autofill/generated_credit_card_bubble_views.cc b/chrome/browser/ui/views/autofill/generated_credit_card_bubble_views.cc
index 57557ddf..f4f3d43 100644
--- a/chrome/browser/ui/views/autofill/generated_credit_card_bubble_views.cc
+++ b/chrome/browser/ui/views/autofill/generated_credit_card_bubble_views.cc
@@ -49,7 +49,7 @@
   return GetWidget() && GetWidget()->IsClosed();
 }
 
-gfx::Size GeneratedCreditCardBubbleViews::GetPreferredSize() {
+gfx::Size GeneratedCreditCardBubbleViews::GetPreferredSize() const {
   return gfx::Size(
       GeneratedCreditCardBubbleView::kContentsWidth,
       GetHeightForWidth(GeneratedCreditCardBubbleViews::kContentsWidth));
diff --git a/chrome/browser/ui/views/autofill/generated_credit_card_bubble_views.h b/chrome/browser/ui/views/autofill/generated_credit_card_bubble_views.h
index 7876fb2..2912fe52 100644
--- a/chrome/browser/ui/views/autofill/generated_credit_card_bubble_views.h
+++ b/chrome/browser/ui/views/autofill/generated_credit_card_bubble_views.h
@@ -31,7 +31,7 @@
   virtual bool IsHiding() const OVERRIDE;
 
   // views::BubbleDelegateView:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual base::string16 GetWindowTitle() const OVERRIDE;
   virtual void Init() OVERRIDE;
 
diff --git a/chrome/browser/ui/views/autofill/info_bubble.cc b/chrome/browser/ui/views/autofill/info_bubble.cc
index 6879fef..5337093e 100644
--- a/chrome/browser/ui/views/autofill/info_bubble.cc
+++ b/chrome/browser/ui/views/autofill/info_bubble.cc
@@ -127,7 +127,7 @@
   return frame_;
 }
 
-gfx::Size InfoBubble::GetPreferredSize() {
+gfx::Size InfoBubble::GetPreferredSize() const {
   int pref_width = preferred_width_;
   pref_width -= frame_->GetInsets().width();
   pref_width -= 2 * kBubbleBorderVisibleWidth;
diff --git a/chrome/browser/ui/views/autofill/info_bubble.h b/chrome/browser/ui/views/autofill/info_bubble.h
index f740191..d028205 100644
--- a/chrome/browser/ui/views/autofill/info_bubble.h
+++ b/chrome/browser/ui/views/autofill/info_bubble.h
@@ -33,12 +33,13 @@
   // views::BubbleDelegateView:
   virtual views::NonClientFrameView* CreateNonClientFrameView(
       views::Widget* widget) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnWidgetDestroyed(views::Widget* widget) OVERRIDE;
   virtual void OnWidgetBoundsChanged(views::Widget* widget,
                                      const gfx::Rect& new_bounds) OVERRIDE;
 
   views::View* anchor() { return anchor_; }
+  const views::View* anchor() const { return anchor_; }
 
   void set_align_to_anchor_edge(bool align_to_anchor_edge) {
     align_to_anchor_edge_ = align_to_anchor_edge;
diff --git a/chrome/browser/ui/views/autofill/new_credit_card_bubble_views.cc b/chrome/browser/ui/views/autofill/new_credit_card_bubble_views.cc
index a2bce82..6ea35ce 100644
--- a/chrome/browser/ui/views/autofill/new_credit_card_bubble_views.cc
+++ b/chrome/browser/ui/views/autofill/new_credit_card_bubble_views.cc
@@ -63,7 +63,7 @@
   GetWidget()->Close();
 }
 
-gfx::Size NewCreditCardBubbleViews::GetPreferredSize() {
+gfx::Size NewCreditCardBubbleViews::GetPreferredSize() const {
   return gfx::Size(
       NewCreditCardBubbleView::kContentsWidth,
       GetHeightForWidth(NewCreditCardBubbleView::kContentsWidth));
diff --git a/chrome/browser/ui/views/autofill/new_credit_card_bubble_views.h b/chrome/browser/ui/views/autofill/new_credit_card_bubble_views.h
index ac402f6..9c6af69 100644
--- a/chrome/browser/ui/views/autofill/new_credit_card_bubble_views.h
+++ b/chrome/browser/ui/views/autofill/new_credit_card_bubble_views.h
@@ -29,7 +29,7 @@
   virtual void Hide() OVERRIDE;
 
   // views::BubbleDelegateView:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual base::string16 GetWindowTitle() const OVERRIDE;
   virtual void Init() OVERRIDE;
   virtual gfx::Rect GetBubbleBounds() OVERRIDE;
diff --git a/chrome/browser/ui/views/autofill/tooltip_icon.cc b/chrome/browser/ui/views/autofill/tooltip_icon.cc
index ff243b7..92f8e43 100644
--- a/chrome/browser/ui/views/autofill/tooltip_icon.cc
+++ b/chrome/browser/ui/views/autofill/tooltip_icon.cc
@@ -18,7 +18,7 @@
 
 namespace {
 
-gfx::Insets GetPreferredInsets(views::View* view) {
+gfx::Insets GetPreferredInsets(const views::View* view) {
   gfx::Size pref_size = view->GetPreferredSize();
   gfx::Rect local_bounds = view->GetLocalBounds();
   gfx::Point origin = local_bounds.CenterPoint();
@@ -38,7 +38,7 @@
 
  protected:
   // InfoBubble:
-  virtual gfx::Rect GetAnchorRect() OVERRIDE {
+  virtual gfx::Rect GetAnchorRect() const OVERRIDE {
     gfx::Rect bounds = views::BubbleDelegateView::GetAnchorRect();
     bounds.Inset(GetPreferredInsets(anchor()));
     return bounds;
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_instructions_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_instructions_view.cc
index b76c1f6..a986241 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_instructions_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_instructions_view.cc
@@ -48,10 +48,10 @@
   }
 }
 
-gfx::Size BookmarkBarInstructionsView::GetPreferredSize() {
+gfx::Size BookmarkBarInstructionsView::GetPreferredSize() const {
   int ascent = 0, descent = 0, height = 0, width = 0;
   for (int i = 0; i < child_count(); ++i) {
-    views::View* view = child_at(i);
+    const views::View* view = child_at(i);
     gfx::Size pref = view->GetPreferredSize();
     int baseline = view->GetBaseline();
     if (baseline != -1) {
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_instructions_view.h b/chrome/browser/ui/views/bookmarks/bookmark_bar_instructions_view.h
index 090c2b07..91a6a63 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_instructions_view.h
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_instructions_view.h
@@ -31,7 +31,7 @@
       BookmarkBarInstructionsDelegate* delegate);
 
   // views::View overrides.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void OnThemeChanged() OVERRIDE;
   virtual void ViewHierarchyChanged(
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
index b35d75a6..fda8b77 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
@@ -395,7 +395,7 @@
         GetThemeProvider()->GetColor(ThemeProperties::COLOR_TOOLBAR));
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     // We get the full height of the bookmark bar, so that the height returned
     // here doesn't matter.
     return gfx::Size(kSeparatorWidth, 1);
@@ -664,8 +664,19 @@
           size_animation_->GetCurrentValue());
 }
 
-gfx::Size BookmarkBarView::GetPreferredSize() {
-  return LayoutItems(true);
+gfx::Size BookmarkBarView::GetPreferredSize() const {
+  gfx::Size prefsize;
+  if (IsDetached()) {
+    prefsize.set_height(
+        chrome::kBookmarkBarHeight +
+        static_cast<int>(
+            (chrome::kNTPBookmarkBarHeight - chrome::kBookmarkBarHeight) *
+            (1 - size_animation_->GetCurrentValue())));
+  } else {
+    prefsize.set_height(static_cast<int>(chrome::kBookmarkBarHeight *
+                                         size_animation_->GetCurrentValue()));
+  }
+  return prefsize;
 }
 
 bool BookmarkBarView::HitTestRect(const gfx::Rect& rect) const {
@@ -681,7 +692,7 @@
   return DetachableToolbarView::HitTestRect(rect);
 }
 
-gfx::Size BookmarkBarView::GetMinimumSize() {
+gfx::Size BookmarkBarView::GetMinimumSize() const {
   // The minimum width of the bookmark bar should at least contain the overflow
   // button, by which one can access all the Bookmark Bar items, and the "Other
   // Bookmarks" folder, along with appropriate margins and button padding.
@@ -718,7 +729,7 @@
 }
 
 void BookmarkBarView::Layout() {
-  LayoutItems(false);
+  LayoutItems();
 }
 
 void BookmarkBarView::ViewHierarchyChanged(
@@ -1299,7 +1310,7 @@
   }
 }
 
-int BookmarkBarView::GetBookmarkButtonCount() {
+int BookmarkBarView::GetBookmarkButtonCount() const {
   // We contain four non-bookmark button views: other bookmarks, bookmarks
   // separator, chevrons (for overflow), apps page, and the instruction label.
   return child_count() - 5;
@@ -1714,10 +1725,9 @@
       other_bookmarked_button_->visible());
 }
 
-gfx::Size BookmarkBarView::LayoutItems(bool compute_bounds_only) {
-  gfx::Size prefsize;
-  if (!parent() && !compute_bounds_only)
-    return prefsize;
+void BookmarkBarView::LayoutItems() {
+  if (!parent())
+    return;
 
   int x = kLeftMargin;
   int top_margin = IsDetached() ? kDetachedTopMargin : 0;
@@ -1757,36 +1767,29 @@
 
   // Start with the apps page shortcut button.
   if (apps_page_shortcut_->visible()) {
-    if (!compute_bounds_only) {
-      apps_page_shortcut_->SetBounds(x, y, apps_page_shortcut_pref.width(),
-                                     height);
-    }
+    apps_page_shortcut_->SetBounds(x, y, apps_page_shortcut_pref.width(),
+                                   height);
     x += apps_page_shortcut_pref.width() + kButtonPadding;
   }
 
   // Then go through the bookmark buttons.
   if (GetBookmarkButtonCount() == 0 && model_ && model_->loaded()) {
     gfx::Size pref = instructions_->GetPreferredSize();
-    if (!compute_bounds_only) {
-      instructions_->SetBounds(
-          x + kInstructionsPadding, y,
-          std::min(static_cast<int>(pref.width()),
-          max_x - x),
-          height);
-      instructions_->SetVisible(true);
-    }
+    instructions_->SetBounds(
+        x + kInstructionsPadding, y,
+        std::min(static_cast<int>(pref.width()),
+                 max_x - x),
+        height);
+    instructions_->SetVisible(true);
   } else {
-    if (!compute_bounds_only)
-      instructions_->SetVisible(false);
+    instructions_->SetVisible(false);
 
     for (int i = 0; i < GetBookmarkButtonCount(); ++i) {
       views::View* child = child_at(i);
       gfx::Size pref = child->GetPreferredSize();
       int next_x = x + pref.width() + kButtonPadding;
-      if (!compute_bounds_only) {
-        child->SetVisible(next_x < max_x);
-        child->SetBounds(x, y, pref.width(), height);
-      }
+      child->SetVisible(next_x < max_x);
+      child->SetBounds(x, y, pref.width(), height);
       x = next_x;
     }
   }
@@ -1796,58 +1799,30 @@
                             child_at(GetBookmarkButtonCount() - 1)->visible());
 
   // Layout the right side buttons.
-  if (!compute_bounds_only)
-    x = max_x + kButtonPadding;
-  else
-    x += kButtonPadding;
+  x = max_x + kButtonPadding;
 
   // The overflow button.
-  if (!compute_bounds_only) {
-    overflow_button_->SetBounds(x, y, overflow_pref.width(), height);
-    overflow_button_->SetVisible(!all_visible);
-  }
+  overflow_button_->SetBounds(x, y, overflow_pref.width(), height);
+  overflow_button_->SetVisible(!all_visible);
   x += overflow_pref.width();
 
   // Separator.
   if (bookmarks_separator_view_->visible()) {
-    if (!compute_bounds_only) {
-      bookmarks_separator_view_->SetBounds(x,
-                                           y - top_margin,
-                                           bookmarks_separator_pref.width(),
-                                           height + top_margin + kBottomMargin -
-                                           separator_margin);
-    }
+    bookmarks_separator_view_->SetBounds(x,
+                                         y - top_margin,
+                                         bookmarks_separator_pref.width(),
+                                         height + top_margin + kBottomMargin -
+                                         separator_margin);
 
     x += bookmarks_separator_pref.width();
   }
 
   // The other bookmarks button.
   if (other_bookmarked_button_->visible()) {
-    if (!compute_bounds_only) {
-      other_bookmarked_button_->SetBounds(x, y, other_bookmarked_pref.width(),
-                                          height);
-    }
+    other_bookmarked_button_->SetBounds(x, y, other_bookmarked_pref.width(),
+                                        height);
     x += other_bookmarked_pref.width() + kButtonPadding;
   }
-
-  // Set the preferred size computed so far.
-  if (compute_bounds_only) {
-    x += kRightMargin;
-    prefsize.set_width(x);
-    if (IsDetached()) {
-      x += static_cast<int>(kNewtabHorizontalPadding *
-          (1 - size_animation_->GetCurrentValue()));
-      prefsize.set_height(
-          chrome::kBookmarkBarHeight +
-          static_cast<int>(
-              (chrome::kNTPBookmarkBarHeight - chrome::kBookmarkBarHeight) *
-              (1 - size_animation_->GetCurrentValue())));
-    } else {
-      prefsize.set_height(static_cast<int>(chrome::kBookmarkBarHeight *
-                                           size_animation_->GetCurrentValue()));
-    }
-  }
-  return prefsize;
 }
 
 void BookmarkBarView::OnAppsPageShortcutVisibilityPrefChanged() {
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h
index f9ca681..f58a790 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h
@@ -164,8 +164,8 @@
   virtual int GetToolbarOverlap() const OVERRIDE;
 
   // View methods:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual bool HitTestRect(const gfx::Rect& rect) const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void ViewHierarchyChanged(
@@ -285,7 +285,7 @@
   // Returns the number of buttons corresponding to starred urls/folders. This
   // is equivalent to the number of children the bookmark bar node from the
   // bookmark bar model has.
-  int GetBookmarkButtonCount();
+  int GetBookmarkButtonCount() const;
 
   // Returns the button at the specified index.
   views::TextButton* GetBookmarkButton(int index);
@@ -369,11 +369,8 @@
   // Updates the visibility of |bookmarks_separator_view_|.
   void UpdateBookmarksSeparatorVisibility();
 
-  // This method computes the bounds for the bookmark bar items. If
-  // |compute_bounds_only| = TRUE, the bounds for the items are just computed,
-  // but are not set. This mode is used by GetPreferredSize() to obtain the
-  // desired bounds. If |compute_bounds_only| = FALSE, the bounds are set.
-  gfx::Size LayoutItems(bool compute_bounds_only);
+  // This method computes the bounds for the bookmark bar items.
+  void LayoutItems();
 
   // Updates the visibility of the apps shortcut based on the pref value.
   void OnAppsPageShortcutVisibilityPrefChanged();
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc
index ceb8622..6016fd5 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc
@@ -201,7 +201,7 @@
     return bb_view_.get();
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE { return bb_view_pref_; }
+  virtual gfx::Size GetPreferredSize() const OVERRIDE { return bb_view_pref_; }
 
   views::TextButton* GetBookmarkButton(int view_index) {
     return bb_view_->GetBookmarkButton(view_index);
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
index fc61f39a..b126ced 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
@@ -292,7 +292,7 @@
   return base::string16();
 }
 
-gfx::Size BookmarkBubbleView::GetMinimumSize() {
+gfx::Size BookmarkBubbleView::GetMinimumSize() const {
   gfx::Size size(views::BubbleDelegateView::GetPreferredSize());
   size.SetToMax(gfx::Size(kMinBubbleWidth, 0));
   return size;
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.h b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.h
index 25ff8fc..3a67c3a8 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.h
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.h
@@ -77,7 +77,7 @@
   base::string16 GetTitle();
 
   // Overridden from views::View:
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
 
   // Overridden from views::ButtonListener:
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_editor_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_editor_view.cc
index d22fd94..4d4f363 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_editor_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_editor_view.cc
@@ -134,7 +134,7 @@
   return true;
 }
 
-gfx::Size BookmarkEditorView::GetPreferredSize() {
+gfx::Size BookmarkEditorView::GetPreferredSize() const {
   if (!show_tree_)
     return views::View::GetPreferredSize();
 
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_editor_view.h b/chrome/browser/ui/views/bookmarks/bookmark_editor_view.h
index e35537da..81309467 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_editor_view.h
+++ b/chrome/browser/ui/views/bookmarks/bookmark_editor_view.h
@@ -88,7 +88,7 @@
   virtual bool Accept() OVERRIDE;
 
   // views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
 
   // views::TreeViewController:
diff --git a/chrome/browser/ui/views/collected_cookies_views.cc b/chrome/browser/ui/views/collected_cookies_views.cc
index 465fa47..b03674ee 100644
--- a/chrome/browser/ui/views/collected_cookies_views.cc
+++ b/chrome/browser/ui/views/collected_cookies_views.cc
@@ -155,7 +155,7 @@
   }
 
   // views::View overrides.
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     if (!visible())
       return gfx::Size();
 
@@ -292,7 +292,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 // CollectedCookiesViews, views::View overrides:
 
-gfx::Size CollectedCookiesViews::GetMinimumSize() {
+gfx::Size CollectedCookiesViews::GetMinimumSize() const {
   // Allow UpdateWebContentsModalDialogPosition to clamp the dialog width.
   return gfx::Size(0, View::GetMinimumSize().height());
 }
diff --git a/chrome/browser/ui/views/collected_cookies_views.h b/chrome/browser/ui/views/collected_cookies_views.h
index 5a62fef..3315ef4 100644
--- a/chrome/browser/ui/views/collected_cookies_views.h
+++ b/chrome/browser/ui/views/collected_cookies_views.h
@@ -64,7 +64,7 @@
   virtual void OnTreeViewSelectionChanged(views::TreeView* tree_view) OVERRIDE;
 
   // views::View:
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) OVERRIDE;
 
diff --git a/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc b/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc
index c3042b0..c6a64a0 100644
--- a/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc
+++ b/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc
@@ -153,13 +153,13 @@
     impl_->window()->Close();
     return true;
   }
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     gfx::Size size;
     if (!impl_->closed_via_webui())
       GetWebDialogDelegate()->GetDialogSize(&size);
     return size;
   }
-  virtual gfx::Size GetMinimumSize() OVERRIDE {
+  virtual gfx::Size GetMinimumSize() const OVERRIDE {
     // Return an empty size so that we can be made smaller.
     return gfx::Size();
   }
diff --git a/chrome/browser/ui/views/constrained_window_views_unittest.cc b/chrome/browser/ui/views/constrained_window_views_unittest.cc
index e6a50a7..31a5280b 100644
--- a/chrome/browser/ui/views/constrained_window_views_unittest.cc
+++ b/chrome/browser/ui/views/constrained_window_views_unittest.cc
@@ -27,8 +27,10 @@
 
   // Overriden from DialogDelegateView:
   virtual View* GetContentsView() OVERRIDE { return this; }
-  virtual gfx::Size GetPreferredSize() OVERRIDE { return preferred_size_; }
-  virtual gfx::Size GetMinimumSize() OVERRIDE { return gfx::Size(); }
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
+    return preferred_size_;
+  }
+  virtual gfx::Size GetMinimumSize() const OVERRIDE { return gfx::Size(); }
 
  private:
   gfx::Size preferred_size_;
diff --git a/chrome/browser/ui/views/content_setting_bubble_contents.cc b/chrome/browser/ui/views/content_setting_bubble_contents.cc
index 9bfee025..64e7617 100644
--- a/chrome/browser/ui/views/content_setting_bubble_contents.cc
+++ b/chrome/browser/ui/views/content_setting_bubble_contents.cc
@@ -154,7 +154,7 @@
   STLDeleteValues(&media_menus_);
 }
 
-gfx::Size ContentSettingBubbleContents::GetPreferredSize() {
+gfx::Size ContentSettingBubbleContents::GetPreferredSize() const {
   gfx::Size preferred_size(views::View::GetPreferredSize());
   int preferred_width =
       (!content_setting_bubble_model_->bubble_content().domain_lists.empty() &&
diff --git a/chrome/browser/ui/views/content_setting_bubble_contents.h b/chrome/browser/ui/views/content_setting_bubble_contents.h
index 4afdb60..e34f2ba 100644
--- a/chrome/browser/ui/views/content_setting_bubble_contents.h
+++ b/chrome/browser/ui/views/content_setting_bubble_contents.h
@@ -51,7 +51,7 @@
       views::BubbleBorder::Arrow arrow);
   virtual ~ContentSettingBubbleContents();
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // Callback to allow ContentSettingMediaMenuModel to update the menu label.
   void UpdateMenuLabel(content::MediaStreamType type,
diff --git a/chrome/browser/ui/views/create_application_shortcut_view.cc b/chrome/browser/ui/views/create_application_shortcut_view.cc
index b0e6e253..297e29e 100644
--- a/chrome/browser/ui/views/create_application_shortcut_view.cc
+++ b/chrome/browser/ui/views/create_application_shortcut_view.cc
@@ -332,7 +332,7 @@
   }
 }
 
-gfx::Size CreateApplicationShortcutView::GetPreferredSize() {
+gfx::Size CreateApplicationShortcutView::GetPreferredSize() const {
   // TODO(evanm): should this use IDS_CREATE_SHORTCUTS_DIALOG_WIDTH_CHARS?
   static const int kDialogWidth = 360;
   int height = GetLayoutManager()->GetPreferredHeightForWidth(this,
diff --git a/chrome/browser/ui/views/create_application_shortcut_view.h b/chrome/browser/ui/views/create_application_shortcut_view.h
index 64f58a4..7a50325 100644
--- a/chrome/browser/ui/views/create_application_shortcut_view.h
+++ b/chrome/browser/ui/views/create_application_shortcut_view.h
@@ -47,7 +47,7 @@
   void InitControls();
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // Overridden from views::DialogDelegate:
   virtual base::string16 GetDialogButtonLabel(
diff --git a/chrome/browser/ui/views/desktop_media_picker_views.cc b/chrome/browser/ui/views/desktop_media_picker_views.cc
index f6b9b8a..76d33a9 100644
--- a/chrome/browser/ui/views/desktop_media_picker_views.cc
+++ b/chrome/browser/ui/views/desktop_media_picker_views.cc
@@ -126,7 +126,7 @@
   DesktopMediaSourceView* GetSelection();
 
   // views::View overrides.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
 
@@ -163,7 +163,7 @@
   void OnDoubleClick();
 
   // views::View overrides.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
   // views::DialogDelegateView overrides.
@@ -364,7 +364,7 @@
   return NULL;
 }
 
-gfx::Size DesktopMediaListView::GetPreferredSize() {
+gfx::Size DesktopMediaListView::GetPreferredSize() const {
   int total_rows = (child_count() + kListColumns - 1) / kListColumns;
   return gfx::Size(kTotalListWidth, kListItemHeight * total_rows);
 }
@@ -540,7 +540,7 @@
   parent_ = NULL;
 }
 
-gfx::Size DesktopMediaPickerDialogView::GetPreferredSize() {
+gfx::Size DesktopMediaPickerDialogView::GetPreferredSize() const {
   return gfx::Size(600, 500);
 }
 
diff --git a/chrome/browser/ui/views/download/download_item_view.cc b/chrome/browser/ui/views/download/download_item_view.cc
index a1b60980..4db589a 100644
--- a/chrome/browser/ui/views/download/download_item_view.cc
+++ b/chrome/browser/ui/views/download/download_item_view.cc
@@ -361,7 +361,7 @@
   }
 }
 
-gfx::Size DownloadItemView::GetPreferredSize() {
+gfx::Size DownloadItemView::GetPreferredSize() const {
   int width, height;
 
   // First, we set the height to the height of two rows or text plus margins.
@@ -371,7 +371,7 @@
   height = std::max<int>(height, DownloadShelf::kSmallProgressIconSize);
 
   if (IsShowingWarningDialog()) {
-    BodyImageSet* body_image_set =
+    const BodyImageSet* body_image_set =
         (mode_ == DANGEROUS_MODE) ? &dangerous_mode_body_image_set_ :
             &malicious_mode_body_image_set_;
     width = kLeftPadding + body_image_set->top_left->width();
@@ -1204,7 +1204,7 @@
   TooltipTextChanged();
 }
 
-gfx::Size DownloadItemView::GetButtonSize() {
+gfx::Size DownloadItemView::GetButtonSize() const {
   DCHECK(discard_button_ && (mode_ == MALICIOUS_MODE || save_button_));
   gfx::Size size;
 
diff --git a/chrome/browser/ui/views/download/download_item_view.h b/chrome/browser/ui/views/download/download_item_view.h
index 0dffb2e..9920bc4 100644
--- a/chrome/browser/ui/views/download/download_item_view.h
+++ b/chrome/browser/ui/views/download/download_item_view.h
@@ -76,7 +76,7 @@
 
   // Overridden from views::View:
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
   virtual bool OnMouseDragged(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE;
@@ -198,7 +198,7 @@
 
   // Sets |size| with the size of the Save and Discard buttons (they have the
   // same size).
-  gfx::Size GetButtonSize();
+  gfx::Size GetButtonSize() const;
 
   // Sizes the dangerous download label to a minimum width available using 2
   // lines.  The size is computed only the first time this method is invoked
@@ -313,7 +313,7 @@
   bool dangerous_download_label_sized_;
 
   // The size of the buttons.  Cached so animation works when hidden.
-  gfx::Size cached_button_size_;
+  mutable gfx::Size cached_button_size_;
 
   // Whether we are currently disabled as part of opening the downloaded file.
   bool disabled_while_opening_;
diff --git a/chrome/browser/ui/views/download/download_shelf_view.cc b/chrome/browser/ui/views/download/download_shelf_view.cc
index 2be559b..a8310bb 100644
--- a/chrome/browser/ui/views/download/download_shelf_view.cc
+++ b/chrome/browser/ui/views/download/download_shelf_view.cc
@@ -165,7 +165,7 @@
   return browser_;
 }
 
-gfx::Size DownloadShelfView::GetPreferredSize() {
+gfx::Size DownloadShelfView::GetPreferredSize() const {
   gfx::Size prefsize(kRightPadding + kLeftPadding + kCloseAndLinkPadding, 0);
   AdjustSize(close_button_, &prefsize);
   AdjustSize(show_all_view_, &prefsize);
diff --git a/chrome/browser/ui/views/download/download_shelf_view.h b/chrome/browser/ui/views/download/download_shelf_view.h
index e7ce06cb..8f4f22e0 100644
--- a/chrome/browser/ui/views/download/download_shelf_view.h
+++ b/chrome/browser/ui/views/download/download_shelf_view.h
@@ -60,7 +60,7 @@
   BrowserView* get_parent() { return parent_; }
 
   // Implementation of View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) OVERRIDE;
diff --git a/chrome/browser/ui/views/extensions/bookmark_app_bubble_view.cc b/chrome/browser/ui/views/extensions/bookmark_app_bubble_view.cc
index b6c32eb..cf1ddd58 100644
--- a/chrome/browser/ui/views/extensions/bookmark_app_bubble_view.cc
+++ b/chrome/browser/ui/views/extensions/bookmark_app_bubble_view.cc
@@ -212,7 +212,7 @@
   return BubbleDelegateView::AcceleratorPressed(accelerator);
 }
 
-gfx::Size BookmarkAppBubbleView::GetMinimumSize() {
+gfx::Size BookmarkAppBubbleView::GetMinimumSize() const {
   gfx::Size size(views::BubbleDelegateView::GetPreferredSize());
   size.SetToMax(gfx::Size(kMinBubbleWidth, 0));
   return size;
diff --git a/chrome/browser/ui/views/extensions/bookmark_app_bubble_view.h b/chrome/browser/ui/views/extensions/bookmark_app_bubble_view.h
index a3a9d79..6239f4e 100644
--- a/chrome/browser/ui/views/extensions/bookmark_app_bubble_view.h
+++ b/chrome/browser/ui/views/extensions/bookmark_app_bubble_view.h
@@ -60,7 +60,7 @@
 
   // Overridden from views::View:
   virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
 
   // Overridden from views::ButtonListener:
   // Closes the bubble or opens the edit dialog.
diff --git a/chrome/browser/ui/views/extensions/extension_install_dialog_view.cc b/chrome/browser/ui/views/extensions/extension_install_dialog_view.cc
index f9eabf6..9aa465c 100644
--- a/chrome/browser/ui/views/extensions/extension_install_dialog_view.cc
+++ b/chrome/browser/ui/views/extensions/extension_install_dialog_view.cc
@@ -153,7 +153,7 @@
   virtual ui::ModalType GetModalType() const OVERRIDE;
   virtual base::string16 GetWindowTitle() const OVERRIDE;
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) OVERRIDE;
 
@@ -343,7 +343,7 @@
     virtual ~DetailsView() {}
 
     // views::View:
-    virtual gfx::Size GetPreferredSize() OVERRIDE;
+    virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
     void AddDetail(const base::string16& detail);
 
@@ -1085,7 +1085,7 @@
   DialogDelegateView::Layout();
 }
 
-gfx::Size ExtensionInstallDialogView::GetPreferredSize() {
+gfx::Size ExtensionInstallDialogView::GetPreferredSize() const {
   return dialog_size_;
 }
 
@@ -1172,7 +1172,7 @@
   layout_->AddView(detail_label);
 }
 
-gfx::Size ExpandableContainerView::DetailsView::GetPreferredSize() {
+gfx::Size ExpandableContainerView::DetailsView::GetPreferredSize() const {
   gfx::Size size = views::View::GetPreferredSize();
   return gfx::Size(size.width(), size.height() * state_);
 }
diff --git a/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc b/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
index c28ba8d..a20c7971 100644
--- a/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
+++ b/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
@@ -373,7 +373,7 @@
     return height;
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     int width = kHorizOuterMargin;
     width += kIconSize;
     width += views::kPanelHorizMargin;
@@ -583,11 +583,11 @@
   return true;
 }
 
-gfx::Rect ExtensionInstalledBubbleView::GetAnchorRect() {
+gfx::Rect ExtensionInstalledBubbleView::GetAnchorRect() const {
   // For omnibox keyword bubbles, move the arrow to point to the left edge
   // of the omnibox, just to the right of the icon.
   if (bubble_.type() == bubble_.OMNIBOX_KEYWORD) {
-    LocationBarView* location_bar_view =
+    const LocationBarView* location_bar_view =
         BrowserView::GetBrowserViewForBrowser(bubble_.browser())->
         GetLocationBarView();
     return gfx::Rect(location_bar_view->GetOmniboxViewOrigin(),
diff --git a/chrome/browser/ui/views/extensions/extension_installed_bubble_view.h b/chrome/browser/ui/views/extensions/extension_installed_bubble_view.h
index ca9bd0a..1493811 100644
--- a/chrome/browser/ui/views/extensions/extension_installed_bubble_view.h
+++ b/chrome/browser/ui/views/extensions/extension_installed_bubble_view.h
@@ -50,7 +50,7 @@
   virtual void WindowClosing() OVERRIDE;
 
   // views::BubbleDelegate:
-  virtual gfx::Rect GetAnchorRect() OVERRIDE;
+  virtual gfx::Rect GetAnchorRect() const OVERRIDE;
 
   ExtensionInstalledBubble bubble_;
 
diff --git a/chrome/browser/ui/views/extensions/extension_popup.cc b/chrome/browser/ui/views/extensions/extension_popup.cc
index 471a0b6..9fa93b8 100644
--- a/chrome/browser/ui/views/extensions/extension_popup.cc
+++ b/chrome/browser/ui/views/extensions/extension_popup.cc
@@ -118,7 +118,7 @@
   SizeToContents();
 }
 
-gfx::Size ExtensionPopup::GetPreferredSize() {
+gfx::Size ExtensionPopup::GetPreferredSize() const {
   // Constrain the size to popup min/max.
   gfx::Size sz = views::View::GetPreferredSize();
   sz.set_width(std::max(kMinWidth, std::min(kMaxWidth, sz.width())));
diff --git a/chrome/browser/ui/views/extensions/extension_popup.h b/chrome/browser/ui/views/extensions/extension_popup.h
index 12878ab..c3c74dd 100644
--- a/chrome/browser/ui/views/extensions/extension_popup.h
+++ b/chrome/browser/ui/views/extensions/extension_popup.h
@@ -68,7 +68,7 @@
   virtual void OnExtensionSizeChanged(ExtensionViewViews* view) OVERRIDE;
 
   // views::View overrides.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) OVERRIDE;
 
diff --git a/chrome/browser/ui/views/extensions/extension_uninstall_dialog_view.cc b/chrome/browser/ui/views/extensions/extension_uninstall_dialog_view.cc
index db14320..2587a4d 100644
--- a/chrome/browser/ui/views/extensions/extension_uninstall_dialog_view.cc
+++ b/chrome/browser/ui/views/extensions/extension_uninstall_dialog_view.cc
@@ -98,7 +98,7 @@
   virtual base::string16 GetWindowTitle() const OVERRIDE;
 
   // views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   virtual void Layout() OVERRIDE;
 
@@ -203,7 +203,7 @@
   return l10n_util::GetStringUTF16(IDS_EXTENSION_UNINSTALL_PROMPT_TITLE);
 }
 
-gfx::Size ExtensionUninstallDialogDelegateView::GetPreferredSize() {
+gfx::Size ExtensionUninstallDialogDelegateView::GetPreferredSize() const {
   int width = kRightColumnWidth;
   width += kIconSize;
   width += views::kButtonHEdgeMarginNew * 2;
diff --git a/chrome/browser/ui/views/extensions/extension_view_views.cc b/chrome/browser/ui/views/extensions/extension_view_views.cc
index 77a1263..e0c58f012 100644
--- a/chrome/browser/ui/views/extensions/extension_view_views.cc
+++ b/chrome/browser/ui/views/extensions/extension_view_views.cc
@@ -37,7 +37,7 @@
   CleanUp();
 }
 
-gfx::Size ExtensionViewViews::GetMinimumSize() {
+gfx::Size ExtensionViewViews::GetMinimumSize() const {
   // If the minimum size has never been set, returns the preferred size (same
   // behavior as views::View).
   return (minimum_size_ == gfx::Size()) ? GetPreferredSize() : minimum_size_;
diff --git a/chrome/browser/ui/views/extensions/extension_view_views.h b/chrome/browser/ui/views/extensions/extension_view_views.h
index b59bb68..5d858157 100644
--- a/chrome/browser/ui/views/extensions/extension_view_views.h
+++ b/chrome/browser/ui/views/extensions/extension_view_views.h
@@ -35,7 +35,7 @@
   virtual ~ExtensionViewViews();
 
   // views::NativeViewHost:
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual void SetVisible(bool is_visible) OVERRIDE;
   virtual gfx::NativeCursor GetCursor(const ui::MouseEvent& event) OVERRIDE;
   virtual void ViewHierarchyChanged(
diff --git a/chrome/browser/ui/views/find_bar_view.cc b/chrome/browser/ui/views/find_bar_view.cc
index 16988203..37bca60 100644
--- a/chrome/browser/ui/views/find_bar_view.cc
+++ b/chrome/browser/ui/views/find_bar_view.cc
@@ -337,7 +337,7 @@
       find_previous_button_->height());
 }
 
-gfx::Size FindBarView::GetPreferredSize() {
+gfx::Size FindBarView::GetPreferredSize() const {
   gfx::Size prefsize = find_text_->GetPreferredSize();
   prefsize.set_height(preferred_height_);
 
diff --git a/chrome/browser/ui/views/find_bar_view.h b/chrome/browser/ui/views/find_bar_view.h
index b8906c15..6594522 100644
--- a/chrome/browser/ui/views/find_bar_view.h
+++ b/chrome/browser/ui/views/find_bar_view.h
@@ -70,7 +70,7 @@
   // views::View:
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // views::ButtonListener:
   virtual void ButtonPressed(views::Button* sender,
diff --git a/chrome/browser/ui/views/frame/browser_frame.cc b/chrome/browser/ui/views/frame/browser_frame.cc
index 627effc..82fbf6d 100644
--- a/chrome/browser/ui/views/frame/browser_frame.cc
+++ b/chrome/browser/ui/views/frame/browser_frame.cc
@@ -215,7 +215,7 @@
 }
 
 bool BrowserFrame::GetAccelerator(int command_id,
-                                  ui::Accelerator* accelerator) {
+                                  ui::Accelerator* accelerator) const {
   return browser_view_->GetAccelerator(command_id, accelerator);
 }
 
diff --git a/chrome/browser/ui/views/frame/browser_frame.h b/chrome/browser/ui/views/frame/browser_frame.h
index 3fa17e7..cf4c0d5 100644
--- a/chrome/browser/ui/views/frame/browser_frame.h
+++ b/chrome/browser/ui/views/frame/browser_frame.h
@@ -90,7 +90,7 @@
   virtual views::internal::RootView* CreateRootView() OVERRIDE;
   virtual views::NonClientFrameView* CreateNonClientFrameView() OVERRIDE;
   virtual bool GetAccelerator(int command_id,
-                              ui::Accelerator* accelerator) OVERRIDE;
+                              ui::Accelerator* accelerator) const OVERRIDE;
   virtual ui::ThemeProvider* GetThemeProvider() const OVERRIDE;
   virtual void SchedulePaintInRect(const gfx::Rect& rect) OVERRIDE;
   virtual void OnNativeWidgetActivationChanged(bool active) OVERRIDE;
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc
index 19d9161..90b375e 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc
@@ -326,7 +326,7 @@
   state->role = ui::AX_ROLE_TITLE_BAR;
 }
 
-gfx::Size BrowserNonClientFrameViewAsh::GetMinimumSize() {
+gfx::Size BrowserNonClientFrameViewAsh::GetMinimumSize() const {
   gfx::Size min_client_view_size(frame()->client_view()->GetMinimumSize());
   int min_width = std::max(header_painter_->GetMinimumHeaderWidth(),
                            min_client_view_size.width());
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h
index b5fd737c..6b805ea 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h
@@ -58,7 +58,7 @@
   virtual const char* GetClassName() const OVERRIDE;
   virtual bool HitTestRect(const gfx::Rect& rect) const OVERRIDE;
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
 
   // ash::ShellObserver:
   virtual void OnMaximizeModeStarted() OVERRIDE;
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
index 505532d4..66308971 100644
--- a/chrome/browser/ui/views/frame/browser_view.cc
+++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -571,7 +571,8 @@
 #endif
 }
 
-bool BrowserView::GetAccelerator(int cmd_id, ui::Accelerator* accelerator) {
+bool BrowserView::GetAccelerator(int cmd_id,
+                                 ui::Accelerator* accelerator) const {
   // We retrieve the accelerator information for standard accelerators
   // for cut, copy and paste.
   if (chrome::GetStandardAcceleratorForCommandId(cmd_id, accelerator))
@@ -1763,7 +1764,7 @@
   return GetBrowserViewLayout()->NonClientHitTest(point);
 }
 
-gfx::Size BrowserView::GetMinimumSize() {
+gfx::Size BrowserView::GetMinimumSize() const {
   return GetBrowserViewLayout()->GetMinimumSize();
 }
 
diff --git a/chrome/browser/ui/views/frame/browser_view.h b/chrome/browser/ui/views/frame/browser_view.h
index 3345b035..54c42d6 100644
--- a/chrome/browser/ui/views/frame/browser_view.h
+++ b/chrome/browser/ui/views/frame/browser_view.h
@@ -208,7 +208,7 @@
   // command id. This can be used to provide menu item shortcut hints etc.
   // Returns true if an accelerator was found for the specified |cmd_id|, false
   // otherwise.
-  bool GetAccelerator(int cmd_id, ui::Accelerator* accelerator);
+  bool GetAccelerator(int cmd_id, ui::Accelerator* accelerator) const;
 
   // Returns true if the specificed |accelerator| is registered with this view.
   bool IsAcceleratorRegistered(const ui::Accelerator& accelerator);
@@ -431,7 +431,7 @@
   // Overridden from views::ClientView:
   virtual bool CanClose() OVERRIDE;
   virtual int NonClientHitTest(const gfx::Point& point) OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
 
   // InfoBarContainer::Delegate overrides
   virtual SkColor GetInfoBarSeparatorColor() const OVERRIDE;
diff --git a/chrome/browser/ui/views/frame/browser_view_layout.cc b/chrome/browser/ui/views/frame/browser_view_layout.cc
index 601ed11..55b9da9f 100644
--- a/chrome/browser/ui/views/frame/browser_view_layout.cc
+++ b/chrome/browser/ui/views/frame/browser_view_layout.cc
@@ -370,7 +370,7 @@
 
 // Return the preferred size which is the size required to give each
 // children their respective preferred size.
-gfx::Size BrowserViewLayout::GetPreferredSize(views::View* host) {
+gfx::Size BrowserViewLayout::GetPreferredSize(const views::View* host) const {
   return gfx::Size();
 }
 
diff --git a/chrome/browser/ui/views/frame/browser_view_layout.h b/chrome/browser/ui/views/frame/browser_view_layout.h
index 3bc9143..2395651 100644
--- a/chrome/browser/ui/views/frame/browser_view_layout.h
+++ b/chrome/browser/ui/views/frame/browser_view_layout.h
@@ -84,7 +84,7 @@
 
   // views::LayoutManager overrides:
   virtual void Layout(views::View* host) OVERRIDE;
-  virtual gfx::Size GetPreferredSize(views::View* host) OVERRIDE;
+  virtual gfx::Size GetPreferredSize(const views::View* host) const OVERRIDE;
 
  private:
   FRIEND_TEST_ALL_PREFIXES(BrowserViewLayoutTest, BrowserViewLayout);
diff --git a/chrome/browser/ui/views/frame/browser_view_layout_unittest.cc b/chrome/browser/ui/views/frame/browser_view_layout_unittest.cc
index ff080b0..45932ca 100644
--- a/chrome/browser/ui/views/frame/browser_view_layout_unittest.cc
+++ b/chrome/browser/ui/views/frame/browser_view_layout_unittest.cc
@@ -89,7 +89,7 @@
   virtual ~MockView() {}
 
   // views::View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return size_;
   }
 
diff --git a/chrome/browser/ui/views/frame/contents_layout_manager.cc b/chrome/browser/ui/views/frame/contents_layout_manager.cc
index b6dd017d..4aa51bd 100644
--- a/chrome/browser/ui/views/frame/contents_layout_manager.cc
+++ b/chrome/browser/ui/views/frame/contents_layout_manager.cc
@@ -67,7 +67,8 @@
   contents_view_->SetBoundsRect(new_contents_bounds);
 }
 
-gfx::Size ContentsLayoutManager::GetPreferredSize(views::View* host) {
+gfx::Size ContentsLayoutManager::GetPreferredSize(
+    const views::View* host) const {
   return gfx::Size();
 }
 
diff --git a/chrome/browser/ui/views/frame/contents_layout_manager.h b/chrome/browser/ui/views/frame/contents_layout_manager.h
index 40d6440..b37066f 100644
--- a/chrome/browser/ui/views/frame/contents_layout_manager.h
+++ b/chrome/browser/ui/views/frame/contents_layout_manager.h
@@ -26,7 +26,7 @@
 
   // views::LayoutManager overrides:
   virtual void Layout(views::View* host) OVERRIDE;
-  virtual gfx::Size GetPreferredSize(views::View* host) OVERRIDE;
+  virtual gfx::Size GetPreferredSize(const views::View* host) const OVERRIDE;
   virtual void Installed(views::View* host) OVERRIDE;
   virtual void Uninstalled(views::View* host) OVERRIDE;
 
diff --git a/chrome/browser/ui/views/frame/glass_browser_frame_view.cc b/chrome/browser/ui/views/frame/glass_browser_frame_view.cc
index 38edf317..8e43d7d8 100644
--- a/chrome/browser/ui/views/frame/glass_browser_frame_view.cc
+++ b/chrome/browser/ui/views/frame/glass_browser_frame_view.cc
@@ -162,7 +162,7 @@
   }
 }
 
-gfx::Size GlassBrowserFrameView::GetMinimumSize() {
+gfx::Size GlassBrowserFrameView::GetMinimumSize() const {
   gfx::Size min_size(browser_view()->GetMinimumSize());
 
   // Account for the client area insets.
diff --git a/chrome/browser/ui/views/frame/glass_browser_frame_view.h b/chrome/browser/ui/views/frame/glass_browser_frame_view.h
index a9fbc4bc..0080fd3 100644
--- a/chrome/browser/ui/views/frame/glass_browser_frame_view.h
+++ b/chrome/browser/ui/views/frame/glass_browser_frame_view.h
@@ -27,7 +27,7 @@
   virtual int GetTopInset() const OVERRIDE;
   virtual int GetThemeBackgroundXInset() const OVERRIDE;
   virtual void UpdateThrobber(bool running) OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
 
   // Overridden from views::NonClientFrameView:
   virtual gfx::Rect GetBoundsForClientView() const OVERRIDE;
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 37f1484c..1de1364f 100644
--- a/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
+++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
@@ -190,7 +190,7 @@
     window_icon_->Update();
 }
 
-gfx::Size OpaqueBrowserFrameView::GetMinimumSize() {
+gfx::Size OpaqueBrowserFrameView::GetMinimumSize() const {
   return layout_->GetMinimumSize(width());
 }
 
diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view.h b/chrome/browser/ui/views/frame/opaque_browser_frame_view.h
index 9b075905..8be9445 100644
--- a/chrome/browser/ui/views/frame/opaque_browser_frame_view.h
+++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view.h
@@ -45,7 +45,7 @@
   virtual int GetTopInset() const OVERRIDE;
   virtual int GetThemeBackgroundXInset() const OVERRIDE;
   virtual void UpdateThrobber(bool running) OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
 
   // Overridden from views::NonClientFrameView:
   virtual gfx::Rect GetBoundsForClientView() const OVERRIDE;
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 d17cf76..5c5dd45 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
@@ -675,7 +675,8 @@
       host->width(), host->height());
 }
 
-gfx::Size OpaqueBrowserFrameViewLayout::GetPreferredSize(views::View* host) {
+gfx::Size OpaqueBrowserFrameViewLayout::GetPreferredSize(
+    const views::View* host) const {
   // This is never used; NonClientView::GetPreferredSize() will be called
   // instead.
   NOTREACHED();
diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h
index c3f0ec9c..16ca682 100644
--- a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h
+++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h
@@ -140,7 +140,7 @@
 
   // Overriden from views::LayoutManager:
   virtual void Layout(views::View* host) OVERRIDE;
-  virtual gfx::Size GetPreferredSize(views::View* host) OVERRIDE;
+  virtual gfx::Size GetPreferredSize(const views::View* host) const OVERRIDE;
   virtual void ViewAdded(views::View* host, views::View* view) OVERRIDE;
   virtual void ViewRemoved(views::View* host, views::View* view) OVERRIDE;
 
diff --git a/chrome/browser/ui/views/fullscreen_exit_bubble_views.cc b/chrome/browser/ui/views/fullscreen_exit_bubble_views.cc
index 53e5e37e..a664f5c 100644
--- a/chrome/browser/ui/views/fullscreen_exit_bubble_views.cc
+++ b/chrome/browser/ui/views/fullscreen_exit_bubble_views.cc
@@ -48,7 +48,7 @@
   virtual ~ButtonView();
 
   // Returns an empty size when the view is not visible.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   views::LabelButton* accept_button() const { return accept_button_; }
   views::LabelButton* deny_button() const { return deny_button_; }
@@ -81,7 +81,7 @@
 ButtonView::~ButtonView() {
 }
 
-gfx::Size ButtonView::GetPreferredSize() {
+gfx::Size ButtonView::GetPreferredSize() const {
   return visible() ? views::View::GetPreferredSize() : gfx::Size();
 }
 
diff --git a/chrome/browser/ui/views/importer/import_lock_dialog_view.cc b/chrome/browser/ui/views/importer/import_lock_dialog_view.cc
index 2904444b4..bd8cda85 100644
--- a/chrome/browser/ui/views/importer/import_lock_dialog_view.cc
+++ b/chrome/browser/ui/views/importer/import_lock_dialog_view.cc
@@ -50,7 +50,7 @@
 ImportLockDialogView::~ImportLockDialogView() {
 }
 
-gfx::Size ImportLockDialogView::GetPreferredSize() {
+gfx::Size ImportLockDialogView::GetPreferredSize() const {
   return gfx::Size(views::Widget::GetLocalizedContentsSize(
       IDS_IMPORTLOCK_DIALOG_WIDTH_CHARS,
       IDS_IMPORTLOCK_DIALOG_HEIGHT_LINES));
diff --git a/chrome/browser/ui/views/importer/import_lock_dialog_view.h b/chrome/browser/ui/views/importer/import_lock_dialog_view.h
index 9c5e3d1..1a62eac 100644
--- a/chrome/browser/ui/views/importer/import_lock_dialog_view.h
+++ b/chrome/browser/ui/views/importer/import_lock_dialog_view.h
@@ -28,7 +28,7 @@
   virtual ~ImportLockDialogView();
 
   // views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
   // views::DialogDelegate:
diff --git a/chrome/browser/ui/views/infobars/after_translate_infobar.cc b/chrome/browser/ui/views/infobars/after_translate_infobar.cc
index 4c3d250c..ff1a30e 100644
--- a/chrome/browser/ui/views/infobars/after_translate_infobar.cc
+++ b/chrome/browser/ui/views/infobars/after_translate_infobar.cc
@@ -149,7 +149,7 @@
     TranslateInfoBarBase::ButtonPressed(sender, event);
 }
 
-int AfterTranslateInfoBar::ContentMinimumWidth() {
+int AfterTranslateInfoBar::ContentMinimumWidth() const {
   return label_1_->GetMinimumSize().width() +
       label_2_->GetMinimumSize().width() + label_3_->GetMinimumSize().width() +
       NonLabelWidth();
diff --git a/chrome/browser/ui/views/infobars/after_translate_infobar.h b/chrome/browser/ui/views/infobars/after_translate_infobar.h
index 1334376..33b737ad 100644
--- a/chrome/browser/ui/views/infobars/after_translate_infobar.h
+++ b/chrome/browser/ui/views/infobars/after_translate_infobar.h
@@ -30,7 +30,7 @@
       const ViewHierarchyChangedDetails& details) OVERRIDE;
   virtual void ButtonPressed(views::Button* sender,
                              const ui::Event& event) OVERRIDE;
-  virtual int ContentMinimumWidth() OVERRIDE;
+  virtual int ContentMinimumWidth() const OVERRIDE;
 
   // views::MenuButtonListener:
   virtual void OnMenuButtonClicked(views::View* source,
diff --git a/chrome/browser/ui/views/infobars/alternate_nav_infobar_view.cc b/chrome/browser/ui/views/infobars/alternate_nav_infobar_view.cc
index a6cdf99..8e9209d 100644
--- a/chrome/browser/ui/views/infobars/alternate_nav_infobar_view.cc
+++ b/chrome/browser/ui/views/infobars/alternate_nav_infobar_view.cc
@@ -95,7 +95,7 @@
   InfoBarView::ViewHierarchyChanged(details);
 }
 
-int AlternateNavInfoBarView::ContentMinimumWidth() {
+int AlternateNavInfoBarView::ContentMinimumWidth() const {
   int label_1_width = label_1_->GetMinimumSize().width();
   return label_1_width ? label_1_width : link_->GetMinimumSize().width();
 }
diff --git a/chrome/browser/ui/views/infobars/alternate_nav_infobar_view.h b/chrome/browser/ui/views/infobars/alternate_nav_infobar_view.h
index 813f20ff..2cbd04b 100644
--- a/chrome/browser/ui/views/infobars/alternate_nav_infobar_view.h
+++ b/chrome/browser/ui/views/infobars/alternate_nav_infobar_view.h
@@ -34,7 +34,7 @@
   virtual void Layout() OVERRIDE;
   virtual void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) OVERRIDE;
-  virtual int ContentMinimumWidth() OVERRIDE;
+  virtual int ContentMinimumWidth() const OVERRIDE;
 
   // views::LinkListener:
   virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE;
diff --git a/chrome/browser/ui/views/infobars/before_translate_infobar.cc b/chrome/browser/ui/views/infobars/before_translate_infobar.cc
index 873ca1e0..6704716 100644
--- a/chrome/browser/ui/views/infobars/before_translate_infobar.cc
+++ b/chrome/browser/ui/views/infobars/before_translate_infobar.cc
@@ -139,7 +139,7 @@
       delegate->language_name_at(delegate->original_language_index()));
 }
 
-int BeforeTranslateInfoBar::ContentMinimumWidth() {
+int BeforeTranslateInfoBar::ContentMinimumWidth() const {
   return label_1_->GetMinimumSize().width() +
       label_2_->GetMinimumSize().width() + NonLabelWidth();
 }
diff --git a/chrome/browser/ui/views/infobars/before_translate_infobar.h b/chrome/browser/ui/views/infobars/before_translate_infobar.h
index 9c7c89b0..73ee3ca 100644
--- a/chrome/browser/ui/views/infobars/before_translate_infobar.h
+++ b/chrome/browser/ui/views/infobars/before_translate_infobar.h
@@ -31,7 +31,7 @@
                              const ui::Event& event) OVERRIDE;
   virtual void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) OVERRIDE;
-  virtual int ContentMinimumWidth() OVERRIDE;
+  virtual int ContentMinimumWidth() const OVERRIDE;
 
   // views::MenuButtonListener:
   virtual void OnMenuButtonClicked(views::View* source,
diff --git a/chrome/browser/ui/views/infobars/confirm_infobar.cc b/chrome/browser/ui/views/infobars/confirm_infobar.cc
index 61ee46b..3f690ba 100644
--- a/chrome/browser/ui/views/infobars/confirm_infobar.cc
+++ b/chrome/browser/ui/views/infobars/confirm_infobar.cc
@@ -109,7 +109,7 @@
   }
 }
 
-int ConfirmInfoBar::ContentMinimumWidth() {
+int ConfirmInfoBar::ContentMinimumWidth() const {
   return label_->GetMinimumSize().width() + link_->GetMinimumSize().width() +
       NonLabelWidth();
 }
diff --git a/chrome/browser/ui/views/infobars/confirm_infobar.h b/chrome/browser/ui/views/infobars/confirm_infobar.h
index 5ba1a1b..595b66a5 100644
--- a/chrome/browser/ui/views/infobars/confirm_infobar.h
+++ b/chrome/browser/ui/views/infobars/confirm_infobar.h
@@ -34,7 +34,7 @@
       const ViewHierarchyChangedDetails& details) OVERRIDE;
   virtual void ButtonPressed(views::Button* sender,
                              const ui::Event& event) OVERRIDE;
-  virtual int ContentMinimumWidth() OVERRIDE;
+  virtual int ContentMinimumWidth() const OVERRIDE;
 
   // views::LinkListener:
   virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE;
diff --git a/chrome/browser/ui/views/infobars/extension_infobar.cc b/chrome/browser/ui/views/infobars/extension_infobar.cc
index c4d20d2d..d9ea3c2 100644
--- a/chrome/browser/ui/views/infobars/extension_infobar.cc
+++ b/chrome/browser/ui/views/infobars/extension_infobar.cc
@@ -169,9 +169,10 @@
                  weak_ptr_factory_.GetWeakPtr()));
 }
 
-int ExtensionInfoBar::ContentMinimumWidth() {
+int ExtensionInfoBar::ContentMinimumWidth() const {
   return NonExtensionViewWidth() +
-      GetDelegate()->extension_view_host()->view()->GetMinimumSize().width();
+      delegate()->AsExtensionInfoBarDelegate()->extension_view_host()->
+      view()->GetMinimumSize().width();
 }
 
 void ExtensionInfoBar::OnMenuButtonClicked(views::View* source,
@@ -222,6 +223,10 @@
   return delegate()->AsExtensionInfoBarDelegate();
 }
 
+const ExtensionInfoBarDelegate* ExtensionInfoBar::GetDelegate() const {
+  return delegate()->AsExtensionInfoBarDelegate();
+}
+
 int ExtensionInfoBar::NonExtensionViewWidth() const {
   return infobar_icon_->width() + kIconHorizontalMargin;
 }
diff --git a/chrome/browser/ui/views/infobars/extension_infobar.h b/chrome/browser/ui/views/infobars/extension_infobar.h
index 8f8a42c..c2aaa698 100644
--- a/chrome/browser/ui/views/infobars/extension_infobar.h
+++ b/chrome/browser/ui/views/infobars/extension_infobar.h
@@ -30,7 +30,7 @@
   virtual void Layout() OVERRIDE;
   virtual void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) OVERRIDE;
-  virtual int ContentMinimumWidth() OVERRIDE;
+  virtual int ContentMinimumWidth() const OVERRIDE;
 
   // views::MenuButtonListener:
   virtual void OnMenuButtonClicked(views::View* source,
@@ -38,6 +38,7 @@
 
   void OnImageLoaded(const gfx::Image& image);
   ExtensionInfoBarDelegate* GetDelegate();
+  const ExtensionInfoBarDelegate* GetDelegate() const;
 
   // Returns the width of all content other than the extension view.  Layout()
   // uses this to determine how much space the extension view can take.
diff --git a/chrome/browser/ui/views/infobars/infobar_container_view.cc b/chrome/browser/ui/views/infobars/infobar_container_view.cc
index d365076..68a4ab7d 100644
--- a/chrome/browser/ui/views/infobars/infobar_container_view.cc
+++ b/chrome/browser/ui/views/infobars/infobar_container_view.cc
@@ -22,7 +22,7 @@
   RemoveAllInfoBarsForDestruction();
 }
 
-gfx::Size InfoBarContainerView::GetPreferredSize() {
+gfx::Size InfoBarContainerView::GetPreferredSize() const {
   int total_height;
   GetVerticalOverlap(&total_height);
   gfx::Size size(0, total_height);
diff --git a/chrome/browser/ui/views/infobars/infobar_container_view.h b/chrome/browser/ui/views/infobars/infobar_container_view.h
index afd8cfd..cb46329 100644
--- a/chrome/browser/ui/views/infobars/infobar_container_view.h
+++ b/chrome/browser/ui/views/infobars/infobar_container_view.h
@@ -19,7 +19,7 @@
 
  private:
   // AccessiblePaneView:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
diff --git a/chrome/browser/ui/views/infobars/infobar_view.cc b/chrome/browser/ui/views/infobars/infobar_view.cc
index bd70505..cd5da729 100644
--- a/chrome/browser/ui/views/infobars/infobar_view.cc
+++ b/chrome/browser/ui/views/infobars/infobar_view.cc
@@ -304,7 +304,7 @@
   }
 }
 
-int InfoBarView::ContentMinimumWidth() {
+int InfoBarView::ContentMinimumWidth() const {
   return 0;
 }
 
@@ -403,7 +403,7 @@
   state->keyboard_shortcut = base::ASCIIToUTF16("Alt+Shift+A");
 }
 
-gfx::Size InfoBarView::GetPreferredSize() {
+gfx::Size InfoBarView::GetPreferredSize() const {
   return gfx::Size(
       kEdgeItemPadding + (icon_ ? (icon_->width() + kIconToLabelSpacing) : 0) +
           ContentMinimumWidth() + kBeforeCloseButtonSpacing +
diff --git a/chrome/browser/ui/views/infobars/infobar_view.h b/chrome/browser/ui/views/infobars/infobar_view.h
index 56d8bd7c..0018e1ef 100644
--- a/chrome/browser/ui/views/infobars/infobar_view.h
+++ b/chrome/browser/ui/views/infobars/infobar_view.h
@@ -87,7 +87,7 @@
   // Returns the minimum width the content (that is, everything between the icon
   // and the close button) can be shrunk to.  This is used to prevent the close
   // button from overlapping views that cannot be shrunk any further.
-  virtual int ContentMinimumWidth();
+  virtual int ContentMinimumWidth() const;
 
   // These return x coordinates delimiting the usable area for subclasses to lay
   // out their controls.
@@ -121,7 +121,7 @@
 
   // views::View:
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void PaintChildren(gfx::Canvas* canvas,
                              const views::CullSet& cull_set) OVERRIDE;
 
diff --git a/chrome/browser/ui/views/infobars/translate_message_infobar.cc b/chrome/browser/ui/views/infobars/translate_message_infobar.cc
index e592d3a..f4d02f1 100644
--- a/chrome/browser/ui/views/infobars/translate_message_infobar.cc
+++ b/chrome/browser/ui/views/infobars/translate_message_infobar.cc
@@ -61,7 +61,7 @@
     TranslateInfoBarBase::ButtonPressed(sender, event);
 }
 
-int TranslateMessageInfoBar::ContentMinimumWidth() {
+int TranslateMessageInfoBar::ContentMinimumWidth() const {
   return label_->GetMinimumSize().width() + NonLabelWidth();
 }
 
diff --git a/chrome/browser/ui/views/infobars/translate_message_infobar.h b/chrome/browser/ui/views/infobars/translate_message_infobar.h
index 69809f3..ffc36bc 100644
--- a/chrome/browser/ui/views/infobars/translate_message_infobar.h
+++ b/chrome/browser/ui/views/infobars/translate_message_infobar.h
@@ -21,7 +21,7 @@
       const ViewHierarchyChangedDetails& details) OVERRIDE;
   virtual void ButtonPressed(views::Button* sender,
                              const ui::Event& event) OVERRIDE;
-  virtual int ContentMinimumWidth() OVERRIDE;
+  virtual int ContentMinimumWidth() const OVERRIDE;
 
   // Returns the width of all content other than the label.  Layout() uses this
   // to determine how much space the label can take.
diff --git a/chrome/browser/ui/views/location_bar/content_setting_image_view.cc b/chrome/browser/ui/views/location_bar/content_setting_image_view.cc
index 1f34452..3b6dde9 100644
--- a/chrome/browser/ui/views/location_bar/content_setting_image_view.cc
+++ b/chrome/browser/ui/views/location_bar/content_setting_image_view.cc
@@ -153,7 +153,7 @@
   AnimationEnded(animation);
 }
 
-gfx::Size ContentSettingImageView::GetPreferredSize() {
+gfx::Size ContentSettingImageView::GetPreferredSize() const {
   // Height will be ignored by the LocationBarView.
   gfx::Size size(icon_->GetPreferredSize());
   if (background_showing()) {
diff --git a/chrome/browser/ui/views/location_bar/content_setting_image_view.h b/chrome/browser/ui/views/location_bar/content_setting_image_view.h
index 741205b..4bd97ee 100644
--- a/chrome/browser/ui/views/location_bar/content_setting_image_view.h
+++ b/chrome/browser/ui/views/location_bar/content_setting_image_view.h
@@ -68,7 +68,7 @@
   virtual void AnimationCanceled(const gfx::Animation* animation) OVERRIDE;
 
   // views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE;
diff --git a/chrome/browser/ui/views/location_bar/ev_bubble_view.cc b/chrome/browser/ui/views/location_bar/ev_bubble_view.cc
index a1f3a55..c30bc818 100644
--- a/chrome/browser/ui/views/location_bar/ev_bubble_view.cc
+++ b/chrome/browser/ui/views/location_bar/ev_bubble_view.cc
@@ -25,7 +25,7 @@
 EVBubbleView::~EVBubbleView() {
 }
 
-gfx::Size EVBubbleView::GetMinimumSize() {
+gfx::Size EVBubbleView::GetMinimumSize() const {
   return GetMinimumSizeForPreferredSize(GetPreferredSize());
 }
 
diff --git a/chrome/browser/ui/views/location_bar/ev_bubble_view.h b/chrome/browser/ui/views/location_bar/ev_bubble_view.h
index dbf5bd3..7fded1f 100644
--- a/chrome/browser/ui/views/location_bar/ev_bubble_view.h
+++ b/chrome/browser/ui/views/location_bar/ev_bubble_view.h
@@ -20,7 +20,7 @@
   virtual ~EVBubbleView();
 
   // IconLabelBubbleView:
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE;
diff --git a/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc b/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc
index b1077ad0..95dcb153 100644
--- a/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc
+++ b/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc
@@ -79,7 +79,7 @@
   image_->SetImage(image_skia);
 }
 
-gfx::Size IconLabelBubbleView::GetPreferredSize() {
+gfx::Size IconLabelBubbleView::GetPreferredSize() const {
   // Height will be ignored by the LocationBarView.
   return GetSizeForLabelWidth(label_->GetPreferredSize().width());
 }
diff --git a/chrome/browser/ui/views/location_bar/icon_label_bubble_view.h b/chrome/browser/ui/views/location_bar/icon_label_bubble_view.h
index 8be26b1..ccf3f50 100644
--- a/chrome/browser/ui/views/location_bar/icon_label_bubble_view.h
+++ b/chrome/browser/ui/views/location_bar/icon_label_bubble_view.h
@@ -48,7 +48,7 @@
 
  protected:
   // views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE;
diff --git a/chrome/browser/ui/views/location_bar/keyword_hint_view.cc b/chrome/browser/ui/views/location_bar/keyword_hint_view.cc
index a95b7df..e3f2061 100644
--- a/chrome/browser/ui/views/location_bar/keyword_hint_view.cc
+++ b/chrome/browser/ui/views/location_bar/keyword_hint_view.cc
@@ -65,7 +65,7 @@
   trailing_label_->SetText(keyword_hint.substr(content_param_offsets.front()));
 }
 
-gfx::Size KeywordHintView::GetPreferredSize() {
+gfx::Size KeywordHintView::GetPreferredSize() const {
   // Height will be ignored by the LocationBarView.
   return gfx::Size(leading_label_->GetPreferredSize().width() +
                        tab_image_->GetPreferredSize().width() +
@@ -73,7 +73,7 @@
                    0);
 }
 
-gfx::Size KeywordHintView::GetMinimumSize() {
+gfx::Size KeywordHintView::GetMinimumSize() const {
   // Height will be ignored by the LocationBarView.
   return tab_image_->GetPreferredSize();
 }
diff --git a/chrome/browser/ui/views/location_bar/keyword_hint_view.h b/chrome/browser/ui/views/location_bar/keyword_hint_view.h
index 7ee55cd..c3ace05d 100644
--- a/chrome/browser/ui/views/location_bar/keyword_hint_view.h
+++ b/chrome/browser/ui/views/location_bar/keyword_hint_view.h
@@ -41,9 +41,9 @@
   void SetKeyword(const base::string16& keyword);
   base::string16 keyword() const { return keyword_; }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   // The minimum size is just big enough to show the tab.
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
  private:
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc
index edefc90..4ecf75e 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_view.cc
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -700,7 +700,7 @@
   }
 }
 
-gfx::Size LocationBarView::GetPreferredSize() {
+gfx::Size LocationBarView::GetPreferredSize() const {
   // Compute minimum height.
   gfx::Size min_size(border_painter_->GetMinimumSize());
   if (!IsInitialized())
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.h b/chrome/browser/ui/views/location_bar/location_bar_view.h
index ce4b97f..ccf36a95 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_view.h
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.h
@@ -233,6 +233,7 @@
   gfx::Point GetLocationBarAnchorPoint() const;
 
   OmniboxViewViews* omnibox_view() { return omnibox_view_; }
+  const OmniboxViewViews* omnibox_view() const { return omnibox_view_; }
 
   views::View* generated_credit_card_view();
 
@@ -258,7 +259,7 @@
   // views::View:
   virtual bool HasFocus() const OVERRIDE;
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
   // OmniboxEditController:
diff --git a/chrome/browser/ui/views/location_bar/origin_chip_view.cc b/chrome/browser/ui/views/location_bar/origin_chip_view.cc
index 772d0c0..b73eca9 100644
--- a/chrome/browser/ui/views/location_bar/origin_chip_view.cc
+++ b/chrome/browser/ui/views/location_bar/origin_chip_view.cc
@@ -272,7 +272,7 @@
   fade_in_animation_->Show();
 }
 
-gfx::Size OriginChipView::GetPreferredSize() {
+gfx::Size OriginChipView::GetPreferredSize() const {
   gfx::Size label_size = host_label_->GetPreferredSize();
   gfx::Size icon_size = location_icon_view_->GetPreferredSize();
   int icon_spacing = showing_16x16_icon_ ?
diff --git a/chrome/browser/ui/views/location_bar/origin_chip_view.h b/chrome/browser/ui/views/location_bar/origin_chip_view.h
index 65f3d67..a6cfa14 100644
--- a/chrome/browser/ui/views/location_bar/origin_chip_view.h
+++ b/chrome/browser/ui/views/location_bar/origin_chip_view.h
@@ -65,7 +65,7 @@
   int host_label_x() const { return host_label_->x(); }
 
   // views::LabelButton:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   // Sets an image grid to represent the current security state.
diff --git a/chrome/browser/ui/views/location_bar/page_action_with_badge_view.cc b/chrome/browser/ui/views/location_bar/page_action_with_badge_view.cc
index bc16433..b22685ee 100644
--- a/chrome/browser/ui/views/location_bar/page_action_with_badge_view.cc
+++ b/chrome/browser/ui/views/location_bar/page_action_with_badge_view.cc
@@ -21,7 +21,7 @@
   state->role = ui::AX_ROLE_GROUP;
 }
 
-gfx::Size PageActionWithBadgeView::GetPreferredSize() {
+gfx::Size PageActionWithBadgeView::GetPreferredSize() const {
   return gfx::Size(ExtensionAction::kPageActionIconMaxSize,
                    ExtensionAction::kPageActionIconMaxSize);
 }
diff --git a/chrome/browser/ui/views/location_bar/page_action_with_badge_view.h b/chrome/browser/ui/views/location_bar/page_action_with_badge_view.h
index 15d789f..414c5f9 100644
--- a/chrome/browser/ui/views/location_bar/page_action_with_badge_view.h
+++ b/chrome/browser/ui/views/location_bar/page_action_with_badge_view.h
@@ -25,7 +25,7 @@
 
   // views::View:
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   void UpdateVisibility(content::WebContents* contents, const GURL& url);
 
diff --git a/chrome/browser/ui/views/location_bar/selected_keyword_view.cc b/chrome/browser/ui/views/location_bar/selected_keyword_view.cc
index b8a2ab99..baa05793 100644
--- a/chrome/browser/ui/views/location_bar/selected_keyword_view.cc
+++ b/chrome/browser/ui/views/location_bar/selected_keyword_view.cc
@@ -39,12 +39,12 @@
 SelectedKeywordView::~SelectedKeywordView() {
 }
 
-gfx::Size SelectedKeywordView::GetPreferredSize() {
+gfx::Size SelectedKeywordView::GetPreferredSize() const {
   // Height will be ignored by the LocationBarView.
   return GetSizeForLabelWidth(full_label_.GetPreferredSize().width());
 }
 
-gfx::Size SelectedKeywordView::GetMinimumSize() {
+gfx::Size SelectedKeywordView::GetMinimumSize() const {
   // Height will be ignored by the LocationBarView.
   return GetSizeForLabelWidth(partial_label_.GetMinimumSize().width());
 }
diff --git a/chrome/browser/ui/views/location_bar/selected_keyword_view.h b/chrome/browser/ui/views/location_bar/selected_keyword_view.h
index bb705a0..cdcb952 100644
--- a/chrome/browser/ui/views/location_bar/selected_keyword_view.h
+++ b/chrome/browser/ui/views/location_bar/selected_keyword_view.h
@@ -26,8 +26,8 @@
                       Profile* profile);
   virtual ~SelectedKeywordView();
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
   // The current keyword, or an empty string if no keyword is displayed.
diff --git a/chrome/browser/ui/views/menu_model_adapter_test.cc b/chrome/browser/ui/views/menu_model_adapter_test.cc
index b0d0b1e..6373592 100644
--- a/chrome/browser/ui/views/menu_model_adapter_test.cc
+++ b/chrome/browser/ui/views/menu_model_adapter_test.cc
@@ -221,7 +221,7 @@
     return button_;
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return button_->GetPreferredSize();
   }
 
diff --git a/chrome/browser/ui/views/menu_test_base.cc b/chrome/browser/ui/views/menu_test_base.cc
index 4937689..4e358dc 100644
--- a/chrome/browser/ui/views/menu_test_base.cc
+++ b/chrome/browser/ui/views/menu_test_base.cc
@@ -61,7 +61,7 @@
   Click(button_, CreateEventTask(this, &MenuTestBase::DoTestWithMenuOpen));
 }
 
-gfx::Size MenuTestBase::GetPreferredSize() {
+gfx::Size MenuTestBase::GetPreferredSize() const {
   return button_->GetPreferredSize();
 }
 
diff --git a/chrome/browser/ui/views/menu_test_base.h b/chrome/browser/ui/views/menu_test_base.h
index ccb8a23..d919662 100644
--- a/chrome/browser/ui/views/menu_test_base.h
+++ b/chrome/browser/ui/views/menu_test_base.h
@@ -65,7 +65,7 @@
   virtual void TearDown() OVERRIDE;
   virtual views::View* CreateContentsView() OVERRIDE;
   virtual void DoTestOnMessageLoop() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // views::MenuButtonListener implementation
   virtual void OnMenuButtonClicked(views::View* source,
diff --git a/chrome/browser/ui/views/message_center/message_center_widget_delegate.cc b/chrome/browser/ui/views/message_center/message_center_widget_delegate.cc
index 2225dc9..623ce681 100644
--- a/chrome/browser/ui/views/message_center/message_center_widget_delegate.cc
+++ b/chrome/browser/ui/views/message_center/message_center_widget_delegate.cc
@@ -112,7 +112,7 @@
   views::View::PreferredSizeChanged();
 }
 
-gfx::Size MessageCenterWidgetDelegate::GetPreferredSize() {
+gfx::Size MessageCenterWidgetDelegate::GetPreferredSize() const {
   int preferred_width = kNotificationWidth + 2 * kMarginBetweenItems;
   return gfx::Size(preferred_width, GetHeightForWidth(preferred_width));
 }
@@ -122,7 +122,7 @@
   return size;
 }
 
-int MessageCenterWidgetDelegate::GetHeightForWidth(int width) {
+int MessageCenterWidgetDelegate::GetHeightForWidth(int width) const {
   int height = MessageCenterView::GetHeightForWidth(width);
   return (pos_info_.max_height != 0) ?
     std::min(height, pos_info_.max_height - border_insets_.height()) : height;
diff --git a/chrome/browser/ui/views/message_center/message_center_widget_delegate.h b/chrome/browser/ui/views/message_center/message_center_widget_delegate.h
index f0d76de5..9a21d9e7d 100644
--- a/chrome/browser/ui/views/message_center/message_center_widget_delegate.h
+++ b/chrome/browser/ui/views/message_center/message_center_widget_delegate.h
@@ -72,9 +72,9 @@
 
   // View overrides:
   virtual void PreferredSizeChanged() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual gfx::Size GetMaximumSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
   virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE;
 
  private:
diff --git a/chrome/browser/ui/views/omnibox/omnibox_result_view.cc b/chrome/browser/ui/views/omnibox/omnibox_result_view.cc
index 3595aa4..15f6cf6f 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_result_view.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_result_view.cc
@@ -202,7 +202,7 @@
   SchedulePaint();
 }
 
-gfx::Size OmniboxResultView::GetPreferredSize() {
+gfx::Size OmniboxResultView::GetPreferredSize() const {
   return gfx::Size(0, std::max(
       default_icon_size_ + (kMinimumIconVerticalPadding * 2),
       GetTextHeight() + (minimum_text_vertical_padding_ * 2)));
diff --git a/chrome/browser/ui/views/omnibox/omnibox_result_view.h b/chrome/browser/ui/views/omnibox/omnibox_result_view.h
index b7d3135..8504b2b 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_result_view.h
+++ b/chrome/browser/ui/views/omnibox/omnibox_result_view.h
@@ -64,7 +64,7 @@
   void Invalidate();
 
   // views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   ResultViewState GetState() const;
 
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
index 4c9a3da..6152130 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
@@ -320,7 +320,7 @@
   return IsIMEComposing();
 }
 
-gfx::Size OmniboxViewViews::GetMinimumSize() {
+gfx::Size OmniboxViewViews::GetMinimumSize() const {
   const int kMinCharacters = 10;
   return gfx::Size(
       GetFontList().GetExpectedTextWidth(kMinCharacters) + GetInsets().width(),
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.h b/chrome/browser/ui/views/omnibox/omnibox_view_views.h
index 88e270f..4eb9d96 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views.h
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.h
@@ -88,7 +88,7 @@
   virtual bool IsImeComposing() const OVERRIDE;
 
   // views::Textfield:
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual void OnNativeThemeChanged(const ui::NativeTheme* theme) OVERRIDE;
   virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE;
 
diff --git a/chrome/browser/ui/views/panels/panel_frame_view.cc b/chrome/browser/ui/views/panels/panel_frame_view.cc
index a221649..4b88b2b 100644
--- a/chrome/browser/ui/views/panels/panel_frame_view.cc
+++ b/chrome/browser/ui/views/panels/panel_frame_view.cc
@@ -489,7 +489,7 @@
   title_label_->SetText(panel_view_->panel()->GetWindowTitle());
 }
 
-gfx::Size PanelFrameView::GetPreferredSize() {
+gfx::Size PanelFrameView::GetPreferredSize() const {
   gfx::Size pref_size =
       panel_view_->window()->client_view()->GetPreferredSize();
   gfx::Rect bounds(0, 0, pref_size.width(), pref_size.height());
@@ -501,7 +501,7 @@
   return kViewClassName;
 }
 
-gfx::Size PanelFrameView::GetMinimumSize() {
+gfx::Size PanelFrameView::GetMinimumSize() const {
   return panel_view_->GetMinimumSize();
 }
 
diff --git a/chrome/browser/ui/views/panels/panel_frame_view.h b/chrome/browser/ui/views/panels/panel_frame_view.h
index e8a90ad..d2ad42b 100644
--- a/chrome/browser/ui/views/panels/panel_frame_view.h
+++ b/chrome/browser/ui/views/panels/panel_frame_view.h
@@ -67,9 +67,9 @@
   virtual void UpdateWindowTitle() OVERRIDE;
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual gfx::Size GetMaximumSize() OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
diff --git a/chrome/browser/ui/views/panels/panel_view.cc b/chrome/browser/ui/views/panels/panel_view.cc
index 4224926..a52c2767e 100644
--- a/chrome/browser/ui/views/panels/panel_view.cc
+++ b/chrome/browser/ui/views/panels/panel_view.cc
@@ -902,7 +902,7 @@
     web_view_->SetBounds(0, 0, width(), height());
 }
 
-gfx::Size PanelView::GetMinimumSize() {
+gfx::Size PanelView::GetMinimumSize() const {
   // If the panel is minimized, it can be rendered to very small size, like
   // 4-pixel lines when it is docked. Otherwise, its size should not be less
   // than its minimum size.
diff --git a/chrome/browser/ui/views/panels/panel_view.h b/chrome/browser/ui/views/panels/panel_view.h
index 19dadb7..eaefa689 100644
--- a/chrome/browser/ui/views/panels/panel_view.h
+++ b/chrome/browser/ui/views/panels/panel_view.h
@@ -83,7 +83,7 @@
   virtual NativePanelTesting* CreateNativePanelTesting() OVERRIDE;
 
   // Overridden from views::View:
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual gfx::Size GetMaximumSize() OVERRIDE;
 
   // Return true if the mouse event is handled.
diff --git a/chrome/browser/ui/views/password_generation_bubble_view.cc b/chrome/browser/ui/views/password_generation_bubble_view.cc
index d86d3df..deb2dac 100644
--- a/chrome/browser/ui/views/password_generation_bubble_view.cc
+++ b/chrome/browser/ui/views/password_generation_bubble_view.cc
@@ -54,7 +54,7 @@
   virtual ~TextfieldWrapper();
 
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   gfx::Size GetImageSize() const;
@@ -96,7 +96,7 @@
   image_button_->SetSize(GetImageSize());
 }
 
-gfx::Size TextfieldWrapper::GetPreferredSize() {
+gfx::Size TextfieldWrapper::GetPreferredSize() const {
   int width = (textfield_->GetPreferredSize().width() +
                GetImageSize().width() +
                kTextfieldHorizontalPadding * 3);
@@ -196,7 +196,7 @@
       textfield_wrapper_->GetPreferredSize().height() + kWrapperBorderSize * 2);
 }
 
-gfx::Size PasswordGenerationBubbleView::GetPreferredSize() {
+gfx::Size PasswordGenerationBubbleView::GetPreferredSize() const {
   int width = (textfield_wrapper_->GetPreferredSize().width() +
                kButtonHorizontalSpacing +
                kButtonWidth - 1);
@@ -206,7 +206,7 @@
   return gfx::Size(width, height);
 }
 
-gfx::Rect PasswordGenerationBubbleView::GetAnchorRect() {
+gfx::Rect PasswordGenerationBubbleView::GetAnchorRect() const {
   return anchor_rect_;
 }
 
diff --git a/chrome/browser/ui/views/password_generation_bubble_view.h b/chrome/browser/ui/views/password_generation_bubble_view.h
index 32e908f..8e1deeff 100644
--- a/chrome/browser/ui/views/password_generation_bubble_view.h
+++ b/chrome/browser/ui/views/password_generation_bubble_view.h
@@ -51,13 +51,13 @@
   virtual ~PasswordGenerationBubbleView();
 
   // views::View
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
  private:
   // views::BubbleDelegateView
   virtual void Init() OVERRIDE;
-  virtual gfx::Rect GetAnchorRect() OVERRIDE;
+  virtual gfx::Rect GetAnchorRect() const OVERRIDE;
   virtual void WindowClosing() OVERRIDE;
 
   // views::ButtonListener
diff --git a/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.cc b/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.cc
index 87cb0568..3a133d5a 100644
--- a/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.cc
+++ b/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.cc
@@ -220,7 +220,7 @@
                   AvatarMenuBubbleView* parent,
                   AvatarMenu* menu);
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE;
@@ -297,7 +297,7 @@
   OnHighlightStateChanged();
 }
 
-gfx::Size ProfileItemView::GetPreferredSize() {
+gfx::Size ProfileItemView::GetPreferredSize() const {
   int text_width = std::max(name_label_->GetPreferredSize().width(),
                             sync_state_label_->GetPreferredSize().width());
   text_width = std::max(edit_link_->GetPreferredSize().width(), text_width);
@@ -537,7 +537,7 @@
 AvatarMenuBubbleView::~AvatarMenuBubbleView() {
 }
 
-gfx::Size AvatarMenuBubbleView::GetPreferredSize() {
+gfx::Size AvatarMenuBubbleView::GetPreferredSize() const {
   const int kBubbleViewMinWidth = 175;
   gfx::Size preferred_size(kBubbleViewMinWidth, 0);
   for (size_t i = 0; i < item_views_.size(); ++i) {
@@ -700,7 +700,7 @@
   }
 }
 
-gfx::Rect AvatarMenuBubbleView::GetAnchorRect() {
+gfx::Rect AvatarMenuBubbleView::GetAnchorRect() const {
   return anchor_rect_;
 }
 
diff --git a/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.h b/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.h
index 313c2c6..3e8fd1e 100644
--- a/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.h
+++ b/chrome/browser/ui/views/profiles/avatar_menu_bubble_view.h
@@ -60,7 +60,7 @@
   virtual ~AvatarMenuBubbleView();
 
   // views::View implementation.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE;
 
@@ -72,7 +72,7 @@
   virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE;
 
   // BubbleDelegate implementation.
-  virtual gfx::Rect GetAnchorRect() OVERRIDE;
+  virtual gfx::Rect GetAnchorRect() const OVERRIDE;
   virtual void Init() OVERRIDE;
   virtual void WindowClosing() OVERRIDE;
 
diff --git a/chrome/browser/ui/views/profiles/profile_chooser_view.cc b/chrome/browser/ui/views/profiles/profile_chooser_view.cc
index 5fedd953..e6cd72c 100644
--- a/chrome/browser/ui/views/profiles/profile_chooser_view.cc
+++ b/chrome/browser/ui/views/profiles/profile_chooser_view.cc
@@ -365,7 +365,7 @@
     title_label_->SetBoundsRect(GetContentsBounds());
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE{
+  virtual gfx::Size GetPreferredSize() const OVERRIDE{
     int height = std::max(title_label_->GetPreferredSize().height(),
         back_button_->GetPreferredSize().height());
     return gfx::Size(width(), height);
diff --git a/chrome/browser/ui/views/profiles/user_manager_view.cc b/chrome/browser/ui/views/profiles/user_manager_view.cc
index ed0bc6ed..e52f9ce 100644
--- a/chrome/browser/ui/views/profiles/user_manager_view.cc
+++ b/chrome/browser/ui/views/profiles/user_manager_view.cc
@@ -127,7 +127,7 @@
   web_view_->RequestFocus();
 }
 
-gfx::Size UserManagerView::GetPreferredSize() {
+gfx::Size UserManagerView::GetPreferredSize() const {
   return gfx::Size(kWindowWidth, kWindowHeight);
 }
 
diff --git a/chrome/browser/ui/views/profiles/user_manager_view.h b/chrome/browser/ui/views/profiles/user_manager_view.h
index da34390..093f1ad 100644
--- a/chrome/browser/ui/views/profiles/user_manager_view.h
+++ b/chrome/browser/ui/views/profiles/user_manager_view.h
@@ -48,7 +48,7 @@
   void Init(Profile* guest_profile, const GURL& url);
 
   // views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // views::DialogDelegateView:
   virtual bool CanResize() const OVERRIDE;
diff --git a/chrome/browser/ui/views/screen_capture_notification_ui_views.cc b/chrome/browser/ui/views/screen_capture_notification_ui_views.cc
index 4d18a83..7df47f4 100644
--- a/chrome/browser/ui/views/screen_capture_notification_ui_views.cc
+++ b/chrome/browser/ui/views/screen_capture_notification_ui_views.cc
@@ -86,7 +86,7 @@
       OVERRIDE;
 
   // views::View overrides.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
   // views::WidgetDelegateView overrides.
@@ -216,7 +216,7 @@
 #endif
 }
 
-gfx::Size ScreenCaptureNotificationUIViews::GetPreferredSize() {
+gfx::Size ScreenCaptureNotificationUIViews::GetPreferredSize() const {
   gfx::Size grip_size = gripper_->GetPreferredSize();
   gfx::Size label_size = label_->GetPreferredSize();
   gfx::Size stop_button_size = stop_button_->GetPreferredSize();
diff --git a/chrome/browser/ui/views/tab_icon_view.cc b/chrome/browser/ui/views/tab_icon_view.cc
index 22b61e43..76864f3 100644
--- a/chrome/browser/ui/views/tab_icon_view.cc
+++ b/chrome/browser/ui/views/tab_icon_view.cc
@@ -155,6 +155,6 @@
     PaintFavicon(canvas, *g_default_favicon);
 }
 
-gfx::Size TabIconView::GetPreferredSize() {
+gfx::Size TabIconView::GetPreferredSize() const {
   return gfx::Size(gfx::kFaviconSize, gfx::kFaviconSize);
 }
diff --git a/chrome/browser/ui/views/tab_icon_view.h b/chrome/browser/ui/views/tab_icon_view.h
index ac23528..a4304d6 100644
--- a/chrome/browser/ui/views/tab_icon_view.h
+++ b/chrome/browser/ui/views/tab_icon_view.h
@@ -35,7 +35,7 @@
 
   // Overridden from View
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   void PaintThrobber(gfx::Canvas* canvas);
diff --git a/chrome/browser/ui/views/tabs/tab_strip.cc b/chrome/browser/ui/views/tabs/tab_strip.cc
index 6d04084..5375cdf 100644
--- a/chrome/browser/ui/views/tabs/tab_strip.cc
+++ b/chrome/browser/ui/views/tabs/tab_strip.cc
@@ -1250,7 +1250,7 @@
   return kViewClassName;
 }
 
-gfx::Size TabStrip::GetPreferredSize() {
+gfx::Size TabStrip::GetPreferredSize() const {
   // For stacked tabs the minimum size is calculated as the size needed to
   // handle showing any number of tabs. Otherwise report the minimum width as
   // the size required for a single selected tab plus the new tab button. Don't
diff --git a/chrome/browser/ui/views/tabs/tab_strip.h b/chrome/browser/ui/views/tabs/tab_strip.h
index b0f47f1..82c9c48 100644
--- a/chrome/browser/ui/views/tabs/tab_strip.h
+++ b/chrome/browser/ui/views/tabs/tab_strip.h
@@ -217,7 +217,7 @@
   virtual void PaintChildren(gfx::Canvas* canvas,
                              const views::CullSet& cull_set) OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   // NOTE: the drag and drop methods are invoked from FrameView. This is done
   // to allow for a drop region that extends outside the bounds of the TabStrip.
   virtual void OnDragEntered(const ui::DropTargetEvent& event) OVERRIDE;
diff --git a/chrome/browser/ui/views/task_manager_view.cc b/chrome/browser/ui/views/task_manager_view.cc
index bddb7d4..ed937f31 100644
--- a/chrome/browser/ui/views/task_manager_view.cc
+++ b/chrome/browser/ui/views/task_manager_view.cc
@@ -161,7 +161,7 @@
 
   // views::View:
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE;
   virtual void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) OVERRIDE;
@@ -447,7 +447,7 @@
   tab_table_parent_->SetBoundsRect(rect);
 }
 
-gfx::Size TaskManagerView::GetPreferredSize() {
+gfx::Size TaskManagerView::GetPreferredSize() const {
   return gfx::Size(460, 270);
 }
 
diff --git a/chrome/browser/ui/views/toolbar/browser_action_view.cc b/chrome/browser/ui/views/toolbar/browser_action_view.cc
index 7cb342cd..65079889 100644
--- a/chrome/browser/ui/views/toolbar/browser_action_view.cc
+++ b/chrome/browser/ui/views/toolbar/browser_action_view.cc
@@ -76,7 +76,7 @@
   state->role = ui::AX_ROLE_GROUP;
 }
 
-gfx::Size BrowserActionView::GetPreferredSize() {
+gfx::Size BrowserActionView::GetPreferredSize() const {
   return gfx::Size(BrowserActionsContainer::IconWidth(false),
                    BrowserActionsContainer::IconHeight());
 }
diff --git a/chrome/browser/ui/views/toolbar/browser_action_view.h b/chrome/browser/ui/views/toolbar/browser_action_view.h
index 1ac36834..983f791 100644
--- a/chrome/browser/ui/views/toolbar/browser_action_view.h
+++ b/chrome/browser/ui/views/toolbar/browser_action_view.h
@@ -74,7 +74,7 @@
   // Overridden from views::View:
   virtual void Layout() OVERRIDE;
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  protected:
   // Overridden from views::View to paint the badge on top of children.
diff --git a/chrome/browser/ui/views/toolbar/browser_actions_container.cc b/chrome/browser/ui/views/toolbar/browser_actions_container.cc
index 748d84b..12e431f 100644
--- a/chrome/browser/ui/views/toolbar/browser_actions_container.cc
+++ b/chrome/browser/ui/views/toolbar/browser_actions_container.cc
@@ -207,7 +207,7 @@
   observers_.RemoveObserver(observer);
 }
 
-gfx::Size BrowserActionsContainer::GetPreferredSize() {
+gfx::Size BrowserActionsContainer::GetPreferredSize() const {
   // We calculate the size of the view by taking the current width and
   // subtracting resize_amount_ (the latter represents how far the user is
   // resizing the view or, if animating the snapping, how far to animate it).
@@ -221,7 +221,7 @@
   return gfx::Size(preferred_width, 0);
 }
 
-gfx::Size BrowserActionsContainer::GetMinimumSize() {
+gfx::Size BrowserActionsContainer::GetMinimumSize() const {
   int min_width = std::min(MinimumNonemptyWidth(), IconCountToWidth(-1, false));
   // Height will be ignored by the ToolbarView.
   return gfx::Size(min_width, 0);
diff --git a/chrome/browser/ui/views/toolbar/browser_actions_container.h b/chrome/browser/ui/views/toolbar/browser_actions_container.h
index e5eae55..e6d3525 100644
--- a/chrome/browser/ui/views/toolbar/browser_actions_container.h
+++ b/chrome/browser/ui/views/toolbar/browser_actions_container.h
@@ -172,8 +172,8 @@
   void RemoveObserver(BrowserActionsContainerObserver* observer);
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual bool GetDropFormats(int* formats,
       std::set<ui::OSExchangeData::CustomFormat>* custom_formats) OVERRIDE;
diff --git a/chrome/browser/ui/views/toolbar/toolbar_button.cc b/chrome/browser/ui/views/toolbar/toolbar_button.cc
index dad98d1..7a285d39e 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_button.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_button.cc
@@ -46,7 +46,7 @@
   return menu_showing_;
 }
 
-gfx::Size ToolbarButton::GetPreferredSize() {
+gfx::Size ToolbarButton::GetPreferredSize() const {
   gfx::Size size(image()->GetPreferredSize());
   gfx::Size label_size = label()->GetPreferredSize();
   if (label_size.width() > 0)
diff --git a/chrome/browser/ui/views/toolbar/toolbar_button.h b/chrome/browser/ui/views/toolbar/toolbar_button.h
index acbbc88c..1ecb0831 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_button.h
+++ b/chrome/browser/ui/views/toolbar/toolbar_button.h
@@ -36,7 +36,7 @@
   bool IsMenuShowing() const;
 
   // views::LabelButton:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
   virtual bool OnMouseDragged(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE;
diff --git a/chrome/browser/ui/views/toolbar/toolbar_button_test.cc b/chrome/browser/ui/views/toolbar/toolbar_button_test.cc
index 32e3c0a..2fe35e06 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_button_test.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_button_test.cc
@@ -38,7 +38,7 @@
     return button_;
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return button_->GetPreferredSize();
   }
 
diff --git a/chrome/browser/ui/views/toolbar/toolbar_origin_chip_view.cc b/chrome/browser/ui/views/toolbar/toolbar_origin_chip_view.cc
index 4c625381..f588543b 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_origin_chip_view.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_origin_chip_view.cc
@@ -263,7 +263,7 @@
   // arrows are pointing to the right spot. Only needed for some edge cases.
 }
 
-gfx::Size ToolbarOriginChipView::GetPreferredSize() {
+gfx::Size ToolbarOriginChipView::GetPreferredSize() const {
   gfx::Size label_size = host_label_->GetPreferredSize();
   gfx::Size icon_size = location_icon_view_->GetPreferredSize();
   int icon_spacing = showing_16x16_icon_ ?
diff --git a/chrome/browser/ui/views/toolbar/toolbar_origin_chip_view.h b/chrome/browser/ui/views/toolbar/toolbar_origin_chip_view.h
index ee08126..b9903e8 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_origin_chip_view.h
+++ b/chrome/browser/ui/views/toolbar/toolbar_origin_chip_view.h
@@ -64,7 +64,7 @@
   int ElideDomainTarget(int target_max_width);
 
   // ToolbarButton:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc
index 8566c84..cbaea00 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_view.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
@@ -538,7 +538,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // ToolbarView, views::View overrides:
 
-gfx::Size ToolbarView::GetPreferredSize() {
+gfx::Size ToolbarView::GetPreferredSize() const {
   gfx::Size size(location_bar_->GetPreferredSize());
   if (is_display_mode_normal()) {
     int content_width = kLeftEdgeSpacing + back_->GetPreferredSize().width() +
@@ -554,7 +554,7 @@
   return SizeForContentSize(size);
 }
 
-gfx::Size ToolbarView::GetMinimumSize() {
+gfx::Size ToolbarView::GetMinimumSize() const {
   gfx::Size size(location_bar_->GetMinimumSize());
   if (is_display_mode_normal()) {
     int content_width = kLeftEdgeSpacing + back_->GetMinimumSize().width() +
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.h b/chrome/browser/ui/views/toolbar/toolbar_view.h
index 183d482..743a91b 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_view.h
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.h
@@ -151,8 +151,8 @@
       int command_id, ui::Accelerator* accelerator) OVERRIDE;
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual bool HitTestRect(const gfx::Rect& rect) const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
diff --git a/chrome/browser/ui/views/toolbar/wrench_menu.cc b/chrome/browser/ui/views/toolbar/wrench_menu.cc
index b0f8c73..0ac912d5 100644
--- a/chrome/browser/ui/views/toolbar/wrench_menu.cc
+++ b/chrome/browser/ui/views/toolbar/wrench_menu.cc
@@ -98,7 +98,7 @@
       : ImageButton(listener) { }
 
   // Overridden from ImageButton.
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     gfx::Size pref = ImageButton::GetPreferredSize();
     if (border()) {
       gfx::Insets insets = border()->GetInsets();
@@ -435,6 +435,8 @@
   WrenchMenu* menu() { return menu_; }
   MenuModel* menu_model() { return menu_model_; }
 
+  bool use_new_menu() const { return menu_->use_new_menu(); }
+
  private:
   // Hosting WrenchMenu.
   // WARNING: this may be NULL during shutdown.
@@ -457,7 +459,7 @@
   };
 
   // Overridden from MenuItemView.
-  virtual gfx::Size GetChildPreferredSize() OVERRIDE {
+  virtual gfx::Size GetChildPreferredSize() const OVERRIDE {
     gfx::Size size = MenuItemView::GetChildPreferredSize();
     // When there is a height override given, we need to deduct our spacing
     // above and below to get to the correct height to return here for the
@@ -544,7 +546,7 @@
   }
 
   // Overridden from View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     // Returned height doesn't matter as MenuItemView forces everything to the
     // height of the menuitemview.
     return gfx::Size(GetMaxChildViewPreferredWidth() * child_count(), 0);
@@ -565,7 +567,7 @@
 
  private:
   // Returns the max preferred width of all the children.
-  int GetMaxChildViewPreferredWidth() {
+  int GetMaxChildViewPreferredWidth() const {
     int width = 0;
     for (int i = 0; i < child_count(); ++i)
       width = std::max(width, child_at(i)->GetPreferredSize().width());
@@ -687,11 +689,11 @@
   virtual ~ZoomView() {}
 
   // Overridden from View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     // The increment/decrement button are forced to the same width.
     int button_width = std::max(increment_button_->GetPreferredSize().width(),
                                 decrement_button_->GetPreferredSize().width());
-    int zoom_padding = menu()->use_new_menu() ?
+    int zoom_padding = use_new_menu() ?
         kTouchZoomPadding : kZoomPadding;
     int fullscreen_width = fullscreen_button_->GetPreferredSize().width() +
                            zoom_padding;
@@ -720,10 +722,10 @@
     bounds.set_width(button_width);
     increment_button_->SetBoundsRect(bounds);
 
-    x += bounds.width() + (menu()->use_new_menu() ? 0 : kZoomPadding);
+    x += bounds.width() + (use_new_menu() ? 0 : kZoomPadding);
     bounds.set_x(x);
     bounds.set_width(fullscreen_button_->GetPreferredSize().width() +
-                     (menu()->use_new_menu() ? kTouchZoomPadding : 0));
+                     (use_new_menu() ? kTouchZoomPadding : 0));
     fullscreen_button_->SetBoundsRect(bounds);
   }
 
@@ -1148,7 +1150,8 @@
   return entry.first->ActivatedAt(entry.second, mouse_event_flags);
 }
 
-bool WrenchMenu::GetAccelerator(int command_id, ui::Accelerator* accelerator) {
+bool WrenchMenu::GetAccelerator(int command_id,
+                                ui::Accelerator* accelerator) const {
   if (IsBookmarkCommand(command_id))
     return false;
 
@@ -1157,7 +1160,7 @@
     return false;
   }
 
-  CommandIDToEntry::iterator ix = command_id_to_entry_.find(command_id);
+  CommandIDToEntry::const_iterator ix = command_id_to_entry_.find(command_id);
   const Entry& entry = ix->second;
   ui::Accelerator menu_accelerator;
   if (!entry.first->GetAcceleratorAt(entry.second, &menu_accelerator))
diff --git a/chrome/browser/ui/views/toolbar/wrench_menu.h b/chrome/browser/ui/views/toolbar/wrench_menu.h
index e248a315..77d2f51 100644
--- a/chrome/browser/ui/views/toolbar/wrench_menu.h
+++ b/chrome/browser/ui/views/toolbar/wrench_menu.h
@@ -92,7 +92,7 @@
   virtual bool IsCommandEnabled(int command_id) const OVERRIDE;
   virtual void ExecuteCommand(int command_id, int mouse_event_flags) OVERRIDE;
   virtual bool GetAccelerator(int command_id,
-                              ui::Accelerator* accelerator) OVERRIDE;
+                              ui::Accelerator* accelerator) const OVERRIDE;
   virtual void WillShowMenu(views::MenuItemView* menu) OVERRIDE;
   virtual void WillHideMenu(views::MenuItemView* menu) OVERRIDE;
 
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view.cc b/chrome/browser/ui/views/translate/translate_bubble_view.cc
index 2608055..9f1d43c 100644
--- a/chrome/browser/ui/views/translate/translate_bubble_view.cc
+++ b/chrome/browser/ui/views/translate/translate_bubble_view.cc
@@ -243,10 +243,10 @@
   return BubbleDelegateView::AcceleratorPressed(accelerator);
 }
 
-gfx::Size TranslateBubbleView::GetPreferredSize() {
+gfx::Size TranslateBubbleView::GetPreferredSize() const {
   int width = 0;
   for (int i = 0; i < child_count(); i++) {
-    views::View* child = child_at(i);
+    const views::View* child = child_at(i);
     width = std::max(width, child->GetPreferredSize().width());
   }
   int height = GetCurrentView()->GetPreferredSize().height();
@@ -305,7 +305,7 @@
   translate_bubble_view_ = this;
 }
 
-views::View* TranslateBubbleView::GetCurrentView() {
+views::View* TranslateBubbleView::GetCurrentView() const {
   switch (model_->GetViewState()) {
     case TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE:
       return before_translate_view_;
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view.h b/chrome/browser/ui/views/translate/translate_bubble_view.h
index 91b38a37..a3457cc 100644
--- a/chrome/browser/ui/views/translate/translate_bubble_view.h
+++ b/chrome/browser/ui/views/translate/translate_bubble_view.h
@@ -61,7 +61,7 @@
 
   // views::View methods.
   virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // views::CombboxListener methods.
   virtual void OnPerformAction(views::Combobox* combobox) OVERRIDE;
@@ -120,7 +120,7 @@
                       content::WebContents* web_contents);
 
   // Returns the current child view.
-  views::View* GetCurrentView();
+  views::View* GetCurrentView() const;
 
   // Handles the event when the user presses a button.
   void HandleButtonPressed(ButtonID sender_id);
diff --git a/chrome/browser/ui/views/validation_message_bubble_delegate.cc b/chrome/browser/ui/views/validation_message_bubble_delegate.cc
index bee71d58..107a873 100644
--- a/chrome/browser/ui/views/validation_message_bubble_delegate.cc
+++ b/chrome/browser/ui/views/validation_message_bubble_delegate.cc
@@ -89,7 +89,7 @@
   SetAnchorRect(anchor_in_screen);
 }
 
-gfx::Size ValidationMessageBubbleDelegate::GetPreferredSize() {
+gfx::Size ValidationMessageBubbleDelegate::GetPreferredSize() const {
   return gfx::Size(width_, height_);
 }
 
diff --git a/chrome/browser/ui/views/validation_message_bubble_delegate.h b/chrome/browser/ui/views/validation_message_bubble_delegate.h
index 90668446..2711c7f 100644
--- a/chrome/browser/ui/views/validation_message_bubble_delegate.h
+++ b/chrome/browser/ui/views/validation_message_bubble_delegate.h
@@ -33,7 +33,7 @@
   void SetPositionRelativeToAnchor(const gfx::Rect& anchor_in_screen);
 
   // BubbleDelegateView overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void DeleteDelegate() OVERRIDE;
   virtual void WindowClosing() OVERRIDE;
 
diff --git a/chrome/browser/ui/views/website_settings/permission_selector_view.cc b/chrome/browser/ui/views/website_settings/permission_selector_view.cc
index e8d28b5a..883fc38 100644
--- a/chrome/browser/ui/views/website_settings/permission_selector_view.cc
+++ b/chrome/browser/ui/views/website_settings/permission_selector_view.cc
@@ -46,7 +46,7 @@
   virtual ~PermissionMenuButton();
 
   // Overridden from views::MenuButton.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // Overridden from views::TextButton.
   virtual void SetText(const base::string16& text) OVERRIDE;
@@ -85,7 +85,7 @@
 PermissionMenuButton::~PermissionMenuButton() {
 }
 
-gfx::Size PermissionMenuButton::GetPreferredSize() {
+gfx::Size PermissionMenuButton::GetPreferredSize() const {
   gfx::Insets insets = GetInsets();
   // Scale the button to the current text size.
   gfx::Size prefsize(text_size_.width() + insets.width(),
diff --git a/chrome/browser/ui/views/website_settings/website_settings_popup_view.cc b/chrome/browser/ui/views/website_settings/website_settings_popup_view.cc
index b9baf5c..e8a57da9 100644
--- a/chrome/browser/ui/views/website_settings/website_settings_popup_view.cc
+++ b/chrome/browser/ui/views/website_settings/website_settings_popup_view.cc
@@ -400,7 +400,7 @@
   SizeToContents();
 }
 
-gfx::Size WebsiteSettingsPopupView::GetPreferredSize() {
+gfx::Size WebsiteSettingsPopupView::GetPreferredSize() const {
   if (header_ == NULL && tabbed_pane_ == NULL)
     return views::View::GetPreferredSize();
 
diff --git a/chrome/browser/ui/views/website_settings/website_settings_popup_view.h b/chrome/browser/ui/views/website_settings/website_settings_popup_view.h
index 9b10fa8..31ddff5 100644
--- a/chrome/browser/ui/views/website_settings/website_settings_popup_view.h
+++ b/chrome/browser/ui/views/website_settings/website_settings_popup_view.h
@@ -81,7 +81,7 @@
   virtual void TabSelectedAt(int index) OVERRIDE;
 
   // views::View implementation.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // WebsiteSettingsUI implementations.
   virtual void SetCookieInfo(const CookieInfoList& cookie_info_list) OVERRIDE;
diff --git a/chrome/test/base/view_event_test_base.cc b/chrome/test/base/view_event_test_base.cc
index 2d64c5d..39293ab 100644
--- a/chrome/test/base/view_event_test_base.cc
+++ b/chrome/test/base/view_event_test_base.cc
@@ -54,7 +54,7 @@
     PreferredSizeChanged();
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     if (!preferred_size_.IsEmpty())
       return preferred_size_;
     return View::GetPreferredSize();
@@ -228,7 +228,7 @@
   content::RunMessageLoop();
 }
 
-gfx::Size ViewEventTestBase::GetPreferredSize() {
+gfx::Size ViewEventTestBase::GetPreferredSize() const {
   return gfx::Size();
 }
 
diff --git a/chrome/test/base/view_event_test_base.h b/chrome/test/base/view_event_test_base.h
index 302409d2..424ef0f 100644
--- a/chrome/test/base/view_event_test_base.h
+++ b/chrome/test/base/view_event_test_base.h
@@ -118,7 +118,7 @@
   // Returns an empty Size. Subclasses that want a preferred size other than
   // that of the View returned by CreateContentsView should override this
   // appropriately.
-  virtual gfx::Size GetPreferredSize();
+  virtual gfx::Size GetPreferredSize() const;
 
   // Creates a task that calls the specified method back. The specified
   // method is called in such a way that if there are any test failures
diff --git a/components/infobars/core/infobar.h b/components/infobars/core/infobar.h
index 46e1584..007a7ca 100644
--- a/components/infobars/core/infobar.h
+++ b/components/infobars/core/infobar.h
@@ -57,8 +57,7 @@
   static SkColor GetBottomColor(InfoBarDelegate::Type infobar_type);
 
   InfoBarManager* owner() { return owner_; }
-  InfoBarDelegate* delegate() { return delegate_.get(); }
-  const InfoBarDelegate* delegate() const { return delegate_.get(); }
+  InfoBarDelegate* delegate() const { return delegate_.get(); }
   void set_container(InfoBarContainer* container) { container_ = container; }
 
   // Sets |owner_|.  This also calls StoreActiveEntryUniqueID() on |delegate_|.
diff --git a/components/infobars/core/infobar_container.cc b/components/infobars/core/infobar_container.cc
index f435dd7..b6831129 100644
--- a/components/infobars/core/infobar_container.cc
+++ b/components/infobars/core/infobar_container.cc
@@ -58,13 +58,14 @@
   OnInfoBarStateChanged(false);
 }
 
-int InfoBarContainer::GetVerticalOverlap(int* total_height) {
+int InfoBarContainer::GetVerticalOverlap(int* total_height) const {
   // Our |total_height| is the sum of the preferred heights of the InfoBars
   // contained within us plus the |vertical_overlap|.
   int vertical_overlap = 0;
   int next_infobar_y = 0;
 
-  for (InfoBars::iterator i(infobars_.begin()); i != infobars_.end(); ++i) {
+  for (InfoBars::const_iterator i(infobars_.begin()); i != infobars_.end();
+       ++i) {
     InfoBar* infobar = *i;
     next_infobar_y -= infobar->arrow_height();
     vertical_overlap = std::max(vertical_overlap, -next_infobar_y);
diff --git a/components/infobars/core/infobar_container.h b/components/infobars/core/infobar_container.h
index 6663821..ec8e9c42 100644
--- a/components/infobars/core/infobar_container.h
+++ b/components/infobars/core/infobar_container.h
@@ -54,7 +54,7 @@
   // Returns the amount by which to overlap the toolbar above, and, when
   // |total_height| is non-NULL, set it to the height of the InfoBarContainer
   // (including overlap).
-  int GetVerticalOverlap(int* total_height);
+  int GetVerticalOverlap(int* total_height) const;
 
   // Called by the delegate when the distance between what the top infobar's
   // "unspoofable" arrow would point to and the top infobar itself changes.
diff --git a/content/shell/browser/shell_views.cc b/content/shell/browser/shell_views.cc
index fda7fbcd..4259536f 100644
--- a/content/shell/browser/shell_views.cc
+++ b/content/shell/browser/shell_views.cc
@@ -354,7 +354,7 @@
   virtual View* GetContentsView() OVERRIDE { return this; }
 
   // Overridden from View
-  virtual gfx::Size GetMinimumSize() OVERRIDE {
+  virtual gfx::Size GetMinimumSize() const OVERRIDE {
     // We want to be able to make the window smaller than its initial
     // (preferred) size.
     return gfx::Size();
diff --git a/ui/app_list/views/app_list_folder_view.cc b/ui/app_list/views/app_list_folder_view.cc
index b9e93b0..6ad42fbd 100644
--- a/ui/app_list/views/app_list_folder_view.cc
+++ b/ui/app_list/views/app_list_folder_view.cc
@@ -117,7 +117,7 @@
   layer()->SetOpacity(show ? 1.0f : 0.0f);
 }
 
-gfx::Size AppListFolderView::GetPreferredSize() {
+gfx::Size AppListFolderView::GetPreferredSize() const {
   const gfx::Size header_size = folder_header_view_->GetPreferredSize();
   const gfx::Size grid_size = items_grid_view_->GetPreferredSize();
   int width = std::max(header_size.width(), grid_size.width());
diff --git a/ui/app_list/views/app_list_folder_view.h b/ui/app_list/views/app_list_folder_view.h
index 6172ec4..80412765 100644
--- a/ui/app_list/views/app_list_folder_view.h
+++ b/ui/app_list/views/app_list_folder_view.h
@@ -62,7 +62,7 @@
   void CloseFolderPage();
 
   // views::View
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
 
diff --git a/ui/app_list/views/app_list_view.cc b/ui/app_list/views/app_list_view.cc
index a7f607d..9741c7b 100644
--- a/ui/app_list/views/app_list_view.cc
+++ b/ui/app_list/views/app_list_view.cc
@@ -198,7 +198,7 @@
   return delegate_->ShouldCenterWindow();
 }
 
-gfx::Size AppListView::GetPreferredSize() {
+gfx::Size AppListView::GetPreferredSize() const {
   return app_list_main_view_->GetPreferredSize();
 }
 
diff --git a/ui/app_list/views/app_list_view.h b/ui/app_list/views/app_list_view.h
index 5cc91ad..0312977 100644
--- a/ui/app_list/views/app_list_view.h
+++ b/ui/app_list/views/app_list_view.h
@@ -80,7 +80,7 @@
   bool ShouldCenterWindow() const;
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Paint(gfx::Canvas* canvas,
                      const views::CullSet& cull_set) OVERRIDE;
   virtual void OnThemeChanged() OVERRIDE;
diff --git a/ui/app_list/views/apps_container_view.cc b/ui/app_list/views/apps_container_view.cc
index 1f947a6..163bc625 100644
--- a/ui/app_list/views/apps_container_view.cc
+++ b/ui/app_list/views/apps_container_view.cc
@@ -101,7 +101,7 @@
   return show_state_ == SHOW_ACTIVE_FOLDER;
 }
 
-gfx::Size AppsContainerView::GetPreferredSize() {
+gfx::Size AppsContainerView::GetPreferredSize() const {
   const gfx::Size grid_size = apps_grid_view_->GetPreferredSize();
   const gfx::Size folder_view_size = app_list_folder_view_->GetPreferredSize();
 
diff --git a/ui/app_list/views/apps_container_view.h b/ui/app_list/views/apps_container_view.h
index 909e0e3..2dbbd3ee 100644
--- a/ui/app_list/views/apps_container_view.h
+++ b/ui/app_list/views/apps_container_view.h
@@ -64,7 +64,7 @@
   bool IsInFolderView() const;
 
   // views::View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
 
diff --git a/ui/app_list/views/apps_grid_view.cc b/ui/app_list/views/apps_grid_view.cc
index ea4829ab..9b32f2e8 100644
--- a/ui/app_list/views/apps_grid_view.cc
+++ b/ui/app_list/views/apps_grid_view.cc
@@ -841,7 +841,7 @@
   return bounds_animator_.IsAnimating(view);
 }
 
-gfx::Size AppsGridView::GetPreferredSize() {
+gfx::Size AppsGridView::GetPreferredSize() const {
   const gfx::Insets insets(GetInsets());
   const gfx::Size tile_size = gfx::Size(kPreferredTileWidth,
                                         kPreferredTileHeight);
diff --git a/ui/app_list/views/apps_grid_view.h b/ui/app_list/views/apps_grid_view.h
index 1b19d1a..79d19e6 100644
--- a/ui/app_list/views/apps_grid_view.h
+++ b/ui/app_list/views/apps_grid_view.h
@@ -132,7 +132,7 @@
   bool dragging() const { return drag_pointer_ != NONE; }
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
   virtual bool OnKeyReleased(const ui::KeyEvent& event) OVERRIDE;
diff --git a/ui/app_list/views/contents_switcher_view.cc b/ui/app_list/views/contents_switcher_view.cc
index 0592da65..d6b96f3 100644
--- a/ui/app_list/views/contents_switcher_view.cc
+++ b/ui/app_list/views/contents_switcher_view.cc
@@ -42,7 +42,7 @@
   buttons_->AddChildView(button);
 }
 
-gfx::Size ContentsSwitcherView::GetPreferredSize() {
+gfx::Size ContentsSwitcherView::GetPreferredSize() const {
   return gfx::Size(buttons_->GetPreferredSize().width(), kPreferredHeight);
 }
 
diff --git a/ui/app_list/views/contents_switcher_view.h b/ui/app_list/views/contents_switcher_view.h
index fcbcfbf..a4e2399 100644
--- a/ui/app_list/views/contents_switcher_view.h
+++ b/ui/app_list/views/contents_switcher_view.h
@@ -26,7 +26,7 @@
   void AddSwitcherButton(int resource_id, int tag);
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
   // Overridden from views::ButtonListener:
diff --git a/ui/app_list/views/contents_view.cc b/ui/app_list/views/contents_view.cc
index c07c867a..ed79a7a 100644
--- a/ui/app_list/views/contents_view.cc
+++ b/ui/app_list/views/contents_view.cc
@@ -209,7 +209,7 @@
   apps_container_view_->apps_grid_view()->Prerender(selected_page);
 }
 
-gfx::Size ContentsView::GetPreferredSize() {
+gfx::Size ContentsView::GetPreferredSize() const {
   const gfx::Size container_size = GetAppsContainerView(view_model_.get())->
       apps_grid_view()->GetPreferredSize();
   const gfx::Size results_size =
diff --git a/ui/app_list/views/contents_view.h b/ui/app_list/views/contents_view.h
index 8348064..d30375e40 100644
--- a/ui/app_list/views/contents_view.h
+++ b/ui/app_list/views/contents_view.h
@@ -70,7 +70,7 @@
   ShowState show_state() const { return show_state_; }
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
   virtual bool OnMouseWheel(const ui::MouseWheelEvent& event) OVERRIDE;
diff --git a/ui/app_list/views/folder_header_view.cc b/ui/app_list/views/folder_header_view.cc
index 4346fec..9c78b91 100644
--- a/ui/app_list/views/folder_header_view.cc
+++ b/ui/app_list/views/folder_header_view.cc
@@ -148,7 +148,7 @@
   return folder_name_view_->enabled();
 }
 
-gfx::Size FolderHeaderView::GetPreferredSize() {
+gfx::Size FolderHeaderView::GetPreferredSize() const {
   return gfx::Size(kPreferredWidth, kPreferredHeight);
 }
 
diff --git a/ui/app_list/views/folder_header_view.h b/ui/app_list/views/folder_header_view.h
index aacb696..fa1498ed 100644
--- a/ui/app_list/views/folder_header_view.h
+++ b/ui/app_list/views/folder_header_view.h
@@ -41,7 +41,7 @@
   void OnFolderItemRemoved();
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   class FolderNameView;
diff --git a/ui/app_list/views/page_switcher.cc b/ui/app_list/views/page_switcher.cc
index 99e9749..84077f9a 100644
--- a/ui/app_list/views/page_switcher.cc
+++ b/ui/app_list/views/page_switcher.cc
@@ -49,7 +49,7 @@
   void set_button_width(int button_width) { button_width_ = button_width; }
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(button_width_, kButtonHeight);
   }
 
@@ -165,7 +165,7 @@
   }
 }
 
-gfx::Size PageSwitcher::GetPreferredSize() {
+gfx::Size PageSwitcher::GetPreferredSize() const {
   // Always return a size with correct height so that container resize is not
   // needed when more pages are added.
   return gfx::Size(buttons_->GetPreferredSize().width(),
diff --git a/ui/app_list/views/page_switcher.h b/ui/app_list/views/page_switcher.h
index b05da99..61a00ae 100644
--- a/ui/app_list/views/page_switcher.h
+++ b/ui/app_list/views/page_switcher.h
@@ -34,7 +34,7 @@
   void UpdateUIForDragPoint(const gfx::Point& point);
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
  private:
diff --git a/ui/app_list/views/progress_bar_view.cc b/ui/app_list/views/progress_bar_view.cc
index aaf52c0..f80c4f70b 100644
--- a/ui/app_list/views/progress_bar_view.cc
+++ b/ui/app_list/views/progress_bar_view.cc
@@ -34,7 +34,7 @@
 
 ProgressBarView::~ProgressBarView() {}
 
-gfx::Size ProgressBarView::GetPreferredSize() {
+gfx::Size ProgressBarView::GetPreferredSize() const {
   return background_painter_->GetMinimumSize();
 }
 
diff --git a/ui/app_list/views/progress_bar_view.h b/ui/app_list/views/progress_bar_view.h
index 220eb8d0..0e61820 100644
--- a/ui/app_list/views/progress_bar_view.h
+++ b/ui/app_list/views/progress_bar_view.h
@@ -22,7 +22,7 @@
   virtual ~ProgressBarView();
 
   // views::View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
  private:
diff --git a/ui/app_list/views/search_box_view.cc b/ui/app_list/views/search_box_view.cc
index 557cc217..a9b65a1 100644
--- a/ui/app_list/views/search_box_view.cc
+++ b/ui/app_list/views/search_box_view.cc
@@ -108,7 +108,7 @@
   menu_.reset();
 }
 
-gfx::Size SearchBoxView::GetPreferredSize() {
+gfx::Size SearchBoxView::GetPreferredSize() const {
   return gfx::Size(kPreferredWidth, kPreferredHeight);
 }
 
diff --git a/ui/app_list/views/search_box_view.h b/ui/app_list/views/search_box_view.h
index d4ee96d..2f7b4ec 100644
--- a/ui/app_list/views/search_box_view.h
+++ b/ui/app_list/views/search_box_view.h
@@ -55,7 +55,7 @@
   }
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual bool OnMouseWheel(const ui::MouseWheelEvent& event) OVERRIDE;
 
diff --git a/ui/app_list/views/search_result_list_view.cc b/ui/app_list/views/search_result_list_view.cc
index 924cec4..19fb5846 100644
--- a/ui/app_list/views/search_result_list_view.cc
+++ b/ui/app_list/views/search_result_list_view.cc
@@ -198,11 +198,11 @@
   results_container_->SetBoundsRect(GetLocalBounds());
 }
 
-gfx::Size SearchResultListView::GetPreferredSize() {
+gfx::Size SearchResultListView::GetPreferredSize() const {
   return results_container_->GetPreferredSize();
 }
 
-int SearchResultListView::GetHeightForWidth(int w) {
+int SearchResultListView::GetHeightForWidth(int w) const {
   return results_container_->GetHeightForWidth(w);
 }
 
diff --git a/ui/app_list/views/search_result_list_view.h b/ui/app_list/views/search_result_list_view.h
index 365d9b5..e46bc23 100644
--- a/ui/app_list/views/search_result_list_view.h
+++ b/ui/app_list/views/search_result_list_view.h
@@ -55,7 +55,7 @@
 
   // Overridden from views::View:
   virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   friend class test::SearchResultListViewTest;
@@ -79,7 +79,7 @@
 
   // Overridden from views::View:
   virtual void Layout() OVERRIDE;
-  virtual int GetHeightForWidth(int w) OVERRIDE;
+  virtual int GetHeightForWidth(int w) const OVERRIDE;
   virtual void VisibilityChanged(
       views::View* starting_from, bool is_visible) OVERRIDE;
 
diff --git a/ui/app_list/views/search_result_view.cc b/ui/app_list/views/search_result_view.cc
index 3da0114..f5f11e6 100644
--- a/ui/app_list/views/search_result_view.cc
+++ b/ui/app_list/views/search_result_view.cc
@@ -133,7 +133,7 @@
   return kViewClassName;
 }
 
-gfx::Size SearchResultView::GetPreferredSize() {
+gfx::Size SearchResultView::GetPreferredSize() const {
   return gfx::Size(kPreferredWidth, kPreferredHeight);
 }
 
diff --git a/ui/app_list/views/search_result_view.h b/ui/app_list/views/search_result_view.h
index bf2bb37..be7037ec 100644
--- a/ui/app_list/views/search_result_view.h
+++ b/ui/app_list/views/search_result_view.h
@@ -62,7 +62,7 @@
 
   // views::View overrides:
   virtual const char* GetClassName() const OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
   virtual void ChildPreferredSizeChanged(views::View* child) OVERRIDE;
diff --git a/ui/app_list/views/speech_view.cc b/ui/app_list/views/speech_view.cc
index eaa1094..ba2e690 100644
--- a/ui/app_list/views/speech_view.cc
+++ b/ui/app_list/views/speech_view.cc
@@ -203,7 +203,7 @@
       speech_height);
 }
 
-gfx::Size SpeechView::GetPreferredSize() {
+gfx::Size SpeechView::GetPreferredSize() const {
   return gfx::Size(0, kSpeechViewMaxHeight);
 }
 
diff --git a/ui/app_list/views/speech_view.h b/ui/app_list/views/speech_view.h
index dc775dc6..946307f 100644
--- a/ui/app_list/views/speech_view.h
+++ b/ui/app_list/views/speech_view.h
@@ -34,7 +34,7 @@
 
   // Overridden from views::View:
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   int GetIndicatorRadius(uint8 level);
diff --git a/ui/app_list/views/start_page_view.cc b/ui/app_list/views/start_page_view.cc
index e1c0e2f40..100f81a 100644
--- a/ui/app_list/views/start_page_view.cc
+++ b/ui/app_list/views/start_page_view.cc
@@ -34,7 +34,7 @@
   virtual ~BarPlaceholderButton() {}
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(kBarPlaceholderWidth, kBarPlaceholderHeight);
   }
 
diff --git a/ui/app_list/views/top_icon_animation_view.cc b/ui/app_list/views/top_icon_animation_view.cc
index 8ec69214..f64a372 100644
--- a/ui/app_list/views/top_icon_animation_view.cc
+++ b/ui/app_list/views/top_icon_animation_view.cc
@@ -67,7 +67,7 @@
   layer()->SetTransform(open_folder_ ? gfx::Transform() : transform);
 }
 
-gfx::Size TopIconAnimationView::GetPreferredSize() {
+gfx::Size TopIconAnimationView::GetPreferredSize() const {
   return icon_size_;
 }
 
diff --git a/ui/app_list/views/top_icon_animation_view.h b/ui/app_list/views/top_icon_animation_view.h
index 02790a9a..6b0097b9 100644
--- a/ui/app_list/views/top_icon_animation_view.h
+++ b/ui/app_list/views/top_icon_animation_view.h
@@ -54,7 +54,7 @@
 
  private:
   // views::View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
   // ui::ImplicitAnimationObserver overrides:
diff --git a/ui/message_center/views/bounded_label.cc b/ui/message_center/views/bounded_label.cc
index 49902c8..fd409b4 100644
--- a/ui/message_center/views/bounded_label.cc
+++ b/ui/message_center/views/bounded_label.cc
@@ -319,11 +319,11 @@
   return label_->GetBaseline();
 }
 
-gfx::Size BoundedLabel::GetPreferredSize() {
+gfx::Size BoundedLabel::GetPreferredSize() const {
   return visible() ? label_->GetSizeForWidthAndLines(-1, -1) : gfx::Size();
 }
 
-int BoundedLabel::GetHeightForWidth(int width) {
+int BoundedLabel::GetHeightForWidth(int width) const {
   return visible() ?
          label_->GetSizeForWidthAndLines(width, line_limit_).height() : 0;
 }
diff --git a/ui/message_center/views/bounded_label.h b/ui/message_center/views/bounded_label.h
index 2fa04d7..c536f98 100644
--- a/ui/message_center/views/bounded_label.h
+++ b/ui/message_center/views/bounded_label.h
@@ -51,8 +51,8 @@
 
   // Overridden from views::View.
   virtual int GetBaseline() const OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
   virtual void Paint(gfx::Canvas* canvas,
                      const views::CullSet& cull_set) OVERRIDE;
   virtual bool HitTestRect(const gfx::Rect& rect) const OVERRIDE;
diff --git a/ui/message_center/views/message_center_bubble.cc b/ui/message_center/views/message_center_bubble.cc
index cc9345ff..7189d274 100644
--- a/ui/message_center/views/message_center_bubble.cc
+++ b/ui/message_center/views/message_center_bubble.cc
@@ -20,7 +20,7 @@
   virtual ~ContentsView();
 
   // Overridden from views::View:
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
 
  protected:
   // Overridden from views::View:
@@ -41,7 +41,7 @@
 ContentsView::~ContentsView() {
 }
 
-int ContentsView::GetHeightForWidth(int width) {
+int ContentsView::GetHeightForWidth(int width) const {
   DCHECK_EQ(1, child_count());
   int contents_width = std::max(width - GetInsets().width(), 0);
   int contents_height = child_at(0)->GetHeightForWidth(contents_width);
diff --git a/ui/message_center/views/message_center_button_bar.cc b/ui/message_center/views/message_center_button_bar.cc
index a85fd183..c889490 100644
--- a/ui/message_center/views/message_center_button_bar.cc
+++ b/ui/message_center/views/message_center_button_bar.cc
@@ -51,7 +51,7 @@
 
  protected:
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   gfx::Size size_;
@@ -83,7 +83,7 @@
       gfx::Insets(1, 2, 2, 2)));
 }
 
-gfx::Size NotificationCenterButton::GetPreferredSize() { return size_; }
+gfx::Size NotificationCenterButton::GetPreferredSize() const { return size_; }
 
 // MessageCenterButtonBar /////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/ui/message_center/views/message_center_view.cc b/ui/message_center/views/message_center_view.cc
index c33f4b4e..35177b8 100644
--- a/ui/message_center/views/message_center_view.cc
+++ b/ui/message_center/views/message_center_view.cc
@@ -61,8 +61,8 @@
   virtual ~NoNotificationMessageView();
 
   // Overridden from views::View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
  private:
@@ -87,11 +87,11 @@
 NoNotificationMessageView::~NoNotificationMessageView() {
 }
 
-gfx::Size NoNotificationMessageView::GetPreferredSize() {
+gfx::Size NoNotificationMessageView::GetPreferredSize() const {
   return gfx::Size(kMinScrollViewHeight, label_->GetPreferredSize().width());
 }
 
-int NoNotificationMessageView::GetHeightForWidth(int width) {
+int NoNotificationMessageView::GetHeightForWidth(int width) const {
   return kMinScrollViewHeight;
 }
 
@@ -121,8 +121,8 @@
  protected:
   // Overridden from views::View.
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
   virtual void PaintChildren(gfx::Canvas* canvas,
                              const views::CullSet& cull_set) OVERRIDE;
   virtual void ReorderChildLayers(ui::Layer* parent_layer) OVERRIDE;
@@ -133,7 +133,7 @@
   virtual void OnBoundsAnimatorDone(views::BoundsAnimator* animator) OVERRIDE;
 
  private:
-  bool IsValidChild(views::View* child);
+  bool IsValidChild(const views::View* child) const;
   void DoUpdateIfPossible();
 
   // Animates all notifications below target upwards to align with the top of
@@ -276,10 +276,10 @@
   DoUpdateIfPossible();
 }
 
-gfx::Size MessageListView::GetPreferredSize() {
+gfx::Size MessageListView::GetPreferredSize() const {
   int width = 0;
   for (int i = 0; i < child_count(); i++) {
-    views::View* child = child_at(i);
+    const views::View* child = child_at(i);
     if (IsValidChild(child))
       width = std::max(width, child->GetPreferredSize().width());
   }
@@ -288,7 +288,7 @@
                    GetHeightForWidth(width + GetInsets().width()));
 }
 
-int MessageListView::GetHeightForWidth(int width) {
+int MessageListView::GetHeightForWidth(int width) const {
   if (fixed_height_ > 0)
     return fixed_height_;
 
@@ -296,7 +296,7 @@
   int height = 0;
   int padding = 0;
   for (int i = 0; i < child_count(); ++i) {
-    views::View* child = child_at(i);
+    const views::View* child = child_at(i);
     if (!IsValidChild(child))
       continue;
     height += child->GetHeightForWidth(width) + padding;
@@ -391,10 +391,12 @@
     GetWidget()->SynthesizeMouseMoveEvent();
 }
 
-bool MessageListView::IsValidChild(views::View* child) {
+bool MessageListView::IsValidChild(const views::View* child) const {
   return child->visible() &&
-         deleting_views_.find(child) == deleting_views_.end() &&
-         deleted_when_done_.find(child) == deleted_when_done_.end();
+      deleting_views_.find(const_cast<views::View*>(child)) ==
+          deleting_views_.end() &&
+      deleted_when_done_.find(const_cast<views::View*>(child)) ==
+          deleted_when_done_.end();
 }
 
 void MessageListView::DoUpdateIfPossible() {
@@ -761,7 +763,7 @@
     GetWidget()->GetRootView()->SchedulePaint();
 }
 
-gfx::Size MessageCenterView::GetPreferredSize() {
+gfx::Size MessageCenterView::GetPreferredSize() const {
   if (settings_transition_animation_ &&
       settings_transition_animation_->is_animating()) {
     int content_width = std::max(source_view_->GetPreferredSize().width(),
@@ -773,14 +775,14 @@
 
   int width = 0;
   for (int i = 0; i < child_count(); ++i) {
-    views::View* child = child_at(0);
+    const views::View* child = child_at(0);
     if (child->visible())
       width = std::max(width, child->GetPreferredSize().width());
   }
   return gfx::Size(width, GetHeightForWidth(width));
 }
 
-int MessageCenterView::GetHeightForWidth(int width) {
+int MessageCenterView::GetHeightForWidth(int width) const {
   if (settings_transition_animation_ &&
       settings_transition_animation_->is_animating()) {
     int content_height = target_height_;
diff --git a/ui/message_center/views/message_center_view.h b/ui/message_center/views/message_center_view.h
index 25dfdee..6264bb3 100644
--- a/ui/message_center/views/message_center_view.h
+++ b/ui/message_center/views/message_center_view.h
@@ -68,8 +68,8 @@
  protected:
   // Overridden from views::View:
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
   virtual bool OnMouseWheel(const ui::MouseWheelEvent& event) OVERRIDE;
   virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE;
 
diff --git a/ui/message_center/views/message_center_view_unittest.cc b/ui/message_center/views/message_center_view_unittest.cc
index 223a15d..99fa804e 100644
--- a/ui/message_center/views/message_center_view_unittest.cc
+++ b/ui/message_center/views/message_center_view_unittest.cc
@@ -40,8 +40,8 @@
                                 Test* test);
   virtual ~MockNotificationView();
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual int GetHeightForWidth(int w) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int w) const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
  private:
@@ -60,13 +60,13 @@
 MockNotificationView::~MockNotificationView() {
 }
 
-gfx::Size MockNotificationView::GetPreferredSize() {
+gfx::Size MockNotificationView::GetPreferredSize() const {
   test_->RegisterCall(GET_PREFERRED_SIZE);
   DCHECK(child_count() > 0);
   return NotificationView::GetPreferredSize();
 }
 
-int MockNotificationView::GetHeightForWidth(int width) {
+int MockNotificationView::GetHeightForWidth(int width) const {
   test_->RegisterCall(GET_HEIGHT_FOR_WIDTH);
   DCHECK(child_count() > 0);
   return NotificationView::GetHeightForWidth(width);
diff --git a/ui/message_center/views/notification_button.cc b/ui/message_center/views/notification_button.cc
index 3cc0fec..fa38633 100644
--- a/ui/message_center/views/notification_button.cc
+++ b/ui/message_center/views/notification_button.cc
@@ -71,12 +71,12 @@
   SetAccessibleName(title);
 }
 
-gfx::Size NotificationButton::GetPreferredSize() {
+gfx::Size NotificationButton::GetPreferredSize() const {
   return gfx::Size(message_center::kNotificationWidth,
                    message_center::kButtonHeight);
 }
 
-int NotificationButton::GetHeightForWidth(int width) {
+int NotificationButton::GetHeightForWidth(int width) const {
   return message_center::kButtonHeight;
 }
 
diff --git a/ui/message_center/views/notification_button.h b/ui/message_center/views/notification_button.h
index e0603cd..82669c2c 100644
--- a/ui/message_center/views/notification_button.h
+++ b/ui/message_center/views/notification_button.h
@@ -27,8 +27,8 @@
   void SetTitle(const base::string16& title);
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
   virtual void OnFocus() OVERRIDE;
   virtual void OnBlur() OVERRIDE;
diff --git a/ui/message_center/views/notification_view.cc b/ui/message_center/views/notification_view.cc
index a0e78f7..3565f2a 100644
--- a/ui/message_center/views/notification_view.cc
+++ b/ui/message_center/views/notification_view.cc
@@ -193,7 +193,7 @@
 
  private:
   // Overriden from View
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
   DISALLOW_COPY_AND_ASSIGN(NotificationProgressBar);
@@ -205,7 +205,7 @@
 NotificationProgressBar::~NotificationProgressBar() {
 }
 
-gfx::Size NotificationProgressBar::GetPreferredSize() {
+gfx::Size NotificationProgressBar::GetPreferredSize() const {
   gfx::Size pref_size(kProgressBarWidth, message_center::kProgressBarThickness);
   gfx::Insets insets = GetInsets();
   pref_size.Enlarge(insets.width(), insets.height());
@@ -358,7 +358,7 @@
 NotificationView::~NotificationView() {
 }
 
-gfx::Size NotificationView::GetPreferredSize() {
+gfx::Size NotificationView::GetPreferredSize() const {
   int top_width = top_view_->GetPreferredSize().width() +
                   icon_view_->GetPreferredSize().width();
   int bottom_width = bottom_view_->GetPreferredSize().width();
@@ -366,7 +366,7 @@
   return gfx::Size(preferred_width, GetHeightForWidth(preferred_width));
 }
 
-int NotificationView::GetHeightForWidth(int width) {
+int NotificationView::GetHeightForWidth(int width) const {
   // Get the height assuming no line limit changes.
   int content_width = width - GetInsets().width();
   int top_height = top_view_->GetHeightForWidth(content_width);
@@ -724,7 +724,7 @@
   }
 }
 
-int NotificationView::GetMessageLineLimit(int title_lines, int width) {
+int NotificationView::GetMessageLineLimit(int title_lines, int width) const {
   // Image notifications require that the image must be kept flush against
   // their icons, but we can allow more text if no image.
   int effective_title_lines = std::max(0, title_lines - 1);
@@ -760,7 +760,7 @@
   return message_line_limit;
 }
 
-int NotificationView::GetMessageHeight(int width, int limit) {
+int NotificationView::GetMessageHeight(int width, int limit) const {
   return message_view_ ?
          message_view_->GetSizeForWidthAndLines(width, limit).height() : 0;
 }
diff --git a/ui/message_center/views/notification_view.h b/ui/message_center/views/notification_view.h
index 0b2f9c86..2480618 100644
--- a/ui/message_center/views/notification_view.h
+++ b/ui/message_center/views/notification_view.h
@@ -42,8 +42,8 @@
   virtual ~NotificationView();
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void OnFocus() OVERRIDE;
   virtual void ScrollRectToVisible(const gfx::Rect& rect) OVERRIDE;
@@ -85,8 +85,8 @@
   void CreateOrUpdateImageView(const Notification& notification);
   void CreateOrUpdateActionButtonViews(const Notification& notification);
 
-  int GetMessageLineLimit(int title_lines, int width);
-  int GetMessageHeight(int width, int limit);
+  int GetMessageLineLimit(int title_lines, int width) const;
+  int GetMessageHeight(int width, int limit) const;
 
   MessageCenterController* controller_;  // Weak, lives longer then views.
 
diff --git a/ui/message_center/views/notifier_settings_view.cc b/ui/message_center/views/notifier_settings_view.cc
index 720b0763..e2df07c 100644
--- a/ui/message_center/views/notifier_settings_view.cc
+++ b/ui/message_center/views/notifier_settings_view.cc
@@ -137,7 +137,7 @@
 
   // views::View:
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
   virtual void OnFocus() OVERRIDE;
   virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
@@ -167,7 +167,7 @@
   content->SetBounds(0, y, content_width, content_height);
 }
 
-gfx::Size EntryView::GetPreferredSize() {
+gfx::Size EntryView::GetPreferredSize() const {
   DCHECK_EQ(1, child_count());
   gfx::Size size = child_at(0)->GetPreferredSize();
   size.SetToMax(gfx::Size(settings::kWidth, settings::kEntryHeight));
@@ -652,7 +652,7 @@
   scroller_->SetBounds(0, title_height, width(), height() - title_height);
 }
 
-gfx::Size NotifierSettingsView::GetMinimumSize() {
+gfx::Size NotifierSettingsView::GetMinimumSize() const {
   gfx::Size size(settings::kWidth, settings::kMinimumHeight);
   int total_height = title_label_->GetPreferredSize().height() +
                      scroller_->contents()->GetPreferredSize().height();
@@ -661,7 +661,7 @@
   return size;
 }
 
-gfx::Size NotifierSettingsView::GetPreferredSize() {
+gfx::Size NotifierSettingsView::GetPreferredSize() const {
   gfx::Size preferred_size;
   gfx::Size title_size = title_label_->GetPreferredSize();
   gfx::Size content_size = scroller_->contents()->GetPreferredSize();
diff --git a/ui/message_center/views/notifier_settings_view.h b/ui/message_center/views/notifier_settings_view.h
index c7f5269..2db8bb56 100644
--- a/ui/message_center/views/notifier_settings_view.h
+++ b/ui/message_center/views/notifier_settings_view.h
@@ -95,8 +95,8 @@
 
   // Overridden from views::View:
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
   virtual bool OnMouseWheel(const ui::MouseWheelEvent& event) OVERRIDE;
 
diff --git a/ui/message_center/views/padded_button.cc b/ui/message_center/views/padded_button.cc
index 203d77bea..add465b1 100644
--- a/ui/message_center/views/padded_button.cc
+++ b/ui/message_center/views/padded_button.cc
@@ -50,7 +50,7 @@
                resource_id));
 }
 
-gfx::Size PaddedButton::GetPreferredSize() {
+gfx::Size PaddedButton::GetPreferredSize() const {
   return gfx::Size(message_center::kControlButtonSize,
                    message_center::kControlButtonSize);
 }
diff --git a/ui/message_center/views/padded_button.h b/ui/message_center/views/padded_button.h
index 04ae5c1..57d2fe7 100644
--- a/ui/message_center/views/padded_button.h
+++ b/ui/message_center/views/padded_button.h
@@ -24,7 +24,7 @@
   virtual ~PaddedButton();
 
   // Overridden from views::ImageButton:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
   virtual void OnFocus() OVERRIDE;
 
diff --git a/ui/message_center/views/proportional_image_view.cc b/ui/message_center/views/proportional_image_view.cc
index a1afd2e..8ec9b32 100644
--- a/ui/message_center/views/proportional_image_view.cc
+++ b/ui/message_center/views/proportional_image_view.cc
@@ -15,9 +15,9 @@
 
 ProportionalImageView::~ProportionalImageView() {}
 
-gfx::Size ProportionalImageView::GetPreferredSize() { return max_size_; }
+gfx::Size ProportionalImageView::GetPreferredSize() const { return max_size_; }
 
-int ProportionalImageView::GetHeightForWidth(int width) {
+int ProportionalImageView::GetHeightForWidth(int width) const {
   return max_size_.height();
 }
 
diff --git a/ui/message_center/views/proportional_image_view.h b/ui/message_center/views/proportional_image_view.h
index 5aa26385..7c1be92 100644
--- a/ui/message_center/views/proportional_image_view.h
+++ b/ui/message_center/views/proportional_image_view.h
@@ -17,8 +17,8 @@
   virtual ~ProportionalImageView();
 
   // Overridden from views::View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
  private:
diff --git a/ui/message_center/views/toast_contents_view.cc b/ui/message_center/views/toast_contents_view.cc
index d004e57..7c9b7aaa 100644
--- a/ui/message_center/views/toast_contents_view.cc
+++ b/ui/message_center/views/toast_contents_view.cc
@@ -40,7 +40,7 @@
 }  // namespace.
 
 // static
-gfx::Size ToastContentsView::GetToastSizeForView(views::View* view) {
+gfx::Size ToastContentsView::GetToastSizeForView(const views::View* view) {
   int width = kNotificationWidth + view->GetInsets().width();
   return gfx::Size(width, view->GetHeightForWidth(width));
 }
@@ -282,7 +282,7 @@
   }
 }
 
-gfx::Size ToastContentsView::GetPreferredSize() {
+gfx::Size ToastContentsView::GetPreferredSize() const {
   return child_count() ? GetToastSizeForView(child_at(0)) : gfx::Size();
 }
 
diff --git a/ui/message_center/views/toast_contents_view.h b/ui/message_center/views/toast_contents_view.h
index 8e80b73c..b6a42cf 100644
--- a/ui/message_center/views/toast_contents_view.h
+++ b/ui/message_center/views/toast_contents_view.h
@@ -39,7 +39,7 @@
                           public gfx::AnimationDelegate {
  public:
   // Computes the size of a toast assuming it will host the given view.
-  static gfx::Size GetToastSizeForView(views::View* view);
+  static gfx::Size GetToastSizeForView(const views::View* view);
 
   ToastContentsView(const std::string& notification_id,
                     base::WeakPtr<MessagePopupCollection> collection);
@@ -74,7 +74,7 @@
   virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE;
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
 
  private:
diff --git a/ui/views/bubble/bubble_delegate.cc b/ui/views/bubble/bubble_delegate.cc
index 38c7cb2e..d2a53ec 100644
--- a/ui/views/bubble/bubble_delegate.cc
+++ b/ui/views/bubble/bubble_delegate.cc
@@ -181,7 +181,7 @@
   return ViewStorage::GetInstance()->RetrieveView(anchor_view_storage_id_);
 }
 
-gfx::Rect BubbleDelegateView::GetAnchorRect() {
+gfx::Rect BubbleDelegateView::GetAnchorRect() const {
   if (!GetAnchorView())
     return anchor_rect_;
 
diff --git a/ui/views/bubble/bubble_delegate.h b/ui/views/bubble/bubble_delegate.h
index 5cbda570..b3d299997f0 100644
--- a/ui/views/bubble/bubble_delegate.h
+++ b/ui/views/bubble/bubble_delegate.h
@@ -95,7 +95,7 @@
   void set_adjust_if_offscreen(bool adjust) { adjust_if_offscreen_ = adjust; }
 
   // Get the arrow's anchor rect in screen space.
-  virtual gfx::Rect GetAnchorRect();
+  virtual gfx::Rect GetAnchorRect() const;
 
   // Allows delegates to provide custom parameters before widget initialization.
   virtual void OnBeforeBubbleWidgetInit(Widget::InitParams* params,
@@ -160,7 +160,7 @@
   Widget* anchor_widget_;
 
   // The anchor rect used in the absence of an anchor view.
-  gfx::Rect anchor_rect_;
+  mutable gfx::Rect anchor_rect_;
 
   // The arrow's location on the bubble.
   BubbleBorder::Arrow arrow_;
diff --git a/ui/views/bubble/bubble_delegate_unittest.cc b/ui/views/bubble/bubble_delegate_unittest.cc
index 97b4dcd..9070c2fe 100644
--- a/ui/views/bubble/bubble_delegate_unittest.cc
+++ b/ui/views/bubble/bubble_delegate_unittest.cc
@@ -34,7 +34,9 @@
 
   // BubbleDelegateView overrides:
   virtual View* GetInitiallyFocusedView() OVERRIDE { return view_; }
-  virtual gfx::Size GetPreferredSize() OVERRIDE { return gfx::Size(200, 200); }
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
+    return gfx::Size(200, 200);
+  }
 
  private:
   View* view_;
diff --git a/ui/views/bubble/bubble_frame_view.cc b/ui/views/bubble/bubble_frame_view.cc
index 1c4d70c..8df63f1 100644
--- a/ui/views/bubble/bubble_frame_view.cc
+++ b/ui/views/bubble/bubble_frame_view.cc
@@ -170,11 +170,11 @@
   return insets;
 }
 
-gfx::Size BubbleFrameView::GetPreferredSize() {
+gfx::Size BubbleFrameView::GetPreferredSize() const {
   return GetSizeForClientSize(GetWidget()->client_view()->GetPreferredSize());
 }
 
-gfx::Size BubbleFrameView::GetMinimumSize() {
+gfx::Size BubbleFrameView::GetMinimumSize() const {
   return GetSizeForClientSize(GetWidget()->client_view()->GetMinimumSize());
 }
 
@@ -345,7 +345,8 @@
     SchedulePaint();
 }
 
-gfx::Size BubbleFrameView::GetSizeForClientSize(const gfx::Size& client_size) {
+gfx::Size BubbleFrameView::GetSizeForClientSize(
+    const gfx::Size& client_size) const {
   // Accommodate the width of the title bar elements.
   int title_bar_width = GetInsets().width() + border()->GetInsets().width();
   if (!title_->text().empty())
diff --git a/ui/views/bubble/bubble_frame_view.h b/ui/views/bubble/bubble_frame_view.h
index 6521343e..4d56032d 100644
--- a/ui/views/bubble/bubble_frame_view.h
+++ b/ui/views/bubble/bubble_frame_view.h
@@ -45,8 +45,8 @@
 
   // View overrides:
   virtual gfx::Insets GetInsets() const OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
   virtual void ChildPreferredSizeChanged(View* child) OVERRIDE;
@@ -90,7 +90,7 @@
                               const gfx::Size& client_size);
 
   // Calculates the size needed to accommodate the given client area.
-  gfx::Size GetSizeForClientSize(const gfx::Size& client_size);
+  gfx::Size GetSizeForClientSize(const gfx::Size& client_size) const;
 
   // The bubble border.
   BubbleBorder* bubble_border_;
diff --git a/ui/views/bubble/tray_bubble_view.cc b/ui/views/bubble/tray_bubble_view.cc
index b286668..1493745 100644
--- a/ui/views/bubble/tray_bubble_view.cc
+++ b/ui/views/bubble/tray_bubble_view.cc
@@ -393,7 +393,7 @@
   SetLayoutManager(layout);
 }
 
-gfx::Rect TrayBubbleView::GetAnchorRect() {
+gfx::Rect TrayBubbleView::GetAnchorRect() const {
   if (!delegate_)
     return gfx::Rect();
   return delegate_->GetAnchorRect(anchor_widget(),
@@ -420,7 +420,7 @@
   mask->addRect(gfx::RectToSkRect(GetBubbleFrameView()->GetContentsBounds()));
 }
 
-gfx::Size TrayBubbleView::GetPreferredSize() {
+gfx::Size TrayBubbleView::GetPreferredSize() const {
   return gfx::Size(preferred_width_, GetHeightForWidth(preferred_width_));
 }
 
@@ -430,11 +430,11 @@
   return size;
 }
 
-int TrayBubbleView::GetHeightForWidth(int width) {
+int TrayBubbleView::GetHeightForWidth(int width) const {
   int height = GetInsets().height();
   width = std::max(width - GetInsets().width(), 0);
   for (int i = 0; i < child_count(); ++i) {
-    View* child = child_at(i);
+    const View* child = child_at(i);
     if (child->visible())
       height += child->GetHeightForWidth(width);
   }
diff --git a/ui/views/bubble/tray_bubble_view.h b/ui/views/bubble/tray_bubble_view.h
index e33200b..31bc80a8 100644
--- a/ui/views/bubble/tray_bubble_view.h
+++ b/ui/views/bubble/tray_bubble_view.h
@@ -75,9 +75,10 @@
 
     // Passes responsibility for BubbleDelegateView::GetAnchorRect to the
     // delegate.
-    virtual gfx::Rect GetAnchorRect(views::Widget* anchor_widget,
-                                    AnchorType anchor_type,
-                                    AnchorAlignment anchor_alignment) = 0;
+    virtual gfx::Rect GetAnchorRect(
+        views::Widget* anchor_widget,
+        AnchorType anchor_type,
+        AnchorAlignment anchor_alignment) const = 0;
 
     // Called when a bubble wants to hide/destroy itself (e.g. last visible
     // child view was closed).
@@ -153,12 +154,12 @@
   virtual void GetWidgetHitTestMask(gfx::Path* mask) const OVERRIDE;
 
   // Overridden from views::BubbleDelegateView.
-  virtual gfx::Rect GetAnchorRect() OVERRIDE;
+  virtual gfx::Rect GetAnchorRect() const OVERRIDE;
 
   // Overridden from views::View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual gfx::Size GetMaximumSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
   virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE;
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
diff --git a/ui/views/color_chooser/color_chooser_view.cc b/ui/views/color_chooser/color_chooser_view.cc
index 3108228..8c283da8 100644
--- a/ui/views/color_chooser/color_chooser_view.cc
+++ b/ui/views/color_chooser/color_chooser_view.cc
@@ -126,7 +126,7 @@
   virtual void ProcessEventAtLocation(const gfx::Point& point) OVERRIDE;
 
   // View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
   ColorChooserView* chooser_view_;
@@ -164,7 +164,7 @@
   SchedulePaint();
 }
 
-gfx::Size ColorChooserView::HueView::GetPreferredSize() {
+gfx::Size ColorChooserView::HueView::GetPreferredSize() const {
   // We put indicators on the both sides of the hue bar.
   return gfx::Size(kHueBarWidth + kHueIndicatorSize * 2 + kBorderWidth * 2,
                    kSaturationValueSize + kBorderWidth * 2);
@@ -238,7 +238,7 @@
   virtual void ProcessEventAtLocation(const gfx::Point& point) OVERRIDE;
 
   // View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
   ColorChooserView* chooser_view_;
@@ -292,7 +292,7 @@
   chooser_view_->OnSaturationValueChosen(saturation, value);
 }
 
-gfx::Size ColorChooserView::SaturationValueView::GetPreferredSize() {
+gfx::Size ColorChooserView::SaturationValueView::GetPreferredSize() const {
   return gfx::Size(kSaturationValueSize + kBorderWidth * 2,
                    kSaturationValueSize + kBorderWidth * 2);
 }
diff --git a/ui/views/controls/button/image_button.cc b/ui/views/controls/button/image_button.cc
index 8a42e16..ecbd4a1 100644
--- a/ui/views/controls/button/image_button.cc
+++ b/ui/views/controls/button/image_button.cc
@@ -74,7 +74,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // ImageButton, View overrides:
 
-gfx::Size ImageButton::GetPreferredSize() {
+gfx::Size ImageButton::GetPreferredSize() const {
   gfx::Size size = preferred_size_;
   if (!images_[STATE_NORMAL].isNull()) {
     size = gfx::Size(images_[STATE_NORMAL].width(),
diff --git a/ui/views/controls/button/image_button.h b/ui/views/controls/button/image_button.h
index 9c7d72688..fc02b8a 100644
--- a/ui/views/controls/button/image_button.h
+++ b/ui/views/controls/button/image_button.h
@@ -69,7 +69,7 @@
   }
 
   // Overridden from View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
diff --git a/ui/views/controls/button/label_button.cc b/ui/views/controls/button/label_button.cc
index 21dd71c..fd9d564 100644
--- a/ui/views/controls/button/label_button.cc
+++ b/ui/views/controls/button/label_button.cc
@@ -173,7 +173,7 @@
   focus_painter_ = focus_painter.Pass();
 }
 
-gfx::Size LabelButton::GetPreferredSize() {
+gfx::Size LabelButton::GetPreferredSize() const {
   // Use a temporary label copy for sizing to avoid calculation side-effects.
   Label label(GetText(), cached_normal_font_list_);
   label.SetMultiLine(GetTextMultiLine());
diff --git a/ui/views/controls/button/label_button.h b/ui/views/controls/button/label_button.h
index dc34b7a4..b9a73f23 100644
--- a/ui/views/controls/button/label_button.h
+++ b/ui/views/controls/button/label_button.h
@@ -75,7 +75,7 @@
 
   // View:
   virtual void SetBorder(scoped_ptr<Border> border) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
 
@@ -148,7 +148,7 @@
   bool explicitly_set_colors_[STATE_COUNT];
 
   // |min_size_| increases monotonically with the preferred size.
-  gfx::Size min_size_;
+  mutable gfx::Size min_size_;
   // |max_size_| may be set to clamp the preferred size.
   gfx::Size max_size_;
 
diff --git a/ui/views/controls/button/menu_button.cc b/ui/views/controls/button/menu_button.cc
index bd3efa4..dcfed7e 100644
--- a/ui/views/controls/button/menu_button.cc
+++ b/ui/views/controls/button/menu_button.cc
@@ -146,7 +146,7 @@
 //
 ////////////////////////////////////////////////////////////////////////////////
 
-gfx::Size MenuButton::GetPreferredSize() {
+gfx::Size MenuButton::GetPreferredSize() const {
   gfx::Size prefsize = TextButton::GetPreferredSize();
   if (show_menu_marker_) {
     prefsize.Enlarge(menu_marker_->width() + kMenuMarkerPaddingLeft +
diff --git a/ui/views/controls/button/menu_button.h b/ui/views/controls/button/menu_button.h
index 4039582..1ca6de0 100644
--- a/ui/views/controls/button/menu_button.h
+++ b/ui/views/controls/button/menu_button.h
@@ -54,7 +54,7 @@
   virtual void PaintButton(gfx::Canvas* canvas, PaintButtonMode mode) OVERRIDE;
 
   // Overridden from View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
   virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE;
diff --git a/ui/views/controls/button/text_button.cc b/ui/views/controls/button/text_button.cc
index be1d2492..bf12f8e0 100644
--- a/ui/views/controls/button/text_button.cc
+++ b/ui/views/controls/button/text_button.cc
@@ -276,7 +276,7 @@
   }
 }
 
-gfx::Size TextButtonBase::GetPreferredSize() {
+gfx::Size TextButtonBase::GetPreferredSize() const {
   gfx::Insets insets = GetInsets();
 
   // Use the max size to set the button boundaries.
@@ -296,7 +296,7 @@
   return prefsize;
 }
 
-int TextButtonBase::GetHeightForWidth(int w) {
+int TextButtonBase::GetHeightForWidth(int w) const {
   if (!multi_line_)
     return View::GetHeightForWidth(w);
 
@@ -347,7 +347,8 @@
   }
 }
 
-void TextButtonBase::CalculateTextSize(gfx::Size* text_size, int max_width) {
+void TextButtonBase::CalculateTextSize(gfx::Size* text_size,
+                                       int max_width) const {
   int h = font_list_.GetHeight();
   int w = multi_line_ ? max_width : 0;
   int flags = ComputeCanvasStringFlags();
@@ -481,7 +482,7 @@
   OnPaintText(canvas, mode);
 }
 
-gfx::Size TextButtonBase::GetMinimumSize() {
+gfx::Size TextButtonBase::GetMinimumSize() const {
   return max_text_size_;
 }
 
@@ -597,7 +598,7 @@
   SchedulePaint();
 }
 
-gfx::Size TextButton::GetPreferredSize() {
+gfx::Size TextButton::GetPreferredSize() const {
   gfx::Size prefsize(TextButtonBase::GetPreferredSize());
   prefsize.Enlarge(icon_.width(), 0);
   prefsize.set_height(std::max(prefsize.height(), icon_.height()));
diff --git a/ui/views/controls/button/text_button.h b/ui/views/controls/button/text_button.h
index 209d6e11..49c4f3f 100644
--- a/ui/views/controls/button/text_button.h
+++ b/ui/views/controls/button/text_button.h
@@ -161,9 +161,9 @@
   virtual void PaintButton(gfx::Canvas* canvas, PaintButtonMode mode);
 
   // Overridden from View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
-  virtual int GetHeightForWidth(int w) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int w) const OVERRIDE;
   virtual void OnEnabledChanged() OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
   virtual void OnBoundsChanged(const gfx::Rect& previous_bounds) OVERRIDE;
@@ -182,7 +182,7 @@
   void UpdateTextSize();
 
   // Calculate the size of the text size without setting any of the members.
-  void CalculateTextSize(gfx::Size* text_size, int max_width);
+  void CalculateTextSize(gfx::Size* text_size, int max_width) const;
 
   // Paint the button's text into the specified canvas. If |mode| is
   // |PB_FOR_DRAG|, the function paints a drag image representation. Derived
@@ -233,7 +233,7 @@
   base::string16 text_;
 
   // The size of the text string.
-  gfx::Size text_size_;
+  mutable gfx::Size text_size_;
 
   // Track the size of the largest text string seen so far, so that
   // changing text_ will not resize the button boundary.
@@ -326,7 +326,7 @@
   void set_full_justification(bool full_justification);
 
   // Overridden from View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
 
   // Overridden from TextButtonBase:
diff --git a/ui/views/controls/combobox/combobox.cc b/ui/views/controls/combobox/combobox.cc
index 41cb16df..a643cb4 100644
--- a/ui/views/controls/combobox/combobox.cc
+++ b/ui/views/controls/combobox/combobox.cc
@@ -378,7 +378,7 @@
   OnPerformAction();
 }
 
-bool Combobox::GetAccelerator(int id, ui::Accelerator* accel) {
+bool Combobox::GetAccelerator(int id, ui::Accelerator* accel) const {
   return false;
 }
 
@@ -405,10 +405,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // Combobox, View overrides:
 
-gfx::Size Combobox::GetPreferredSize() {
-  if (content_size_.IsEmpty())
-    UpdateFromModel();
-
+gfx::Size Combobox::GetPreferredSize() const {
   // The preferred size will drive the local bounds which in turn is used to set
   // the minimum width for the dropdown list.
   gfx::Insets insets = GetInsets();
diff --git a/ui/views/controls/combobox/combobox.h b/ui/views/controls/combobox/combobox.h
index 9b527d87..2c96176 100644
--- a/ui/views/controls/combobox/combobox.h
+++ b/ui/views/controls/combobox/combobox.h
@@ -93,7 +93,7 @@
   bool invalid() const { return invalid_; }
 
   // Overridden from View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
   virtual bool SkipDefaultKeyEventProcessing(const ui::KeyEvent& e) OVERRIDE;
   virtual bool OnKeyPressed(const ui::KeyEvent& e) OVERRIDE;
@@ -109,7 +109,8 @@
   virtual bool IsItemChecked(int id) const OVERRIDE;
   virtual bool IsCommandEnabled(int id) const OVERRIDE;
   virtual void ExecuteCommand(int id) OVERRIDE;
-  virtual bool GetAccelerator(int id, ui::Accelerator* accelerator) OVERRIDE;
+  virtual bool GetAccelerator(int id,
+                              ui::Accelerator* accelerator) const OVERRIDE;
 
   // Overridden from PrefixDelegate:
   virtual int GetRowCount() OVERRIDE;
@@ -200,7 +201,7 @@
   base::Time closed_time_;
 
   // The maximum dimensions of the content in the dropdown
-  gfx::Size content_size_;
+  mutable gfx::Size content_size_;
 
   // The painters or images that are used when |style_| is STYLE_BUTTONS. The
   // first index means the state of unfocused or focused.
diff --git a/ui/views/controls/image_view.cc b/ui/views/controls/image_view.cc
index 8ee1ad9..8ca7536 100644
--- a/ui/views/controls/image_view.cc
+++ b/ui/views/controls/image_view.cc
@@ -70,7 +70,7 @@
   PreferredSizeChanged();
 }
 
-bool ImageView::GetImageSize(gfx::Size* image_size) {
+bool ImageView::GetImageSize(gfx::Size* image_size) const {
   DCHECK(image_size);
   if (image_size_set_)
     *image_size = image_size_;
@@ -91,7 +91,7 @@
   focus_painter_ = focus_painter.Pass();
 }
 
-gfx::Size ImageView::GetPreferredSize() {
+gfx::Size ImageView::GetPreferredSize() const {
   gfx::Insets insets = GetInsets();
   if (image_size_set_) {
     gfx::Size image_size;
diff --git a/ui/views/controls/image_view.h b/ui/views/controls/image_view.h
index d82cf98..329981e 100644
--- a/ui/views/controls/image_view.h
+++ b/ui/views/controls/image_view.h
@@ -55,7 +55,7 @@
   // Return the preferred size for the receiving view. Returns false if the
   // preferred size is not defined, which means that the view uses the image
   // size.
-  bool GetImageSize(gfx::Size* image_size);
+  bool GetImageSize(gfx::Size* image_size) const;
 
   // Returns the actual bounds of the visible image inside the view.
   gfx::Rect GetImageBounds() const;
@@ -80,7 +80,7 @@
   void SetFocusPainter(scoped_ptr<Painter> focus_painter);
 
   // Overriden from View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnFocus() OVERRIDE;
   virtual void OnBlur() OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
diff --git a/ui/views/controls/label.cc b/ui/views/controls/label.cc
index 717d2e0..7028df5 100644
--- a/ui/views/controls/label.cc
+++ b/ui/views/controls/label.cc
@@ -218,7 +218,7 @@
   return GetInsets().top() + font_list_.GetBaseline();
 }
 
-gfx::Size Label::GetPreferredSize() {
+gfx::Size Label::GetPreferredSize() const {
   // Return a size of (0, 0) if the label is not visible and if the
   // collapse_when_hidden_ flag is set.
   // TODO(munjal): This logic probably belongs to the View class. But for now,
@@ -233,7 +233,7 @@
   return size;
 }
 
-gfx::Size Label::GetMinimumSize() {
+gfx::Size Label::GetMinimumSize() const {
   gfx::Size text_size(GetTextSize());
   if ((!visible() && collapse_when_hidden_) || text_size.IsEmpty())
     return gfx::Size();
@@ -247,7 +247,7 @@
   return size;
 }
 
-int Label::GetHeightForWidth(int w) {
+int Label::GetHeightForWidth(int w) const {
   if (!is_multi_line_)
     return View::GetHeightForWidth(w);
 
diff --git a/ui/views/controls/label.h b/ui/views/controls/label.h
index 17251f3..45f01988 100644
--- a/ui/views/controls/label.h
+++ b/ui/views/controls/label.h
@@ -176,13 +176,13 @@
   virtual gfx::Insets GetInsets() const OVERRIDE;
   virtual int GetBaseline() const OVERRIDE;
   // Overridden to compute the size required to display this label.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   // Returns the width of an ellipsis if the label is non-empty, or 0 otherwise.
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   // Returns the height necessary to display this label with the provided width.
   // This method is used to layout multi-line labels. It is equivalent to
   // GetPreferredSize().height() if the receiver is not multi-line.
-  virtual int GetHeightForWidth(int w) OVERRIDE;
+  virtual int GetHeightForWidth(int w) const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
   virtual View* GetTooltipHandlerForPoint(const gfx::Point& point) OVERRIDE;
   virtual bool HitTestRect(const gfx::Rect& rect) const OVERRIDE;
@@ -297,8 +297,8 @@
   bool has_shadow_;
 
   // The cached heights to avoid recalculation in GetHeightForWidth().
-  std::vector<gfx::Size> cached_heights_;
-  int cached_heights_cursor_;
+  mutable std::vector<gfx::Size> cached_heights_;
+  mutable int cached_heights_cursor_;
 
   DISALLOW_COPY_AND_ASSIGN(Label);
 };
diff --git a/ui/views/controls/menu/menu_delegate.cc b/ui/views/controls/menu/menu_delegate.cc
index 34690237..0793e39 100644
--- a/ui/views/controls/menu/menu_delegate.cc
+++ b/ui/views/controls/menu/menu_delegate.cc
@@ -45,7 +45,7 @@
   return base::string16();
 }
 
-bool MenuDelegate::GetAccelerator(int id, ui::Accelerator* accelerator) {
+bool MenuDelegate::GetAccelerator(int id, ui::Accelerator* accelerator) const {
   return false;
 }
 
diff --git a/ui/views/controls/menu/menu_delegate.h b/ui/views/controls/menu/menu_delegate.h
index 24b708d..7f4b74f 100644
--- a/ui/views/controls/menu/menu_delegate.h
+++ b/ui/views/controls/menu/menu_delegate.h
@@ -103,7 +103,7 @@
 
   // If there is an accelerator for the menu item with id |id| it is set in
   // |accelerator| and true is returned.
-  virtual bool GetAccelerator(int id, ui::Accelerator* accelerator);
+  virtual bool GetAccelerator(int id, ui::Accelerator* accelerator) const;
 
   // Shows the context menu with the specified id. This is invoked when the
   // user does the appropriate gesture to show a context menu. The id
diff --git a/ui/views/controls/menu/menu_item_view.cc b/ui/views/controls/menu/menu_item_view.cc
index fc681fd..0583ff1 100644
--- a/ui/views/controls/menu/menu_item_view.cc
+++ b/ui/views/controls/menu/menu_item_view.cc
@@ -403,13 +403,13 @@
   PaintButton(canvas, PB_NORMAL);
 }
 
-gfx::Size MenuItemView::GetPreferredSize() {
+gfx::Size MenuItemView::GetPreferredSize() const {
   const MenuItemDimensions& dimensions(GetDimensions());
   return gfx::Size(dimensions.standard_width + dimensions.children_width,
                    dimensions.height);
 }
 
-const MenuItemView::MenuItemDimensions& MenuItemView::GetDimensions() {
+const MenuItemView::MenuItemDimensions& MenuItemView::GetDimensions() const {
   if (!is_dimensions_valid())
     dimensions_ = CalculateDimensions();
   DCHECK(is_dimensions_valid());
@@ -689,7 +689,7 @@
   return flags;
 }
 
-const gfx::FontList& MenuItemView::GetFontList() {
+const gfx::FontList& MenuItemView::GetFontList() const {
   const MenuDelegate* delegate = GetDelegate();
   if (delegate) {
     const gfx::FontList* font_list = delegate->GetLabelFontList(GetCommand());
@@ -895,38 +895,36 @@
   }
 }
 
-int MenuItemView::GetTopMargin() {
+int MenuItemView::GetTopMargin() const {
   if (top_margin_ >= 0)
     return top_margin_;
 
-  MenuItemView* root = GetRootMenuItem();
+  const MenuItemView* root = GetRootMenuItem();
   return root && root->has_icons_
       ? GetMenuConfig().item_top_margin :
         GetMenuConfig().item_no_icon_top_margin;
 }
 
-int MenuItemView::GetBottomMargin() {
+int MenuItemView::GetBottomMargin() const {
   if (bottom_margin_ >= 0)
     return bottom_margin_;
 
-  MenuItemView* root = GetRootMenuItem();
+  const MenuItemView* root = GetRootMenuItem();
   return root && root->has_icons_
       ? GetMenuConfig().item_bottom_margin :
         GetMenuConfig().item_no_icon_bottom_margin;
 }
 
-gfx::Size MenuItemView::GetChildPreferredSize() {
+gfx::Size MenuItemView::GetChildPreferredSize() const {
   if (!has_children())
     return gfx::Size();
 
-  if (IsContainer()) {
-    View* child = child_at(0);
-    return child->GetPreferredSize();
-  }
+  if (IsContainer())
+    return child_at(0)->GetPreferredSize();
 
   int width = 0;
   for (int i = 0; i < child_count(); ++i) {
-    View* child = child_at(i);
+    const View* child = child_at(i);
     if (icon_view_ && (icon_view_ == child))
       continue;
     if (i)
@@ -942,7 +940,7 @@
   return gfx::Size(width, height);
 }
 
-MenuItemView::MenuItemDimensions MenuItemView::CalculateDimensions() {
+MenuItemView::MenuItemDimensions MenuItemView::CalculateDimensions() const {
   gfx::Size child_size = GetChildPreferredSize();
 
   MenuItemDimensions dimensions;
@@ -1000,7 +998,7 @@
   return dimensions;
 }
 
-int MenuItemView::GetLabelStartForThisItem() {
+int MenuItemView::GetLabelStartForThisItem() const {
   int label_start = label_start_ + left_icon_margin_ + right_icon_margin_;
   if ((type_ == CHECKBOX || type_ == RADIO) && icon_view_) {
     label_start += icon_view_->size().width() +
@@ -1009,7 +1007,7 @@
   return label_start;
 }
 
-base::string16 MenuItemView::GetMinorText() {
+base::string16 MenuItemView::GetMinorText() const {
   if (id() == kEmptyMenuItemViewID) {
     // Don't query the delegate for menus that represent no children.
     return base::string16();
diff --git a/ui/views/controls/menu/menu_item_view.h b/ui/views/controls/menu/menu_item_view.h
index d52a951..4f0ea44 100644
--- a/ui/views/controls/menu/menu_item_view.h
+++ b/ui/views/controls/menu/menu_item_view.h
@@ -263,10 +263,10 @@
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
   // Returns the preferred size of this item.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // Return the preferred dimensions of the item in pixel.
-  const MenuItemDimensions& GetDimensions();
+  const MenuItemDimensions& GetDimensions() const;
 
   // Returns the object responsible for controlling showing the menu.
   MenuController* GetMenuController();
@@ -330,11 +330,11 @@
   virtual const char* GetClassName() const OVERRIDE;
 
   // Returns the preferred size (and padding) of any children.
-  virtual gfx::Size GetChildPreferredSize();
+  virtual gfx::Size GetChildPreferredSize() const;
 
   // Returns the various margins.
-  int GetTopMargin();
-  int GetBottomMargin();
+  int GetTopMargin() const;
+  int GetBottomMargin() const;
 
  private:
   friend class internal::MenuRunnerImpl;  // For access to ~MenuItemView.
@@ -362,7 +362,7 @@
   int GetDrawStringFlags();
 
   // Returns the font list to use for menu text.
-  const gfx::FontList& GetFontList();
+  const gfx::FontList& GetFontList() const;
 
   // If this menu item has no children a child is added showing it has no
   // children. Otherwise AddEmtpyMenus is recursively invoked on child menu
@@ -389,13 +389,13 @@
 
   // Returns the text that should be displayed on the end (right) of the menu
   // item. This will be the accelerator (if one exists), otherwise |subtitle_|.
-  base::string16 GetMinorText();
+  base::string16 GetMinorText() const;
 
   // Calculates and returns the MenuItemDimensions.
-  MenuItemDimensions CalculateDimensions();
+  MenuItemDimensions CalculateDimensions() const;
 
   // Get the horizontal position at which to draw the menu item's label.
-  int GetLabelStartForThisItem();
+  int GetLabelStartForThisItem() const;
 
   // Used by MenuController to cache the menu position in use by the
   // active menu.
@@ -488,7 +488,7 @@
 
   // Cached dimensions. This is cached as text sizing calculations are quite
   // costly.
-  MenuItemDimensions dimensions_;
+  mutable MenuItemDimensions dimensions_;
 
   // Removed items to be deleted in ChildrenChanged().
   std::vector<View*> removed_items_;
@@ -499,8 +499,8 @@
 
   // Horizontal icon margins in pixels, which can differ between MenuItems.
   // These values will be set in the layout process.
-  int left_icon_margin_;
-  int right_icon_margin_;
+  mutable int left_icon_margin_;
+  mutable int right_icon_margin_;
 
   // |menu_position_| is the requested position with respect to the bounds.
   // |actual_menu_position_| is used by the controller to cache the
diff --git a/ui/views/controls/menu/menu_model_adapter.cc b/ui/views/controls/menu/menu_model_adapter.cc
index 51edb03..18c42699 100644
--- a/ui/views/controls/menu/menu_model_adapter.cc
+++ b/ui/views/controls/menu/menu_model_adapter.cc
@@ -162,7 +162,7 @@
 }
 
 bool MenuModelAdapter::GetAccelerator(int id,
-                                      ui::Accelerator* accelerator) {
+                                      ui::Accelerator* accelerator) const {
   ui::MenuModel* model = menu_model_;
   int index = 0;
   if (ui::MenuModel::GetModelAndIndexForCommandId(id, &model, &index))
diff --git a/ui/views/controls/menu/menu_model_adapter.h b/ui/views/controls/menu/menu_model_adapter.h
index 644864d..8bc7ca3 100644
--- a/ui/views/controls/menu/menu_model_adapter.h
+++ b/ui/views/controls/menu/menu_model_adapter.h
@@ -67,7 +67,7 @@
   virtual bool IsTriggerableEvent(MenuItemView* source,
                                   const ui::Event& e) OVERRIDE;
   virtual bool GetAccelerator(int id,
-                              ui::Accelerator* accelerator) OVERRIDE;
+                              ui::Accelerator* accelerator) const OVERRIDE;
   virtual base::string16 GetLabel(int id) const OVERRIDE;
   virtual const gfx::FontList* GetLabelFontList(int id) const OVERRIDE;
   virtual bool IsCommandEnabled(int id) const OVERRIDE;
diff --git a/ui/views/controls/menu/menu_scroll_view_container.cc b/ui/views/controls/menu/menu_scroll_view_container.cc
index 9201c4a..451bd15 100644
--- a/ui/views/controls/menu/menu_scroll_view_container.cc
+++ b/ui/views/controls/menu/menu_scroll_view_container.cc
@@ -40,7 +40,7 @@
         pref_height_(MenuItemView::pref_menu_height()) {
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(
         host_->GetMenuItem()->GetMenuConfig().scroll_arrow_height * 2 - 1,
         pref_height_);
@@ -243,7 +243,7 @@
   scroll_view_->Layout();
 }
 
-gfx::Size MenuScrollViewContainer::GetPreferredSize() {
+gfx::Size MenuScrollViewContainer::GetPreferredSize() const {
   gfx::Size prefsize = scroll_view_->GetContents()->GetPreferredSize();
   gfx::Insets insets = GetInsets();
   prefsize.Enlarge(insets.width(), insets.height());
diff --git a/ui/views/controls/menu/menu_scroll_view_container.h b/ui/views/controls/menu/menu_scroll_view_container.h
index a2611ab..dc7c1ac 100644
--- a/ui/views/controls/menu/menu_scroll_view_container.h
+++ b/ui/views/controls/menu/menu_scroll_view_container.h
@@ -33,7 +33,7 @@
   // View overrides.
   virtual void OnPaintBackground(gfx::Canvas* canvas) OVERRIDE;
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
 
  protected:
diff --git a/ui/views/controls/menu/menu_separator.h b/ui/views/controls/menu/menu_separator.h
index 0967c4a..da459e2 100644
--- a/ui/views/controls/menu/menu_separator.h
+++ b/ui/views/controls/menu/menu_separator.h
@@ -21,11 +21,11 @@
 
   // View overrides.
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   void OnPaintAura(gfx::Canvas* canvas);
-  gfx::Size GetPreferredSizeAura();
+  gfx::Size GetPreferredSizeAura() const;
 
   // The type of the separator.
   const ui::MenuSeparatorType type_;
diff --git a/ui/views/controls/menu/menu_separator_views.cc b/ui/views/controls/menu/menu_separator_views.cc
index affbae4..34f85453 100644
--- a/ui/views/controls/menu/menu_separator_views.cc
+++ b/ui/views/controls/menu/menu_separator_views.cc
@@ -23,7 +23,7 @@
   OnPaintAura(canvas);
 }
 
-gfx::Size MenuSeparator::GetPreferredSize() {
+gfx::Size MenuSeparator::GetPreferredSize() const {
   return GetPreferredSizeAura();
 }
 #endif
@@ -47,7 +47,7 @@
                        ui::NativeTheme::kColorId_MenuSeparatorColor));
 }
 
-gfx::Size MenuSeparator::GetPreferredSizeAura() {
+gfx::Size MenuSeparator::GetPreferredSizeAura() const {
   const MenuConfig& menu_config = parent_menu_item_->GetMenuConfig();
   int height = menu_config.separator_height;
   switch(type_) {
diff --git a/ui/views/controls/menu/menu_separator_win.cc b/ui/views/controls/menu/menu_separator_win.cc
index 87d0a2b..ccbcaed 100644
--- a/ui/views/controls/menu/menu_separator_win.cc
+++ b/ui/views/controls/menu/menu_separator_win.cc
@@ -47,7 +47,7 @@
       ui::NativeTheme::kNormal, separator_bounds, extra);
 }
 
-gfx::Size MenuSeparator::GetPreferredSize() {
+gfx::Size MenuSeparator::GetPreferredSize() const {
   const MenuConfig& config = parent_menu_item_->GetMenuConfig();
 
   if (config.native_theme == ui::NativeThemeAura::instance())
diff --git a/ui/views/controls/menu/submenu_view.cc b/ui/views/controls/menu/submenu_view.cc
index a79f076..a6ef56a 100644
--- a/ui/views/controls/menu/submenu_view.cc
+++ b/ui/views/controls/menu/submenu_view.cc
@@ -121,7 +121,7 @@
   }
 }
 
-gfx::Size SubmenuView::GetPreferredSize() {
+gfx::Size SubmenuView::GetPreferredSize() const {
   if (!has_children())
     return gfx::Size();
 
@@ -132,11 +132,11 @@
   int max_simple_width = 0;
   int height = 0;
   for (int i = 0; i < child_count(); ++i) {
-    View* child = child_at(i);
+    const View* child = child_at(i);
     if (!child->visible())
       continue;
     if (child->id() == MenuItemView::kMenuItemViewID) {
-      MenuItemView* menu = static_cast<MenuItemView*>(child);
+      const MenuItemView* menu = static_cast<const MenuItemView*>(child);
       const MenuItemView::MenuItemDimensions& dimensions =
           menu->GetDimensions();
       max_simple_width = std::max(
diff --git a/ui/views/controls/menu/submenu_view.h b/ui/views/controls/menu/submenu_view.h
index 6cfefad9..1b7d3624 100644
--- a/ui/views/controls/menu/submenu_view.h
+++ b/ui/views/controls/menu/submenu_view.h
@@ -55,7 +55,7 @@
   // Positions and sizes the child views. This tiles the views vertically,
   // giving each child the available width.
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // Override from View.
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
@@ -201,7 +201,7 @@
   MenuScrollViewContainer* scroll_view_container_;
 
   // See description above getter.
-  int max_minor_text_width_;
+  mutable int max_minor_text_width_;
 
   // Minimum width returned in GetPreferredSize().
   int minimum_preferred_width_;
diff --git a/ui/views/controls/native/native_view_host.cc b/ui/views/controls/native/native_view_host.cc
index 4bf4099c..c1b230c4 100644
--- a/ui/views/controls/native/native_view_host.cc
+++ b/ui/views/controls/native/native_view_host.cc
@@ -65,7 +65,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // NativeViewHost, View overrides:
 
-gfx::Size NativeViewHost::GetPreferredSize() {
+gfx::Size NativeViewHost::GetPreferredSize() const {
   return preferred_size_;
 }
 
diff --git a/ui/views/controls/native/native_view_host.h b/ui/views/controls/native/native_view_host.h
index 2ba7952d..d5dd9b59 100644
--- a/ui/views/controls/native/native_view_host.h
+++ b/ui/views/controls/native/native_view_host.h
@@ -77,7 +77,7 @@
   void NativeViewDestroyed();
 
   // Overridden from View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
   virtual void VisibilityChanged(View* starting_from, bool is_visible) OVERRIDE;
diff --git a/ui/views/controls/progress_bar.cc b/ui/views/controls/progress_bar.cc
index e9e894b2..9105c80 100644
--- a/ui/views/controls/progress_bar.cc
+++ b/ui/views/controls/progress_bar.cc
@@ -183,7 +183,7 @@
   state->AddStateFlag(ui::AX_STATE_READ_ONLY);
 }
 
-gfx::Size ProgressBar::GetPreferredSize() {
+gfx::Size ProgressBar::GetPreferredSize() const {
   gfx::Size pref_size(100, 11);
   gfx::Insets insets = GetInsets();
   pref_size.Enlarge(insets.width(), insets.height());
diff --git a/ui/views/controls/progress_bar.h b/ui/views/controls/progress_bar.h
index 2063094..b6d3851 100644
--- a/ui/views/controls/progress_bar.h
+++ b/ui/views/controls/progress_bar.h
@@ -46,7 +46,7 @@
   static const char kViewClassName[];
 
   // Overridden from View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
diff --git a/ui/views/controls/scroll_view.cc b/ui/views/controls/scroll_view.cc
index e20f3968..51db071 100644
--- a/ui/views/controls/scroll_view.cc
+++ b/ui/views/controls/scroll_view.cc
@@ -187,7 +187,7 @@
   vert_sb_ = vert_sb;
 }
 
-gfx::Size ScrollView::GetPreferredSize() {
+gfx::Size ScrollView::GetPreferredSize() const {
   if (!is_bounded())
     return View::GetPreferredSize();
 
@@ -199,7 +199,7 @@
   return size;
 }
 
-int ScrollView::GetHeightForWidth(int width) {
+int ScrollView::GetHeightForWidth(int width) const {
   if (!is_bounded())
     return View::GetHeightForWidth(width);
 
diff --git a/ui/views/controls/scroll_view.h b/ui/views/controls/scroll_view.h
index 7e239f0..c1c1871 100644
--- a/ui/views/controls/scroll_view.h
+++ b/ui/views/controls/scroll_view.h
@@ -58,7 +58,7 @@
   void ClipHeightTo(int min_height, int max_height);
 
   // Returns whether or not the ScrollView is bounded (as set by ClipHeightTo).
-  bool is_bounded() { return max_height_ >= 0 && min_height_ >= 0; }
+  bool is_bounded() const { return max_height_ >= 0 && min_height_ >= 0; }
 
   // Retrieves the width/height of scrollbars. These return 0 if the scrollbar
   // has not yet been created.
@@ -75,8 +75,8 @@
   void SetVerticalScrollBar(ScrollBar* vert_sb);
 
   // View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual int GetHeightForWidth(int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual int GetHeightForWidth(int width) const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
   virtual bool OnMouseWheel(const ui::MouseWheelEvent& e) OVERRIDE;
diff --git a/ui/views/controls/scroll_view_unittest.cc b/ui/views/controls/scroll_view_unittest.cc
index 8fcd7130..8f34377 100644
--- a/ui/views/controls/scroll_view_unittest.cc
+++ b/ui/views/controls/scroll_view_unittest.cc
@@ -26,7 +26,9 @@
     PreferredSizeChanged();
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE { return preferred_size_; }
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
+    return preferred_size_;
+  }
 
   virtual void Layout() OVERRIDE {
     gfx::Size pref = GetPreferredSize();
diff --git a/ui/views/controls/scrollbar/base_scroll_bar.h b/ui/views/controls/scrollbar/base_scroll_bar.h
index 2ca7d6c..068ad4d 100644
--- a/ui/views/controls/scrollbar/base_scroll_bar.h
+++ b/ui/views/controls/scrollbar/base_scroll_bar.h
@@ -64,7 +64,7 @@
                            CustomButton::ButtonState new_state);
 
   // View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE = 0;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE = 0;
   virtual void Layout() OVERRIDE = 0;
   virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE;
diff --git a/ui/views/controls/scrollbar/base_scroll_bar_thumb.h b/ui/views/controls/scrollbar/base_scroll_bar_thumb.h
index 0859fa9..c755441 100644
--- a/ui/views/controls/scrollbar/base_scroll_bar_thumb.h
+++ b/ui/views/controls/scrollbar/base_scroll_bar_thumb.h
@@ -44,7 +44,7 @@
   int GetPosition() const;
 
   // View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE = 0;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE = 0;
 
  protected:
   // View overrides:
diff --git a/ui/views/controls/scrollbar/kennedy_scroll_bar.cc b/ui/views/controls/scrollbar/kennedy_scroll_bar.cc
index f263068..b3d1e6a3 100644
--- a/ui/views/controls/scrollbar/kennedy_scroll_bar.cc
+++ b/ui/views/controls/scrollbar/kennedy_scroll_bar.cc
@@ -28,7 +28,7 @@
 
  protected:
   // View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
  private:
@@ -42,7 +42,7 @@
 KennedyScrollBarThumb::~KennedyScrollBarThumb() {
 }
 
-gfx::Size KennedyScrollBarThumb::GetPreferredSize() {
+gfx::Size KennedyScrollBarThumb::GetPreferredSize() const {
   return gfx::Size(kThumbMinimumSize, kThumbMinimumSize);
 }
 
@@ -77,7 +77,7 @@
   return kScrollbarWidth;
 }
 
-gfx::Size KennedyScrollBar::GetPreferredSize() {
+gfx::Size KennedyScrollBar::GetPreferredSize() const {
   return GetTrackBounds().size();
 }
 
diff --git a/ui/views/controls/scrollbar/kennedy_scroll_bar.h b/ui/views/controls/scrollbar/kennedy_scroll_bar.h
index 3329483..ace3fae 100644
--- a/ui/views/controls/scrollbar/kennedy_scroll_bar.h
+++ b/ui/views/controls/scrollbar/kennedy_scroll_bar.h
@@ -25,7 +25,7 @@
   virtual int GetLayoutSize() const OVERRIDE;
 
   // View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
diff --git a/ui/views/controls/scrollbar/native_scroll_bar.cc b/ui/views/controls/scrollbar/native_scroll_bar.cc
index 9bb2e5f..7b45dd6 100644
--- a/ui/views/controls/scrollbar/native_scroll_bar.cc
+++ b/ui/views/controls/scrollbar/native_scroll_bar.cc
@@ -42,7 +42,7 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 // NativeScrollBar, View overrides:
-gfx::Size NativeScrollBar::GetPreferredSize() {
+gfx::Size NativeScrollBar::GetPreferredSize() const {
   if (native_wrapper_)
     return native_wrapper_->GetView()->GetPreferredSize();
   return gfx::Size();
diff --git a/ui/views/controls/scrollbar/native_scroll_bar.h b/ui/views/controls/scrollbar/native_scroll_bar.h
index 70d5a83d..058784d 100644
--- a/ui/views/controls/scrollbar/native_scroll_bar.h
+++ b/ui/views/controls/scrollbar/native_scroll_bar.h
@@ -40,7 +40,7 @@
   FRIEND_TEST_ALL_PREFIXES(NativeScrollBarTest, Scrolling);
 
   // Overridden from View.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) OVERRIDE;
diff --git a/ui/views/controls/scrollbar/native_scroll_bar_views.cc b/ui/views/controls/scrollbar/native_scroll_bar_views.cc
index a8402e5c..b4f83cc 100644
--- a/ui/views/controls/scrollbar/native_scroll_bar_views.cc
+++ b/ui/views/controls/scrollbar/native_scroll_bar_views.cc
@@ -32,7 +32,7 @@
   ScrollBarButton(ButtonListener* listener, Type type);
   virtual ~ScrollBarButton();
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE {
     return "ScrollBarButton";
   }
@@ -54,7 +54,7 @@
   explicit ScrollBarThumb(BaseScrollBar* scroll_bar);
   virtual ~ScrollBarThumb();
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE {
     return "ScrollBarThumb";
   }
@@ -83,7 +83,7 @@
 ScrollBarButton::~ScrollBarButton() {
 }
 
-gfx::Size ScrollBarButton::GetPreferredSize() {
+gfx::Size ScrollBarButton::GetPreferredSize() const {
   return GetNativeTheme()->GetPartSize(GetNativeThemePart(),
                                        GetNativeThemeState(),
                                        GetNativeThemeParams());
@@ -164,7 +164,7 @@
 ScrollBarThumb::~ScrollBarThumb() {
 }
 
-gfx::Size ScrollBarThumb::GetPreferredSize() {
+gfx::Size ScrollBarThumb::GetPreferredSize() const {
   return GetNativeTheme()->GetPartSize(GetNativeThemePart(),
                                        GetNativeThemeState(),
                                        GetNativeThemeParams());
@@ -292,7 +292,7 @@
   GetNativeTheme()->Paint(canvas->sk_canvas(), part_, state_, bounds, params_);
 }
 
-gfx::Size NativeScrollBarViews::GetPreferredSize() {
+gfx::Size NativeScrollBarViews::GetPreferredSize() const {
   const ui::NativeTheme* theme = native_scroll_bar_->GetNativeTheme();
   if (native_scroll_bar_->IsHorizontal())
     return gfx::Size(0, GetHorizontalScrollBarHeight(theme));
diff --git a/ui/views/controls/scrollbar/native_scroll_bar_views.h b/ui/views/controls/scrollbar/native_scroll_bar_views.h
index 72d1821..38dbe0b6 100644
--- a/ui/views/controls/scrollbar/native_scroll_bar_views.h
+++ b/ui/views/controls/scrollbar/native_scroll_bar_views.h
@@ -36,7 +36,7 @@
   // View overrides:
   virtual void Layout() OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
 
   // ScrollBar overrides:
diff --git a/ui/views/controls/scrollbar/overlay_scroll_bar.cc b/ui/views/controls/scrollbar/overlay_scroll_bar.cc
index ebce843..1396bd1 100644
--- a/ui/views/controls/scrollbar/overlay_scroll_bar.cc
+++ b/ui/views/controls/scrollbar/overlay_scroll_bar.cc
@@ -30,7 +30,7 @@
 
  protected:
   // View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
   // gfx::AnimationDelegate overrides:
@@ -53,7 +53,7 @@
 OverlayScrollBarThumb::~OverlayScrollBarThumb() {
 }
 
-gfx::Size OverlayScrollBarThumb::GetPreferredSize() {
+gfx::Size OverlayScrollBarThumb::GetPreferredSize() const {
   return gfx::Size(kThumbMinimumSize, kThumbMinimumSize);
 }
 
@@ -138,7 +138,7 @@
   BaseScrollBar::OnGestureEvent(event);
 }
 
-gfx::Size OverlayScrollBar::GetPreferredSize() {
+gfx::Size OverlayScrollBar::GetPreferredSize() const {
   return gfx::Size();
 }
 
diff --git a/ui/views/controls/scrollbar/overlay_scroll_bar.h b/ui/views/controls/scrollbar/overlay_scroll_bar.h
index b061da0..428a277 100644
--- a/ui/views/controls/scrollbar/overlay_scroll_bar.h
+++ b/ui/views/controls/scrollbar/overlay_scroll_bar.h
@@ -28,7 +28,7 @@
   virtual void OnMouseExitedScrollView(const ui::MouseEvent& event) OVERRIDE;
 
   // View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
diff --git a/ui/views/controls/separator.cc b/ui/views/controls/separator.cc
index 0dc7f21..a8fe6da7 100644
--- a/ui/views/controls/separator.cc
+++ b/ui/views/controls/separator.cc
@@ -28,7 +28,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // Separator, View overrides:
 
-gfx::Size Separator::GetPreferredSize() {
+gfx::Size Separator::GetPreferredSize() const {
   if (orientation_ == HORIZONTAL)
     return gfx::Size(width(), kSeparatorHeight);
   return gfx::Size(kSeparatorHeight, height());
diff --git a/ui/views/controls/separator.h b/ui/views/controls/separator.h
index 86e619a..6f45f8c 100644
--- a/ui/views/controls/separator.h
+++ b/ui/views/controls/separator.h
@@ -28,7 +28,7 @@
   virtual ~Separator();
 
   // Overridden from View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
   virtual void Paint(gfx::Canvas* canvas,
                      const views::CullSet& cull_set) OVERRIDE;
diff --git a/ui/views/controls/single_split_view.cc b/ui/views/controls/single_split_view.cc
index 5909ed1..fe50141 100644
--- a/ui/views/controls/single_split_view.cc
+++ b/ui/views/controls/single_split_view.cc
@@ -65,11 +65,11 @@
   state->name = accessible_name_;
 }
 
-gfx::Size SingleSplitView::GetPreferredSize() {
+gfx::Size SingleSplitView::GetPreferredSize() const {
   int width = 0;
   int height = 0;
   for (int i = 0; i < 2 && i < child_count(); ++i) {
-    View* view = child_at(i);
+    const View* view = child_at(i);
     gfx::Size pref = view->GetPreferredSize();
     if (is_horizontal_) {
       width += pref.width();
diff --git a/ui/views/controls/single_split_view.h b/ui/views/controls/single_split_view.h
index 144efe2..c03c8340 100644
--- a/ui/views/controls/single_split_view.h
+++ b/ui/views/controls/single_split_view.h
@@ -38,7 +38,7 @@
 
   // SingleSplitView's preferred size is the sum of the preferred widths
   // and the max of the heights.
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // Overriden to return a resize cursor when over the divider.
   virtual gfx::NativeCursor GetCursor(const ui::MouseEvent& event) OVERRIDE;
diff --git a/ui/views/controls/single_split_view_unittest.cc b/ui/views/controls/single_split_view_unittest.cc
index 3413bdb..cfea48e 100644
--- a/ui/views/controls/single_split_view_unittest.cc
+++ b/ui/views/controls/single_split_view_unittest.cc
@@ -64,10 +64,10 @@
 
  private:
   gfx::Size min_size_;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
 };
 
-gfx::Size MinimumSizedView::GetMinimumSize() {
+gfx::Size MinimumSizedView::GetMinimumSize() const {
   return min_size_;
 }
 
diff --git a/ui/views/controls/slider.cc b/ui/views/controls/slider.cc
index 4becf5f..e88073b 100644
--- a/ui/views/controls/slider.cc
+++ b/ui/views/controls/slider.cc
@@ -184,7 +184,7 @@
   }
 }
 
-gfx::Size Slider::GetPreferredSize() {
+gfx::Size Slider::GetPreferredSize() const {
   const int kSizeMajor = 200;
   const int kSizeMinor = 40;
 
diff --git a/ui/views/controls/slider.h b/ui/views/controls/slider.h
index d8918fa..ffee7c9 100644
--- a/ui/views/controls/slider.h
+++ b/ui/views/controls/slider.h
@@ -82,7 +82,7 @@
   void OnPaintFocus(gfx::Canvas* canvas);
 
   // views::View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
   virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
   virtual bool OnMouseDragged(const ui::MouseEvent& event) OVERRIDE;
diff --git a/ui/views/controls/styled_label.cc b/ui/views/controls/styled_label.cc
index 24d9862..e7ee56c 100644
--- a/ui/views/controls/styled_label.cc
+++ b/ui/views/controls/styled_label.cc
@@ -157,9 +157,15 @@
   return insets;
 }
 
-int StyledLabel::GetHeightForWidth(int w) {
-  if (w != calculated_size_.width())
-    calculated_size_ = CalculateAndDoLayout(w, true);
+int StyledLabel::GetHeightForWidth(int w) const {
+  if (w != calculated_size_.width()) {
+    // TODO(erg): Munge the const-ness of the style label. CalculateAndDoLayout
+    // doesn't actually make any changes to member variables when |dry_run| is
+    // set to true. In general, the mutating and non-mutating parts shouldn't
+    // be in the same codepath.
+    calculated_size_ =
+        const_cast<StyledLabel*>(this)->CalculateAndDoLayout(w, true);
+  }
   return calculated_size_.height();
 }
 
diff --git a/ui/views/controls/styled_label.h b/ui/views/controls/styled_label.h
index d74def2..4c599a0 100644
--- a/ui/views/controls/styled_label.h
+++ b/ui/views/controls/styled_label.h
@@ -87,7 +87,7 @@
 
   // View implementation:
   virtual gfx::Insets GetInsets() const OVERRIDE;
-  virtual int GetHeightForWidth(int w) OVERRIDE;
+  virtual int GetHeightForWidth(int w) const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void PreferredSizeChanged() OVERRIDE;
 
@@ -138,7 +138,7 @@
 
   // This variable saves the result of the last GetHeightForWidth call in order
   // to avoid repeated calculation.
-  gfx::Size calculated_size_;
+  mutable gfx::Size calculated_size_;
 
   // Background color on which the label is drawn, for auto color readability.
   SkColor displayed_on_background_color_;
diff --git a/ui/views/controls/tabbed_pane/tabbed_pane.cc b/ui/views/controls/tabbed_pane/tabbed_pane.cc
index 8a0f138..3d181e0c 100644
--- a/ui/views/controls/tabbed_pane/tabbed_pane.cc
+++ b/ui/views/controls/tabbed_pane/tabbed_pane.cc
@@ -47,7 +47,7 @@
   virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
  private:
@@ -76,7 +76,7 @@
   virtual ~TabStrip();
 
   // Overridden from View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
@@ -139,7 +139,7 @@
   event->SetHandled();
 }
 
-gfx::Size Tab::GetPreferredSize() {
+gfx::Size Tab::GetPreferredSize() const {
   gfx::Size size(preferred_title_size_);
   size.Enlarge(21, 9);
   const int kTabMinWidth = 54;
@@ -182,7 +182,7 @@
 
 TabStrip::~TabStrip() {}
 
-gfx::Size TabStrip::GetPreferredSize() {
+gfx::Size TabStrip::GetPreferredSize() const {
   gfx::Size size;
   for (int i = 0; i < child_count(); ++i) {
     const gfx::Size child_size = child_at(i)->GetPreferredSize();
@@ -308,7 +308,7 @@
     SelectTabAt(index);
 }
 
-gfx::Size TabbedPane::GetPreferredSize() {
+gfx::Size TabbedPane::GetPreferredSize() const {
   gfx::Size size;
   for (int i = 0; i < contents_->child_count(); ++i)
     size.SetToMax(contents_->child_at(i)->GetPreferredSize());
diff --git a/ui/views/controls/tabbed_pane/tabbed_pane.h b/ui/views/controls/tabbed_pane/tabbed_pane.h
index 794ed2a..83c7fef 100644
--- a/ui/views/controls/tabbed_pane/tabbed_pane.h
+++ b/ui/views/controls/tabbed_pane/tabbed_pane.h
@@ -54,7 +54,7 @@
   void SelectTab(Tab* tab);
 
   // Overridden from View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
 
  private:
diff --git a/ui/views/controls/tabbed_pane/tabbed_pane_unittest.cc b/ui/views/controls/tabbed_pane/tabbed_pane_unittest.cc
index 2e73ff6..f81c2a87 100644
--- a/ui/views/controls/tabbed_pane/tabbed_pane_unittest.cc
+++ b/ui/views/controls/tabbed_pane/tabbed_pane_unittest.cc
@@ -22,7 +22,7 @@
     : size_(size) {}
 
   // Overridden from View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return size_;
   }
 
diff --git a/ui/views/controls/table/table_header.cc b/ui/views/controls/table/table_header.cc
index db0d3a9..a9d730f 100644
--- a/ui/views/controls/table/table_header.cc
+++ b/ui/views/controls/table/table_header.cc
@@ -159,7 +159,7 @@
   }
 }
 
-gfx::Size TableHeader::GetPreferredSize() {
+gfx::Size TableHeader::GetPreferredSize() const {
   return gfx::Size(1, kVerticalPadding * 2 + font_list_.GetHeight());
 }
 
diff --git a/ui/views/controls/table/table_header.h b/ui/views/controls/table/table_header.h
index 7c9b8cc..a595de9 100644
--- a/ui/views/controls/table/table_header.h
+++ b/ui/views/controls/table/table_header.h
@@ -30,7 +30,7 @@
   // views::View overrides.
   virtual void Layout() OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual gfx::NativeCursor GetCursor(const ui::MouseEvent& event) OVERRIDE;
   virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
   virtual bool OnMouseDragged(const ui::MouseEvent& event) OVERRIDE;
diff --git a/ui/views/controls/table/table_view.cc b/ui/views/controls/table/table_view.cc
index f1a06f4..e5120d4 100644
--- a/ui/views/controls/table/table_view.cc
+++ b/ui/views/controls/table/table_view.cc
@@ -318,7 +318,7 @@
   SetBounds(x(), y(), width, height);
 }
 
-gfx::Size TableView::GetPreferredSize() {
+gfx::Size TableView::GetPreferredSize() const {
   int width = 50;
   if (header_ && !visible_columns_.empty())
     width = visible_columns_.back().x + visible_columns_.back().width;
diff --git a/ui/views/controls/table/table_view.h b/ui/views/controls/table/table_view.h
index 982469f8..9626806 100644
--- a/ui/views/controls/table/table_view.h
+++ b/ui/views/controls/table/table_view.h
@@ -166,7 +166,7 @@
 
   // View overrides:
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
   virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
   virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE;
diff --git a/ui/views/controls/textfield/textfield.cc b/ui/views/controls/textfield/textfield.cc
index d386e63..68aa01ec 100644
--- a/ui/views/controls/textfield/textfield.cc
+++ b/ui/views/controls/textfield/textfield.cc
@@ -481,7 +481,7 @@
   return GetInsets().top() + GetRenderText()->GetBaseline();
 }
 
-gfx::Size Textfield::GetPreferredSize() {
+gfx::Size Textfield::GetPreferredSize() const {
   const gfx::Insets& insets = GetInsets();
   return gfx::Size(GetFontList().GetExpectedTextWidth(default_width_in_chars_) +
                    insets.width(), GetFontList().GetHeight() + insets.height());
diff --git a/ui/views/controls/textfield/textfield.h b/ui/views/controls/textfield/textfield.h
index 431ceef..ea0bb76 100644
--- a/ui/views/controls/textfield/textfield.h
+++ b/ui/views/controls/textfield/textfield.h
@@ -188,7 +188,7 @@
 
   // View overrides:
   virtual int GetBaseline() const OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
   virtual gfx::NativeCursor GetCursor(const ui::MouseEvent& event) OVERRIDE;
   virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
diff --git a/ui/views/controls/throbber.cc b/ui/views/controls/throbber.cc
index 25272de..5df35606 100644
--- a/ui/views/controls/throbber.cc
+++ b/ui/views/controls/throbber.cc
@@ -68,7 +68,7 @@
   SchedulePaint();
 }
 
-gfx::Size Throbber::GetPreferredSize() {
+gfx::Size Throbber::GetPreferredSize() const {
   return gfx::Size(frames_->height(), frames_->height());
 }
 
diff --git a/ui/views/controls/throbber.h b/ui/views/controls/throbber.h
index 8ae3895a..08188c3 100644
--- a/ui/views/controls/throbber.h
+++ b/ui/views/controls/throbber.h
@@ -37,7 +37,7 @@
   void SetFrames(const gfx::ImageSkia* frames);
 
   // Overridden from View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
 
  protected:
diff --git a/ui/views/controls/tree/tree_view.cc b/ui/views/controls/tree/tree_view.cc
index d5a3911..f514fe4 100644
--- a/ui/views/controls/tree/tree_view.cc
+++ b/ui/views/controls/tree/tree_view.cc
@@ -350,7 +350,7 @@
   LayoutEditor();
 }
 
-gfx::Size TreeView::GetPreferredSize() {
+gfx::Size TreeView::GetPreferredSize() const {
   return preferred_size_;
 }
 
diff --git a/ui/views/controls/tree/tree_view.h b/ui/views/controls/tree/tree_view.h
index 24780fc..3cae3b5 100644
--- a/ui/views/controls/tree/tree_view.h
+++ b/ui/views/controls/tree/tree_view.h
@@ -121,7 +121,7 @@
 
   // View overrides:
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE;
   virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
   virtual ui::TextInputClient* GetTextInputClient() OVERRIDE;
diff --git a/ui/views/controls/webview/web_dialog_view.cc b/ui/views/controls/webview/web_dialog_view.cc
index d6e15f3..8d612f4 100644
--- a/ui/views/controls/webview/web_dialog_view.cc
+++ b/ui/views/controls/webview/web_dialog_view.cc
@@ -66,14 +66,14 @@
 ////////////////////////////////////////////////////////////////////////////////
 // WebDialogView, views::View implementation:
 
-gfx::Size WebDialogView::GetPreferredSize() {
+gfx::Size WebDialogView::GetPreferredSize() const {
   gfx::Size out;
   if (delegate_)
     delegate_->GetDialogSize(&out);
   return out;
 }
 
-gfx::Size WebDialogView::GetMinimumSize() {
+gfx::Size WebDialogView::GetMinimumSize() const {
   gfx::Size out;
   if (delegate_)
     delegate_->GetMinimumDialogSize(&out);
diff --git a/ui/views/controls/webview/web_dialog_view.h b/ui/views/controls/webview/web_dialog_view.h
index 613439a..2e69ad3 100644
--- a/ui/views/controls/webview/web_dialog_view.h
+++ b/ui/views/controls/webview/web_dialog_view.h
@@ -52,8 +52,8 @@
   content::WebContents* web_contents();
 
   // Overridden from views::ClientView:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual bool AcceleratorPressed(const ui::Accelerator& accelerator)
       OVERRIDE;
   virtual void ViewHierarchyChanged(
diff --git a/ui/views/controls/webview/webview.cc b/ui/views/controls/webview/webview.cc
index 11d8acd..21de726 100644
--- a/ui/views/controls/webview/webview.cc
+++ b/ui/views/controls/webview/webview.cc
@@ -224,7 +224,7 @@
   return View::GetNativeViewAccessible();
 }
 
-gfx::Size WebView::GetPreferredSize() {
+gfx::Size WebView::GetPreferredSize() const {
   if (preferred_size_ == gfx::Size())
     return View::GetPreferredSize();
   else
diff --git a/ui/views/controls/webview/webview.h b/ui/views/controls/webview/webview.h
index 831fe34..5cbb887 100644
--- a/ui/views/controls/webview/webview.h
+++ b/ui/views/controls/webview/webview.h
@@ -108,7 +108,7 @@
   virtual void AboutToRequestFocusFromTabTraversal(bool reverse) OVERRIDE;
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
   virtual gfx::NativeViewAccessible GetNativeViewAccessible() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // Overridden from content::WebContentsDelegate:
   virtual void WebContentsFocused(content::WebContents* web_contents) OVERRIDE;
diff --git a/ui/views/examples/double_split_view_example.cc b/ui/views/examples/double_split_view_example.cc
index 90771d2b..8ff40df 100644
--- a/ui/views/examples/double_split_view_example.cc
+++ b/ui/views/examples/double_split_view_example.cc
@@ -22,7 +22,7 @@
   void SetColor(SkColor from, SkColor to);
 
   // View:
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(SplittedView);
@@ -39,7 +39,7 @@
   set_background(Background::CreateVerticalGradientBackground(from, to));
 }
 
-gfx::Size SplittedView::GetMinimumSize() {
+gfx::Size SplittedView::GetMinimumSize() const {
   return gfx::Size(10, 10);
 }
 
diff --git a/ui/views/examples/label_example.cc b/ui/views/examples/label_example.cc
index 2f82a40..239b4db 100644
--- a/ui/views/examples/label_example.cc
+++ b/ui/views/examples/label_example.cc
@@ -25,7 +25,7 @@
   virtual ~PreferredSizeLabel();
 
   // Label:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(PreferredSizeLabel);
@@ -37,7 +37,9 @@
 
 PreferredSizeLabel::~PreferredSizeLabel() {}
 
-gfx::Size PreferredSizeLabel::GetPreferredSize() { return gfx::Size(100, 40); }
+gfx::Size PreferredSizeLabel::GetPreferredSize() const {
+  return gfx::Size(100, 40);
+}
 
 }  // namespace
 
diff --git a/ui/views/examples/multiline_example.cc b/ui/views/examples/multiline_example.cc
index 86685a4..c16d5988 100644
--- a/ui/views/examples/multiline_example.cc
+++ b/ui/views/examples/multiline_example.cc
@@ -35,7 +35,7 @@
     render_text_->Draw(canvas);
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     // Turn off multiline mode to get the single-line text size, which is the
     // preferred size for this view.
     render_text_->SetMultiline(false);
@@ -46,7 +46,7 @@
     return size;
   }
 
-  virtual int GetHeightForWidth(int w) OVERRIDE {
+  virtual int GetHeightForWidth(int w) const OVERRIDE {
     // TODO(ckocagil): Why does this happen?
     if (w == 0)
       return View::GetHeightForWidth(w);
diff --git a/ui/views/examples/scroll_view_example.cc b/ui/views/examples/scroll_view_example.cc
index eba536e..127442fb 100644
--- a/ui/views/examples/scroll_view_example.cc
+++ b/ui/views/examples/scroll_view_example.cc
@@ -27,7 +27,7 @@
     AddChildView(new RadioButton(ASCIIToUTF16("Radio Button"), 0));
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(width(), height());
   }
 
diff --git a/ui/views/examples/single_split_view_example.cc b/ui/views/examples/single_split_view_example.cc
index 1258b05..7e390b51 100644
--- a/ui/views/examples/single_split_view_example.cc
+++ b/ui/views/examples/single_split_view_example.cc
@@ -22,8 +22,8 @@
 
  private:
   // View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
 
   DISALLOW_COPY_AND_ASSIGN(SplittedView);
@@ -40,11 +40,11 @@
   set_background(Background::CreateVerticalGradientBackground(from, to));
 }
 
-gfx::Size SplittedView::GetPreferredSize() {
+gfx::Size SplittedView::GetPreferredSize() const {
   return gfx::Size(width(), height());
 }
 
-gfx::Size SplittedView::GetMinimumSize() {
+gfx::Size SplittedView::GetMinimumSize() const {
   return gfx::Size(10, 10);
 }
 
diff --git a/ui/views/examples/throbber_example.cc b/ui/views/examples/throbber_example.cc
index ccc3c79..7bd18a24 100644
--- a/ui/views/examples/throbber_example.cc
+++ b/ui/views/examples/throbber_example.cc
@@ -25,7 +25,7 @@
     throbber_->Start();
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(width(), height());
   }
 
diff --git a/ui/views/layout/box_layout.cc b/ui/views/layout/box_layout.cc
index ae44a08..c33264c5 100644
--- a/ui/views/layout/box_layout.cc
+++ b/ui/views/layout/box_layout.cc
@@ -98,12 +98,12 @@
   }
 }
 
-gfx::Size BoxLayout::GetPreferredSize(View* host) {
+gfx::Size BoxLayout::GetPreferredSize(const View* host) const {
   // Calculate the child views' preferred width.
   int width = 0;
   if (orientation_ == kVertical) {
     for (int i = 0; i < host->child_count(); ++i) {
-      View* child = host->child_at(i);
+      const View* child = host->child_at(i);
       if (!child->visible())
         continue;
 
@@ -114,7 +114,7 @@
   return GetPreferredSizeForChildWidth(host, width);
 }
 
-int BoxLayout::GetPreferredHeightForWidth(View* host, int width) {
+int BoxLayout::GetPreferredHeightForWidth(const View* host, int width) const {
   int child_width = width - NonChildSize(host).width();
   return GetPreferredSizeForChildWidth(host, child_width).height();
 }
@@ -141,8 +141,8 @@
     child_area->set_y(position);
 }
 
-gfx::Size BoxLayout::GetPreferredSizeForChildWidth(View* host,
-                                                   int child_area_width) {
+gfx::Size BoxLayout::GetPreferredSizeForChildWidth(const View* host,
+                                                   int child_area_width) const {
   gfx::Rect child_area_bounds;
 
   if (orientation_ == kHorizontal) {
@@ -151,7 +151,7 @@
     // TODO(estade): fix this if it ever becomes a problem.
     int position = 0;
     for (int i = 0; i < host->child_count(); ++i) {
-      View* child = host->child_at(i);
+      const View* child = host->child_at(i);
       if (!child->visible())
         continue;
 
@@ -166,7 +166,7 @@
   } else {
     int height = 0;
     for (int i = 0; i < host->child_count(); ++i) {
-      View* child = host->child_at(i);
+      const View* child = host->child_at(i);
       if (!child->visible())
         continue;
 
@@ -186,7 +186,7 @@
                    child_area_bounds.height() + non_child_size.height());
 }
 
-gfx::Size BoxLayout::NonChildSize(View* host) {
+gfx::Size BoxLayout::NonChildSize(const View* host) const {
   gfx::Insets insets(host->GetInsets());
   return gfx::Size(insets.width() + inside_border_insets_.width(),
                    insets.height() + inside_border_insets_.height());
diff --git a/ui/views/layout/box_layout.h b/ui/views/layout/box_layout.h
index 1982c86..d58dabf9 100644
--- a/ui/views/layout/box_layout.h
+++ b/ui/views/layout/box_layout.h
@@ -66,8 +66,9 @@
 
   // Overridden from views::LayoutManager:
   virtual void Layout(View* host) OVERRIDE;
-  virtual gfx::Size GetPreferredSize(View* host) OVERRIDE;
-  virtual int GetPreferredHeightForWidth(View* host, int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize(const View* host) const OVERRIDE;
+  virtual int GetPreferredHeightForWidth(const View* host,
+                                         int width) const OVERRIDE;
 
  private:
   // Returns the size and position along the main axis of |child_area|.
@@ -79,11 +80,12 @@
   void SetMainAxisPosition(int position, gfx::Rect* child_area) const;
 
   // The preferred size for the dialog given the width of the child area.
-  gfx::Size GetPreferredSizeForChildWidth(View* host, int child_area_width);
+  gfx::Size GetPreferredSizeForChildWidth(const View* host,
+                                          int child_area_width) const;
 
   // The amount of space the layout requires in addition to any space for the
   // child views.
-  gfx::Size NonChildSize(View* host);
+  gfx::Size NonChildSize(const View* host) const;
 
   const Orientation orientation_;
 
diff --git a/ui/views/layout/fill_layout.cc b/ui/views/layout/fill_layout.cc
index 54893671..2137546 100644
--- a/ui/views/layout/fill_layout.cc
+++ b/ui/views/layout/fill_layout.cc
@@ -20,7 +20,7 @@
   frame_view->SetBoundsRect(host->GetContentsBounds());
 }
 
-gfx::Size FillLayout::GetPreferredSize(View* host) {
+gfx::Size FillLayout::GetPreferredSize(const View* host) const {
   if (!host->has_children())
     return gfx::Size();
   DCHECK_EQ(1, host->child_count());
@@ -29,7 +29,7 @@
   return rect.size();
 }
 
-int FillLayout::GetPreferredHeightForWidth(View* host, int width) {
+int FillLayout::GetPreferredHeightForWidth(const View* host, int width) const {
   if (!host->has_children())
     return 0;
   DCHECK_EQ(1, host->child_count());
diff --git a/ui/views/layout/fill_layout.h b/ui/views/layout/fill_layout.h
index 67c7f831..f50bde0c 100644
--- a/ui/views/layout/fill_layout.h
+++ b/ui/views/layout/fill_layout.h
@@ -25,8 +25,9 @@
 
   // Overridden from LayoutManager:
   virtual void Layout(View* host) OVERRIDE;
-  virtual gfx::Size GetPreferredSize(View* host) OVERRIDE;
-  virtual int GetPreferredHeightForWidth(View* host, int width) OVERRIDE;
+  virtual gfx::Size GetPreferredSize(const View* host) const OVERRIDE;
+  virtual int GetPreferredHeightForWidth(const View* host,
+                                         int width) const OVERRIDE;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(FillLayout);
diff --git a/ui/views/layout/grid_layout.cc b/ui/views/layout/grid_layout.cc
index e28a1b7..7ab81083 100644
--- a/ui/views/layout/grid_layout.cc
+++ b/ui/views/layout/grid_layout.cc
@@ -828,7 +828,7 @@
   }
 }
 
-gfx::Size GridLayout::GetPreferredSize(View* host) {
+gfx::Size GridLayout::GetPreferredSize(const View* host) const {
   DCHECK(host_ == host);
   gfx::Size out;
   SizeRowsAndColumns(false, 0, 0, &out);
@@ -837,7 +837,7 @@
   return out;
 }
 
-int GridLayout::GetPreferredHeightForWidth(View* host, int width) {
+int GridLayout::GetPreferredHeightForWidth(const View* host, int width) const {
   DCHECK(host_ == host);
   gfx::Size pref;
   SizeRowsAndColumns(false, width, 0, &pref);
@@ -845,7 +845,7 @@
 }
 
 void GridLayout::SizeRowsAndColumns(bool layout, int width, int height,
-                                    gfx::Size* pref) {
+                                    gfx::Size* pref) const {
   // Make sure the master columns have been calculated.
   CalculateMasterColumnsIfNecessary();
   pref->SetSize(0, 0);
@@ -950,7 +950,7 @@
   }
 }
 
-void GridLayout::CalculateMasterColumnsIfNecessary() {
+void GridLayout::CalculateMasterColumnsIfNecessary() const {
   if (!calculated_master_columns_) {
     calculated_master_columns_ = true;
     for (std::vector<ColumnSet*>::iterator i = column_sets_.begin();
@@ -995,14 +995,14 @@
   SkipPaddingColumns();
 }
 
-void GridLayout::UpdateRemainingHeightFromRows(ViewState* view_state) {
+void GridLayout::UpdateRemainingHeightFromRows(ViewState* view_state) const {
   for (int i = 0, start_row = view_state->start_row;
        i < view_state->row_span; ++i) {
     view_state->remaining_height -= rows_[i + start_row]->Size();
   }
 }
 
-void GridLayout::DistributeRemainingHeight(ViewState* view_state) {
+void GridLayout::DistributeRemainingHeight(ViewState* view_state) const {
   int height = view_state->remaining_height;
   if (height <= 0)
     return;
diff --git a/ui/views/layout/grid_layout.h b/ui/views/layout/grid_layout.h
index afe2c11f..ea578c8a 100644
--- a/ui/views/layout/grid_layout.h
+++ b/ui/views/layout/grid_layout.h
@@ -178,9 +178,10 @@
   virtual void Layout(View* host) OVERRIDE;
 
   // Returns the preferred size for the GridLayout.
-  virtual gfx::Size GetPreferredSize(View* host) OVERRIDE;
+  virtual gfx::Size GetPreferredSize(const View* host) const OVERRIDE;
 
-  virtual int GetPreferredHeightForWidth(View* host, int width) OVERRIDE;
+  virtual int GetPreferredHeightForWidth(const View* host,
+                                         int width) const OVERRIDE;
 
   void set_minimum_size(const gfx::Size& size) { minimum_size_ = size; }
 
@@ -189,11 +190,14 @@
   // they both call into this method. This sizes the Columns/Rows as
   // appropriate. If layout is true, width/height give the width/height the
   // of the host, otherwise they are ignored.
-  void SizeRowsAndColumns(bool layout, int width, int height, gfx::Size* pref);
+  void SizeRowsAndColumns(bool layout,
+                          int width,
+                          int height,
+                          gfx::Size* pref) const;
 
   // Calculates the master columns of all the column sets. See Column for
   // a description of what a master column is.
-  void CalculateMasterColumnsIfNecessary();
+  void CalculateMasterColumnsIfNecessary() const;
 
   // This is called internally from AddView. It adds the ViewState to the
   // appropriate structures, and updates internal fields such as next_column_.
@@ -205,12 +209,12 @@
 
   // As the name says, updates the remaining_height of the ViewState for
   // all Rows the supplied ViewState touches.
-  void UpdateRemainingHeightFromRows(ViewState* state);
+  void UpdateRemainingHeightFromRows(ViewState* state) const;
 
   // If the view state's remaining height is > 0, it is distributed among
   // the rows the view state touches. This is used during layout to make
   // sure the Rows can accommodate a view.
-  void DistributeRemainingHeight(ViewState* state);
+  void DistributeRemainingHeight(ViewState* state) const;
 
   // Advances next_column_ past any padding columns.
   void SkipPaddingColumns();
@@ -222,7 +226,7 @@
   View* const host_;
 
   // Whether or not we've calculated the master/linked columns.
-  bool calculated_master_columns_;
+  mutable bool calculated_master_columns_;
 
   // Used to verify a view isn't added with a row span that expands into
   // another column structure.
@@ -244,13 +248,13 @@
   bool adding_view_;
 
   // ViewStates. This is ordered by row_span in ascending order.
-  std::vector<ViewState*> view_states_;
+  mutable std::vector<ViewState*> view_states_;
 
   // ColumnSets.
-  std::vector<ColumnSet*> column_sets_;
+  mutable std::vector<ColumnSet*> column_sets_;
 
   // Rows.
-  std::vector<Row*> rows_;
+  mutable std::vector<Row*> rows_;
 
   // Minimum preferred size.
   gfx::Size minimum_size_;
diff --git a/ui/views/layout/grid_layout_unittest.cc b/ui/views/layout/grid_layout_unittest.cc
index 5a7e0fe..ea7d231 100644
--- a/ui/views/layout/grid_layout_unittest.cc
+++ b/ui/views/layout/grid_layout_unittest.cc
@@ -24,7 +24,7 @@
     pref_ = pref;
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return pref_;
   }
 
@@ -39,11 +39,11 @@
     circumference_ = circumference;
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     return gfx::Size(0, circumference_ / 2);
   }
 
-  virtual int GetHeightForWidth(int width) OVERRIDE {
+  virtual int GetHeightForWidth(int width) const OVERRIDE {
     return std::max(0, circumference_ / 2 - width);
   }
 
diff --git a/ui/views/layout/layout_manager.cc b/ui/views/layout/layout_manager.cc
index 188cc6f1..9a79ce7 100644
--- a/ui/views/layout/layout_manager.cc
+++ b/ui/views/layout/layout_manager.cc
@@ -17,7 +17,8 @@
 void LayoutManager::Uninstalled(View* host) {
 }
 
-int LayoutManager::GetPreferredHeightForWidth(View* host, int width) {
+int LayoutManager::GetPreferredHeightForWidth(const View* host,
+                                              int width) const {
   return GetPreferredSize(host).height();
 }
 
diff --git a/ui/views/layout/layout_manager.h b/ui/views/layout/layout_manager.h
index f678e72..d10e09e 100644
--- a/ui/views/layout/layout_manager.h
+++ b/ui/views/layout/layout_manager.h
@@ -42,11 +42,11 @@
 
   // Return the preferred size which is the size required to give each
   // children their respective preferred size.
-  virtual gfx::Size GetPreferredSize(View* host) = 0;
+  virtual gfx::Size GetPreferredSize(const View* host) const = 0;
 
   // Returns the preferred height for the specified width. The default
   // implementation returns the value from GetPreferredSize.
-  virtual int GetPreferredHeightForWidth(View* host, int width);
+  virtual int GetPreferredHeightForWidth(const View* host, int width) const;
 
   // Notification that a view has been added.
   virtual void ViewAdded(View* host, View* view);
diff --git a/ui/views/test/child_modal_window.cc b/ui/views/test/child_modal_window.cc
index 2292fd6..fc19ddfd 100644
--- a/ui/views/test/child_modal_window.cc
+++ b/ui/views/test/child_modal_window.cc
@@ -61,7 +61,7 @@
  private:
   // Overridden from View:
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
   // Overridden from WidgetDelegate:
   virtual View* GetContentsView() OVERRIDE;
@@ -87,7 +87,7 @@
   canvas->FillRect(GetLocalBounds(), kChildColor);
 }
 
-gfx::Size ChildModalWindow::GetPreferredSize() {
+gfx::Size ChildModalWindow::GetPreferredSize() const {
   return gfx::Size(kChildWindowWidth, kChildWindowHeight);
 }
 
diff --git a/ui/views/test/test_views.cc b/ui/views/test/test_views.cc
index ad2cefb..0c391b0 100644
--- a/ui/views/test/test_views.cc
+++ b/ui/views/test/test_views.cc
@@ -10,7 +10,7 @@
 
 StaticSizedView::~StaticSizedView() {}
 
-gfx::Size StaticSizedView::GetPreferredSize() {
+gfx::Size StaticSizedView::GetPreferredSize() const {
   return size_;
 }
 
@@ -19,7 +19,7 @@
 
 ProportionallySizedView::~ProportionallySizedView() {}
 
-int ProportionallySizedView::GetHeightForWidth(int w) {
+int ProportionallySizedView::GetHeightForWidth(int w) const {
   return w * factor_;
 }
 
diff --git a/ui/views/test/test_views.h b/ui/views/test/test_views.h
index 7501a810..7d0cabf 100644
--- a/ui/views/test/test_views.h
+++ b/ui/views/test/test_views.h
@@ -15,7 +15,7 @@
   explicit StaticSizedView(const gfx::Size& size);
   virtual ~StaticSizedView();
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
 
  private:
   gfx::Size size_;
@@ -29,7 +29,7 @@
   explicit ProportionallySizedView(int factor);
   virtual ~ProportionallySizedView();
 
-  virtual int GetHeightForWidth(int w) OVERRIDE;
+  virtual int GetHeightForWidth(int w) const OVERRIDE;
 
  private:
   // The multiplicative factor between width and height, i.e.
diff --git a/ui/views/touchui/touch_selection_controller_impl.cc b/ui/views/touchui/touch_selection_controller_impl.cc
index 6005a73c..1c4af74 100644
--- a/ui/views/touchui/touch_selection_controller_impl.cc
+++ b/ui/views/touchui/touch_selection_controller_impl.cc
@@ -230,7 +230,7 @@
     }
   }
 
-  virtual gfx::Size GetPreferredSize() OVERRIDE {
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
     gfx::Size image_size = GetHandleImageSize();
     return gfx::Size(image_size.width() + 2 * kSelectionHandleHorizPadding,
                      image_size.height() + selection_rect_.height() +
diff --git a/ui/views/view.cc b/ui/views/view.cc
index 5980706..1f3c0a5 100644
--- a/ui/views/view.cc
+++ b/ui/views/view.cc
@@ -424,7 +424,7 @@
   return gfx::Rect(origin, size());
 }
 
-gfx::Size View::GetPreferredSize() {
+gfx::Size View::GetPreferredSize() const {
   if (layout_manager_.get())
     return layout_manager_->GetPreferredSize(this);
   return gfx::Size();
@@ -440,7 +440,7 @@
     SetBounds(x(), y(), prefsize.width(), prefsize.height());
 }
 
-gfx::Size View::GetMinimumSize() {
+gfx::Size View::GetMinimumSize() const {
   return GetPreferredSize();
 }
 
@@ -448,7 +448,7 @@
   return gfx::Size();
 }
 
-int View::GetHeightForWidth(int w) {
+int View::GetHeightForWidth(int w) const {
   if (layout_manager_.get())
     return layout_manager_->GetPreferredHeightForWidth(this, w);
   return GetPreferredSize().height();
diff --git a/ui/views/view.h b/ui/views/view.h
index f26d8f0..5f2f6c9 100644
--- a/ui/views/view.h
+++ b/ui/views/view.h
@@ -265,14 +265,14 @@
   virtual int GetBaseline() const;
 
   // Get the size the View would like to be, if enough space were available.
-  virtual gfx::Size GetPreferredSize();
+  virtual gfx::Size GetPreferredSize() const;
 
   // Convenience method that sizes this view to its preferred size.
   void SizeToPreferredSize();
 
   // Gets the minimum size of the view. View's implementation invokes
   // GetPreferredSize.
-  virtual gfx::Size GetMinimumSize();
+  virtual gfx::Size GetMinimumSize() const;
 
   // Gets the maximum size of the view. Currently only used for sizing shell
   // windows.
@@ -282,7 +282,7 @@
   // View's implementation returns the value from getPreferredSize.cy.
   // Override if your View's preferred height depends upon the width (such
   // as with Labels).
-  virtual int GetHeightForWidth(int w);
+  virtual int GetHeightForWidth(int w) const;
 
   // Set whether this view is visible. Painting is scheduled as needed.
   virtual void SetVisible(bool visible);
diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc
index d1f92e7f..8d0c668 100644
--- a/ui/views/widget/widget.cc
+++ b/ui/views/widget/widget.cc
@@ -440,7 +440,7 @@
   return removals_observers_.HasObserver(observer);
 }
 
-bool Widget::GetAccelerator(int cmd_id, ui::Accelerator* accelerator) {
+bool Widget::GetAccelerator(int cmd_id, ui::Accelerator* accelerator) const {
   return false;
 }
 
diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h
index 9ade039..25c6408 100644
--- a/ui/views/widget/widget.h
+++ b/ui/views/widget/widget.h
@@ -358,7 +358,7 @@
 
   // Returns the accelerator given a command id. Returns false if there is
   // no accelerator associated with a given id, which is a common condition.
-  virtual bool GetAccelerator(int cmd_id, ui::Accelerator* accelerator);
+  virtual bool GetAccelerator(int cmd_id, ui::Accelerator* accelerator) const;
 
   // Forwarded from the RootView so that the widget can do any cleanup.
   void ViewHierarchyChanged(const View::ViewHierarchyChangedDetails& details);
diff --git a/ui/views/widget/widget_unittest.cc b/ui/views/widget/widget_unittest.cc
index a650ecf..eb25225 100644
--- a/ui/views/widget/widget_unittest.cc
+++ b/ui/views/widget/widget_unittest.cc
@@ -125,7 +125,7 @@
 
  private:
   // Overridden from View:
-  virtual gfx::Size GetMinimumSize() OVERRIDE {
+  virtual gfx::Size GetMinimumSize() const OVERRIDE {
     return gfx::Size(300, 400);
   }
 
diff --git a/ui/views/window/client_view.cc b/ui/views/window/client_view.cc
index 6a6d491..eb8d355 100644
--- a/ui/views/window/client_view.cc
+++ b/ui/views/window/client_view.cc
@@ -45,7 +45,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 // ClientView, View overrides:
 
-gfx::Size ClientView::GetPreferredSize() {
+gfx::Size ClientView::GetPreferredSize() const {
   // |contents_view_| is allowed to be NULL up until the point where this view
   // is attached to a Container.
   return contents_view_ ? contents_view_->GetPreferredSize() : gfx::Size();
@@ -57,7 +57,7 @@
   return contents_view_ ? contents_view_->GetMaximumSize() : gfx::Size();
 }
 
-gfx::Size ClientView::GetMinimumSize() {
+gfx::Size ClientView::GetMinimumSize() const {
   // |contents_view_| is allowed to be NULL up until the point where this view
   // is attached to a Container.
   return contents_view_ ? contents_view_->GetMinimumSize() : gfx::Size();
diff --git a/ui/views/window/client_view.h b/ui/views/window/client_view.h
index b58f551..9e276b7 100644
--- a/ui/views/window/client_view.h
+++ b/ui/views/window/client_view.h
@@ -57,9 +57,9 @@
   virtual int NonClientHitTest(const gfx::Point& point);
 
   // Overridden from View:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual gfx::Size GetMaximumSize() OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
 
diff --git a/ui/views/window/custom_frame_view.cc b/ui/views/window/custom_frame_view.cc
index cfb34e6..d3513d9 100644
--- a/ui/views/window/custom_frame_view.cc
+++ b/ui/views/window/custom_frame_view.cc
@@ -221,12 +221,12 @@
   LayoutClientView();
 }
 
-gfx::Size CustomFrameView::GetPreferredSize() {
+gfx::Size CustomFrameView::GetPreferredSize() const {
   return frame_->non_client_view()->GetWindowBoundsForClientBounds(
       gfx::Rect(frame_->client_view()->GetPreferredSize())).size();
 }
 
-gfx::Size CustomFrameView::GetMinimumSize() {
+gfx::Size CustomFrameView::GetMinimumSize() const {
   return frame_->non_client_view()->GetWindowBoundsForClientBounds(
       gfx::Rect(frame_->client_view()->GetMinimumSize())).size();
 }
diff --git a/ui/views/window/custom_frame_view.h b/ui/views/window/custom_frame_view.h
index 96dbd225..f777e1d 100644
--- a/ui/views/window/custom_frame_view.h
+++ b/ui/views/window/custom_frame_view.h
@@ -51,8 +51,8 @@
   // Overridden from View:
   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
   virtual void Layout() OVERRIDE;
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual gfx::Size GetMaximumSize() OVERRIDE;
 
   // Overridden from ButtonListener:
diff --git a/ui/views/window/dialog_client_view.cc b/ui/views/window/dialog_client_view.cc
index e100fd1..172ca0f 100644
--- a/ui/views/window/dialog_client_view.cc
+++ b/ui/views/window/dialog_client_view.cc
@@ -175,7 +175,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // DialogClientView, View overrides:
 
-gfx::Size DialogClientView::GetPreferredSize() {
+gfx::Size DialogClientView::GetPreferredSize() const {
   // Initialize the size to fit the buttons and extra view row.
   gfx::Size size(
       (ok_button_ ? ok_button_->GetPreferredSize().width() : 0) +
diff --git a/ui/views/window/dialog_client_view.h b/ui/views/window/dialog_client_view.h
index e6f0ca23..1e8ced11 100644
--- a/ui/views/window/dialog_client_view.h
+++ b/ui/views/window/dialog_client_view.h
@@ -57,7 +57,7 @@
                                 View* focused_now) OVERRIDE;
 
   // View implementation:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE;
   virtual void ViewHierarchyChanged(
diff --git a/ui/views/window/dialog_delegate_unittest.cc b/ui/views/window/dialog_delegate_unittest.cc
index dc98d01..cbfc6fe 100644
--- a/ui/views/window/dialog_delegate_unittest.cc
+++ b/ui/views/window/dialog_delegate_unittest.cc
@@ -37,7 +37,9 @@
   }
 
   // DialogDelegateView overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE { return gfx::Size(200, 200); }
+  virtual gfx::Size GetPreferredSize() const OVERRIDE {
+    return gfx::Size(200, 200);
+  }
   virtual base::string16 GetWindowTitle() const OVERRIDE { return title_; }
 
   // ButtonListener override:
diff --git a/ui/views/window/native_frame_view.cc b/ui/views/window/native_frame_view.cc
index cabc7c0..44cc42f 100644
--- a/ui/views/window/native_frame_view.cc
+++ b/ui/views/window/native_frame_view.cc
@@ -70,7 +70,7 @@
   // Nothing to do.
 }
 
-gfx::Size NativeFrameView::GetPreferredSize() {
+gfx::Size NativeFrameView::GetPreferredSize() const {
   gfx::Size client_preferred_size = frame_->client_view()->GetPreferredSize();
 #if defined(OS_WIN)
   // Returns the client size. On Windows, this is the expected behavior for
@@ -84,7 +84,7 @@
 #endif
 }
 
-gfx::Size NativeFrameView::GetMinimumSize() {
+gfx::Size NativeFrameView::GetMinimumSize() const {
   return frame_->client_view()->GetMinimumSize();
 }
 
diff --git a/ui/views/window/native_frame_view.h b/ui/views/window/native_frame_view.h
index 09ecd95..178b2df 100644
--- a/ui/views/window/native_frame_view.h
+++ b/ui/views/window/native_frame_view.h
@@ -30,8 +30,8 @@
   virtual void UpdateWindowTitle() OVERRIDE;
 
   // View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual gfx::Size GetMaximumSize() OVERRIDE;
   virtual const char* GetClassName() const OVERRIDE;
 
diff --git a/ui/views/window/non_client_view.cc b/ui/views/window/non_client_view.cc
index 89df367..86c362a 100644
--- a/ui/views/window/non_client_view.cc
+++ b/ui/views/window/non_client_view.cc
@@ -134,7 +134,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // NonClientView, View overrides:
 
-gfx::Size NonClientView::GetPreferredSize() {
+gfx::Size NonClientView::GetPreferredSize() const {
   // TODO(pkasting): This should probably be made to look similar to
   // GetMinimumSize() below.  This will require implementing GetPreferredSize()
   // better in the various frame views.
@@ -142,7 +142,7 @@
   return GetWindowBoundsForClientBounds(client_bounds).size();
 }
 
-gfx::Size NonClientView::GetMinimumSize() {
+gfx::Size NonClientView::GetMinimumSize() const {
   return frame_view_->GetMinimumSize();
 }
 
diff --git a/ui/views/window/non_client_view.h b/ui/views/window/non_client_view.h
index 4757aa4..aa9b34c 100644
--- a/ui/views/window/non_client_view.h
+++ b/ui/views/window/non_client_view.h
@@ -205,8 +205,8 @@
   void SetAccessibleName(const base::string16& name);
 
   // NonClientView, View overrides:
-  virtual gfx::Size GetPreferredSize() OVERRIDE;
-  virtual gfx::Size GetMinimumSize() OVERRIDE;
+  virtual gfx::Size GetPreferredSize() const OVERRIDE;
+  virtual gfx::Size GetMinimumSize() const OVERRIDE;
   virtual gfx::Size GetMaximumSize() OVERRIDE;
   virtual void Layout() OVERRIDE;
   virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;