Как расширить API JavaScript с помощью пользовательских методов, которые имеют доступ к собственному коду в Chromium - PullRequest
3 голосов
/ 18 января 2011

Я делаю пользовательскую сборку Chromium, чтобы получить доступ к функциональности речи к тексту, и не уверен, как открыть доступ к новому встроенному методу через JavaScript.

В других версиях WebKitСуществуют такие методы, как addToJavaScriptWindowObject (то есть в Qt), но я не уверен, как сделать то же самое в Chromium.

1 Ответ

2 голосов
/ 05 февраля 2011

Межпроцессный API является узким интерфейсом, поэтому имеет минимальное количество вызовов.

Прежде всего, я хотел бы указать вам на документированный способ добавления новых функций в кросс-браузерный API (вы можете найти «carnitas» в списке, чтобы узнать больше об этом): https://sites.google.com/a/chromium.org/dev/developers/design-documents/multi-process-architecture/how-to-add-new-features

В моем случае я пришел к решению, которое подключается к существующим вызовам API, в основном, вводя код javascript на страницу для вызова функции «prompt ()» в javascript для синхронных вызовов (замораживание всей вкладки до завершения), и / или "externalHost.postMessage" для асинхронных сообщений. На стороне браузера я подключаюсь к этим двум вызовам и обрабатываю их, при необходимости возвращая ответ.

Вы можете увидеть код, который я написал для Berkelium, библиотеки оболочки Chromium: https://github.com/sirikata/berkelium/blob/chromium8/src/WindowImpl.cpp (ищите все места, на которые ссылается javascriptCall, чтобы увидеть, как я подключаюсь к этим API). Тот же метод можно применить к самому Chromium, если вы хотите изменить render_view_host.cc или TabContents.

Вам следует подумать о том, какой уровень интеграции является правильным / необходимым для вашего API, и если вы заинтересованы в том, чтобы ваши функциональные возможности преобразования речи в текст были приняты в кодовой базе Chrome, вам, возможно, будет лучше следовать тому, как работают другие функции. реализован.

...