<!doctype html>
<html lang="en">

<head>
  <!-- Import style -->
  <link rel="stylesheet" href="../index.css" />
  <link rel="stylesheet" href="../prettify.css" />
  <!-- Import Vue 3 -->
  <script src="../vue.global.prod.js"></script>
  <!-- Import component library -->
  <script src="../index.full.min.js"></script>
  <script src="../prettify.js"></script>
  <meta charset="UTF-8">
  <title>Coverage</title>
</head>

<body>
  <div id="app" class="common-layout">
    <el-container>
      <el-header>
        <el-row :gutter="10">
          <el-col :span="5">
            <el-space :size="size" spacer="">
              <div><el-text class="mx-1 ">
                  <el-link type="primary" :href="relativeHome">
                    <h2>&lt;</h2>
                  </el-link>
                </el-text></div>
              <div><el-text class="mx-1 "><h2>{{title}}</h2></el-text></div>
              <div><el-text class="mx-1 "
                  type="info"></el-text></div>
            </el-space>
          </el-col>
          <el-col :span="3">
            <el-space :size="size" spacer="">
              <div><el-text class="mx-1 ">
                  <h2>{{file.summary.functions.pct}}%</h2>
                </el-text></div>
              <div><el-text class="mx-1 ">Functions</el-text></div>
              <div><el-text class="mx-1 "
                  type="info">{{file.summary.functions.covered}}/{{file.summary.functions.total}}</el-text></div>
            </el-space>
          </el-col>
          <el-col :span="3">
            <el-space :size="size" spacer="">
              <div><el-text class="mx-1 ">
                  <h2>{{file.summary.branches.pct}}%</h2>
                </el-text></div>
              <div><el-text class="mx-1 ">Branches</el-text></div>
              <div><el-text class="mx-1 "
                  type="info">{{file.summary.branches.covered}}/{{file.summary.branches.total}}</el-text></div>
            </el-space>
          </el-col>
          <el-col :span="3">
            <el-space :size="size" spacer="">
              <div><el-text class="mx-1 ">
                  <h2>{{file.summary.lines.pct}}%</h2>
                </el-text></div>
              <div><el-text class="mx-1 ">Lines</el-text></div>
              <div><el-text class="mx-1 "
                  type="info">{{file.summary.lines.covered}}/{{file.summary.lines.total}}</el-text></div>
            </el-space>
          </el-col>
        </el-row>
        <el-divider />
      </el-header>
      <el-main>
        <el-row>
        </el-row>
        <pre>
          <table class="coverage">
            <tr>
              <td class="line-count quiet">
                <pre class="prettyprint lang-js">
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
                </pre>
        </td>
        <td class="text">
          <pre class="prettyprint linenums lang-js">
/** 
 * 预热目标环境（三端统一）。 
 * 
 * 环境只决定&quot;拉哪个 manifest URL&quot;，下游 hosts / warmupUrl 由 manifest 内容自描述， 
 * SDK 不硬编码任何业务 host。`PrewarmConfig.manifestUrl` 若显式传入则优先级更高。 
 */ 
export enum PrewarmEnvironment { 
  /** 线上生产环境。 */ 
  PROD = 0, 
  /** 客户联调 beta 环境。 */ 
  BETA = 1, 
  /** 内部开发 test 环境。 */ 
  TEST = 2 
} 
 
/** 
 * 各环境内置 manifest URL 映射。 
 */ 
export function manifestUrlOf(env: PrewarmEnvironment): string { 
  switch (env) { 
    case PrewarmEnvironment.BETA: 
      return &#39;https://res.ess.tencent.cn/cdn/h5-std-beta/warmup-manifest.json&#39;; 
    case PrewarmEnvironment.TEST: 
      return &#39;https://res.ess.tencent.cn/cdn/h5-std-dev/warmup-manifest.json&#39;; 
    case PrewarmEnvironment.PROD: 
    default: 
      return &#39;https://res.ess.tencent.cn/cdn/h5-std/warmup-manifest.json&#39;; 
  } 
} 
 
/** 
 * 各环境已知的 `quick.*` 入口 host（用于 `open()` 环境错配检测）。 
 */ 
export function knownQuickHostOf(env: PrewarmEnvironment): string { 
  switch (env) { 
    case PrewarmEnvironment.BETA: 
      return &#39;quick.beta.qian.tencent.cn&#39;; 
    case PrewarmEnvironment.TEST: 
      return &#39;quick.test.qian.tencent.cn&#39;; 
    case PrewarmEnvironment.PROD: 
    default: 
      return &#39;quick.qian.tencent.com&#39;; 
  } 
} 
 
