Skip to content

Commit

Permalink
Replace custom XmlFormat with Fresco built-in
Browse files Browse the repository at this point in the history
Summary:
Replaces the custom `XmlFormat` introduced in facebook#46711 with the built-in support from Fresco. Fresco utilizes a very similar approach to load binary XML files and offers the XML format as part of its built-in `DefaultImageFormats`

Changelog:
[Android][Changed] - Replaced custom XML decoder with Fresco's built-in decoder

Differential Revision: D66553842
  • Loading branch information
Abbondanzo authored and facebook-github-bot committed Jan 8, 2025
1 parent a62230a commit 511ca10
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 165 deletions.
6 changes: 0 additions & 6 deletions packages/react-native/ReactAndroid/api/ReactAndroid.api
Original file line number Diff line number Diff line change
Expand Up @@ -3311,12 +3311,6 @@ public final class com/facebook/react/modules/fresco/SystraceRequestListener : c
public fun requiresExtraMap (Ljava/lang/String;)Z
}

public final class com/facebook/react/modules/fresco/XmlFormat {
public static final field INSTANCE Lcom/facebook/react/modules/fresco/XmlFormat;
public final fun addDecodingCapability (Lcom/facebook/imagepipeline/decoder/ImageDecoderConfig$Builder;Landroid/content/Context;)Lcom/facebook/imagepipeline/decoder/ImageDecoderConfig$Builder;
public final fun getDrawableFactory ()Lcom/facebook/imagepipeline/drawable/DrawableFactory;
}

public final class com/facebook/react/modules/i18nmanager/I18nManagerModule : com/facebook/fbreact/specs/NativeI18nManagerSpec {
public static final field Companion Lcom/facebook/react/modules/i18nmanager/I18nManagerModule$Companion;
public static final field NAME Ljava/lang/String;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,10 @@ package com.facebook.react.modules.fresco
import com.facebook.common.logging.FLog
import com.facebook.drawee.backends.pipeline.DraweeConfig
import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.imagepipeline.backends.okhttp3.OkHttpImagePipelineConfigFactory.newBuilder
import com.facebook.imagepipeline.backends.okhttp3.OkHttpImagePipelineConfigFactory
import com.facebook.imagepipeline.core.DownsampleMode
import com.facebook.imagepipeline.core.ImagePipeline
import com.facebook.imagepipeline.core.ImagePipelineConfig
import com.facebook.imagepipeline.decoder.ImageDecoderConfig
import com.facebook.imagepipeline.listener.RequestListener
import com.facebook.react.bridge.LifecycleEventListener
import com.facebook.react.bridge.ReactApplicationContext
Expand Down Expand Up @@ -80,9 +79,6 @@ constructor(
if (!hasBeenInitialized()) {
val pipelineConfig = config ?: getDefaultConfig(reactContext)
val draweeConfigBuilder = DraweeConfig.newBuilder()
if (ReactNativeFeatureFlags.loadVectorDrawablesOnImages()) {
draweeConfigBuilder.addCustomDrawableFactory(XmlFormat.getDrawableFactory())
}
Fresco.initialize(
reactContext.applicationContext,
pipelineConfig,
Expand Down Expand Up @@ -158,22 +154,20 @@ constructor(
requestListeners.add(SystraceRequestListener())
val client = OkHttpClientProvider.createClient()

// Add support for XML drawable images
val decoderConfigBuilder = ImageDecoderConfig.Builder()
if (ReactNativeFeatureFlags.loadVectorDrawablesOnImages()) {
XmlFormat.addDecodingCapability(decoderConfigBuilder, context)
}

// make sure to forward cookies for any requests via the okHttpClient
// so that image requests to endpoints that use cookies still work
val container = OkHttpCompat.getCookieJarContainer(client)
val handler = ForwardingCookieHandler()
container.setCookieJar(JavaNetCookieJar(handler))
return newBuilder(context.applicationContext, client)
.setNetworkFetcher(ReactOkHttpNetworkFetcher(client))
.setImageDecoderConfig(decoderConfigBuilder.build())
.setDownsampleMode(DownsampleMode.AUTO)
.setRequestListeners(requestListeners)
val builder =
OkHttpImagePipelineConfigFactory.newBuilder(context.applicationContext, client)
.setNetworkFetcher(ReactOkHttpNetworkFetcher(client))
.setDownsampleMode(DownsampleMode.AUTO)
.setRequestListeners(requestListeners)
builder
.experiment()
.setBinaryXmlEnabled(ReactNativeFeatureFlags.loadVectorDrawablesOnImages())
return builder
}
}
}

This file was deleted.

0 comments on commit 511ca10

Please sign in to comment.