Closed Bug 1280441 Opened 8 years ago Closed 8 years ago

Avoid search suggestions when they could worry the user about his privacy

Categories

(Firefox :: Address Bar, defect, P1)

defect

Tracking

()

RESOLVED FIXED
Firefox 55
Tracking Status
firefox55 --- fixed

People

(Reporter: mak, Assigned: standard8)

References

Details

(Whiteboard: [fxsearch])

Attachments

(3 files)

The current algorithm avoids search suggestions if: 1. the string is shorter than 2 chars 2. the first "token" is a whitelisted domain (like localhost) 3. if the string includes any of "/", "@", ":", "." 4. we are in a private window There are other cases we would like to handle, for example if the user typed a commonly used scheme like http, https, ftp. Any ideas for further cases we should handle are welcome.
as a side note, the "string" in 3. is actually the typed string minus "http://www.", since that's what the awesomebar usually looks for, and that is likely part of the problem here.
Priority: P2 → P1
Blocks: 1344928
Assignee: nobody → standard8
Status: NEW → ASSIGNED
Marco/Florian, do you have any more ideas on top of those in comment 0?
Flags: needinfo?(mak77)
Flags: needinfo?(florian)
No further ideas from me. What I meant in comment 1 is that the original code we added to avoid entries that may scare the user, is examining a filtered search string, that doesn't include http and similar prefixes (_searchString), while it should probably examine _trimmedOriginalSearchString. The reason I didn't originally do that, is that _trimmedOriginalSearchString may contain restriction chars, and if a restriction char overlaps with one of the chars that make the string look like a url (for example @ can be both part of a url or the restriction char for match.url) we may do the wrong thing. In practice the only restriction char that matters here is the one for searches (currently "$", even if I'd like to change it to "?"), since for any other restriction the suggestions would not be provided at all, so the problem is minor than I thought. http://searchfox.org/mozilla-central/rev/ae8c2e2354db652950fe0ec16983360c21857f2a/toolkit/components/places/UnifiedComplete.js#1270 Basically it's likely this bug would be partially fixed by testing the original typed string, rather than the stripped one, since then typing "http://test" would end up examinining *that* string, not "test". That's clearly not enough, considered we also want to exclude common schemes typed at the beginning of the string, but it would be a good start.
Flags: needinfo?(mak77)
(In reply to Mark Banner (:standard8) from comment #2) > Marco/Florian, do you have any more ideas on top of those in comment 0? No additional idea; from my point of view http/https are the most important ones.
Flags: needinfo?(florian)
I've put something together based on matching the start of the url. I added lots of tests to make sure that we were covering everything, and we could see the before/after effects. Please test it out and see if it works as expected.
Comment on attachment 8866359 [details] Bug 1280441 - Improve some of the test documentation for unified complete. https://reviewboard.mozilla.org/r/138000/#review141540 ::: toolkit/components/places/tests/unifiedcomplete/head_autocomplete.js:116 (Diff revision 1) > + * @param {Object} match The expected match for the result. > + * @param {nsIURI} match.uri The expected uri. > + * @param {String} match.title The title of the entry. > + * @param {String} match.tags The tags for the entry. > + * @param {String} match.style The style of the entry. > + * @param {Object} result The result to compare the result against with the same See the comment for check_autocomplete. ::: toolkit/components/places/tests/unifiedcomplete/head_autocomplete.js:152 (Diff revision 1) > } > > +/** > + * Helper function to test an autocomplete entry and check the resultant matches. > + * > + * @param {Object} test The details of the test to run, wih the following items: s/items/properties/? ::: toolkit/components/places/tests/unifiedcomplete/head_autocomplete.js:153 (Diff revision 1) > > +/** > + * Helper function to test an autocomplete entry and check the resultant matches. > + * > + * @param {Object} test The details of the test to run, wih the following items: > + * @param {String} test.search The string to enter for autocompleting. Not a great fan of this notation, since it looks like this takes multiple params. I'd prefer something like: @param {Object} test An object representing the test to run, in the following form: { search: {String} The string to.... param: {String} ... ... }
Attachment #8866359 - Flags: review?(mak77) → review-
Comment on attachment 8866361 [details] Bug 1280441 - Avoid suggesting searches from the URL bar when they look like urls (http, https, ftp) or the start of urls. https://reviewboard.mozilla.org/r/138004/#review141542 ::: toolkit/components/places/UnifiedComplete.js:1322 (Diff revision 1) > + // like urls. > + if ((this._trimmedOriginalSearchString.length <= DISALLOWED_URL_PREFIXES_EXACT_MATCH_MAX_LENGTH && > + DISALLOWED_URL_PREFIXES_EXACT_MATCH.some(prefix => this._trimmedOriginalSearchString == prefix)) || > + DISALLOWED_URL_PREFIXES_START_MATCH.some(prefix => this._trimmedOriginalSearchString.startsWith(prefix))) { > + return true; > + } As per the brief IRC discussion, let's make this simpler, just exclude perfect matches for "http", "https", "ftp", and startsWith(same_as_before + ":") This will simplify the code and in the end it's what we care about. I don't think "ht", "htt" or "ft" cause any harm, they can be about totally different stuff than urls (as you suggested on IRC I may be willing to search for httpd).
Attachment #8866361 - Flags: review?(mak77) → review-
Comment on attachment 8866359 [details] Bug 1280441 - Improve some of the test documentation for unified complete. https://reviewboard.mozilla.org/r/138000/#review141660 ::: toolkit/components/places/tests/unifiedcomplete/head_autocomplete.js:112 (Diff revision 2) > -// A helper for check_autocomplete to check a specific match against data from > -// the controller. > +/** > + * A helper for check_autocomplete to check a specific match against data from > + * the controller. > + * > + * @param {Object} match The expected match for the result, in the following > + * form: nit: let this flow in the previous line, even if it goes slightly over 80 chars, we're not so strict :)
Attachment #8866359 - Flags: review?(mak77) → review+
Comment on attachment 8866360 [details] Bug 1280441 - Add tests for what happens when existing http/https/ftp prefixes are entered. https://reviewboard.mozilla.org/r/138002/#review141662
Attachment #8866360 - Flags: review?(mak77) → review+
Comment on attachment 8866361 [details] Bug 1280441 - Avoid suggesting searches from the URL bar when they look like urls (http, https, ftp) or the start of urls. https://reviewboard.mozilla.org/r/138004/#review141666 ::: toolkit/components/places/UnifiedComplete.js:106 (Diff revision 2) > const QUERYINDEX_TYPED = 7; > const QUERYINDEX_PLACEID = 8; > const QUERYINDEX_SWITCHTAB = 9; > const QUERYINDEX_FRECENCY = 10; > > +const DISALLOWED_URL_PREFIXES = [ this could probably be named better, but I have no fantasy! DISALLOWED_URLLIKE_PREFIXES would be (imo) a first trivial improvement. Also a comment above it explaining the expected behavior may help future archeology. ::: toolkit/components/places/tests/unifiedcomplete/test_search_suggestions.js (Diff revision 2) > - > - yield check_autocomplete({ > - search: "htt", > - searchParam: "enable-actions", > - matches: [ > - makeSearchMatch("htt", { engineName: ENGINE_NAME, heuristic: true }), why removing the "htt" test, it would be good to check we return suggestions for it.
Attachment #8866361 - Flags: review?(mak77) → review+
Pushed by mbanner@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/dca652d1fce1 Improve some of the test documentation for unified complete. r=mak https://hg.mozilla.org/integration/autoland/rev/27a97108e1a4 Add tests for what happens when existing http/https/ftp prefixes are entered. r=mak https://hg.mozilla.org/integration/autoland/rev/24bb92425086 Avoid suggesting searches from the URL bar when they look like urls (http, https, ftp) or the start of urls. r=mak
Blocks: 1620131
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: