Skip to content

Commit 4652e27

Browse files
Update RNCWebViewManager.java
Add cookie manager
1 parent 934199d commit 4652e27

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManager.java

+31
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import android.webkit.WebSettings;
2525
import android.webkit.WebView;
2626
import android.webkit.WebViewClient;
27+
import android.webkit.CookieSyncManager;
2728

2829
import com.facebook.react.bridge.Arguments;
2930
import com.facebook.react.bridge.LifecycleEventListener;
@@ -368,6 +369,32 @@ public void setMessagingEnabled(WebView view, boolean enabled) {
368369
((RNCWebView) view).setMessagingEnabled(enabled);
369370
}
370371

372+
public void setCookies(WebView view, @Nullable ReadableMap cookieAndDomain) {
373+
// key should be the cookie, value should be domain
374+
clearCookies(view);
375+
ReadableMapKeySetIterator iterator = cookieAndDomain.keySetIterator();
376+
while (iterator.hasNextKey()) {
377+
String key = iterator.nextKey();
378+
CookieManager.getInstance().setCookie(cookieAndDomain.getString(key), key);
379+
}
380+
}
381+
382+
private void clearCookies(WebView view) {
383+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
384+
CookieManager.getInstance().removeAllCookies(null);
385+
CookieManager.getInstance().flush();
386+
} else {
387+
ReactContext reactContext = (ReactContext) view.getContext();
388+
CookieSyncManager cookieSyncMngr=CookieSyncManager.createInstance(reactContext);
389+
cookieSyncMngr.startSync();
390+
CookieManager cookieManager=CookieManager.getInstance();
391+
cookieManager.removeAllCookie();
392+
cookieManager.removeSessionCookie();
393+
cookieSyncMngr.stopSync();
394+
cookieSyncMngr.sync();
395+
}
396+
}
397+
371398
@ReactProp(name = "source")
372399
public void setSource(WebView view, @Nullable ReadableMap source) {
373400
if (source != null) {
@@ -382,6 +409,9 @@ public void setSource(WebView view, @Nullable ReadableMap source) {
382409
return;
383410
}
384411
if (source.hasKey("uri")) {
412+
if (source.hasKey("setCookies")) {
413+
setCookies(view, source.getMap("setCookies"));
414+
}
385415
String url = source.getString("uri");
386416
String previousUrl = view.getUrl();
387417
if (previousUrl != null && previousUrl.equals(url)) {
@@ -797,3 +827,4 @@ public void postMessage(String message) {
797827
}
798828
}
799829
}
830+

0 commit comments

Comments
 (0)