blob: ce051facf2ecf90a88745faef371568c6fda24eb [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_VARIATIONS_NET_OMNIBOX_HTTP_HEADERS_H_
#define COMPONENTS_VARIATIONS_NET_OMNIBOX_HTTP_HEADERS_H_
#include <memory>
#include <string>
#include <vector>
#include "base/component_export.h"
#include "base/feature_list.h"
#include "build/build_config.h"
class GURL;
namespace network {
struct ResourceRequest;
}
namespace variations {
COMPONENT_EXPORT(OMNIBOX_HTTP_HEADERS)
extern const char kOmniboxOnDeviceSuggestionsHeader[];
COMPONENT_EXPORT(OMNIBOX_HTTP_HEADERS)
extern const base::Feature kReportOmniboxOnDeviceSuggestionsHeader;
// Returns the value to set for the header. Returns an empty string if the
// provider is not explicitly enabled nor disabled via a field trial, i.e. the
// header is only set to a non-empty value during experimentation.
COMPONENT_EXPORT(OMNIBOX_HTTP_HEADERS)
std::string GetHeaderValue();
// Returns whether the header should be sent for this URL. The header is only
// sent to Google domains served over HTTPS.
COMPONENT_EXPORT(OMNIBOX_HTTP_HEADERS)
bool ShouldAppendHeader(const GURL& url);
// Adds an HTTP header reporting whether the Omnibox on-device search
// suggestions provider is enabled. Only reported if the provider is in a
// non-default state and if the |url| is a Google domain. This method is safe to
// call both from browser and from child processes.
COMPONENT_EXPORT(OMNIBOX_HTTP_HEADERS)
void AppendOmniboxOnDeviceSuggestionsHeaderIfNeeded(
const GURL& url,
network::ResourceRequest* request);
} // namespace variations
#endif // COMPONENTS_VARIATIONS_NET_OMNIBOX_HTTP_HEADERS_H_