Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(377)

Side by Side Diff: chrome/browser/ui/views/harmony/harmony_layout_delegate.cc

Issue 2758323002: Broke out layout metric information from ViewsDelegate to LayoutProvider (Closed)
Patch Set: Fix warning which causes one of the bots to fail Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/views/harmony/harmony_layout_delegate.h" 5 #include "chrome/browser/ui/views/harmony/harmony_layout_delegate.h"
6 6
7 #include "base/lazy_instance.h" 7 gfx::Insets HarmonyLayoutDelegate::GetInsetsMetric(
8 #include "base/logging.h" 8 ChromeInsetsMetric metric) const {
9 9 switch (metric) {
10 static base::LazyInstance<HarmonyLayoutDelegate>::DestructorAtExit 10 case ChromeInsetsMetric::DIALOG_BUTTON:
11 harmony_layout_delegate_ = LAZY_INSTANCE_INITIALIZER; 11 case ChromeInsetsMetric::PANEL:
12 12 case ChromeInsetsMetric::BUBBLE_DIALOG:
13 // static 13 return gfx::Insets(kHarmonyLayoutUnit);
14 HarmonyLayoutDelegate* HarmonyLayoutDelegate::Get() { 14 case ChromeInsetsMetric::DIALOG_FRAME_VIEW: {
15 return harmony_layout_delegate_.Pointer(); 15 constexpr int top = kHarmonyLayoutUnit;
16 constexpr int side = kHarmonyLayoutUnit;
17 // Titles are inset at the top and sides, but not at the bottom.
18 return gfx::Insets(top, side, 0, side);
19 }
20 case ChromeInsetsMetric::VECTOR_IMAGE_BUTTON:
21 return gfx::Insets(kHarmonyLayoutUnit / 4);
22 }
23 NOTREACHED();
24 return gfx::Insets();
16 } 25 }
17 26
18 int HarmonyLayoutDelegate::GetMetric(Metric metric) const { 27 int HarmonyLayoutDelegate::GetDistanceMetric(
28 ChromeDistanceMetric metric) const {
19 switch (metric) { 29 switch (metric) {
20 case Metric::BUTTON_HORIZONTAL_PADDING: 30 case ChromeDistanceMetric::CLOSE_BUTTON_MARGIN: {
21 return kHarmonyLayoutUnit;
22 case Metric::DIALOG_BUTTON_MARGIN:
23 return kHarmonyLayoutUnit;
24 case Metric::BUTTON_MAX_LINKABLE_WIDTH:
25 return kHarmonyLayoutUnit * 8;
26 case Metric::BUTTON_MINIMUM_WIDTH:
27 case Metric::DIALOG_BUTTON_MINIMUM_WIDTH:
28 // Minimum label size plus padding.
29 return 2 * kHarmonyLayoutUnit +
30 2 * GetMetric(Metric::BUTTON_HORIZONTAL_PADDING);
31 case Metric::DIALOG_BUTTON_TOP_SPACING:
32 return kHarmonyLayoutUnit;
33 case Metric::DIALOG_CLOSE_BUTTON_MARGIN: {
34 constexpr int kVisibleMargin = kHarmonyLayoutUnit / 2; 31 constexpr int kVisibleMargin = kHarmonyLayoutUnit / 2;
35 // The visible margin is based on the unpadded size, so to get the actual 32 // The visible margin is based on the unpadded size, so to get the actual
36 // margin we need to subtract out the padding. 33 // margin we need to subtract out the padding.
37 return kVisibleMargin - GetMetric(Metric::VECTOR_IMAGE_BUTTON_PADDING); 34 return kVisibleMargin - kHarmonyLayoutUnit / 4;
38 } 35 }
39 case Metric::PANEL_CONTENT_MARGIN: 36 case ChromeDistanceMetric::RELATED_BUTTON_HORIZONTAL:
37 return kHarmonyLayoutUnit / 2;
38 case ChromeDistanceMetric::RELATED_CONTROL_HORIZONTAL:
40 return kHarmonyLayoutUnit; 39 return kHarmonyLayoutUnit;
41 case Metric::RELATED_BUTTON_HORIZONTAL_SPACING: 40 case ChromeDistanceMetric::RELATED_CONTROL_HORIZONTAL_SMALL:
41 return kHarmonyLayoutUnit;
42 case ChromeDistanceMetric::RELATED_CONTROL_VERTICAL:
42 return kHarmonyLayoutUnit / 2; 43 return kHarmonyLayoutUnit / 2;
43 case Metric::RELATED_CONTROL_HORIZONTAL_SPACING: 44 case ChromeDistanceMetric::RELATED_CONTROL_VERTICAL_SMALL:
45 return kHarmonyLayoutUnit / 2;
46 case ChromeDistanceMetric::DIALOG_BUTTON_MARGIN:
44 return kHarmonyLayoutUnit; 47 return kHarmonyLayoutUnit;
45 case Metric::RELATED_CONTROL_HORIZONTAL_SPACING_SMALL: 48 case ChromeDistanceMetric::DIALOG_BUTTON_TOP:
46 return kHarmonyLayoutUnit; 49 return kHarmonyLayoutUnit;
47 case Metric::RELATED_CONTROL_VERTICAL_SPACING: 50 case ChromeDistanceMetric::DIALOG_BUTTON_MINIMUM_WIDTH:
48 return kHarmonyLayoutUnit / 2; 51 case ChromeDistanceMetric::BUTTON_MINIMUM_WIDTH:
49 case Metric::RELATED_CONTROL_VERTICAL_SPACING_SMALL: 52 // Minimum label size plus padding.
50 return kHarmonyLayoutUnit / 2; 53 return 2 * kHarmonyLayoutUnit +
51 case Metric::RELATED_LABEL_HORIZONTAL_SPACING: 54 2 * GetDistanceMetric(
55 ChromeDistanceMetric::BUTTON_HORIZONTAL_PADDING);
56 case ChromeDistanceMetric::BUTTON_HORIZONTAL_PADDING:
52 return kHarmonyLayoutUnit; 57 return kHarmonyLayoutUnit;
53 case Metric::SUBSECTION_HORIZONTAL_INDENT: 58 case ChromeDistanceMetric::BUTTON_MAX_LINKABLE_WIDTH:
59 return kHarmonyLayoutUnit * 8;
60 case ChromeDistanceMetric::RELATED_LABEL_HORIZONTAL:
61 return kHarmonyLayoutUnit;
62 case ChromeDistanceMetric::SUBSECTION_HORIZONTAL_INDENT:
54 return 0; 63 return 0;
55 case Metric::UNRELATED_CONTROL_HORIZONTAL_SPACING: 64 case ChromeDistanceMetric::PANEL_CONTENT_MARGIN:
56 return kHarmonyLayoutUnit; 65 return kHarmonyLayoutUnit;
57 case Metric::UNRELATED_CONTROL_HORIZONTAL_SPACING_LARGE: 66 case ChromeDistanceMetric::UNRELATED_CONTROL_HORIZONTAL:
58 return kHarmonyLayoutUnit; 67 return kHarmonyLayoutUnit;
59 case Metric::UNRELATED_CONTROL_VERTICAL_SPACING: 68 case ChromeDistanceMetric::UNRELATED_CONTROL_HORIZONTAL_LARGE:
60 return kHarmonyLayoutUnit; 69 return kHarmonyLayoutUnit;
61 case Metric::UNRELATED_CONTROL_VERTICAL_SPACING_LARGE: 70 case ChromeDistanceMetric::UNRELATED_CONTROL_VERTICAL:
62 return kHarmonyLayoutUnit; 71 return kHarmonyLayoutUnit;
63 case Metric::VECTOR_IMAGE_BUTTON_PADDING: 72 case ChromeDistanceMetric::UNRELATED_CONTROL_VERTICAL_LARGE:
64 return 4; 73 return kHarmonyLayoutUnit;
65 } 74 }
66 NOTREACHED(); 75 NOTREACHED();
67 return 0; 76 return 0;
68 } 77 }
69
70 views::GridLayout::Alignment 78 views::GridLayout::Alignment
71 HarmonyLayoutDelegate::GetControlLabelGridAlignment() const { 79 HarmonyLayoutDelegate::GetControlLabelGridAlignment() const {
72 return views::GridLayout::LEADING; 80 return views::GridLayout::LEADING;
73 } 81 }
74 82
75 bool HarmonyLayoutDelegate::UseExtraDialogPadding() const { 83 bool HarmonyLayoutDelegate::UseExtraDialogPadding() const {
76 return false; 84 return false;
77 } 85 }
78 86
79 bool HarmonyLayoutDelegate::ShouldShowWindowIcon() const { 87 bool HarmonyLayoutDelegate::ShouldShowWindowIcon() const {
80 return false; 88 return false;
81 } 89 }
82 90
83 bool HarmonyLayoutDelegate::IsHarmonyMode() const { 91 bool HarmonyLayoutDelegate::IsHarmonyMode() const {
84 return true; 92 return true;
85 } 93 }
86 94
87 int HarmonyLayoutDelegate::GetDialogPreferredWidth(DialogWidth width) const { 95 int HarmonyLayoutDelegate::GetDialogPreferredWidth(DialogWidth width) const {
88 switch (width) { 96 switch (width) {
89 case DialogWidth::SMALL: 97 case DialogWidth::SMALL:
90 return 320; 98 return 320;
91 case DialogWidth::MEDIUM: 99 case DialogWidth::MEDIUM:
92 return 448; 100 return 448;
93 case DialogWidth::LARGE: 101 case DialogWidth::LARGE:
94 return 512; 102 return 512;
95 } 103 }
96 NOTREACHED(); 104 NOTREACHED();
97 return 0; 105 return 0;
98 } 106 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698