Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,21 @@ public class CookieManagerModule extends ReactContextBaseJavaModule {
private static final String CLEAR_BY_NAME_NOT_SUPPORTED = "Cannot remove a single cookie by name on Android";
private static final String INVALID_DOMAINS = "Cookie URL host %s and domain %s mismatched. The cookie won't set correctly.";

private CookieManager mCookieManager;
private CookieSyncManager mCookieSyncManager;

CookieManagerModule(ReactApplicationContext context) {
super(context);
this.mCookieSyncManager = CookieSyncManager.createInstance(context);
this.mCookieManager = CookieManager.getInstance();
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lazy get CookieManager instance - basically try to only crash when actually using the library

mCookieManager.setAcceptCookie(true);
}

private CookieManager getCookieManager() throws Exception {
try {
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
return cookieManager;
} catch (Exception e) {
throw new Exception(e);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make it explicit that CookieManager.getInstance can throw

}
}

public String getName() {
Expand Down Expand Up @@ -88,7 +95,7 @@ public void setFromResponse(String url, String cookie, final Promise promise) {
@ReactMethod
public void flush(Promise promise) {
try {
mCookieManager.flush();
getCookieManager().flush();
promise.resolve(true);
} catch (Exception e) {
promise.reject(e);
Expand All @@ -112,7 +119,7 @@ public void get(String url, Boolean useWebKit, Promise promise) {
return;
}
try {
String cookiesString = mCookieManager.getCookie(url);
String cookiesString = getCookieManager().getCookie(url);

WritableMap cookieMap = createCookieList(cookiesString);
promise.resolve(cookieMap);
Expand All @@ -128,36 +135,42 @@ public void clearByName(String url, String name, Boolean useWebKit, final Promis

@ReactMethod
public void clearAll(Boolean useWebKit, final Promise promise) {
if (USES_LEGACY_STORE) {
mCookieManager.removeAllCookie();
mCookieManager.removeSessionCookie();
mCookieSyncManager.sync();
promise.resolve(true);
} else {
mCookieManager.removeAllCookies(new ValueCallback<Boolean>() {
@Override
public void onReceiveValue(Boolean value) {
promise.resolve(value);
}
});
mCookieManager.flush();
try {
CookieManager cookieManager = getCookieManager();
if (USES_LEGACY_STORE) {
cookieManager.removeAllCookie();
cookieManager.removeSessionCookie();
mCookieSyncManager.sync();
promise.resolve(true);
} else {
cookieManager.removeAllCookies(new ValueCallback<Boolean>() {
@Override
public void onReceiveValue(Boolean value) {
promise.resolve(value);
}
});
cookieManager.flush();
}
} catch (Exception e) {
promise.reject(e);
}
}

private void addCookies(String url, String cookieString, final Promise promise) {
try {
CookieManager cookieManager = getCookieManager();
if (USES_LEGACY_STORE) {
mCookieManager.setCookie(url, cookieString);
cookieManager.setCookie(url, cookieString);
mCookieSyncManager.sync();
promise.resolve(true);
} else {
mCookieManager.setCookie(url, cookieString, new ValueCallback<Boolean>() {
cookieManager.setCookie(url, cookieString, new ValueCallback<Boolean>() {
@Override
public void onReceiveValue(Boolean value) {
promise.resolve(value);
}
});
mCookieManager.flush();
cookieManager.flush();
}
} catch (Exception e) {
promise.reject(e);
Expand Down