/** 
 * 反查某 host 属于哪个已知环境；非 3 个已知 `quick.*` host 返回 `null`。 
 */ 
export function environmentOfHost(host: string): PrewarmEnvironment | null { 
  const h: string = host.toLowerCase(); 
  if (h === &#39;quick.qian.tencent.com&#39;) { 
    return PrewarmEnvironment.PROD; 
  } 
  if (h === &#39;quick.beta.qian.tencent.cn&#39;) { 
    return PrewarmEnvironment.BETA; 
  } 
  if (h === &#39;quick.test.qian.tencent.cn&#39;) { 
    return PrewarmEnvironment.TEST; 
  } 
  return null; 
} 

              </pre>
        </td>
        </tr>
        </table>
        </pre>
      </el-main>
      <el-footer align="middle" class="footer">
        Code coverage generated by <el-link href="https://github.com/SMAT-Lab/bjc" type="primary"
          target="_blank">bjc</el-link> at {{date}}
      </el-footer>
    </el-container>
  </div>
</body>

<script>
  const App = {
    data() {
      return {"date":"Fri Jul 31 2026 16:52:24 GMT+0800 (China Standard Time)","file":{"version":"bjc v1.0.0","versionCode":10000,"path":"/Users/qinzhiqiang/Git/frontend/h5-in-app-integration/harmonyos-arkts/tencentqianwebview/src/main/ets/model/PrewarmEnvironment.ets","hash":"00a776bdb85c239ffd36f3f913174cb5bcce7dcd0d9f3390e0c9b5c7e6b47592","lineCnt":62,"count":0,"projectPath":"/Users/qinzhiqiang/Git/frontend/h5-in-app-integration/harmonyos-arkts","functions":[{"name":"manifestUrlOf","count":3,"regions":[{"startLoc":{"line":19,"col":1},"endLoc":{"line":29,"col":2},"count":3,"ignored":0},{"startLoc":{"line":21,"col":5},"endLoc":{"line":22,"col":80},"count":1,"ignored":0},{"startLoc":{"line":23,"col":5},"endLoc":{"line":24,"col":79},"count":1,"ignored":0},{"startLoc":{"line":26,"col":5},"endLoc":{"line":27,"col":75},"count":1,"ignored":0},{"startLoc":{"line":25,"col":5},"endLoc":{"line":25,"col":34},"count":1,"ignored":0}],"branches":[{"startLoc":{"line":21,"col":10},"endLoc":{"line":21,"col":33},"trueCount":1,"falseCount":3,"group":[0,1,2,3],"ignored":0},{"startLoc":{"line":23,"col":10},"endLoc":{"line":23,"col":33},"trueCount":1,"falseCount":3,"group":[0,1,2,3],"ignored":0},{"startLoc":{"line":25,"col":10},"endLoc":{"line":25,"col":33},"trueCount":1,"falseCount":3,"group":[0,1,2,3],"ignored":0},{"startLoc":{"line":26,"col":5},"endLoc":{"line":26,"col":5},"trueCount":1,"falseCount":3,"group":[0,1,2,3],"ignored":0}],"ignored":0,"index":0},{"name":"knownQuickHostOf","count":1,"regions":[{"startLoc":{"line":34,"col":1},"endLoc":{"line":44,"col":2},"count":1,"ignored":0},{"startLoc":{"line":36,"col":5},"endLoc":{"line":37,"col":43},"count":0,"ignored":0},{"startLoc":{"line":38,"col":5},"endLoc":{"line":39,"col":43},"count":0,"ignored":0},{"startLoc":{"line":41,"col":5},"endLoc":{"line":42,"col":39},"count":1,"ignored":0},{"startLoc":{"line":40,"col":5},"endLoc":{"line":40,"col":34},"count":1,"ignored":0}],"branches":[{"startLoc":{"line":36,"col":10},"endLoc":{"line":36,"col":33},"trueCount":0,"falseCount":2,"group":[0,1,2,3],"ignored":0},{"startLoc":{"line":38,"col":10},"endLoc":{"line":38,"col":33},"trueCount":0,"falseCount":2,"group":[0,1,2,3],"ignored":0},{"startLoc":{"line":40,"col":10},"endLoc":{"line":40,"col":33},"trueCount":1,"falseCount":1,"group":[0,1,2,3],"ignored":0},{"startLoc":{"line":41,"col":5},"endLoc":{"line":41,"col":5},"trueCount":1,"falseCount":1,"group":[0,1,2,3],"ignored":0}],"ignored":0,"index":1},{"name":"environmentOfHost","count":3,"regions":[{"startLoc":{"line":49,"col":1},"endLoc":{"line":61,"col":2},"count":3,"ignored":0},{"startLoc":{"line":51,"col":39},"endLoc":{"line":53,"col":4},"count":1,"ignored":0},{"startLoc":{"line":54,"col":43},"endLoc":{"line":56,"col":4},"count":1,"ignored":0},{"startLoc":{"line":57,"col":43},"endLoc":{"line":59,"col":4},"count":0,"ignored":0},{"startLoc":{"line":60,"col":3},"endLoc":{"line":61,"col":2},"count":1,"ignored":0}],"branches":[{"startLoc":{"line":51,"col":7},"endLoc":{"line":51,"col":37},"trueCount":1,"falseCount":2,"group":[],"ignored":0},{"startLoc":{"line":54,"col":7},"endLoc":{"line":54,"col":41},"trueCount":1,"falseCount":1,"group":[],"ignored":0},{"startLoc":{"line":57,"col":7},"endLoc":{"line":57,"col":41},"trueCount":0,"falseCount":1,"group":[],"ignored":0}],"ignored":0,"index":2}],"exeLine":{"0":7,"1":9,"2":11,"3":13,"4":19,"5":20,"6":21,"7":22,"8":23,"9":24,"10":25,"11":26,"12":27,"13":34,"14":35,"15":36,"16":37,"17":38,"18":39,"19":40,"20":41,"21":42,"22":49,"23":50,"24":51,"25":52,"26":54,"27":55,"28":57,"29":58,"30":60},"summary":{"lines":{"total":27,"covered":24,"pct":88.89,"executedLineCount":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,3,4,1,4,1,4,4,1,-1,-1,-1,-1,-1,-1,1,1,2,0,2,0,2,2,1,-1,-1,-1,-1,-1,-1,3,3,3,1,-1,2,1,-1,1,0,-1,1,-1,-1]},"functions":{"total":3,"covered":3,"pct":100},"branches":{"total":14,"covered":11,"pct":78.57}}},"title":"PrewarmEnvironment.ets.html","relativeHome":"../index.html"};
    }
  };

  const app = Vue.createApp(App);
  app.use(ElementPlus);
  app.mount("#app");

  window.onload = function () {
    prettyPrint();
  }
</script>

<style scoped>
  table.coverage {
    width: 100%;
    border-collapse: collapse;
    margin: 10px 0 0 0;
    padding: 0;
  }

  table.coverage td {
    margin: 0;
    padding: 0;
    vertical-align: top;
  }

  table.coverage td.line-count {
    width: 12%;
    text-align: right;
    padding: 0 5px 0 20px;
  }

  table.coverage td.line-coverage {
    text-align: right;
    padding-right: 10px;
    min-width: 20px;
  }

  table.coverage td span.cline-any {
    display: inline-block;
    padding: 0 5px;
    width: 100%;
    height: 18px;
  }

  .low,
  .cline-no {
    background: #FCE1E5
  }

  .high,
  .cline-yes {
    background: rgb(230, 245, 208)
  }

  span.cline-neutral {
    background: #eaeaea;
  }

  pre.prettyprint {
    border: none !important;
    padding: 0 !important;
    margin: 0 !important;
  }

  .el-main {
    box-sizing: border-box;
    display: block;
    flex: 1;
    flex-basis: auto;
    overflow: auto;
    padding: var(--el-main-padding)
  }

  .el-container {
    min-height: 100vh;
    height: 100%;
  }

  .footer {
    font-size: small;
  }

  .el-row {
    margin-bottom: 20px;
  }

  .el-row:last-child {
    margin-bottom: 0;
  }

  .el-col {
    border-radius: 4px;
  }

  .green {
    color: var(--el-color-success);
  }

  .red {
    color: var(--el-color-error);
  }

  .linenums li {
    height: 18px;
    line-height: 18px;
  }

  li.L0,
  li.L1,
  li.L2,
  li.L3,
  li.L5,
  li.L6,
  li.L7,
  li.L8 {
    list-style-type: decimal
  }

  .el-col-5 {
    max-width: 100%;
  }

  .el-col-3 {
    max-width: 100%;
  }

</style>

</html>