mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-01 13:57:32 +00:00

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
48 lines
1.9 KiB
C++
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
|