Chromium Code Reviews| Index: chrome/renderer/autofill_helper.h |
| =================================================================== |
| --- chrome/renderer/autofill_helper.h (revision 71253) |
| +++ chrome/renderer/autofill_helper.h (working copy) |
| @@ -12,9 +12,11 @@ |
| #include "base/compiler_specific.h" |
| #include "chrome/renderer/form_manager.h" |
| #include "chrome/renderer/page_click_listener.h" |
| +#include "chrome/renderer/render_view.h" |
| +#include "third_party/WebKit/WebKit/chromium/public/WebAutoFillClient.h" |
| #include "third_party/WebKit/WebKit/chromium/public/WebNode.h" |
| -class RenderView; |
| +class PasswordAutocompleteManager; |
| namespace WebKit { |
| class WebInputElement; |
| @@ -29,64 +31,14 @@ |
| // - single text field suggestions, that we usually refer to as Autocomplete |
| // - entire form fill based on one field entry, referred to as form AutoFill. |
| -class AutoFillHelper : public PageClickListener { |
| +class AutoFillHelper : public RenderView::Observer, |
| + public PageClickListener, |
| + public WebKit::WebAutoFillClient { |
| public: |
| - explicit AutoFillHelper(RenderView* render_view); |
| + // PasswordAutocompleteManager is guaranteed to outlive AutoFillHelper. |
| + explicit AutoFillHelper( |
| + PasswordAutocompleteManager* password_autocomplete_manager); |
| - // Removes the Autocomplete suggestion |value| for the field named |name|. |
| - void RemoveAutocompleteSuggestion(const WebKit::WebString& name, |
| - const WebKit::WebString& value); |
| - |
| - // Called when we have received AutoFill suggestions from the browser. |
| - void SuggestionsReceived(int query_id, |
| - const std::vector<string16>& values, |
| - const std::vector<string16>& labels, |
| - const std::vector<string16>& icons, |
| - const std::vector<int>& unique_ids); |
| - |
| - // Called when we have received suggestions for an entire form from the |
| - // browser. |
| - void FormDataFilled(int query_id, const webkit_glue::FormData& form); |
| - |
| - // Called by Webkit when the user has selected a suggestion in the popup (this |
| - // happens when the user hovers over an suggestion or navigates the popup with |
| - // the arrow keys). |
| - void DidSelectAutoFillSuggestion(const WebKit::WebNode& node, |
| - int unique_id); |
| - |
| - // Called by Webkit when the user has accepted a suggestion in the popup. |
| - void DidAcceptAutoFillSuggestion(const WebKit::WebNode& node, |
| - const WebKit::WebString& value, |
| - int unique_id, |
| - unsigned index); |
| - |
| - // Called by WebKit when the user has cleared the selection from the AutoFill |
| - // suggestions popup. This happens when a user uses the arrow keys to |
| - // navigate outside the range of possible selections, or when the popup |
| - // closes. |
| - void DidClearAutoFillSelection(const WebKit::WebNode& node); |
| - |
| - // Called when the frame contents are available. Extracts the forms from that |
| - // frame and sends them to the browser for parsing. |
| - void FrameContentsAvailable(WebKit::WebFrame* frame); |
| - |
| - // Called before a frame is closed. Gives us an opportunity to clean up. |
| - // DEPRECATED. |
| - void FrameWillClose(WebKit::WebFrame* frame); |
| - |
| - // Called when |frame| is detached from the view. Gives us an opportunity to |
| - // clean up. |
| - void FrameDetached(WebKit::WebFrame* frame); |
| - |
| - // WebViewClient editor call forwarded by the RenderView. |
| - void TextDidChangeInTextField(const WebKit::WebInputElement& element); |
| - |
| - // WebViewClient editor call forwarded by the RenderView. For lower level |
| - // event translation. Specifically, for down/up key presses in an input |
| - // element. |
| - void KeyDownInTextField(const WebKit::WebInputElement& element, |
| - const WebKit::WebKeyboardEvent& event); |
| - |
| private: |
| enum AutoFillAction { |
| AUTOFILL_NONE, // No state set. |
| @@ -94,11 +46,50 @@ |
| AUTOFILL_PREVIEW, // Preview the AutoFill form data. |
| }; |
| + // RenderView::Observer implementation. |
| + virtual bool OnMessageReceived(const IPC::Message& message); |
| + virtual void DidFinishDocumentLoad(WebKit::WebFrame* frame); |
| + virtual void FrameDetached(WebKit::WebFrame* frame); |
| + virtual void FrameWillClose(WebKit::WebFrame* frame); |
| + virtual void FrameTranslated(WebKit::WebFrame* frame); |
| + |
| // PageClickListener implementation: |
| virtual bool InputElementClicked(const WebKit::WebInputElement& element, |
| bool was_focused, |
| bool is_focused); |
| + // WebKit::WebAutoFillClient implementation: |
| + virtual void didAcceptAutoFillSuggestion(const WebKit::WebNode& node, |
| + const WebKit::WebString& value, |
| + const WebKit::WebString& label, |
| + int unique_id, |
| + unsigned index); |
| + virtual void didSelectAutoFillSuggestion(const WebKit::WebNode& node, |
| + const WebKit::WebString& value, |
| + const WebKit::WebString& label, |
| + int unique_id); |
| + virtual void didClearAutoFillSelection(const WebKit::WebNode& node); |
| + virtual void didAcceptAutocompleteSuggestion( |
| + const WebKit::WebInputElement& element); |
| + virtual void removeAutocompleteSuggestion(const WebKit::WebString& name, |
| + const WebKit::WebString& value); |
|
Ilya Sherman
2011/01/13 02:18:30
nit: indentation
jam
2011/01/13 02:53:43
Done.
|
| + virtual void textFieldDidEndEditing(const WebKit::WebInputElement& element); |
| + virtual void textFieldDidChange(const WebKit::WebInputElement& element); |
| + virtual void textFieldDidReceiveKeyDown( |
| + const WebKit::WebInputElement& element, |
| + const WebKit::WebKeyboardEvent& event); |
| + |
| + void OnSuggestionsReturned(int query_id, |
| + const std::vector<string16>& values, |
| + const std::vector<string16>& labels, |
| + const std::vector<string16>& icons, |
| + const std::vector<int>& unique_ids); |
| + void OnFormDataFilled(int query_id, const webkit_glue::FormData& form); |
| + |
| + // Called in a posted task by textFieldDidChange() to work-around a WebKit bug |
| + // http://bugs.webkit.org/show_bug.cgi?id=16976 |
| + void TextFieldDidChangeImpl(const WebKit::WebInputElement& element); |
| + |
| // Shows the autocomplete suggestions for |element|. |
| // This call is asynchronous and may or may not lead to the showing of a |
| // suggestion popup (no popup is shown if there are no available suggestions). |
| @@ -138,11 +129,10 @@ |
| webkit_glue::FormData* form, |
| webkit_glue::FormField* field) WARN_UNUSED_RESULT; |
| - // Weak reference. |
| - RenderView* render_view_; |
| - |
| FormManager form_manager_; |
| + PasswordAutocompleteManager* password_autocomplete_manager_; |
| + |
| // The ID of the last request sent for form field AutoFill. Used to ignore |
| // out of date responses. |
| int autofill_query_id_; |
| @@ -165,6 +155,8 @@ |
| // The menu index of the "AutoFill options..." menu item. |
| int suggestions_options_index_; |
| + ScopedRunnableMethodFactory<AutoFillHelper> method_factory_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(AutoFillHelper); |
| }; |