# WebStorageCompat

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

*** ** * ** ***


```
public final class WebStorageCompat
```

<br />

*** ** * ** ***

Compatibility class for `https://developer.android.com/reference/android/webkit/WebStorage.html` that introduces new methods to completely clear data.

WebStorage is tied to WebView `https://developer.android.com/reference/androidx/webkit/Profile` instances. If your app uses multiple profiles, then you should ensure that you clear data for all relevant profiles.

A `https://developer.android.com/reference/android/webkit/WebStorage.html` instance can be obtained from `https://developer.android.com/reference/android/webkit/WebStorage.html#getInstance()`, or from `https://developer.android.com/reference/androidx/webkit/Profile#getWebStorage()` if your app is using multiple WebView profiles.

## Summary

| ### Public methods |
|---|---|
| `static void` | `@https://developer.android.com/reference/androidx/annotation/RequiresFeature(name = https://developer.android.com/reference/androidx/webkit/WebViewFeature.DELETE_BROWSING_DATA, enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported") @https://developer.android.com/reference/androidx/annotation/UiThread https://developer.android.com/reference/androidx/webkit/WebStorageCompat#deleteBrowsingData(android.webkit.WebStorage,java.lang.Runnable)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/webkit/WebStorage.html instance, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Runnable.html doneCallback )` Delete all data stored by websites in the given WebStorage instance. |
| `static void` | `@https://developer.android.com/reference/androidx/annotation/RequiresFeature(name = https://developer.android.com/reference/androidx/webkit/WebViewFeature.DELETE_BROWSING_DATA, enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported") @https://developer.android.com/reference/androidx/annotation/UiThread https://developer.android.com/reference/androidx/webkit/WebStorageCompat#deleteBrowsingData(android.webkit.WebStorage,java.util.concurrent.Executor,java.lang.Runnable)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/webkit/WebStorage.html instance, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Runnable.html doneCallback )` Delete all data stored by websites in the given WebStorage instance. |
| `static @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html` | `@https://developer.android.com/reference/androidx/annotation/RequiresFeature(name = https://developer.android.com/reference/androidx/webkit/WebViewFeature.DELETE_BROWSING_DATA, enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported") @https://developer.android.com/reference/androidx/annotation/UiThread https://developer.android.com/reference/androidx/webkit/WebStorageCompat#deleteBrowsingDataForSite(android.webkit.WebStorage,java.lang.String,java.lang.Runnable)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/webkit/WebStorage.html instance, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html site, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Runnable.html doneCallback )` Delete data stored by web storage APIs for the specified domain in the given WebStorage instance. |
| `static @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html` | `@https://developer.android.com/reference/androidx/annotation/RequiresFeature(name = https://developer.android.com/reference/androidx/webkit/WebViewFeature.DELETE_BROWSING_DATA, enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported") @https://developer.android.com/reference/androidx/annotation/UiThread https://developer.android.com/reference/androidx/webkit/WebStorageCompat#deleteBrowsingDataForSite(android.webkit.WebStorage,java.lang.String,java.util.concurrent.Executor,java.lang.Runnable)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/webkit/WebStorage.html instance, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html site, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Runnable.html doneCallback )` Delete data stored by web storage APIs for the specified domain in the given WebStorage instance. |

## Public methods

### deleteBrowsingData

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

```
@RequiresFeature(name = WebViewFeature.DELETE_BROWSING_DATA, enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
@UiThread
public static void deleteBrowsingData(
    @NonNull WebStorage instance,
    @NonNull Runnable doneCallback
)
```

Delete all data stored by websites in the given WebStorage instance.

This method functions as `https://developer.android.com/reference/androidx/webkit/WebStorageCompat#deleteBrowsingData(android.webkit.WebStorage,java.util.concurrent.Executor,java.lang.Runnable)`, but invokes the `doneCallback` on the UI thread.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException.html` | if the `https://developer.android.com/reference/androidx/webkit/WebViewFeature#DELETE_BROWSING_DATA()` feature is not supported. This should be checked before use with `https://developer.android.com/reference/androidx/webkit/WebViewFeature#isFeatureSupported(java.lang.String)`. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/webkit/WebStorageCompat#deleteBrowsingData(android.webkit.WebStorage,java.util.concurrent.Executor,java.lang.Runnable)` |   |

