Приложения Chrome API chrome.networking.onc недоступен для приложений киоска - PullRequest
0 голосов
/ 08 октября 2019

Фон

У меня есть приложение Chrome Kiosk, в котором я хотел бы использовать chrome.networking.onc API, чтобы позволить моим пользователям изменять сети WiFi.

Моя проблема

Тамchrome.networking.onc API недоступен приложению ни в фоновом скрипте приложения, ни в окне приложения во время работы в сеансе киоска.

Что я пробовал

Согласно chrome.networking.oncдокументация должна быть доступна приложениям в режиме киоска.

Я добавил networking.onc к своему permissions в манифесте приложения.

https://developer.chrome.com/apps/networking_onc

https://developer.chrome.com/apps/declare_permissions

Приложение киоска принудительно устанавливается для пользователей Chromebook с помощью политики управления устройствами G Suite Chrome.

Пример кода

app / manifest.json

{
  "manifest_version": 2,
  "name": "Kiosk networking.onc",
  "version": "1.0",
  "permissions": ["networking.onc"],
  "kiosk_enabled": true,
  "kiosk_only": true,
  "app": {
    "background": {
      "scripts": ["background.js"]
    }
  }
}

app / background.js

chrome.app.runtime.onLaunched.addListener(function(launchData) {
  // send a list of available chrome APIs to the app window to be displayed
  chrome.app.window.create(`window/main.html?chrome=${Object.keys(chrome).join(",")}&kiosk=${launchData.isKioskSession}`);
});

app / window / main.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Chrome app</title>
  </head>
  <body>
    <p>
      <h1>Background <code>chrome</code> object properties</h1>
      <div id="background"></div>
    </p>

    <p>
      <h1>App window <code>chrome</code> object properties</h1>
      <div id="window"></div>
    </p>

    <button id="exit">window.close()</button>
    <script src="main.js"></script>
  </body>
</html>

app / window / main.js

// display the available Chrome APIs in the background script
document.getElementById("background").innerText = window.location.search;

// display all the available Chrome APIs (accessible from the app window).
document.getElementById("window").innerText = Object.keys(chrome).join(",");

document.getElementById("exit").onclick = () => window.close()

Вывод во время сеанса киоска (Chrome OS 77.0.3865.105)

На изображении ниже networking не может быть найден среди доступных API, и если я пытаюсь получить доступ networking.onc я получаю ошибку: Uncaught TypeError: Cannot read property 'onc' of undefined

Chrome kiosk session result

1 Ответ

0 голосов
/ 10 октября 2019

Эта проблема, кажется, вызвана ошибкой в ​​Chrome OS.

Я сообщил о проблеме в трекере проблем Chromium здесь: https://bugs.chromium.org/p/chromium/issues/detail?id=1012629

...