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

Side by Side Diff: components/omnibox/browser/autocomplete_input_unittest.cc

Issue 1855423003: Interpret '?' and Ctrl-K or Ctrl-E as putting omnibox in keyword search mode for Default Search Pro… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add includes for mac tests Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "components/omnibox/browser/autocomplete_input.h" 5 #include "components/omnibox/browser/autocomplete_input.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/strings/string16.h" 10 #include "base/strings/string16.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "build/build_config.h" 12 #include "build/build_config.h"
13 #include "components/metrics/proto/omnibox_event.pb.h" 13 #include "components/metrics/proto/omnibox_event.pb.h"
14 #include "components/metrics/proto/omnibox_input_type.pb.h" 14 #include "components/metrics/proto/omnibox_input_type.pb.h"
15 #include "components/omnibox/browser/test_scheme_classifier.h" 15 #include "components/omnibox/browser/test_scheme_classifier.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 #include "url/third_party/mozilla/url_parse.h" 17 #include "url/third_party/mozilla/url_parse.h"
18 18
19 using base::ASCIIToUTF16; 19 using base::ASCIIToUTF16;
20 using metrics::OmniboxEventProto; 20 using metrics::OmniboxEventProto;
21 21
22 TEST(AutocompleteInputTest, InputType) { 22 TEST(AutocompleteInputTest, InputType) {
23 struct test_data { 23 struct test_data {
24 const base::string16 input; 24 const base::string16 input;
25 const metrics::OmniboxInputType::Type type; 25 const metrics::OmniboxInputType::Type type;
26 } input_cases[] = { 26 } input_cases[] = {
27 { base::string16(), metrics::OmniboxInputType::INVALID }, 27 { base::string16(), metrics::OmniboxInputType::INVALID },
28 { ASCIIToUTF16("?"), metrics::OmniboxInputType::FORCED_QUERY }, 28 { ASCIIToUTF16("?"), metrics::OmniboxInputType::QUERY },
29 { ASCIIToUTF16("?foo"), metrics::OmniboxInputType::FORCED_QUERY }, 29 { ASCIIToUTF16("?foo"), metrics::OmniboxInputType::QUERY },
30 { ASCIIToUTF16("?foo bar"), metrics::OmniboxInputType::FORCED_QUERY }, 30 { ASCIIToUTF16("?foo bar"), metrics::OmniboxInputType::QUERY },
31 { ASCIIToUTF16("?http://foo.com/bar"), 31 { ASCIIToUTF16("?http://foo.com/bar"),
32 metrics::OmniboxInputType::FORCED_QUERY }, 32 metrics::OmniboxInputType::QUERY },
33 { ASCIIToUTF16("foo"), metrics::OmniboxInputType::UNKNOWN }, 33 { ASCIIToUTF16("foo"), metrics::OmniboxInputType::UNKNOWN },
34 { ASCIIToUTF16("localhost"), metrics::OmniboxInputType::URL }, 34 { ASCIIToUTF16("localhost"), metrics::OmniboxInputType::URL },
35 { ASCIIToUTF16("foo._"), metrics::OmniboxInputType::QUERY }, 35 { ASCIIToUTF16("foo._"), metrics::OmniboxInputType::QUERY },
36 { ASCIIToUTF16("foo.c"), metrics::OmniboxInputType::UNKNOWN }, 36 { ASCIIToUTF16("foo.c"), metrics::OmniboxInputType::UNKNOWN },
37 { ASCIIToUTF16("foo.com"), metrics::OmniboxInputType::URL }, 37 { ASCIIToUTF16("foo.com"), metrics::OmniboxInputType::URL },
38 { ASCIIToUTF16("-foo.com"), metrics::OmniboxInputType::URL }, 38 { ASCIIToUTF16("-foo.com"), metrics::OmniboxInputType::URL },
39 { ASCIIToUTF16("foo-.com"), metrics::OmniboxInputType::URL }, 39 { ASCIIToUTF16("foo-.com"), metrics::OmniboxInputType::URL },
40 { ASCIIToUTF16("foo_.com"), metrics::OmniboxInputType::URL }, 40 { ASCIIToUTF16("foo_.com"), metrics::OmniboxInputType::URL },
41 { ASCIIToUTF16("foo.-com"), metrics::OmniboxInputType::QUERY }, 41 { ASCIIToUTF16("foo.-com"), metrics::OmniboxInputType::QUERY },
42 { ASCIIToUTF16("foo/"), metrics::OmniboxInputType::URL }, 42 { ASCIIToUTF16("foo/"), metrics::OmniboxInputType::URL },
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 TEST(AutocompleteInputTest, InputTypeWithCursorPosition) { 279 TEST(AutocompleteInputTest, InputTypeWithCursorPosition) {
280 struct test_data { 280 struct test_data {
281 const base::string16 input; 281 const base::string16 input;
282 size_t cursor_position; 282 size_t cursor_position;
283 const base::string16 normalized_input; 283 const base::string16 normalized_input;
284 size_t normalized_cursor_position; 284 size_t normalized_cursor_position;
285 } input_cases[] = { 285 } input_cases[] = {
286 { ASCIIToUTF16("foo bar"), base::string16::npos, 286 { ASCIIToUTF16("foo bar"), base::string16::npos,
287 ASCIIToUTF16("foo bar"), base::string16::npos }, 287 ASCIIToUTF16("foo bar"), base::string16::npos },
288 288
289 // regular case, no changes. 289 // Regular case, no changes.
290 { ASCIIToUTF16("foo bar"), 3, ASCIIToUTF16("foo bar"), 3 }, 290 { ASCIIToUTF16("foo bar"), 3, ASCIIToUTF16("foo bar"), 3 },
291 291
292 // extra leading space. 292 // Extra leading space.
293 { ASCIIToUTF16(" foo bar"), 3, ASCIIToUTF16("foo bar"), 1 }, 293 { ASCIIToUTF16(" foo bar"), 3, ASCIIToUTF16("foo bar"), 1 },
294 { ASCIIToUTF16(" foo bar"), 3, ASCIIToUTF16("foo bar"), 0 }, 294 { ASCIIToUTF16(" foo bar"), 3, ASCIIToUTF16("foo bar"), 0 },
295 { ASCIIToUTF16(" foo bar "), 2, ASCIIToUTF16("foo bar "), 0 }, 295 { ASCIIToUTF16(" foo bar "), 2, ASCIIToUTF16("foo bar "), 0 },
296 296
297 // forced query. 297 // A leading '?' used to be a magic character indicating the following
298 { ASCIIToUTF16("?foo bar"), 2, ASCIIToUTF16("foo bar"), 1 }, 298 // input should be treated as a "forced query", but now if such a string
299 { ASCIIToUTF16(" ?foo bar"), 4, ASCIIToUTF16("foo bar"), 1 }, 299 // reaches the AutocompleteInput parser the '?' should just be treated like
300 { ASCIIToUTF16("? foo bar"), 4, ASCIIToUTF16("foo bar"), 1 }, 300 // a normal character.
301 { ASCIIToUTF16(" ? foo bar"), 6, ASCIIToUTF16("foo bar"), 1 }, 301 { ASCIIToUTF16("?foo bar"), 2, ASCIIToUTF16("?foo bar"), 2 },
302 { ASCIIToUTF16(" ?foo bar"), 4, ASCIIToUTF16("?foo bar"), 2 },
303 { ASCIIToUTF16("? foo bar"), 4, ASCIIToUTF16("? foo bar"), 4 },
304 { ASCIIToUTF16(" ? foo bar"), 6, ASCIIToUTF16("? foo bar"), 4 },
302 }; 305 };
303 306
304 for (size_t i = 0; i < arraysize(input_cases); ++i) { 307 for (size_t i = 0; i < arraysize(input_cases); ++i) {
305 SCOPED_TRACE(input_cases[i].input); 308 SCOPED_TRACE(input_cases[i].input);
306 AutocompleteInput input(input_cases[i].input, 309 AutocompleteInput input(input_cases[i].input,
307 input_cases[i].cursor_position, std::string(), 310 input_cases[i].cursor_position, std::string(),
308 GURL(), OmniboxEventProto::INVALID_SPEC, true, 311 GURL(), OmniboxEventProto::INVALID_SPEC, true,
309 false, true, true, false, TestSchemeClassifier()); 312 false, true, true, false, TestSchemeClassifier());
310 EXPECT_EQ(input_cases[i].normalized_input, input.text()); 313 EXPECT_EQ(input_cases[i].normalized_input, input.text());
311 EXPECT_EQ(input_cases[i].normalized_cursor_position, 314 EXPECT_EQ(input_cases[i].normalized_cursor_position,
312 input.cursor_position()); 315 input.cursor_position());
313 } 316 }
314 } 317 }
OLDNEW
« no previous file with comments | « components/omnibox/browser/autocomplete_input.cc ('k') | components/omnibox/browser/autocomplete_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698