diff --git a/DEPS b/DEPS
index 1035e609..83af01c1 100644
--- a/DEPS
+++ b/DEPS
@@ -40,7 +40,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '24f20a8639430cfb0374c91bbee8edd36a0e9877',
+  'skia_revision': '576dcf00381caee43c38f4beda19475187e7ae6a',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
diff --git a/apps/ui/views/app_window_frame_view.cc b/apps/ui/views/app_window_frame_view.cc
index 4e457ff..549dd2e 100644
--- a/apps/ui/views/app_window_frame_view.cc
+++ b/apps/ui/views/app_window_frame_view.cc
@@ -235,7 +235,7 @@
   }
 }
 
-gfx::Size AppWindowFrameView::GetPreferredSize() const {
+gfx::Size AppWindowFrameView::CalculatePreferredSize() const {
   gfx::Size pref = widget_->client_view()->GetPreferredSize();
   gfx::Rect bounds(0, 0, pref.width(), pref.height());
   return widget_->non_client_view()
diff --git a/apps/ui/views/app_window_frame_view.h b/apps/ui/views/app_window_frame_view.h
index f967f3e..1ad352b 100644
--- a/apps/ui/views/app_window_frame_view.h
+++ b/apps/ui/views/app_window_frame_view.h
@@ -77,7 +77,7 @@
   void SizeConstraintsChanged() override;
 
   // views::View implementation.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   const char* GetClassName() const override;
   void OnPaint(gfx::Canvas* canvas) override;
diff --git a/ash/shelf/shelf_tooltip_manager.cc b/ash/shelf/shelf_tooltip_manager.cc
index 6176fed..b2620d7 100644
--- a/ash/shelf/shelf_tooltip_manager.cc
+++ b/ash/shelf/shelf_tooltip_manager.cc
@@ -100,7 +100,7 @@
  private:
   // BubbleDialogDelegateView overrides:
   gfx::Size CalculatePreferredSize() const override {
-    const gfx::Size size = BubbleDialogDelegateView::GetPreferredSize();
+    const gfx::Size size = BubbleDialogDelegateView::CalculatePreferredSize();
     const int kTooltipMinHeight = kTooltipHeight - 2 * kTooltipTopBottomMargin;
     return gfx::Size(std::min(size.width(), kTooltipMaxWidth),
                      std::max(size.height(), kTooltipMinHeight));
diff --git a/ash/system/tray/hover_highlight_view.cc b/ash/system/tray/hover_highlight_view.cc
index 4a28ebd..00523642 100644
--- a/ash/system/tray/hover_highlight_view.cc
+++ b/ash/system/tray/hover_highlight_view.cc
@@ -211,7 +211,7 @@
 }
 
 gfx::Size HoverHighlightView::CalculatePreferredSize() const {
-  gfx::Size size = ActionableView::GetPreferredSize();
+  gfx::Size size = ActionableView::CalculatePreferredSize();
 
   if (!expandable_ || size.height() < kTrayPopupItemMinHeight)
     size.set_height(kTrayPopupItemMinHeight);
diff --git a/ash/system/tray/tray_item_view.cc b/ash/system/tray/tray_item_view.cc
index faa70cbb..75b2ef3 100644
--- a/ash/system/tray/tray_item_view.cc
+++ b/ash/system/tray/tray_item_view.cc
@@ -85,7 +85,7 @@
 
 gfx::Size TrayItemView::CalculatePreferredSize() const {
   DCHECK_EQ(1, child_count());
-  gfx::Size inner_size = views::View::GetPreferredSize();
+  gfx::Size inner_size = views::View::CalculatePreferredSize();
   if (image_view_)
     inner_size = gfx::Size(kTrayIconSize, kTrayIconSize);
   gfx::Rect rect(inner_size);
diff --git a/cc/output/direct_renderer.cc b/cc/output/direct_renderer.cc
index 5339f82..18259fe7 100644
--- a/cc/output/direct_renderer.cc
+++ b/cc/output/direct_renderer.cc
@@ -97,10 +97,6 @@
       allow_empty_swap_ = true;
     if (context_provider->ContextCapabilities().dc_layers)
       supports_dc_layers_ = true;
-    if (context_provider->ContextCapabilities()
-            .disable_non_empty_post_sub_buffers) {
-      use_partial_swap_ = false;
-    }
   }
 
   initialized_ = true;
diff --git a/chrome/browser/chromeos/attestation/platform_verification_dialog.cc b/chrome/browser/chromeos/attestation/platform_verification_dialog.cc
index 1940f1e..b88bc77 100644
--- a/chrome/browser/chromeos/attestation/platform_verification_dialog.cc
+++ b/chrome/browser/chromeos/attestation/platform_verification_dialog.cc
@@ -126,7 +126,7 @@
   return ui::MODAL_TYPE_CHILD;
 }
 
-gfx::Size PlatformVerificationDialog::GetPreferredSize() const {
+gfx::Size PlatformVerificationDialog::CalculatePreferredSize() 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 87f350f..cc1b93e 100644
--- a/chrome/browser/chromeos/attestation/platform_verification_dialog.h
+++ b/chrome/browser/chromeos/attestation/platform_verification_dialog.h
@@ -59,7 +59,7 @@
   ui::ModalType GetModalType() const override;
 
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // views::StyledLabelListener:
   void StyledLabelLinkClicked(views::StyledLabel* label,
diff --git a/chrome/browser/chromeos/enrollment_dialog_view.cc b/chrome/browser/chromeos/enrollment_dialog_view.cc
index 7c74ebc..8b9f151 100644
--- a/chrome/browser/chromeos/enrollment_dialog_view.cc
+++ b/chrome/browser/chromeos/enrollment_dialog_view.cc
@@ -64,7 +64,7 @@
   void WindowClosing() override;
 
   // views::View overrides
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
  private:
   EnrollmentDialogView(const std::string& network_name,
@@ -150,7 +150,7 @@
   chrome::Navigate(&params);
 }
 
-gfx::Size EnrollmentDialogView::GetPreferredSize() const {
+gfx::Size EnrollmentDialogView::CalculatePreferredSize() 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 2aaf849..3482665 100644
--- a/chrome/browser/chromeos/options/network_config_view.cc
+++ b/chrome/browser/chromeos/options/network_config_view.cc
@@ -259,7 +259,7 @@
   child_config_view_->SetBounds(0, 0, width(), height());
 }
 
-gfx::Size NetworkConfigView::GetPreferredSize() const {
+gfx::Size NetworkConfigView::CalculatePreferredSize() const {
   gfx::Size result(views::Widget::GetLocalizedContentsSize(
       IDS_JOIN_WIFI_NETWORK_DIALOG_WIDTH_CHARS,
       IDS_JOIN_WIFI_NETWORK_DIALOG_MINIMUM_HEIGHT_LINES));
@@ -339,7 +339,7 @@
 
 ControlledSettingIndicatorView::~ControlledSettingIndicatorView() {}
 
-gfx::Size ControlledSettingIndicatorView::GetPreferredSize() const {
+gfx::Size ControlledSettingIndicatorView::CalculatePreferredSize() 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 d1f6cb0c..39cd0981 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:
   void Layout() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) override;
 
@@ -170,7 +170,7 @@
 
  protected:
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
  private:
   bool managed_;
diff --git a/chrome/browser/chromeos/options/wifi_config_view.cc b/chrome/browser/chromeos/options/wifi_config_view.cc
index 7d7e1440..ae8b76a 100644
--- a/chrome/browser/chromeos/options/wifi_config_view.cc
+++ b/chrome/browser/chromeos/options/wifi_config_view.cc
@@ -59,8 +59,8 @@
         width_(width) {
   }
   ~ComboboxWithWidth() override {}
-  gfx::Size GetPreferredSize() const override {
-    gfx::Size size = Combobox::GetPreferredSize();
+  gfx::Size CalculatePreferredSize() const override {
+    gfx::Size size = Combobox::CalculatePreferredSize();
     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 5d9b81b..14f0290 100644
--- a/chrome/browser/chromeos/power/idle_action_warning_dialog_view.cc
+++ b/chrome/browser/chromeos/power/idle_action_warning_dialog_view.cc
@@ -37,7 +37,7 @@
   explicit FixedWidthLabel(int width);
   ~FixedWidthLabel() override;
 
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
  private:
   int width_;
@@ -53,7 +53,7 @@
 FixedWidthLabel::~FixedWidthLabel() {
 }
 
-gfx::Size FixedWidthLabel::GetPreferredSize() const {
+gfx::Size FixedWidthLabel::CalculatePreferredSize() 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 fce5f0a1..c4ab98d 100644
--- a/chrome/browser/chromeos/profiles/multiprofiles_intro_dialog.cc
+++ b/chrome/browser/chromeos/profiles/multiprofiles_intro_dialog.cc
@@ -43,7 +43,7 @@
   base::string16 GetWindowTitle() const override;
 
   // views::View overrides.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
  private:
   void InitDialog();
@@ -99,7 +99,7 @@
   return l10n_util::GetStringUTF16(IDS_MULTIPROFILES_INTRO_HEADLINE);
 }
 
-gfx::Size MultiprofilesIntroView::GetPreferredSize() const {
+gfx::Size MultiprofilesIntroView::CalculatePreferredSize() const {
   return gfx::Size(
       kDefaultWidth,
       GetLayoutManager()->GetPreferredHeightForWidth(this, kDefaultWidth));
diff --git a/chrome/browser/chromeos/profiles/multiprofiles_session_aborted_dialog.cc b/chrome/browser/chromeos/profiles/multiprofiles_session_aborted_dialog.cc
index 46485935..3ed1efe 100644
--- a/chrome/browser/chromeos/profiles/multiprofiles_session_aborted_dialog.cc
+++ b/chrome/browser/chromeos/profiles/multiprofiles_session_aborted_dialog.cc
@@ -49,7 +49,7 @@
   ui::ModalType GetModalType() const override;
 
   // views::View overrides.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
  private:
   void InitDialog(const std::string& user_email);
@@ -109,7 +109,7 @@
   return ui::MODAL_TYPE_SYSTEM;
 }
 
-gfx::Size MultiprofilesSessionAbortedView::GetPreferredSize() const {
+gfx::Size MultiprofilesSessionAbortedView::CalculatePreferredSize() 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 ef892bf..ecfd936 100644
--- a/chrome/browser/chromeos/ui/echo_dialog_view.cc
+++ b/chrome/browser/chromeos/ui/echo_dialog_view.cc
@@ -163,7 +163,7 @@
   listener_->OnMoreInfoLinkClicked();
 }
 
-gfx::Size EchoDialogView::GetPreferredSize() const {
+gfx::Size EchoDialogView::CalculatePreferredSize() 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 6f8a3c5..96e0c00 100644
--- a/chrome/browser/chromeos/ui/echo_dialog_view.h
+++ b/chrome/browser/chromeos/ui/echo_dialog_view.h
@@ -67,7 +67,7 @@
                               int event_flags) override;
 
   // views::View override.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // Sets the border and bounds for the styled label containing the dialog
   // text.
diff --git a/chrome/browser/chromeos/ui/kiosk_external_update_notification.cc b/chrome/browser/chromeos/ui/kiosk_external_update_notification.cc
index 3a3f3e4..253bd2b 100644
--- a/chrome/browser/chromeos/ui/kiosk_external_update_notification.cc
+++ b/chrome/browser/chromeos/ui/kiosk_external_update_notification.cc
@@ -64,7 +64,7 @@
     views::WidgetDelegateView::OnPaint(canvas);
   }
 
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     return gfx::Size(kPreferredWidth, kPreferredHeight);
   }
 
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 3b75487..3bfe7d4 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 @@
   base::string16 GetWindowTitle() const override;
 
   // views::View overrides.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
  private:
   void InitDialog();
@@ -99,7 +99,7 @@
   return l10n_util::GetStringUTF16(IDS_VISIT_DESKTOP_WARNING_TITLE);
 }
 
-gfx::Size TeleportWarningView::GetPreferredSize() const {
+gfx::Size TeleportWarningView::CalculatePreferredSize() const {
   return gfx::Size(
       kDefaultWidth,
       GetLayoutManager()->GetPreferredHeightForWidth(this, kDefaultWidth));
diff --git a/chrome/browser/ui/cocoa/bubble_anchor_helper_views_unittest.mm b/chrome/browser/ui/cocoa/bubble_anchor_helper_views_unittest.mm
index 5046914..1edb18c 100644
--- a/chrome/browser/ui/cocoa/bubble_anchor_helper_views_unittest.mm
+++ b/chrome/browser/ui/cocoa/bubble_anchor_helper_views_unittest.mm
@@ -31,7 +31,9 @@
   ~TestBubbleDialogDelegateView() override {}
 
   // BubbleDialogDelegateView overrides:
-  gfx::Size GetPreferredSize() const override { return gfx::Size(200, 150); }
+  gfx::Size CalculatePreferredSize() const override {
+    return gfx::Size(200, 150);
+  }
 
  private:
   DISALLOW_COPY_AND_ASSIGN(TestBubbleDialogDelegateView);
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 0395139..baf7d86 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
@@ -128,7 +128,7 @@
   // We got nothing to say about no window mask.
 }
 
-gfx::Size GlassAppWindowFrameViewWin::GetPreferredSize() const {
+gfx::Size GlassAppWindowFrameViewWin::CalculatePreferredSize() const {
   gfx::Size pref = widget_->client_view()->GetPreferredSize();
   gfx::Rect bounds(0, 0, pref.width(), pref.height());
   return widget_->non_client_view()
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 6d5b529..4e20045 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,7 +36,7 @@
   void SizeConstraintsChanged() override {}
 
   // views::View implementation.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   const char* GetClassName() const override;
   gfx::Size GetMinimumSize() const override;
   gfx::Size GetMaximumSize() const override;
diff --git a/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc b/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc
index b6b82af..7e0f9b9 100644
--- a/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc
+++ b/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc
@@ -248,7 +248,7 @@
   return storage_row_;
 }
 
-gfx::Size CardUnmaskPromptViews::GetPreferredSize() const {
+gfx::Size CardUnmaskPromptViews::CalculatePreferredSize() const {
   // Must hardcode a width so the label knows where to wrap.
   const int kWidth = 375;
   return gfx::Size(kWidth, GetHeightForWidth(kWidth));
diff --git a/chrome/browser/ui/views/autofill/card_unmask_prompt_views.h b/chrome/browser/ui/views/autofill/card_unmask_prompt_views.h
index cc0cc151..1288bf1 100644
--- a/chrome/browser/ui/views/autofill/card_unmask_prompt_views.h
+++ b/chrome/browser/ui/views/autofill/card_unmask_prompt_views.h
@@ -57,7 +57,7 @@
   View* CreateFootnoteView() override;
 
   // views::View
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   int GetHeightForWidth(int width) const override;
   void OnNativeThemeChanged(const ui::NativeTheme* theme) override;
diff --git a/chrome/browser/ui/views/autofill/save_card_bubble_views.cc b/chrome/browser/ui/views/autofill/save_card_bubble_views.cc
index 233a9f7..a482643 100644
--- a/chrome/browser/ui/views/autofill/save_card_bubble_views.cc
+++ b/chrome/browser/ui/views/autofill/save_card_bubble_views.cc
@@ -149,7 +149,7 @@
   return true;
 }
 
-gfx::Size SaveCardBubbleViews::GetPreferredSize() const {
+gfx::Size SaveCardBubbleViews::CalculatePreferredSize() const {
   return gfx::Size(kBubbleWidth, GetHeightForWidth(kBubbleWidth));
 }
 
diff --git a/chrome/browser/ui/views/autofill/save_card_bubble_views.h b/chrome/browser/ui/views/autofill/save_card_bubble_views.h
index 59148d9..bdfa1a2 100644
--- a/chrome/browser/ui/views/autofill/save_card_bubble_views.h
+++ b/chrome/browser/ui/views/autofill/save_card_bubble_views.h
@@ -57,7 +57,7 @@
   bool ShouldDefaultButtonBeBlue() const override;
 
   // views::View
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // views::WidgetDelegate
   base::string16 GetWindowTitle() const override;
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 fdc710d..56b0e35 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_instructions_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_instructions_view.cc
@@ -54,7 +54,7 @@
   }
 }
 
-gfx::Size BookmarkBarInstructionsView::GetPreferredSize() const {
+gfx::Size BookmarkBarInstructionsView::CalculatePreferredSize() const {
   int height = 0, width = 0;
   for (int i = 0; i < child_count(); ++i) {
     const views::View* view = child_at(i);
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 cb0b9235..344db30 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_instructions_view.h
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_instructions_view.h
@@ -32,7 +32,7 @@
 
  private:
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   const char* GetClassName() const override;
   void OnThemeChanged() override;
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
index 0eec44a..9e4f912 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
@@ -559,7 +559,7 @@
                          ThemeProperties::COLOR_TOOLBAR_VERTICAL_SEPARATOR));
   }
 
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() 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);
@@ -828,7 +828,7 @@
   return height;
 }
 
-gfx::Size BookmarkBarView::GetPreferredSize() const {
+gfx::Size BookmarkBarView::CalculatePreferredSize() const {
   gfx::Size prefsize;
   int preferred_height = GetPreferredHeight();
   if (IsDetached()) {
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h
index c282dcc9..4bbbc02 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h
@@ -163,7 +163,7 @@
   int GetToolbarOverlap() const;
 
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   bool CanProcessEventsWithinSubtree() const override;
   void Layout() override;
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
index 94b7b428..36ca981 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
@@ -60,8 +60,8 @@
   explicit UnsizedCombobox(ui::ComboboxModel* model) : views::Combobox(model) {}
   ~UnsizedCombobox() override {}
 
-  gfx::Size GetPreferredSize() const override {
-    return gfx::Size(0, views::Combobox::GetPreferredSize().height());
+  gfx::Size CalculatePreferredSize() const override {
+    return gfx::Size(0, views::Combobox::CalculatePreferredSize().height());
   }
 
  private:
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_editor_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_editor_view.cc
index 022aa5a..8e84959 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_editor_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_editor_view.cc
@@ -132,9 +132,9 @@
   return true;
 }
 
-gfx::Size BookmarkEditorView::GetPreferredSize() const {
+gfx::Size BookmarkEditorView::CalculatePreferredSize() const {
   if (!show_tree_)
-    return views::View::GetPreferredSize();
+    return views::View::CalculatePreferredSize();
 
   return gfx::Size(views::Widget::GetLocalizedContentsSize(
       IDS_EDITBOOKMARK_DIALOG_WIDTH_CHARS,
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_editor_view.h b/chrome/browser/ui/views/bookmarks/bookmark_editor_view.h
index 21877481..e716a4d 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_editor_view.h
+++ b/chrome/browser/ui/views/bookmarks/bookmark_editor_view.h
@@ -89,7 +89,7 @@
   bool Accept() override;
 
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
 
   // views::TreeViewController:
diff --git a/chrome/browser/ui/views/chrome_cleaner_dialog_win.cc b/chrome/browser/ui/views/chrome_cleaner_dialog_win.cc
index c6cf1b3..81b1596 100644
--- a/chrome/browser/ui/views/chrome_cleaner_dialog_win.cc
+++ b/chrome/browser/ui/views/chrome_cleaner_dialog_win.cc
@@ -133,7 +133,7 @@
 
 // View overrides.
 
-gfx::Size ChromeCleanerDialog::GetPreferredSize() const {
+gfx::Size ChromeCleanerDialog::CalculatePreferredSize() const {
   return gfx::Size(kDialogWidth, GetHeightForWidth(kDialogWidth));
 }
 
diff --git a/chrome/browser/ui/views/chrome_cleaner_dialog_win.h b/chrome/browser/ui/views/chrome_cleaner_dialog_win.h
index 4811919..944c4a2 100644
--- a/chrome/browser/ui/views/chrome_cleaner_dialog_win.h
+++ b/chrome/browser/ui/views/chrome_cleaner_dialog_win.h
@@ -53,7 +53,7 @@
   bool Close() override;
 
   // views::View overrides.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // views::ButtonListener overrides.
   void ButtonPressed(views::Button* sender, const ui::Event& event) override;
diff --git a/chrome/browser/ui/views/collected_cookies_views.cc b/chrome/browser/ui/views/collected_cookies_views.cc
index 322294ed..47a0a59 100644
--- a/chrome/browser/ui/views/collected_cookies_views.cc
+++ b/chrome/browser/ui/views/collected_cookies_views.cc
@@ -157,7 +157,7 @@
   }
 
   // views::View overrides.
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     // Always return the preferred size, even if not currently visible. This
     // ensures that the layout manager always reserves space within the view
     // so it can be made visible when necessary. Otherwise, changing the
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 46f4008..e9d7fe43 100644
--- a/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc
+++ b/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc
@@ -229,7 +229,7 @@
     GetWidget()->Close();
     return true;
   }
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     if (impl_->closed_via_webui())
       return gfx::Size();
 
@@ -237,7 +237,7 @@
     // GetPreferredSize() will return the appropriate current size.  In this
     // case, GetDialogSize() should leave its argument untouched.  In all
     // other cases, GetDialogSize() will overwrite the passed-in size.
-    gfx::Size size = WebView::GetPreferredSize();
+    gfx::Size size = WebView::CalculatePreferredSize();
     GetWebDialogDelegate()->GetDialogSize(&size);
     return size;
   }
diff --git a/chrome/browser/ui/views/content_setting_bubble_contents.cc b/chrome/browser/ui/views/content_setting_bubble_contents.cc
index 2df5a9d..e27d209 100644
--- a/chrome/browser/ui/views/content_setting_bubble_contents.cc
+++ b/chrome/browser/ui/views/content_setting_bubble_contents.cc
@@ -186,8 +186,8 @@
   RemoveAllChildViews(true);
 }
 
-gfx::Size ContentSettingBubbleContents::GetPreferredSize() const {
-  gfx::Size preferred_size(views::View::GetPreferredSize());
+gfx::Size ContentSettingBubbleContents::CalculatePreferredSize() const {
+  gfx::Size preferred_size(views::View::CalculatePreferredSize());
   int preferred_width =
       (!content_setting_bubble_model_->bubble_content().domain_lists.empty() &&
        (kMinMultiLineContentsWidth > preferred_size.width()))
diff --git a/chrome/browser/ui/views/content_setting_bubble_contents.h b/chrome/browser/ui/views/content_setting_bubble_contents.h
index c02aa1f..7c3045c 100644
--- a/chrome/browser/ui/views/content_setting_bubble_contents.h
+++ b/chrome/browser/ui/views/content_setting_bubble_contents.h
@@ -54,7 +54,7 @@
       views::BubbleBorder::Arrow arrow);
   ~ContentSettingBubbleContents() override;
 
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
  protected:
   // views::BubbleDialogDelegateView:
diff --git a/chrome/browser/ui/views/create_application_shortcut_view.cc b/chrome/browser/ui/views/create_application_shortcut_view.cc
index 5638185..6f80396 100644
--- a/chrome/browser/ui/views/create_application_shortcut_view.cc
+++ b/chrome/browser/ui/views/create_application_shortcut_view.cc
@@ -143,7 +143,7 @@
   }
 }
 
-gfx::Size CreateChromeApplicationShortcutView::GetPreferredSize() const {
+gfx::Size CreateChromeApplicationShortcutView::CalculatePreferredSize() 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 72095a2..a27859a 100644
--- a/chrome/browser/ui/views/create_application_shortcut_view.h
+++ b/chrome/browser/ui/views/create_application_shortcut_view.h
@@ -41,7 +41,7 @@
   void InitControls();
 
   // DialogDelegateView:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   base::string16 GetDialogButtonLabel(ui::DialogButton button) const override;
   bool IsDialogButtonEnabled(ui::DialogButton button) const override;
   ui::ModalType GetModalType() const override;
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_list_view.cc b/chrome/browser/ui/views/desktop_capture/desktop_media_list_view.cc
index c3fa979a0..2d6cd74 100644
--- a/chrome/browser/ui/views/desktop_capture/desktop_media_list_view.cc
+++ b/chrome/browser/ui/views/desktop_capture/desktop_media_list_view.cc
@@ -95,7 +95,7 @@
   return nullptr;
 }
 
-gfx::Size DesktopMediaListView::GetPreferredSize() const {
+gfx::Size DesktopMediaListView::CalculatePreferredSize() const {
   int total_rows =
       (child_count() + active_style_->columns - 1) / active_style_->columns;
   return gfx::Size(active_style_->columns * active_style_->item_size.width(),
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_list_view.h b/chrome/browser/ui/views/desktop_capture/desktop_media_list_view.h
index a8cf0b9..e6e4a78 100644
--- a/chrome/browser/ui/views/desktop_capture/desktop_media_list_view.h
+++ b/chrome/browser/ui/views/desktop_capture/desktop_media_list_view.h
@@ -39,7 +39,7 @@
   DesktopMediaSourceView* GetSelection();
 
   // views::View overrides.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   bool OnKeyPressed(const ui::KeyEvent& event) override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc b/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc
index 3497c26b..d38df91 100644
--- a/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc
+++ b/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc
@@ -279,7 +279,7 @@
   parent_ = nullptr;
 }
 
-gfx::Size DesktopMediaPickerDialogView::GetPreferredSize() const {
+gfx::Size DesktopMediaPickerDialogView::CalculatePreferredSize() const {
   static const size_t kDialogViewWidth = 600;
   return gfx::Size(kDialogViewWidth, GetHeightForWidth(kDialogViewWidth));
 }
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.h b/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.h
index d4b44e5..fa8a581 100644
--- a/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.h
+++ b/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.h
@@ -46,7 +46,7 @@
   void TabSelectedAt(int index) override;
 
   // views::View overrides.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // views::DialogDelegateView overrides.
   ui::ModalType GetModalType() const override;
diff --git a/chrome/browser/ui/views/device_chooser_content_view.cc b/chrome/browser/ui/views/device_chooser_content_view.cc
index 9f9835e..e44477dcf 100644
--- a/chrome/browser/ui/views/device_chooser_content_view.cc
+++ b/chrome/browser/ui/views/device_chooser_content_view.cc
@@ -111,7 +111,7 @@
   views::View::Layout();
 }
 
-gfx::Size DeviceChooserContentView::GetPreferredSize() const {
+gfx::Size DeviceChooserContentView::CalculatePreferredSize() const {
   return gfx::Size(402, 320);
 }
 
diff --git a/chrome/browser/ui/views/device_chooser_content_view.h b/chrome/browser/ui/views/device_chooser_content_view.h
index de3a430..367497a 100644
--- a/chrome/browser/ui/views/device_chooser_content_view.h
+++ b/chrome/browser/ui/views/device_chooser_content_view.h
@@ -36,7 +36,7 @@
 
   // views::View:
   void Layout() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // ui::TableModel:
   int RowCount() override;
diff --git a/chrome/browser/ui/views/download/download_item_view.cc b/chrome/browser/ui/views/download/download_item_view.cc
index ebbd481a..bbd9a69 100644
--- a/chrome/browser/ui/views/download/download_item_view.cc
+++ b/chrome/browser/ui/views/download/download_item_view.cc
@@ -380,7 +380,7 @@
       GetTextColor());
 }
 
-gfx::Size DownloadItemView::GetPreferredSize() const {
+gfx::Size DownloadItemView::CalculatePreferredSize() const {
   int width = 0;
   // We set the height to the height of two rows or text plus margins.
   int child_height = font_list_.GetBaseline() + kVerticalTextPadding +
diff --git a/chrome/browser/ui/views/download/download_item_view.h b/chrome/browser/ui/views/download/download_item_view.h
index b3c24b3e..981bdd95 100644
--- a/chrome/browser/ui/views/download/download_item_view.h
+++ b/chrome/browser/ui/views/download/download_item_view.h
@@ -97,7 +97,7 @@
 
   // views::View:
   void Layout() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   bool OnMousePressed(const ui::MouseEvent& event) override;
   bool OnMouseDragged(const ui::MouseEvent& event) override;
   void OnMouseReleased(const ui::MouseEvent& event) override;
diff --git a/chrome/browser/ui/views/download/download_shelf_view.cc b/chrome/browser/ui/views/download/download_shelf_view.cc
index f90fac8..c55fa61 100644
--- a/chrome/browser/ui/views/download/download_shelf_view.cc
+++ b/chrome/browser/ui/views/download/download_shelf_view.cc
@@ -202,7 +202,7 @@
   return browser_;
 }
 
-gfx::Size DownloadShelfView::GetPreferredSize() const {
+gfx::Size DownloadShelfView::CalculatePreferredSize() const {
   gfx::Size prefsize(kEndPadding + kStartPadding + 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 7d6e9f0..5b557e1 100644
--- a/chrome/browser/ui/views/download/download_shelf_view.h
+++ b/chrome/browser/ui/views/download/download_shelf_view.h
@@ -59,7 +59,7 @@
   BrowserView* get_parent() { return parent_; }
 
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) override;
diff --git a/chrome/browser/ui/views/extensions/bookmark_app_confirmation_view.cc b/chrome/browser/ui/views/extensions/bookmark_app_confirmation_view.cc
index f9df93a4..9cba2d5 100644
--- a/chrome/browser/ui/views/extensions/bookmark_app_confirmation_view.cc
+++ b/chrome/browser/ui/views/extensions/bookmark_app_confirmation_view.cc
@@ -167,7 +167,7 @@
 }
 
 gfx::Size BookmarkAppConfirmationView::GetMinimumSize() const {
-  gfx::Size size(views::DialogDelegateView::GetPreferredSize());
+  gfx::Size size(views::DialogDelegateView::CalculatePreferredSize());
   size.SetToMax(gfx::Size(kMinBubbleWidth, 0));
   return size;
 }
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 6bea463..c15d2b7 100644
--- a/chrome/browser/ui/views/extensions/extension_install_dialog_view.cc
+++ b/chrome/browser/ui/views/extensions/extension_install_dialog_view.cc
@@ -658,8 +658,8 @@
   layout_->AddView(detail_label);
 }
 
-gfx::Size ExpandableContainerView::DetailsView::GetPreferredSize() const {
-  gfx::Size size = views::View::GetPreferredSize();
+gfx::Size ExpandableContainerView::DetailsView::CalculatePreferredSize() const {
+  gfx::Size size = views::View::CalculatePreferredSize();
   return gfx::Size(size.width(), size.height() * state_);
 }
 
diff --git a/chrome/browser/ui/views/extensions/extension_install_dialog_view.h b/chrome/browser/ui/views/extensions/extension_install_dialog_view.h
index 2c3541fc..de6da73 100644
--- a/chrome/browser/ui/views/extensions/extension_install_dialog_view.h
+++ b/chrome/browser/ui/views/extensions/extension_install_dialog_view.h
@@ -165,7 +165,7 @@
     ~DetailsView() override {}
 
     // views::View:
-    gfx::Size GetPreferredSize() const override;
+    gfx::Size CalculatePreferredSize() const override;
 
     void AddDetail(const base::string16& detail);
 
diff --git a/chrome/browser/ui/views/extensions/extension_popup.cc b/chrome/browser/ui/views/extensions/extension_popup.cc
index ea937f9..fab316f 100644
--- a/chrome/browser/ui/views/extensions/extension_popup.cc
+++ b/chrome/browser/ui/views/extensions/extension_popup.cc
@@ -144,9 +144,9 @@
   SizeToContents();
 }
 
-gfx::Size ExtensionPopup::GetPreferredSize() const {
+gfx::Size ExtensionPopup::CalculatePreferredSize() const {
   // Constrain the size to popup min/max.
-  gfx::Size sz = views::View::GetPreferredSize();
+  gfx::Size sz = views::View::CalculatePreferredSize();
   sz.set_width(std::max(kMinWidth, std::min(kMaxWidth, sz.width())));
   sz.set_height(std::max(kMinHeight, std::min(kMaxHeight, sz.height())));
   return sz;
diff --git a/chrome/browser/ui/views/extensions/extension_popup.h b/chrome/browser/ui/views/extensions/extension_popup.h
index b820faa..d3071a7 100644
--- a/chrome/browser/ui/views/extensions/extension_popup.h
+++ b/chrome/browser/ui/views/extensions/extension_popup.h
@@ -70,7 +70,7 @@
   void OnExtensionSizeChanged(ExtensionViewViews* view) override;
 
   // views::View overrides.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) override;
 
diff --git a/chrome/browser/ui/views/extensions/request_file_system_dialog_view.cc b/chrome/browser/ui/views/extensions/request_file_system_dialog_view.cc
index 5605632..97c6736 100644
--- a/chrome/browser/ui/views/extensions/request_file_system_dialog_view.cc
+++ b/chrome/browser/ui/views/extensions/request_file_system_dialog_view.cc
@@ -80,7 +80,7 @@
   return true;
 }
 
-gfx::Size RequestFileSystemDialogView::GetPreferredSize() const {
+gfx::Size RequestFileSystemDialogView::CalculatePreferredSize() const {
   return gfx::Size(kDialogMaxWidth,
                    child_at(0)->GetHeightForWidth(kDialogMaxWidth));
 }
diff --git a/chrome/browser/ui/views/extensions/request_file_system_dialog_view.h b/chrome/browser/ui/views/extensions/request_file_system_dialog_view.h
index ff3ad7b2..09e71da 100644
--- a/chrome/browser/ui/views/extensions/request_file_system_dialog_view.h
+++ b/chrome/browser/ui/views/extensions/request_file_system_dialog_view.h
@@ -40,7 +40,7 @@
   ui::ModalType GetModalType() const override;
   bool Cancel() override;
   bool Accept() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Insets GetInsets() const override;
 
  private:
diff --git a/chrome/browser/ui/views/find_bar_view.cc b/chrome/browser/ui/views/find_bar_view.cc
index 8f149b8..57550b7b 100644
--- a/chrome/browser/ui/views/find_bar_view.cc
+++ b/chrome/browser/ui/views/find_bar_view.cc
@@ -69,11 +69,11 @@
   // views::Label overrides:
   bool CanProcessEventsWithinSubtree() const override { return true; }
 
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     // We need to return at least 1dip so that box layout adds padding on either
     // side (otherwise there will be a jump when our size changes between empty
     // and non-empty).
-    gfx::Size size = views::Label::GetPreferredSize();
+    gfx::Size size = views::Label::CalculatePreferredSize();
     size.set_width(std::max(1, size.width()));
     return size;
   }
@@ -256,8 +256,8 @@
       find_previous_button_->height());
 }
 
-gfx::Size FindBarView::GetPreferredSize() const {
-  gfx::Size size = views::View::GetPreferredSize();
+gfx::Size FindBarView::CalculatePreferredSize() const {
+  gfx::Size size = views::View::CalculatePreferredSize();
   // Ignore the preferred size for the match count label, and just let it take
   // up part of the space for the input textfield. This prevents the overall
   // width from changing every time the match count text changes.
diff --git a/chrome/browser/ui/views/find_bar_view.h b/chrome/browser/ui/views/find_bar_view.h
index 1706e51..a6c0f995 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:
   const char* GetClassName() const override;
   void Layout() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void OnNativeThemeChanged(const ui::NativeTheme* theme) override;
 
   // DropdownBarHostDelegate:
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 398fcf0..523d2b0 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
@@ -593,7 +593,7 @@
 
 gfx::Size OpaqueBrowserFrameViewLayout::GetPreferredSize(
     const views::View* host) const {
-  // This is never used; NonClientView::GetPreferredSize() will be called
+  // This is never used; NonClientView::CalculatePreferredSize() will be called
   // instead.
   NOTREACHED();
   return gfx::Size();
diff --git a/chrome/browser/ui/views/frame/windows_10_caption_button.cc b/chrome/browser/ui/views/frame/windows_10_caption_button.cc
index 672663e..1ee72aa9 100644
--- a/chrome/browser/ui/views/frame/windows_10_caption_button.cc
+++ b/chrome/browser/ui/views/frame/windows_10_caption_button.cc
@@ -23,7 +23,7 @@
   set_animate_on_state_change(true);
 }
 
-gfx::Size Windows10CaptionButton::GetPreferredSize() const {
+gfx::Size Windows10CaptionButton::CalculatePreferredSize() const {
   // TODO(bsep): The sizes in this function are for 1x device scale and don't
   // match Windows button sizes at hidpi.
   constexpr int kButtonHeightRestored = 29;
diff --git a/chrome/browser/ui/views/frame/windows_10_caption_button.h b/chrome/browser/ui/views/frame/windows_10_caption_button.h
index 1ef36b5..44ea3656 100644
--- a/chrome/browser/ui/views/frame/windows_10_caption_button.h
+++ b/chrome/browser/ui/views/frame/windows_10_caption_button.h
@@ -16,7 +16,7 @@
   Windows10CaptionButton(GlassBrowserFrameView* frame_view, ViewID button_type);
 
   // views::CustomButton:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void OnPaint(gfx::Canvas* canvas) override;
 
  private:
diff --git a/chrome/browser/ui/views/ime/ime_window_frame_view.cc b/chrome/browser/ui/views/ime/ime_window_frame_view.cc
index a8bb94d..6b413a5 100644
--- a/chrome/browser/ui/views/ime/ime_window_frame_view.cc
+++ b/chrome/browser/ui/views/ime/ime_window_frame_view.cc
@@ -135,7 +135,7 @@
 
 void ImeWindowFrameView::SizeConstraintsChanged() {}
 
-gfx::Size ImeWindowFrameView::GetPreferredSize() const {
+gfx::Size ImeWindowFrameView::CalculatePreferredSize() const {
   gfx::Size pref_size =
       ime_window_view_->window()->client_view()->GetPreferredSize();
   gfx::Rect bounds(0, 0, pref_size.width(), pref_size.height());
diff --git a/chrome/browser/ui/views/ime/ime_window_frame_view.h b/chrome/browser/ui/views/ime/ime_window_frame_view.h
index 1125825d..fc865979 100644
--- a/chrome/browser/ui/views/ime/ime_window_frame_view.h
+++ b/chrome/browser/ui/views/ime/ime_window_frame_view.h
@@ -46,7 +46,7 @@
   void SizeConstraintsChanged() override;
 
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   gfx::Size GetMaximumSize() const override;
   void Layout() override;
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 59e006b..0cc5107 100644
--- a/chrome/browser/ui/views/importer/import_lock_dialog_view.cc
+++ b/chrome/browser/ui/views/importer/import_lock_dialog_view.cc
@@ -54,7 +54,7 @@
 ImportLockDialogView::~ImportLockDialogView() {
 }
 
-gfx::Size ImportLockDialogView::GetPreferredSize() const {
+gfx::Size ImportLockDialogView::CalculatePreferredSize() 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 c69140a..2ca8f826 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 @@
   ~ImportLockDialogView() override;
 
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
 
   // views::DialogDelegate:
diff --git a/chrome/browser/ui/views/infobars/infobar_container_view.cc b/chrome/browser/ui/views/infobars/infobar_container_view.cc
index cb23d65..0005ff2 100644
--- a/chrome/browser/ui/views/infobars/infobar_container_view.cc
+++ b/chrome/browser/ui/views/infobars/infobar_container_view.cc
@@ -75,7 +75,7 @@
   RemoveAllInfoBarsForDestruction();
 }
 
-gfx::Size InfoBarContainerView::GetPreferredSize() const {
+gfx::Size InfoBarContainerView::CalculatePreferredSize() const {
   int total_height;
   int overlap = GetVerticalOverlap(&total_height);
   total_height -= overlap;
diff --git a/chrome/browser/ui/views/infobars/infobar_container_view.h b/chrome/browser/ui/views/infobars/infobar_container_view.h
index b73ea89e..1bf42195 100644
--- a/chrome/browser/ui/views/infobars/infobar_container_view.h
+++ b/chrome/browser/ui/views/infobars/infobar_container_view.h
@@ -22,7 +22,7 @@
   ~InfoBarContainerView() override;
 
   // AccessiblePaneView:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   const char* GetClassName() const override;
   void Layout() override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
diff --git a/chrome/browser/ui/views/infobars/infobar_view.cc b/chrome/browser/ui/views/infobars/infobar_view.cc
index d548938..ecdb2ba0 100644
--- a/chrome/browser/ui/views/infobars/infobar_view.cc
+++ b/chrome/browser/ui/views/infobars/infobar_view.cc
@@ -284,7 +284,7 @@
   node_data->AddStringAttribute(ui::AX_ATTR_SHORTCUT, "Alt+Shift+A");
 }
 
-gfx::Size InfoBarView::GetPreferredSize() const {
+gfx::Size InfoBarView::CalculatePreferredSize() const {
   ChromeLayoutProvider* layout_provider = ChromeLayoutProvider::Get();
 
   const int related_control_spacing = layout_provider->GetDistanceMetric(
diff --git a/chrome/browser/ui/views/infobars/infobar_view.h b/chrome/browser/ui/views/infobars/infobar_view.h
index 058237b..f4d69c1e 100644
--- a/chrome/browser/ui/views/infobars/infobar_view.h
+++ b/chrome/browser/ui/views/infobars/infobar_view.h
@@ -95,7 +95,7 @@
 
   // views::View:
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // views::ExternalFocusTracker:
   void OnWillChangeFocus(View* focused_before, View* focused_now) override;
diff --git a/chrome/browser/ui/views/location_bar/bubble_icon_view.cc b/chrome/browser/ui/views/location_bar/bubble_icon_view.cc
index 3006d9b..a62fb9a 100644
--- a/chrome/browser/ui/views/location_bar/bubble_icon_view.cc
+++ b/chrome/browser/ui/views/location_bar/bubble_icon_view.cc
@@ -63,7 +63,7 @@
   return !IsBubbleShowing() && image_->GetTooltipText(p, tooltip);
 }
 
-gfx::Size BubbleIconView::GetPreferredSize() const {
+gfx::Size BubbleIconView::CalculatePreferredSize() const {
   gfx::Rect image_rect(image_->GetPreferredSize());
   image_rect.Inset(-gfx::Insets(LocationBarView::kIconInteriorPadding));
   DCHECK_EQ(image_rect.height(),
diff --git a/chrome/browser/ui/views/location_bar/bubble_icon_view.h b/chrome/browser/ui/views/location_bar/bubble_icon_view.h
index c45adfc..efdaf16 100644
--- a/chrome/browser/ui/views/location_bar/bubble_icon_view.h
+++ b/chrome/browser/ui/views/location_bar/bubble_icon_view.h
@@ -63,7 +63,7 @@
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
   bool GetTooltipText(const gfx::Point& p,
                       base::string16* tooltip) const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   bool OnMousePressed(const ui::MouseEvent& event) override;
   void OnMouseReleased(const ui::MouseEvent& 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 8d76931..de83948 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
@@ -167,7 +167,7 @@
   return false;
 }
 
-gfx::Size IconLabelBubbleView::GetPreferredSize() const {
+gfx::Size IconLabelBubbleView::CalculatePreferredSize() 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 fe7d6d5..b350a1b 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
@@ -86,7 +86,7 @@
   virtual bool IsBubbleShowing() const;
 
   // views::InkDropHostView:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   bool OnMousePressed(const ui::MouseEvent& event) override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
diff --git a/chrome/browser/ui/views/location_bar/icon_label_bubble_view_unittest.cc b/chrome/browser/ui/views/location_bar/icon_label_bubble_view_unittest.cc
index d5457936..3fe2d65 100644
--- a/chrome/browser/ui/views/location_bar/icon_label_bubble_view_unittest.cc
+++ b/chrome/browser/ui/views/location_bar/icon_label_bubble_view_unittest.cc
@@ -348,8 +348,8 @@
 #endif
 
 #if defined(USE_ASH)
-// Verifies IconLabelBubbleView::GetPreferredSize() doesn't crash when there is
-// a widget but no compositor.
+// Verifies IconLabelBubbleView::CalculatePreferredSize() doesn't crash when
+// there is a widget but no compositor.
 using IconLabelBubbleViewCrashTest = views::ViewsTestBase;
 
 TEST_F(IconLabelBubbleViewCrashTest,
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 1e6ef680..8d41a703 100644
--- a/chrome/browser/ui/views/location_bar/keyword_hint_view.cc
+++ b/chrome/browser/ui/views/location_bar/keyword_hint_view.cc
@@ -116,7 +116,7 @@
   }
 }
 
-gfx::Size KeywordHintView::GetPreferredSize() const {
+gfx::Size KeywordHintView::CalculatePreferredSize() const {
   // Height will be ignored by the LocationBarView.
   return gfx::Size(leading_label_->GetPreferredSize().width() +
                        chip_container_->GetPreferredSize().width() +
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 43933895..3f6b662 100644
--- a/chrome/browser/ui/views/location_bar/keyword_hint_view.h
+++ b/chrome/browser/ui/views/location_bar/keyword_hint_view.h
@@ -46,7 +46,7 @@
 
  private:
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   // The minimum size is just big enough to show the tab.
   gfx::Size GetMinimumSize() const override;
   void Layout() override;
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 500628b..e9ec8b6 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_view.cc
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -408,7 +408,7 @@
   node_data->role = ui::AX_ROLE_GROUP;
 }
 
-gfx::Size LocationBarView::GetPreferredSize() const {
+gfx::Size LocationBarView::CalculatePreferredSize() const {
   // Compute minimum height.
   gfx::Size min_size(0, GetLayoutConstant(LOCATION_BAR_HEIGHT));
 
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 6eb7d31..3f567992 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_view.h
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.h
@@ -225,7 +225,7 @@
   // views::View:
   bool HasFocus() const override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   void OnNativeThemeChanged(const ui::NativeTheme* theme) override;
 
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 e2e3280a..6e4e5a7 100644
--- a/chrome/browser/ui/views/location_bar/selected_keyword_view.cc
+++ b/chrome/browser/ui/views/location_bar/selected_keyword_view.cc
@@ -43,7 +43,7 @@
           : ui::NativeTheme::kColorId_LinkEnabled);
 }
 
-gfx::Size SelectedKeywordView::GetPreferredSize() const {
+gfx::Size SelectedKeywordView::CalculatePreferredSize() const {
   // Height will be ignored by the LocationBarView.
   return GetSizeForLabelWidth(full_label_.GetPreferredSize().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 0191e11..f87ec00 100644
--- a/chrome/browser/ui/views/location_bar/selected_keyword_view.h
+++ b/chrome/browser/ui/views/location_bar/selected_keyword_view.h
@@ -33,7 +33,7 @@
   SkColor GetTextColor() const override;
 
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   void Layout() override;
 
diff --git a/chrome/browser/ui/views/location_bar/zoom_bubble_view.cc b/chrome/browser/ui/views/location_bar/zoom_bubble_view.cc
index 6112022..b025dc2 100644
--- a/chrome/browser/ui/views/location_bar/zoom_bubble_view.cc
+++ b/chrome/browser/ui/views/location_bar/zoom_bubble_view.cc
@@ -81,7 +81,7 @@
   ~ZoomValue() override {}
 
   // views::Label:
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     return gfx::Size(max_width_, GetHeightForWidth(max_width_));
   }
 
diff --git a/chrome/browser/ui/views/omnibox/omnibox_result_view.cc b/chrome/browser/ui/views/omnibox/omnibox_result_view.cc
index dab6daf3..a64ff359 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_result_view.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_result_view.cc
@@ -300,7 +300,7 @@
     NotifyAccessibilityEvent(ui::AX_EVENT_SELECTION, true);
 }
 
-gfx::Size OmniboxResultView::GetPreferredSize() const {
+gfx::Size OmniboxResultView::CalculatePreferredSize() const {
   int height = GetTextHeight() + (2 * GetVerticalMargin());
   if (match_.answer)
     height += GetAnswerHeight() + kVerticalPadding;
diff --git a/chrome/browser/ui/views/omnibox/omnibox_result_view.h b/chrome/browser/ui/views/omnibox/omnibox_result_view.h
index 8e0126dd..673bc256 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_result_view.h
+++ b/chrome/browser/ui/views/omnibox/omnibox_result_view.h
@@ -67,7 +67,7 @@
   void OnSelected();
 
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
   void OnNativeThemeChanged(const ui::NativeTheme* theme) override;
 
diff --git a/chrome/browser/ui/views/page_info/page_info_bubble_view.cc b/chrome/browser/ui/views/page_info/page_info_bubble_view.cc
index 8723f74..54b9e1b 100644
--- a/chrome/browser/ui/views/page_info/page_info_bubble_view.cc
+++ b/chrome/browser/ui/views/page_info/page_info_bubble_view.cc
@@ -567,9 +567,9 @@
                      weak_factory_.GetWeakPtr(), source));
 }
 
-gfx::Size PageInfoBubbleView::GetPreferredSize() const {
+gfx::Size PageInfoBubbleView::CalculatePreferredSize() const {
   if (header_ == nullptr && site_settings_view_ == nullptr)
-    return views::View::GetPreferredSize();
+    return views::View::CalculatePreferredSize();
 
   int height = 0;
   if (header_)
diff --git a/chrome/browser/ui/views/page_info/page_info_bubble_view.h b/chrome/browser/ui/views/page_info/page_info_bubble_view.h
index dc20be5..d8cfbfd9 100644
--- a/chrome/browser/ui/views/page_info/page_info_bubble_view.h
+++ b/chrome/browser/ui/views/page_info/page_info_bubble_view.h
@@ -130,7 +130,7 @@
                               int event_flags) override;
 
   // views::View implementation.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // PageInfoUI implementations.
   void SetCookieInfo(const CookieInfoList& cookie_info_list) override;
diff --git a/chrome/browser/ui/views/passwords/account_chooser_dialog_view.cc b/chrome/browser/ui/views/passwords/account_chooser_dialog_view.cc
index 059e4a8..c601beb 100644
--- a/chrome/browser/ui/views/passwords/account_chooser_dialog_view.cc
+++ b/chrome/browser/ui/views/passwords/account_chooser_dialog_view.cc
@@ -178,7 +178,7 @@
   return l10n_util::GetStringUTF16(message_id);
 }
 
-gfx::Size AccountChooserDialogView::GetPreferredSize() const {
+gfx::Size AccountChooserDialogView::CalculatePreferredSize() const {
   return gfx::Size(kDesiredWidth, GetHeightForWidth(kDesiredWidth));
 }
 
diff --git a/chrome/browser/ui/views/passwords/account_chooser_dialog_view.h b/chrome/browser/ui/views/passwords/account_chooser_dialog_view.h
index 2777451..ae50ed2 100644
--- a/chrome/browser/ui/views/passwords/account_chooser_dialog_view.h
+++ b/chrome/browser/ui/views/passwords/account_chooser_dialog_view.h
@@ -45,7 +45,7 @@
   base::string16 GetDialogButtonLabel(ui::DialogButton button) const override;
 
   // views::View
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // StyledLabelListener:
   void StyledLabelLinkClicked(views::StyledLabel* label,
diff --git a/chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.cc b/chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.cc
index 39ba98c8..9e248963 100644
--- a/chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.cc
+++ b/chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.cc
@@ -124,7 +124,7 @@
   return ui::DIALOG_BUTTON_NONE;
 }
 
-gfx::Size AutoSigninFirstRunDialogView::GetPreferredSize() const {
+gfx::Size AutoSigninFirstRunDialogView::CalculatePreferredSize() const {
   return gfx::Size(kDesiredWidth, GetHeightForWidth(kDesiredWidth));
 }
 
diff --git a/chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.h b/chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.h
index e06674e9..e6095f3 100644
--- a/chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.h
+++ b/chrome/browser/ui/views/passwords/auto_signin_first_run_dialog_view.h
@@ -37,7 +37,7 @@
   int GetDialogButtons() const override;
 
   // views::View
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // views::ButtonListener:
   void ButtonPressed(views::Button* sender, const ui::Event& event) override;
diff --git a/chrome/browser/ui/views/passwords/credentials_item_view.cc b/chrome/browser/ui/views/passwords/credentials_item_view.cc
index f31e5b48..5976ca7 100644
--- a/chrome/browser/ui/views/passwords/credentials_item_view.cc
+++ b/chrome/browser/ui/views/passwords/credentials_item_view.cc
@@ -142,7 +142,7 @@
   return GetPreferredSize().height();
 }
 
-gfx::Size CredentialsItemView::GetPreferredSize() const {
+gfx::Size CredentialsItemView::CalculatePreferredSize() const {
   gfx::Size labels_size = GetTextLabelsSize(upper_label_, lower_label_);
   gfx::Size size = gfx::Size(kAvatarImageSize + labels_size.width(),
                              std::max(kAvatarImageSize, labels_size.height()));
diff --git a/chrome/browser/ui/views/passwords/credentials_item_view.h b/chrome/browser/ui/views/passwords/credentials_item_view.h
index 755877b..adffb5b 100644
--- a/chrome/browser/ui/views/passwords/credentials_item_view.h
+++ b/chrome/browser/ui/views/passwords/credentials_item_view.h
@@ -52,7 +52,7 @@
 
  private:
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   int GetHeightForWidth(int w) const override;
   void Layout() override;
   void OnPaint(gfx::Canvas* canvas) override;
diff --git a/chrome/browser/ui/views/payments/payment_request_dialog_view.cc b/chrome/browser/ui/views/payments/payment_request_dialog_view.cc
index 0143593b..14ff3d01 100644
--- a/chrome/browser/ui/views/payments/payment_request_dialog_view.cc
+++ b/chrome/browser/ui/views/payments/payment_request_dialog_view.cc
@@ -372,7 +372,7 @@
   AddChildView(&throbber_overlay_);
 }
 
-gfx::Size PaymentRequestDialogView::GetPreferredSize() const {
+gfx::Size PaymentRequestDialogView::CalculatePreferredSize() const {
   return gfx::Size(GetActualDialogWidth(), kDialogHeight);
 }
 
diff --git a/chrome/browser/ui/views/payments/payment_request_dialog_view.h b/chrome/browser/ui/views/payments/payment_request_dialog_view.h
index 99ff8eb..cce5add 100644
--- a/chrome/browser/ui/views/payments/payment_request_dialog_view.h
+++ b/chrome/browser/ui/views/payments/payment_request_dialog_view.h
@@ -173,7 +173,7 @@
   void SetupSpinnerOverlay();
 
   // views::View
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void ViewHierarchyChanged(
       const ViewHierarchyChangedDetails& details) override;
 
diff --git a/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc b/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc
index 2af4bf9..bd8f75b 100644
--- a/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc
+++ b/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc
@@ -156,7 +156,7 @@
   const gfx::FontList& GetTitleFontList() const override;
   base::string16 GetWindowTitle() const override;
   void OnWidgetDestroying(views::Widget* widget) override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
   bool Cancel() override;
   bool Accept() override;
@@ -303,7 +303,7 @@
   }
 }
 
-gfx::Size PermissionsBubbleDialogDelegateView::GetPreferredSize() const {
+gfx::Size PermissionsBubbleDialogDelegateView::CalculatePreferredSize() const {
   // TODO(estade): bubbles should default to this width.
   const int kWidth = 320 - GetInsets().width();
   return gfx::Size(kWidth, GetHeightForWidth(kWidth));
diff --git a/chrome/browser/ui/views/profiles/avatar_button.cc b/chrome/browser/ui/views/profiles/avatar_button.cc
index d376c6b..8945445 100644
--- a/chrome/browser/ui/views/profiles/avatar_button.cc
+++ b/chrome/browser/ui/views/profiles/avatar_button.cc
@@ -247,10 +247,10 @@
   return LabelButton::GetMinimumSize();
 }
 
-gfx::Size AvatarButton::GetPreferredSize() const {
+gfx::Size AvatarButton::CalculatePreferredSize() const {
   // TODO(estade): Calculate the height instead of hardcoding to 20 for the
   // not-condensible case.
-  gfx::Size size(LabelButton::GetPreferredSize().width(), 20);
+  gfx::Size size(LabelButton::CalculatePreferredSize().width(), 20);
 
   if (IsCondensible()) {
     // Returns the normal size of the button (when it does not overlap the
diff --git a/chrome/browser/ui/views/profiles/avatar_button.h b/chrome/browser/ui/views/profiles/avatar_button.h
index e0f4c9f..fd1fbc4 100644
--- a/chrome/browser/ui/views/profiles/avatar_button.h
+++ b/chrome/browser/ui/views/profiles/avatar_button.h
@@ -31,7 +31,7 @@
   // views::LabelButton:
   void OnGestureEvent(ui::GestureEvent* event) override;
   gfx::Size GetMinimumSize() const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   std::unique_ptr<views::InkDropHighlight> CreateInkDropHighlight()
       const override;
   std::unique_ptr<views::InkDropMask> CreateInkDropMask() const override;
diff --git a/chrome/browser/ui/views/profiles/profile_chooser_view.cc b/chrome/browser/ui/views/profiles/profile_chooser_view.cc
index 2e2e43f7..186376d9 100644
--- a/chrome/browser/ui/views/profiles/profile_chooser_view.cc
+++ b/chrome/browser/ui/views/profiles/profile_chooser_view.cc
@@ -487,7 +487,7 @@
     title_label_->SetBounds(label_padding, 0, label_width, height());
   }
 
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() 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 b86fe476..2b069658 100644
--- a/chrome/browser/ui/views/profiles/user_manager_view.cc
+++ b/chrome/browser/ui/views/profiles/user_manager_view.cc
@@ -72,7 +72,7 @@
 
 UserManagerProfileDialogDelegate::~UserManagerProfileDialogDelegate() {}
 
-gfx::Size UserManagerProfileDialogDelegate::GetPreferredSize() const {
+gfx::Size UserManagerProfileDialogDelegate::CalculatePreferredSize() const {
   return gfx::Size(UserManagerProfileDialog::kDialogWidth,
                    UserManagerProfileDialog::kDialogHeight);
 }
@@ -404,7 +404,7 @@
   return true;
 }
 
-gfx::Size UserManagerView::GetPreferredSize() const {
+gfx::Size UserManagerView::CalculatePreferredSize() const {
   return gfx::Size(UserManager::kWindowWidth, UserManager::kWindowHeight);
 }
 
diff --git a/chrome/browser/ui/views/profiles/user_manager_view.h b/chrome/browser/ui/views/profiles/user_manager_view.h
index e140aab..8f1ccd2 100644
--- a/chrome/browser/ui/views/profiles/user_manager_view.h
+++ b/chrome/browser/ui/views/profiles/user_manager_view.h
@@ -43,7 +43,7 @@
   void OnDialogDestroyed();
 
   // views::DialogDelegate:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   bool CanResize() const override;
   bool CanMaximize() const override;
   bool CanMinimize() const override;
@@ -118,7 +118,7 @@
 
   // views::View:
   bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // views::DialogDelegateView:
   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 8660870..6bbc7bb 100644
--- a/chrome/browser/ui/views/screen_capture_notification_ui_views.cc
+++ b/chrome/browser/ui/views/screen_capture_notification_ui_views.cc
@@ -90,7 +90,7 @@
   gfx::NativeViewId OnStarted(const base::Closure& stop_callback) override;
 
   // views::View overrides.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
 
   // views::WidgetDelegateView overrides.
@@ -219,7 +219,7 @@
 #endif
 }
 
-gfx::Size ScreenCaptureNotificationUIViews::GetPreferredSize() const {
+gfx::Size ScreenCaptureNotificationUIViews::CalculatePreferredSize() 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/settings_reset_prompt_dialog.cc b/chrome/browser/ui/views/settings_reset_prompt_dialog.cc
index 836e4a1..d0a498c9 100644
--- a/chrome/browser/ui/views/settings_reset_prompt_dialog.cc
+++ b/chrome/browser/ui/views/settings_reset_prompt_dialog.cc
@@ -135,6 +135,6 @@
 
 // View overrides.
 
-gfx::Size SettingsResetPromptDialog::GetPreferredSize() const {
+gfx::Size SettingsResetPromptDialog::CalculatePreferredSize() const {
   return gfx::Size(kDialogWidth, GetHeightForWidth(kDialogWidth));
 }
diff --git a/chrome/browser/ui/views/settings_reset_prompt_dialog.h b/chrome/browser/ui/views/settings_reset_prompt_dialog.h
index 3f87c01b..c668bcfe 100644
--- a/chrome/browser/ui/views/settings_reset_prompt_dialog.h
+++ b/chrome/browser/ui/views/settings_reset_prompt_dialog.h
@@ -52,7 +52,7 @@
   bool Close() override;
 
   // views::View overrides.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
  private:
   Browser* browser_;
diff --git a/chrome/browser/ui/views/status_bubble_views.cc b/chrome/browser/ui/views/status_bubble_views.cc
index bf2ac2f..05cef60 100644
--- a/chrome/browser/ui/views/status_bubble_views.cc
+++ b/chrome/browser/ui/views/status_bubble_views.cc
@@ -678,7 +678,7 @@
   // Overlap the client edge that's shown in restored mode, or when there is no
   // client edge this makes the bubble snug with the corner of the window.
   int overlap = kShadowThickness;
-  int height = GetPreferredSize().height();
+  int height = GetPreferredHeight();
   int base_view_height = base_view()->bounds().height();
   gfx::Point origin(-overlap, base_view_height - height + overlap);
   SetBounds(origin.x(), origin.y(), base_view()->bounds().width() / 3, height);
@@ -698,8 +698,8 @@
   }
 }
 
-gfx::Size StatusBubbleViews::GetPreferredSize() {
-  return gfx::Size(0, gfx::FontList().GetHeight() + kTotalVerticalPadding);
+int StatusBubbleViews::GetPreferredHeight() {
+  return gfx::FontList().GetHeight() + kTotalVerticalPadding;
 }
 
 void StatusBubbleViews::SetBounds(int x, int y, int w, int h) {
diff --git a/chrome/browser/ui/views/status_bubble_views.h b/chrome/browser/ui/views/status_bubble_views.h
index 5e753d8..8e0abcc1 100644
--- a/chrome/browser/ui/views/status_bubble_views.h
+++ b/chrome/browser/ui/views/status_bubble_views.h
@@ -46,7 +46,7 @@
 
   // The bubble only has a preferred height: the sum of the height of
   // the font and kTotalVerticalPadding.
-  gfx::Size GetPreferredSize();
+  int GetPreferredHeight();
 
   // Calculate and set new position for status bubble.
   void Reposition();
diff --git a/chrome/browser/ui/views/tab_icon_view.cc b/chrome/browser/ui/views/tab_icon_view.cc
index c8731792..3b870b8 100644
--- a/chrome/browser/ui/views/tab_icon_view.cc
+++ b/chrome/browser/ui/views/tab_icon_view.cc
@@ -114,7 +114,7 @@
                        dest_h, true);
 }
 
-gfx::Size TabIconView::GetPreferredSize() const {
+gfx::Size TabIconView::CalculatePreferredSize() 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 e5985eda..7ef95df 100644
--- a/chrome/browser/ui/views/tab_icon_view.h
+++ b/chrome/browser/ui/views/tab_icon_view.h
@@ -32,7 +32,7 @@
 
  private:
   // views::MenuButton:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   const char* GetClassName() const override;
   void OnPaint(gfx::Canvas* canvas) override;
 
diff --git a/chrome/browser/ui/views/tabs/tab_strip.cc b/chrome/browser/ui/views/tabs/tab_strip.cc
index 0fa6186..6c5a019 100644
--- a/chrome/browser/ui/views/tabs/tab_strip.cc
+++ b/chrome/browser/ui/views/tabs/tab_strip.cc
@@ -1471,7 +1471,7 @@
   return kViewClassName;
 }
 
-gfx::Size TabStrip::GetPreferredSize() const {
+gfx::Size TabStrip::CalculatePreferredSize() const {
   int needed_tab_width;
   if (touch_layout_ || adjust_layout_) {
     // For stacked tabs the minimum size is calculated as the size needed to
diff --git a/chrome/browser/ui/views/tabs/tab_strip.h b/chrome/browser/ui/views/tabs/tab_strip.h
index 163a628b..41bad6f 100644
--- a/chrome/browser/ui/views/tabs/tab_strip.h
+++ b/chrome/browser/ui/views/tabs/tab_strip.h
@@ -247,7 +247,7 @@
   void Layout() override;
   void PaintChildren(const ui::PaintContext& context) override;
   const char* GetClassName() const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() 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.
   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 1153ef7..feb52eef 100644
--- a/chrome/browser/ui/views/task_manager_view.cc
+++ b/chrome/browser/ui/views/task_manager_view.cc
@@ -156,7 +156,7 @@
   tab_table_->SetSortDescriptors(descriptor_list);
 }
 
-gfx::Size TaskManagerView::GetPreferredSize() const {
+gfx::Size TaskManagerView::CalculatePreferredSize() const {
   return gfx::Size(460, 270);
 }
 
diff --git a/chrome/browser/ui/views/task_manager_view.h b/chrome/browser/ui/views/task_manager_view.h
index a0a8a62..bdd55e3 100644
--- a/chrome/browser/ui/views/task_manager_view.h
+++ b/chrome/browser/ui/views/task_manager_view.h
@@ -50,7 +50,7 @@
   void SetSortDescriptor(const TableSortDescriptor& descriptor) override;
 
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
 
   // views::DialogDelegateView:
diff --git a/chrome/browser/ui/views/toolbar/app_menu.cc b/chrome/browser/ui/views/toolbar/app_menu.cc
index 023ce5d..79da62d 100644
--- a/chrome/browser/ui/views/toolbar/app_menu.cc
+++ b/chrome/browser/ui/views/toolbar/app_menu.cc
@@ -115,8 +115,8 @@
       : ImageButton(listener) { }
 
   // Overridden from ImageButton.
-  gfx::Size GetPreferredSize() const override {
-    gfx::Size pref = ImageButton::GetPreferredSize();
+  gfx::Size CalculatePreferredSize() const override {
+    gfx::Size pref = ImageButton::CalculatePreferredSize();
     if (border()) {
       gfx::Insets insets = border()->GetInsets();
       pref.Enlarge(insets.width(), insets.height());
@@ -426,7 +426,7 @@
   }
 
   // Overridden from View.
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     // Returned height doesn't matter as MenuItemView forces everything to the
     // height of the menuitemview.
     return gfx::Size(GetMaxChildViewPreferredWidth() * child_count(), 0);
@@ -531,7 +531,7 @@
   ~ZoomView() override {}
 
   // Overridden from View.
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() 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());
diff --git a/chrome/browser/ui/views/toolbar/app_menu_button.cc b/chrome/browser/ui/views/toolbar/app_menu_button.cc
index 3f94b52..f2cd131 100644
--- a/chrome/browser/ui/views/toolbar/app_menu_button.cc
+++ b/chrome/browser/ui/views/toolbar/app_menu_button.cc
@@ -127,7 +127,7 @@
   menu_listeners_.RemoveObserver(listener);
 }
 
-gfx::Size AppMenuButton::GetPreferredSize() const {
+gfx::Size AppMenuButton::CalculatePreferredSize() const {
   gfx::Rect rect(gfx::Size(kIconSize, kIconSize));
   rect.Inset(gfx::Insets(-ToolbarButton::kInteriorPadding));
   return rect.size();
diff --git a/chrome/browser/ui/views/toolbar/app_menu_button.h b/chrome/browser/ui/views/toolbar/app_menu_button.h
index b8fc2be..037081b3 100644
--- a/chrome/browser/ui/views/toolbar/app_menu_button.h
+++ b/chrome/browser/ui/views/toolbar/app_menu_button.h
@@ -56,7 +56,7 @@
   void RemoveMenuListener(views::MenuListener* listener);
 
   // views::MenuButton:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   void OnPaint(gfx::Canvas* canvas) override;
 
diff --git a/chrome/browser/ui/views/toolbar/browser_actions_container.cc b/chrome/browser/ui/views/toolbar/browser_actions_container.cc
index f54f0b2..e43acdb7 100644
--- a/chrome/browser/ui/views/toolbar/browser_actions_container.cc
+++ b/chrome/browser/ui/views/toolbar/browser_actions_container.cc
@@ -308,7 +308,7 @@
   return preferred_width;
 }
 
-gfx::Size BrowserActionsContainer::GetPreferredSize() const {
+gfx::Size BrowserActionsContainer::CalculatePreferredSize() const {
   if (ShownInsideMenu())
     return toolbar_actions_bar_->GetFullSize();
 
diff --git a/chrome/browser/ui/views/toolbar/browser_actions_container.h b/chrome/browser/ui/views/toolbar/browser_actions_container.h
index 4720a7b..c0fff1a 100644
--- a/chrome/browser/ui/views/toolbar/browser_actions_container.h
+++ b/chrome/browser/ui/views/toolbar/browser_actions_container.h
@@ -159,7 +159,7 @@
   int GetWidthForMaxWidth(int max_width) const;
 
   // Overridden from views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   int GetHeightForWidth(int width) const override;
   gfx::Size GetMinimumSize() const override;
   void Layout() override;
diff --git a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc
index 8743b10..274f13e0 100644
--- a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc
+++ b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc
@@ -56,10 +56,10 @@
 ExtensionToolbarMenuView::~ExtensionToolbarMenuView() {
 }
 
-gfx::Size ExtensionToolbarMenuView::GetPreferredSize() const {
-  gfx::Size s = views::ScrollView::GetPreferredSize();
-  // views::ScrollView::GetPreferredSize() includes the contents' size, but
-  // not the scrollbar width. Add it in if necessary.
+gfx::Size ExtensionToolbarMenuView::CalculatePreferredSize() const {
+  gfx::Size s = views::ScrollView::CalculatePreferredSize();
+  // views::ScrollView::CalculatePreferredSize() includes the contents' size,
+  // but not the scrollbar width. Add it in if necessary.
   if (container_->GetPreferredSize().height() > max_height_)
     s.Enlarge(GetScrollBarLayoutWidth(), 0);
   return s;
diff --git a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h
index f3c0b10..0b69ff3 100644
--- a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h
+++ b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h
@@ -34,7 +34,7 @@
   ~ExtensionToolbarMenuView() override;
 
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   int GetHeightForWidth(int width) const override;
   void Layout() override;
 
diff --git a/chrome/browser/ui/views/toolbar/toolbar_action_view.cc b/chrome/browser/ui/views/toolbar/toolbar_action_view.cc
index 710d41fc..b685866 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_action_view.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_action_view.cc
@@ -175,7 +175,7 @@
   return GetImage(views::Button::STATE_NORMAL);
 }
 
-gfx::Size ToolbarActionView::GetPreferredSize() const {
+gfx::Size ToolbarActionView::CalculatePreferredSize() const {
   return gfx::Size(ToolbarActionsBar::IconWidth(false),
                    ToolbarActionsBar::IconHeight());
 }
diff --git a/chrome/browser/ui/views/toolbar/toolbar_action_view.h b/chrome/browser/ui/views/toolbar/toolbar_action_view.h
index 35a834e6..ff3e6536 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_action_view.h
+++ b/chrome/browser/ui/views/toolbar/toolbar_action_view.h
@@ -90,7 +90,7 @@
 
  private:
   // views::MenuButton:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   bool OnMousePressed(const ui::MouseEvent& event) override;
   void OnGestureEvent(ui::GestureEvent* event) override;
   void OnDragDone() override;
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc
index 9570140..348c2c3 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_view.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
@@ -486,7 +486,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // ToolbarView, views::View overrides:
 
-gfx::Size ToolbarView::GetPreferredSize() const {
+gfx::Size ToolbarView::CalculatePreferredSize() const {
   return GetSizeInternal(&View::GetPreferredSize);
 }
 
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.h b/chrome/browser/ui/views/toolbar/toolbar_view.h
index 7d4d5a8..983977ac 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_view.h
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.h
@@ -140,7 +140,7 @@
                                   ui::Accelerator* accelerator) const override;
 
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   void Layout() override;
   void OnThemeChanged() override;
@@ -166,9 +166,9 @@
                       bool animate) override;
 
   // Used to avoid duplicating the near-identical logic of
-  // ToolbarView::GetPreferredSize() and ToolbarView::GetMinimumSize(). These
-  // two functions call through to GetSizeInternal(), passing themselves as the
-  // function pointer |View::*get_size|.
+  // ToolbarView::CalculatePreferredSize() and ToolbarView::GetMinimumSize().
+  // These two functions call through to GetSizeInternal(), passing themselves
+  // as the function pointer |View::*get_size|.
   gfx::Size GetSizeInternal(gfx::Size (View::*get_size)() const) const;
 
   // Given toolbar contents of size |size|, returns the total toolbar size.
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view.cc b/chrome/browser/ui/views/translate/translate_bubble_view.cc
index b6710c30b..bd9c685 100644
--- a/chrome/browser/ui/views/translate/translate_bubble_view.cc
+++ b/chrome/browser/ui/views/translate/translate_bubble_view.cc
@@ -246,7 +246,7 @@
   return BubbleDialogDelegateView::AcceleratorPressed(accelerator);
 }
 
-gfx::Size TranslateBubbleView::GetPreferredSize() const {
+gfx::Size TranslateBubbleView::CalculatePreferredSize() const {
   int width = 0;
   for (int i = 0; i < child_count(); i++) {
     const views::View* child = child_at(i);
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view.h b/chrome/browser/ui/views/translate/translate_bubble_view.h
index d34322c..93b6124 100644
--- a/chrome/browser/ui/views/translate/translate_bubble_view.h
+++ b/chrome/browser/ui/views/translate/translate_bubble_view.h
@@ -93,7 +93,7 @@
 
   // views::View methods.
   bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // views::ComboboxListener methods.
   void OnPerformAction(views::Combobox* combobox) override;
diff --git a/chrome/browser/ui/views/webshare/webshare_target_picker_view.cc b/chrome/browser/ui/views/webshare/webshare_target_picker_view.cc
index 762417f..74dff10 100644
--- a/chrome/browser/ui/views/webshare/webshare_target_picker_view.cc
+++ b/chrome/browser/ui/views/webshare/webshare_target_picker_view.cc
@@ -121,7 +121,7 @@
   table_->SetModel(nullptr);
 }
 
-gfx::Size WebShareTargetPickerView::GetPreferredSize() const {
+gfx::Size WebShareTargetPickerView::CalculatePreferredSize() const {
   return gfx::Size(kDialogWidth, kDialogHeight);
 }
 
diff --git a/chrome/browser/ui/views/webshare/webshare_target_picker_view.h b/chrome/browser/ui/views/webshare/webshare_target_picker_view.h
index 836f13cd..cc90df6 100644
--- a/chrome/browser/ui/views/webshare/webshare_target_picker_view.h
+++ b/chrome/browser/ui/views/webshare/webshare_target_picker_view.h
@@ -42,7 +42,7 @@
   ~WebShareTargetPickerView() override;
 
   // views::View overrides:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // views::WidgetDelegate overrides:
   ui::ModalType GetModalType() const override;
diff --git a/components/exo/shell_surface.cc b/components/exo/shell_surface.cc
index 2f4234a..cd8de94 100644
--- a/components/exo/shell_surface.cc
+++ b/components/exo/shell_surface.cc
@@ -874,7 +874,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // views::Views overrides:
 
-gfx::Size ShellSurface::GetPreferredSize() const {
+gfx::Size ShellSurface::CalculatePreferredSize() const {
   if (!geometry_.IsEmpty())
     return geometry_.size();
 
diff --git a/components/exo/shell_surface.h b/components/exo/shell_surface.h
index 132508e..f8d4a956 100644
--- a/components/exo/shell_surface.h
+++ b/components/exo/shell_surface.h
@@ -242,7 +242,7 @@
   void GetWidgetHitTestMask(gfx::Path* mask) const override;
 
   // Overridden from views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
 
   // Overridden from ash::wm::WindowStateObserver:
diff --git a/components/exo/wayland/clients/client_base.cc b/components/exo/wayland/clients/client_base.cc
index e6043678..137bfb17 100644
--- a/components/exo/wayland/clients/client_base.cc
+++ b/components/exo/wayland/clients/client_base.cc
@@ -288,12 +288,11 @@
     make_current_.reset(
         new ui::ScopedMakeCurrent(gl_context_.get(), gl_surface_.get()));
 
-    if (gl::GLSurfaceEGL::HasEGLExtension("EGL_EXT_image_flush_external") ||
-        gl::GLSurfaceEGL::HasEGLExtension("EGL_ARM_implicit_external_sync")) {
-      egl_sync_type_ = EGL_SYNC_FENCE_KHR;
-    }
+    DCHECK(gl::GLSurfaceEGL::HasEGLExtension("EGL_KHR_fence_sync"));
     if (gl::GLSurfaceEGL::HasEGLExtension("EGL_ANDROID_native_fence_sync")) {
       egl_sync_type_ = EGL_SYNC_NATIVE_FENCE_ANDROID;
+    } else {
+      egl_sync_type_ = EGL_SYNC_FENCE_KHR;
     }
 
     native_interface = sk_sp<const GrGLInterface>(GrGLCreateNativeInterface());
diff --git a/gpu/command_buffer/common/capabilities.h b/gpu/command_buffer/common/capabilities.h
index 7950779..ab7a077 100644
--- a/gpu/command_buffer/common/capabilities.h
+++ b/gpu/command_buffer/common/capabilities.h
@@ -174,9 +174,6 @@
   // See https://crbug.com/710029.
   bool software_to_accelerated_canvas_upgrade = true;
 
-  // When true, non-empty post sub buffer calls are unsupported.
-  bool disable_non_empty_post_sub_buffers = false;
-
   int major_version = 2;
   int minor_version = 0;
 };
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index 5dbc207..11dbc45c 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -3845,10 +3845,6 @@
       !workarounds().disable_software_to_accelerated_canvas_upgrade;
   caps.emulate_rgb_buffer_with_rgba =
       workarounds().disable_gl_rgb_format;
-  if (workarounds().disable_non_empty_post_sub_buffers_for_onscreen_surfaces &&
-      !surface_->IsOffscreen()) {
-    caps.disable_non_empty_post_sub_buffers = true;
-  }
 
   return caps;
 }
diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json
index 15aa3aa3..b2493264 100644
--- a/gpu/config/gpu_driver_bug_list.json
+++ b/gpu/config/gpu_driver_bug_list.json
@@ -845,19 +845,6 @@
       ]
     },
     {
-      "id": 101,
-      "description": "The Mali-Txxx driver hangs when reading from currently displayed buffer",
-      "cr_bugs": [457511],
-      "os": {
-        "type": "chromeos"
-      },
-      "gl_vendor": "ARM.*",
-      "gl_renderer": "Mali-T.*",
-      "features": [
-        "disable_non_empty_post_sub_buffers_for_onscreen_surfaces"
-      ]
-    },
-    {
       "id": 102,
       "description": "Adreno 420 driver loses FBO attachment contents on bound FBO deletion",
       "cr_bugs": [457027],
diff --git a/gpu/config/gpu_driver_bug_workaround_type.h b/gpu/config/gpu_driver_bug_workaround_type.h
index bcf07fc..ef50548 100644
--- a/gpu/config/gpu_driver_bug_workaround_type.h
+++ b/gpu/config/gpu_driver_bug_workaround_type.h
@@ -217,8 +217,6 @@
          disallow_large_instanced_draw)                      \
   GPU_OP(DISABLE_SOFTWARE_TO_ACCELERATED_CANVAS_UPGRADE,     \
          disable_software_to_accelerated_canvas_upgrade)     \
-  GPU_OP(DISABLE_NON_EMPTY_POST_SUB_BUFFERS_FOR_ONSCREEN_SURFACES, \
-         disable_non_empty_post_sub_buffers_for_onscreen_surfaces) \
   GPU_OP(AVOID_STENCIL_BUFFERS,                              \
          avoid_stencil_buffers)                              \
 // clang-format on
diff --git a/gpu/ipc/common/gpu_command_buffer_traits_multi.h b/gpu/ipc/common/gpu_command_buffer_traits_multi.h
index 9c0b46e..2fff38d 100644
--- a/gpu/ipc/common/gpu_command_buffer_traits_multi.h
+++ b/gpu/ipc/common/gpu_command_buffer_traits_multi.h
@@ -133,7 +133,6 @@
   IPC_STRUCT_TRAITS_MEMBER(emulate_rgb_buffer_with_rgba)
   IPC_STRUCT_TRAITS_MEMBER(software_to_accelerated_canvas_upgrade)
   IPC_STRUCT_TRAITS_MEMBER(dc_layers)
-  IPC_STRUCT_TRAITS_MEMBER(disable_non_empty_post_sub_buffers)
   IPC_STRUCT_TRAITS_MEMBER(avoid_stencil_buffers)
 
   IPC_STRUCT_TRAITS_MEMBER(major_version)
diff --git a/mash/example/window_type_launcher/window_type_launcher.cc b/mash/example/window_type_launcher/window_type_launcher.cc
index 3bbcf535..558a42c 100644
--- a/mash/example/window_type_launcher/window_type_launcher.cc
+++ b/mash/example/window_type_launcher/window_type_launcher.cc
@@ -92,7 +92,9 @@
   base::string16 GetWindowTitle() const override {
     return base::ASCIIToUTF16("Window");
   }
-  gfx::Size GetPreferredSize() const override { return gfx::Size(300, 300); }
+  gfx::Size CalculatePreferredSize() const override {
+    return gfx::Size(300, 300);
+  }
 
  private:
   const uint32_t traits_;
@@ -123,7 +125,9 @@
   void OnPaint(gfx::Canvas* canvas) override {
     canvas->FillRect(GetLocalBounds(), color_);
   }
-  gfx::Size GetPreferredSize() const override { return gfx::Size(200, 200); }
+  gfx::Size CalculatePreferredSize() const override {
+    return gfx::Size(200, 200);
+  }
   void Layout() override {
     gfx::Size open_ps = open_button_->GetPreferredSize();
     gfx::Rect local_bounds = GetLocalBounds();
@@ -187,7 +191,9 @@
   void OnPaint(gfx::Canvas* canvas) override {
     canvas->FillRect(GetLocalBounds(), color_);
   }
-  gfx::Size GetPreferredSize() const override { return gfx::Size(250, 250); }
+  gfx::Size CalculatePreferredSize() const override {
+    return gfx::Size(250, 250);
+  }
 
   // Overridden from views::WidgetDelegate:
   bool CanResize() const override { return true; }
diff --git a/mash/quick_launch/quick_launch.cc b/mash/quick_launch/quick_launch.cc
index 9b586ac..cd784e6 100644
--- a/mash/quick_launch/quick_launch.cc
+++ b/mash/quick_launch/quick_launch.cc
@@ -65,7 +65,7 @@
     bounds.Inset(5, 5);
     prompt_->SetBoundsRect(bounds);
   }
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     gfx::Size ps = prompt_->GetPreferredSize();
     ps.Enlarge(500, 10);
     return ps;
diff --git a/mash/simple_wm/simple_wm.cc b/mash/simple_wm/simple_wm.cc
index c96b0e5..22d64a6 100644
--- a/mash/simple_wm/simple_wm.cc
+++ b/mash/simple_wm/simple_wm.cc
@@ -138,7 +138,7 @@
     stroke_bounds.set_height(1);
     canvas->FillRect(stroke_bounds, SK_ColorDKGRAY);
   }
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     std::unique_ptr<views::MdTextButton> measure_button(
         views::MdTextButton::Create(nullptr, base::UTF8ToUTF16("Sample")));
     int height =
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/clip-flex-text-expected.html b/third_party/WebKit/LayoutTests/paint/invalidation/clip-flex-text-expected.html
new file mode 100644
index 0000000..c725420
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/paint/invalidation/clip-flex-text-expected.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html>
+Passes if two lines of text<br>
+are visible.
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/clip-flex-text.html b/third_party/WebKit/LayoutTests/paint/invalidation/clip-flex-text.html
new file mode 100644
index 0000000..accbae65
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/paint/invalidation/clip-flex-text.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<div id="container" style="overflow: hidden; height: 10px">
+  <div style="display: flex">
+    Passes if two lines of text<br>
+    are visible.
+  </div>
+</div>
+<script src="../../resources/run-after-layout-and-paint.js"></script>
+<script>
+runAfterLayoutAndPaint(function() {
+  container.style.height = '100px';
+}, true);
+</script>
diff --git a/third_party/WebKit/Source/core/frame/LocalFrameView.cpp b/third_party/WebKit/Source/core/frame/LocalFrameView.cpp
index f95d7a91..94ec08f 100644
--- a/third_party/WebKit/Source/core/frame/LocalFrameView.cpp
+++ b/third_party/WebKit/Source/core/frame/LocalFrameView.cpp
@@ -3254,7 +3254,7 @@
       if (RuntimeEnabledFeatures::printBrowserEnabled())
         graphics_context.SetPrinting(true);
       Paint(graphics_context, CullRect(LayoutRect::InfiniteIntRect()));
-      paint_controller_->CommitNewDisplayItems(LayoutSize());
+      paint_controller_->CommitNewDisplayItems();
     }
   } else {
     // A null graphics layer can occur for painting of SVG images that are not
diff --git a/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.h b/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.h
index e11fd73..6e4d592 100644
--- a/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.h
+++ b/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.h
@@ -118,7 +118,7 @@
       : DisplayItem(client, type, sizeof(*this)) {}
 
   void Replay(GraphicsContext&) const final { NOTREACHED(); }
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const final {
     NOTREACHED();
   }
diff --git a/third_party/WebKit/Source/platform/BUILD.gn b/third_party/WebKit/Source/platform/BUILD.gn
index 3b995e32..dc77e30 100644
--- a/third_party/WebKit/Source/platform/BUILD.gn
+++ b/third_party/WebKit/Source/platform/BUILD.gn
@@ -1865,8 +1865,8 @@
     "graphics/gpu/WebGLImageConversionTest.cpp",
     "graphics/paint/CullRectTest.cpp",
     "graphics/paint/DisplayItemClientTest.cpp",
-    "graphics/paint/DisplayItemListTest.cpp",
     "graphics/paint/DisplayItemTest.cpp",
+    "graphics/paint/DrawingDisplayItemTest.cpp",
     "graphics/paint/FloatClipRectTest.cpp",
     "graphics/paint/GeometryMapperTest.cpp",
     "graphics/paint/PaintChunkTest.cpp",
diff --git a/third_party/WebKit/Source/platform/graphics/ContentLayerDelegate.cpp b/third_party/WebKit/Source/platform/graphics/ContentLayerDelegate.cpp
index 65aca21..05702a7 100644
--- a/third_party/WebKit/Source/platform/graphics/ContentLayerDelegate.cpp
+++ b/third_party/WebKit/Source/platform/graphics/ContentLayerDelegate.cpp
@@ -90,6 +90,7 @@
     graphics_layer_->Paint(nullptr, disabled_mode);
 
   paint_controller.GetPaintArtifact().AppendToWebDisplayItemList(
+      graphics_layer_->OffsetFromLayoutObjectWithSubpixelAccumulation(),
       web_display_item_list);
 
   paint_controller.SetDisplayItemConstructionIsDisabled(false);
diff --git a/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp b/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
index 690e5ac6..7e4c8ac 100644
--- a/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
+++ b/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
@@ -277,8 +277,7 @@
 void GraphicsLayer::Paint(const IntRect* interest_rect,
                           GraphicsContext::DisabledMode disabled_mode) {
   if (PaintWithoutCommit(interest_rect, disabled_mode)) {
-    GetPaintController().CommitNewDisplayItems(
-        OffsetFromLayoutObjectWithSubpixelAccumulation());
+    GetPaintController().CommitNewDisplayItems();
     if (RuntimeEnabledFeatures::paintUnderInvalidationCheckingEnabled()) {
       sk_sp<PaintRecord> record = CaptureRecord();
       CheckPaintUnderInvalidations(record);
@@ -1287,8 +1286,7 @@
   recorder.beginRecording(rect);
   recorder.getRecordingCanvas()->drawBitmap(new_bitmap, rect.X(), rect.Y());
   sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture();
-  GetPaintController().AppendDebugDrawingAfterCommit(
-      *this, record, rect, OffsetFromLayoutObjectWithSubpixelAccumulation());
+  GetPaintController().AppendDebugDrawingAfterCommit(*this, record, rect);
 }
 
 }  // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/paint/ClipDisplayItem.cpp b/third_party/WebKit/Source/platform/graphics/paint/ClipDisplayItem.cpp
index b3a90e26..fdadeded 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/ClipDisplayItem.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/ClipDisplayItem.cpp
@@ -26,7 +26,7 @@
 }
 
 void ClipDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   WebVector<SkRRect> web_rounded_rects(rounded_rect_clips_.size());
   for (size_t i = 0; i < rounded_rect_clips_.size(); ++i)
@@ -40,7 +40,7 @@
 }
 
 void EndClipDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   list->AppendEndClipItem();
 }
diff --git a/third_party/WebKit/Source/platform/graphics/paint/ClipDisplayItem.h b/third_party/WebKit/Source/platform/graphics/paint/ClipDisplayItem.h
index e2ac95b..5f81796b 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/ClipDisplayItem.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/ClipDisplayItem.h
@@ -33,7 +33,7 @@
   }
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
  private:
@@ -60,7 +60,7 @@
   }
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
  private:
diff --git a/third_party/WebKit/Source/platform/graphics/paint/ClipPathDisplayItem.cpp b/third_party/WebKit/Source/platform/graphics/paint/ClipPathDisplayItem.cpp
index a215a535..99741de5 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/ClipPathDisplayItem.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/ClipPathDisplayItem.cpp
@@ -18,7 +18,7 @@
 }
 
 void BeginClipPathDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   list->AppendClipPathItem(clip_path_, true);
 }
@@ -36,7 +36,7 @@
 }
 
 void EndClipPathDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   list->AppendEndClipPathItem();
 }
diff --git a/third_party/WebKit/Source/platform/graphics/paint/ClipPathDisplayItem.h b/third_party/WebKit/Source/platform/graphics/paint/ClipPathDisplayItem.h
index 3952c87..5464841b 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/ClipPathDisplayItem.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/ClipPathDisplayItem.h
@@ -21,7 +21,7 @@
         clip_path_(clip_path.GetSkPath()) {}
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
   int NumberOfSlowPaths() const override;
@@ -46,7 +46,7 @@
       : PairedEndDisplayItem(client, kEndClipPath, sizeof(*this)) {}
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
  private:
diff --git a/third_party/WebKit/Source/platform/graphics/paint/CompositingDisplayItem.cpp b/third_party/WebKit/Source/platform/graphics/paint/CompositingDisplayItem.cpp
index d16af05..74c70d0b 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/CompositingDisplayItem.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/CompositingDisplayItem.cpp
@@ -17,7 +17,7 @@
 }
 
 void BeginCompositingDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   SkRect bounds = bounds_;
   list->AppendCompositingItem(
@@ -46,7 +46,7 @@
 }
 
 void EndCompositingDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   list->AppendEndCompositingItem();
 }
diff --git a/third_party/WebKit/Source/platform/graphics/paint/CompositingDisplayItem.h b/third_party/WebKit/Source/platform/graphics/paint/CompositingDisplayItem.h
index cd47ec66..fac95da 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/CompositingDisplayItem.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/CompositingDisplayItem.h
@@ -33,7 +33,7 @@
   }
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
  private:
@@ -69,7 +69,7 @@
       : PairedEndDisplayItem(client, kEndCompositing, sizeof(*this)) {}
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
  private:
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItem.cpp b/third_party/WebKit/Source/platform/graphics/paint/DisplayItem.cpp
index 0224858..5686ef19 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItem.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/DisplayItem.cpp
@@ -9,6 +9,7 @@
 struct SameSizeAsDisplayItem {
   virtual ~SameSizeAsDisplayItem() {}  // Allocate vtable pointer.
   void* pointer;
+  LayoutRect rect;
   int i;
 #ifndef NDEBUG
   WTF::String debug_string_;
@@ -244,6 +245,8 @@
     string_builder.Append(' ');
     string_builder.Append(ClientDebugString());
   }
+  string_builder.Append("\", visualRect: \"");
+  string_builder.Append(VisualRect().ToString());
   string_builder.Append("\", type: \"");
   string_builder.Append(TypeAsDebugString(GetType()));
   string_builder.Append('"');
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItem.h b/third_party/WebKit/Source/platform/graphics/paint/DisplayItem.h
index d5f344e6..a3608a3 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItem.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/DisplayItem.h
@@ -20,7 +20,7 @@
 namespace blink {
 
 class GraphicsContext;
-class IntRect;
+class LayoutSize;
 class WebDisplayItemList;
 
 class PLATFORM_EXPORT DisplayItem {
@@ -199,6 +199,7 @@
 
   DisplayItem(const DisplayItemClient& client, Type type, size_t derived_size)
       : client_(&client),
+        visual_rect_(client.VisualRect()),
         type_(type),
         derived_size_(derived_size),
         skipped_cache_(false)
@@ -233,6 +234,18 @@
     DCHECK(client_);
     return *client_;
   }
+
+  // This equals to Client().VisualRect() as long as the client is alive and is
+  // not invalidated. Otherwise it saves the previous visual rect of the client.
+  // See DisplayItemClient::VisualRect() about its coordinate space.
+  const LayoutRect& VisualRect() const { return visual_rect_; }
+
+  // Visual rect can change without needing invalidation of the client, e.g.
+  // when ancestor clip changes. This is called from PaintController::
+  // UseCachedDrawingIfPossible() to update the visual rect of a cached display
+  // item.
+  void UpdateVisualRect() { visual_rect_ = client_->VisualRect(); }
+
   Type GetType() const { return type_; }
 
   // Size of this object in memory, used to move it with memcpy.
@@ -246,9 +259,11 @@
   void SetSkippedCache() { skipped_cache_ = true; }
   bool SkippedCache() const { return skipped_cache_; }
 
-  // TODO(wkorman): Only DrawingDisplayItem needs the visual rect argument.
-  // Consider refactoring class hierarchy to make this more explicit.
-  virtual void AppendToWebDisplayItemList(const IntRect&,
+  // Appends this display item to the WebDisplayItemList, if applicable.
+  // |visual_rect_offset| is the offset between the space of the GraphicsLayer
+  // which owns the display item and the coordinate space of VisualRect().
+  // TODO(wangxianzhu): Remove the parameter for slimming paint v2.
+  virtual void AppendToWebDisplayItemList(const LayoutSize& visual_rect_offset,
                                           WebDisplayItemList*) const {}
 
 // See comments of enum Type for usage of the following macros.
@@ -351,6 +366,7 @@
   // constructed at the source location.
   template <typename T, unsigned alignment>
   friend class ContiguousContainer;
+  friend class DisplayItemList;
 
   DisplayItem()
       : client_(nullptr),
@@ -359,6 +375,8 @@
         skipped_cache_(false) {}
 
   const DisplayItemClient* client_;
+  LayoutRect visual_rect_;
+
   static_assert(kTypeLast < (1 << 16),
                 "DisplayItem::Type should fit in 16 bits");
   const Type type_ : 16;
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h
index 985126b..21f3d4c 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h
@@ -53,7 +53,7 @@
 
   // The visual rect of this DisplayItemClient, in the object space of the
   // object that owns the GraphicsLayer, i.e. offset by
-  // offsetFromLayoutObjectWithSubpixelAccumulation().
+  // GraphicsLayer::OffsetFromLayoutObjectWithSubpixelAccumulation().
   virtual LayoutRect VisualRect() const = 0;
 
   // This is declared here instead of in LayoutObject for verifying the
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.cpp b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.cpp
index 1f78695..34a7547a 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.cpp
@@ -14,28 +14,6 @@
 
 namespace blink {
 
-DisplayItem& DisplayItemList::AppendByMoving(DisplayItem& item) {
-#ifndef NDEBUG
-  String original_debug_string = item.AsDebugString();
-#endif
-  DCHECK(item.HasValidClient());
-  DisplayItem& result =
-      ContiguousContainer::AppendByMoving(item, item.DerivedSize());
-  // ContiguousContainer::appendByMoving() calls an in-place constructor
-  // on item which replaces it with a tombstone/"dead display item" that
-  // can be safely destructed but should never be used.
-  DCHECK(!item.HasValidClient());
-#ifndef NDEBUG
-  // Save original debug string in the old item to help debugging.
-  item.SetClientDebugString(original_debug_string);
-#endif
-  return result;
-}
-
-void DisplayItemList::AppendVisualRect(const IntRect& visual_rect) {
-  visual_rects_.push_back(visual_rect);
-}
-
 DisplayItemList::Range<DisplayItemList::iterator>
 DisplayItemList::ItemsInPaintChunk(const PaintChunk& paint_chunk) {
   return Range<iterator>(begin() + paint_chunk.begin_index,
@@ -99,14 +77,9 @@
       }
 #endif
     }
-    if (HasVisualRect(i)) {
-      IntRect local_visual_rect = VisualRect(i);
-      json->SetString(
-          "visualRect",
-          String::Format("[%d,%d %dx%d]", local_visual_rect.X(),
-                         local_visual_rect.Y(), local_visual_rect.Width(),
-                         local_visual_rect.Height()));
-    }
+
+    json->SetString("visualRect", display_item.VisualRect().ToString());
+
     json_array->PushObject(std::move(json));
   }
   return json_array;
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.h b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.h
index 0a48df379..aaf7a39 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.h
@@ -32,26 +32,31 @@
   DisplayItemList(size_t initial_size_bytes)
       : ContiguousContainer(kMaximumDisplayItemSize, initial_size_bytes) {}
   DisplayItemList(DisplayItemList&& source)
-      : ContiguousContainer(std::move(source)),
-        visual_rects_(std::move(source.visual_rects_)) {}
+      : ContiguousContainer(std::move(source)) {}
 
   DisplayItemList& operator=(DisplayItemList&& source) {
     ContiguousContainer::operator=(std::move(source));
-    visual_rects_ = std::move(source.visual_rects_);
     return *this;
   }
 
-  DisplayItem& AppendByMoving(DisplayItem&);
-
-  bool HasVisualRect(size_t index) const {
-    return index < visual_rects_.size();
+  DisplayItem& AppendByMoving(DisplayItem& item) {
+#ifndef NDEBUG
+    String original_debug_string = item.AsDebugString();
+#endif
+    DCHECK(item.HasValidClient());
+    DisplayItem& result =
+        ContiguousContainer::AppendByMoving(item, item.DerivedSize());
+    // ContiguousContainer::AppendByMoving() calls an in-place constructor
+    // on item which replaces it with a tombstone/"dead display item" that
+    // can be safely destructed but should never be used.
+    DCHECK(!item.HasValidClient());
+#ifndef NDEBUG
+    // Save original debug string in the old item to help debugging.
+    item.SetClientDebugString(original_debug_string);
+#endif
+    item.visual_rect_ = result.visual_rect_;
+    return result;
   }
-  IntRect VisualRect(size_t index) const {
-    DCHECK(HasVisualRect(index));
-    return visual_rects_[index];
-  }
-
-  void AppendVisualRect(const IntRect& visual_rect);
 
   // Useful for iterating with a range-based for loop.
   template <typename Iterator>
@@ -81,9 +86,6 @@
   std::unique_ptr<JSONArray> SubsequenceAsJSON(size_t begin_index,
                                                size_t end_index,
                                                JsonFlags options) const;
-
- private:
-  Vector<IntRect> visual_rects_;
 };
 
 }  // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemListTest.cpp b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemListTest.cpp
deleted file mode 100644
index a665238..0000000
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemListTest.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "platform/graphics/paint/DisplayItemList.h"
-
-#include "SkTypes.h"
-#include "platform/graphics/paint/DrawingDisplayItem.h"
-#include "platform/graphics/paint/PaintFlags.h"
-#include "platform/graphics/paint/PaintRecorder.h"
-#include "platform/graphics/skia/SkiaUtils.h"
-#include "platform/testing/FakeDisplayItemClient.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace blink {
-namespace {
-
-#define EXPECT_RECT_EQ(expected, actual)                \
-  do {                                                  \
-    const IntRect& actual_rect = actual;                \
-    EXPECT_EQ(expected.X(), actual_rect.X());           \
-    EXPECT_EQ(expected.Y(), actual_rect.Y());           \
-    EXPECT_EQ(expected.Width(), actual_rect.Width());   \
-    EXPECT_EQ(expected.Height(), actual_rect.Height()); \
-  } while (false)
-
-static const size_t kDefaultListBytes = 10 * 1024;
-
-class DisplayItemListTest : public ::testing::Test {
- public:
-  DisplayItemListTest() : list_(kDefaultListBytes) {}
-
-  DisplayItemList list_;
-  FakeDisplayItemClient client_;
-};
-
-static sk_sp<PaintRecord> CreateRectRecord(const IntRect& bounds) {
-  PaintRecorder recorder;
-  PaintCanvas* canvas =
-      recorder.beginRecording(bounds.Width(), bounds.Height());
-  canvas->drawRect(
-      SkRect::MakeXYWH(bounds.X(), bounds.Y(), bounds.Width(), bounds.Height()),
-      PaintFlags());
-  return recorder.finishRecordingAsPicture();
-}
-
-TEST_F(DisplayItemListTest, AppendVisualRect_Simple) {
-  IntRect drawing_bounds(5, 6, 7, 8);
-  list_.AllocateAndConstruct<DrawingDisplayItem>(
-      client_, DisplayItem::Type::kDocumentBackground,
-      CreateRectRecord(drawing_bounds), drawing_bounds, true);
-  list_.AppendVisualRect(drawing_bounds);
-
-  EXPECT_EQ(static_cast<size_t>(1), list_.size());
-  EXPECT_RECT_EQ(drawing_bounds, list_.VisualRect(0));
-}
-
-TEST_F(DisplayItemListTest, AppendVisualRect_BlockContainingDrawing) {
-  // TODO(wkorman): Note the visual rects for the paired begin/end are now
-  // irrelevant as they're overwritten in cc::DisplayItemList when rebuilt to
-  // represent the union of all drawing display item visual rects between the
-  // pair. We should consider revising Blink's display item list in some form
-  // so as to only store visual rects for drawing display items.
-  IntRect drawing_bounds(5, 6, 1, 1);
-  list_.AllocateAndConstruct<DrawingDisplayItem>(
-      client_, DisplayItem::Type::kDocumentBackground,
-      CreateRectRecord(drawing_bounds), drawing_bounds, true);
-  list_.AppendVisualRect(drawing_bounds);
-
-  EXPECT_EQ(static_cast<size_t>(1), list_.size());
-  EXPECT_RECT_EQ(drawing_bounds, list_.VisualRect(0));
-}
-}  // namespace
-}  // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.cpp b/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.cpp
index 602a906..3dd4e3d 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.cpp
@@ -19,10 +19,13 @@
 }
 
 void DrawingDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize& visual_rect_offset,
     WebDisplayItemList* list) const {
   if (record_) {
-    list->AppendDrawingItem(visual_rect, record_,
+    // Convert visual rect into the GraphicsLayer's coordinate space.
+    LayoutRect visual_rect = VisualRect();
+    visual_rect.Move(-visual_rect_offset);
+    list->AppendDrawingItem(EnclosingIntRect(visual_rect), record_,
                             EnclosingIntRect(record_bounds_));
   }
 }
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.h b/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.h
index c5d8974..79702db 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.h
@@ -42,7 +42,7 @@
   }
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect& visual_rect,
+  void AppendToWebDisplayItemList(const LayoutSize& visual_rect_offset,
                                   WebDisplayItemList*) const override;
   bool DrawsContent() const override;
 
diff --git a/third_party/WebKit/Source/platform/graphics/paint/FilterDisplayItem.cpp b/third_party/WebKit/Source/platform/graphics/paint/FilterDisplayItem.cpp
index ee989c2..d3c2e8b 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/FilterDisplayItem.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/FilterDisplayItem.cpp
@@ -20,7 +20,7 @@
 }
 
 void BeginFilterDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   list->AppendFilterItem(compositor_filter_operations_.AsCcFilterOperations(),
                          bounds_, origin_);
@@ -48,7 +48,7 @@
 }
 
 void EndFilterDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   list->AppendEndFilterItem();
 }
diff --git a/third_party/WebKit/Source/platform/graphics/paint/FilterDisplayItem.h b/third_party/WebKit/Source/platform/graphics/paint/FilterDisplayItem.h
index bc883fa..ff849404 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/FilterDisplayItem.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/FilterDisplayItem.h
@@ -31,7 +31,7 @@
         origin_(origin) {}
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
   bool DrawsContent() const override;
 
@@ -64,7 +64,7 @@
       : PairedEndDisplayItem(client, kEndFilter, sizeof(*this)) {}
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
  private:
diff --git a/third_party/WebKit/Source/platform/graphics/paint/FloatClipDisplayItem.cpp b/third_party/WebKit/Source/platform/graphics/paint/FloatClipDisplayItem.cpp
index 4e56810b..9b56646 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/FloatClipDisplayItem.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/FloatClipDisplayItem.cpp
@@ -16,7 +16,7 @@
 }
 
 void FloatClipDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   list->AppendFloatClipItem(clip_rect_);
 }
@@ -26,7 +26,7 @@
 }
 
 void EndFloatClipDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   list->AppendEndFloatClipItem();
 }
diff --git a/third_party/WebKit/Source/platform/graphics/paint/FloatClipDisplayItem.h b/third_party/WebKit/Source/platform/graphics/paint/FloatClipDisplayItem.h
index 1e74acf..1e2ca3a 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/FloatClipDisplayItem.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/FloatClipDisplayItem.h
@@ -23,7 +23,7 @@
   }
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
  private:
@@ -48,7 +48,7 @@
   }
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
  private:
diff --git a/third_party/WebKit/Source/platform/graphics/paint/ForeignLayerDisplayItem.cpp b/third_party/WebKit/Source/platform/graphics/paint/ForeignLayerDisplayItem.cpp
index 35627b7..c31d245 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/ForeignLayerDisplayItem.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/ForeignLayerDisplayItem.cpp
@@ -35,7 +35,7 @@
 }
 
 void ForeignLayerDisplayItem::AppendToWebDisplayItemList(
-    const IntRect&,
+    const LayoutSize&,
     WebDisplayItemList*) const {
   NOTREACHED();
 }
diff --git a/third_party/WebKit/Source/platform/graphics/paint/ForeignLayerDisplayItem.h b/third_party/WebKit/Source/platform/graphics/paint/ForeignLayerDisplayItem.h
index 3785eb5a..9fbd67e 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/ForeignLayerDisplayItem.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/ForeignLayerDisplayItem.h
@@ -40,7 +40,7 @@
 
   // DisplayItem
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
   bool DrawsContent() const override;
   bool Equals(const DisplayItem&) const override;
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintArtifact.cpp b/third_party/WebKit/Source/platform/graphics/paint/PaintArtifact.cpp
index ec6345e4..96d45d91 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/PaintArtifact.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/PaintArtifact.cpp
@@ -115,14 +115,12 @@
 }
 
 DISABLE_CFI_PERF
-void PaintArtifact::AppendToWebDisplayItemList(WebDisplayItemList* list) const {
+void PaintArtifact::AppendToWebDisplayItemList(
+    const LayoutSize& visual_rect_offset,
+    WebDisplayItemList* list) const {
   TRACE_EVENT0("blink,benchmark", "PaintArtifact::appendToWebDisplayItemList");
-  size_t visual_rect_index = 0;
-  for (const DisplayItem& display_item : display_item_list_) {
-    display_item.AppendToWebDisplayItemList(
-        display_item_list_.VisualRect(visual_rect_index), list);
-    visual_rect_index++;
-  }
+  for (const DisplayItem& item : display_item_list_)
+    item.AppendToWebDisplayItemList(visual_rect_offset, list);
   list->SetIsSuitableForGpuRasterization(IsSuitableForGpuRasterization());
 }
 
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintArtifact.h b/third_party/WebKit/Source/platform/graphics/paint/PaintArtifact.h
index 2d3a4c46..0e55295 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/PaintArtifact.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/PaintArtifact.h
@@ -84,7 +84,8 @@
       const PropertyTreeState& replay_state = PropertyTreeState::Root()) const;
 
   // Writes the paint artifact into a WebDisplayItemList.
-  void AppendToWebDisplayItemList(WebDisplayItemList*) const;
+  void AppendToWebDisplayItemList(const LayoutSize& visual_rect_offset,
+                                  WebDisplayItemList*) const;
 
  private:
   DisplayItemList display_item_list_;
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintChunkerTest.cpp b/third_party/WebKit/Source/platform/graphics/paint/PaintChunkerTest.cpp
index 3543fcd..264533c 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/PaintChunkerTest.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/PaintChunkerTest.cpp
@@ -35,7 +35,7 @@
       : DisplayItem(client, type, sizeof(*this)) {}
 
   void Replay(GraphicsContext&) const final { NOTREACHED(); }
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const final {
     NOTREACHED();
   }
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp b/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp
index 99229a0..59f90886 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp
@@ -70,6 +70,9 @@
 
   ++num_cached_new_items_;
   EnsureNewDisplayItemListInitialCapacity();
+  // Visual rect can change without needing invalidation of the client, e.g.
+  // when ancestor clip changes. Update the visual rect to the current value.
+  current_paint_artifact_.GetDisplayItemList()[cached_item].UpdateVisualRect();
   if (!RuntimeEnabledFeatures::paintUnderInvalidationCheckingEnabled())
     ProcessNewItem(MoveItemFromCurrentListToNewList(cached_item));
 
@@ -516,6 +519,19 @@
             cached_chunk->id ? &*cached_chunk->id : nullptr,
             cached_chunk->properties);
       }
+
+#if DCHECK_IS_ON()
+      // Visual rect change should not happen in a cached subsequence.
+      // However, because of different method of pixel snapping in different
+      // paths, there are false positives. Just log an error.
+      if (cached_item->VisualRect() != cached_item->Client().VisualRect()) {
+        LOG(ERROR) << "Visual rect changed in a cached subsequence: "
+                   << cached_item->Client().DebugName()
+                   << " old=" << cached_item->VisualRect().ToString()
+                   << " new=" << cached_item->Client().VisualRect().ToString();
+      }
+#endif
+
       ProcessNewItem(MoveItemFromCurrentListToNewList(current_index));
       if (RuntimeEnabledFeatures::slimmingPaintV2Enabled())
         DCHECK((!new_paint_chunks_.LastChunk().id && !cached_chunk->id) ||
@@ -529,15 +545,6 @@
   }
 }
 
-DISABLE_CFI_PERF
-static IntRect VisualRectForDisplayItem(
-    const DisplayItem& display_item,
-    const LayoutSize& offset_from_layout_object) {
-  LayoutRect visual_rect = display_item.Client().VisualRect();
-  visual_rect.Move(-offset_from_layout_object);
-  return EnclosingIntRect(visual_rect);
-}
-
 void PaintController::ResetCurrentListIndices() {
   next_item_to_match_ = 0;
   next_item_to_index_ = 0;
@@ -548,13 +555,13 @@
 }
 
 DISABLE_CFI_PERF
-void PaintController::CommitNewDisplayItems(
-    const LayoutSize& offset_from_layout_object) {
+void PaintController::CommitNewDisplayItems() {
   TRACE_EVENT2("blink,benchmark", "PaintController::commitNewDisplayItems",
                "current_display_list_size",
                (int)current_paint_artifact_.GetDisplayItemList().size(),
                "num_non_cached_new_items",
                (int)new_display_item_list_.size() - num_cached_new_items_);
+
   num_cached_new_items_ = 0;
   // These data structures are used during painting only.
   DCHECK(!IsSkippingCache());
@@ -588,10 +595,6 @@
     if (num_slow_paths <= kMaxNumberOfSlowPathsBeforeVeto)
       num_slow_paths += item.NumberOfSlowPaths();
 
-    // TODO(wkorman): Only compute and append visual rect for drawings.
-    new_display_item_list_.AppendVisualRect(
-        VisualRectForDisplayItem(item, offset_from_layout_object));
-
     if (item.IsCacheable()) {
       item.Client().SetDisplayItemsCached(current_cache_generation_);
     } else {
@@ -676,8 +679,7 @@
 void PaintController::AppendDebugDrawingAfterCommit(
     const DisplayItemClient& display_item_client,
     sk_sp<PaintRecord> record,
-    const FloatRect& record_bounds,
-    const LayoutSize& offset_from_layout_object) {
+    const FloatRect& record_bounds) {
   DCHECK(new_display_item_list_.IsEmpty());
   DrawingDisplayItem& display_item =
       current_paint_artifact_.GetDisplayItemList()
@@ -685,9 +687,6 @@
               display_item_client, DisplayItem::kDebugDrawing,
               std::move(record), record_bounds);
   display_item.SetSkippedCache();
-  // TODO(wkorman): Only compute and append visual rect for drawings.
-  current_paint_artifact_.GetDisplayItemList().AppendVisualRect(
-      VisualRectForDisplayItem(display_item, offset_from_layout_object));
 }
 
 void PaintController::GenerateRasterInvalidations(PaintChunk& new_chunk) {
@@ -801,13 +800,13 @@
             moved_to_index >= new_chunk.end_index) {
           // The item has been moved into another chunk, so need to invalidate
           // it in the old chunk.
-          client_to_invalidate =
-              &new_display_item_list_[moved_to_index].Client();
+          const auto& new_item = new_display_item_list_[moved_to_index];
+          client_to_invalidate = &new_item.Client();
           // And invalidate in the new chunk into which the item was moved.
           PaintChunk& moved_to_chunk =
               new_paint_chunks_.FindChunkByDisplayItemIndex(moved_to_index);
           AddRasterInvalidation(*client_to_invalidate, moved_to_chunk,
-                                FloatRect(client_to_invalidate->VisualRect()));
+                                FloatRect(new_item.VisualRect()));
         } else if (moved_to_index < highest_moved_to_index) {
           // The item has been moved behind other cached items, so need to
           // invalidate the area that is probably exposed by the item moved
@@ -824,10 +823,8 @@
     if (client_to_invalidate &&
         invalidated_clients_in_old_chunk.insert(client_to_invalidate)
             .is_new_entry) {
-      AddRasterInvalidation(
-          *client_to_invalidate, new_chunk,
-          FloatRect(current_paint_artifact_.GetDisplayItemList().VisualRect(
-              old_index)));
+      AddRasterInvalidation(*client_to_invalidate, new_chunk,
+                            FloatRect(old_item.VisualRect()));
     }
   }
 
@@ -839,7 +836,7 @@
         invalidated_clients_in_new_chunk.insert(&new_item.Client())
             .is_new_entry) {
       AddRasterInvalidation(new_item.Client(), new_chunk,
-                            FloatRect(new_item.Client().VisualRect()));
+                            FloatRect(new_item.VisualRect()));
     }
   }
 }
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintController.h b/third_party/WebKit/Source/platform/graphics/paint/PaintController.h
index 3ebb855e..d186158 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/PaintController.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/PaintController.h
@@ -140,11 +140,8 @@
   }
   bool IsSkippingCache() const { return skipping_cache_count_; }
 
-  // Must be called when a painting is finished. |offsetFromLayoutObject| is the
-  // offset between the space of the GraphicsLayer which owns this
-  // PaintController and the coordinate space of the owning LayoutObject.
-  void CommitNewDisplayItems(
-      const LayoutSize& offset_from_layout_object = LayoutSize());
+  // Must be called when a painting is finished.
+  void CommitNewDisplayItems();
 
   // Returns the approximate memory usage, excluding memory likely to be
   // shared with the embedder after copying to WebPaintController.
@@ -185,11 +182,9 @@
   // the last commitNewDisplayItems(). Use with care.
   DisplayItemList& NewDisplayItemList() { return new_display_item_list_; }
 
-  void AppendDebugDrawingAfterCommit(
-      const DisplayItemClient&,
-      sk_sp<PaintRecord>,
-      const FloatRect& record_bounds,
-      const LayoutSize& offset_from_layout_object);
+  void AppendDebugDrawingAfterCommit(const DisplayItemClient&,
+                                     sk_sp<PaintRecord>,
+                                     const FloatRect& record_bounds);
 
   void ShowDebugData() const { ShowDebugDataInternal(false); }
 #ifndef NDEBUG
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp b/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp
index 6711ad1..1cff8d5 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp
@@ -30,10 +30,6 @@
  public:
   PaintControllerTestBase() : paint_controller_(PaintController::Create()) {}
 
-  IntRect VisualRect(const PaintArtifact& paint_artifact, size_t index) {
-    return paint_artifact.GetDisplayItemList().VisualRect(index);
-  }
-
  protected:
   PaintController& GetPaintController() { return *paint_controller_; }
 
@@ -67,7 +63,7 @@
       : DisplayItem(client, type, sizeof(*this)) {}
 
   void Replay(GraphicsContext&) const final { NOTREACHED(); }
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const final {
     NOTREACHED();
   }
@@ -1885,18 +1881,6 @@
   EXPECT_EQ(1u, paint_chunks[0].end_index);
 }
 
-TEST_F(PaintControllerTestBase, PaintArtifactWithVisualRects) {
-  FakeDisplayItemClient client("test client", LayoutRect(0, 0, 200, 100));
-
-  GraphicsContext context(GetPaintController());
-  DrawRect(context, client, kBackgroundDrawingType, FloatRect(0, 0, 100, 100));
-
-  GetPaintController().CommitNewDisplayItems(LayoutSize(20, 30));
-  const auto& paint_artifact = GetPaintController().GetPaintArtifact();
-  ASSERT_EQ(1u, paint_artifact.GetDisplayItemList().size());
-  EXPECT_EQ(IntRect(-20, -30, 200, 100), VisualRect(paint_artifact, 0));
-}
-
 void DrawPath(GraphicsContext& context,
               DisplayItemClient& client,
               DisplayItem::Type type,
@@ -1923,7 +1907,7 @@
   FakeDisplayItemClient client("test client", LayoutRect(0, 0, 200, 100));
   GraphicsContext context(GetPaintController());
   DrawPath(context, client, kBackgroundDrawingType, 1);
-  GetPaintController().CommitNewDisplayItems(LayoutSize());
+  GetPaintController().CommitNewDisplayItems();
   EXPECT_TRUE(
       GetPaintController().GetPaintArtifact().IsSuitableForGpuRasterization());
 }
@@ -1934,7 +1918,7 @@
   GraphicsContext context(GetPaintController());
 
   DrawPath(context, client, kBackgroundDrawingType, 50);
-  GetPaintController().CommitNewDisplayItems(LayoutSize());
+  GetPaintController().CommitNewDisplayItems();
   EXPECT_FALSE(
       GetPaintController().GetPaintArtifact().IsSuitableForGpuRasterization());
 }
@@ -1949,7 +1933,7 @@
     DrawPath(context, client, kBackgroundDrawingType, 50);
 
   GetPaintController().EndSkippingCache();
-  GetPaintController().CommitNewDisplayItems(LayoutSize());
+  GetPaintController().CommitNewDisplayItems();
   EXPECT_FALSE(
       GetPaintController().GetPaintArtifact().IsSuitableForGpuRasterization());
 }
@@ -1961,7 +1945,7 @@
   {
     GraphicsContext context(GetPaintController());
     DrawPath(context, client, kBackgroundDrawingType, 50);
-    GetPaintController().CommitNewDisplayItems(LayoutSize());
+    GetPaintController().CommitNewDisplayItems();
     EXPECT_FALSE(GetPaintController()
                      .GetPaintArtifact()
                      .IsSuitableForGpuRasterization());
@@ -1972,7 +1956,7 @@
   {
     GraphicsContext context(GetPaintController());
     DrawPath(context, client, kBackgroundDrawingType, 50);
-    GetPaintController().CommitNewDisplayItems(LayoutSize());
+    GetPaintController().CommitNewDisplayItems();
     EXPECT_FALSE(GetPaintController()
                      .GetPaintArtifact()
                      .IsSuitableForGpuRasterization());
@@ -1986,7 +1970,7 @@
   {
     GraphicsContext context(GetPaintController());
     DrawPath(context, client, kBackgroundDrawingType, 50);
-    GetPaintController().CommitNewDisplayItems(LayoutSize());
+    GetPaintController().CommitNewDisplayItems();
     EXPECT_FALSE(GetPaintController()
                      .GetPaintArtifact()
                      .IsSuitableForGpuRasterization());
@@ -1995,7 +1979,7 @@
   {
     GraphicsContext context(GetPaintController());
     DrawPath(context, client, kBackgroundDrawingType, 50);
-    GetPaintController().CommitNewDisplayItems(LayoutSize());
+    GetPaintController().CommitNewDisplayItems();
     EXPECT_FALSE(GetPaintController()
                      .GetPaintArtifact()
                      .IsSuitableForGpuRasterization());
@@ -2013,13 +1997,13 @@
     SubsequenceRecorder subsequence_recorder(context, container);
     DrawPath(context, client, kBackgroundDrawingType, 50);
   }
-  GetPaintController().CommitNewDisplayItems(LayoutSize());
+  GetPaintController().CommitNewDisplayItems();
   EXPECT_FALSE(
       GetPaintController().GetPaintArtifact().IsSuitableForGpuRasterization());
 
   EXPECT_TRUE(
       SubsequenceRecorder::UseCachedSubsequenceIfPossible(context, container));
-  GetPaintController().CommitNewDisplayItems(LayoutSize());
+  GetPaintController().CommitNewDisplayItems();
   EXPECT_FALSE(
       GetPaintController().GetPaintArtifact().IsSuitableForGpuRasterization());
 
@@ -2050,7 +2034,7 @@
              FloatRect(0, 0, 100, 100));
     for (int j = 0; j < 50; ++j)
       GetPaintController().CreateAndAppend<EndClipPathDisplayItem>(client);
-    GetPaintController().CommitNewDisplayItems(LayoutSize());
+    GetPaintController().CommitNewDisplayItems();
     EXPECT_FALSE(GetPaintController()
                      .GetPaintArtifact()
                      .IsSuitableForGpuRasterization());
diff --git a/third_party/WebKit/Source/platform/graphics/paint/ScrollDisplayItem.cpp b/third_party/WebKit/Source/platform/graphics/paint/ScrollDisplayItem.cpp
index e8d42e19..cfc9feb0 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/ScrollDisplayItem.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/ScrollDisplayItem.cpp
@@ -16,7 +16,7 @@
 }
 
 void BeginScrollDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   WebDisplayItemList::ScrollContainerId scroll_container_id = &Client();
   list->AppendScrollItem(current_offset_, scroll_container_id);
@@ -37,7 +37,7 @@
 }
 
 void EndScrollDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   list->AppendEndScrollItem();
 }
