xref: /aosp_15_r20/cts/tools/cts-api-coverage/res/api-coverage.xsl (revision b7c941bb3fa97aba169d73cee0bed2de8ac964bf)
1*b7c941bbSAndroid Build Coastguard Worker<?xml version="1.0" encoding="utf-8"?>
2*b7c941bbSAndroid Build Coastguard Worker<!--
3*b7c941bbSAndroid Build Coastguard Worker * Copyright (C) 2010 The Android Open Source Project
4*b7c941bbSAndroid Build Coastguard Worker *
5*b7c941bbSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
6*b7c941bbSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
7*b7c941bbSAndroid Build Coastguard Worker * You may obtain a copy of the License at
8*b7c941bbSAndroid Build Coastguard Worker *
9*b7c941bbSAndroid Build Coastguard Worker *      http://www.apache.org/licenses/LICENSE-2.0
10*b7c941bbSAndroid Build Coastguard Worker *
11*b7c941bbSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
12*b7c941bbSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
13*b7c941bbSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*b7c941bbSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
15*b7c941bbSAndroid Build Coastguard Worker * limitations under the License.
16*b7c941bbSAndroid Build Coastguard Worker -->
17*b7c941bbSAndroid Build Coastguard Worker
18*b7c941bbSAndroid Build Coastguard Worker<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#160;"> ]>
19*b7c941bbSAndroid Build Coastguard Worker<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
20*b7c941bbSAndroid Build Coastguard Worker    <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes" />
21*b7c941bbSAndroid Build Coastguard Worker    <xsl:template match="/">
22*b7c941bbSAndroid Build Coastguard Worker        <html>
23*b7c941bbSAndroid Build Coastguard Worker            <head>
24*b7c941bbSAndroid Build Coastguard Worker                <title><xsl:value-of select="api-coverage/@title" /></title>
25*b7c941bbSAndroid Build Coastguard Worker                <script type="text/javascript">
26*b7c941bbSAndroid Build Coastguard Worker                    function toggleVisibility(id) {
27*b7c941bbSAndroid Build Coastguard Worker                        element = document.getElementById(id);
28*b7c941bbSAndroid Build Coastguard Worker                        if (element.style.display == "none") {
29*b7c941bbSAndroid Build Coastguard Worker                            element.style.display = "";
30*b7c941bbSAndroid Build Coastguard Worker                        } else {
31*b7c941bbSAndroid Build Coastguard Worker                            element.style.display = "none";
32*b7c941bbSAndroid Build Coastguard Worker                        }
33*b7c941bbSAndroid Build Coastguard Worker                    }
34*b7c941bbSAndroid Build Coastguard Worker                </script>
35*b7c941bbSAndroid Build Coastguard Worker                <style type="text/css">
36*b7c941bbSAndroid Build Coastguard Worker                    body {
37*b7c941bbSAndroid Build Coastguard Worker                        background-color: #CCCCCC;
38*b7c941bbSAndroid Build Coastguard Worker                        font-family: sans-serif;
39*b7c941bbSAndroid Build Coastguard Worker                        margin: 10px;
40*b7c941bbSAndroid Build Coastguard Worker                    }
41*b7c941bbSAndroid Build Coastguard Worker
42*b7c941bbSAndroid Build Coastguard Worker                    .info {
43*b7c941bbSAndroid Build Coastguard Worker                        margin-bottom: 10px;
44*b7c941bbSAndroid Build Coastguard Worker                    }
45*b7c941bbSAndroid Build Coastguard Worker
46*b7c941bbSAndroid Build Coastguard Worker                    .apks, .package, .class {
47*b7c941bbSAndroid Build Coastguard Worker                        cursor: pointer;
48*b7c941bbSAndroid Build Coastguard Worker                        text-decoration: underline;
49*b7c941bbSAndroid Build Coastguard Worker                    }
50*b7c941bbSAndroid Build Coastguard Worker
51*b7c941bbSAndroid Build Coastguard Worker                    .packageDetails {
52*b7c941bbSAndroid Build Coastguard Worker                        padding-left: 20px;
53*b7c941bbSAndroid Build Coastguard Worker                    }
54*b7c941bbSAndroid Build Coastguard Worker
55*b7c941bbSAndroid Build Coastguard Worker                    .classDetails {
56*b7c941bbSAndroid Build Coastguard Worker                        padding-left: 40px;
57*b7c941bbSAndroid Build Coastguard Worker                    }
58*b7c941bbSAndroid Build Coastguard Worker
59*b7c941bbSAndroid Build Coastguard Worker                    .method {
60*b7c941bbSAndroid Build Coastguard Worker                        font-family: courier;
61*b7c941bbSAndroid Build Coastguard Worker                        white-space: nowrap;
62*b7c941bbSAndroid Build Coastguard Worker                    }
63*b7c941bbSAndroid Build Coastguard Worker
64*b7c941bbSAndroid Build Coastguard Worker                    .red {
65*b7c941bbSAndroid Build Coastguard Worker                        background-color: #FF6666;
66*b7c941bbSAndroid Build Coastguard Worker                    }
67*b7c941bbSAndroid Build Coastguard Worker
68*b7c941bbSAndroid Build Coastguard Worker                    .yellow {
69*b7c941bbSAndroid Build Coastguard Worker                        background-color: #FFFF66;
70*b7c941bbSAndroid Build Coastguard Worker                    }
71*b7c941bbSAndroid Build Coastguard Worker
72*b7c941bbSAndroid Build Coastguard Worker                    .green {
73*b7c941bbSAndroid Build Coastguard Worker                        background-color: #66FF66;
74*b7c941bbSAndroid Build Coastguard Worker                    }
75*b7c941bbSAndroid Build Coastguard Worker
76*b7c941bbSAndroid Build Coastguard Worker                    .deprecated {
77*b7c941bbSAndroid Build Coastguard Worker                        text-decoration: line-through;
78*b7c941bbSAndroid Build Coastguard Worker                    }
79*b7c941bbSAndroid Build Coastguard Worker                </style>
80*b7c941bbSAndroid Build Coastguard Worker            </head>
81*b7c941bbSAndroid Build Coastguard Worker            <body>
82*b7c941bbSAndroid Build Coastguard Worker                <h1><xsl:value-of select="api-coverage/@title" /></h1>
83*b7c941bbSAndroid Build Coastguard Worker                <div class="info">
84*b7c941bbSAndroid Build Coastguard Worker                    Generated: <xsl:value-of select="api-coverage/@generatedTime" />
85*b7c941bbSAndroid Build Coastguard Worker                </div>
86*b7c941bbSAndroid Build Coastguard Worker                <div class="total">
87*b7c941bbSAndroid Build Coastguard Worker                    Total:&nbsp;<xsl:value-of select="api-coverage/total/@coveragePercentage" />%
88*b7c941bbSAndroid Build Coastguard Worker                &nbsp;(<xsl:value-of select="api-coverage/total/@numCovered" />/<xsl:value-of select="api-coverage/total/@numTotal" />)
89*b7c941bbSAndroid Build Coastguard Worker                </div>
90*b7c941bbSAndroid Build Coastguard Worker                <div class="apks" onclick="toggleVisibility('sourceApks')">
91*b7c941bbSAndroid Build Coastguard Worker                    Source Modules (<xsl:value-of select="count(api-coverage/debug/sources/apk)" />)
92*b7c941bbSAndroid Build Coastguard Worker                </div>
93*b7c941bbSAndroid Build Coastguard Worker                <div id="sourceApks" style="display: none">
94*b7c941bbSAndroid Build Coastguard Worker                    <ul>
95*b7c941bbSAndroid Build Coastguard Worker                        <xsl:for-each select="api-coverage/debug/sources/apk">
96*b7c941bbSAndroid Build Coastguard Worker                            <li><xsl:value-of select="@path" /></li>
97*b7c941bbSAndroid Build Coastguard Worker                        </xsl:for-each>
98*b7c941bbSAndroid Build Coastguard Worker                    </ul>
99*b7c941bbSAndroid Build Coastguard Worker                </div>
100*b7c941bbSAndroid Build Coastguard Worker                <ul>
101*b7c941bbSAndroid Build Coastguard Worker                    <xsl:for-each select="api-coverage/api/package">
102*b7c941bbSAndroid Build Coastguard Worker                        <xsl:call-template name="packageOrClassListItem">
103*b7c941bbSAndroid Build Coastguard Worker                            <xsl:with-param name="bulletClass" select="'package'" />
104*b7c941bbSAndroid Build Coastguard Worker                            <xsl:with-param name="toggleId" select="@name" />
105*b7c941bbSAndroid Build Coastguard Worker                        </xsl:call-template>
106*b7c941bbSAndroid Build Coastguard Worker                        <div class="packageDetails" id="{@name}" style="display: none">
107*b7c941bbSAndroid Build Coastguard Worker                            <ul>
108*b7c941bbSAndroid Build Coastguard Worker                                <xsl:for-each select="class">
109*b7c941bbSAndroid Build Coastguard Worker                                    <xsl:variable name="packageClassId" select="concat(../@name, '.', @name)"/>
110*b7c941bbSAndroid Build Coastguard Worker                                    <xsl:call-template name="packageOrClassListItem">
111*b7c941bbSAndroid Build Coastguard Worker                                        <xsl:with-param name="bulletClass" select="'class'" />
112*b7c941bbSAndroid Build Coastguard Worker                                        <xsl:with-param name="toggleId" select="$packageClassId" />
113*b7c941bbSAndroid Build Coastguard Worker                                    </xsl:call-template>
114*b7c941bbSAndroid Build Coastguard Worker                                    <div class="classDetails" id="{$packageClassId}" style="display: none">
115*b7c941bbSAndroid Build Coastguard Worker                                        <xsl:for-each select="constructor">
116*b7c941bbSAndroid Build Coastguard Worker                                            <xsl:call-template name="methodListItem" />
117*b7c941bbSAndroid Build Coastguard Worker                                        </xsl:for-each>
118*b7c941bbSAndroid Build Coastguard Worker                                        <xsl:for-each select="method">
119*b7c941bbSAndroid Build Coastguard Worker                                            <xsl:call-template name="methodListItem" />
120*b7c941bbSAndroid Build Coastguard Worker                                        </xsl:for-each>
121*b7c941bbSAndroid Build Coastguard Worker                                    </div>
122*b7c941bbSAndroid Build Coastguard Worker                                </xsl:for-each>
123*b7c941bbSAndroid Build Coastguard Worker                            </ul>
124*b7c941bbSAndroid Build Coastguard Worker                        </div>
125*b7c941bbSAndroid Build Coastguard Worker                    </xsl:for-each>
126*b7c941bbSAndroid Build Coastguard Worker                </ul>
127*b7c941bbSAndroid Build Coastguard Worker            </body>
128*b7c941bbSAndroid Build Coastguard Worker        </html>
129*b7c941bbSAndroid Build Coastguard Worker    </xsl:template>
130*b7c941bbSAndroid Build Coastguard Worker
131*b7c941bbSAndroid Build Coastguard Worker    <xsl:template name="packageOrClassListItem">
132*b7c941bbSAndroid Build Coastguard Worker        <xsl:param name="bulletClass" />
133*b7c941bbSAndroid Build Coastguard Worker        <xsl:param name="toggleId"/>
134*b7c941bbSAndroid Build Coastguard Worker
135*b7c941bbSAndroid Build Coastguard Worker        <xsl:variable name="colorClass">
136*b7c941bbSAndroid Build Coastguard Worker            <xsl:choose>
137*b7c941bbSAndroid Build Coastguard Worker                <xsl:when test="@coveragePercentage &lt;= 50">red</xsl:when>
138*b7c941bbSAndroid Build Coastguard Worker                <xsl:when test="@coveragePercentage &lt;= 80">yellow</xsl:when>
139*b7c941bbSAndroid Build Coastguard Worker                <xsl:otherwise>green</xsl:otherwise>
140*b7c941bbSAndroid Build Coastguard Worker            </xsl:choose>
141*b7c941bbSAndroid Build Coastguard Worker        </xsl:variable>
142*b7c941bbSAndroid Build Coastguard Worker
143*b7c941bbSAndroid Build Coastguard Worker        <xsl:variable name="deprecatedClass">
144*b7c941bbSAndroid Build Coastguard Worker            <xsl:choose>
145*b7c941bbSAndroid Build Coastguard Worker                <xsl:when test="@deprecated = 'true'">deprecated</xsl:when>
146*b7c941bbSAndroid Build Coastguard Worker                <xsl:otherwise></xsl:otherwise>
147*b7c941bbSAndroid Build Coastguard Worker            </xsl:choose>
148*b7c941bbSAndroid Build Coastguard Worker        </xsl:variable>
149*b7c941bbSAndroid Build Coastguard Worker
150*b7c941bbSAndroid Build Coastguard Worker        <li class="{$bulletClass}" onclick="toggleVisibility('{$toggleId}')">
151*b7c941bbSAndroid Build Coastguard Worker            <span class="{$colorClass} {$deprecatedClass}">
152*b7c941bbSAndroid Build Coastguard Worker                <b><xsl:value-of select="@name" /></b>
153*b7c941bbSAndroid Build Coastguard Worker                &nbsp;<xsl:value-of select="@coveragePercentage" />%
154*b7c941bbSAndroid Build Coastguard Worker                &nbsp;(<xsl:value-of select="@numCovered" />/<xsl:value-of select="@numTotal" />)
155*b7c941bbSAndroid Build Coastguard Worker            </span>
156*b7c941bbSAndroid Build Coastguard Worker        </li>
157*b7c941bbSAndroid Build Coastguard Worker    </xsl:template>
158*b7c941bbSAndroid Build Coastguard Worker
159*b7c941bbSAndroid Build Coastguard Worker  <xsl:template name="methodListItem">
160*b7c941bbSAndroid Build Coastguard Worker
161*b7c941bbSAndroid Build Coastguard Worker    <xsl:variable name="deprecatedClass">
162*b7c941bbSAndroid Build Coastguard Worker        <xsl:choose>
163*b7c941bbSAndroid Build Coastguard Worker            <xsl:when test="@deprecated = 'true'">deprecated</xsl:when>
164*b7c941bbSAndroid Build Coastguard Worker            <xsl:otherwise></xsl:otherwise>
165*b7c941bbSAndroid Build Coastguard Worker        </xsl:choose>
166*b7c941bbSAndroid Build Coastguard Worker    </xsl:variable>
167*b7c941bbSAndroid Build Coastguard Worker
168*b7c941bbSAndroid Build Coastguard Worker    <span class="method {$deprecatedClass}">
169*b7c941bbSAndroid Build Coastguard Worker      <xsl:choose>
170*b7c941bbSAndroid Build Coastguard Worker        <xsl:when test="@covered = 'true'">[X]</xsl:when>
171*b7c941bbSAndroid Build Coastguard Worker        <xsl:otherwise>[ ]</xsl:otherwise>
172*b7c941bbSAndroid Build Coastguard Worker      </xsl:choose>
173*b7c941bbSAndroid Build Coastguard Worker      <xsl:if test="@visibility != ''">&nbsp;<xsl:value-of select="@visibility" /></xsl:if>
174*b7c941bbSAndroid Build Coastguard Worker      <xsl:if test="@abstract = 'true'">&nbsp;abstract</xsl:if>
175*b7c941bbSAndroid Build Coastguard Worker      <xsl:if test="@static = 'true'">&nbsp;static</xsl:if>
176*b7c941bbSAndroid Build Coastguard Worker      <xsl:if test="@final = 'true'">&nbsp;final</xsl:if>
177*b7c941bbSAndroid Build Coastguard Worker      <xsl:if test="@returnType != ''">&nbsp;<xsl:value-of select="@returnType" /></xsl:if>
178*b7c941bbSAndroid Build Coastguard Worker      <b>&nbsp;<xsl:value-of select="@name" /></b><xsl:call-template name="formatParameters" />
179*b7c941bbSAndroid Build Coastguard Worker    </span>
180*b7c941bbSAndroid Build Coastguard Worker    <br />
181*b7c941bbSAndroid Build Coastguard Worker  </xsl:template>
182*b7c941bbSAndroid Build Coastguard Worker
183*b7c941bbSAndroid Build Coastguard Worker  <xsl:template name="formatParameters">(<xsl:for-each select="parameter">
184*b7c941bbSAndroid Build Coastguard Worker      <xsl:value-of select="@type" />
185*b7c941bbSAndroid Build Coastguard Worker      <xsl:if test="not(position() = last())">,&nbsp;</xsl:if>
186*b7c941bbSAndroid Build Coastguard Worker    </xsl:for-each>)
187*b7c941bbSAndroid Build Coastguard Worker  </xsl:template>
188*b7c941bbSAndroid Build Coastguard Worker
189*b7c941bbSAndroid Build Coastguard Worker</xsl:stylesheet>
190*b7c941bbSAndroid Build Coastguard Worker
191