diff --git a/app/src/main/java/org/signal/glide/Log.java b/app/src/main/java/org/signal/glide/Log.java index aa41086a34..b2c6037b3a 100644 --- a/app/src/main/java/org/signal/glide/Log.java +++ b/app/src/main/java/org/signal/glide/Log.java @@ -24,7 +24,7 @@ public final class Log { } public static void e(@NonNull String tag, @NonNull String message) { - e(tag, message, null); + SignalGlideCodecs.getLogProvider().e(tag, message, null); } public static void e(@NonNull String tag, @NonNull String message, @Nullable Throwable throwable) { diff --git a/app/src/main/java/org/signal/glide/apng/decode/APNGDecoder.java b/app/src/main/java/org/signal/glide/apng/decode/APNGDecoder.java index cf1040320a..a8e50ab738 100644 --- a/app/src/main/java/org/signal/glide/apng/decode/APNGDecoder.java +++ b/app/src/main/java/org/signal/glide/apng/decode/APNGDecoder.java @@ -12,7 +12,7 @@ import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.Rect; -import org.signal.glide.Log; +import org.signal.core.util.logging.Log; import org.signal.glide.apng.io.APNGReader; import org.signal.glide.apng.io.APNGWriter; import org.signal.glide.common.decode.Frame; diff --git a/app/src/main/java/org/signal/glide/common/FrameAnimationDrawable.java b/app/src/main/java/org/signal/glide/common/FrameAnimationDrawable.java index 57ba5a68b0..7f2353faa7 100644 --- a/app/src/main/java/org/signal/glide/common/FrameAnimationDrawable.java +++ b/app/src/main/java/org/signal/glide/common/FrameAnimationDrawable.java @@ -21,7 +21,7 @@ import android.os.Message; import androidx.annotation.NonNull; import androidx.vectordrawable.graphics.drawable.Animatable2Compat; -import org.signal.glide.Log; +import org.signal.core.util.logging.Log; import org.signal.glide.common.decode.FrameSeqDecoder; import org.signal.glide.common.loader.Loader; diff --git a/app/src/main/java/org/signal/glide/common/decode/FrameSeqDecoder.java b/app/src/main/java/org/signal/glide/common/decode/FrameSeqDecoder.java index 2834ee6186..87ea2e3aa2 100644 --- a/app/src/main/java/org/signal/glide/common/decode/FrameSeqDecoder.java +++ b/app/src/main/java/org/signal/glide/common/decode/FrameSeqDecoder.java @@ -15,7 +15,7 @@ import android.os.Looper; import androidx.annotation.Nullable; import androidx.annotation.WorkerThread; -import org.signal.glide.Log; +import org.signal.core.util.logging.Log; import org.signal.glide.common.executor.FrameDecoderExecutor; import org.signal.glide.common.io.Reader; import org.signal.glide.common.io.Writer; diff --git a/lintchecks/src/main/java/org/signal/lint/SignalLogDetector.java b/lintchecks/src/main/java/org/signal/lint/SignalLogDetector.java index 08cb1819f4..415fb21f61 100644 --- a/lintchecks/src/main/java/org/signal/lint/SignalLogDetector.java +++ b/lintchecks/src/main/java/org/signal/lint/SignalLogDetector.java @@ -60,6 +60,11 @@ public final class SignalLogDetector extends Detector implements Detector.UastSc context.report(LOG_NOT_SIGNAL, call, context.getLocation(call), "Using 'android.util.Log' instead of a Signal Logger", fix); } + if (evaluator.isMemberInClass(method, "org.signal.glide.Log")) { + LintFix fix = quickFixIssueLog(call); + context.report(LOG_NOT_SIGNAL, call, context.getLocation(call), "Using 'org.signal.glide.Log' instead of a Signal Logger", fix); + } + if (evaluator.isMemberInClass(method, "org.whispersystems.libsignal.logging.Log")) { LintFix fix = quickFixIssueLog(call); context.report(LOG_NOT_APP, call, context.getLocation(call), "Using Signal server logger instead of app level Logger", fix); diff --git a/lintchecks/src/test/java/org/signal/lint/LogDetectorTest.java b/lintchecks/src/test/java/org/signal/lint/LogDetectorTest.java index 627b9fb498..e8705b3fee 100644 --- a/lintchecks/src/test/java/org/signal/lint/LogDetectorTest.java +++ b/lintchecks/src/test/java/org/signal/lint/LogDetectorTest.java @@ -17,6 +17,7 @@ public final class LogDetectorTest { private static final TestFile serviceLogStub = java(readResourceAsString("ServiceLogStub.java")); private static final TestFile appLogStub = java(readResourceAsString("AppLogStub.java")); + private static final TestFile glideLogStub = java(readResourceAsString("GlideLogStub.java")); @Test public void androidLogUsed_LogNotSignal_2_args() { @@ -153,6 +154,30 @@ public final class LogDetectorTest { .expectFixDiffs(""); } + @Test + public void glideLogUsed_LogNotSignal_2_args() { + lint() + .files(glideLogStub, + java("package foo;\n" + + "import org.signal.glide.Log;\n" + + "public class Example {\n" + + " public void log() {\n" + + " Log.d(\"TAG\", \"msg\");\n" + + " }\n" + + "}") + ) + .issues(SignalLogDetector.LOG_NOT_SIGNAL) + .run() + .expect("src/foo/Example.java:5: Error: Using 'org.signal.glide.Log' instead of a Signal Logger [LogNotSignal]\n" + + " Log.d(\"TAG\", \"msg\");\n" + + " ~~~~~~~~~~~~~~~~~~~\n" + + "1 errors, 0 warnings") + .expectFixDiffs("Fix for src/foo/Example.java line 5: Replace with org.signal.core.util.logging.Log.d(\"TAG\", \"msg\"):\n" + + "@@ -5 +5\n" + + "- Log.d(\"TAG\", \"msg\");\n" + + "+ org.signal.core.util.logging.Log.d(\"TAG\", \"msg\");"); + } + private static String readResourceAsString(String resourceName) { InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream(resourceName); assertNotNull(inputStream); diff --git a/lintchecks/src/test/resources/GlideLogStub.java b/lintchecks/src/test/resources/GlideLogStub.java new file mode 100644 index 0000000000..f7da3f0344 --- /dev/null +++ b/lintchecks/src/test/resources/GlideLogStub.java @@ -0,0 +1,41 @@ +package org.signal.glide; + +public class Log { + + public static String tag(Class clazz) { + return ""; + } + + public static void v(String tag, String msg) { + } + + public static void v(String tag, String msg, Throwable tr) { + } + + public static void d(String tag, String msg) { + } + + public static void d(String tag, String msg, Throwable tr) { + } + + public static void i(String tag, String msg) { + } + + public static void i(String tag, String msg, Throwable tr) { + } + + public static void w(String tag, String msg) { + } + + public static void w(String tag, String msg, Throwable tr) { + } + + public static void w(String tag, Throwable tr) { + } + + public static void e(String tag, String msg) { + } + + public static void e(String tag, String msg, Throwable tr) { + } +}