summaryrefslogtreecommitdiffstats
path: root/chrome/browser/autocomplete/autocomplete.h
Commit message (Collapse)AuthorAgeFilesLines
* Add new, shiny browser test for Autocomplete (Omnibox).phajdan.jr@chromium.org2009-09-231-0/+2
| | | | | | | | | | | | | To fix the Omnibox automation flakiness, I first want to be sure how the system behaves in its natural environment. The test is very basic for now. TEST=browser_tests BUG=19876 Review URL: http://codereview.chromium.org/193069 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@26924 0039d316-1c4b-4281-b951-d872f2087c98
* Unbreak the world. Turns out SetProfile(NULL) causes a DCHECK failure.pkasting@chromium.org2009-09-011-0/+2
| | | | | | | | | TBR=sky BUG=none TEST=none Review URL: http://codereview.chromium.org/177055 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25053 0039d316-1c4b-4281-b951-d872f2087c98
* More work fixing miscellaneous issues in the autocomplete code, probably ↵pkasting@chromium.org2009-09-011-4/+4
| | | | | | | | | | | | | | | | | none of which will help my crasher :( * Force the query to stop if the user deletes a match. This makes more sense from a UI perspective and allows some code to be simpler. * Prevent us from potentially doing a "minimal changes" match in a different profile (hard to trigger, likely no practical effects) * Remove unneeded Reset() call on a repeating timer (which will auto-reset itself) * Rename one of the notifications and move its listener to the edit, since that's who really cares about it anyway. * Make the controller's Stop(true) notify the popup via the normal observer pipeline rather than coding something special into the popup's StopAutocomplete(). * Rename |paste_and_go_controller| |synchronous_controller| and use it instead of using the main popup controller to do the synchronous query when calling URLsForDefaultMatch(). This makes things both simpler and safer. BUG=none TEST=Using the omnibox still works fine Review URL: http://codereview.chromium.org/178049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25044 0039d316-1c4b-4281-b951-d872f2087c98
* Make AutocompleteController::done() match up with when results are actually ↵pkasting@chromium.org2009-08-311-1/+1
| | | | | | | | | | | | pushed to listeners. r24290 made it possible for the controller to be "done" (in that all providers had finished) but have not yet sent the final results to listeners. This makes done() only return true when the controller has actually pushed the final results. I'm not sure precisely what effects this discrepancy could have had but I suspect they were bad, given that callers assume done() means "results are stable". BUG=none TEST=none Review URL: http://codereview.chromium.org/173631 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24914 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Fix a ton of compiler warnings."tony@chromium.org2009-08-281-3/+1
| | | | | | | | | | | This reverts commit r24792. TBR=estade Review URL: http://codereview.chromium.org/179028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24796 0039d316-1c4b-4281-b951-d872f2087c98
* Fix a ton of compiler warnings.estade@chromium.org2009-08-281-1/+3
| | | | | | | | | | | | | | | Most of these are classes with virtual methods lacking virtual destructors or NULL used in non-pointer context. BUG=none TEST=app_unittests && base_unittests --gtest_filter=-ConditionVariableTest.LargeFastTaskTest patch by Jacob Mandelson <jlmjlm [at] gmail> http://codereview.chromium.org/171028/show git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24792 0039d316-1c4b-4281-b951-d872f2087c98
* Fix compile errorpkasting@chromium.org2009-08-201-1/+1
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23878 0039d316-1c4b-4281-b951-d872f2087c98
* Initialize all new booleans in unittest constructor.pkasting@chromium.org2009-08-201-0/+2
| | | | | | | | | TBR=brettw BUG=none TEST=none Review URL: http://codereview.chromium.org/173148 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23876 0039d316-1c4b-4281-b951-d872f2087c98
* Fix uninitialized memory read in autocomplete tests.brettw@chromium.org2009-08-201-0/+1
| | | | | | Review URL: http://codereview.chromium.org/173142 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23872 0039d316-1c4b-4281-b951-d872f2087c98
* Attempt to minimize omnibox flicker, without increasing lag too much.pkasting@chromium.org2009-08-201-46/+70
| | | | | | | | | | This also updates a bunch of comments, mostly to keep terminology like "results" and "matches" consistent, occasionally to fix grammar or other issues. BUG=18369 TEST=none Review URL: http://codereview.chromium.org/173031 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23859 0039d316-1c4b-4281-b951-d872f2087c98
* Try and improve result coalescing/display in the omnibox popup.pkasting@chromium.org2009-07-221-13/+3
| | | | | | | | | | | | | | | | | | | | | | | | This eliminates the delay timer in the popup view, and also eliminates the coalesce timer in the controller. Instead, we simply coalesce until we're done, we have at least as many results as we're already showing, or the "maximum delay timeout" (300 ms) fires, indicating we've gone too long without updating. Additionally, in order to be more responsive when typing rapidly, the controller updates observers immediately with the available results from a previous query if one is still running when a new query is started. While in theory this seems like it might produce flicker, in practice _not_ having it also results in flicker (just less-predictable flicker) since the 300 ms timeout starts kicking in at random times relative to when new keys are pressed. I also fixed a few small problems with leaving 1-pixel high white rows at the bottom of the popup during rapid typing (which weren't visible before this change since the popup would never shrink during rapid typing). After eliminating the timeout in the popup view, I was able to refactor the code to be shorter since a few members and helper functions could all be inlined. Then I added some long comments and made things not much shorter after all :/. I also changed two other (self-contained) unrelated spots in the popup to be shorter. Please patch this in locally and try how it feels. Things to test with this change vs. the old code vs. the old, old (original omnibox) code: * Type one letter at a time with long pauses in between; see how flickery the popup is * Type one letter (e.g. "a") and then type rapidly for a while; see how responsive the popup is * Type words like "amazon", "compusa" and "comcast" at various different speeds and observe the flicker vs. responsiveness tradeoff * Type or paste some long series of letters (that default to searching), then rapidly press and release the ctrl key My hope is that this hits a good balance (it's very difficult to be both flicker-free and responsive, I view the previous two sets of code as being off first one side of the scale and then the other). Possible tweaks include the animation tweening mechanism and timing (I experimented with various different speeds and linear tweening, nothing felt significantly better to me but my machine sucks w.r.t. animation quality) and tweaking the controller "max timeout" value and notification behavior upon starting a new query (I tried notifying only if two keys had been typed since the last notification, it didn't feel better). BUG=none TEST=see above Review URL: http://codereview.chromium.org/149659 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21322 0039d316-1c4b-4281-b951-d872f2087c98
* Fix regression where hitting enter in the Omnibox would ignore recent editing.pkasting@chromium.org2009-06-081-0/+4
| | | | | | | | | | Sadly, the only way I could find to fix this was a latest_result() accessor, because when the user hits enter, we really do need to use the very latest results. This just highlights how more of this stuff should move to the AutocompleteController. BUG=13428 TEST=Type "food.c" and wait for the popup to stabilize. Then _very_ quickly type "om" and hit enter. You should navigate to food.com instead of searching for "food.c". Review URL: http://codereview.chromium.org/118398 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17891 0039d316-1c4b-4281-b951-d872f2087c98
* Fix crash due to AutocompletePopup trying to draw the old results when they ↵pkasting@chromium.org2009-06-031-4/+6
| | | | | | | | were no longer available.I introduced this regression when moving |result_| to the AutocompleteController; the specific problem was the "result_.CopyFrom(latest_result_);" line I added when handling the synchronous messages being available. This was done so the popup could get at the new results to update the edit with them.Instead, go back to the old method (of not updating the results until the first coalesced update came in), and pass the appropriate result set as a Details<> in the notification, so the popup can get at it without having to know how the controller works under-the-hood.BUG=11742 Review URL: http://codereview.chromium.org/119116 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17562 0039d316-1c4b-4281-b951-d872f2087c98
* Hoist TrimHttpPrefix() so we only have one copy, not one per provider.pkasting@chromium.org2009-05-291-0/+4
| | | | | | | | | Make use of this in HistoryContentsProvider so results from it get their schemes trimmed appropriately. BUG=10558 Review URL: http://codereview.chromium.org/115885 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17145 0039d316-1c4b-4281-b951-d872f2087c98
* The accidental search infobar was almost never appearing. Fix that ↵pkasting@chromium.org2009-04-241-21/+28
| | | | | | | | | | | regression. Now we don't rely on the presence of a "what you typed" match in the result set; instead the AutocompleteResult determines the alternate nav URL directly. To do this I refactored some of the code from the history URL provider over to AutocompleteInput. BUG=10808 Review URL: http://codereview.chromium.org/92140 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14463 0039d316-1c4b-4281-b951-d872f2087c98
* Trivial cleanup of a recently added function:pkasting@chromium.org2009-04-201-5/+6
| | | | | | | | | * Make const * Move to be with other function (not variables) in header * Move in C++ file to match order in header Review URL: http://codereview.chromium.org/67274 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14042 0039d316-1c4b-4281-b951-d872f2087c98
* Color/emphasize correct portions of view-source: URLs. Original patch by ↵pkasting@chromium.org2009-04-141-0/+9
| | | | | | | | Shinichiro Hamaji (see http://codereview.chromium.org/62094/show ), r=me. BUG=2349 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13671 0039d316-1c4b-4281-b951-d872f2087c98
* Makes the omnibox show past searches and suggestions for keywords.sky@chromium.org2009-04-141-20/+41
| | | | | | | | | | | | | | | We talked about primary and secondary, but after doing it all I felt keyword and default better portrayed what is going on. After trying this out I think we need to tune relevancy. But that can be done later BUG=3636 TEST=make sure omnibox isn't broken. Review URL: http://codereview.chromium.org/66073 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13668 0039d316-1c4b-4281-b951-d872f2087c98
* Misc formatting / cleanup in the autocomplete code.deanm@chromium.org2009-02-271-10/+9
| | | | | | | | | | | | | | - Reformat / reword some comments. - Update include guards to the new style. - Remove trailing blank lines from end of files. - Clean up some includes. - Pull the CompareQuality functor into the implementation. - Pull kQueryDelayMs into the implementation. Review URL: http://codereview.chromium.org/27206 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10603 0039d316-1c4b-4281-b951-d872f2087c98
* Change some calls to gfx::ElideUrl() to using gfx::GetCleanStringFromUrl()estade@chromium.org2009-02-251-3/+3
| | | | | | Review URL: http://codereview.chromium.org/27148 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10363 0039d316-1c4b-4281-b951-d872f2087c98
* Omnibox metrics logging patch splitout, part 6: Log more omnibox data ↵pkasting@chromium.org2008-12-161-0/+4
| | | | | | | | | (client side). This is the last patch. It can't go in until Evan and I test it. Review URL: http://codereview.chromium.org/10666 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7032 0039d316-1c4b-4281-b951-d872f2087c98
* Better build bustage fix: Commit the rest of the original patch. Rolls back ↵pkasting@chromium.org2008-12-111-6/+6
| | | | | | the previous blind fix I tried. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6760 0039d316-1c4b-4281-b951-d872f2087c98
* Port some files in chrome/browser/agl@chromium.org2008-11-141-3/+3
| | | | | | | | | | | | | | | #ifdef out windows-specific portion of chrome/common/l10n_util.h, which allows me to port some other files. I also extracted parts of chrome/views/tree_view.h to tree_model.h, so that ATL/WTL-specific parts stay in tree_view.h, but tree_model.h is platform-independent and can be included in files using it as base class. Review URL: http://codereview.chromium.org/8618 Patch from Paweł Hajdan jr. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5483 0039d316-1c4b-4281-b951-d872f2087c98
* Omnibox metrics logging patch splitout, part 5: Add additional ↵pkasting@chromium.org2008-11-131-22/+16
| | | | | | | | | AutocompleteMatch types, and pass a type to the AutocompleteMatch constructor. The added detail in the new types is not used for anything functional; its sole purpose is for metric logging. Someday we could probably update other bits of the code to make use of this, though (e.g. the paste-and-search vs. paste-and-go determinant code). These are separable changes, but doing either one without the other would have required an annoying number of fragile temporary changes. Review URL: http://codereview.chromium.org/10855 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5329 0039d316-1c4b-4281-b951-d872f2087c98
* Omnibox metrics logging patch splitout, part 5: Add TypeToString() helpers. ↵pkasting@chromium.org2008-11-121-0/+6
| | | | | | | | One of these is unused for the moment. Review URL: http://codereview.chromium.org/10657 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5307 0039d316-1c4b-4281-b951-d872f2087c98
* Omnibox metrics logging patch splitout, part 2: Remove the AutocompleteMatch ↵pkasting@chromium.org2008-11-121-6/+4
| | | | | | | | | NULL constructor. It's too easy to forget to set various members with this. The changes from .resize() to .erase() are necessary because the compiler doesn't know resize() won't be enlarging the vector and thus needing to access the NULL constructor. The changes to the HistoryContents shortcut code were similarly necessary to avoid a NULL construction, but in the end I think made the resulting code a bit clearer. Review URL: http://codereview.chromium.org/10837 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5271 0039d316-1c4b-4281-b951-d872f2087c98
* Move |result_| and |latest_result_| to the autocomplete controller.pkasting@chromium.org2008-10-091-72/+102
| | | | | | | This purposefully does not change the communication interface between the edit and the popup; that's coming in a subsequent pass. As a result, right now the popup isn't really much simpler. That should eventually change. Review URL: http://codereview.chromium.org/6596 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3113 0039d316-1c4b-4281-b951-d872f2087c98
* Stop exposing manually_selected_match_ outside the AutocompletePopupModel. ↵pkasting@chromium.org2008-09-191-22/+20
| | | | | | | | | | | | | | | | | | | The main goal of this is to be a first step towards divorcing the popup and the edit from each other. To do this, I changed the behavior of manual selections. They now do not persist once the user types more characters, hits esc, etc. Our old behavior, which Brett and I designed long ago, turns out to have been a mistake; users who arrowed to an item and then typed more weren't expecting "stickiness" on their previous choice, and it led to user mistakes. This also required changing how we do the "keyword UI" persistence in the case where the user switches into keyword UI, but then deletes all his text. Previously, we used manually_selected_match_ with a provider affinity to the keyword provider in order to accomplish this. Now we stick another flag on the AutocompleteInput, which, when set, biases the keyword provider to return the best results. The user-visible effect of this is that when in keyword UI mode with no query string, the selected entry in the popup will be the first, rather than third, entry. This is a small win. While here I fixed the bug where editing a string and transforming it into a keyword search would avoid switching into keyword UI (as expected), but also delete the keyword off the visible string (oops). I also made us lock the popup once the user changes the manually_selected_match_, in order to give a little more stability to it. I'm sorry this makes so many behavioral changes at once. All this code is tangled together and untangling it is hard :( The keyword-related variables in the AutocompleteEditModel seem a mess. They are probably worse now than before this change; I think I need a followup change at some point to make them all more sane. It seems like we have three variables and complex conditionals where two, and simpler ones, would do. BUG=997976,1201974,1204173 Review URL: http://codereview.chromium.org/3172 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2426 0039d316-1c4b-4281-b951-d872f2087c98
* Don't send queries when URL is like:darin@chromium.org2008-09-101-1/+4
| | | | | | | | | | | | | | | - starts with http:// or https:// and includes username (e.g. http://me@test.com/) - starts with http:// or https:// and includes query (e.g. http://test.com/?q=x) - starts with https:// and includes path component (e.g. https://test.com/path) so as not to leak user data to the suggest server. Patch by takayoshi.kochi@gmail.com BUG=1647 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1978 0039d316-1c4b-4281-b951-d872f2087c98
* Split the AutocompletePopup into model and view classes, step 1.pkasting@google.com2008-08-281-2/+2
| | | | | | | | | | | | The just adds "Model" and "View" to the end of the current classname, leaves everything in the same files, and doesn't really change or remove any functionality, creation order, ownership semantics, etc. In other words, it's basically just moving some code around to get things split into two classes, and the harder work comes later. Also removes/trims some overly long comments, fixes a couple comment errors I noticed, and trims one or two bits of logic to be shorter. What really needs review the most is the high-level decisions about how to split data and functionality between the two classes. BUG=1343512 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1492 0039d316-1c4b-4281-b951-d872f2087c98
* Fix header guardnsylvain@google.com2008-08-271-3/+3
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1440 0039d316-1c4b-4281-b951-d872f2087c98
* Use a more compact license header in source files.license.bot2008-08-241-28/+4
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1287 0039d316-1c4b-4281-b951-d872f2087c98
* Fixes up the autocomplete providers to correctly update starredsky@google.com2008-08-211-0/+4
| | | | | | | | | | | state. I broke this in order to land my last mongo patch. HistoryContentsProvider is still lacking in one area. BUG=1256202 TEST=none git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1181 0039d316-1c4b-4281-b951-d872f2087c98
* Add chrome to the repository.initial.commit2008-07-261-0/+800
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15 0039d316-1c4b-4281-b951-d872f2087c98