diff --git a/third_party/WebKit/Source/platform/graphics/paint/ScrollDisplayItem.h b/third_party/WebKit/Source/platform/graphics/paint/ScrollDisplayItem.h
index 6dfca71..d09bead 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/ScrollDisplayItem.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/ScrollDisplayItem.h
@@ -23,7 +23,7 @@
   }
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
   const IntSize& CurrentOffset() const { return current_offset_; }
@@ -49,7 +49,7 @@
   }
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
  private:
diff --git a/third_party/WebKit/Source/platform/graphics/paint/Transform3DDisplayItem.cpp b/third_party/WebKit/Source/platform/graphics/paint/Transform3DDisplayItem.cpp
index ae4389c..ef3a619 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/Transform3DDisplayItem.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/Transform3DDisplayItem.cpp
@@ -18,7 +18,7 @@
 }
 
 void BeginTransform3DDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   // TODO(jbroman): The compositor will need the transform origin separately.
   TransformationMatrix transform(transform_);
@@ -56,7 +56,7 @@
 }
 
 void EndTransform3DDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   list->AppendEndTransformItem();
 }
diff --git a/third_party/WebKit/Source/platform/graphics/paint/Transform3DDisplayItem.h b/third_party/WebKit/Source/platform/graphics/paint/Transform3DDisplayItem.h
index 46d91b11..d090671c 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/Transform3DDisplayItem.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/Transform3DDisplayItem.h
@@ -26,7 +26,7 @@
   }
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
   const TransformationMatrix& Transform() const { return transform_; }
