Index: chrome/browser/ui/views/chrome_views_delegate.cc |
diff --git a/chrome/browser/ui/views/chrome_views_delegate.cc b/chrome/browser/ui/views/chrome_views_delegate.cc |
index fef73a45e373c2e634787a05d2ac5e7af25fff53..20793d9fc5e0ff082b4013cfcd6fbb4a45a30e1a 100644 |
--- a/chrome/browser/ui/views/chrome_views_delegate.cc |
+++ b/chrome/browser/ui/views/chrome_views_delegate.cc |
@@ -57,17 +57,32 @@ PrefService* GetPrefsForWindow(const views::Widget* window) { |
return profile->GetPrefs(); |
} |
+ChromeViewsDelegate* views_delegate = nullptr; |
+ |
} // namespace |
// ChromeViewsDelegate -------------------------------------------------------- |
-#if !defined(OS_WIN) |
-ChromeViewsDelegate::ChromeViewsDelegate() {} |
+#if defined(OS_WIN) |
+ChromeViewsDelegate::ChromeViewsDelegate() |
+ : in_autohide_edges_callback_(false), weak_factory_(this) { |
+#else |
+ChromeViewsDelegate::ChromeViewsDelegate() { |
#endif |
+ DCHECK(!views_delegate); |
+ views_delegate = this; |
+} |
ChromeViewsDelegate::~ChromeViewsDelegate() { |
DCHECK_EQ(0u, ref_count_); |
+ |
+ DCHECK_EQ(this, views_delegate); |
+ views_delegate = nullptr; |
+} |
+ |
+ChromeViewsDelegate* ChromeViewsDelegate::GetInstance() { |
+ return views_delegate; |
} |
void ChromeViewsDelegate::SaveWindowPlacement(const views::Widget* window, |
@@ -196,58 +211,61 @@ ChromeViewsDelegate::GetBlockingPoolTaskRunner() { |
return content::BrowserThread::GetBlockingPool(); |
} |
-gfx::Insets ChromeViewsDelegate::GetDialogButtonInsets() const { |
- const LayoutDelegate* layout_delegate = LayoutDelegate::Get(); |
- const int top = layout_delegate->GetMetric( |
- LayoutDelegate::Metric::DIALOG_BUTTON_TOP_SPACING); |
- const int margin = layout_delegate->GetMetric( |
- LayoutDelegate::Metric::DIALOG_BUTTON_MARGIN); |
- return gfx::Insets(top, margin, margin, margin); |
-} |
- |
-int ChromeViewsDelegate::GetDialogCloseButtonMargin() const { |
- return LayoutDelegate::Get()->GetMetric( |
- LayoutDelegate::Metric::DIALOG_CLOSE_BUTTON_MARGIN); |
-} |
- |
-int ChromeViewsDelegate::GetDialogRelatedButtonHorizontalSpacing() const { |
- return LayoutDelegate::Get()->GetMetric( |
- LayoutDelegate::Metric::RELATED_BUTTON_HORIZONTAL_SPACING); |
-} |
- |
-int ChromeViewsDelegate::GetDialogRelatedControlVerticalSpacing() const { |
- return LayoutDelegate::Get()->GetMetric( |
- LayoutDelegate::Metric::RELATED_CONTROL_VERTICAL_SPACING); |
-} |
- |
-gfx::Insets ChromeViewsDelegate::GetDialogFrameViewInsets() const { |
+gfx::Insets ChromeViewsDelegate::GetInsetsMetric( |
+ views::InsetsMetric metric) const { |
const LayoutDelegate* layout_delegate = LayoutDelegate::Get(); |
- const int top = layout_delegate->GetMetric( |
- LayoutDelegate::Metric::PANEL_CONTENT_MARGIN); |
- const int side = layout_delegate->GetMetric( |
- LayoutDelegate::Metric::DIALOG_BUTTON_MARGIN); |
- // Titles are inset at the top and sides, but not at the bottom. |
- return gfx::Insets(top, side, 0, side); |
-} |
- |
-gfx::Insets ChromeViewsDelegate::GetBubbleDialogMargins() const { |
- return gfx::Insets(LayoutDelegate::Get()->GetMetric( |
- LayoutDelegate::Metric::PANEL_CONTENT_MARGIN)); |
-} |
- |
-int ChromeViewsDelegate::GetButtonMinimumWidth() const { |
- return LayoutDelegate::Get()->GetMetric( |
- LayoutDelegate::Metric::BUTTON_MINIMUM_WIDTH); |
+ switch (metric) { |
+ case views::InsetsMetric::DIALOG_BUTTON: { |
+ const int top = layout_delegate->GetMetric( |
+ LayoutDelegate::Metric::DIALOG_BUTTON_TOP_SPACING); |
+ const int margin = layout_delegate->GetMetric( |
+ LayoutDelegate::Metric::DIALOG_BUTTON_MARGIN); |
+ return gfx::Insets(top, margin, margin, margin); |
+ } |
+ case views::InsetsMetric::DIALOG_FRAME_VIEW: { |
+ const int top = layout_delegate->GetMetric( |
+ LayoutDelegate::Metric::PANEL_CONTENT_MARGIN); |
+ const int side = layout_delegate->GetMetric( |
+ LayoutDelegate::Metric::DIALOG_BUTTON_MARGIN); |
+ // Titles are inset at the top and sides, but not at the bottom. |
+ return gfx::Insets(top, side, 0, side); |
+ } |
+ case views::InsetsMetric::BUBBLE_DIALOG: |
+ return gfx::Insets(layout_delegate->GetMetric( |
+ LayoutDelegate::Metric::PANEL_CONTENT_MARGIN)); |
+ } |
+ NOTREACHED(); |
+ return gfx::Insets(); |
} |
-int ChromeViewsDelegate::GetDialogButtonMinimumWidth() const { |
- return LayoutDelegate::Get()->GetMetric( |
- LayoutDelegate::Metric::DIALOG_BUTTON_MINIMUM_WIDTH); |
+int ChromeViewsDelegate::GetDistanceMetric(views::DistanceMetric metric) const { |
+ switch (metric) { |
+ case views::DistanceMetric::CLOSE_BUTTON_MARGIN: |
+ return LayoutDelegate::Get()->GetMetric( |
+ LayoutDelegate::Metric::DIALOG_CLOSE_BUTTON_MARGIN); |
+ case views::DistanceMetric::RELATED_BUTTON_HORIZONTAL: |
+ return LayoutDelegate::Get()->GetMetric( |
+ LayoutDelegate::Metric::RELATED_BUTTON_HORIZONTAL_SPACING); |
+ case views::DistanceMetric::RELATED_CONTROL_HORIZONTAL: |
+ return LayoutDelegate::Get()->GetMetric( |
+ LayoutDelegate::Metric::RELATED_CONTROL_HORIZONTAL_SPACING); |
+ case views::DistanceMetric::RELATED_CONTROL_VERTICAL: |
+ return LayoutDelegate::Get()->GetMetric( |
+ LayoutDelegate::Metric::RELATED_CONTROL_VERTICAL_SPACING); |
+ case views::DistanceMetric::DIALOG_BUTTON_MINIMUM_WIDTH: |
+ return LayoutDelegate::Get()->GetMetric( |
+ LayoutDelegate::Metric::DIALOG_BUTTON_MINIMUM_WIDTH); |
+ case views::DistanceMetric::BUTTON_HORIZONTAL_PADDING: |
+ return LayoutDelegate::Get()->GetMetric( |
+ LayoutDelegate::Metric::BUTTON_HORIZONTAL_PADDING); |
+ } |
+ NOTREACHED(); |
+ return 0; |
} |
-int ChromeViewsDelegate::GetButtonHorizontalPadding() const { |
- return LayoutDelegate::Get()->GetMetric( |
- LayoutDelegate::Metric::BUTTON_HORIZONTAL_PADDING); |
+int ChromeViewsDelegate::GetDefaultDistanceMetric( |
+ views::DistanceMetric metric) const { |
+ return views::ViewsDelegate::GetDistanceMetric(metric); |
} |
#if !defined(OS_CHROMEOS) |