# PrefetchParameters.Builder

Artifact: [androidx.webkit:webkit](https://developer.android.com/jetpack/androidx/releases/webkit) [View Source](https://cs.android.com/search?q=file:androidx/webkit/PrefetchParameters.java+class:androidx.webkit.PrefetchParameters.Builder) Added in [1.17.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.17.0)

*** ** * ** ***


```
public final class PrefetchParameters.Builder
```

<br />

*** ** * ** ***

A builder class for constructing `https://developer.android.com/reference/androidx/webkit/PrefetchParameters` instances.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder#Builder()()` Construct a new Builder. |

| ### Public methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder` | `@https://developer.android.com/reference/androidx/webkit/Profile.ExperimentalUrlPrefetch https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder#addAdditionalHeader(java.lang.String,java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html key, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html value)` Sets the header value for the given key. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder` | `@https://developer.android.com/reference/androidx/webkit/Profile.ExperimentalUrlPrefetch https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder#addAdditionalHeaders(java.util.Map<java.lang.String,java.lang.String>)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/lang/String.html> additionalHeaders)` Sets multiple headers at once. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters` | `@https://developer.android.com/reference/androidx/webkit/Profile.ExperimentalUrlPrefetch https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder#build()()` Build the `https://developer.android.com/reference/androidx/webkit/PrefetchParameters`. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder` | `@https://developer.android.com/reference/androidx/webkit/Profile.ExperimentalUrlPrefetch [setExpectedNoVarySearchData](https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder#setExpectedNoVarySearchData(androidx.webkit.NoVarySearchHeader))( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/NoVarySearchHeader expectedNoVarySearchHeader )` **This method is deprecated.** This is just an update in naming, and this method will disappear in a future release. <br /> |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder` | `@https://developer.android.com/reference/androidx/webkit/Profile.ExperimentalUrlPrefetch https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder#setExpectedNoVarySearchHeader(androidx.webkit.NoVarySearchHeader)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/NoVarySearchHeader expectedNoVarySearchHeader )` Sets the [No-Vary-Search](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/No-Vary-Search) data that's expected to be returned via the header in the prefetch's response. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder` | `@https://developer.android.com/reference/androidx/webkit/Profile.ExperimentalUrlPrefetch [setJavaScriptEnabled](https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder#setJavaScriptEnabled(boolean))(boolean javaScriptEnabled)` **This method is deprecated.** This method has been renamed to `https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder#setShouldSendClientHints(boolean)` and will be removed in a future release. <br /> |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder` | `@https://developer.android.com/reference/androidx/webkit/Profile.ExperimentalUrlPrefetch https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder#setShouldSendClientHints(boolean)(boolean shouldSendClientHints)` Sets whether the prefetch request will include client hints headers. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder` | `@https://developer.android.com/reference/androidx/webkit/Profile.ExperimentalUrlPrefetch https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder#setVariationsId(java.lang.Integer)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Integer.html variationsId)` Sets an optional variations ID to associate with this prefetch request. |

## Public constructors

### Builder

Added in [1.17.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.17.0)

```
public Builder()
```

Construct a new Builder.

## Public methods

### addAdditionalHeader

Added in [1.17.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.17.0)

```
@Profile.ExperimentalUrlPrefetch
public @NonNull PrefetchParameters.Builder addAdditionalHeader(@NonNull String key, @NonNull String value)
```

Sets the header value for the given key. If called multiple times for the same key, the last value will be used.

Header keys must be [RFC 2616](https://datatracker.ietf.org/doc/html/rfc2616) compliant.

The logic for handling additional header isn't guaranteed to match the `https://developer.android.com/reference/android/webkit/WebView.html#loadUrl(java.lang.String, java.util.Map&lt;java.lang.String,java.lang.String&gt;)`'s logic and is subject to change in the future.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html key` | The header key. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html value` | The header value. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder` | This builder instance for chaining. |

### addAdditionalHeaders

Added in [1.17.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.17.0)

```
@Profile.ExperimentalUrlPrefetch
public @NonNull PrefetchParameters.Builder addAdditionalHeaders(@NonNull Map<String, String> additionalHeaders)
```

Sets multiple headers at once. The headers passed in here will be merged with any that have been previously set (duplicate keys will be overridden).

Header keys must be [RFC 2616](https://datatracker.ietf.org/doc/html/rfc2616) -compliant.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/lang/String.html> additionalHeaders` | A map of additional headers to set. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder` | This builder instance for chaining. |

### build

Added in [1.17.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.17.0)

```
@Profile.ExperimentalUrlPrefetch
public @NonNull PrefetchParameters build()
```

Build the `https://developer.android.com/reference/androidx/webkit/PrefetchParameters`.

### setExpectedNoVarySearchData

Added in [1.17.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.17.0) Deprecated in [1.17.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.17.0)

```
@Profile.ExperimentalUrlPrefetch
public @NonNull PrefetchParameters.Builder [setExpectedNoVarySearchData](https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder#setExpectedNoVarySearchData(androidx.webkit.NoVarySearchHeader))(
    @NonNull NoVarySearchHeader expectedNoVarySearchHeader
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> This is just an update in naming, and this method will disappear in a future release. Please use `https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder#setExpectedNoVarySearchHeader(androidx.webkit.NoVarySearchHeader)`

Sets the [No-Vary-Search](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/No-Vary-Search) data that's expected to be returned via the header in the prefetch's response.

This is used to help determine if WebView#loadUrl should either use an in-flight prefetch response to render the web contents or handle the URL as it typically does (i.e. start a network request).

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/NoVarySearchHeader expectedNoVarySearchHeader` | The No-Vary-Search data expected to be returned in the prefetch's response. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder` | This builder instance for chaining. |

### setExpectedNoVarySearchHeader

Added in [1.17.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.17.0)

```
@Profile.ExperimentalUrlPrefetch
public @NonNull PrefetchParameters.Builder setExpectedNoVarySearchHeader(
    @NonNull NoVarySearchHeader expectedNoVarySearchHeader
)
```

Sets the [No-Vary-Search](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/No-Vary-Search) data that's expected to be returned via the header in the prefetch's response.

This is used to help determine if WebView#loadUrl should either use an in-flight prefetch response to render the web contents or handle the URL as it typically does (i.e. start a network request).

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/NoVarySearchHeader expectedNoVarySearchHeader` | The No-Vary-Search data expected to be returned in the prefetch's response. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder` | This builder instance for chaining. |

### setJavaScriptEnabled

Added in [1.17.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.17.0) Deprecated in [1.18.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.18.0)

```
@Profile.ExperimentalUrlPrefetch
public @NonNull PrefetchParameters.Builder [setJavaScriptEnabled](https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder#setJavaScriptEnabled(boolean))(boolean javaScriptEnabled)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> This method has been renamed to `https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder#setShouldSendClientHints(boolean)` and will be removed in a future release.

Set whether the page that is loaded will have JavaScript enabled. `true` if the WebView's that will be loading the prefetched response will have javascript enabled. This affects whether client hints header is sent with the prefetch request.

| Parameters |
|---|---|
| `boolean javaScriptEnabled` | `true` if the WebView that will be loading the prefetched response will have JavaScript enabled. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder` | This builder instance for chaining. |

### setShouldSendClientHints

Added in [1.18.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.18.0)

```
@Profile.ExperimentalUrlPrefetch
public @NonNull PrefetchParameters.Builder setShouldSendClientHints(boolean shouldSendClientHints)
```

Sets whether the prefetch request will include client hints headers.

[Client hints](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Client_hints) are headers that tell the server about the current device, network or user, such as the device model or viewport size. When `true`, the prefetch request will include `Set-CH-*` headers. This includes low entropy hints and the high entropy hints that the server has previously requested.

| Parameters |
|---|---|
| `boolean shouldSendClientHints` | `true` if the prefetch target requires client hints. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder` | This builder instance for chaining. |

### setVariationsId

Added in [1.17.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.17.0)

```
@Profile.ExperimentalUrlPrefetch
public @NonNull PrefetchParameters.Builder setVariationsId(@Nullable Integer variationsId)
```

Sets an optional variations ID to associate with this prefetch request.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Integer.html variationsId` | An Integer ID for this prefetch configuration, or `null` if no specific variations ID is applicable. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/webkit/PrefetchParameters.Builder` | This builder instance for chaining. |