Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_AUTOFILL_AUTOFILL_EXTERNAL_DELEGATE_H_ | 5 #ifndef CHROME_BROWSER_AUTOFILL_AUTOFILL_EXTERNAL_DELEGATE_H_ |
| 6 #define CHROME_BROWSER_AUTOFILL_AUTOFILL_EXTERNAL_DELEGATE_H_ | 6 #define CHROME_BROWSER_AUTOFILL_AUTOFILL_EXTERNAL_DELEGATE_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/compiler_specific.h" | |
| 11 #include "base/string16.h" | 12 #include "base/string16.h" |
| 13 #include "webkit/forms/form_data.h" | |
| 12 #include "webkit/forms/form_field.h" | 14 #include "webkit/forms/form_field.h" |
| 13 | 15 |
| 14 class AutofillManager; | 16 class AutofillManager; |
| 15 class TabContentsWrapper; | 17 class TabContentsWrapper; |
| 16 | 18 |
| 17 namespace gfx { | 19 namespace gfx { |
| 18 class Rect; | 20 class Rect; |
| 19 } | 21 } |
| 20 | 22 |
| 21 namespace webkit { | |
| 22 namespace forms { | |
| 23 struct FormData; | |
| 24 } | |
| 25 } | |
| 26 | |
| 27 // TODO(csharp): A lot of the logic in this class is copied from autofillagent. | 23 // TODO(csharp): A lot of the logic in this class is copied from autofillagent. |
| 28 // Once Autofill is moved out of WebKit this class should be the only home for | 24 // Once Autofill is moved out of WebKit this class should be the only home for |
| 29 // this logic. See http://crbug.com/51644 | 25 // this logic. See http://crbug.com/51644 |
| 30 | 26 |
| 31 // Delegate for external processing of Autocomplete and Autofill | 27 // Delegate for external processing of Autocomplete and Autofill |
| 32 // display and selection. | 28 // display and selection. |
| 33 class AutofillExternalDelegate { | 29 class AutofillExternalDelegate { |
| 34 public: | 30 public: |
| 35 virtual ~AutofillExternalDelegate(); | 31 virtual ~AutofillExternalDelegate(); |
| 36 | 32 |
| 37 // When using an external Autofill delegate. Allows Chrome to tell | 33 // When using an external Autofill delegate. Allows Chrome to tell |
| 38 // WebKit which Autofill selection has been chosen. | 34 // WebKit which Autofill selection has been chosen. |
| 39 // TODO(jrg): add feedback mechanism for hover on relevant platforms. | 35 // TODO(jrg): add feedback mechanism for hover on relevant platforms. |
| 40 void SelectAutofillSuggestionAtIndex(int listIndex); | 36 virtual void SelectAutofillSuggestionAtIndex(int unique_id, int list_index); |
| 41 | 37 |
| 42 // Records and associates a query_id with web form data. Called | 38 // Records and associates a query_id with web form data. Called |
| 43 // when the renderer posts an Autofill query to the browser. |bounds| | 39 // when the renderer posts an Autofill query to the browser. |bounds| |
| 44 // is window relative. |display_warning_if_disabled| tells us if we should | 40 // is window relative. |display_warning_if_disabled| tells us if we should |
| 45 // display warnings (such as autofill is disabled, but had suggestions). | 41 // display warnings (such as autofill is disabled, but had suggestions). |
| 46 // We might not want to display the warning if a website has disabled | 42 // We might not want to display the warning if a website has disabled |
| 47 // Autocomplete because they have their own popup, and showing our popup | 43 // Autocomplete because they have their own popup, and showing our popup |
| 48 // on to of theirs would be a poor user experience. | 44 // on to of theirs would be a poor user experience. |
| 49 virtual void OnQuery(int query_id, | 45 virtual void OnQuery(int query_id, |
| 50 const webkit::forms::FormData& form, | 46 const webkit::forms::FormData& form, |
| 51 const webkit::forms::FormField& field, | 47 const webkit::forms::FormField& field, |
| 52 const gfx::Rect& bounds, | 48 const gfx::Rect& bounds, |
| 53 bool display_warning_if_disabled); | 49 bool display_warning_if_disabled); |
| 54 | 50 |
| 55 // Records query results and correctly formats them before sending them off | 51 // Records query results and correctly formats them before sending them off |
| 56 // to be displayed. Called when an Autofill query result is available. | 52 // to be displayed. Called when an Autofill query result is available. |
| 57 virtual void OnSuggestionsReturned( | 53 virtual void OnSuggestionsReturned( |
| 58 int query_id, | 54 int query_id, |
| 59 const std::vector<string16>& autofill_values, | 55 const std::vector<string16>& autofill_values, |
| 60 const std::vector<string16>& autofill_labels, | 56 const std::vector<string16>& autofill_labels, |
| 61 const std::vector<string16>& autofill_icons, | 57 const std::vector<string16>& autofill_icons, |
| 62 const std::vector<int>& autofill_unique_ids); | 58 const std::vector<int>& autofill_unique_ids); |
| 63 | 59 |
| 60 // Inform the delegate that the text field editing has ended, this is | |
| 61 // used to help record the metrics of when a new popup is shown. | |
| 62 void DidEndTextFieldEditing(); | |
| 63 | |
| 64 // Inform the delegate that an autofill suggestion have been chosen. | |
| 65 void didAcceptAutofillSuggestions( | |
|
Ilya Sherman
2012/02/04 04:10:52
nit: "didAccept..." -> "DidAccept"
csharp
2012/02/07 22:30:58
Done.
| |
| 66 string16 value,int unique_id, unsigned index); | |
|
Ilya Sherman
2012/02/04 04:10:52
nit: Since this is a header file, the parameters s
csharp
2012/02/07 22:30:58
Done.
| |
| 67 | |
| 68 // Informs the delegate that the Autofill selection has been cleared | |
| 69 // (i.e. there is now Autofill selection now). | |
|
Ilya Sherman
2012/02/04 04:10:52
nit: "there is now" -> "there is no"
csharp
2012/02/07 22:30:58
Done.
| |
| 70 virtual void ClearAutofillSelection(); | |
| 71 | |
| 64 // Hide the Autofill poup. | 72 // Hide the Autofill poup. |
| 65 virtual void HideAutofillPopup() = 0; | 73 void HideAutofillPopup(); |
| 66 | 74 |
| 67 // Platforms that wish to implement an external Autofill delegate | 75 // Platforms that wish to implement an external Autofill delegate |
| 68 // MUST implement this. The 1st arg is the tab contents that owns | 76 // MUST implement this. The 1st arg is the tab contents that owns |
| 69 // this delegate; the second is the Autofill manager owned by the | 77 // this delegate; the second is the Autofill manager owned by the |
| 70 // tab contents. | 78 // tab contents. |
| 71 static AutofillExternalDelegate* Create(TabContentsWrapper*, | 79 static AutofillExternalDelegate* Create(TabContentsWrapper*, |
| 72 AutofillManager*); | 80 AutofillManager*); |
| 73 | |
| 74 // Inform the delegate that the text field editing has ended, this is | |
| 75 // used to help record the metrics of when a new popup is shown. | |
| 76 void DidEndTextFieldEditing(); | |
| 77 | |
| 78 protected: | 81 protected: |
| 79 explicit AutofillExternalDelegate(TabContentsWrapper* tab_contents_wrapper, | 82 explicit AutofillExternalDelegate(TabContentsWrapper* tab_contents_wrapper, |
| 80 AutofillManager* autofill_manager); | 83 AutofillManager* autofill_manager); |
| 81 | 84 |
| 82 // Displays the the Autofill results to the user with an external | 85 // Displays the the Autofill results to the user with an external |
| 83 // Autofill popup that lives completely in the browser. The suggestions | 86 // Autofill popup that lives completely in the browser. The suggestions |
| 84 // have be correctly formatted by this point. | 87 // have be correctly formatted by this point. |
| 85 virtual void ApplyAutofillSuggestions( | 88 virtual void ApplyAutofillSuggestions( |
| 86 const std::vector<string16>& autofill_values, | 89 const std::vector<string16>& autofill_values, |
| 87 const std::vector<string16>& autofill_labels, | 90 const std::vector<string16>& autofill_labels, |
| 88 const std::vector<string16>& autofill_icons, | 91 const std::vector<string16>& autofill_icons, |
| 89 const std::vector<int>& autofill_unique_ids, | 92 const std::vector<int>& autofill_unique_ids, |
| 90 int separator_index) = 0; | 93 int separator_index) = 0; |
| 91 | 94 |
| 92 // Handle instance specific OnQueryCode. | 95 // Handle instance specific OnQueryCode. |
| 93 virtual void OnQueryPlatformSpecific(int query_id, | 96 virtual void OnQueryPlatformSpecific(int query_id, |
| 94 const webkit::forms::FormData& form, | 97 const webkit::forms::FormData& form, |
| 95 const webkit::forms::FormField& field, | 98 const webkit::forms::FormField& field, |
| 96 const gfx::Rect& bounds) = 0; | 99 const gfx::Rect& bounds) = 0; |
| 97 | 100 |
| 101 // Handle platform-dependent hiding. | |
| 102 void virtual HideAutofillPopupInternal() = 0; | |
|
Ilya Sherman
2012/02/04 04:10:52
nit: "void virtual" -> "virtual void"
csharp
2012/02/07 22:30:58
Done.
| |
| 103 | |
| 98 private: | 104 private: |
| 105 // Sends the Autofill data to Autofill manager as well as telling the renderer | |
| 106 // if the form is a preview. If |is_preview| is true we are just showing a | |
|
Ilya Sherman
2012/02/04 04:10:52
nit: I find this first sentence a bit hard to make
csharp
2012/02/07 22:30:58
Done.
| |
| 107 // preview of the form, otherwise we are filling it. | |
| 108 void FillAutofillFormData(int unique_id, bool is_preview); | |
| 109 | |
| 99 TabContentsWrapper* tab_contents_wrapper_; // weak; owns me. | 110 TabContentsWrapper* tab_contents_wrapper_; // weak; owns me. |
| 100 AutofillManager* autofill_manager_; // weak. | 111 AutofillManager* autofill_manager_; // weak. |
| 101 | 112 |
| 102 // The ID of the last request sent for form field Autofill. Used to ignore | 113 // The ID of the last request sent for form field Autofill. Used to ignore |
| 103 // out of date responses. | 114 // out of date responses. |
| 104 int autofill_query_id_; | 115 int autofill_query_id_; |
| 105 | 116 |
| 106 // The current field selected by Autofill. | 117 // The current form and field selected by Autofill. |
| 118 webkit::forms::FormData autofill_query_form_; | |
| 107 webkit::forms::FormField autofill_query_field_; | 119 webkit::forms::FormField autofill_query_field_; |
| 108 | 120 |
| 109 // Should we display a warning if Autofill is disabled? | 121 // Should we display a warning if Autofill is disabled? |
| 110 bool display_warning_if_disabled_; | 122 bool display_warning_if_disabled_; |
| 111 | 123 |
| 112 // Have we already shown Autofill suggestions for the field the user is | 124 // Have we already shown Autofill suggestions for the field the user is |
| 113 // currently editing? Used to keep track of state for metrics logging. | 125 // currently editing? Used to keep track of state for metrics logging. |
| 114 bool has_shown_autofill_popup_for_current_edit_; | 126 bool has_shown_autofill_popup_for_current_edit_; |
| 115 | 127 |
| 128 // The menu index of the "Clear" menu item. | |
| 129 int suggestions_clear_index_; | |
| 130 | |
| 131 // The menu index of the "Autofill options..." menu item. | |
| 132 int suggestions_options_index_; | |
| 133 | |
| 116 DISALLOW_COPY_AND_ASSIGN(AutofillExternalDelegate); | 134 DISALLOW_COPY_AND_ASSIGN(AutofillExternalDelegate); |
| 117 }; | 135 }; |
| 118 | 136 |
| 119 #endif // CHROME_BROWSER_AUTOFILL_AUTOFILL_EXTERNAL_DELEGATE_H_ | 137 #endif // CHROME_BROWSER_AUTOFILL_AUTOFILL_EXTERNAL_DELEGATE_H_ |
| OLD | NEW |