@@ -58,7 +58,7 @@
   }
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
  private:
diff --git a/third_party/WebKit/Source/platform/graphics/paint/TransformDisplayItem.cpp b/third_party/WebKit/Source/platform/graphics/paint/TransformDisplayItem.cpp
index 35f174e2..c839a3ab 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/TransformDisplayItem.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/TransformDisplayItem.cpp
@@ -16,7 +16,7 @@
 }
 
 void BeginTransformDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   list->AppendTransformItem(AffineTransformToSkMatrix(transform_));
 }
@@ -36,7 +36,7 @@
 }
 
 void EndTransformDisplayItem::AppendToWebDisplayItemList(
-    const IntRect& visual_rect,
+    const LayoutSize&,
     WebDisplayItemList* list) const {
   list->AppendEndTransformItem();
 }
diff --git a/third_party/WebKit/Source/platform/graphics/paint/TransformDisplayItem.h b/third_party/WebKit/Source/platform/graphics/paint/TransformDisplayItem.h
index c446c87..c6c670d0c 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/TransformDisplayItem.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/TransformDisplayItem.h
@@ -19,7 +19,7 @@
         transform_(transform) {}
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
   const AffineTransform& Transform() const { return transform_; }
@@ -44,7 +44,7 @@
       : PairedEndDisplayItem(client, kEndTransform, sizeof(*this)) {}
 
   void Replay(GraphicsContext&) const override;
