gecko-dev/dom/html/FetchPriority.h
Frédéric Wang a4d4b33917 Bug 1880528 - Introduce preference for fetch priority adjustment of <link rel=preload as=script>. r=valentin,necko-reviewers
The fetchpriority attribute allows web developers to request some
adjustment to the internal priorities when fetching resources. In order
to give some flexibility for experimenting and choosing the values that
work best for Gecko, we will introduce new preferences to control
exactly how the internal priority is adjusted, depending on the value
auto/high/low of the fetchpriority attribute.

This is the first patch of a series introducing such preferences,
focusing on the case `<link rel=preload as=script>`. The following 3
integer preferences are introduced:

```
network.fetchpriority.adjustments.link-preload-script.low
network.fetchpriority.adjustments.link-preload-script.high
network.fetchpriority.adjustments.link-preload-script.auto
```

and are set so that we don't change current behavior (already
covered by tests). A test is also added to verify basic invariants
for such adjustments.

Differential Revision: https://phabricator.services.mozilla.com/D201997
2024-02-19 13:35:39 +00:00

48 lines
1.9 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef mozilla_dom_FetchPriority_h
#define mozilla_dom_FetchPriority_h
#include <cstdint>
namespace mozilla {
class LazyLogModule;
namespace dom {
enum class RequestPriority : uint8_t;
// <https://html.spec.whatwg.org/multipage/urls-and-fetching.html#fetch-priority-attributes>.
enum class FetchPriority : uint8_t { High, Low, Auto };
FetchPriority ToFetchPriority(RequestPriority aRequestPriority);
#define FETCH_PRIORITY_ADJUSTMENT_FOR(feature, fetchPriority) \
(fetchPriority == FetchPriority::Auto \
? StaticPrefs::network_fetchpriority_adjustments_##feature##_auto() \
: (fetchPriority == FetchPriority::High \
? StaticPrefs:: \
network_fetchpriority_adjustments_##feature##_high() \
: (fetchPriority == FetchPriority::Low \
? StaticPrefs:: \
network_fetchpriority_adjustments_##feature##_low() \
: 0)))
// @param aSupportsPriority see <nsISupportsPriority.idl>.
void LogPriorityMapping(LazyLogModule& aLazyLogModule,
FetchPriority aFetchPriority,
int32_t aSupportsPriority);
extern const char* kFetchPriorityAttributeValueHigh;
extern const char* kFetchPriorityAttributeValueLow;
extern const char* kFetchPriorityAttributeValueAuto;
} // namespace dom
} // namespace mozilla
#endif // mozilla_dom_FetchPriority_h