// Copyright 2019 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 CONTENT_BROWSER_LOADER_BROWSER_INITIATED_RESOURCE_REQUEST_H_
#define CONTENT_BROWSER_LOADER_BROWSER_INITIATED_RESOURCE_REQUEST_H_

namespace net {
class HttpRequestHeaders;
}  // namespace net

namespace blink {
namespace mojom {
class RendererPreferences;
}  // namespace mojom
}  // namespace blink

namespace content {

class BrowserContext;

// Returns true if either of FetchMetadata or experimental-web-platform-features
// is enabled.
bool IsFetchMetadataEnabled();

// Returns true if either of FetchMetadataDestination or
// experimental-web-platform-features is enabled.
bool IsFetchMetadataDestinationEnabled();

// Sets request headers appropriate for browser-initiated resource requests,
// i.e., requests for navigations and dedicated/shared/service worker
// scripts.
// If |should_update_existing_headers| is true, this function may update values
// that are already set in |headers|.
// This needs to be called on the UI thread.
void UpdateAdditionalHeadersForBrowserInitiatedRequest(
    net::HttpRequestHeaders* headers,
    BrowserContext* browser_context,
    bool should_update_existing_headers,
    const blink::mojom::RendererPreferences& renderer_preferences);

}  // namespace content

#endif  // CONTENT_BROWSER_LOADER_BROWSER_INITIATED_RESOURCE_REQUEST_H_