-  void AppendToWebDisplayItemList(const IntRect&,
+  void AppendToWebDisplayItemList(const LayoutSize&,
                                   WebDisplayItemList*) const override;
 
  private:
diff --git a/ui/app_list/views/app_list_folder_view.cc b/ui/app_list/views/app_list_folder_view.cc
index 1b69049..53f2591 100644
--- a/ui/app_list/views/app_list_folder_view.cc
+++ b/ui/app_list/views/app_list_folder_view.cc
@@ -113,7 +113,7 @@
   layer()->SetOpacity(show ? 1.0f : 0.0f);
 }
 
-gfx::Size AppListFolderView::GetPreferredSize() const {
+gfx::Size AppListFolderView::CalculatePreferredSize() 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 b2af4ca..cacbb9e 100644
--- a/ui/app_list/views/app_list_folder_view.h
+++ b/ui/app_list/views/app_list_folder_view.h
@@ -60,7 +60,7 @@
   void CloseFolderPage();
 
   // views::View
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   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 4aee6062..060e7d7 100644
--- a/ui/app_list/views/app_list_view.cc
+++ b/ui/app_list/views/app_list_view.cc
@@ -279,7 +279,7 @@
   }
 }
 
-gfx::Size AppListView::GetPreferredSize() const {
+gfx::Size AppListView::CalculatePreferredSize() 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 cbdb1d89..3b657141 100644
--- a/ui/app_list/views/app_list_view.h
+++ b/ui/app_list/views/app_list_view.h
@@ -69,7 +69,7 @@
   views::Widget* search_box_widget() const { return search_box_widget_; }
 
   // Overridden from views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void OnPaint(gfx::Canvas* canvas) override;
   const char* GetClassName() const override;
 
diff --git a/ui/app_list/views/apps_container_view.cc b/ui/app_list/views/apps_container_view.cc
index 9b598d62..cd84ebec 100644
--- a/ui/app_list/views/apps_container_view.cc
+++ b/ui/app_list/views/apps_container_view.cc
@@ -97,7 +97,7 @@
   show_state_ = AppsContainerView::SHOW_APPS;
 }
 
-gfx::Size AppsContainerView::GetPreferredSize() const {
+gfx::Size AppsContainerView::CalculatePreferredSize() 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 d249c47..dc56ff1 100644
--- a/ui/app_list/views/apps_container_view.h
+++ b/ui/app_list/views/apps_container_view.h
@@ -66,7 +66,7 @@
   void ReparentDragEnded();
 
   // views::View overrides:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   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 b3aa638..85023e9 100644
--- a/ui/app_list/views/apps_grid_view.cc
+++ b/ui/app_list/views/apps_grid_view.cc
@@ -628,7 +628,7 @@
   return bounds_animator_.IsAnimating(view);
 }
 
-gfx::Size AppsGridView::GetPreferredSize() const {
+gfx::Size AppsGridView::CalculatePreferredSize() const {
   const gfx::Insets insets(GetInsets());
   // If we are in a folder, ignore the page switcher for height calculations.
   int page_switcher_height =
diff --git a/ui/app_list/views/apps_grid_view.h b/ui/app_list/views/apps_grid_view.h
index 00ac573..2105597e 100644
--- a/ui/app_list/views/apps_grid_view.h
+++ b/ui/app_list/views/apps_grid_view.h
@@ -123,7 +123,7 @@
   PaginationModel* pagination_model() { return &pagination_model_; }
 
   // Overridden from views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   bool OnKeyPressed(const ui::KeyEvent& event) override;
   bool OnKeyReleased(const ui::KeyEvent& event) override;
diff --git a/ui/app_list/views/contents_view.cc b/ui/app_list/views/contents_view.cc
index 0d76ac1d..aad1125 100644
--- a/ui/app_list/views/contents_view.cc
+++ b/ui/app_list/views/contents_view.cc
@@ -450,7 +450,7 @@
   return apps_container_view_->GetPreferredSize();
 }
 
-gfx::Size ContentsView::GetPreferredSize() const {
+gfx::Size ContentsView::CalculatePreferredSize() const {
   gfx::Rect search_box_bounds = GetDefaultSearchBoxBounds();
   gfx::Rect default_contents_bounds = GetDefaultContentsBounds();
   gfx::Vector2d bottom_right =
diff --git a/ui/app_list/views/contents_view.h b/ui/app_list/views/contents_view.h
index e620a251..435ff00 100644
--- a/ui/app_list/views/contents_view.h
+++ b/ui/app_list/views/contents_view.h
@@ -125,7 +125,7 @@
   bool Back();
 
   // Overridden from views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   bool OnKeyPressed(const ui::KeyEvent& event) override;
   const char* GetClassName() const override;
diff --git a/ui/app_list/views/folder_header_view.cc b/ui/app_list/views/folder_header_view.cc
index 4ce2641..706f7eab 100644
--- a/ui/app_list/views/folder_header_view.cc
+++ b/ui/app_list/views/folder_header_view.cc
@@ -138,7 +138,7 @@
   return folder_name_view_->enabled();
 }
 
-gfx::Size FolderHeaderView::GetPreferredSize() const {
+gfx::Size FolderHeaderView::CalculatePreferredSize() 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 8279e8c4..4692357417 100644
--- a/ui/app_list/views/folder_header_view.h
+++ b/ui/app_list/views/folder_header_view.h
@@ -39,7 +39,7 @@
   void SetTextFocus();
 
   // Overridden from views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
  private:
   class FolderNameView;
diff --git a/ui/app_list/views/page_switcher.cc b/ui/app_list/views/page_switcher.cc
index c6eed4e..eb08075 100644
--- a/ui/app_list/views/page_switcher.cc
+++ b/ui/app_list/views/page_switcher.cc
@@ -50,7 +50,7 @@
   void set_button_width(int button_width) { button_width_ = button_width; }
 
   // Overridden from views::View:
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     return gfx::Size(button_width_, kButtonHeight);
   }
 
@@ -177,7 +177,7 @@
   }
 }
 
