| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import Foundation |
| import SwiftUI |
| import UIKit |
| |
| @objcMembers public class OmniboxPedalData: NSObject, OmniboxPedal { |
| /// Pedal title, as seen in the pedal button/row. |
| public let title: String |
| /// Pedal subtitle, e.g. "Settings -> Passwords" |
| public let subtitle: String |
| /// Describes the action performed; can be used for voiceover. |
| public let hint: String |
| /// The image for the Pedal. |
| public let image: UIImage |
| public let imageTintColor: UIColor? |
| public let backgroundColor: UIColor? |
| public let imageBorderColor: UIColor? |
| /// Action to run when the pedal is executed. |
| public let action: () -> Void |
| /// Action type for metrics collection. Int-casted OmniboxPedalId |
| public let type: Int |
| |
| public init( |
| title: String, subtitle: String, |
| accessibilityHint: String, |
| image: UIImage, |
| imageTintColor: UIColor?, |
| backgroundColor: UIColor?, |
| imageBorderColor: UIColor?, |
| type: Int, |
| action: @escaping () -> Void |
| ) { |
| self.title = title |
| self.subtitle = subtitle |
| self.hint = accessibilityHint |
| self.image = image |
| self.imageTintColor = imageTintColor |
| self.backgroundColor = backgroundColor |
| self.imageBorderColor = imageBorderColor |
| self.type = type |
| self.action = action |
| } |
| } |
| |
| extension OmniboxPedalData: OmniboxIcon { |
| |
| public var iconType: OmniboxIconType { |
| return .suggestionIcon |
| } |
| |
| public var iconImage: UIImage? { |
| return image |
| } |
| |
| public var imageURL: CrURL? { return nil } |
| |
| public var iconImageTintColor: UIColor? { |
| return imageTintColor |
| } |
| |
| public var backgroundImageTintColor: UIColor? { |
| return backgroundColor |
| } |
| |
| public var borderColor: UIColor? { |
| return imageBorderColor |
| } |
| |
| } |