From e0a01a9637b1688403bc50f88346b0de42f5edfa Mon Sep 17 00:00:00 2001 From: "nakirekommula@google.com" Date: Tue, 8 Aug 2023 13:58:14 -0700 Subject: [PATCH 1/5] Remove query parameters from native image urls that may download a webp image --- gma/src/android/native_ad_image_android.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gma/src/android/native_ad_image_android.cc b/gma/src/android/native_ad_image_android.cc index 8c63c9b244..fde82973a2 100644 --- a/gma/src/android/native_ad_image_android.cc +++ b/gma/src/android/native_ad_image_android.cc @@ -71,6 +71,8 @@ NativeAdImage::NativeAdImage( FIREBASE_ASSERT(j_uri); internal_->uri = util::JniUriToString(env, j_uri); + internal_->uri = std::regex_replace(internal_->uri, std::regex("-rw"), ""); + // NativeAdImage scale. jdouble j_scale = env->CallDoubleMethod(internal_->native_ad_image, From 92660dbeeba2f60ac5e4cd361885b07c746a354b Mon Sep 17 00:00:00 2001 From: "nakirekommula@google.com" Date: Tue, 8 Aug 2023 15:26:19 -0700 Subject: [PATCH 2/5] include regex import --- gma/src/android/native_ad_image_android.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/gma/src/android/native_ad_image_android.cc b/gma/src/android/native_ad_image_android.cc index fde82973a2..b709fbefa6 100644 --- a/gma/src/android/native_ad_image_android.cc +++ b/gma/src/android/native_ad_image_android.cc @@ -19,6 +19,7 @@ #include #include +#include #include #include "gma/src/android/gma_android.h" From d6e6adfdc05f162c98f053d27c7802127c67203c Mon Sep 17 00:00:00 2001 From: "nakirekommula@google.com" Date: Thu, 10 Aug 2023 11:38:35 -0700 Subject: [PATCH 3/5] Add comment to state the necessity for trimming native image urls. --- gma/src/android/native_ad_image_android.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gma/src/android/native_ad_image_android.cc b/gma/src/android/native_ad_image_android.cc index b709fbefa6..d1b969da4a 100644 --- a/gma/src/android/native_ad_image_android.cc +++ b/gma/src/android/native_ad_image_android.cc @@ -72,6 +72,8 @@ NativeAdImage::NativeAdImage( FIREBASE_ASSERT(j_uri); internal_->uri = util::JniUriToString(env, j_uri); + // Images requested with an android user agent may return webp images. Trim + // webp parameter from image url to get the original JPG/PNG image. internal_->uri = std::regex_replace(internal_->uri, std::regex("-rw"), ""); // NativeAdImage scale. From c7fad78fe043783503b28176ec1a0efc977412d2 Mon Sep 17 00:00:00 2001 From: "nakirekommula@google.com" Date: Thu, 10 Aug 2023 14:16:35 -0700 Subject: [PATCH 4/5] Address review comments. --- gma/src/android/native_ad_image_android.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gma/src/android/native_ad_image_android.cc b/gma/src/android/native_ad_image_android.cc index d1b969da4a..b5bfbaf8db 100644 --- a/gma/src/android/native_ad_image_android.cc +++ b/gma/src/android/native_ad_image_android.cc @@ -19,7 +19,6 @@ #include #include -#include #include #include "gma/src/android/gma_android.h" @@ -74,7 +73,10 @@ NativeAdImage::NativeAdImage( // Images requested with an android user agent may return webp images. Trim // webp parameter from image url to get the original JPG/PNG image. - internal_->uri = std::regex_replace(internal_->uri, std::regex("-rw"), ""); + std::size_t webp_pos = internal_->uri.find("-rw"); + if (webp_pos != std::string::npos) { + internal_->uri.replace(webp_pos, 3, ""); + } // NativeAdImage scale. jdouble j_scale = From ab29618808fceef1ddef9862ca1503de90b3ac36 Mon Sep 17 00:00:00 2001 From: "nakirekommula@google.com" Date: Thu, 10 Aug 2023 15:50:55 -0700 Subject: [PATCH 5/5] Use robust logic to trim webp parameter --- gma/src/android/native_ad_image_android.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gma/src/android/native_ad_image_android.cc b/gma/src/android/native_ad_image_android.cc index b5bfbaf8db..23af8c4fb2 100644 --- a/gma/src/android/native_ad_image_android.cc +++ b/gma/src/android/native_ad_image_android.cc @@ -73,8 +73,10 @@ NativeAdImage::NativeAdImage( // Images requested with an android user agent may return webp images. Trim // webp parameter from image url to get the original JPG/PNG image. - std::size_t webp_pos = internal_->uri.find("-rw"); - if (webp_pos != std::string::npos) { + std::size_t eq_pos = internal_->uri.rfind("="); + std::size_t webp_pos = internal_->uri.rfind("-rw"); + if (webp_pos != std::string::npos && eq_pos != std::string::npos && + webp_pos > eq_pos) { internal_->uri.replace(webp_pos, 3, ""); }