### deleteBrowsingData

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

```
@RequiresFeature(name = WebViewFeature.DELETE_BROWSING_DATA, enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
@UiThread
public static void deleteBrowsingData(
    @NonNull WebStorage instance,
    @NonNull Executor executor,
    @NonNull Runnable doneCallback
)
```

Delete all data stored by websites in the given WebStorage instance. This includes network cache, cookies, and any JavaScript-readable storage.

This method will delete all data that was stored before being invoked. Deletion is not an atomic operation, so it may also delete data that is stored during deletion, but this is not guaranteed.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/webkit/WebStorage.html instance` | WebStorage instance to delete all data in. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor` | Executor to run the `doneCallback`. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Runnable.html doneCallback` | callback that will be invoked when deletion is complete. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException.html` | if the `https://developer.android.com/reference/androidx/webkit/WebViewFeature#DELETE_BROWSING_DATA()` feature is not supported. This should be checked before use with `https://developer.android.com/reference/androidx/webkit/WebViewFeature#isFeatureSupported(java.lang.String)`. |

### deleteBrowsingDataForSite

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

```
@RequiresFeature(name = WebViewFeature.DELETE_BROWSING_DATA, enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
@UiThread
public static @NonNull String deleteBrowsingDataForSite(
    @NonNull WebStorage instance,
    @NonNull String site,
    @NonNull Runnable doneCallback
)
```

Delete data stored by web storage APIs for the specified domain in the given WebStorage instance.

This method functions as `https://developer.android.com/reference/androidx/webkit/WebStorageCompat#deleteBrowsingDataForSite(android.webkit.WebStorage,java.lang.String,java.util.concurrent.Executor,java.lang.Runnable)`, but invokes the `doneCallback` on the UI thread.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException.html` | if the `https://developer.android.com/reference/androidx/webkit/WebViewFeature#DELETE_BROWSING_DATA()` feature is not supported. This should be checked before use with `https://developer.android.com/reference/androidx/webkit/WebViewFeature#isFeatureSupported(java.lang.String)`. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/webkit/WebStorageCompat#deleteBrowsingDataForSite(android.webkit.WebStorage,java.lang.String,java.util.concurrent.Executor,java.lang.Runnable)` |   |

### deleteBrowsingDataForSite

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

```
@RequiresFeature(name = WebViewFeature.DELETE_BROWSING_DATA, enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
@UiThread
public static @NonNull String deleteBrowsingDataForSite(
    @NonNull WebStorage instance,
    @NonNull String site,
    @NonNull Executor executor,
    @NonNull Runnable doneCallback
)
```

Delete data stored by web storage APIs for the specified domain in the given WebStorage instance. This includes network cache, cookies, and any JavaScript-readable storage.

For partitioned storage, this method will remove all data owned by the site, as well as all storage for content embedded in the specified site, e.g. iframed content.

This method deletes storage for the [site](https://developer.mozilla.org/en-US/docs/Glossary/Site) part of the input argument. This means that if the input argument contains a subdomain (for example `www.example.com`), then this method will delete everything belonging to `example.com`.

This method will delete all data that was stored before being invoked. Deletion is not an atomic operation, so it may also delete data that is stored during deletion, but this is not guaranteed.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/webkit/WebStorage.html instance` | WebStorage instance to delete all data in. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html site` | The site to delete for. This can be a domain name, or a full URL. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor` | Executor to run the `doneCallback`. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Runnable.html doneCallback` | callback that will be invoked when deletion is complete. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html` | The domain that was used for deletion. This will be the top-level domain part of the `domain` parameter. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException.html` | if unable to parse the `domain` as a domain name. |
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException.html` | if the `https://developer.android.com/reference/androidx/webkit/WebViewFeature#DELETE_BROWSING_DATA()` feature is not supported. This should be checked before use with `https://developer.android.com/reference/androidx/webkit/WebViewFeature#isFeatureSupported(java.lang.String)`. |