| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ | 5 #ifndef CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ | 
| 6 #define CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ | 6 #define CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ | 
| 7 | 7 | 
| 8 #include <vector> | 8 #include <vector> | 
| 9 | 9 | 
| 10 #include "base/gtest_prod_util.h" | 10 #include "base/gtest_prod_util.h" | 
| 11 #include "chrome/browser/bitmap_fetcher/bitmap_fetcher_service.h" | 11 #include "chrome/browser/bitmap_fetcher/bitmap_fetcher_service.h" | 
| 12 #include "components/omnibox/autocomplete_match.h" | 12 #include "components/omnibox/autocomplete_match.h" | 
|  | 13 #include "components/omnibox/suggestion_answer.h" | 
| 13 #include "third_party/skia/include/core/SkColor.h" | 14 #include "third_party/skia/include/core/SkColor.h" | 
| 14 #include "ui/gfx/animation/animation_delegate.h" | 15 #include "ui/gfx/animation/animation_delegate.h" | 
| 15 #include "ui/gfx/animation/slide_animation.h" | 16 #include "ui/gfx/animation/slide_animation.h" | 
| 16 #include "ui/gfx/font_list.h" | 17 #include "ui/gfx/font_list.h" | 
| 17 #include "ui/gfx/geometry/rect.h" | 18 #include "ui/gfx/geometry/rect.h" | 
| 18 #include "ui/views/controls/image_view.h" | 19 #include "ui/views/controls/image_view.h" | 
| 19 #include "ui/views/view.h" | 20 #include "ui/views/view.h" | 
| 20 | 21 | 
| 21 class LocationBarView; | 22 class LocationBarView; | 
| 22 class OmniboxPopupContentsView; | 23 class OmniboxPopupContentsView; | 
|  | 24 struct TextStyle; | 
| 23 | 25 | 
| 24 namespace gfx { | 26 namespace gfx { | 
| 25 class Canvas; | 27 class Canvas; | 
| 26 class RenderText; | 28 class RenderText; | 
| 27 } | 29 } | 
| 28 | 30 | 
| 29 class OmniboxResultView : public views::View, | 31 class OmniboxResultView : public views::View, | 
| 30                           private gfx::AnimationDelegate { | 32                           private gfx::AnimationDelegate { | 
| 31  public: | 33  public: | 
| 32   // Keep these ordered from least dominant (normal) to most dominant | 34   // Keep these ordered from least dominant (normal) to most dominant | 
| 33   // (selected). | 35   // (selected). | 
| 34   enum ResultViewState { | 36   enum ResultViewState { | 
| 35     NORMAL = 0, | 37     NORMAL = 0, | 
| 36     HOVERED, | 38     HOVERED, | 
| 37     SELECTED, | 39     SELECTED, | 
| 38     NUM_STATES | 40     NUM_STATES | 
| 39   }; | 41   }; | 
| 40 | 42 | 
| 41   enum ColorKind { | 43   enum ColorKind { | 
| 42     BACKGROUND = 0, | 44     BACKGROUND = 0, | 
| 43     TEXT, | 45     TEXT, | 
| 44     DIMMED_TEXT, | 46     DIMMED_TEXT, | 
| 45     URL, | 47     URL, | 
| 46     DIVIDER, | 48     DIVIDER, | 
| 47     NUM_KINDS | 49     NUM_KINDS | 
| 48   }; | 50   }; | 
| 49 | 51 | 
|  | 52   // The minimum distance between the top and bottom of the text and the | 
|  | 53   // top or bottom of the row. | 
|  | 54   static const int kMinimumTextVerticalPadding = 3; | 
|  | 55 | 
| 50   OmniboxResultView(OmniboxPopupContentsView* model, | 56   OmniboxResultView(OmniboxPopupContentsView* model, | 
| 51                     int model_index, | 57                     int model_index, | 
| 52                     LocationBarView* location_bar_view, | 58                     LocationBarView* location_bar_view, | 
| 53                     const gfx::FontList& font_list); | 59                     const gfx::FontList& font_list); | 
| 54   ~OmniboxResultView() override; | 60   ~OmniboxResultView() override; | 
| 55 | 61 | 
| 56   SkColor GetColor(ResultViewState state, ColorKind kind) const; | 62   SkColor GetColor(ResultViewState state, ColorKind kind) const; | 
| 57 | 63 | 
| 58   // Updates the match used to paint the contents of this result view. We copy | 64   // Updates the match used to paint the contents of this result view. We copy | 
| 59   // the match so that we can continue to paint the last result even after the | 65   // the match so that we can continue to paint the last result even after the | 
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 110   // |classifications| and |force_dim| are used to style the text. | 116   // |classifications| and |force_dim| are used to style the text. | 
| 111   scoped_ptr<gfx::RenderText> CreateClassifiedRenderText( | 117   scoped_ptr<gfx::RenderText> CreateClassifiedRenderText( | 
| 112       const base::string16& text, | 118       const base::string16& text, | 
| 113       const ACMatchClassifications& classifications, | 119       const ACMatchClassifications& classifications, | 
| 114       bool force_dim) const; | 120       bool force_dim) const; | 
| 115 | 121 | 
| 116   const gfx::Rect& text_bounds() const { return text_bounds_; } | 122   const gfx::Rect& text_bounds() const { return text_bounds_; } | 
| 117 | 123 | 
| 118   void set_edge_item_padding(int value) { edge_item_padding_ = value; } | 124   void set_edge_item_padding(int value) { edge_item_padding_ = value; } | 
| 119   void set_item_padding(int value) { item_padding_ = value; } | 125   void set_item_padding(int value) { item_padding_ = value; } | 
| 120   void set_minimum_text_vertical_padding(int value) { |  | 
| 121     minimum_text_vertical_padding_ = value; |  | 
| 122   } |  | 
| 123 | 126 | 
| 124  private: | 127  private: | 
| 125   // views::View: | 128   // views::View: | 
| 126   const char* GetClassName() const override; | 129   const char* GetClassName() const override; | 
| 127 | 130 | 
| 128   gfx::ImageSkia GetIcon() const; | 131   gfx::ImageSkia GetIcon() const; | 
| 129   const gfx::ImageSkia* GetKeywordIcon() const; | 132   const gfx::ImageSkia* GetKeywordIcon() const; | 
| 130 | 133 | 
| 131   // Whether to render only the keyword match.  Returns true if |match_| has an | 134   // Whether to render only the keyword match.  Returns true if |match_| has an | 
| 132   // associated keyword match that has been animated so close to the start that | 135   // associated keyword match that has been animated so close to the start that | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
| 148   // gfx::AnimationDelegate: | 151   // gfx::AnimationDelegate: | 
| 149   void AnimationProgressed(const gfx::Animation* animation) override; | 152   void AnimationProgressed(const gfx::Animation* animation) override; | 
| 150 | 153 | 
| 151   // Returns the offset at which the contents of the |match| should be displayed | 154   // Returns the offset at which the contents of the |match| should be displayed | 
| 152   // within the text bounds. The directionality of UI and match contents is used | 155   // within the text bounds. The directionality of UI and match contents is used | 
| 153   // to determine the offset relative to the correct edge. | 156   // to determine the offset relative to the correct edge. | 
| 154   int GetDisplayOffset(const AutocompleteMatch& match, | 157   int GetDisplayOffset(const AutocompleteMatch& match, | 
| 155                        bool is_ui_rtl, | 158                        bool is_ui_rtl, | 
| 156                        bool is_match_contents_rtl) const; | 159                        bool is_match_contents_rtl) const; | 
| 157 | 160 | 
|  | 161   int StyleAnswerText(gfx::RenderText* render_text, | 
|  | 162                       int offset, | 
|  | 163                       const SuggestionAnswer::TextField& text_field) const; | 
|  | 164 | 
|  | 165   int GetAnswerLineHeight() const; | 
|  | 166   int GetContentLineHeight() const; | 
|  | 167   SkColor GetStateColor(const TextStyle& text_style) const; | 
|  | 168   void AppendAnswerText(gfx::RenderText* render_text, | 
|  | 169                         const SuggestionAnswer::TextField& text_field); | 
|  | 170 | 
| 158   static int default_icon_size_; | 171   static int default_icon_size_; | 
| 159 | 172 | 
| 160   // Default values cached here, may be overridden using the setters above. | 173   // Default values cached here, may be overridden using the setters above. | 
| 161   int edge_item_padding_; | 174   int edge_item_padding_; | 
| 162   int item_padding_; | 175   int item_padding_; | 
| 163   int minimum_text_vertical_padding_; |  | 
| 164 | 176 | 
| 165   // This row's model and model index. | 177   // This row's model and model index. | 
| 166   OmniboxPopupContentsView* model_; | 178   OmniboxPopupContentsView* model_; | 
| 167   size_t model_index_; | 179   size_t model_index_; | 
| 168 | 180 | 
| 169   LocationBarView* location_bar_view_; | 181   LocationBarView* location_bar_view_; | 
| 170   // Note: image_service_ may be null in some unit tests. | 182   // Note: image_service_ may be null in some unit tests. | 
| 171   BitmapFetcherService* image_service_; | 183   BitmapFetcherService* image_service_; | 
| 172 | 184 | 
| 173   const gfx::FontList font_list_; | 185   const gfx::FontList font_list_; | 
| (...skipping 27 matching lines...) Expand all  Loading... | 
| 201   mutable scoped_ptr<gfx::RenderText> keyword_description_rendertext_; | 213   mutable scoped_ptr<gfx::RenderText> keyword_description_rendertext_; | 
| 202 | 214 | 
| 203   mutable int separator_width_; | 215   mutable int separator_width_; | 
| 204 | 216 | 
| 205   base::WeakPtrFactory<OmniboxResultView> weak_ptr_factory_; | 217   base::WeakPtrFactory<OmniboxResultView> weak_ptr_factory_; | 
| 206 | 218 | 
| 207   DISALLOW_COPY_AND_ASSIGN(OmniboxResultView); | 219   DISALLOW_COPY_AND_ASSIGN(OmniboxResultView); | 
| 208 }; | 220 }; | 
| 209 | 221 | 
| 210 #endif  // CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ | 222 #endif  // CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ | 
| OLD | NEW | 
|---|