Index: chrome/browser/ui/views/omnibox/omnibox_result_view.cc |
diff --git a/chrome/browser/ui/views/omnibox/omnibox_result_view.cc b/chrome/browser/ui/views/omnibox/omnibox_result_view.cc |
index ebfd9f677939d558934d15700722dc32b2c45a3d..3898666dcc4bea2d8e5321bfbdfca2da00de6bc4 100644 |
--- a/chrome/browser/ui/views/omnibox/omnibox_result_view.cc |
+++ b/chrome/browser/ui/views/omnibox/omnibox_result_view.cc |
@@ -41,6 +41,8 @@ |
#include "ui/native_theme/native_theme_aura.h" |
#endif |
+using ui::NativeTheme; |
+ |
namespace { |
// The minimum distance between the top and bottom of the {icon|text} and the |
@@ -125,42 +127,44 @@ OmniboxResultView::~OmniboxResultView() { |
SkColor OmniboxResultView::GetColor( |
ResultViewState state, |
ColorKind kind) const { |
- const ui::NativeTheme* theme = GetNativeTheme(); |
-#if defined(OS_WIN) |
- if (theme == ui::NativeThemeWin::instance()) { |
- static bool win_initialized = false; |
- static SkColor win_colors[NUM_STATES][NUM_KINDS]; |
- if (!win_initialized) { |
- win_colors[NORMAL][BACKGROUND] = color_utils::GetSysSkColor(COLOR_WINDOW); |
- win_colors[SELECTED][BACKGROUND] = |
- color_utils::GetSysSkColor(COLOR_HIGHLIGHT); |
- win_colors[NORMAL][TEXT] = color_utils::GetSysSkColor(COLOR_WINDOWTEXT); |
- win_colors[SELECTED][TEXT] = |
- color_utils::GetSysSkColor(COLOR_HIGHLIGHTTEXT); |
- CommonInitColors(theme, win_colors); |
- win_initialized = true; |
+ // A mapping from OmniboxResultView's ResultViewState/ColorKind types to |
+ // NativeTheme colors. |
+ struct TranslationTable { |
+ OmniboxResultView::ResultViewState state; |
+ OmniboxResultView::ColorKind kind; |
+ ui::NativeTheme::ColorId id; |
+ } static const kTranslationTable[] = { |
+ { NORMAL, BACKGROUND, NativeTheme::kColorId_ResultsTableNormalBackground }, |
msw
2014/04/03 18:53:53
nit: swapping the order of state and kind would ma
Elliot Glaysher
2014/04/03 20:25:27
Done.
msw
2014/04/03 20:30:25
You didn't actually do what I asked, but I guess t
|
+ { HOVERED, BACKGROUND, |
+ NativeTheme::kColorId_ResultsTableHoveredBackground }, |
+ { SELECTED, BACKGROUND, |
+ NativeTheme::kColorId_ResultsTableSelectedBackground }, |
+ { NORMAL, TEXT, NativeTheme::kColorId_ResultsTableNormalText }, |
+ { HOVERED, TEXT, NativeTheme::kColorId_ResultsTableHoveredText }, |
+ { SELECTED, TEXT, NativeTheme::kColorId_ResultsTableSelectedText }, |
+ { NORMAL, DIMMED_TEXT, |
+ NativeTheme::kColorId_ResultsTableNormalDimmedText }, |
+ { HOVERED, DIMMED_TEXT, |
+ NativeTheme::kColorId_ResultsTableHoveredDimmedText }, |
+ { SELECTED, DIMMED_TEXT, |
+ NativeTheme::kColorId_ResultsTableSelectedDimmedText }, |
+ { NORMAL, URL, NativeTheme::kColorId_ResultsTableNormalUrl }, |
+ { HOVERED, URL, NativeTheme::kColorId_ResultsTableHoveredUrl }, |
+ { SELECTED, URL, NativeTheme::kColorId_ResultsTableSelectedUrl }, |
+ { NORMAL, DIVIDER, NativeTheme::kColorId_ResultsTableNormalDivider }, |
+ { HOVERED, DIVIDER, NativeTheme::kColorId_ResultsTableHoveredDivider }, |
+ { SELECTED, DIVIDER, NativeTheme::kColorId_ResultsTableSelectedDivider }, |
+ }; |
+ |
+ for (size_t i = 0; i < arraysize(kTranslationTable); ++i) { |
+ if (kTranslationTable[i].state == state && |
+ kTranslationTable[i].kind == kind) { |
+ return GetNativeTheme()->GetSystemColor(kTranslationTable[i].id); |
} |
- return win_colors[state][kind]; |
- } |
-#endif |
- static bool initialized = false; |
- static SkColor colors[NUM_STATES][NUM_KINDS]; |
Elliot Glaysher
2014/04/03 18:14:58
It's wrong that the colors here are stored in a lo
|
- if (!initialized) { |
- colors[NORMAL][BACKGROUND] = theme->GetSystemColor( |
- ui::NativeTheme::kColorId_TextfieldDefaultBackground); |
- colors[NORMAL][TEXT] = theme->GetSystemColor( |
- ui::NativeTheme::kColorId_TextfieldDefaultColor); |
- colors[NORMAL][URL] = SkColorSetARGB(0xff, 0x00, 0x99, 0x33); |
- colors[SELECTED][BACKGROUND] = theme->GetSystemColor( |
- ui::NativeTheme::kColorId_TextfieldSelectionBackgroundFocused); |
- colors[SELECTED][TEXT] = theme->GetSystemColor( |
- ui::NativeTheme::kColorId_TextfieldSelectionColor); |
- colors[SELECTED][URL] = SkColorSetARGB(0xff, 0x00, 0x66, 0x22); |
- colors[HOVERED][URL] = SkColorSetARGB(0xff, 0x00, 0x66, 0x22); |
- CommonInitColors(theme, colors); |
- initialized = true; |
} |
- return colors[state][kind]; |
+ |
+ NOTREACHED(); |
+ return SK_ColorRED; |
} |
void OmniboxResultView::SetMatch(const AutocompleteMatch& match) { |
@@ -415,39 +419,6 @@ int OmniboxResultView::GetDisplayOffset( |
} |
// static |
-void OmniboxResultView::CommonInitColors(const ui::NativeTheme* theme, |
- SkColor colors[][NUM_KINDS]) { |
- colors[HOVERED][BACKGROUND] = |
- color_utils::AlphaBlend(colors[SELECTED][BACKGROUND], |
- colors[NORMAL][BACKGROUND], 64); |
- colors[HOVERED][TEXT] = colors[NORMAL][TEXT]; |
-#if defined(USE_AURA) |
- const bool is_aura = theme == ui::NativeThemeAura::instance(); |
-#else |
- const bool is_aura = false; |
-#endif |
- for (int i = 0; i < NUM_STATES; ++i) { |
- if (is_aura) { |
- colors[i][TEXT] = |
- color_utils::AlphaBlend(SK_ColorBLACK, colors[i][BACKGROUND], 0xdd); |
- colors[i][DIMMED_TEXT] = |
- color_utils::AlphaBlend(SK_ColorBLACK, colors[i][BACKGROUND], 0xbb); |
- } else { |
- colors[i][DIMMED_TEXT] = |
- color_utils::AlphaBlend(colors[i][TEXT], colors[i][BACKGROUND], 128); |
- colors[i][URL] = color_utils::GetReadableColor(SkColorSetRGB(0, 128, 0), |
- colors[i][BACKGROUND]); |
- } |
- |
- // TODO(joi): Programmatically draw the dropdown border using |
- // this color as well. (Right now it's drawn as black with 25% |
- // alpha.) |
- colors[i][DIVIDER] = |
- color_utils::AlphaBlend(colors[i][TEXT], colors[i][BACKGROUND], 0x34); |
- } |
-} |
- |
-// static |
int OmniboxResultView::default_icon_size_ = 0; |
gfx::ImageSkia OmniboxResultView::GetIcon() const { |