Commit eb800e13 authored by Patti's avatar Patti Committed by Commit Bot

Omnibox: Move AutocompleteMatch vector icon creation out of components/omnibox/.

Omnibox autocomplete results show an icon next to the result listing. Often this
is the favicon of the website or extension that was found, but sometimes this
can also include default search engine searches, bookmarked results, or pages
without a favicon. These latter autocomplete matches show VectorIcons instead of
favicons, however, their size is hard-coded in OmniboxPopupView. Move the vector
icon creation outside of components/omnibox/ so clients can control the vector
icon size.

Bug: 801583
Cq-Include-Trybots: master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs
Change-Id: If80bbb64bc4021f0bdc8bc33744b3e0a157acc7b
Reviewed-on: https://chromium-review.googlesource.com/928054
Commit-Queue: Patti <patricialor@chromium.org>
Reviewed-by: default avatarJustin Donnelly <jdonnelly@chromium.org>
Reviewed-by: default avatarRobert Sesek <rsesek@chromium.org>
Reviewed-by: default avatarTrent Apted <tapted@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547617}
parent 88af3486
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include "chrome/browser/search/search.h" #include "chrome/browser/search/search.h"
#include "chrome/browser/search_engines/template_url_service_factory.h" #include "chrome/browser/search_engines/template_url_service_factory.h"
#include "chrome/browser/sessions/session_tab_helper.h" #include "chrome/browser/sessions/session_tab_helper.h"
#include "chrome/browser/ui/layout_constants.h"
#include "chrome/browser/ui/omnibox/chrome_omnibox_edit_controller.h" #include "chrome/browser/ui/omnibox/chrome_omnibox_edit_controller.h"
#include "chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.h" #include "chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.h"
#include "chrome/browser/ui/search/search_tab_helper.h" #include "chrome/browser/ui/search/search_tab_helper.h"
...@@ -57,6 +58,8 @@ ...@@ -57,6 +58,8 @@
#include "net/traffic_annotation/network_traffic_annotation.h" #include "net/traffic_annotation/network_traffic_annotation.h"
#include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkBitmap.h"
#include "ui/base/window_open_disposition.h" #include "ui/base/window_open_disposition.h"
#include "ui/gfx/paint_vector_icon.h"
#include "ui/gfx/vector_icon_types.h"
#include "url/gurl.h" #include "url/gurl.h"
#if BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP) #if BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
...@@ -213,6 +216,14 @@ gfx::Image ChromeOmniboxClient::GetIconIfExtensionMatch( ...@@ -213,6 +216,14 @@ gfx::Image ChromeOmniboxClient::GetIconIfExtensionMatch(
return gfx::Image(); return gfx::Image();
} }
gfx::Image ChromeOmniboxClient::GetSizedIcon(
const gfx::VectorIcon& vector_icon_type,
SkColor vector_icon_color) const {
return gfx::Image(gfx::CreateVectorIcon(
vector_icon_type, GetLayoutConstant(LOCATION_BAR_ICON_SIZE),
vector_icon_color));
}
bool ChromeOmniboxClient::ProcessExtensionKeyword( bool ChromeOmniboxClient::ProcessExtensionKeyword(
const TemplateURL* template_url, const TemplateURL* template_url,
const AutocompleteMatch& match, const AutocompleteMatch& match,
......
...@@ -47,6 +47,8 @@ class ChromeOmniboxClient : public OmniboxClient { ...@@ -47,6 +47,8 @@ class ChromeOmniboxClient : public OmniboxClient {
AutocompleteClassifier* GetAutocompleteClassifier() override; AutocompleteClassifier* GetAutocompleteClassifier() override;
gfx::Image GetIconIfExtensionMatch( gfx::Image GetIconIfExtensionMatch(
const AutocompleteMatch& match) const override; const AutocompleteMatch& match) const override;
gfx::Image GetSizedIcon(const gfx::VectorIcon& vector_icon_type,
SkColor vector_icon_color) const override;
bool ProcessExtensionKeyword(const TemplateURL* template_url, bool ProcessExtensionKeyword(const TemplateURL* template_url,
const AutocompleteMatch& match, const AutocompleteMatch& match,
WindowOpenDisposition disposition, WindowOpenDisposition disposition,
......
...@@ -74,6 +74,11 @@ gfx::Image OmniboxClient::GetIconIfExtensionMatch( ...@@ -74,6 +74,11 @@ gfx::Image OmniboxClient::GetIconIfExtensionMatch(
return gfx::Image(); return gfx::Image();
} }
gfx::Image OmniboxClient::GetSizedIcon(const gfx::VectorIcon& vector_icon_type,
SkColor vector_icon_color) const {
return gfx::Image();
}
bool OmniboxClient::ProcessExtensionKeyword( bool OmniboxClient::ProcessExtensionKeyword(
const TemplateURL* template_url, const TemplateURL* template_url,
const AutocompleteMatch& match, const AutocompleteMatch& match,
...@@ -86,4 +91,4 @@ gfx::Image OmniboxClient::GetFaviconForPageUrl( ...@@ -86,4 +91,4 @@ gfx::Image OmniboxClient::GetFaviconForPageUrl(
const GURL& page_url, const GURL& page_url,
FaviconFetchedCallback on_favicon_fetched) { FaviconFetchedCallback on_favicon_fetched) {
return gfx::Image(); return gfx::Image();
} }
\ No newline at end of file
...@@ -95,6 +95,10 @@ class OmniboxClient { ...@@ -95,6 +95,10 @@ class OmniboxClient {
virtual gfx::Image GetIconIfExtensionMatch( virtual gfx::Image GetIconIfExtensionMatch(
const AutocompleteMatch& match) const; const AutocompleteMatch& match) const;
// Returns the given |vector_icon_type| with the correct size.
virtual gfx::Image GetSizedIcon(const gfx::VectorIcon& vector_icon_type,
SkColor vector_icon_color) const;
// Checks whether |template_url| is an extension keyword; if so, asks the // Checks whether |template_url| is an extension keyword; if so, asks the
// ExtensionOmniboxEventRouter to process |match| for it and returns true. // ExtensionOmniboxEventRouter to process |match| for it and returns true.
// Otherwise returns false. |observer| is the OmniboxNavigationObserver // Otherwise returns false. |observer| is the OmniboxNavigationObserver
......
...@@ -290,8 +290,8 @@ gfx::Image OmniboxPopupModel::GetMatchIcon(const AutocompleteMatch& match, ...@@ -290,8 +290,8 @@ gfx::Image OmniboxPopupModel::GetMatchIcon(const AutocompleteMatch& match,
const auto& vector_icon_type = const auto& vector_icon_type =
AutocompleteMatch::TypeToVectorIcon(match.type, IsStarredMatch(match)); AutocompleteMatch::TypeToVectorIcon(match.type, IsStarredMatch(match));
return gfx::Image( return edit_model_->client()->GetSizedIcon(vector_icon_type,
gfx::CreateVectorIcon(vector_icon_type, 16, vector_icon_color)); vector_icon_color);
} }
#endif // !defined(OS_ANDROID) && !defined(OS_IOS) #endif // !defined(OS_ANDROID) && !defined(OS_IOS)
......
...@@ -16,6 +16,9 @@ ...@@ -16,6 +16,9 @@
#include "components/search_engines/template_url_service_client.h" #include "components/search_engines/template_url_service_client.h"
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/image/image_skia.h"
TestOmniboxClient::TestOmniboxClient() TestOmniboxClient::TestOmniboxClient()
: autocomplete_classifier_( : autocomplete_classifier_(
...@@ -69,3 +72,11 @@ const AutocompleteSchemeClassifier& TestOmniboxClient::GetSchemeClassifier() ...@@ -69,3 +72,11 @@ const AutocompleteSchemeClassifier& TestOmniboxClient::GetSchemeClassifier()
AutocompleteClassifier* TestOmniboxClient::GetAutocompleteClassifier() { AutocompleteClassifier* TestOmniboxClient::GetAutocompleteClassifier() {
return &autocomplete_classifier_; return &autocomplete_classifier_;
} }
gfx::Image TestOmniboxClient::GetSizedIcon(
const gfx::VectorIcon& vector_icon_type,
SkColor vector_icon_color) const {
SkBitmap bitmap;
bitmap.allocN32Pixels(16, 16);
return gfx::Image(gfx::ImageSkia::CreateFrom1xBitmap(bitmap));
}
...@@ -37,6 +37,8 @@ class TestOmniboxClient : public OmniboxClient { ...@@ -37,6 +37,8 @@ class TestOmniboxClient : public OmniboxClient {
const SessionID& GetSessionID() const override; const SessionID& GetSessionID() const override;
const AutocompleteSchemeClassifier& GetSchemeClassifier() const override; const AutocompleteSchemeClassifier& GetSchemeClassifier() const override;
AutocompleteClassifier* GetAutocompleteClassifier() override; AutocompleteClassifier* GetAutocompleteClassifier() override;
gfx::Image GetSizedIcon(const gfx::VectorIcon& vector_icon_type,
SkColor vector_icon_color) const override;
private: private:
AutocompleteMatch alternate_nav_match_; AutocompleteMatch alternate_nav_match_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment