xref: /aosp_15_r20/external/libchrome/libchrome_tools/patch/580fcef.patch (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
1*635a8641SAndroid Build Coastguard WorkerFrom 580fcef90ab970ad37ea9f7059373f773b3e55d2 Mon Sep 17 00:00:00 2001
2*635a8641SAndroid Build Coastguard WorkerFrom: Jakub Pawlowski <[email protected]>
3*635a8641SAndroid Build Coastguard WorkerDate: Fri, 03 Aug 2018 08:46:10 +0000
4*635a8641SAndroid Build Coastguard WorkerSubject: [PATCH] Fix data_types_definition.tmpl
5*635a8641SAndroid Build Coastguard Worker
6*635a8641SAndroid Build Coastguard WorkerThis template can generate code that does not compile, if there are
7*635a8641SAndroid Build Coastguard Workermultiple fields with different versions where at least one has version 0
8*635a8641SAndroid Build Coastguard Workerand end up being laid out in a way that does not match the ordinal order
9*635a8641SAndroid Build Coastguard Worker
10*635a8641SAndroid Build Coastguard WorkerSample Mojo file:
11*635a8641SAndroid Build Coastguard Worker// Describes ARC package.
12*635a8641SAndroid Build Coastguard Workerstruct ArcPackageInfo {
13*635a8641SAndroid Build Coastguard Worker  string package_name;
14*635a8641SAndroid Build Coastguard Worker  int32 package_version;
15*635a8641SAndroid Build Coastguard Worker  int64 last_backup_android_id;
16*635a8641SAndroid Build Coastguard Worker  int64 last_backup_time;
17*635a8641SAndroid Build Coastguard Worker  bool sync;  // true if package installation should be synced
18*635a8641SAndroid Build Coastguard Worker  [MinVersion=11] bool system;  // true if package is system package.
19*635a8641SAndroid Build Coastguard Worker  // true if package registers VPNService intent.
20*635a8641SAndroid Build Coastguard Worker  [MinVersion=25] bool vpn_provider;
21*635a8641SAndroid Build Coastguard Worker};
22*635a8641SAndroid Build Coastguard Worker
23*635a8641SAndroid Build Coastguard WorkerSample badly generated code (no closing "}" for last if):
24*635a8641SAndroid Build Coastguard Worker
25*635a8641SAndroid Build Coastguard Worker    @SuppressWarnings("unchecked")
26*635a8641SAndroid Build Coastguard Worker    public static ArcPackageInfo decode(org.chromium.mojo.bindings.Decoder decoder0) {
27*635a8641SAndroid Build Coastguard Worker        if (decoder0 == null) {
28*635a8641SAndroid Build Coastguard Worker            return null;
29*635a8641SAndroid Build Coastguard Worker        }
30*635a8641SAndroid Build Coastguard Worker        decoder0.increaseStackDepth();
31*635a8641SAndroid Build Coastguard Worker        ArcPackageInfo result;
32*635a8641SAndroid Build Coastguard Worker        try {
33*635a8641SAndroid Build Coastguard Worker            org.chromium.mojo.bindings.DataHeader mainDataHeader = decoder0.readAndValidateDataHeader(VERSION_ARRAY);
34*635a8641SAndroid Build Coastguard Worker            final int elementsOrVersion = mainDataHeader.elementsOrVersion;
35*635a8641SAndroid Build Coastguard Worker            result = new ArcPackageInfo(elementsOrVersion);
36*635a8641SAndroid Build Coastguard Worker                {
37*635a8641SAndroid Build Coastguard Worker
38*635a8641SAndroid Build Coastguard Worker                result.packageName = decoder0.readString(8, false);
39*635a8641SAndroid Build Coastguard Worker                }
40*635a8641SAndroid Build Coastguard Worker                {
41*635a8641SAndroid Build Coastguard Worker
42*635a8641SAndroid Build Coastguard Worker                result.packageVersion = decoder0.readInt(16);
43*635a8641SAndroid Build Coastguard Worker                }
44*635a8641SAndroid Build Coastguard Worker                {
45*635a8641SAndroid Build Coastguard Worker
46*635a8641SAndroid Build Coastguard Worker                result.sync = decoder0.readBoolean(20, 0);
47*635a8641SAndroid Build Coastguard Worker                }
48*635a8641SAndroid Build Coastguard Worker            if (elementsOrVersion >= 11) {
49*635a8641SAndroid Build Coastguard Worker                {
50*635a8641SAndroid Build Coastguard Worker
51*635a8641SAndroid Build Coastguard Worker                result.system = decoder0.readBoolean(20, 1);
52*635a8641SAndroid Build Coastguard Worker                }
53*635a8641SAndroid Build Coastguard Worker            }
54*635a8641SAndroid Build Coastguard Worker            if (elementsOrVersion >= 25) {
55*635a8641SAndroid Build Coastguard Worker                {
56*635a8641SAndroid Build Coastguard Worker
57*635a8641SAndroid Build Coastguard Worker                result.vpnProvider = decoder0.readBoolean(20, 2);
58*635a8641SAndroid Build Coastguard Worker                }
59*635a8641SAndroid Build Coastguard Worker            }
60*635a8641SAndroid Build Coastguard Worker            if (elementsOrVersion >= 0) {
61*635a8641SAndroid Build Coastguard Worker                {
62*635a8641SAndroid Build Coastguard Worker
63*635a8641SAndroid Build Coastguard Worker                result.lastBackupAndroidId = decoder0.readLong(24);
64*635a8641SAndroid Build Coastguard Worker                }
65*635a8641SAndroid Build Coastguard Worker                {
66*635a8641SAndroid Build Coastguard Worker
67*635a8641SAndroid Build Coastguard Worker                result.lastBackupTime = decoder0.readLong(32);
68*635a8641SAndroid Build Coastguard Worker                }
69*635a8641SAndroid Build Coastguard Worker        } finally {
70*635a8641SAndroid Build Coastguard Worker            decoder0.decreaseStackDepth();
71*635a8641SAndroid Build Coastguard Worker        }
72*635a8641SAndroid Build Coastguard Worker        return result;
73*635a8641SAndroid Build Coastguard Worker    }
74*635a8641SAndroid Build Coastguard Worker
75*635a8641SAndroid Build Coastguard WorkerChange-Id: I4c1b573a71b20cc6a0828a2cceff6bbfbb4ac5bc
76*635a8641SAndroid Build Coastguard WorkerReviewed-on: https://chromium-review.googlesource.com/1158702
77*635a8641SAndroid Build Coastguard WorkerReviewed-by: Luis Hector Chavez <[email protected]>
78*635a8641SAndroid Build Coastguard WorkerReviewed-by: Ken Rockot <[email protected]>
79*635a8641SAndroid Build Coastguard WorkerCommit-Queue: Jakub x Jakub Pawlowski <[email protected]>
80*635a8641SAndroid Build Coastguard WorkerCr-Commit-Position: refs/heads/master@{#580480}
81*635a8641SAndroid Build Coastguard Worker---
82*635a8641SAndroid Build Coastguard Worker
83*635a8641SAndroid Build Coastguard Workerdiff --git a/mojo/public/tools/bindings/generators/java_templates/data_types_definition.tmpl b/mojo/public/tools/bindings/generators/java_templates/data_types_definition.tmpl
84*635a8641SAndroid Build Coastguard Workerindex 59c6fee..7af57bd 100644
85*635a8641SAndroid Build Coastguard Worker--- a/mojo/public/tools/bindings/generators/java_templates/data_types_definition.tmpl
86*635a8641SAndroid Build Coastguard Worker+++ b/mojo/public/tools/bindings/generators/java_templates/data_types_definition.tmpl
87*635a8641SAndroid Build Coastguard Worker@@ -175,6 +175,7 @@
88*635a8641SAndroid Build Coastguard Worker             org.chromium.mojo.bindings.DataHeader mainDataHeader = decoder0.readAndValidateDataHeader(VERSION_ARRAY);
89*635a8641SAndroid Build Coastguard Worker             final int elementsOrVersion = mainDataHeader.elementsOrVersion;
90*635a8641SAndroid Build Coastguard Worker             result = new {{struct|name}}(elementsOrVersion);
91*635a8641SAndroid Build Coastguard Worker+
92*635a8641SAndroid Build Coastguard Worker {%- set prev_ver = [0] %}
93*635a8641SAndroid Build Coastguard Worker {%- for byte in struct.bytes %}
94*635a8641SAndroid Build Coastguard Worker {%-   for packed_field in byte.packed_fields %}
95*635a8641SAndroid Build Coastguard Worker@@ -183,7 +184,9 @@
96*635a8641SAndroid Build Coastguard Worker             }
97*635a8641SAndroid Build Coastguard Worker {%-       endif %}
98*635a8641SAndroid Build Coastguard Worker {%-       set _ = prev_ver.append(packed_field.min_version) %}
99*635a8641SAndroid Build Coastguard Worker+{%-       if prev_ver[-1] != 0 %}
100*635a8641SAndroid Build Coastguard Worker             if (elementsOrVersion >= {{packed_field.min_version}}) {
101*635a8641SAndroid Build Coastguard Worker+{%-       endif %}
102*635a8641SAndroid Build Coastguard Worker {%-     endif %}
103*635a8641SAndroid Build Coastguard Worker                 {
104*635a8641SAndroid Build Coastguard Worker                     {{decode('result.' ~ packed_field.field|name, packed_field.field.kind, 8+packed_field.offset, packed_field.bit)|indent(16)}}
105*635a8641SAndroid Build Coastguard Worker@@ -193,6 +196,7 @@
106*635a8641SAndroid Build Coastguard Worker {%- if prev_ver[-1] != 0 %}
107*635a8641SAndroid Build Coastguard Worker             }
108*635a8641SAndroid Build Coastguard Worker {%- endif %}
109*635a8641SAndroid Build Coastguard Worker+
110*635a8641SAndroid Build Coastguard Worker         } finally {
111*635a8641SAndroid Build Coastguard Worker             decoder0.decreaseStackDepth();
112*635a8641SAndroid Build Coastguard Worker         }
113