blob: 4fa98f4f8483b92b7d1719bd55bbdbd8c51aa3af [file] [log] [blame]
// Copyright 2023 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_COMMERCE_CORE_COMMERCE_UTILS_H_
#define COMPONENTS_COMMERCE_CORE_COMMERCE_UTILS_H_
#include "base/feature_list.h"
#include "components/commerce/core/commerce_types.h"
#include "components/endpoint_fetcher/endpoint_fetcher.h"
#include "components/optimization_guide/core/hints/optimization_metadata.h"
class GURL;
namespace base {
class Uuid;
} // namespace base
namespace commerce {
// Gets the url for the ProductSpec page based on `urls`.
GURL GetProductSpecsTabUrl(const std::vector<GURL>& urls);
// Gets the url for the ProductSpec page based on `uuid`.
GURL GetProductSpecsTabUrlForID(const base::Uuid& uuid);
// Produce a ProductInfo object given OptimizationGuideMeta. The returned
// unique_ptr is owned by the caller and will be empty if conversion failed
// or there was no info.
std::unique_ptr<ProductInfo> OptGuideResultToProductInfo(
const optimization_guide::OptimizationMetadata& metadata,
bool can_load_product_specs_full_page_ui = false);
// Conditionally route traffic to an alternate shopping server by sending
// HTTP headers with the request.
void MaybeUseAlternateShoppingServer(
endpoint_fetcher::EndpointFetcher::RequestParams::Builder& params_builder);
} // namespace commerce
#endif // COMPONENTS_COMMERCE_CORE_COMMERCE_UTILS_H_