-gfx::Size PageSwitcher::GetPreferredSize() const {
+gfx::Size PageSwitcher::CalculatePreferredSize() 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 d553a17..127124d0 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:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
 
  private:
diff --git a/ui/app_list/views/search_box_view.cc b/ui/app_list/views/search_box_view.cc
index 7acba84..c7971ee 100644
--- a/ui/app_list/views/search_box_view.cc
+++ b/ui/app_list/views/search_box_view.cc
@@ -124,6 +124,7 @@
       contents_view_(NULL),
       focused_view_(FOCUS_SEARCH_BOX) {
   SetLayoutManager(new views::FillLayout);
+  SetPreferredSize(gfx::Size(kPreferredWidth, kPreferredHeight));
   AddChildView(content_container_);
 
   SetShadow(GetShadowForZHeight(2));
@@ -286,10 +287,6 @@
   back_button_->SetTooltipText(back_button_label);
 }
 
-gfx::Size SearchBoxView::GetPreferredSize() const {
-  return gfx::Size(kPreferredWidth, kPreferredHeight);
-}
-
 bool SearchBoxView::OnMouseWheel(const ui::MouseWheelEvent& event) {
   if (contents_view_)
     return contents_view_->OnMouseWheel(event);
diff --git a/ui/app_list/views/search_box_view.h b/ui/app_list/views/search_box_view.h
index bab31508..8b5790bc 100644
--- a/ui/app_list/views/search_box_view.h
+++ b/ui/app_list/views/search_box_view.h
@@ -79,7 +79,6 @@
   void SetBackButtonLabel(bool folder);
 
   // Overridden from views::View:
-  gfx::Size GetPreferredSize() const override;
   bool OnMouseWheel(const ui::MouseWheelEvent& event) override;
   void OnEnabledChanged() override;
   const char* GetClassName() const override;
diff --git a/ui/app_list/views/search_result_list_view.cc b/ui/app_list/views/search_result_list_view.cc
index 8b7e4b93..3446a2a 100644
--- a/ui/app_list/views/search_result_list_view.cc
+++ b/ui/app_list/views/search_result_list_view.cc
@@ -205,7 +205,7 @@
   results_container_->SetBoundsRect(GetLocalBounds());
 }
 
-gfx::Size SearchResultListView::GetPreferredSize() const {
+gfx::Size SearchResultListView::CalculatePreferredSize() const {
   return results_container_->GetPreferredSize();
 }
 
diff --git a/ui/app_list/views/search_result_list_view.h b/ui/app_list/views/search_result_list_view.h
index 661989e..b19041e4 100644
--- a/ui/app_list/views/search_result_list_view.h
+++ b/ui/app_list/views/search_result_list_view.h
@@ -49,7 +49,7 @@
 
   // Overridden from views::View:
   bool OnKeyPressed(const ui::KeyEvent& event) override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // Overridden from ui::ListModelObserver:
   void ListItemsRemoved(size_t start, size_t count) override;
diff --git a/ui/app_list/views/search_result_view.cc b/ui/app_list/views/search_result_view.cc
index f5856e26..678579d 100644
--- a/ui/app_list/views/search_result_view.cc
+++ b/ui/app_list/views/search_result_view.cc
@@ -164,7 +164,7 @@
   return kViewClassName;
 }
 
-gfx::Size SearchResultView::GetPreferredSize() const {
+gfx::Size SearchResultView::CalculatePreferredSize() 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 1233c82..c9f697c9 100644
--- a/ui/app_list/views/search_result_view.h
+++ b/ui/app_list/views/search_result_view.h
@@ -76,7 +76,7 @@
 
   // views::View overrides:
   const char* GetClassName() const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   bool OnKeyPressed(const ui::KeyEvent& event) override;
   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 6576341..0625e615 100644
--- a/ui/app_list/views/speech_view.cc
+++ b/ui/app_list/views/speech_view.cc
@@ -197,7 +197,7 @@
       speech_height);
 }
 
-gfx::Size SpeechView::GetPreferredSize() const {
+gfx::Size SpeechView::CalculatePreferredSize() 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 bca107d..a40de4cc 100644
--- a/ui/app_list/views/speech_view.h
+++ b/ui/app_list/views/speech_view.h
@@ -37,7 +37,7 @@
 
   // Overridden from views::View:
   void Layout() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   views::ImageButton* mic_button() { return mic_button_; }
 
diff --git a/ui/app_list/views/tile_item_view.cc b/ui/app_list/views/tile_item_view.cc
index bdb5667..d2beee07 100644
--- a/ui/app_list/views/tile_item_view.cc
+++ b/ui/app_list/views/tile_item_view.cc
@@ -139,7 +139,7 @@
   SchedulePaint();
 }
 
-gfx::Size TileItemView::GetPreferredSize() const {
+gfx::Size TileItemView::CalculatePreferredSize() const {
   return gfx::Size(kTileSize, kTileSize);
 }
 
diff --git a/ui/app_list/views/tile_item_view.h b/ui/app_list/views/tile_item_view.h
index 0082170..cc00cce1 100644
--- a/ui/app_list/views/tile_item_view.h
+++ b/ui/app_list/views/tile_item_view.h
@@ -67,7 +67,7 @@
   void UpdateBackgroundColor();
 
   // Overridden from views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   bool GetTooltipText(const gfx::Point& p,
                       base::string16* tooltip) const override;
 
diff --git a/ui/app_list/views/top_icon_animation_view.cc b/ui/app_list/views/top_icon_animation_view.cc
index 82119ee..9b941cbe 100644
--- a/ui/app_list/views/top_icon_animation_view.cc
+++ b/ui/app_list/views/top_icon_animation_view.cc
@@ -72,7 +72,7 @@
   layer()->SetTransform(open_folder_ ? gfx::Transform() : transform);
 }
 
-gfx::Size TopIconAnimationView::GetPreferredSize() const {
+gfx::Size TopIconAnimationView::CalculatePreferredSize() 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 afea67dc..dbdf4ee 100644
--- a/ui/app_list/views/top_icon_animation_view.h
+++ b/ui/app_list/views/top_icon_animation_view.h
@@ -55,7 +55,7 @@
 
  private:
   // views::View overrides:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
 
   // ui::ImplicitAnimationObserver overrides:
diff --git a/ui/arc/notification/arc_notification_view.cc b/ui/arc/notification/arc_notification_view.cc
index 3632b97..7904a6e 100644
--- a/ui/arc/notification/arc_notification_view.cc
+++ b/ui/arc/notification/arc_notification_view.cc
@@ -91,7 +91,7 @@
     contents_view_delegate_->OnSlideChanged();
 }
 
