| Index: chrome/browser/ui/views/harmony/layout_delegate.cc
|
| diff --git a/chrome/browser/ui/views/harmony/layout_delegate.cc b/chrome/browser/ui/views/harmony/layout_delegate.cc
|
| index 79d88b025d46793b2f222bb49774826f079f2359..059df53e913d0af1ebd9690ee61ee26e0664c2c7 100644
|
| --- a/chrome/browser/ui/views/harmony/layout_delegate.cc
|
| +++ b/chrome/browser/ui/views/harmony/layout_delegate.cc
|
| @@ -8,14 +8,84 @@
|
| #include "base/logging.h"
|
| #include "chrome/browser/ui/views/chrome_views_delegate.h"
|
| #include "chrome/browser/ui/views/harmony/harmony_layout_delegate.h"
|
| +#include "ui/base/default_style.h"
|
| #include "ui/base/material_design/material_design_controller.h"
|
| +#include "ui/base/resource/resource_bundle.h"
|
| #include "ui/views/layout/layout_constants.h"
|
| +#include "ui/views/style/typography_provider.h"
|
|
|
| -static base::LazyInstance<LayoutDelegate>::DestructorAtExit layout_delegate_ =
|
| +namespace {
|
| +
|
| +// TypographyProvider that provides pre-Harmony fonts in Chrome.
|
| +class LegacyTypographyProvider : public views::DefaultTypographyProvider {
|
| + public:
|
| + LegacyTypographyProvider() = default;
|
| +
|
| + const gfx::FontList& GetFont(views::TextContext context,
|
| + views::TextStyle style) const override;
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(LegacyTypographyProvider);
|
| +};
|
| +
|
| +const gfx::FontList& LegacyTypographyProvider::GetFont(
|
| + views::TextContext context,
|
| + views::TextStyle style) const {
|
| + constexpr int kHeadlineDelta = 8;
|
| + constexpr int kDialogMessageDelta = 1;
|
| +
|
| + int size_delta;
|
| + gfx::Font::Weight font_weight;
|
| + GetDefaultFont(context, style, &size_delta, &font_weight);
|
| +
|
| + switch (context.value()) {
|
| + case ChromeTextContext::HEADLINE:
|
| + size_delta = kHeadlineDelta;
|
| + break;
|
| + case ChromeTextContext::DIALOG_MESSAGE:
|
| + // Note: Not using ui::kMessageFontSizeDelta, so 13pt in most cases.
|
| + size_delta = kDialogMessageDelta;
|
| + break;
|
| + case ChromeTextContext::DIALOG_TEXT_SMALL:
|
| + size_delta = ui::kLabelFontSizeDelta;
|
| + break;
|
| + case ChromeTextContext::DEPRECATED_SMALL:
|
| + size_delta = ui::ResourceBundle::kSmallFontDelta;
|
| + break;
|
| + }
|
| +
|
| + switch (style.value()) {
|
| + case ChromeTextStyle::WEB_DOMAIN:
|
| + case ChromeTextStyle::EXTENSION_NAME:
|
| + font_weight = gfx::Font::Weight::BOLD;
|
| + break;
|
| + }
|
| + constexpr gfx::Font::FontStyle kFontStyle = gfx::Font::NORMAL;
|
| + return ui::ResourceBundle::GetSharedInstance().GetFontListWithDelta(
|
| + size_delta, kFontStyle, font_weight);
|
| +}
|
| +
|
| +base::LazyInstance<LayoutDelegate>::DestructorAtExit layout_delegate_ =
|
| LAZY_INSTANCE_INITIALIZER;
|
|
|
| +} // namespace
|
| +
|
| +constexpr const views::TextContext::Value ChromeTextContext::HEADLINE;
|
| +constexpr const views::TextContext::Value ChromeTextContext::DIALOG_TEXT_SMALL;
|
| +constexpr const views::TextContext::Value ChromeTextContext::DEPRECATED_SMALL;
|
| +constexpr const views::TextStyle::Value ChromeTextStyle::SECONDARY;
|
| +constexpr const views::TextStyle::Value ChromeTextStyle::HINT;
|
| +constexpr const views::TextStyle::Value ChromeTextStyle::RED;
|
| +constexpr const views::TextStyle::Value ChromeTextStyle::GREEN;
|
| +constexpr const views::TextStyle::Value ChromeTextStyle::WEB_DOMAIN;
|
| +constexpr const views::TextStyle::Value ChromeTextStyle::EXTENSION_NAME;
|
| +
|
| // static
|
| LayoutDelegate* LayoutDelegate::Get() {
|
| + // TODO(tapted): Move this to the LayoutDelegate constructor when
|
| + // HarmonyLayoutDelegate sets provides its own TypographyProvider.
|
| + views::TypographyProvider::Set(base::WrapUnique<views::TypographyProvider>(
|
| + new LegacyTypographyProvider));
|
| return ui::MaterialDesignController::IsSecondaryUiMaterial()
|
| ? HarmonyLayoutDelegate::Get()
|
| : layout_delegate_.Pointer();
|
|
|