<!DOCTYPE html>
<!--
Copyright 2020 The Cobalt Authors. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<html>
<meta charset="utf-8">
<title>tnoop</title>
<script>
  var changeChannel = setInterval(tryChangeChannel, 500);

  function tryChangeChannel() {
    const channel = window.h5vcc.updater.getUpdaterChannel();
    const status = window.h5vcc.updater.getUpdateStatus();

    if (channel == "") {
      return;
    }

    if (channel == "qa") {
      if ((status == "App is up to date") || (status == "Update installed, pending restart")) {
        window.h5vcc.updater.setUpdaterChannel("tnoop");
        console.log("channel was changed to tnoop");
        return;
      }
    }

    if ((channel == "tnoop") && (status == "Update installed, pending restart")) {
      console.log("update from tnoop channel installed");
      clearInterval(changeChannel);
    }
  }
</script>
</html>
