// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_KEYBOARD_ACCESSORY_ANDROID_ACCESSORY_SHEET_DATA_H_ #define CHROME_BROWSER_KEYBOARD_ACCESSORY_ANDROID_ACCESSORY_SHEET_DATA_H_ #include <optional> #include <string> #include <utility> #include <vector> #include "base/types/strong_alias.h" #include "chrome/browser/keyboard_accessory/android/accessory_sheet_enums.h" #include "url/gurl.h" namespace autofill { // Represents a selectable item within a UserInfo or a PromoCodeInfo in the // manual fallback UI, such as the username or a credit card number or a promo // code. class AccessorySheetField final { … }; class AccessorySheetField::Builder final { … }; // Represents user data to be shown on the manual fallback UI (e.g. a Profile, // or a Credit Card, or the credentials for a website). For credentials, // 'is_exact_match' is used to determine the origin (first-party match, a PSL or // affiliated match) of the credential. class UserInfo final { … }; std::ostream& operator<<(std::ostream& out, const AccessorySheetField& field); std::ostream& operator<<(std::ostream& out, const UserInfo& user_info); class UserInfoSection final { … }; std::ostream& operator<<(std::ostream& os, const UserInfoSection& field); class PlusAddressInfo final { … }; std::ostream& operator<<(std::ostream& out, const PlusAddressInfo& field); class PlusAddressSection final { … }; std::ostream& operator<<(std::ostream& out, const PlusAddressSection& field); // Represents a passkey entry shown in the password accessory. class PasskeySection final { … }; std::ostream& operator<<(std::ostream& out, const PasskeySection& passkey_section); // Represents data pertaining to promo code offers to be shown on the Payments // tab of manual fallback UI. class PromoCodeInfo final { … }; std::ostream& operator<<(std::ostream& out, const PromoCodeInfo& promo_code_info); // Represents data pertaining to IBANs to be shown on the Payments methods // tab of manual fallback UI. class IbanInfo final { … }; std::ostream& operator<<(std::ostream& out, const IbanInfo& iban); // Represents a command below the suggestions, such as "Manage password...". class FooterCommand final { … }; std::ostream& operator<<(std::ostream& out, const FooterCommand& fc); std::ostream& operator<<(std::ostream& out, const AccessoryTabType& type); // Toggle to be displayed above the suggestions. One such toggle can be used, // for example, to turn password saving on for the current origin. class OptionToggle final { … }; // Represents the contents of a bottom sheet tab below the keyboard accessory, // which can correspond to passwords, credit cards, or profiles data. class AccessorySheetData final { … }; std::ostream& operator<<(std::ostream& out, const AccessorySheetData& data); // Helper class for AccessorySheetData objects creation. // // Example that creates a AccessorySheetData object with two UserInfo objects; // the former has two fields, whereas the latter has three fields: // AccessorySheetData data = AccessorySheetData::Builder(user_info_title) // .AddUserInfo() // .AppendField(...) // .AppendField(...) // .AddUserInfo() // .AppendField(...) // .AppendField(...) // .AppendField(...) // .Build(); class AccessorySheetData::Builder final { … }; } // namespace autofill #endif // CHROME_BROWSER_KEYBOARD_ACCESSORY_ANDROID_ACCESSORY_SHEET_DATA_H_