Chromium Code Reviews| Index: components/autofill/content/renderer/autofill_agent.h |
| diff --git a/components/autofill/content/renderer/autofill_agent.h b/components/autofill/content/renderer/autofill_agent.h |
| index 768d7f6ea89f2d80b0a1acc7e400fc8ff2137137..896a7aca2bc182ef6c2a000e4bcf2c1cf4888093 100644 |
| --- a/components/autofill/content/renderer/autofill_agent.h |
| +++ b/components/autofill/content/renderer/autofill_agent.h |
| @@ -14,6 +14,8 @@ |
| #include "base/time/time.h" |
| #include "components/autofill/content/renderer/form_cache.h" |
| #include "components/autofill/content/renderer/page_click_listener.h" |
| +#include "components/autofill/content/renderer/page_click_tracker.h" |
| +#include "content/public/renderer/render_frame_observer.h" |
| #include "content/public/renderer/render_view_observer.h" |
| #include "third_party/WebKit/public/web/WebAutofillClient.h" |
| #include "third_party/WebKit/public/web/WebFormControlElement.h" |
| @@ -34,39 +36,64 @@ class PasswordAutofillAgent; |
| class PasswordGenerationAgent; |
| // AutofillAgent deals with Autofill related communications between WebKit and |
| -// the browser. There is one AutofillAgent per RenderView. |
| -// This code was originally part of RenderView. |
| +// the browser. There is one AutofillAgent per RenderFrame. |
| // Note that Autofill encompasses: |
| // - single text field suggestions, that we usually refer to as Autocomplete, |
| // - password form fill, refered to as Password Autofill, and |
| // - entire form fill based on one field entry, referred to as Form Autofill. |
| -class AutofillAgent : public content::RenderViewObserver, |
| +class AutofillAgent : public content::RenderFrameObserver, |
| public PageClickListener, |
| public blink::WebAutofillClient { |
| public: |
| // PasswordAutofillAgent is guaranteed to outlive AutofillAgent. |
| // PasswordGenerationAgent may be NULL. If it is not, then it is also |
| // guaranteed to outlive AutofillAgent. |
| - AutofillAgent(content::RenderView* render_view, |
| + AutofillAgent(content::RenderFrame* render_frame, |
| PasswordAutofillAgent* password_autofill_manager, |
| PasswordGenerationAgent* password_generation_agent); |
| virtual ~AutofillAgent(); |
| private: |
| - // content::RenderViewObserver: |
| + // Thunk class for RenderViewObserver methods that haven't yet been migrated |
| + // to RenderFrameObserver. Should eventually be removed. |
|
vabr (Chromium)
2014/11/10 14:34:39
nit: Bug reference to track the progress of moving
Evan Stade
2014/11/14 23:25:49
Done.
|
| + class LegacyAutofillAgent : public content::RenderViewObserver { |
| + public: |
| + LegacyAutofillAgent(content::RenderView* render_view, AutofillAgent* agent); |
| + ~LegacyAutofillAgent() override; |
| + |
| + private: |
| + // content::RenderViewObserver: |
| + void OnDestruct() override; |
| + void FrameDetached(blink::WebFrame* frame) override; |
| + void WillSubmitForm(blink::WebLocalFrame* frame, |
| + const blink::WebFormElement& form) override; |
| + void DidChangeScrollOffset(blink::WebLocalFrame* frame) override; |
| + void FocusedNodeChanged(const blink::WebNode& node) override; |
| + void OrientationChangeEvent() override; |
| + void Resized() override; |
| + |
| + AutofillAgent* agent_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(LegacyAutofillAgent); |
| + }; |
| + friend class LegacyAutofillAgent; |
| + |
| + // content::RenderFrameObserver: |
| bool OnMessageReceived(const IPC::Message& message) override; |
| - void DidFinishDocumentLoad(blink::WebLocalFrame* frame) override; |
| - void DidCommitProvisionalLoad(blink::WebLocalFrame* frame, |
| - bool is_new_navigation) override; |
| - void FrameDetached(blink::WebFrame* frame) override; |
| - void FrameWillClose(blink::WebFrame* frame) override; |
| + void DidCommitProvisionalLoad(bool is_new_navigation) override; |
| + void DidFinishDocumentLoad() override; |
| + void FrameWillClose() override; |
| + |
| + // Pass-throughs from LegacyAutofillAgent. These correlate with |
| + // RenderViewObserver methods. |
| + void FrameDetached(blink::WebFrame* frame); |
| void WillSubmitForm(blink::WebLocalFrame* frame, |
| - const blink::WebFormElement& form) override; |
| - void DidChangeScrollOffset(blink::WebLocalFrame* frame) override; |
| - void FocusedNodeChanged(const blink::WebNode& node) override; |
| - void OrientationChangeEvent() override; |
| - void Resized() override; |
| + const blink::WebFormElement& form); |
| + void DidChangeScrollOffset(blink::WebLocalFrame* frame); |
| + void FocusedNodeChanged(const blink::WebNode& node); |
| + void OrientationChangeEvent(); |
| + void Resized(); |
| // PageClickListener: |
| void FormControlElementClicked(const blink::WebFormControlElement& element, |
| @@ -173,8 +200,8 @@ class AutofillAgent : public content::RenderViewObserver, |
| void PreviewFieldWithValue(const base::string16& value, |
| blink::WebInputElement* node); |
| - // Notifies browser of new fillable forms in |frame|. |
| - void ProcessForms(const blink::WebLocalFrame& frame); |
| + // Notifies browser of new fillable forms in |render_frame|. |
| + void ProcessForms(); |
| // Hides any currently showing Autofill popup. |
| void HidePopup(); |
| @@ -184,6 +211,12 @@ class AutofillAgent : public content::RenderViewObserver, |
| PasswordAutofillAgent* password_autofill_agent_; // Weak reference. |
| PasswordGenerationAgent* password_generation_agent_; // Weak reference. |
| + // Passes through RenderViewObserver methods to |this|. |
| + LegacyAutofillAgent legacy_; |
| + |
| + // Tracks clicks on the RenderViewHost, informs |this|. |
| + PageClickTracker page_click_tracker_; |
| + |
| // The ID of the last request sent for form field Autofill. Used to ignore |
| // out of date responses. |
| int autofill_query_id_; |
| @@ -194,9 +227,6 @@ class AutofillAgent : public content::RenderViewObserver, |
| // The form element currently requesting an interactive autocomplete. |
| blink::WebFormElement in_flight_request_form_; |
| - // Pointer to the WebView. Used to access page scale factor. |
| - blink::WebView* web_view_; |
| - |
| // Should we display a warning if autofill is disabled? |
| bool display_warning_if_disabled_; |