chromium/chrome/test/data/chromeos/app_mode/apps_and_extensions/management_api/secondary_app/src/main.js

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

chrome.runtime.onMessageExternal.addListener(function(
    message, sender, callback) {
  var kPrimaryAppId = 'adinpkdaebaiabdlinlbjmenialdhibc';
  var kNotAllowedError = 'Not allowed in kiosk.';
  var kChangingPrimaryAppError = 'Cannot change the primary kiosk app state.';

  if (!sender || sender.id != kPrimaryAppId)
    return;

  if (message != 'runTests') {
    callback('invalidMessage: ' + message);
    return;
  }

  callback('ok');

  chrome.test.runTests([
    function getSelf() {
      chrome.management.getSelf(chrome.test.callbackPass(function(info) {
        chrome.test.assertEq(chrome.runtime.id, info.id);
      }));
    },

    function getAll() {
      chrome.management.getAll(chrome.test.callbackPass(function(result) {
        chrome.test.assertEq(2, result.length);
        var self = result.find(entry => entry.id == chrome.runtime.id);
        chrome.test.assertTrue(!!self);

        var secondary = result.find(entry => entry.id == kPrimaryAppId);
        chrome.test.assertTrue(!!secondary);
      }));
    },

    function getPrimary() {
      chrome.management.get(
          kPrimaryAppId, chrome.test.callbackPass(function(info) {
            chrome.test.assertEq(kPrimaryAppId, info.id);
            chrome.test.assertTrue(info.enabled);
          }));
    },

    function disablePrimary() {
      chrome.management.setEnabled(
          kPrimaryAppId, false,
          chrome.test.callbackFail(kChangingPrimaryAppError));
    },

    function enablePrimary() {
      chrome.management.setEnabled(
          kPrimaryAppId, true,
          chrome.test.callbackFail(kChangingPrimaryAppError));
    },

    function uninstallSelf() {
      chrome.management.uninstallSelf(
          chrome.test.callbackFail(kNotAllowedError));
    },

    function uninstallPrimary() {
      chrome.management.uninstall(
          kPrimaryAppId, chrome.test.callbackFail(kNotAllowedError));
    },

    function launchPrimary() {
      chrome.management.launchApp(
          kPrimaryAppId, chrome.test.callbackFail(kNotAllowedError));
    },

    function createAppShortcut() {
      chrome.management.createAppShortcut(
          chrome.runtime.id, chrome.test.callbackFail(kNotAllowedError));
    },

    function setLaunchType() {
      chrome.management.setLaunchType(
          chrome.runtime.id, 'OPEN_AS_WINDOW',
          chrome.test.callbackFail(kNotAllowedError));
    },

    function generateAppForLink() {
      chrome.management.generateAppForLink(
          'https://test.test', 'Test app',
          chrome.test.callbackFail(kNotAllowedError));
    }
  ]);
});