Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9486eb7e authored by Charles Yo's avatar Charles Yo
Browse files

Revert "Always remove message string argument from processed calls"

Revert submission 28147757-no-processing-protolog

Reason for revert: b/351458758

Reverted changes: /q/submissionid:28147757-no-processing-protolog

Change-Id: Id363046e889fc9d13410517de863d944e02a9cc1
parent 3220edea
Loading
Loading
Loading
Loading
+10 −9
Original line number Diff line number Diff line
@@ -130,27 +130,28 @@ class SourceTransformer(
        val hash = CodeUtils.hash(packagePath, messageString, level, group)

        val newCall = call.clone()
        // Remove message string.
        // Out: ProtoLog.e(GROUP, args)
        newCall.arguments.removeAt(1)
        if (!group.textEnabled) {
            // Remove message string if text logging is not enabled by default.
            // Out: ProtoLog.e(GROUP, null, arg)
            newCall.arguments[1].replace(NameExpr("null"))
        }
        // Insert message string hash as a second argument.
        // Out: ProtoLog.e(GROUP, 1234, args)
        // Out: ProtoLog.e(GROUP, 1234, null, arg)
        newCall.arguments.add(1, LongLiteralExpr("" + hash + "L"))
        val argTypes = LogDataType.parseFormatString(messageString)
        val typeMask = LogDataType.logDataTypesToBitMask(argTypes)
        // Insert bitmap representing which Number parameters are to be considered as
        // floating point numbers.
        // Out: ProtoLog.e(GROUP, 1234, 0, args)
        // Out: ProtoLog.e(GROUP, 1234, 0, null, arg)
        newCall.arguments.add(2, IntegerLiteralExpr(typeMask))
        // Replace call to a stub method with an actual implementation.
        // Out: ProtoLogImpl.e(GROUP, 1234, 0, args)
        // Out: ProtoLogImpl.e(GROUP, 1234, null, arg)
        newCall.setScope(protoLogImplClassNode)
        if (argTypes.size != call.arguments.size - 2) {
            throw InvalidProtoLogCallException(
                "Number of arguments (${argTypes.size} does not match format" +
                        " string in: $call", ParsingContext(path, call))
        }
        val argsOffset = 3
        val blockStmt = BlockStmt()
        if (argTypes.isNotEmpty()) {
            // Assign every argument to a variable to check its type in compile time
@@ -159,9 +160,9 @@ class SourceTransformer(
            argTypes.forEachIndexed { idx, type ->
                val varName = "protoLogParam$idx"
                val declaration = VariableDeclarator(getASTTypeForDataType(type), varName,
                    getConversionForType(type)(newCall.arguments[idx + argsOffset].clone()))
                    getConversionForType(type)(newCall.arguments[idx + 4].clone()))
                blockStmt.addStatement(ExpressionStmt(VariableDeclarationExpr(declaration)))
                newCall.setArgument(idx + argsOffset, NameExpr(SimpleName(varName)))
                newCall.setArgument(idx + 4, NameExpr(SimpleName(varName)))
            }
        } else {
            // Assign (Object[])null as the vararg parameter to prevent allocating an empty
+1 −1
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ class EndToEndTest {
                .containsMatch(Pattern.compile("\\{ String protoLogParam0 = " +
                        "String\\.valueOf\\(argString\\); long protoLogParam1 = argInt; " +
                        "com\\.android\\.internal\\.protolog.ProtoLogImpl_.*\\.d\\(" +
                        "GROUP, -6872339441335321086L, 4, protoLogParam0, protoLogParam1" +
                        "GROUP, -6872339441335321086L, 4, null, protoLogParam0, protoLogParam1" +
                        "\\); \\}"))
    }

+29 −25
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@ class SourceTransformerTest {

            class Test {
                void test() {
                    if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { long protoLogParam0 = 100; double protoLogParam1 = 0.1; org.example.ProtoLogImpl.w(TEST_GROUP, -1473209266730422156L, 9, protoLogParam0, protoLogParam1); }
                    if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { long protoLogParam0 = 100; double protoLogParam1 = 0.1; org.example.ProtoLogImpl.w(TEST_GROUP, -1473209266730422156L, 9, "test %d %f", protoLogParam0, protoLogParam1); }
                }
            }
            """.trimIndent()
@@ -86,7 +86,7 @@ class SourceTransformerTest {

            class Test {
                void test() {
                    if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { long protoLogParam0 = 100; double protoLogParam1 = 0.1; String protoLogParam2 = String.valueOf("test"); org.example.ProtoLogImpl.w(TEST_GROUP, -4447034859795564700L, 9, protoLogParam0, protoLogParam1, protoLogParam2); 
                    if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { long protoLogParam0 = 100; double protoLogParam1 = 0.1; String protoLogParam2 = String.valueOf("test"); org.example.ProtoLogImpl.w(TEST_GROUP, -4447034859795564700L, 9, "test %d %f " + "abc %s\n test", protoLogParam0, protoLogParam1, protoLogParam2); 
            
            }
                }
@@ -98,8 +98,8 @@ class SourceTransformerTest {

            class Test {
                void test() {
                    if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { long protoLogParam0 = 100; double protoLogParam1 = 0.1; org.example.ProtoLogImpl.w(TEST_GROUP, -1473209266730422156L, 9, protoLogParam0, protoLogParam1); } /* ProtoLog.w(TEST_GROUP, "test %d %f", 100, 0.1); */ if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { long protoLogParam0 = 100; double protoLogParam1 = 0.1; org.example.ProtoLogImpl.w(TEST_GROUP, -1473209266730422156L, 9, protoLogParam0, protoLogParam1); }
                    if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { long protoLogParam0 = 100; double protoLogParam1 = 0.1; org.example.ProtoLogImpl.w(TEST_GROUP, -1473209266730422156L, 9, protoLogParam0, protoLogParam1); }
                    if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { long protoLogParam0 = 100; double protoLogParam1 = 0.1; org.example.ProtoLogImpl.w(TEST_GROUP, -1473209266730422156L, 9, "test %d %f", protoLogParam0, protoLogParam1); } /* ProtoLog.w(TEST_GROUP, "test %d %f", 100, 0.1); */ if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { long protoLogParam0 = 100; double protoLogParam1 = 0.1; org.example.ProtoLogImpl.w(TEST_GROUP, -1473209266730422156L, 9, "test %d %f", protoLogParam0, protoLogParam1); }
                    if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { long protoLogParam0 = 100; double protoLogParam1 = 0.1; org.example.ProtoLogImpl.w(TEST_GROUP, -1473209266730422156L, 9, "test %d %f", protoLogParam0, protoLogParam1); }
                }
            }
            """.trimIndent()
@@ -109,7 +109,7 @@ class SourceTransformerTest {

            class Test {
                void test() {
                    if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { org.example.ProtoLogImpl.w(TEST_GROUP, 3218600869538902408L, 0, (Object[]) null); }
                    if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { org.example.ProtoLogImpl.w(TEST_GROUP, 3218600869538902408L, 0, "test", (Object[]) null); }
                }
            }
            """.trimIndent()
@@ -119,7 +119,7 @@ class SourceTransformerTest {

            class Test {
                void test() {
                    if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { long protoLogParam0 = 100; double protoLogParam1 = 0.1; org.example.ProtoLogImpl.w(TEST_GROUP, -1473209266730422156L, 9, protoLogParam0, protoLogParam1); }
                    if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { long protoLogParam0 = 100; double protoLogParam1 = 0.1; org.example.ProtoLogImpl.w(TEST_GROUP, -1473209266730422156L, 9, null, protoLogParam0, protoLogParam1); }
                }
            }
            """.trimIndent()
@@ -129,7 +129,7 @@ class SourceTransformerTest {

            class Test {
                void test() {
                    if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { long protoLogParam0 = 100; double protoLogParam1 = 0.1; String protoLogParam2 = String.valueOf("test"); org.example.ProtoLogImpl.w(TEST_GROUP, -4447034859795564700L, 9, protoLogParam0, protoLogParam1, protoLogParam2); 
                    if (org.example.ProtoLogImpl.Cache.TEST_GROUP_enabled[3]) { long protoLogParam0 = 100; double protoLogParam1 = 0.1; String protoLogParam2 = String.valueOf("test"); org.example.ProtoLogImpl.w(TEST_GROUP, -4447034859795564700L, 9, null, protoLogParam0, protoLogParam1, protoLogParam2); 
            
            }
                }
@@ -172,12 +172,13 @@ class SourceTransformerTest {
        Truth.assertThat(protoLogCalls).hasSize(1)
        val methodCall = protoLogCalls[0] as MethodCallExpr
        assertEquals("w", methodCall.name.asString())
        assertEquals(5, methodCall.arguments.size)
        assertEquals(6, methodCall.arguments.size)
        assertEquals("TEST_GROUP", methodCall.arguments[0].toString())
        assertEquals("-1473209266730422156L", methodCall.arguments[1].toString())
        assertEquals(0b1001.toString(), methodCall.arguments[2].toString())
        assertEquals("protoLogParam0", methodCall.arguments[3].toString())
        assertEquals("protoLogParam1", methodCall.arguments[4].toString())
        assertEquals("\"test %d %f\"", methodCall.arguments[3].toString())
        assertEquals("protoLogParam0", methodCall.arguments[4].toString())
        assertEquals("protoLogParam1", methodCall.arguments[5].toString())
        assertEquals(TRANSFORMED_CODE_TEXT_ENABLED, out)
    }

@@ -213,12 +214,13 @@ class SourceTransformerTest {
        Truth.assertThat(protoLogCalls).hasSize(3)
        val methodCall = protoLogCalls[0] as MethodCallExpr
        assertEquals("w", methodCall.name.asString())
        assertEquals(5, methodCall.arguments.size)
        assertEquals(6, methodCall.arguments.size)
        assertEquals("TEST_GROUP", methodCall.arguments[0].toString())
        assertEquals("-1473209266730422156L", methodCall.arguments[1].toString())
        assertEquals(0b1001.toString(), methodCall.arguments[2].toString())
        assertEquals("protoLogParam0", methodCall.arguments[3].toString())
        assertEquals("protoLogParam1", methodCall.arguments[4].toString())
        assertEquals("\"test %d %f\"", methodCall.arguments[3].toString())
        assertEquals("protoLogParam0", methodCall.arguments[4].toString())
        assertEquals("protoLogParam1", methodCall.arguments[5].toString())
        assertEquals(TRANSFORMED_CODE_MULTICALL_TEXT, out)
    }

@@ -250,13 +252,13 @@ class SourceTransformerTest {
        Truth.assertThat(protoLogCalls).hasSize(1)
        val methodCall = protoLogCalls[0] as MethodCallExpr
        assertEquals("w", methodCall.name.asString())
        assertEquals(6, methodCall.arguments.size)
        assertEquals(7, methodCall.arguments.size)
        assertEquals("TEST_GROUP", methodCall.arguments[0].toString())
        assertEquals("-4447034859795564700L", methodCall.arguments[1].toString())
        assertEquals(0b001001.toString(), methodCall.arguments[2].toString())
        assertEquals("protoLogParam0", methodCall.arguments[3].toString())
        assertEquals("protoLogParam1", methodCall.arguments[4].toString())
        assertEquals("protoLogParam2", methodCall.arguments[5].toString())
        assertEquals("protoLogParam0", methodCall.arguments[4].toString())
        assertEquals("protoLogParam1", methodCall.arguments[5].toString())
        assertEquals("protoLogParam2", methodCall.arguments[6].toString())
        assertEquals(TRANSFORMED_CODE_MULTILINE_TEXT_ENABLED, out)
    }

@@ -287,7 +289,7 @@ class SourceTransformerTest {
        Truth.assertThat(protoLogCalls).hasSize(1)
        val methodCall = protoLogCalls[0] as MethodCallExpr
        assertEquals("w", methodCall.name.asString())
        assertEquals(4, methodCall.arguments.size)
        assertEquals(5, methodCall.arguments.size)
        assertEquals("TEST_GROUP", methodCall.arguments[0].toString())
        assertEquals("3218600869538902408L", methodCall.arguments[1].toString())
        assertEquals(0.toString(), methodCall.arguments[2].toString())
@@ -321,12 +323,13 @@ class SourceTransformerTest {
        Truth.assertThat(protoLogCalls).hasSize(1)
        val methodCall = protoLogCalls[0] as MethodCallExpr
        assertEquals("w", methodCall.name.asString())
        assertEquals(5, methodCall.arguments.size)
        assertEquals(6, methodCall.arguments.size)
        assertEquals("TEST_GROUP", methodCall.arguments[0].toString())
        assertEquals("-1473209266730422156L", methodCall.arguments[1].toString())
        assertEquals(0b1001.toString(), methodCall.arguments[2].toString())
        assertEquals("protoLogParam0", methodCall.arguments[3].toString())
        assertEquals("protoLogParam1", methodCall.arguments[4].toString())
        assertEquals("null", methodCall.arguments[3].toString())
        assertEquals("protoLogParam0", methodCall.arguments[4].toString())
        assertEquals("protoLogParam1", methodCall.arguments[5].toString())
        assertEquals(TRANSFORMED_CODE_TEXT_DISABLED, out)
    }

@@ -358,13 +361,14 @@ class SourceTransformerTest {
        Truth.assertThat(protoLogCalls).hasSize(1)
        val methodCall = protoLogCalls[0] as MethodCallExpr
        assertEquals("w", methodCall.name.asString())
        assertEquals(6, methodCall.arguments.size)
        assertEquals(7, methodCall.arguments.size)
        assertEquals("TEST_GROUP", methodCall.arguments[0].toString())
        assertEquals("-4447034859795564700L", methodCall.arguments[1].toString())
        assertEquals(0b001001.toString(), methodCall.arguments[2].toString())
        assertEquals("protoLogParam0", methodCall.arguments[3].toString())
        assertEquals("protoLogParam1", methodCall.arguments[4].toString())
        assertEquals("protoLogParam2", methodCall.arguments[5].toString())
        assertEquals("null", methodCall.arguments[3].toString())
        assertEquals("protoLogParam0", methodCall.arguments[4].toString())
        assertEquals("protoLogParam1", methodCall.arguments[5].toString())
        assertEquals("protoLogParam2", methodCall.arguments[6].toString())
        assertEquals(TRANSFORMED_CODE_MULTILINE_TEXT_DISABLED, out)
    }
}