mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Convert com.facebook.react.modules.network.ReactCookieJarContainer to Kotlin (#48089)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/48089 Planning to make some changes here for perf, but converting to Kotlin first Changelog: [Android][Removed] Made ReactCookieJarContainer internal. Reviewed By: tdn120 Differential Revision: D66724567 fbshipit-source-id: bf96f8df8a5c901b47c371c7ed16b7a81de22ee7
This commit is contained in:
committed by
Facebook GitHub Bot
parent
e750059d98
commit
18ebea533d
@@ -3511,14 +3511,6 @@ public class com/facebook/react/modules/network/ProgressResponseBody : okhttp3/R
|
||||
public fun totalBytesRead ()J
|
||||
}
|
||||
|
||||
public class com/facebook/react/modules/network/ReactCookieJarContainer : com/facebook/react/modules/network/CookieJarContainer {
|
||||
public fun <init> ()V
|
||||
public fun loadForRequest (Lokhttp3/HttpUrl;)Ljava/util/List;
|
||||
public fun removeCookieJar ()V
|
||||
public fun saveFromResponse (Lokhttp3/HttpUrl;Ljava/util/List;)V
|
||||
public fun setCookieJar (Lokhttp3/CookieJar;)V
|
||||
}
|
||||
|
||||
public class com/facebook/react/modules/network/ResponseUtil {
|
||||
public fun <init> ()V
|
||||
public static fun onDataReceived (Lcom/facebook/react/bridge/ReactApplicationContext;ILcom/facebook/react/bridge/WritableMap;)V
|
||||
|
||||
-17
@@ -1,17 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
package com.facebook.react.modules.network;
|
||||
|
||||
import okhttp3.CookieJar;
|
||||
|
||||
public interface CookieJarContainer extends CookieJar {
|
||||
|
||||
void setCookieJar(CookieJar cookieJar);
|
||||
|
||||
void removeCookieJar();
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
package com.facebook.react.modules.network
|
||||
|
||||
import okhttp3.CookieJar
|
||||
|
||||
public interface CookieJarContainer : CookieJar {
|
||||
public fun setCookieJar(cookieJar: CookieJar)
|
||||
|
||||
public fun removeCookieJar()
|
||||
}
|
||||
-58
@@ -1,58 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
package com.facebook.react.modules.network;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import okhttp3.Cookie;
|
||||
import okhttp3.CookieJar;
|
||||
import okhttp3.Headers;
|
||||
import okhttp3.HttpUrl;
|
||||
|
||||
/** Basic okhttp3 CookieJar container */
|
||||
public class ReactCookieJarContainer implements CookieJarContainer {
|
||||
|
||||
@Nullable private CookieJar cookieJar = null;
|
||||
|
||||
@Override
|
||||
public void setCookieJar(CookieJar cookieJar) {
|
||||
this.cookieJar = cookieJar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeCookieJar() {
|
||||
cookieJar = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
|
||||
if (cookieJar != null) {
|
||||
cookieJar.saveFromResponse(url, cookies);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Cookie> loadForRequest(HttpUrl url) {
|
||||
if (cookieJar != null) {
|
||||
List<Cookie> cookies = cookieJar.loadForRequest(url);
|
||||
ArrayList<Cookie> validatedCookies = new ArrayList<>();
|
||||
for (Cookie cookie : cookies) {
|
||||
try {
|
||||
Headers.Builder cookieChecker = new Headers.Builder();
|
||||
cookieChecker.add(cookie.name(), cookie.value());
|
||||
validatedCookies.add(cookie);
|
||||
} catch (IllegalArgumentException ignored) {
|
||||
}
|
||||
}
|
||||
return validatedCookies;
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
@file:Suppress("DEPRECATION_ERROR") // Conflicting okhttp versions
|
||||
|
||||
package com.facebook.react.modules.network
|
||||
|
||||
import java.util.ArrayList
|
||||
import okhttp3.Cookie
|
||||
import okhttp3.CookieJar
|
||||
import okhttp3.Headers
|
||||
import okhttp3.HttpUrl
|
||||
|
||||
/** Basic okhttp3 CookieJar container */
|
||||
internal class ReactCookieJarContainer : CookieJarContainer {
|
||||
|
||||
private var cookieJar: CookieJar? = null
|
||||
|
||||
override fun setCookieJar(cookieJar: CookieJar) {
|
||||
this.cookieJar = cookieJar
|
||||
}
|
||||
|
||||
override fun removeCookieJar() {
|
||||
cookieJar = null
|
||||
}
|
||||
|
||||
override fun saveFromResponse(url: HttpUrl, cookies: List<Cookie>) {
|
||||
cookieJar?.saveFromResponse(url, cookies)
|
||||
}
|
||||
|
||||
override fun loadForRequest(url: HttpUrl): List<Cookie> {
|
||||
val cookieJar = cookieJar ?: return emptyList()
|
||||
val cookies = cookieJar.loadForRequest(url)
|
||||
val validatedCookies = ArrayList<Cookie>()
|
||||
for (cookie in cookies) {
|
||||
try {
|
||||
val cookieChecker = Headers.Builder()
|
||||
cookieChecker.add(cookie.name(), cookie.value())
|
||||
validatedCookies.add(cookie)
|
||||
} catch (ignored: IllegalArgumentException) {}
|
||||
}
|
||||
return validatedCookies
|
||||
}
|
||||
}
|
||||
+7
-1
@@ -18,6 +18,12 @@ import org.mockito.Mockito.mock
|
||||
import org.mockito.Mockito.`when` as whenever
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
|
||||
/**
|
||||
* Returns Mockito.any() as nullable type to avoid java.lang.IllegalStateException when null is
|
||||
* returned.
|
||||
*/
|
||||
private fun <T> nonNullAny(type: Class<T>): T = any(type)
|
||||
|
||||
/** Tests for {@link NetworkingModule}. */
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
class ReactCookieJarContainerTest {
|
||||
@@ -33,7 +39,7 @@ class ReactCookieJarContainerTest {
|
||||
fun testEmptyCookies() {
|
||||
val jarContainer: ReactCookieJarContainer = mock(ReactCookieJarContainer::class.java)
|
||||
val cookies: List<Cookie> = emptyList()
|
||||
whenever(jarContainer.loadForRequest(any(HttpUrl::class.java))).thenReturn(cookies)
|
||||
whenever(jarContainer.loadForRequest(nonNullAny(HttpUrl::class.java))).thenReturn(cookies)
|
||||
assertThat(jarContainer.loadForRequest(httpUrl).size).isEqualTo(0)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user