Доступ к виртуальной файловой системе или хранилищу инструментов dev в расширении Chrome - PullRequest
0 голосов
/ 19 мая 2019

Я ищу способ получить доступ (перечислить, получить и выполнить) фрагменты инструментов разработчика Chrome из расширения Chrome (инструменты разработки).

Кажется, что нет документированного, открытого API к API управления фрагментами
или базовой системе хранения.

Итак, я взглянул на код внешнего интерфейса dev tools .

Процесс обратного инжиниринга:

  • Я глобально искал в исходном коде «фрагменты» и просматривал результаты.

  • В конструкторе snippets/ScriptSnippetFileSystem.js они инициализируютобъект настроек через Common.settings.createSetting().

  • В main/Main.js _createSettings() они создают глобальный объект хранения, который использует InspectorFrontendHost.setPreference() в качестве бэкэнда для хранения данных посредством обратного вызова.

  • host/InspectorFrontendHost.js InspectorFrontendHost.setPreference(), с другой стороны, внутренне использует window.localStorage[name].И, конечно же, хранятся свойства, связанные с инструментами разработки, но без фрагментов.

  • Это привело меня к host/InspectorFrontendHostAPI.js, который предоставляет API для глобального объекта.

  • Это привело меня к InspectorFrontendAPI и DevToolsAPI.Хотя он определен в инспекторе, проверяющем инструменты разработчика, он не определен в контексте devtools.js моего расширения, несмотря на то, что permissions содержит devtools.

Выводы:

  • Я думаю, что доступ к фрагментам возможен только через API файловой системы
  • Мне нужно получить доступ к API файловой системы или к базовому хранилищу
  • InspectorFrontendAPI и DevToolsAPI Похоже, что API не предоставляют доступ к файловой системе в любом случае, возможно, через событие FileSystemAdded.

Как я могу получить доступ к фрагментам?


manifest.json

{
    "name": "Chrome dev tools extension test",
    "version": "1.0",
    "description": "Learn Chrome extensions",
    "manifest_version": 2,
    "devtools_page": "devtools.html",
    "permissions": [
        "devtools",
        "storage",
        "file:///*",
        "http://*/*",
        "https://*/*"
    ],
    "background": {
        "scripts": ["background.js"]
    }
}

devtools.html

<script src="devtools.js"></script>

devtools.js

console.log("# devtools page loaded");

try {
    console.log("# InspectorFrontendHostAPI", InspectorFrontendHostAPI);
} catch (e) {
    console.error("# Check for APIs error: ", e);
}

try {
    console.log("# InspectorFrontendHostAPI", DevToolsAPI);
} catch (e) {
    console.error("# Check for APIs error: ", e);
}

«Загружена страница # devtools», два API - нет.

...