chromium/chrome/browser/extensions/api/omnibox/suggestion_parser.h

// 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.

#ifndef CHROME_BROWSER_EXTENSIONS_API_OMNIBOX_SUGGESTION_PARSER_H_
#define CHROME_BROWSER_EXTENSIONS_API_OMNIBOX_SUGGESTION_PARSER_H_

#include <memory>
#include <string>
#include <string_view>
#include <vector>

#include "base/functional/callback_forward.h"
#include "chrome/common/extensions/api/omnibox.h"

namespace extensions {

// A helper struct to hold description and styles, as parsed from an XML
// string. In practice, this corresponds to omnibox::DefaultSuggestResult, but
// it will also be used to construct SuggestResults, so we disambiguate with a
// common struct.
struct DescriptionAndStyles {};

// The container for the result from parsing descriptions and styles.
struct DescriptionAndStylesResult {};

DescriptionAndStylesCallback;

// Parses `str`, which is the suggestion string passed from the extension that
// potentially contains XML markup (e.g., the string may be
// "visit <url>https://example.com</url>"). This parses the string in an
// isolated process and asynchronously returns the parse result via `callback`.
void ParseDescriptionAndStyles(std::string_view str,
                               DescriptionAndStylesCallback callback);
// Same as above, but takes in multiple string inputs.
void ParseDescriptionsAndStyles(const std::vector<std::string_view>& strs,
                                DescriptionAndStylesCallback callback);

}  // namespace extensions

#endif  // CHROME_BROWSER_EXTENSIONS_API_OMNIBOX_SUGGESTION_PARSER_H_