-gfx::Size ArcNotificationView::GetPreferredSize() const {
+gfx::Size ArcNotificationView::CalculatePreferredSize() const {
   const gfx::Insets insets = GetInsets();
   const int contents_width =
       message_center::kNotificationWidth - insets.width();
diff --git a/ui/arc/notification/arc_notification_view.h b/ui/arc/notification/arc_notification_view.h
index 3d399c8c..f82651e 100644
--- a/ui/arc/notification/arc_notification_view.h
+++ b/ui/arc/notification/arc_notification_view.h
@@ -46,7 +46,7 @@
 
   // Overridden from views::View:
   const char* GetClassName() const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   bool HasFocus() const override;
   void RequestFocus() override;
diff --git a/ui/chromeos/ime/candidate_view.cc b/ui/chromeos/ime/candidate_view.cc
index 62ec2623..0544fb7e 100644
--- a/ui/chromeos/ime/candidate_view.cc
+++ b/ui/chromeos/ime/candidate_view.cc
@@ -31,8 +31,8 @@
   // views::Label:
   // Returns the preferred size, but guarantees that the width has at
   // least kMinCandidateLabelWidth pixels.
-  gfx::Size GetPreferredSize() const override {
-    gfx::Size size = Label::GetPreferredSize();
+  gfx::Size CalculatePreferredSize() const override {
+    gfx::Size size = Label::CalculatePreferredSize();
     size.SetToMax(gfx::Size(kMinCandidateLabelWidth, 0));
     size.SetToMin(gfx::Size(kMaxCandidateLabelWidth, size.height()));
     return size;
@@ -282,7 +282,7 @@
   annotation_label_->SetBounds(x, 0, right - x, height());
 }
 
-gfx::Size CandidateView::GetPreferredSize() const {
+gfx::Size CandidateView::CalculatePreferredSize() const {
   const int padding_width =
       orientation_ == ui::CandidateWindow::VERTICAL ? 4 : 6;
   gfx::Size size;
diff --git a/ui/chromeos/ime/candidate_view.h b/ui/chromeos/ime/candidate_view.h
index edad9be..cb629020 100644
--- a/ui/chromeos/ime/candidate_view.h
+++ b/ui/chromeos/ime/candidate_view.h
@@ -47,7 +47,7 @@
   const char* GetClassName() const override;
   bool OnMouseDragged(const ui::MouseEvent& event) override;
   void Layout() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // The orientation of the candidate view.
   ui::CandidateWindow::Orientation orientation_;
diff --git a/ui/chromeos/ime/candidate_window_view.cc b/ui/chromeos/ime/candidate_window_view.cc
index 921198d..9029c6c 100644
--- a/ui/chromeos/ime/candidate_window_view.cc
+++ b/ui/chromeos/ime/candidate_window_view.cc
@@ -133,8 +133,8 @@
   }
 
  protected:
-  gfx::Size GetPreferredSize() const override {
-    gfx::Size size = views::View::GetPreferredSize();
+  gfx::Size CalculatePreferredSize() const override {
+    gfx::Size size = views::View::CalculatePreferredSize();
     size.SetToMax(gfx::Size(min_width_, 0));
     return size;
   }
diff --git a/ui/chromeos/ime/infolist_window.cc b/ui/chromeos/ime/infolist_window.cc
index 1c4ffb47..3a85d8ed 100644
--- a/ui/chromeos/ime/infolist_window.cc
+++ b/ui/chromeos/ime/infolist_window.cc
@@ -97,7 +97,7 @@
 
  private:
   // views::View implementation.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   void UpdateBackground();
 
@@ -146,7 +146,7 @@
   UpdateBackground();
 }
 
-gfx::Size InfolistEntryView::GetPreferredSize() const {
+gfx::Size InfolistEntryView::CalculatePreferredSize() const {
   return gfx::Size(kInfolistEntryWidth, GetHeightForWidth(kInfolistEntryWidth));
 }
 
diff --git a/ui/chromeos/ime/mode_indicator_view.cc b/ui/chromeos/ime/mode_indicator_view.cc
index 5920104d..b73d5de 100644
--- a/ui/chromeos/ime/mode_indicator_view.cc
+++ b/ui/chromeos/ime/mode_indicator_view.cc
@@ -70,7 +70,7 @@
                &views::Widget::Close);
 }
 
-gfx::Size ModeIndicatorView::GetPreferredSize() const {
+gfx::Size ModeIndicatorView::CalculatePreferredSize() const {
   gfx::Size size = label_view_->GetPreferredSize();
   size.SetToMax(gfx::Size(kMinSize, kMinSize));
   return size;
diff --git a/ui/chromeos/ime/mode_indicator_view.h b/ui/chromeos/ime/mode_indicator_view.h
index 81f4b99..91f1433 100644
--- a/ui/chromeos/ime/mode_indicator_view.h
+++ b/ui/chromeos/ime/mode_indicator_view.h
@@ -33,7 +33,7 @@
   void ShowAndFadeOut();
 
   // views::BubbleDialogDelegateView override:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   const char* GetClassName() const override;
   int GetDialogButtons() const override;
   void Init() override;
diff --git a/ui/message_center/views/bounded_label.cc b/ui/message_center/views/bounded_label.cc
index 3a45f3d..84ce848 100644
--- a/ui/message_center/views/bounded_label.cc
+++ b/ui/message_center/views/bounded_label.cc
@@ -316,7 +316,7 @@
   return label_->GetBaseline();
 }
 
-gfx::Size BoundedLabel::GetPreferredSize() const {
+gfx::Size BoundedLabel::CalculatePreferredSize() const {
   return visible() ? label_->GetSizeForWidthAndLines(-1, -1) : gfx::Size();
 }
 
diff --git a/ui/message_center/views/bounded_label.h b/ui/message_center/views/bounded_label.h
index 7d0fb957..e241b5a 100644
--- a/ui/message_center/views/bounded_label.h
+++ b/ui/message_center/views/bounded_label.h
@@ -52,7 +52,7 @@
 
   // views::View:
   int GetBaseline() const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   int GetHeightForWidth(int width) const override;
   void OnPaint(gfx::Canvas* canvas) override;
   bool CanProcessEventsWithinSubtree() const override;
diff --git a/ui/message_center/views/message_center_view.cc b/ui/message_center/views/message_center_view.cc
index 903f8b03..89bd7a1 100644
--- a/ui/message_center/views/message_center_view.cc
+++ b/ui/message_center/views/message_center_view.cc
@@ -276,7 +276,7 @@
     GetWidget()->GetRootView()->SchedulePaint();
 }
 
-gfx::Size MessageCenterView::GetPreferredSize() const {
+gfx::Size MessageCenterView::CalculatePreferredSize() const {
   if (settings_transition_animation_ &&
       settings_transition_animation_->is_animating()) {
     int content_width =
diff --git a/ui/message_center/views/message_center_view.h b/ui/message_center/views/message_center_view.h
index 8ff0637..4be5bbe 100644
--- a/ui/message_center/views/message_center_view.h
+++ b/ui/message_center/views/message_center_view.h
@@ -76,7 +76,7 @@
 
   // Overridden from views::View:
   void Layout() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   int GetHeightForWidth(int width) const override;
   bool OnMouseWheel(const ui::MouseWheelEvent& event) override;
   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 9edd0d80..7a5a4f9 100644
--- a/ui/message_center/views/message_center_view_unittest.cc
+++ b/ui/message_center/views/message_center_view_unittest.cc
@@ -58,7 +58,7 @@
                                 Test* test);
   ~MockNotificationView() override;
 
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   int GetHeightForWidth(int w) const override;
   void Layout() override;
 
@@ -78,10 +78,10 @@
 MockNotificationView::~MockNotificationView() {
 }
 
-gfx::Size MockNotificationView::GetPreferredSize() const {
+gfx::Size MockNotificationView::CalculatePreferredSize() const {
   test_->RegisterCall(GET_PREFERRED_SIZE);
   DCHECK(child_count() > 0);
-  return NotificationView::GetPreferredSize();
+  return NotificationView::CalculatePreferredSize();
 }
 
 int MockNotificationView::GetHeightForWidth(int width) const {
diff --git a/ui/message_center/views/message_list_view.cc b/ui/message_center/views/message_list_view.cc
index 9033eef..164dd00 100644
--- a/ui/message_center/views/message_list_view.cc
+++ b/ui/message_center/views/message_list_view.cc
@@ -154,7 +154,7 @@
   DoUpdateIfPossible();
 }
 
-gfx::Size MessageListView::GetPreferredSize() const {
+gfx::Size MessageListView::CalculatePreferredSize() const {
   // Just returns the current size. All size change must be done in
   // |DoUpdateIfPossible()| with animation , because we don't want to change
   // the size in unexpected timing.
diff --git a/ui/message_center/views/message_list_view.h b/ui/message_center/views/message_list_view.h
index 843991e8..b12f80f6 100644
--- a/ui/message_center/views/message_list_view.h
+++ b/ui/message_center/views/message_list_view.h
@@ -61,7 +61,7 @@
  protected:
   // Overridden from views::View.
   void Layout() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   int GetHeightForWidth(int width) const override;
   void PaintChildren(const ui::PaintContext& context) override;
   void ReorderChildLayers(ui::Layer* parent_layer) override;
diff --git a/ui/message_center/views/message_list_view_unittest.cc b/ui/message_center/views/message_list_view_unittest.cc
index 3afd6e7..2615a97 100644
--- a/ui/message_center/views/message_list_view_unittest.cc
+++ b/ui/message_center/views/message_list_view_unittest.cc
@@ -46,7 +46,7 @@
                        Test* test);
   ~MockNotificationView() override;
 
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   int GetHeightForWidth(int w) const override;
   void Layout() override;
 
@@ -67,10 +67,10 @@
 
 MockNotificationView::~MockNotificationView() {}
 
-gfx::Size MockNotificationView::GetPreferredSize() const {
+gfx::Size MockNotificationView::CalculatePreferredSize() const {
   test_->RegisterCall(GET_PREFERRED_SIZE);
   DCHECK(child_count() > 0);
-  return NotificationView::GetPreferredSize();
+  return NotificationView::CalculatePreferredSize();
 }
 
 int MockNotificationView::GetHeightForWidth(int width) const {
diff --git a/ui/message_center/views/notification_button.cc b/ui/message_center/views/notification_button.cc
index cfd84f38..72b2be7 100644
--- a/ui/message_center/views/notification_button.cc
+++ b/ui/message_center/views/notification_button.cc
@@ -74,7 +74,7 @@
   SetAccessibleName(title);
 }
 
-gfx::Size NotificationButton::GetPreferredSize() const {
+gfx::Size NotificationButton::CalculatePreferredSize() const {
   return gfx::Size(message_center::kNotificationWidth,
                    message_center::kButtonHeight);
 }
diff --git a/ui/message_center/views/notification_button.h b/ui/message_center/views/notification_button.h
index b9782a1..69f80bae 100644
--- a/ui/message_center/views/notification_button.h
+++ b/ui/message_center/views/notification_button.h
@@ -28,7 +28,7 @@
   void SetTitle(const base::string16& title);
 
   // Overridden from views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   int GetHeightForWidth(int width) const override;
   void OnPaint(gfx::Canvas* canvas) override;
   void OnFocus() override;
diff --git a/ui/message_center/views/notification_view.cc b/ui/message_center/views/notification_view.cc
index 1258273..54cb37b3 100644
--- a/ui/message_center/views/notification_view.cc
+++ b/ui/message_center/views/notification_view.cc
@@ -221,7 +221,7 @@
 NotificationView::~NotificationView() {
 }
 
-gfx::Size NotificationView::GetPreferredSize() const {
+gfx::Size NotificationView::CalculatePreferredSize() const {
   int top_width = top_view_->GetPreferredSize().width() +
                   icon_view_->GetPreferredSize().width();
   int bottom_width = bottom_view_->GetPreferredSize().width();
diff --git a/ui/message_center/views/notification_view.h b/ui/message_center/views/notification_view.h
index 0724bfd2..57398c5 100644
--- a/ui/message_center/views/notification_view.h
+++ b/ui/message_center/views/notification_view.h
@@ -40,7 +40,7 @@
   ~NotificationView() override;
 
   // Overridden from views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   int GetHeightForWidth(int width) const override;
   void Layout() override;
   void OnFocus() override;
diff --git a/ui/message_center/views/notifier_settings_view.cc b/ui/message_center/views/notifier_settings_view.cc
index e0fcd2b..3e541c7 100644
--- a/ui/message_center/views/notifier_settings_view.cc
+++ b/ui/message_center/views/notifier_settings_view.cc
@@ -121,7 +121,7 @@
 
   // views::View:
   void Layout() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
   void OnFocus() override;
   bool OnKeyPressed(const ui::KeyEvent& event) override;
@@ -151,7 +151,7 @@
   content->SetBounds(0, y, content_width, content_height);
 }
 
-gfx::Size EntryView::GetPreferredSize() const {
+gfx::Size EntryView::CalculatePreferredSize() const {
   DCHECK_EQ(1, child_count());
   gfx::Size size = child_at(0)->GetPreferredSize();
   size.SetToMax(gfx::Size(kWidth, settings::kEntryHeight));
@@ -587,7 +587,7 @@
   return size;
 }
 
-gfx::Size NotifierSettingsView::GetPreferredSize() const {
+gfx::Size NotifierSettingsView::CalculatePreferredSize() 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 1e23d5a..e6ed209b 100644
--- a/ui/message_center/views/notifier_settings_view.h
+++ b/ui/message_center/views/notifier_settings_view.h
@@ -101,7 +101,7 @@
   // Overridden from views::View:
   void Layout() override;
   gfx::Size GetMinimumSize() const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   bool OnKeyPressed(const ui::KeyEvent& event) override;
   bool OnMouseWheel(const ui::MouseWheelEvent& event) override;
 
diff --git a/ui/message_center/views/toast_contents_view.cc b/ui/message_center/views/toast_contents_view.cc
index 482aaea..785ffa6 100644
--- a/ui/message_center/views/toast_contents_view.cc
+++ b/ui/message_center/views/toast_contents_view.cc
@@ -304,7 +304,7 @@
   }
 }
 
-gfx::Size ToastContentsView::GetPreferredSize() const {
+gfx::Size ToastContentsView::CalculatePreferredSize() 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 1161a0b0..7c762d1 100644
--- a/ui/message_center/views/toast_contents_view.h
+++ b/ui/message_center/views/toast_contents_view.h
@@ -89,7 +89,7 @@
   void OnMouseEntered(const ui::MouseEvent& event) override;
   void OnMouseExited(const ui::MouseEvent& event) override;
   void Layout() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
   const char* GetClassName() const override;
 
diff --git a/ui/ozone/platform/drm/gpu/gbm_surfaceless.cc b/ui/ozone/platform/drm/gpu/gbm_surfaceless.cc
index 4b4913b..cacd16f 100644
--- a/ui/ozone/platform/drm/gpu/gbm_surfaceless.cc
+++ b/ui/ozone/platform/drm/gpu/gbm_surfaceless.cc
@@ -35,8 +35,7 @@
       surface_factory_(surface_factory),
       window_(std::move(window)),
       widget_(widget),
-      has_implicit_external_sync_(
-          HasEGLExtension("EGL_ARM_implicit_external_sync")),
+      has_native_fence_sync_(HasEGLExtension("EGL_ANDROID_native_fence_sync")),
       weak_factory_(this) {
   surface_factory_->RegisterSurface(window_->widget(), this);
   unsubmitted_frames_.push_back(base::MakeUnique<PendingFrame>());
@@ -114,7 +113,7 @@
 
   // TODO: the following should be replaced by a per surface flush as it gets
   // implemented in GL drivers.
-  EGLSyncKHR fence = InsertFence(has_implicit_external_sync_);
+  EGLSyncKHR fence = InsertFence(has_native_fence_sync_);
   if (!fence) {
     callback.Run(gfx::SwapResult::SWAP_FAILED);
     return;
@@ -206,12 +205,10 @@
   }
 }
 
-EGLSyncKHR GbmSurfaceless::InsertFence(bool implicit) {
-  const EGLint attrib_list[] = {EGL_SYNC_CONDITION_KHR,
-                                EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM,
-                                EGL_NONE};
-  return eglCreateSyncKHR(GetDisplay(), EGL_SYNC_FENCE_KHR,
-                          implicit ? attrib_list : NULL);
+EGLSyncKHR GbmSurfaceless::InsertFence(bool native) {
+  return eglCreateSyncKHR(
+      GetDisplay(), native ? EGL_SYNC_NATIVE_FENCE_ANDROID : EGL_SYNC_FENCE_KHR,
+      nullptr);
 }
 
 void GbmSurfaceless::FenceRetired(EGLSyncKHR fence, PendingFrame* frame) {
diff --git a/ui/ozone/platform/drm/gpu/gbm_surfaceless.h b/ui/ozone/platform/drm/gpu/gbm_surfaceless.h
index 1ec916ca..1513672 100644
--- a/ui/ozone/platform/drm/gpu/gbm_surfaceless.h
+++ b/ui/ozone/platform/drm/gpu/gbm_surfaceless.h
@@ -76,7 +76,7 @@
 
   void SubmitFrame();
 
-  EGLSyncKHR InsertFence(bool implicit);
+  EGLSyncKHR InsertFence(bool native);
   void FenceRetired(EGLSyncKHR fence, PendingFrame* frame);
 
   void SwapCompleted(const SwapCompletionCallback& callback,
@@ -90,7 +90,7 @@
   gfx::AcceleratedWidget widget_;
   std::unique_ptr<gfx::VSyncProvider> vsync_provider_;
   std::vector<std::unique_ptr<PendingFrame>> unsubmitted_frames_;
-  bool has_implicit_external_sync_;
+  bool has_native_fence_sync_;
   bool last_swap_buffers_result_ = true;
   bool swap_buffers_pending_ = false;
 
diff --git a/ui/views/bubble/bubble_dialog_delegate_unittest.cc b/ui/views/bubble/bubble_dialog_delegate_unittest.cc
index d643558..6524d04 100644
--- a/ui/views/bubble/bubble_dialog_delegate_unittest.cc
+++ b/ui/views/bubble/bubble_dialog_delegate_unittest.cc
@@ -33,7 +33,9 @@
 
   // BubbleDialogDelegateView overrides:
   View* GetInitiallyFocusedView() override { return view_; }
-  gfx::Size GetPreferredSize() const override { return gfx::Size(200, 200); }
+  gfx::Size CalculatePreferredSize() const override {
+    return gfx::Size(200, 200);
+  }
 
   using BubbleDialogDelegateView::SetAnchorRect;
   using BubbleDialogDelegateView::GetBubbleFrameView;
diff --git a/ui/views/bubble/bubble_frame_view.cc b/ui/views/bubble/bubble_frame_view.cc
index 8612f3f..e3edaf9 100644
--- a/ui/views/bubble/bubble_frame_view.cc
+++ b/ui/views/bubble/bubble_frame_view.cc
@@ -264,7 +264,7 @@
   return insets;
 }
 
-gfx::Size BubbleFrameView::GetPreferredSize() const {
+gfx::Size BubbleFrameView::CalculatePreferredSize() const {
   // Get the preferred size of the client area.
   gfx::Size client_size = GetWidget()->client_view()->GetPreferredSize();
   // Expand it to include the bubble border and space for the arrow.
diff --git a/ui/views/bubble/bubble_frame_view.h b/ui/views/bubble/bubble_frame_view.h
index a88a425c..4f4d9464 100644
--- a/ui/views/bubble/bubble_frame_view.h
+++ b/ui/views/bubble/bubble_frame_view.h
@@ -55,7 +55,7 @@
   // View:
   const char* GetClassName() const override;
   gfx::Insets GetInsets() const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   gfx::Size GetMaximumSize() const override;
   void Layout() override;
diff --git a/ui/views/bubble/bubble_frame_view_unittest.cc b/ui/views/bubble/bubble_frame_view_unittest.cc
index 5ffb1b2..dda52ed 100644
--- a/ui/views/bubble/bubble_frame_view_unittest.cc
+++ b/ui/views/bubble/bubble_frame_view_unittest.cc
@@ -528,7 +528,9 @@
     return override_snap_.value_or(
         BubbleDialogDelegateView::ShouldSnapFrameWidth());
   }
-  gfx::Size GetPreferredSize() const override { return gfx::Size(200, 200); }
+  gfx::Size CalculatePreferredSize() const override {
+    return gfx::Size(200, 200);
+  }
 
  private:
   base::Optional<bool> override_snap_;
diff --git a/ui/views/bubble/info_bubble.cc b/ui/views/bubble/info_bubble.cc
index 0b633c9..6e315235 100644
--- a/ui/views/bubble/info_bubble.cc
+++ b/ui/views/bubble/info_bubble.cc
@@ -86,9 +86,9 @@
   return frame_;
 }
 
-gfx::Size InfoBubble::GetPreferredSize() const {
+gfx::Size InfoBubble::CalculatePreferredSize() const {
   if (preferred_width_ == 0)
-    return BubbleDialogDelegateView::GetPreferredSize();
+    return BubbleDialogDelegateView::CalculatePreferredSize();
 
   int pref_width = preferred_width_;
   pref_width -= frame_->GetInsets().width();
diff --git a/ui/views/bubble/info_bubble.h b/ui/views/bubble/info_bubble.h
index 2b24b77..1c0e5074 100644
--- a/ui/views/bubble/info_bubble.h
+++ b/ui/views/bubble/info_bubble.h
@@ -28,7 +28,7 @@
 
   // BubbleDialogDelegateView:
   NonClientFrameView* CreateNonClientFrameView(Widget* widget) override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void OnWidgetDestroyed(Widget* widget) override;
   void OnWidgetBoundsChanged(Widget* widget,
                              const gfx::Rect& new_bounds) override;
diff --git a/ui/views/bubble/tray_bubble_view.cc b/ui/views/bubble/tray_bubble_view.cc
index d4d7862..6d29a97d 100644
--- a/ui/views/bubble/tray_bubble_view.cc
+++ b/ui/views/bubble/tray_bubble_view.cc
@@ -316,7 +316,7 @@
   return delegate_->GetAccessibleNameForBubble();
 }
 
-gfx::Size TrayBubbleView::GetPreferredSize() const {
+gfx::Size TrayBubbleView::CalculatePreferredSize() const {
   return gfx::Size(preferred_width_, GetHeightForWidth(preferred_width_));
 }
 
diff --git a/ui/views/bubble/tray_bubble_view.h b/ui/views/bubble/tray_bubble_view.h
index 7aa054d..ccd7b77 100644
--- a/ui/views/bubble/tray_bubble_view.h
+++ b/ui/views/bubble/tray_bubble_view.h
@@ -141,7 +141,7 @@
   void OnWidgetClosing(Widget* widget) override;
 
   // Overridden from views::View.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMaximumSize() const override;
   int GetHeightForWidth(int width) const override;
   void OnMouseEntered(const ui::MouseEvent& event) override;
diff --git a/ui/views/color_chooser/color_chooser_view.cc b/ui/views/color_chooser/color_chooser_view.cc
index eefbfdf1..a6e1aba7 100644
--- a/ui/views/color_chooser/color_chooser_view.cc
+++ b/ui/views/color_chooser/color_chooser_view.cc
@@ -129,7 +129,7 @@
   void ProcessEventAtLocation(const gfx::Point& point) override;
 
   // View overrides:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void OnPaint(gfx::Canvas* canvas) override;
 
   ColorChooserView* chooser_view_;
@@ -164,7 +164,7 @@
   SchedulePaint();
 }
 
-gfx::Size ColorChooserView::HueView::GetPreferredSize() const {
+gfx::Size ColorChooserView::HueView::CalculatePreferredSize() const {
   // We put indicators on the both sides of the hue bar.
   return gfx::Size(kHueBarWidth + kHueIndicatorSize * 2 + kBorderWidth * 2,
                    kSaturationValueSize + kBorderWidth * 2);
@@ -236,7 +236,7 @@
   void ProcessEventAtLocation(const gfx::Point& point) override;
 
   // View overrides:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void OnPaint(gfx::Canvas* canvas) override;
 
   ColorChooserView* chooser_view_;
@@ -285,7 +285,8 @@
   chooser_view_->OnSaturationValueChosen(saturation, value);
 }
 
-gfx::Size ColorChooserView::SaturationValueView::GetPreferredSize() const {
+gfx::Size ColorChooserView::SaturationValueView::CalculatePreferredSize()
+    const {
   return gfx::Size(kSaturationValueSize + kBorderWidth * 2,
                    kSaturationValueSize + kBorderWidth * 2);
 }
diff --git a/ui/views/controls/button/checkbox.cc b/ui/views/controls/button/checkbox.cc
index ba29b46..eaf1a86 100644
--- a/ui/views/controls/button/checkbox.cc
+++ b/ui/views/controls/button/checkbox.cc
@@ -87,7 +87,7 @@
   }
 
   // Limit the checkbox height to match the legacy appearance.
-  const gfx::Size preferred_size(LabelButton::GetPreferredSize());
+  const gfx::Size preferred_size(LabelButton::CalculatePreferredSize());
   SetMinSize(gfx::Size(0, preferred_size.height() + 4));
 }
 
diff --git a/ui/views/controls/button/label_button.cc b/ui/views/controls/button/label_button.cc
index 606124a..ab726dc7 100644
--- a/ui/views/controls/button/label_button.cc
+++ b/ui/views/controls/button/label_button.cc
@@ -183,7 +183,7 @@
   focus_painter_ = std::move(focus_painter);
 }
 
-gfx::Size LabelButton::GetPreferredSize() const {
+gfx::Size LabelButton::CalculatePreferredSize() const {
   if (cached_preferred_size_valid_)
     return cached_preferred_size_;
 
diff --git a/ui/views/controls/button/label_button.h b/ui/views/controls/button/label_button.h
index 8495c43..a608594c 100644
--- a/ui/views/controls/button/label_button.h
+++ b/ui/views/controls/button/label_button.h
@@ -98,7 +98,7 @@
 
   // View:
   void SetBorder(std::unique_ptr<Border> border) override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   int GetHeightForWidth(int w) const override;
   void Layout() override;
   const char* GetClassName() const override;
diff --git a/ui/views/controls/button/menu_button.cc b/ui/views/controls/button/menu_button.cc
index 33740d8..74188e4 100644
--- a/ui/views/controls/button/menu_button.cc
+++ b/ui/views/controls/button/menu_button.cc
@@ -191,8 +191,8 @@
 //
 ////////////////////////////////////////////////////////////////////////////////
 
-gfx::Size MenuButton::GetPreferredSize() const {
-  gfx::Size prefsize = LabelButton::GetPreferredSize();
+gfx::Size MenuButton::CalculatePreferredSize() const {
+  gfx::Size prefsize = LabelButton::CalculatePreferredSize();
   if (show_menu_marker_) {
     prefsize.Enlarge(menu_marker_->width() + kMenuMarkerPaddingLeft +
                          kMenuMarkerPaddingRight,
diff --git a/ui/views/controls/button/menu_button.h b/ui/views/controls/button/menu_button.h
index 0d87c31..0d4af71 100644
--- a/ui/views/controls/button/menu_button.h
+++ b/ui/views/controls/button/menu_button.h
@@ -76,7 +76,7 @@
   virtual bool IsTriggerableEventType(const ui::Event& event);
 
   // Overridden from View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   const char* GetClassName() const override;
   void OnPaint(gfx::Canvas* canvas) override;
   bool OnMousePressed(const ui::MouseEvent& event) override;
diff --git a/ui/views/controls/button/toggle_button.cc b/ui/views/controls/button/toggle_button.cc
index e2ef935..f5885b1 100644
--- a/ui/views/controls/button/toggle_button.cc
+++ b/ui/views/controls/button/toggle_button.cc
@@ -147,7 +147,7 @@
   focus_painter_ = std::move(focus_painter);
 }
 
-gfx::Size ToggleButton::GetPreferredSize() const {
+gfx::Size ToggleButton::CalculatePreferredSize() const {
   gfx::Rect rect(kTrackWidth, kTrackHeight);
   rect.Inset(gfx::Insets(-kTrackVerticalMargin, -kTrackHorizontalMargin));
   if (border())
diff --git a/ui/views/controls/button/toggle_button.h b/ui/views/controls/button/toggle_button.h
index 452dd80..aef030a 100644
--- a/ui/views/controls/button/toggle_button.h
+++ b/ui/views/controls/button/toggle_button.h
@@ -28,7 +28,7 @@
   void SetFocusPainter(std::unique_ptr<Painter> focus_painter);
 
   // views::View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
  private:
   friend class TestToggleButton;
diff --git a/ui/views/controls/combobox/combobox.cc b/ui/views/controls/combobox/combobox.cc
index d7aa64a8d..b85f07dc 100644
--- a/ui/views/controls/combobox/combobox.cc
+++ b/ui/views/controls/combobox/combobox.cc
@@ -584,7 +584,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // Combobox, View overrides:
 
-gfx::Size Combobox::GetPreferredSize() const {
+gfx::Size Combobox::CalculatePreferredSize() 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 62ee4b9..33a8f41 100644
--- a/ui/views/controls/combobox/combobox.h
+++ b/ui/views/controls/combobox/combobox.h
@@ -91,7 +91,7 @@
   bool invalid() const { return invalid_; }
 
   // Overridden from View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   const char* GetClassName() const override;
   bool SkipDefaultKeyEventProcessing(const ui::KeyEvent& e) override;
   bool OnKeyPressed(const ui::KeyEvent& e) override;
diff --git a/ui/views/controls/label.cc b/ui/views/controls/label.cc
index 2523f9a..c5e3fc5e 100644
--- a/ui/views/controls/label.cc
+++ b/ui/views/controls/label.cc
@@ -312,7 +312,7 @@
   return GetInsets().top() + font_list().GetBaseline();
 }
 
-gfx::Size Label::GetPreferredSize() const {
+gfx::Size Label::CalculatePreferredSize() 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,
diff --git a/ui/views/controls/label.h b/ui/views/controls/label.h
index 0fa4db8..0881558c 100644
--- a/ui/views/controls/label.h
+++ b/ui/views/controls/label.h
@@ -204,7 +204,7 @@
 
   // View:
   int GetBaseline() const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   int GetHeightForWidth(int w) const override;
   void Layout() override;
diff --git a/ui/views/controls/menu/menu_item_view.cc b/ui/views/controls/menu/menu_item_view.cc
index c2d98e2..5b15552 100644
--- a/ui/views/controls/menu/menu_item_view.cc
+++ b/ui/views/controls/menu/menu_item_view.cc
@@ -410,7 +410,7 @@
   PaintButton(canvas, PB_NORMAL);
 }
 
-gfx::Size MenuItemView::GetPreferredSize() const {
+gfx::Size MenuItemView::CalculatePreferredSize() const {
   const MenuItemDimensions& dimensions(GetDimensions());
   return gfx::Size(dimensions.standard_width + dimensions.children_width,
                    dimensions.height);
diff --git a/ui/views/controls/menu/menu_item_view.h b/ui/views/controls/menu/menu_item_view.h
index a7c729ed..c80a8db 100644
--- a/ui/views/controls/menu/menu_item_view.h
+++ b/ui/views/controls/menu/menu_item_view.h
@@ -270,7 +270,7 @@
   void OnPaint(gfx::Canvas* canvas) override;
 
   // Returns the preferred size of this item.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // Gets the preferred height for the given |width|. This is only different
   // from GetPreferredSize().width() if the item has a child view with flexible
diff --git a/ui/views/controls/menu/menu_item_view_unittest.cc b/ui/views/controls/menu/menu_item_view_unittest.cc
index 3166935..7c9151f 100644
--- a/ui/views/controls/menu/menu_item_view_unittest.cc
+++ b/ui/views/controls/menu/menu_item_view_unittest.cc
@@ -19,7 +19,7 @@
   ~SquareView() override {}
 
  private:
-  gfx::Size GetPreferredSize() const override { return gfx::Size(1, 1); }
+  gfx::Size CalculatePreferredSize() const override { return gfx::Size(1, 1); }
   int GetHeightForWidth(int width) const override { return width; }
 };
 
diff --git a/ui/views/controls/menu/menu_scroll_view_container.cc b/ui/views/controls/menu/menu_scroll_view_container.cc
index 124442a..a0a74eb 100644
--- a/ui/views/controls/menu/menu_scroll_view_container.cc
+++ b/ui/views/controls/menu/menu_scroll_view_container.cc
@@ -42,7 +42,7 @@
         pref_height_(MenuItemView::pref_menu_height()) {
   }
 
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     return gfx::Size(MenuConfig::instance().scroll_arrow_height * 2 - 1,
                      pref_height_);
   }
@@ -202,7 +202,7 @@
   bubble_border_->set_arrow_offset(offset);
 }
 
-gfx::Size MenuScrollViewContainer::GetPreferredSize() const {
+gfx::Size MenuScrollViewContainer::CalculatePreferredSize() 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 b6ba0bfe..f083419 100644
--- a/ui/views/controls/menu/menu_scroll_view_container.h
+++ b/ui/views/controls/menu/menu_scroll_view_container.h
@@ -32,7 +32,7 @@
   void SetBubbleArrowOffset(int offset);
 
   // View overrides.
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   void OnPaintBackground(gfx::Canvas* canvas) override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
diff --git a/ui/views/controls/menu/menu_separator.cc b/ui/views/controls/menu/menu_separator.cc
index 297833a..55bdcf8 100644
--- a/ui/views/controls/menu/menu_separator.cc
+++ b/ui/views/controls/menu/menu_separator.cc
@@ -57,7 +57,7 @@
                           ui::NativeTheme::kNormal, GetLocalBounds(), params);
 }
 
-gfx::Size MenuSeparator::GetPreferredSize() const {
+gfx::Size MenuSeparator::CalculatePreferredSize() const {
   const MenuConfig& menu_config = MenuConfig::instance();
   int height = menu_config.separator_height;
   switch (type_) {
diff --git a/ui/views/controls/menu/menu_separator.h b/ui/views/controls/menu/menu_separator.h
index 2eeee1c..e0dbdb9 100644
--- a/ui/views/controls/menu/menu_separator.h
+++ b/ui/views/controls/menu/menu_separator.h
@@ -18,7 +18,7 @@
 
   // View overrides.
   void OnPaint(gfx::Canvas* canvas) override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
  private:
   // The type of the separator.
diff --git a/ui/views/controls/menu/submenu_view.cc b/ui/views/controls/menu/submenu_view.cc
index 5f3b54c7..77795b9 100644
--- a/ui/views/controls/menu/submenu_view.cc
+++ b/ui/views/controls/menu/submenu_view.cc
@@ -127,7 +127,7 @@
   }
 }
 
-gfx::Size SubmenuView::GetPreferredSize() const {
+gfx::Size SubmenuView::CalculatePreferredSize() const {
   if (!has_children())
     return gfx::Size();
 
diff --git a/ui/views/controls/menu/submenu_view.h b/ui/views/controls/menu/submenu_view.h
index f88e266..6bfacac 100644
--- a/ui/views/controls/menu/submenu_view.h
+++ b/ui/views/controls/menu/submenu_view.h
@@ -63,7 +63,7 @@
   // Positions and sizes the child views. This tiles the views vertically,
   // giving each child the available width.
   void Layout() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
 
   // Override from View.
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
diff --git a/ui/views/controls/native/native_view_host.cc b/ui/views/controls/native/native_view_host.cc
index 34f4af7f..ba056cc1 100644
--- a/ui/views/controls/native/native_view_host.cc
+++ b/ui/views/controls/native/native_view_host.cc
@@ -60,7 +60,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // NativeViewHost, View overrides:
 
-gfx::Size NativeViewHost::GetPreferredSize() const {
+gfx::Size NativeViewHost::CalculatePreferredSize() 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 6b9aa0e..5b018371 100644
--- a/ui/views/controls/native/native_view_host.h
+++ b/ui/views/controls/native/native_view_host.h
@@ -76,7 +76,7 @@
   void NativeViewDestroyed();
 
   // Overridden from View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void Layout() override;
   void OnPaint(gfx::Canvas* canvas) override;
   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 70824b2..461fc65 100644
--- a/ui/views/controls/progress_bar.cc
+++ b/ui/views/controls/progress_bar.cc
@@ -55,7 +55,7 @@
   node_data->AddState(ui::AX_STATE_READ_ONLY);
 }
 
-gfx::Size ProgressBar::GetPreferredSize() const {
+gfx::Size ProgressBar::CalculatePreferredSize() const {
   // The width will typically be ignored.
   gfx::Size pref_size(1, preferred_height_);
   gfx::Insets insets = GetInsets();
diff --git a/ui/views/controls/progress_bar.h b/ui/views/controls/progress_bar.h
index 0a277c5..a77d599 100644
--- a/ui/views/controls/progress_bar.h
+++ b/ui/views/controls/progress_bar.h
@@ -26,7 +26,7 @@
 
   // Overridden from View:
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   const char* GetClassName() const override;
   void OnPaint(gfx::Canvas* canvas) override;
 
diff --git a/ui/views/controls/scroll_view.cc b/ui/views/controls/scroll_view.cc
index 2cc36ef6..aa480a2 100644
--- a/ui/views/controls/scroll_view.cc
+++ b/ui/views/controls/scroll_view.cc
@@ -293,9 +293,9 @@
   SchedulePaint();
 }
 
-gfx::Size ScrollView::GetPreferredSize() const {
+gfx::Size ScrollView::CalculatePreferredSize() const {
   if (!is_bounded())
-    return View::GetPreferredSize();
+    return View::CalculatePreferredSize();
 
   gfx::Size size = contents_->GetPreferredSize();
   size.SetToMax(gfx::Size(size.width(), min_height_));
diff --git a/ui/views/controls/scroll_view.h b/ui/views/controls/scroll_view.h
index b15a338d..8fe732f 100644
--- a/ui/views/controls/scroll_view.h
+++ b/ui/views/controls/scroll_view.h
@@ -98,7 +98,7 @@
   void SetHasFocusIndicator(bool has_focus_indicator);
 
   // View overrides:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   int GetHeightForWidth(int width) const override;
   void Layout() override;
   bool OnKeyPressed(const ui::KeyEvent& 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 7127f43..023b87e 100644
--- a/ui/views/controls/scrollbar/base_scroll_bar_thumb.h
+++ b/ui/views/controls/scrollbar/base_scroll_bar_thumb.h
@@ -45,7 +45,7 @@
   int GetPosition() const;
 
   // View overrides:
-  gfx::Size GetPreferredSize() const override = 0;
+  gfx::Size CalculatePreferredSize() const override = 0;
 
  protected:
   // View overrides:
diff --git a/ui/views/controls/scrollbar/cocoa_scroll_bar.h b/ui/views/controls/scrollbar/cocoa_scroll_bar.h
index 3f1ba279..91de43a2 100644
--- a/ui/views/controls/scrollbar/cocoa_scroll_bar.h
+++ b/ui/views/controls/scrollbar/cocoa_scroll_bar.h
@@ -64,7 +64,7 @@
 
   // View:
   void Layout() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void OnPaint(gfx::Canvas* canvas) override;
 
  private:
diff --git a/ui/views/controls/scrollbar/cocoa_scroll_bar.mm b/ui/views/controls/scrollbar/cocoa_scroll_bar.mm
index ce75522..e9c1dd6 100644
--- a/ui/views/controls/scrollbar/cocoa_scroll_bar.mm
+++ b/ui/views/controls/scrollbar/cocoa_scroll_bar.mm
@@ -74,7 +74,7 @@
 
  protected:
   // View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void OnPaint(gfx::Canvas* canvas) override;
   bool OnMousePressed(const ui::MouseEvent& event) override;
   void OnMouseReleased(const ui::MouseEvent& event) override;
@@ -110,7 +110,7 @@
   return GetState() == CustomButton::STATE_PRESSED;
 }
 
-gfx::Size CocoaScrollBarThumb::GetPreferredSize() const {
+gfx::Size CocoaScrollBarThumb::CalculatePreferredSize() const {
   return gfx::Size(kScrollbarThumbThickness, kScrollbarThumbThickness);
 }
 
@@ -238,7 +238,7 @@
   }
 }
 
-gfx::Size CocoaScrollBar::GetPreferredSize() const {
+gfx::Size CocoaScrollBar::CalculatePreferredSize() const {
   return gfx::Size();
 }
 
diff --git a/ui/views/controls/scrollbar/overlay_scroll_bar.cc b/ui/views/controls/scrollbar/overlay_scroll_bar.cc
index ea751bacc..d46f89c2 100644
--- a/ui/views/controls/scrollbar/overlay_scroll_bar.cc
+++ b/ui/views/controls/scrollbar/overlay_scroll_bar.cc
@@ -45,7 +45,7 @@
   layer()->SetAnimator(ui::LayerAnimator::CreateImplicitAnimator());
 }
 
-gfx::Size OverlayScrollBar::Thumb::GetPreferredSize() const {
+gfx::Size OverlayScrollBar::Thumb::CalculatePreferredSize() const {
   // The visual size of the thumb is kThumbThickness, but it slides back and
   // forth by kThumbHoverOffset. To make event targetting work well, expand the
   // width of the thumb such that it's always taking up the full width of the
diff --git a/ui/views/controls/scrollbar/overlay_scroll_bar.h b/ui/views/controls/scrollbar/overlay_scroll_bar.h
index 5e4dac9..b0f2a7c 100644
--- a/ui/views/controls/scrollbar/overlay_scroll_bar.h
+++ b/ui/views/controls/scrollbar/overlay_scroll_bar.h
@@ -40,7 +40,7 @@
 
    protected:
     // BaseScrollBarThumb:
-    gfx::Size GetPreferredSize() const override;
+    gfx::Size CalculatePreferredSize() const override;
     void OnPaint(gfx::Canvas* canvas) override;
     void OnBoundsChanged(const gfx::Rect& previous_bounds) override;
     void OnStateChanged() override;
diff --git a/ui/views/controls/scrollbar/scroll_bar_views.cc b/ui/views/controls/scrollbar/scroll_bar_views.cc
index 882e381..aec7b254 100644
--- a/ui/views/controls/scrollbar/scroll_bar_views.cc
+++ b/ui/views/controls/scrollbar/scroll_bar_views.cc
@@ -31,7 +31,7 @@
   ScrollBarButton(ButtonListener* listener, Type type);
   ~ScrollBarButton() override;
 
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   const char* GetClassName() const override { return "ScrollBarButton"; }
 
  protected:
@@ -51,7 +51,7 @@
   explicit ScrollBarThumb(BaseScrollBar* scroll_bar);
   ~ScrollBarThumb() override;
 
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   const char* GetClassName() const override { return "ScrollBarThumb"; }
 
  protected:
@@ -75,7 +75,7 @@
 
 ScrollBarButton::~ScrollBarButton() {}
 
-gfx::Size ScrollBarButton::GetPreferredSize() const {
+gfx::Size ScrollBarButton::CalculatePreferredSize() const {
   return GetNativeTheme()->GetPartSize(
       GetNativeThemePart(), GetNativeThemeState(), GetNativeThemeParams());
 }
@@ -144,7 +144,7 @@
 
 ScrollBarThumb::~ScrollBarThumb() {}
 
-gfx::Size ScrollBarThumb::GetPreferredSize() const {
+gfx::Size ScrollBarThumb::CalculatePreferredSize() const {
   return GetNativeTheme()->GetPartSize(
       GetNativeThemePart(), GetNativeThemeState(), GetNativeThemeParams());
 }
@@ -277,7 +277,7 @@
   GetNativeTheme()->Paint(canvas->sk_canvas(), part_, state_, bounds, params_);
 }
 
-gfx::Size ScrollBarViews::GetPreferredSize() const {
+gfx::Size ScrollBarViews::CalculatePreferredSize() const {
   return gfx::Size(IsHorizontal() ? 0 : GetThickness(),
                    IsHorizontal() ? GetThickness() : 0);
 }
diff --git a/ui/views/controls/scrollbar/scroll_bar_views.h b/ui/views/controls/scrollbar/scroll_bar_views.h
index 8fff6fd..4571a629 100644
--- a/ui/views/controls/scrollbar/scroll_bar_views.h
+++ b/ui/views/controls/scrollbar/scroll_bar_views.h
@@ -35,7 +35,7 @@
   // View overrides:
   void Layout() override;
   void OnPaint(gfx::Canvas* canvas) override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   const char* GetClassName() const override;
 
   // ScrollBar overrides:
diff --git a/ui/views/controls/separator.cc b/ui/views/controls/separator.cc
index fc1c5b0..82a6cab 100644
--- a/ui/views/controls/separator.cc
+++ b/ui/views/controls/separator.cc
@@ -33,7 +33,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // Separator, View overrides:
 
-gfx::Size Separator::GetPreferredSize() const {
+gfx::Size Separator::CalculatePreferredSize() const {
   gfx::Size size(kThickness, preferred_height_);
   gfx::Insets insets = GetInsets();
   size.Enlarge(insets.width(), insets.height());
diff --git a/ui/views/controls/separator.h b/ui/views/controls/separator.h
index 9a1fec3..b0674fc 100644
--- a/ui/views/controls/separator.h
+++ b/ui/views/controls/separator.h
@@ -31,7 +31,7 @@
   void SetPreferredHeight(int height);
 
   // Overridden from View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
   void OnPaint(gfx::Canvas* canvas) override;
   const char* GetClassName() const override;
diff --git a/ui/views/controls/slider.cc b/ui/views/controls/slider.cc
index b41192a..48f0732 100644
--- a/ui/views/controls/slider.cc
+++ b/ui/views/controls/slider.cc
@@ -217,7 +217,7 @@
   return kViewClassName;
 }
 
-gfx::Size Slider::GetPreferredSize() const {
+gfx::Size Slider::CalculatePreferredSize() const {
   const int kSizeMajor = 200;
   const int kSizeMinor = 40;
 
diff --git a/ui/views/controls/slider.h b/ui/views/controls/slider.h
index 0290beb..f2dace0 100644
--- a/ui/views/controls/slider.h
+++ b/ui/views/controls/slider.h
@@ -97,7 +97,7 @@
 
   // views::View:
   const char* GetClassName() const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   bool OnMousePressed(const ui::MouseEvent& event) override;
   bool OnMouseDragged(const ui::MouseEvent& event) override;
   void OnMouseReleased(const ui::MouseEvent& event) override;
diff --git a/ui/views/controls/styled_label.cc b/ui/views/controls/styled_label.cc
index 8ca9f35..6750ce0 100644
--- a/ui/views/controls/styled_label.cc
+++ b/ui/views/controls/styled_label.cc
@@ -210,7 +210,7 @@
   return insets;
 }
 
-gfx::Size StyledLabel::GetPreferredSize() const {
+gfx::Size StyledLabel::CalculatePreferredSize() const {
   return calculated_size_;
 }
 
diff --git a/ui/views/controls/styled_label.h b/ui/views/controls/styled_label.h
index 503f356..2a36e8f1 100644
--- a/ui/views/controls/styled_label.h
+++ b/ui/views/controls/styled_label.h
@@ -110,7 +110,7 @@
   // View:
   const char* GetClassName() const override;
   gfx::Insets GetInsets() const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   int GetHeightForWidth(int w) const override;
   void Layout() override;
   void PreferredSizeChanged() override;
diff --git a/ui/views/controls/tabbed_pane/tabbed_pane.cc b/ui/views/controls/tabbed_pane/tabbed_pane.cc
index ba9abe4d..33e35b9 100644
--- a/ui/views/controls/tabbed_pane/tabbed_pane.cc
+++ b/ui/views/controls/tabbed_pane/tabbed_pane.cc
@@ -78,7 +78,7 @@
   void OnStateChanged() override;
 
   // Overridden from View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   void OnFocus() override;
   void OnBlur() override;
 
@@ -207,7 +207,7 @@
   event->SetHandled();
 }
 
-gfx::Size Tab::GetPreferredSize() const {
+gfx::Size Tab::CalculatePreferredSize() const {
   gfx::Size size(preferred_title_size_);
   size.Enlarge(GetInsets().width(), GetInsets().height());
   return size;
@@ -296,8 +296,9 @@
                                                gfx::Font::NORMAL, font_weight));
 }
 
-gfx::Size MdTab::GetPreferredSize() const {
-  return gfx::Size(Tab::GetPreferredSize().width(), kHarmonyTabStripTabHeight);
+gfx::Size MdTab::CalculatePreferredSize() const {
+  return gfx::Size(Tab::CalculatePreferredSize().width(),
+                   kHarmonyTabStripTabHeight);
 }
 
 void MdTab::OnFocus() {
@@ -574,7 +575,7 @@
     SelectTab(tab);
 }
 
-gfx::Size TabbedPane::GetPreferredSize() const {
+gfx::Size TabbedPane::CalculatePreferredSize() 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 aca7f69..2397828 100644
--- a/ui/views/controls/tabbed_pane/tabbed_pane.h
+++ b/ui/views/controls/tabbed_pane/tabbed_pane.h
@@ -59,7 +59,7 @@
   void SelectTab(Tab* tab);
 
   // Overridden from View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   const char* GetClassName() const override;
 
  private:
@@ -121,7 +121,7 @@
   void OnMouseEntered(const ui::MouseEvent& event) override;
   void OnMouseExited(const ui::MouseEvent& event) override;
   void OnGestureEvent(ui::GestureEvent* event) override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   const char* GetClassName() const override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
   bool HandleAccessibleAction(const ui::AXActionData& action_data) override;
diff --git a/ui/views/controls/table/table_header.cc b/ui/views/controls/table/table_header.cc
index a1f1bf8..a4e1117 100644
--- a/ui/views/controls/table/table_header.cc
+++ b/ui/views/controls/table/table_header.cc
@@ -166,7 +166,7 @@
   return kViewClassName;
 }
 
-gfx::Size TableHeader::GetPreferredSize() const {
+gfx::Size TableHeader::CalculatePreferredSize() 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 050a3467..a7d2870 100644
--- a/ui/views/controls/table/table_header.h
+++ b/ui/views/controls/table/table_header.h
@@ -35,7 +35,7 @@
   void Layout() override;
   void OnPaint(gfx::Canvas* canvas) override;
   const char* GetClassName() const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::NativeCursor GetCursor(const ui::MouseEvent& event) override;
   bool OnMousePressed(const ui::MouseEvent& event) override;
   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 984efa12..008e22bb9 100644
--- a/ui/views/controls/table/table_view.cc
+++ b/ui/views/controls/table/table_view.cc
@@ -345,7 +345,7 @@
   return kViewClassName;
 }
 
-gfx::Size TableView::GetPreferredSize() const {
+gfx::Size TableView::CalculatePreferredSize() 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 e6524ecf..10d9bd8 100644
--- a/ui/views/controls/table/table_view.h
+++ b/ui/views/controls/table/table_view.h
@@ -170,7 +170,7 @@
   // View overrides:
   void Layout() override;
   const char* GetClassName() const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   bool OnKeyPressed(const ui::KeyEvent& event) override;
   bool OnMousePressed(const ui::MouseEvent& event) override;
   void OnGestureEvent(ui::GestureEvent* event) override;
diff --git a/ui/views/controls/textfield/textfield.cc b/ui/views/controls/textfield/textfield.cc
index cd6aa21..ea4f91a2 100644
--- a/ui/views/controls/textfield/textfield.cc
+++ b/ui/views/controls/textfield/textfield.cc
@@ -585,7 +585,7 @@
   return GetInsets().top() + GetRenderText()->GetBaseline();
 }
 
-gfx::Size Textfield::GetPreferredSize() const {
+gfx::Size Textfield::CalculatePreferredSize() 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 358a248..27639d4 100644
--- a/ui/views/controls/textfield/textfield.h
+++ b/ui/views/controls/textfield/textfield.h
@@ -212,7 +212,7 @@
   // View overrides:
   gfx::Insets GetInsets() const override;
   int GetBaseline() const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   const char* GetClassName() const override;
   void SetBorder(std::unique_ptr<Border> b) override;
   gfx::NativeCursor GetCursor(const ui::MouseEvent& event) override;
diff --git a/ui/views/controls/throbber.cc b/ui/views/controls/throbber.cc
index 40b075f..7194bd3 100644
--- a/ui/views/controls/throbber.cc
+++ b/ui/views/controls/throbber.cc
@@ -62,7 +62,7 @@
   SchedulePaint();
 }
 
-gfx::Size Throbber::GetPreferredSize() const {
+gfx::Size Throbber::CalculatePreferredSize() const {
   return gfx::Size(kDefaultDiameter, kDefaultDiameter);
 }
 
diff --git a/ui/views/controls/throbber.h b/ui/views/controls/throbber.h
index c4bbbc5..a87fd9d 100644
--- a/ui/views/controls/throbber.h
+++ b/ui/views/controls/throbber.h
@@ -28,7 +28,7 @@
   void SetChecked(bool checked);
 
   // Overridden from View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   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 8e28b82..5fbe4f3e 100644
--- a/ui/views/controls/tree/tree_view.cc
+++ b/ui/views/controls/tree/tree_view.cc
@@ -371,7 +371,7 @@
   LayoutEditor();
 }
 
-gfx::Size TreeView::GetPreferredSize() const {
+gfx::Size TreeView::CalculatePreferredSize() const {
   return preferred_size_;
 }
 
diff --git a/ui/views/controls/tree/tree_view.h b/ui/views/controls/tree/tree_view.h
index 5de65d3..3c6205c 100644
--- a/ui/views/controls/tree/tree_view.h
+++ b/ui/views/controls/tree/tree_view.h
@@ -122,7 +122,7 @@
 
   // View overrides:
   void Layout() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
   bool OnMousePressed(const ui::MouseEvent& event) override;
   void OnGestureEvent(ui::GestureEvent* event) override;
diff --git a/ui/views/controls/webview/web_dialog_view.cc b/ui/views/controls/webview/web_dialog_view.cc
index 2004b24..05657b2 100644
--- a/ui/views/controls/webview/web_dialog_view.cc
+++ b/ui/views/controls/webview/web_dialog_view.cc
@@ -66,7 +66,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // WebDialogView, views::View implementation:
 
-gfx::Size WebDialogView::GetPreferredSize() const {
+gfx::Size WebDialogView::CalculatePreferredSize() const {
   gfx::Size out;
   if (delegate_)
     delegate_->GetDialogSize(&out);
diff --git a/ui/views/controls/webview/web_dialog_view.h b/ui/views/controls/webview/web_dialog_view.h
index 00be646..bdc7783b 100644
--- a/ui/views/controls/webview/web_dialog_view.h
+++ b/ui/views/controls/webview/web_dialog_view.h
@@ -55,7 +55,7 @@
   content::WebContents* web_contents();
 
   // Overridden from views::ClientView:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
   void ViewHierarchyChanged(
diff --git a/ui/views/corewm/tooltip_aura.cc b/ui/views/corewm/tooltip_aura.cc
index 478becc2..a9433d4 100644
--- a/ui/views/corewm/tooltip_aura.cc
+++ b/ui/views/corewm/tooltip_aura.cc
@@ -99,7 +99,7 @@
     OnPaintBorder(canvas);
   }
 
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     gfx::Size view_size = render_text_->GetStringSize();
     gfx::Insets insets = border()->GetInsets();
     view_size.Enlarge(insets.width(), insets.height());
diff --git a/ui/views/examples/examples_window.cc b/ui/views/examples/examples_window.cc
index af4a6df..5f869477 100644
--- a/ui/views/examples/examples_window.cc
+++ b/ui/views/examples/examples_window.cc
@@ -190,7 +190,9 @@
     if (operation_ == QUIT_ON_CLOSE)
       base::MessageLoop::current()->QuitWhenIdle();
   }
-  gfx::Size GetPreferredSize() const override { return gfx::Size(800, 300); }
+  gfx::Size CalculatePreferredSize() const override {
+    return gfx::Size(800, 300);
+  }
 
   // ComboboxListener:
   void OnPerformAction(Combobox* combobox) override {
diff --git a/ui/views/examples/label_example.cc b/ui/views/examples/label_example.cc
index b285bb8..5db8bbf 100644
--- a/ui/views/examples/label_example.cc
+++ b/ui/views/examples/label_example.cc
@@ -40,8 +40,8 @@
   ~PreferredSizeLabel() override {}
 
   // Label:
-  gfx::Size GetPreferredSize() const override {
-    return gfx::Size(50, Label::GetPreferredSize().height());
+  gfx::Size CalculatePreferredSize() const override {
+    return gfx::Size(50, Label::CalculatePreferredSize().height());
   }
 
  private:
diff --git a/ui/views/examples/multiline_example.cc b/ui/views/examples/multiline_example.cc
index 8b2b2ba..86be5fa 100644
--- a/ui/views/examples/multiline_example.cc
+++ b/ui/views/examples/multiline_example.cc
@@ -38,8 +38,8 @@
   ~PreferredSizeLabel() override {}
 
   // Label:
-  gfx::Size GetPreferredSize() const override {
-    return gfx::Size(50, Label::GetPreferredSize().height());
+  gfx::Size CalculatePreferredSize() const override {
+    return gfx::Size(50, Label::CalculatePreferredSize().height());
   }
 
  private:
@@ -63,7 +63,7 @@
     render_text_->Draw(canvas);
   }
 
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() 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);
diff --git a/ui/views/examples/scroll_view_example.cc b/ui/views/examples/scroll_view_example.cc
index e6a710cb8..ce11e7b 100644
--- a/ui/views/examples/scroll_view_example.cc
+++ b/ui/views/examples/scroll_view_example.cc
@@ -30,7 +30,7 @@
     AddChildView(new RadioButton(ASCIIToUTF16("Radio Button"), 0));
   }
 
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     return gfx::Size(width(), height());
   }
 
diff --git a/ui/views/examples/throbber_example.cc b/ui/views/examples/throbber_example.cc
index c17cbb0..7c513972 100644
--- a/ui/views/examples/throbber_example.cc
+++ b/ui/views/examples/throbber_example.cc
@@ -22,7 +22,7 @@
   }
 
   // View::
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     return gfx::Size(width(), height());
   }
 
diff --git a/ui/views/layout/layout_manager.h b/ui/views/layout/layout_manager.h
index 5e610b0..5e4a1e4 100644
--- a/ui/views/layout/layout_manager.h
+++ b/ui/views/layout/layout_manager.h
@@ -25,7 +25,7 @@
 // How a LayoutManager operates is specific to the LayoutManager. Non-trivial
 // LayoutManagers calculate preferred size and layout information using the
 // minimum and preferred size of the children of the View. That is, they
-// make use of View::GetMinimumSize(), View::GetPreferredSize() and/or
+// make use of View::GetMinimumSize(), View::CalculatePreferredSize() and/or
 // View::GetHeightForWidth().
 class VIEWS_EXPORT LayoutManager {
  public:
@@ -41,14 +41,14 @@
 
   // Return the preferred size, which is typically the size needed to give each
   // child of |host| its preferred size. Generally this is calculated using the
-  // View::GetPreferredSize() on each of the children of |host|.
+  // View::CalculatePreferredSize() on each of the children of |host|.
   virtual gfx::Size GetPreferredSize(const View* host) const = 0;
 
   // Return the preferred height for a particular width. Generally this is
-  // calculated using View::GetHeightForWidth() or View::GetPreferredSize() on
-  // each of the children of |host|. Override this function if the preferred
-  // height varies based on the size. For example, a multi-line labels preferred
-  // height may change with the width.
+  // calculated using View::GetHeightForWidth() or
+  // View::CalculatePreferredSize() on each of the children of |host|. Override
+  // this function if the preferred height varies based on the size. For
+  // example, a multi-line labels preferred height may change with the width.
   // The default implementation returns GetPreferredSize().height().
   virtual int GetPreferredHeightForWidth(const View* host, int width) const;
 
diff --git a/ui/views/mus/desktop_window_tree_host_mus.cc b/ui/views/mus/desktop_window_tree_host_mus.cc
index 1d054ac..bd880bf9 100644
--- a/ui/views/mus/desktop_window_tree_host_mus.cc
+++ b/ui/views/mus/desktop_window_tree_host_mus.cc
@@ -95,7 +95,7 @@
   void UpdateWindowTitle() override {}
   void SizeConstraintsChanged() override {}
 
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     return widget_->non_client_view()
         ->GetWindowBoundsForClientBounds(
             gfx::Rect(widget_->client_view()->GetPreferredSize()))
diff --git a/ui/views/test/test_views.cc b/ui/views/test/test_views.cc
index 6755dba..e6bd3b948 100644
--- a/ui/views/test/test_views.cc
+++ b/ui/views/test/test_views.cc
@@ -18,7 +18,7 @@
 
 StaticSizedView::~StaticSizedView() {}
 
-gfx::Size StaticSizedView::GetPreferredSize() const {
+gfx::Size StaticSizedView::CalculatePreferredSize() const {
   return preferred_size_;
 }
 
@@ -44,10 +44,10 @@
   return w * factor_;
 }
 
-gfx::Size ProportionallySizedView::GetPreferredSize() const {
+gfx::Size ProportionallySizedView::CalculatePreferredSize() const {
   if (preferred_width_ >= 0)
     return gfx::Size(preferred_width_, GetHeightForWidth(preferred_width_));
-  return View::GetPreferredSize();
+  return View::CalculatePreferredSize();
 }
 
 CloseWidgetView::CloseWidgetView(ui::EventType event_type)
diff --git a/ui/views/test/test_views.h b/ui/views/test/test_views.h
index 9097092..20723aa 100644
--- a/ui/views/test/test_views.h
+++ b/ui/views/test/test_views.h
@@ -28,7 +28,7 @@
   }
 
   // View overrides:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   gfx::Size GetMaximumSize() const override;
 
@@ -49,7 +49,7 @@
   void SetPreferredWidth(int width);
 
   int GetHeightForWidth(int w) const override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() 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 201e6d04..d70efd74f 100644
--- a/ui/views/touchui/touch_selection_controller_impl.cc
+++ b/ui/views/touchui/touch_selection_controller_impl.cc
@@ -319,7 +319,7 @@
     }
   }
 
-  gfx::Size GetPreferredSize() const override {
+  gfx::Size CalculatePreferredSize() const override {
     // This function will be called during widget initialization, i.e. before
     // SetBoundInScreen has been called. No-op in that case.
     if (selection_bound_.type() == gfx::SelectionBound::EMPTY)
diff --git a/ui/views/view.cc b/ui/views/view.cc
index 23200e3e..9257c06 100644
--- a/ui/views/view.cc
+++ b/ui/views/view.cc
@@ -424,8 +424,6 @@
 gfx::Size View::GetPreferredSize() const {
   if (preferred_size_)
     return *preferred_size_;
-  if (layout_manager_.get())
-    return layout_manager_->GetPreferredSize(this);
   return CalculatePreferredSize();
 }
 
@@ -1493,6 +1491,8 @@
 // Size and disposition --------------------------------------------------------
 
 gfx::Size View::CalculatePreferredSize() const {
+  if (layout_manager_.get())
+    return layout_manager_->GetPreferredSize(this);
   return gfx::Size();
 }
 
diff --git a/ui/views/view.h b/ui/views/view.h
index 410e2a5..9c78e196 100644
--- a/ui/views/view.h
+++ b/ui/views/view.h
@@ -273,11 +273,8 @@
   virtual int GetBaseline() const;
 
   // Get the size the View would like to be, if enough space were available.
-  // First checks |preferred_size_|, then |layout_manager_|, then
-  // CalculatePreferredSize().
-  // TODO(estade): migrate existing GetPreferredSize() overrides to
-  // CalculatePreferredSize() and make this function non-virtual.
-  virtual gfx::Size GetPreferredSize() const;
+  // First checks |preferred_size_|, then CalculatePreferredSize().
+  gfx::Size GetPreferredSize() const;
 
   // Sets the size that this View will request during layout. The actual size
   // may differ. It should rarely be necessary to set this; usually the right
diff --git a/ui/views/widget/root_view_unittest.cc b/ui/views/widget/root_view_unittest.cc
index c90b99c7..9f0cd55 100644
--- a/ui/views/widget/root_view_unittest.cc
+++ b/ui/views/widget/root_view_unittest.cc
@@ -549,7 +549,7 @@
   int layout_count() const { return layout_count_; }
 
   // DialogDelegateView:
-  gfx::Size GetPreferredSize() const override { return preferred_size_; }
+  gfx::Size CalculatePreferredSize() const override { return preferred_size_; }
   void Layout() override {
     EXPECT_EQ(size(), preferred_size_);
     ++layout_count_;
diff --git a/ui/views/window/client_view.cc b/ui/views/window/client_view.cc
index d4bbac67..2f080ba 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() const {
+gfx::Size ClientView::CalculatePreferredSize() 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();
diff --git a/ui/views/window/client_view.h b/ui/views/window/client_view.h
index ac897c8..1a5d5ca 100644
--- a/ui/views/window/client_view.h
+++ b/ui/views/window/client_view.h
@@ -57,7 +57,7 @@
   virtual int NonClientHitTest(const gfx::Point& point);
 
   // Overridden from View:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   gfx::Size GetMaximumSize() const override;
   void Layout() override;
diff --git a/ui/views/window/custom_frame_view.cc b/ui/views/window/custom_frame_view.cc
index 14d4630..27a5316 100644
--- a/ui/views/window/custom_frame_view.cc
+++ b/ui/views/window/custom_frame_view.cc
@@ -247,7 +247,7 @@
   LayoutClientView();
 }
 
-gfx::Size CustomFrameView::GetPreferredSize() const {
+gfx::Size CustomFrameView::CalculatePreferredSize() const {
   return frame_->non_client_view()->GetWindowBoundsForClientBounds(
       gfx::Rect(frame_->client_view()->GetPreferredSize())).size();
 }
diff --git a/ui/views/window/custom_frame_view.h b/ui/views/window/custom_frame_view.h
index 76d4fc26..336447d 100644
--- a/ui/views/window/custom_frame_view.h
+++ b/ui/views/window/custom_frame_view.h
@@ -51,7 +51,7 @@
   // Overridden from View:
   void OnPaint(gfx::Canvas* canvas) override;
   void Layout() override;
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   gfx::Size GetMaximumSize() const override;
 
diff --git a/ui/views/window/dialog_client_view.cc b/ui/views/window/dialog_client_view.cc
index 5acea2bd..57a0ee00 100644
--- a/ui/views/window/dialog_client_view.cc
+++ b/ui/views/window/dialog_client_view.cc
@@ -167,9 +167,9 @@
 ////////////////////////////////////////////////////////////////////////////////
 // DialogClientView, View overrides:
 
-gfx::Size DialogClientView::GetPreferredSize() const {
+gfx::Size DialogClientView::CalculatePreferredSize() const {
   return GetBoundingSizeForVerticalStack(
-      ClientView::GetPreferredSize(),
+      ClientView::CalculatePreferredSize(),
       button_row_container_->GetPreferredSize());
 }
 
diff --git a/ui/views/window/dialog_client_view.h b/ui/views/window/dialog_client_view.h
index d1137476..cbe9b87 100644
--- a/ui/views/window/dialog_client_view.h
+++ b/ui/views/window/dialog_client_view.h
@@ -51,7 +51,7 @@
   const DialogClientView* AsDialogClientView() const override;
 
   // View implementation:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   gfx::Size GetMaximumSize() const override;
 
diff --git a/ui/views/window/dialog_client_view_unittest.cc b/ui/views/window/dialog_client_view_unittest.cc
index 3d933752..a143aa9 100644
--- a/ui/views/window/dialog_client_view_unittest.cc
+++ b/ui/views/window/dialog_client_view_unittest.cc
@@ -47,7 +47,7 @@
   }
 
   // DialogDelegateView:
-  gfx::Size GetPreferredSize() const override { return preferred_size_; }
+  gfx::Size CalculatePreferredSize() const override { return preferred_size_; }
   gfx::Size GetMinimumSize() const override { return min_size_; }
   gfx::Size GetMaximumSize() const override { return max_size_; }
   ClientView* CreateClientView(Widget* widget) override {
diff --git a/ui/views/window/dialog_delegate_unittest.cc b/ui/views/window/dialog_delegate_unittest.cc
index f4993bd3..936936f 100644
--- a/ui/views/window/dialog_delegate_unittest.cc
+++ b/ui/views/window/dialog_delegate_unittest.cc
@@ -59,7 +59,9 @@
     return closeable_;
   }
 
-  gfx::Size GetPreferredSize() const override { return gfx::Size(200, 200); }
+  gfx::Size CalculatePreferredSize() const override {
+    return gfx::Size(200, 200);
+  }
   bool AcceleratorPressed(const ui::Accelerator& accelerator) override {
     return should_handle_escape_;
   }
diff --git a/ui/views/window/native_frame_view.cc b/ui/views/window/native_frame_view.cc
index cd9e054..c25d3e9 100644
--- a/ui/views/window/native_frame_view.cc
+++ b/ui/views/window/native_frame_view.cc
@@ -75,7 +75,7 @@
   // Nothing to do.
 }
 
-gfx::Size NativeFrameView::GetPreferredSize() const {
+gfx::Size NativeFrameView::CalculatePreferredSize() 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
diff --git a/ui/views/window/native_frame_view.h b/ui/views/window/native_frame_view.h
index b8aa632..16045930 100644
--- a/ui/views/window/native_frame_view.h
+++ b/ui/views/window/native_frame_view.h
@@ -31,7 +31,7 @@
   void SizeConstraintsChanged() override;
 
   // View overrides:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   gfx::Size GetMaximumSize() const override;
   const char* GetClassName() const override;
diff --git a/ui/views/window/non_client_view.cc b/ui/views/window/non_client_view.cc
index 4e5188af..2d20a34c 100644
--- a/ui/views/window/non_client_view.cc
+++ b/ui/views/window/non_client_view.cc
@@ -146,7 +146,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // NonClientView, View overrides:
 
-gfx::Size NonClientView::GetPreferredSize() const {
+gfx::Size NonClientView::CalculatePreferredSize() 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.
diff --git a/ui/views/window/non_client_view.h b/ui/views/window/non_client_view.h
index 05bb447..e2970c4 100644
--- a/ui/views/window/non_client_view.h
+++ b/ui/views/window/non_client_view.h
@@ -231,7 +231,7 @@
   void SetAccessibleName(const base::string16& name);
 
   // NonClientView, View overrides:
-  gfx::Size GetPreferredSize() const override;
+  gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   gfx::Size GetMaximumSize() const override;
   void Layout() override;