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

Unified Diff: chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc

Issue 2641003002: Show scheme in black and content in gray for data: protocol urls (Closed)
Patch Set: Update iOS Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc
index 99e1c1c9e30facdc57f328f9d7fb18cf20a9f772..bfd6d126d85462b6480702b03b2baac4a064bdbb 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc
@@ -10,6 +10,7 @@
#include "base/macros.h"
#include "build/build_config.h"
+#include "chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.h"
#include "chrome/browser/command_updater.h"
#include "chrome/browser/ui/omnibox/chrome_omnibox_edit_controller.h"
#include "chrome/test/base/testing_profile.h"
@@ -32,10 +33,14 @@ class TestingOmniboxViewViews : public OmniboxViewViews {
TestingOmniboxViewViews(OmniboxEditController* controller,
Profile* profile,
CommandUpdater* command_updater)
- : OmniboxViewViews(controller, profile, command_updater, false, NULL,
+ : OmniboxViewViews(controller,
+ profile,
+ command_updater,
+ false,
+ NULL,
Peter Kasting 2017/03/01 02:39:11 Nit: While here: nullptr
elawrence 2017/03/01 21:49:01 Done.
gfx::FontList()),
- update_popup_call_count_(0) {
- }
+ update_popup_call_count_(0),
+ profile_(profile) {}
void CheckUpdatePopupCallInfo(size_t call_count, const base::string16& text,
const gfx::Range& selection_range) {
@@ -44,6 +49,30 @@ class TestingOmniboxViewViews : public OmniboxViewViews {
EXPECT_EQ(selection_range, update_popup_selection_range_);
}
+ void EmphasizeURLComponents() override {
+ ApplyEmphasis(text(), ChromeAutocompleteSchemeClassifier(profile_));
+ }
+
+ void SetEmphasis(bool emphasize, gfx::Range range) override {
+ if (range == gfx::Range::InvalidRange()) {
+ base_text_is_emphasized_ = emphasize;
+ return;
+ }
+
+ EXPECT_TRUE(emphasize);
+ emphasis_range_ = range;
+ }
+
+ void UpdateSchemeEmphasis(gfx::Range range) override {
+ scheme_range_ = range;
+ }
+
+ gfx::Range GetSchemeRange() { return scheme_range_; }
Peter Kasting 2017/03/01 02:39:11 Nit: Next three can be const. I suggest naming th
elawrence 2017/03/01 21:49:01 Done.
+
+ gfx::Range GetEmphasisRange() { return emphasis_range_; }
+
+ bool IsBaseTextEmphasized() { return base_text_is_emphasized_; }
+
private:
// OmniboxView:
void UpdatePopup() override {
@@ -55,6 +84,16 @@ class TestingOmniboxViewViews : public OmniboxViewViews {
size_t update_popup_call_count_;
base::string16 update_popup_text_;
gfx::Range update_popup_selection_range_;
+ Profile* profile_;
+
+ // Range of the last scheme logged by |UpdateSchemeEmphasis()|.
+ gfx::Range scheme_range_;
+
+ // Range of the last text emphasized by |SetEmphasis()|.
+ gfx::Range emphasis_range_;
+
+ // |SetEmphasis()| logs whether the base color of the text is emphasized.
+ bool base_text_is_emphasized_;
DISALLOW_COPY_AND_ASSIGN(TestingOmniboxViewViews);
};
@@ -163,3 +202,81 @@ TEST_F(OmniboxViewViewsTest, ScheduledTextEditCommand) {
EXPECT_EQ(ui::TextEditCommand::INVALID_COMMAND,
scheduled_text_edit_command());
}
+
+// Ensure only scheme is emphasized for data: URLs.
+TEST_F(OmniboxViewViewsTest, TestEmphasisForDATA) {
+ omnibox_textfield()->SetText(
+ base::ASCIIToUTF16("data:text/html,Hello%20World"));
+ omnibox_view()->EmphasizeURLComponents();
+ EXPECT_EQ(gfx::Range(0, 4), omnibox_view()->GetSchemeRange());
+ EXPECT_FALSE(omnibox_view()->IsBaseTextEmphasized());
+ EXPECT_EQ(gfx::Range(0, 4), omnibox_view()->GetEmphasisRange());
+}
+
+// Ensure only origin is emphasized for http: URLs.
+TEST_F(OmniboxViewViewsTest, TestEmphasisForHTTP) {
+ omnibox_textfield()->SetText(
+ base::ASCIIToUTF16("http://www.example.com/path/file.htm"));
+ omnibox_view()->EmphasizeURLComponents();
+ EXPECT_EQ(gfx::Range(0, 4), omnibox_view()->GetSchemeRange());
+ EXPECT_FALSE(omnibox_view()->IsBaseTextEmphasized());
+ EXPECT_EQ(gfx::Range(7, 22), omnibox_view()->GetEmphasisRange());
+}
+
+// Ensure only origin is emphasized for https: URLs.
+TEST_F(OmniboxViewViewsTest, TestEmphasisForHTTPS) {
+ omnibox_textfield()->SetText(
+ base::ASCIIToUTF16("https://www.example.com/path/file.htm"));
+ omnibox_view()->EmphasizeURLComponents();
+ EXPECT_EQ(gfx::Range(0, 5), omnibox_view()->GetSchemeRange());
+ EXPECT_FALSE(omnibox_view()->IsBaseTextEmphasized());
+ EXPECT_EQ(gfx::Range(8, 23), omnibox_view()->GetEmphasisRange());
+}
+
+// Ensure that nothing is emphasized for chrome-extension: URLs.
+TEST_F(OmniboxViewViewsTest, TestEmphasisForChromeExtensionScheme) {
+ omnibox_textfield()->SetText(base::ASCIIToUTF16(
+ "chrome-extension://ldfbacdbackkjhclmhnjabngnppnkagl"));
+ omnibox_view()->EmphasizeURLComponents();
+ EXPECT_EQ(gfx::Range(0, 16), omnibox_view()->GetSchemeRange());
+ EXPECT_FALSE(omnibox_view()->IsBaseTextEmphasized());
+ EXPECT_EQ(gfx::Range(), omnibox_view()->GetEmphasisRange());
+}
+
+// Ensure that everything is emphasized for unknown scheme heirarchical URLs.
Peter Kasting 2017/03/01 02:39:11 Nit: hierarchical
elawrence 2017/03/01 21:49:01 Done.
+TEST_F(OmniboxViewViewsTest, TestEmphasisForUnknownHierarchicalScheme) {
+ omnibox_textfield()->SetText(
+ base::ASCIIToUTF16("nosuchscheme://opaque/string"));
+ omnibox_view()->EmphasizeURLComponents();
+ EXPECT_EQ(gfx::Range(0, 12), omnibox_view()->GetSchemeRange());
+ EXPECT_TRUE(omnibox_view()->IsBaseTextEmphasized());
+ EXPECT_EQ(gfx::Range(), omnibox_view()->GetEmphasisRange());
+}
+
+// Ensure that everything is emphasized for unknown scheme URLs.
+TEST_F(OmniboxViewViewsTest, TestEmphasisForUnknownScheme) {
+ omnibox_textfield()->SetText(base::ASCIIToUTF16("nosuchscheme:opaquestring"));
+ omnibox_view()->EmphasizeURLComponents();
+ EXPECT_EQ(gfx::Range(0, 12), omnibox_view()->GetSchemeRange());
+ EXPECT_TRUE(omnibox_view()->IsBaseTextEmphasized());
+ EXPECT_EQ(gfx::Range(), omnibox_view()->GetEmphasisRange());
+}
+
+// Ensure that Origin is emphasized for URL-like text.
Peter Kasting 2017/03/01 02:39:10 Nit: Origin -> the origin
elawrence 2017/03/01 21:49:01 Done.
+TEST_F(OmniboxViewViewsTest, TestEmphasisForPartialURLs) {
+ omnibox_textfield()->SetText(base::ASCIIToUTF16("example/path/file"));
+ omnibox_view()->EmphasizeURLComponents();
+ EXPECT_EQ(gfx::Range::InvalidRange(), omnibox_view()->GetSchemeRange());
+ EXPECT_FALSE(omnibox_view()->IsBaseTextEmphasized());
+ EXPECT_EQ(gfx::Range(0, 7), omnibox_view()->GetEmphasisRange());
+}
+
+// Non-URL text gets treated as a URL where the entire string is interpreted
+// as a hostname.
Peter Kasting 2017/03/01 02:39:10 That doesn't sound right. CurrentTextIsURL() ough
elawrence 2017/03/01 21:49:01 The problem is that OmniboxEditModel::CurrentTextI
Peter Kasting 2017/03/01 23:18:47 That's because you're calling SetText() in all of
elawrence 2017/03/01 23:50:53 Yes, SetUserText() code path that leads to the des
elawrence 2017/03/02 19:08:01 Exposing CurrentTextIsURL as a virtual function on
+TEST_F(OmniboxViewViewsTest, TestEmphasisForNonURLs) {
+ omnibox_textfield()->SetText(base::ASCIIToUTF16("This is plain text"));
+ omnibox_view()->EmphasizeURLComponents();
+ EXPECT_EQ(gfx::Range::InvalidRange(), omnibox_view()->GetSchemeRange());
+ EXPECT_FALSE(omnibox_view()->IsBaseTextEmphasized());
+ EXPECT_EQ(gfx::Range(0, 18), omnibox_view()->GetEmphasisRange());
+}

Powered by Google App Engine
This is Rietveld 408576698