blob: 6ba18ce191d4a8b8cb80c00d891c7c9de938f021 [file] [log] [blame] [edit]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_OMNIBOX_BROWSER_EXTENSION_SUGGESTION_H_
#define COMPONENTS_OMNIBOX_BROWSER_EXTENSION_SUGGESTION_H_
#include <stdint.h>
#include <map>
#include <memory>
#include <optional>
#include <string>
#include <vector>
#include "base/values.h"
#include "components/omnibox/browser/autocomplete_match.h"
#include "components/omnibox/browser/extension_suggestion.h"
#include "ui/gfx/image/image.h"
// A suggest result parsed from omnibox_api::SuggestResult.
struct ExtensionSuggestion {
// An action button attached to a suggest result.
struct Action {
Action(std::string name,
std::string label,
std::string tooltip_text,
gfx::Image icon);
~Action();
Action(const Action&) = delete;
Action& operator=(const Action&) = delete;
Action(Action&& rhs);
Action& operator=(Action&& rhs);
// The string sent to the extension in the event corresponding to the user
// clicking on the action.
std::string name;
// The action button label.
std::string label;
// The action button hover tooltip text.
std::string tooltip_text;
// The deserialized image data of an action icon.
gfx::Image icon;
};
ExtensionSuggestion(std::string content,
std::string description,
bool deletable,
ACMatchClassifications match_classifications,
std::optional<std::vector<Action>> actions,
std::optional<std::string> icon_url);
~ExtensionSuggestion();
ExtensionSuggestion(const ExtensionSuggestion&) = delete;
ExtensionSuggestion& operator=(const ExtensionSuggestion&) = delete;
ExtensionSuggestion(ExtensionSuggestion&& rhs);
ExtensionSuggestion& operator=(ExtensionSuggestion&& rhs);
// The text that is put into the URL bar, and that is sent to the extension
// when the user chooses this entry.
std::string content;
// The text that is displayed in the URL dropdown. Can contain XML-style
// markup for styling.
std::string description;
// Whether the suggest result can be deleted by the user.
bool deletable;
// The formatting for the suggestion text that matches the search query text.
ACMatchClassifications match_classifications;
// An array of actions attached to the suggestion. Only supported for
// suggestions added in unscoped mode.
std::optional<std::vector<Action>> actions;
// An icon shown on the leading edge of the suggestion in the omnibox
// dropdown. Only supported for suggestions added in unscoped mode.
std::optional<std::string> icon_url;
};
#endif // COMPONENTS_OMNIBOX_BROWSER_EXTENSION_SUGGESTION_H_