| 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 #ifndef COMPONENTS_AUTOFILL_CONTENT_BROWSER_AUTOCHECKOUT_PAGE_META_DATA_H_ | |
| 6 #define COMPONENTS_AUTOFILL_CONTENT_BROWSER_AUTOCHECKOUT_PAGE_META_DATA_H_ | |
| 7 | |
| 8 #include <map> | |
| 9 #include <vector> | |
| 10 | |
| 11 #include "base/basictypes.h" | |
| 12 #include "components/autofill/content/browser/autocheckout_steps.h" | |
| 13 #include "components/autofill/core/common/web_element_descriptor.h" | |
| 14 | |
| 15 namespace autofill { | |
| 16 | |
| 17 // Container for multipage Autocheckout data. | |
| 18 struct AutocheckoutPageMetaData { | |
| 19 AutocheckoutPageMetaData(); | |
| 20 ~AutocheckoutPageMetaData(); | |
| 21 | |
| 22 // Returns true if the Autofill server says that the current page is start of | |
| 23 // a multipage Autofill flow. | |
| 24 bool IsStartOfAutofillableFlow() const; | |
| 25 | |
| 26 // Returns true if the Autofill server says that the current page is in a | |
| 27 // multipage Autofill flow. | |
| 28 bool IsInAutofillableFlow() const; | |
| 29 | |
| 30 // Returns true if the Autofill server says that the current page is the end | |
| 31 // of a multipage Autofill flow. | |
| 32 bool IsEndOfAutofillableFlow() const; | |
| 33 | |
| 34 // Page number of the multipage Autofill flow this form belongs to | |
| 35 // (zero-indexed). If this form doesn't belong to any autofill flow, it is set | |
| 36 // to -1. | |
| 37 int current_page_number; | |
| 38 | |
| 39 // Total number of pages in the multipage Autofill flow. If this form doesn't | |
| 40 // belong to any autofill flow, it is set to -1. | |
| 41 int total_pages; | |
| 42 | |
| 43 // Whether ajaxy form changes that occur on this page during an Autocheckout | |
| 44 // flow should be ignored. | |
| 45 bool ignore_ajax; | |
| 46 | |
| 47 // A list of elements to click before filling form fields. Elements have to be | |
| 48 // clicked in order. | |
| 49 std::vector<WebElementDescriptor> click_elements_before_form_fill; | |
| 50 | |
| 51 // A list of elements to click after filling form fields, and before clicking | |
| 52 // page_advance_button. Elements have to be clicked in order. | |
| 53 std::vector<WebElementDescriptor> click_elements_after_form_fill; | |
| 54 | |
| 55 // The proceed element of the multipage Autofill flow. It can be empty | |
| 56 // if current page is the last page of a flow or isn't a member of a flow. | |
| 57 // | |
| 58 // We do expect page navigation when click on |proceed_element_descriptor|, | |
| 59 // and report an error if it doesn't. Oppositely, we do not expect page | |
| 60 // navigation when click elements in |click_elements_before_form_fill| and | |
| 61 // |click_elements_after_form_fill|. Because of this behavior difference and | |
| 62 // |proceed_element_descriptor| is optional, we separate it from | |
| 63 // |click_elements_after_form_fill|. | |
| 64 WebElementDescriptor proceed_element_descriptor; | |
| 65 | |
| 66 // Mapping of page numbers to the types of Autocheckout actions that will be | |
| 67 // performed on the given page of a multipage Autofill flow. | |
| 68 // If this form doesn't belong to such a flow, the map will be empty. | |
| 69 std::map<int, std::vector<AutocheckoutStepType> > page_types; | |
| 70 | |
| 71 private: | |
| 72 DISALLOW_COPY_AND_ASSIGN(AutocheckoutPageMetaData); | |
| 73 }; | |
| 74 | |
| 75 } // namespace autofill | |
| 76 | |
| 77 #endif // COMPONENTS_AUTOFILL_CONTENT_BROWSER_AUTOCHECKOUT_PAGE_META_DATA_H_ | |
| OLD | NEW |