| OLD | NEW |
| (Empty) |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "components/autofill/content/browser/request_autocomplete_manager.h" | |
| 6 | |
| 7 #include <stddef.h> | |
| 8 | |
| 9 #include "components/autofill/content/browser/content_autofill_driver.h" | |
| 10 #include "components/autofill/content/common/autofill_messages.h" | |
| 11 #include "components/autofill/core/browser/form_structure.h" | |
| 12 #include "components/autofill/core/common/autofill_data_validation.h" | |
| 13 #include "components/autofill/core/common/form_data.h" | |
| 14 #include "content/public/browser/render_frame_host.h" | |
| 15 #include "content/public/browser/web_contents.h" | |
| 16 #include "third_party/WebKit/public/web/WebFormElement.h" | |
| 17 #include "url/gurl.h" | |
| 18 | |
| 19 namespace autofill { | |
| 20 | |
| 21 namespace { | |
| 22 | |
| 23 blink::WebFormElement::AutocompleteResult ToWebkitAutocompleteResult( | |
| 24 AutofillClient::RequestAutocompleteResult result) { | |
| 25 switch(result) { | |
| 26 case AutofillClient::AutocompleteResultSuccess: | |
| 27 return blink::WebFormElement::AutocompleteResultSuccess; | |
| 28 case AutofillClient::AutocompleteResultErrorDisabled: | |
| 29 return blink::WebFormElement::AutocompleteResultErrorDisabled; | |
| 30 case AutofillClient::AutocompleteResultErrorCancel: | |
| 31 return blink::WebFormElement::AutocompleteResultErrorCancel; | |
| 32 case AutofillClient::AutocompleteResultErrorInvalid: | |
| 33 return blink::WebFormElement::AutocompleteResultErrorInvalid; | |
| 34 } | |
| 35 | |
| 36 NOTREACHED(); | |
| 37 return blink::WebFormElement::AutocompleteResultErrorDisabled; | |
| 38 } | |
| 39 | |
| 40 } // namespace | |
| 41 | |
| 42 RequestAutocompleteManager::RequestAutocompleteManager( | |
| 43 ContentAutofillDriver* autofill_driver) | |
| 44 : autofill_driver_(autofill_driver), weak_ptr_factory_(this) { | |
| 45 DCHECK(autofill_driver_); | |
| 46 } | |
| 47 | |
| 48 RequestAutocompleteManager::~RequestAutocompleteManager() {} | |
| 49 | |
| 50 void RequestAutocompleteManager::OnRequestAutocomplete(const FormData& form) { | |
| 51 if (!IsValidFormData(form)) | |
| 52 return; | |
| 53 | |
| 54 AutofillClient::ResultCallback callback = | |
| 55 base::Bind(&RequestAutocompleteManager::ReturnAutocompleteResult, | |
| 56 weak_ptr_factory_.GetWeakPtr()); | |
| 57 ShowRequestAutocompleteDialog(form, callback); | |
| 58 } | |
| 59 | |
| 60 void RequestAutocompleteManager::ReturnAutocompleteResult( | |
| 61 AutofillClient::RequestAutocompleteResult result, | |
| 62 const base::string16& debug_message, | |
| 63 const FormStructure* form_structure) { | |
| 64 content::RenderFrameHost* host = autofill_driver_->render_frame_host(); | |
| 65 if (!host) | |
| 66 return; | |
| 67 | |
| 68 FormData form_data; | |
| 69 if (form_structure) { | |
| 70 form_data = form_structure->ToFormData(); | |
| 71 for (size_t i = 0; i < form_data.fields.size(); ++i) { | |
| 72 if(!form_data.fields[i].value.empty()) | |
| 73 form_data.fields[i].is_autofilled = true; | |
| 74 } | |
| 75 } | |
| 76 | |
| 77 host->Send(new AutofillMsg_RequestAutocompleteResult( | |
| 78 host->GetRoutingID(), | |
| 79 ToWebkitAutocompleteResult(result), | |
| 80 debug_message, | |
| 81 form_data)); | |
| 82 } | |
| 83 | |
| 84 void RequestAutocompleteManager::ShowRequestAutocompleteDialog( | |
| 85 const FormData& form, | |
| 86 const AutofillClient::ResultCallback& callback) { | |
| 87 AutofillClient* client = autofill_driver_->autofill_manager()->client(); | |
| 88 client->ShowRequestAutocompleteDialog( | |
| 89 form, autofill_driver_->render_frame_host(), callback); | |
| 90 } | |
| 91 | |
| 92 } // namespace autofill | |
| OLD | NEW |