Руководство по миграции WebAssembly

Объявления о прекращении поддержки (P)NaCl

Учитывая динамику кросс-браузерной поддержки WebAssembly, мы планируем сосредоточить усилия на собственном коде на WebAssembly в будущем и планируем прекратить поддержку PNaCl в четвертом квартале 2019 года (за исключением приложений Chrome). Мы считаем, что динамичная экосистема вокруг WebAssembly делает его более подходящим для новых и существующих высокопроизводительных веб-приложений, и что использование PNaCl достаточно мало, чтобы гарантировать его устаревание.

Начиная с Chrome 76, PNaCl в открытой сети был перенесен в рамках пробной версии Origin , которая представляет собой механизм, позволяющий веб-разработчикам зарегистрироваться и получить доступ к функции, которая не включена по умолчанию. Обычно это новая предлагаемая функция, но в данном случае она устарела. Разработчик может зарегистрироваться в пробной консоли Origin и получить токен, который можно встроить в страницу и активировать эту функцию без необходимости использования пользователем флага. (Более подробную информацию см. в связанном руководстве). Планируется, что пробная версия продлится до Chrome 78 примерно до декабря 2019 года. Это изменение не влияет на NaCl или PNaCl в приложениях или расширениях Chrome, а флаг «enable-nacl» в chrome://flags также можно использовать для включить PNaCl локально для тестирования (этот флаг также сохраняет свою текущую функцию включения «родного» NaCl, отличного от PNaCl, на любой странице).

Мы также недавно объявили о прекращении поддержки приложений Chrome за пределами ChromeOS в первом квартале 2018 года.

Миграция инструментальной цепочки

Для большинства случаев использования (P)NaCl мы рекомендуем перейти с NaCl SDK на Emscripten . Миграция, скорее всего, будет достаточно простой, если ваше приложение переносимо на Linux, использует API SDL или POSIX. Хотя прямая поддержка API-интерфейсов NaCl/Pepper недоступна, мы попытались перечислить эквиваленты веб-API. В случае более сложных случаев переноса обращайтесь по адресу Native-Client-Discuss @ googlegroups . ком

Миграция API

Здесь мы изложили статус заменителей веб-платформ для каждого API, подверженного воздействию (P)NaCl. Кроме того, в таблице перечислены библиотеки или опции Emscripten, предлагающие ближайшую замену.

Мы планируем добавить поддержку потоков общей памяти в WebAssembly в 2017 году, поскольку потоки имеют решающее значение для соответствия наиболее интересным вариантам использования (P)NaCl. Элементы миграции, предполагающие поддержку будущих потоков, отмечены ниже. Если управление потоком вашего приложения в значительной степени зависит от блокирующих API, вы также можете обнаружить, что для удобного портирования требуется поддержка потоков.

Хотя мы постарались быть точными в этой таблице, нет никаких сомнений в том, что в ней есть ошибки или упущения. Если вы столкнулись с такой проблемой, свяжитесь с нами по адресу Native-Client-Discuss @ googlegroups . ком

ППАПИ

ППБ_Аудио

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать х SDL (частичный) GAP (частичный) — AudioWorkletNode ПРИМЕРНО эквивалент AudioWorkletSpec готов, но AudioDeviceClient может лучше подойти для этого API. AudioDeviceClient все еще определяется сообществом. Возможно, ворлет не является грубым эквивалентом этого API.
Получить текущую конфигурацию СДЛ AudioContext.* (возвращает переданные настройки)
НачатьВоспроизведение СДЛ AudioBufferSourceNode.start
ОстановитьВоспроизведение СДЛ AudioBufferSourceNode.stop

PPB_AudioBuffer

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Получить временную метку СДЛ AudioBufferSourceNode.start (параметр) Передается каждый раз вместо прикрепления к буферу.
Установить временную метку СДЛ AudioBufferSourceNode.start (параметр)
GetSampleRate СДЛ AudioBuffer.sampleRate
GetSampleSize ЗАЗОР GAP — WebAudio использует только 32-битное число с плавающей точкой, PPAPI — 16-битное целое. PPAPI теоретически поддерживает несколько размеров выборки. На практике он поддерживает только 16-битные сэмплы. К сожалению, разработчики запросили 16-битные размеры выборки, чтобы сэкономить на использовании памяти. В следующей версии спецификации Web Audio будет реализована поддержка 16-битных сэмплов. Оптимизацию AudioBuffer можно реализовать аналогично Firefox, используя 16-битный буфер для звука, поступающего из decodeAudioData.
GetNumberOfChannels СДЛ AudioBuffer.numberOfChannels
GetDataBuffer СДЛ AudioBuffer.getChannelData
GetBufferSize СДЛ AudioBuffer.length

ППБ_АудиоКонфиг

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
СоздатьStereo16Bit ЗАЗОР GAP — поддерживаются только 32-битные образцы с плавающей запятой. В следующей версии спецификации Web Audio будет реализована поддержка 16-битных сэмплов.
GetSampleRate СДЛ AudioContext.sampleRate
GetSampleFrameCount СДЛ AudioBuffer.length
РекомендоватьSampleRate СДЛ AudioContext.sampleRate (из конструкции по умолчанию) AudioContext будет иметь предпочтительную частоту дискретизации, которая по умолчанию соответствует фактической частоте дискретизации аппаратного аудиоустройства.
РекомендоватьSampleFrameCount ЗАЗОР GAP — будет обрабатываться с помощью запланированного AudioDeviceClient. Существует открытый вопрос о разрешении размера, указываемого пользователем, но он все еще определяется. Вероятно, лучше всего это сделать с помощью AudioDeviceClient, который может сказать вам, какой размер будет подходящим для данного оборудования.

ППБ_Консоль

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Бревно время работы console.log/warn/error/...
Журнал с источником ЗАЗОР ЗАЗОР Консольный API считается достаточно полной заменой, если только разработчиками не предложены конкретные варианты использования функций, предоставляемых LogWithSource. Карты исходного кода DevTools можно использовать для отладки транспилированного JavaScript на исходном исходном языке.

PPB_Core

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
getTime время работы новая дата().getTime()
getTimeTicks время работы новая дата().getTime()
IsMainThread ЗАЗОР окно.документ !== не определено
CallOnMainThread ЗАЗОР Worker.postMessage + Atomics.wait Можно построить эквивалентную синхронизацию.

PPB_FileIO

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать ФС (частичный) окно.chooseFileSystemEntries() Create и open используются по-разному, но части имеют одинаковую силу.
Открыть ФС (частичный) окно.chooseFileSystemEntries()
Запрос ФС (частичный) Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.lastModified GAP (частичный) — Blob.type также можно использовать для проверки типа MIME. Тип файловой системы, время создания и время последнего доступа не могут быть определены с помощью Native File System API.
Трогать ФС (частичный) FileSystemDirectoryHandle.getFile("имя", {create: true})
Читать ФС (частичный) Blob.slice().arrayBuffer()
Писать ФС (частичный) ФайлСистемаWriter.write()
SetLength ФС (частичный) FileSystemWriter.truncate()
Румянец ГАП (частичный) GAP (частичный) — файлы сбрасываются при вызове FileSystemWrite.close(). Это задумано намеренно, поскольку файлы API собственной файловой системы доступны ОС, поэтому перед отображением данных в ОС необходимо выполнить проверку безопасного просмотра.
Закрывать ФС (частичный) ФайлСистемВритер.закрыть() Не отменяет ожидающие операции, но сбрасывает все записанные на данный момент данные на диск.
ReadToArray ЗАЗОР Blob.slice().arrayBuffer() или Blob.arrayBuffer() Позволяет параллельное чтение нескольких поддиапазонов.

PPB_FileRef

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать ФС (частичный) FileSystemDirectoryHandle.getFile("имя", {create: true})
GetFileSystemType ФС (частичный) ФайловаяСистема.тип
Получить имя ФС (частичный) Имя файла
GetPath ФС (частичный) GAP (частичный) — с помощью API собственной файловой системы относительный путь к файлу можно определить по ссылке на каталог, содержащий файл, с помощью FileSystemHandle.resolve(FileSystemHandle). Абсолютный путь к файлу определить невозможно, и пользователю необходимо предоставить разрешение на доступ к каталогу, содержащему файл.
GetParent ФС (частичный) GAP (частичный) — с помощью API собственной файловой системы относительный путь к файлу можно определить по ссылке на каталог, содержащий файл, с помощью FileSystemHandle.resolve(FileSystemHandle). Пользователь должен предоставить разрешение на доступ к каталогу, содержащему файл.
MakeDirectory ФС (частичный) FileSystemHandle.getDirectory(..., {createIfNotExists: true})
Трогать ФС (частичный) FileSystemDirectoryHandle.getFile("имя", {create: true}) Время изменения можно изменить, написав.
Удалить ФС (частичный) FileSystemDirectoryHandle.removeEntry() В отличие от PPAPI, каталоги не обязательно должны быть пустыми.
Переименовать ФС (частичный) GAP (частичный) — с помощью Native File System API файл можно записать с новым именем, используя комбинацию FileSystemFileHandle.getFile() для нового имени и FileSystemFileHandle.createWriter().write() с содержимым старого. файл. Затем FileSystemDirectoryHandle.removeEntry(), чтобы удалить старый файл. В API собственной файловой системы не существует прямого API, который мог бы сделать это за один шаг.
Запрос ГАП (частичный) Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.lastModified GAP (частичный) — Blob.type также можно использовать для проверки типа MIME. Тип файловой системы, время создания и время последнего доступа не могут быть определены с помощью API Native File System.
ReadDirectoryEntries ФС (частичный) FileSystemDirectoryHandle.getEntries()

PPB_FileSystem

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать ФС (частичный) окно.requestFileSystem JS API делает и то, и другое за один шаг
Открыть ЗАЗОР окно.requestFileSystem JS API делает и то, и другое за один шаг
GetType ЗАЗОР ФайловаяСистема.тип

ППБ_Полный экран

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
IsFullScreen html5.h Документ.fullscreenEnabled
Установить полноэкранный режим html5.h Document.requestFullscreen
GetScreenSize html5.h Document.exitFullscreen

PPB_Геймпад

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Образец СДЛ Геймпад.* Объект Gamepad предоставляет метку времени относительно NavigationStart. Он обновляется при получении данных от оборудования https://www.w3.org/TR/gamepad/#gamepad-interface

ППБ_Graphics2D

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать СДЛ Canvas.getContext('2d')
Описывать СДЛ Canvas.clientWidth + Canvas.clientHeight
PaintImageData СДЛ CanvasRenderingContext2D.putImageData
Прокрутка ЗАЗОР CanvasRenderingContext2D.scrollIntoView, CanvasRenderingContext2D.drawImage GAP (частичный) — может быть реализован путем рисования холста на самом себе со смещением, используя drawImage, а затем заполняя остальное.
ЗаменитьСодержимое СДЛ CanvasRenderingContext2D.drawImage
Румянец ЗАЗОР Нет прямого эквивалента GAP (частичный) — в конце кода отрисовки всегда имеется неявный сброс; это вряд ли изменится. Однако комбинация OffscreenCanvas и ImageBitmapRenderingContext обеспечивает аналогичную функциональность.
SetScale СДЛ CanvasRenderingContext2D.scale
GetScale СДЛ CanvasRenderingContext2D.currentTransform
SetLayerTransform СДЛ CanvasRenderingContext2D.setTransform CanvasRenderingContext2D.scale CanvasRenderingContext2D.translate

ППБ_Графика3D

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
GetAttribMaxValue OpenGL ES 3.0 ВебГЛ 2.0 GAP (частичный) — WebGL 2.0 и версия OpenGL ES 3.0 от Emscripten поддерживают определяемые пользователем кадровые буферы с мультисэмплированием, в которых можно установить все параметры, настраиваемые через PPAPI.
Создавать СДЛ Холст.getContext
GetAttribs СДЛ WebGLRenderingContext.getContextAttributes
SetAttribs СДЛ Canvas.getContext(.., ОПЦИИ)
Получить ошибку СДЛ WebGLRenderingContext.getError
Изменение размера буферов СДЛ Холст.ширина = ш; Холст.высота = ч;
SwapBuffers ЗАЗОР Нет прямого эквивалента GAP (частичный) — в конце кода отрисовки всегда имеется неявный сброс; это вряд ли изменится. Однако комбинация OffscreenCanvas и ImageBitmapRenderingContext обеспечивает аналогичную функциональность.

PPB_ImageData

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
GetNativeImageDataFormat СДЛ ImageData требует порядка RGBA
Исимажедатаформатподдерживаемый СДЛ ImageData требует порядка RGBA
Создавать СДЛ CanvasRenderingContext2d.createImageData
Описывать СДЛ ImageData никогда не делает шага вперед
Карта СДЛ ImageData.data
Отменить карту СДЛ ImageData.data

PPB_InputEvent

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
ЗапросИнпутЕвентс СДЛ Нет прямого эквивалента Отсутствие этой функции, вероятно, менее актуально, поскольку JS/Wasm работает в основном потоке и может дешевле фильтровать события, не подвергаясь перекрестному обмену процессами.
RequestFilteringInputEvents СДЛ мышь* клавиша* колесо* сенсорный* композиция* События
СДЛ Элемент.addEventListener
ClearInputEventRequest СДЛ Element.removeEventListener
GetType СДЛ Потомки класса событий
GetTimeStamp СДЛ Event.timeStamp
Получить модификаторы СДЛ *Event.altKey/shiftKey/metaKey/ctrlKey

PPB_MouseInputEvent

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать СДЛ MouseEvent
GetButton СДЛ MouseEvent.button
GetPosition СДЛ MouseEvent.client*/page*/offset*
GetClickCount СДЛ События dblclick» и «mousedown»
GetMovement СДЛ MouseEvent.movement*

PPB_WheelInputEvent

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать СДЛ КолесоСобытие
GetDelta СДЛ WheelEvent.delta*
GetTicks ЗАЗОР GAP - deltaMode вроде как содержит эту информацию, но не полностью. Обсуждается реализация API WheelEvent.deltaMode: https://github.com/w3c/uievents/issues/181#issuecomment-537811017.
GetScrollByPage ЗАЗОР GAP - deltaMode вроде как содержит эту информацию, но не полностью. Обсуждается реализация API WheelEvent.deltaMode: https://github.com/w3c/uievents/issues/181#issuecomment-537811017.

PPB_KeyboardInputEvent

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать СДЛ KeyboardEvent
GetKeyCode СДЛ KeyboardEvent.keyCode
GetCharacterText СДЛ KeyboardEvent.key
Получить код СДЛ KeyboardEvent.code

PPB_TouchInputEvent

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать СДЛ TouchEvent
Добавитьтачпоинт СДЛ TouchEvent.touches.push
GetTouchCount СДЛ TouchEvent.touches.length
GetTouchByIndex СДЛ TouchEvent.touches[я]
GetTouchById СДЛ Touch.indentifer (чтобы разобраться в этом самостоятельно)

PPB_IMEInputEvent

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать ЗАЗОР КомпозицияСобытие
Получитьтекст ЗАЗОР КомпозицияEvent.data
GetSegmentNumber ЗАЗОР GAP – прямого эквивалента нет. Эти данные потенциально можно получить из CompositionEvent.data.
GetSegmentOffset ЗАЗОР GAP – прямого эквивалента нет.
GetTargetSegment ЗАЗОР GAP – прямого эквивалента нет.
GetSelection ЗАЗОР GAP – прямого эквивалента нет.

PPB_экземпляр

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
BindГрафика СДЛ Canvas.getContext (спорно, поскольку привязка выполняется автоматически).
IsFullFrame ЗАЗОР GAP — нет эквивалента обработчикам типов mime. Приложения NaCl можно зарегистрировать для обработки определенного типа mime и владения всем документом.
DidCreate Н/Д <Элемент>[ключ] Общий доступ к DOM позволяет извлекать атрибуты тегов.
ДидУничтожить Н/Д Н/Д Не срабатывает для NaCl
DidChangeView Н/Д Событие изменения размера элемента
DidChangeFocus Н/Д Элемент «фокус», «фокус», «фокус» События
РучкаДокументЗагрузка Н/Д GAP – невозможно зарегистрироваться в качестве обработчика типа mime Модули NaCl через приложения + запись манифеста можно настроить для обработки определенных типов mime.

PPB_MediaStreamAudioTrack

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Настроить ЗАЗОР getUserMedia() Ограничения getUserMedia() могут предоставлять значения конфигурации для использования в MediaStreamTrack.
GetAttrib ЗАЗОР MediaStreamTrack.getSettings()
GetId ЗАЗОР МедиаСтримТрек.ид
Завершилось ЗАЗОР MediaStreamTrack.readyState
GetBuffer ЗАЗОР ГАП – нет эквивалента
RecycleBuffer ЗАЗОР ГАП – нет эквивалента
Закрывать ЗАЗОР МедиаСтримТрек.стоп()

PPB_MediaStreamVideoTrack

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать ЗАЗОР Захват холста Canvas Capture предоставляет возможность программно вводить видеокадры.
Настроить ЗАЗОР applyConstraints(), getUserMedia() GAP (частичный) — объем конфигураций, доступных в веб-API, может отличаться от PPAPI.
GetAttrib ЗАЗОР MediaStreamSettings.ширина
ЗАЗОР MediaStreamSettings.height
ЗАЗОР GAP – нет эквивалента PP_MEDIASTREAMVIDEOTRACK_ATTRIB_BUFFERED_FRAMES MediaStream не может быть предварительно загружен, поэтому он никогда не будет буферизоваться: https://www.w3.org/TR/mediacapture-streams/#mediastreams-in-media-elements
ЗАЗОР GAP – нет эквивалента PP_MEDIASTREAMVIDEOTRACK_ATTRIB_FORMAT
GetId ЗАЗОР МедиаСтримТрек.ид
Завершилось ЗАЗОР MediaStreamTrack.readyState
GetFrame ЗАЗОР ГАП – нет эквивалента
RecycleFrame ЗАЗОР ГАП – нет эквивалента
Закрывать ЗАЗОР МедиаСтримТрек.стоп()
GetEmptyFrame ЗАЗОР ГАП – нет эквивалента
PutFrame ЗАЗОР ГАП – нет эквивалента

PPB_MessageLoop

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать Н/Д В основном это спорный вопрос, работники получают неявный цикл событий.
GetForMainThread Н/Д В основном это спорный вопрос, работники получают неявный цикл событий.
Получить текущий Н/Д В основном это спорный вопрос, работники получают неявный цикл событий.
ПрисоединитьToCurrentThread Н/Д В основном это спорный вопрос, работники получают неявный цикл событий.
Бегать Н/Д В основном это спорный вопрос, работники получают неявный цикл событий.
Постработа Н/Д В основном это спорный вопрос, работники получают неявный цикл событий.
Пост-Выход Н/Д В основном это спорный вопрос, работники получают неявный цикл событий.

PPB_Сообщения

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
СообщениеСообщение Н/Д Окно.postMessage
Обработчик сообщения регистрации Н/Д Window.addEventListener
Отменить регистрацию обработчика сообщения Н/Д Window.removeEventListener

PPB_MouseCursor

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Установитькурсор СДЛ Элемент.стиль.курсор Поддерживается тот же набор стандартных курсоров. Пользовательские курсоры можно создать с помощью url(..). Динамические пользовательские курсоры можно создавать с помощью URI данных. CSS3 поддерживает указание точки доступа.

PPB_MouseLock

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
БлокировкаМышь СДЛ Элемент.requestPointerLock
РазблокироватьМышь СДЛ Элемент.exitPointerLock

ППБ_OpenGLES2

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Несколько методов OpenGLES По функциональности близок к WebGL 1.0.
х За кадромХолст

PPB_TextInputController

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Сеттекстинпуттипе ЗАЗОР GAP – потенциально заполняется с помощью API редактора методов ввода. Некоторые разработчики хотели бы либо иметь возможность подсказывать таким образом, либо, предпочтительно, иметь возможность перехватывать и отображать события/вывод IME внутри холста.
ОбновлениеКаретПозиция ЗАЗОР GAP – потенциально заполняется с помощью API редактора методов ввода. https://www.w3.org/TR/ime-api/
ОтменаКомпозицииТекст ЗАЗОР GAP – потенциально заполняется с помощью API редактора методов ввода. https://www.w3.org/TR/ime-api/
Обновление окружающего текста ЗАЗОР GAP – потенциально заполняется с помощью API редактора методов ввода. https://www.w3.org/TR/ime-api/

PPB_URLLoader

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать включать новый XMLHttpRequest();
Открыть включать XMLHttpRequest.open
СледоватьПеренаправление включать Запрос.перенаправление
ЗАЗОР GAP – нет эквивалента XMLHTTPRequest.
Получить прогресс загрузки включать Событие XMLHttpRequest 'прогресс'
ЗАЗОР FetchObserver Еще не запланировано и не реализовано; https://github.com/whatwg/fetch/issues/607
Получить прогресс загрузки включать Событие XMLHttpRequest 'прогресс'
ЗАЗОР FetchObserver Еще не разработано и не реализовано; https://github.com/whatwg/fetch/issues/607
GetResponseInfo включать XMLHttpRequest.getAllResponseHeaders
включать Получить ответ.*
ReadResponseBody включать XMLHttpRequest.response
включать Тело.* (Ответ — это тело)
Финишстримингтофиле включать GAP – прямого эквивалента нет. XMLHttpRequest и Fetch предполагают потоковую передачу в память, а не непосредственно в хранилище.
Закрывать включать XMLHttpRequest.abort
ЗАЗОР API-интерфейс получения: AbortSignal и AbortController

PPB_URLRequestInfo

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать включать XMLHttpRequest
включать Получить запрос
Установитьсвойство ЗАЗОР GAP – нет прямого эквивалента для XMLHttpRequest XMLHttpRequest не предоставляет прямых способов ограничения количества запросов после перенаправлений, потоковой передачи в файл, установки реферера или политики учетных данных.
включать Запрос.*
Аппенддататободи включать XMLHttpRequest.send GAP - Оба должны иметь все тело, а не кусок.
включать выборка(.., параметры:тело)
Аппендфилетободи ЗАЗОР fetch() загрузить потоковую передачу https://www.chromestatus.com/features/5274139738767360
Н/Д <форма> Вы также можете читать с помощью FileReader и загружать, но это больше похоже на AppendDataToBody.

PPB_URLResponseInfo

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
GetProperty включать XMLHttpRequest.getAllResponseHeaders + другие
включать Получить ответ.*
GetBodyAsFileRef включать Получить ответ (тело).blob() Предполагается, что уровень хранения оптимизирует передачу.

ППБ_Вар

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Варфромутф8 включать TextDecoder.decode
ВарТоУтф8 включать TextEncoder.encode
Варфромресурсе Н/Д Н/Д
ВарТоРесурс Н/Д Н/Д

PPB_VarArray

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Получать включать Массив[я]
Набор включать Массив[я] = х
Получить длину включать Массив.длина
SetLength включать Массив.длина = n

PPB_VarArrayBuffer

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать включать новый ArrayBuffer (n)
длина байта включать ArrayBuffer.byteLength
Карта ЗАЗОР GAP – прямого эквивалента нет. Модули Asm.js/Wasm не могут отображать области ArrayBuffer, кроме их единственной кучи линейной памяти. В будущем множественная память или отображение памяти могут улучшить эту ситуацию.
Отменить карту ЗАЗОР GAP – прямого эквивалента нет.

PPB_VarDictionary

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать включать {}
Получать включать <Объект>[я]
Набор включать <Объект>[i] = х
Удалить включать удалить <Объект>[i]
ХасКей включать х в <Объект>
Получить ключи включать for (k в <Объект>) {} Буквального эквивалента нет, но его можно построить.

PPB_VideoDecoder

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs с использованием VideoDecoder(). https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Инициализировать ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs с использованием параметров инициализации VideoDecoder() (VideoDecoderInitParameters). https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Декодировать ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs с использованием ReadableStream.pipeThrough(VideoDecoder). https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
GetPicture ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs с использованием ReadableStream.pipeThrough(VideoDecoder).pipeTo(VideoTrackWriter().writable). https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
RecycleКартинка ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs. Текущая конструкция автоматически перерабатывает изображения и продолжает процесс декодирования. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Румянец ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs. API будет называться Flush(), однако еще ведутся дискуссии о том, как он будет упорядочиваться по отношению к вызовам декодирования. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Перезагрузить ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs путем уничтожения экземпляра VideoDecoder и создания нового. Это будет не так эффективно, как специальный метод сброса, но семантика API Reset() все еще обсуждается. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming

PPB_VideoEncoder

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs с использованием VideoEncoder().
Получить поддерживаемые профили ЗАЗОР GAP (частичный) — navigator.mediaCapabilities.encodingInfo() Поддерживаемые профили необходимо проверять один за другим.
Инициализировать ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs с использованием параметров инициализации VideoEncoder().
GetFramesRequired ЗАЗОР ГАП – нет эквивалента Маловероятно, что пул кадров, используемый внутри API веб-кодеков, будет раскрыт.
GetFrameCodedSize ЗАЗОР ГАП – нет эквивалента Маловероятно, что пул кадров, используемый внутри API веб-кодеков, будет раскрыт.
Получитьвидеокадр ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs с использованием ReadableStream.pipeThrough(VideoEncoder). Это позволит напрямую кодировать данные в потоке Readable вместо захвата одного кадра для заполнения данными перед кодированием.
Кодировать ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs с использованием ReadableStream.pipeThrough(VideoEncoder).
GetBitstreamBuffer ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs. Текущий проект автоматически пройдет через буфер закодированного битового потока, который передается по конвейеру. API WebCodecs в настоящее время предполагает, что буфер битового потока можно копировать, а не объединять в пул, поэтому его не нужно перерабатывать.
RecycleBitstreamBuffer ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs. Текущая конструкция автоматически перезапускает буфер для продолжения процесса кодирования. Это вряд ли изменится в будущем, поскольку влияние на производительность меньше.
ЗапросEncodingParametersChange ЗАЗОР GAP — будет обрабатываться предлагаемым API веб-кодеков. Некоторые параметры можно будет изменять на лету, в то время как другие потребуют демонтажа кодировщика.
Закрывать ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs с помощью VideoEncoder.Close().

PPB_VideoFrame

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Получить временную метку ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs.
Установить временную метку ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs.
GetFormat ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs.
GetSize ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs.
GetDataBuffer ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs.
GetDataBufferSize ЗАЗОР GAP — будет обрабатываться с помощью предлагаемого API WebCodecs.

ППБ_Просмотр

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
GetRect включать Element.getBoundingClientRect
IsFullscreen включать Документ.fullScreenEnabled Относится к документу, а не только к одному элементу.
IsVisible включать ПересечениеОбозреватель
IsPageVisible включать документ.visibilityState
GetClipRect включать ПересечениеОбозреватель
GetDeviceScale включать окно.devicePixelRatio
Получить CSSScale включать <Element>.getBoundingClientRect().width / <Element>.offsetWidth
GetScrollOffset включать <Элемент>.scrollTop / <Элемент>.scrollLeft

PPB_WebSocket

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать ЗАЗОР Вебсокет.Вебсокет
Соединять ЗАЗОР WebSocket.WebSocket(url, ...) Событие WebSocket «open»
Закрывать ЗАЗОР Вебсокет.закрыть
Получить сообщение ЗАЗОР Событие WebSocket «сообщение» Событие WebSocket «ошибка» Событие WebSocket «закрытие»
Отправить сообщение ЗАЗОР WebSocket.send
GetBufferedAmount ЗАЗОР WebSocket.bufferedAmount
GetCloseCode ЗАЗОР CloseEvent.code
GetCloseReason ЗАЗОР CloseEvent.reason
GetCloseWasClean ЗАЗОР CloseEvent.wasClean
Получить расширения ЗАЗОР WebSocket.extensions
Получить протокол ЗАЗОР WebSocket.протокол
GetReadyState ЗАЗОР Вебсокет.readyState
ПолучитьURL ЗАЗОР Вебсокет.url

PPP_Graphics3D

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Графика3DКонтекстПотерян СДЛ Событие Canvas 'webglcontextlost'

PPP_InputEvent

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
HandleInputEvent СДЛ Элемент.addEventListener

PPP_экземпляр

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
DidCreate Н/Д <Элемент>[ключ] Общий доступ к DOM позволяет извлекать атрибуты тегов.
ДидУничтожить Н/Д Н/Д Не срабатывает для NaCl
DidChangeView Н/Д Событие изменения размера элемента
DidChangeFocus Н/Д Элемент «фокус», «фокус», «фокус» События
РучкаДокументЗагрузка Н/Д GAP – невозможно зарегистрироваться в качестве обработчика типа mime Модули NaCl через приложения + запись манифеста можно настроить для обработки определенных типов mime.

PPP_MessageHandler

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
РучкаСообщение включать MessagePort 'message' Окно событий 'message' Событие
РучкаБлокировкаСообщение Н/Д GAP – прямого эквивалента нет. Аналогичную синхронизацию можно выполнить вне основного потока с помощью Atomics.wait. Это было добавлено для поддержки эмуляции API синхронных плагинов.

PPP_Сообщения

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
РучкаСообщение включать MessagePort 'message' Окно событий 'message' Событие

PPP_MouseLock

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
МышьЗамокПотерян СДЛ События элемента 'pointerlockchange', 'pointerlockerror'

ИРТ

ППБ_Аудио

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать х SDL (частичный) GAP (частичный) — AudioWorkletNode ПРИМЕРНО эквивалент AudioWorkletSpec готов, но AudioDeviceClient может лучше подойти для этого API. AudioDeviceClient все еще определяется сообществом. Возможно, ворлет не является приблизительным эквивалентом этого API.
Получить текущую конфигурацию СДЛ AudioContext.* (возвращает переданные настройки)
НачатьВоспроизведение СДЛ AudioBufferSourceNode.start
ОстановитьВоспроизведение СДЛ AudioBufferSourceNode.stop

PPB_AudioBuffer

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Получить временную метку СДЛ AudioBufferSourceNode.start (параметр) Передается каждый раз вместо прикрепления к буферу.
Установить временную метку СДЛ AudioBufferSourceNode.start (параметр)
GetSampleRate СДЛ AudioBuffer.sampleRate
GetSampleSize ЗАЗОР GAP — WebAudio использует только 32-битное число с плавающей запятой, PPAPI — 16-битное целое. PPAPI теоретически поддерживает несколько размеров выборки. На практике он поддерживает только 16-битные сэмплы. К сожалению, разработчики запросили 16-битные размеры выборки, чтобы сэкономить на использовании памяти. В следующей версии спецификации Web Audio будет реализована поддержка 16-битных сэмплов. Оптимизацию AudioBuffer можно реализовать аналогично Firefox, используя 16-битный буфер для звука, поступающего из decodeAudioData.
GetNumberOfChannels СДЛ AudioBuffer.numberOfChannels
GetDataBuffer СДЛ AudioBuffer.getChannelData
GetBufferSize СДЛ AudioBuffer.length

ППБ_АудиоКонфиг

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
СоздатьStereo16Bit ЗАЗОР GAP — поддерживаются только 32-битные образцы с плавающей запятой. В следующей версии спецификации Web Audio будет реализована поддержка 16-битных сэмплов.
GetSampleRate СДЛ AudioContext.sampleRate
GetSampleFrameCount СДЛ AudioBuffer.length
РекомендоватьSampleRate СДЛ AudioContext.sampleRate (из конструкции по умолчанию) AudioContext будет иметь предпочтительную частоту дискретизации, которая по умолчанию соответствует фактической частоте дискретизации аппаратного аудиоустройства.
РекомендоватьSampleFrameCount ЗАЗОР GAP – будет обрабатываться с помощью запланированного AudioDeviceClient. Существует открытый вопрос о разрешении размера, указываемого пользователем, но он все еще определяется. Вероятно, лучше всего это решить с помощью AudioDeviceClient, который может сказать вам, какой размер будет подходящим для данного оборудования.

ППБ_Консоль

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Бревно время работы console.log/warn/error/...
Журнал с источником ЗАЗОР ЗАЗОР Консольный API считается достаточно полной заменой, если только разработчиками не предложены конкретные варианты использования функций, предоставляемых LogWithSource. Карты исходного кода DevTools можно использовать для отладки транспилированного JavaScript на исходном исходном языке.

PPB_Core

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
getTime время работы новая дата().getTime()
getTimeTicks время работы новая дата().getTime()
IsMainThread ЗАЗОР окно.документ !== не определено
CallOnMainThread ЗАЗОР Worker.postMessage + Atomics.wait Можно построить эквивалентную синхронизацию.

PPB_FileIO

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать ФС (частичный) окно.chooseFileSystemEntries() Create и open используются по-разному, но части имеют одинаковую силу.
Открыть ФС (частичный) окно.chooseFileSystemEntries()
Запрос ФС (частичный) Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.lastModified GAP (частичный) — Blob.type также можно использовать для проверки типа MIME. Тип файловой системы, время создания и время последнего доступа не могут быть определены с помощью Native File System API.
Трогать ФС (частичный) FileSystemDirectoryHandle.getFile("имя", {create: true})
Читать ФС (частичный) Blob.slice().arrayBuffer()
Писать ФС (частичный) ФайлСистемаWriter.write()
SetLength ФС (частичный) FileSystemWriter.truncate()
Румянец ГАП (частичный) GAP (частичный) — файлы сбрасываются при вызове FileSystemWrite.close(). Это задумано намеренно, поскольку файлы API собственной файловой системы доступны ОС, поэтому перед отображением данных в ОС необходимо выполнить проверку безопасного просмотра.
Закрывать ФС (частичный) ФайлСистемВритер.закрыть() Не отменяет ожидающие операции, но сбрасывает все записанные на данный момент данные на диск.
ReadToArray ЗАЗОР Blob.slice().arrayBuffer() или Blob.arrayBuffer() Позволяет параллельное чтение нескольких поддиапазонов.

PPB_FileRef

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать ФС (частичный) FileSystemDirectoryHandle.getFile("имя", {create: true})
GetFileSystemType ФС (частичный) ФайловаяСистема.тип
Получить имя ФС (частичный) Имя файла
GetPath ФС (частичный) GAP (частичный) — с помощью API собственной файловой системы относительный путь к файлу можно определить по ссылке на каталог, содержащий файл, с помощью FileSystemHandle.resolve(FileSystemHandle). Абсолютный путь к файлу определить невозможно, и пользователю необходимо предоставить разрешение на доступ к каталогу, содержащему файл.
GetParent ФС (частичный) GAP (частичный) — с помощью API собственной файловой системы относительный путь к файлу можно определить по ссылке на каталог, содержащий файл, с помощью FileSystemHandle.resolve(FileSystemHandle). Пользователь должен предоставить разрешение на доступ к каталогу, содержащему файл.
MakeDirectory ФС (частичный) FileSystemHandle.getDirectory(..., {createIfNotExists: true})
Трогать ФС (частичный) FileSystemDirectoryHandle.getFile("имя", {create: true}) Время изменения можно изменить, написав.
Удалить ФС (частичный) FileSystemDirectoryHandle.removeEntry() В отличие от PPAPI, каталоги не обязательно должны быть пустыми.
Переименовать ФС (частичный) GAP (частичный) — с помощью Native File System API файл можно записать с новым именем, используя комбинацию FileSystemFileHandle.getFile() для нового имени и FileSystemFileHandle.createWriter().write() с содержимым старого. файл. Затем FileSystemDirectoryHandle.removeEntry(), чтобы удалить старый файл. В API собственной файловой системы не существует прямого API, который мог бы сделать это за один шаг.
Запрос ГАП (частичный) Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.lastModified GAP (частичный) — Blob.type также можно использовать для проверки типа MIME. Тип файловой системы, время создания и время последнего доступа не могут быть определены с помощью Native File System API.
ReadDirectoryEntries ФС (частичный) FileSystemDirectoryHandle.getEntries()

PPB_FileSystem

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать ФС (частичный) окно.requestFileSystem JS API делает и то, и другое за один шаг
Открыть ЗАЗОР окно.requestFileSystem JS API делает и то, и другое за один шаг
GetType ЗАЗОР ФайловаяСистема.тип

ППБ_Полный экран

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
IsFullScreen html5.h Документ.fullscreenEnabled
Установить полноэкранный режим html5.h Document.requestFullscreen
GetScreenSize html5.h Document.exitFullscreen

PPB_Геймпад

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Образец СДЛ Геймпад.* Объект Gamepad предоставляет метку времени относительно NavigationStart. Он обновляется при получении данных от оборудования https://www.w3.org/TR/gamepad/#gamepad-interface

ППБ_Graphics2D

Метод PPAPI Предполагает потоки Эмскриптен Веб-API Ограничения
Создавать СДЛ Canvas.getContext('2d')
Описывать СДЛ Canvas.clientWidth + Canvas.clientHeight
PaintImageData СДЛ CanvasRenderingContext2D.putImageData
Прокрутка ЗАЗОР CanvasRenderingContext2D.scrollIntoView, CanvasRenderingContext2D.drawImage GAP (частичный) — может быть реализован путем рисования холста на себя со смещением с помощью drawImage и последующего заполнения оставшейся части.
ЗаменитьСодержимое СДЛ CanvasRenderingContext2D.Drawimage
Румянец ЗАЗОР Нет прямого эквивалента GAP (Partial) - В конце кода рисунка всегда есть неявный смысл; Это вряд ли изменится. Тем не менее, комбинация вне экрана и ImagebitmaprenderingContext предоставляет аналогичную функциональность.
SetScale СДЛ CanvasRenderingContext2D.Scale
Getscale СДЛ CanvasRenderingContext2d.currentTransform
SetLayerTransform СДЛ CanvasRenderingContext2D.SetTransform CanvasRenderingContext2d.Scale CanvasRenderingContext2D.Translate

Ppb_graphics3d

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Getattribmaxvalue OpenGL ES 3.0 Webgl 2.0 GAP (Partial) - WebGL 2.0 и Emscripten's Opens OpenGL ES 3.0 поддерживают пользовательские многопользовательские кадры, в которых могут быть установлены все параметры, настраиваемые с помощью PPAPI.
Создавать СДЛ Canvas.getContext
Getattribs СДЛ Webglrenderingcontext.getContextattributes
Setattribs СДЛ Canvas.getContext (.., Options)
Geterror СДЛ Webglrenderingcontext.geterror
RESIZEBUFFERS СДЛ Canvas.width = w; Canvas.height = h;
Смены ЗАЗОР Нет прямого эквивалента GAP (Partial) - В конце кода рисунка всегда есть неявный смысл; Это вряд ли изменится. Тем не менее, комбинация вне экрана и ImagebitmaprenderingContext предоставляет аналогичную функциональность.

PPB_ImageData

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
GetNativeImagedataFormat СДЛ Imagedata мандаты RGBA приказ
Isimagedataformatsupported СДЛ Imagedata мандаты RGBA приказ
Создавать СДЛ CanvasRenderingContext2d.createImagedata
Описывать СДЛ Imagedata никогда не имеет шага
Карта СДЛ Imagedata.data
Невозмутимый СДЛ Imagedata.data

PPB_INPUTEVENT

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Запрос СДЛ Нет прямого эквивалента Отсутствие этой функции, вероятно, менее актуально, так как JS / WASM работает в основной потоке и может дешевле фильтровать события без перекрестного процесса в оба конца.
RequestFilteringInputeVents СДЛ мышь* ключ* колесо* прикосновение* композиция* События
СДЛ Element.AddeventListener
ClearInPuteVentRequest СДЛ Element.removeeventlistener
GetType СДЛ Класс мероприятий потомки
GetTimeStamp СДЛ Event.timestamp
GetModifiers СДЛ *Event.altkey/shiftkey/metakey/ctrlkey

Ppb_mouseinputevent

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать СДЛ MouseEvent
Getbutton СДЛ Mouseevent.button
GetPosition СДЛ Mouseevent.client*/page*/offset*
GetClickCount СДЛ Dblclick 'Vs' Mousedown Events
GetMovement СДЛ Mouseevent.movement*

PPB_WheelInputEvent

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать СДЛ WheelEvent
Getdelta СДЛ Wheelevent.delta*
Getticks ЗАЗОР Gap - Deltamode содержит эту информацию, но не полностью. Существует обсуждение в реализации API wheelevent.deltamode: https://github.com/w3c/uievents/issues/181#issuecomment-537811017
GetScrollBypage ЗАЗОР Gap - Deltamode содержит эту информацию, но не полностью. Существует обсуждение в реализации API wheelevent.deltamode: https://github.com/w3c/uievents/issues/181#issuecomment-537811017

Ppb_keyboardinputevent

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать СДЛ KeyboardEvent
GetKeyCode СДЛ Keyboardevent.keycode
GetCharacterText СДЛ Keyboardevent.key
GetCode СДЛ Keyboardevent.code

Ppb_touchinputevent

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать СДЛ TouchEvent
Addtouchpoint СДЛ Touchevent.touches.push
GetTouchCount СДЛ Touchevent.touches.length
GetTouchByindex СДЛ Touchevent.touches [i]
GetTouchbyid СДЛ Прикоснись.

PPB_IMEInputEvent

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать ЗАЗОР CompositionEvent
Получитьтекст ЗАЗОР CompositionEvent.data
GetSegmentNumber ЗАЗОР Разрыв - без прямой эквивалент Эти данные потенциально могут быть извлечены из compositionEvent.data.
GetSementOffset ЗАЗОР Разрыв - без прямой эквивалент
GetTargetSegment ЗАЗОР Разрыв - без прямой эквивалент
GetSelection ЗАЗОР Разрыв - без прямой эквивалент

Ppb_instance

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
BindGraphics СДЛ Canvas.getContext (Moot As Buding Automatic).
Isfullframe ЗАЗОР GAP - Нет эквивалента обработчиков типа MIME. Приложения NACL могут быть зарегистрированы для обработки конкретного типа MIME и владения всем документом.
Didcreate Н/Д <element> [ключ] Общий доступ к DOM позволяет вам рыть атрибуты тега
Дидестрой Н/Д Н/Д Не запускается для NaCl
Didchangeview Н/Д Элемент «Изменение размера»
Didchangefocus Н/Д Элемент 'Focus', 'Focusin', 'Focusout' события
Обработка Н/Д Разрыв - нет способа зарегистрироваться в качестве обработчика типа MIME Модули NaCl через приложения + манифестная запись может быть настроена для обработки определенных типов MIME.

Ppb_mediastreamaudiotrack

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Настроить ЗАЗОР getusermedia () Ограничения от getUsermedia () могут предоставить значения конфигурации для использования в MediaStreamTrack.
Getattrib ЗАЗОР Mediastreamtrack.getSettings ()
GetId ЗАЗОР Mediastreamtrack.id
Увеличен ЗАЗОР Mediastreamtrack.readystate
GetBuffer ЗАЗОР Разрыв - без эквивалента
Recyclebuffer ЗАЗОР Разрыв - без эквивалента
Закрывать ЗАЗОР Mediastreamtrack.stop ()

Ppb_mediastreamvideotrack

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать ЗАЗОР Захват холста Canvas захват обеспечивает возможность программно вводить видео кадры.
Настроить ЗАЗОР ApplyConstraints (), getUsermedia () GAP (частичный) - степень конфигураций, доступных в веб -API, может отличаться от PPAPI.
Getattrib ЗАЗОР MediaStreamSettings.width
ЗАЗОР MediaStreamSettings.height
ЗАЗОР GAP - Нет эквивалента PP_MediastreamVideOtrack_attrib_buffered_frames MediaStream не может быть предварительно загружен, поэтому он никогда не будет буфером: https://www.w3.org/tr/mediacapture-streams/#mediastreams-in-media-elements
ЗАЗОР GAP - нет эквивалента PP_MediastreamVideOtrack_attrib_format
GetId ЗАЗОР Mediastreamtrack.id
Увеличен ЗАЗОР Mediastreamtrack.readystate
GetFrame ЗАЗОР Разрыв - без эквивалента
Recycleframe ЗАЗОР Разрыв - без эквивалента
Закрывать ЗАЗОР Mediastreamtrack.stop ()
GetEmptyFrame ЗАЗОР Разрыв - без эквивалента
PUTFRAME ЗАЗОР Разрыв - без эквивалента

Ppb_messageloop

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать Н/Д В основном спорные, работники получают неявный цикл событий.
GetFormainThread Н/Д В основном спорные, работники получают неявный цикл событий.
GetCurrent Н/Д В основном спорные, работники получают неявный цикл событий.
AttactTocurrentThread Н/Д В основном спорные, работники получают неявный цикл событий.
Бегать Н/Д В основном спорные, работники получают неявный цикл событий.
Почтовая работа Н/Д В основном спорные, работники получают неявный цикл событий.
Постквит Н/Д В основном спорные, работники получают неявный цикл событий.

Ppb_messaging

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Postmessage Н/Д Window.postmessage
Registermessagehandler Н/Д Window.addeventListener
Ungistermessagehandler Н/Д Window.removeeventListener

Ppb_mousecursor

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
SetCursor СДЛ Element.style.cursor Тот же набор курсоров на складе поддерживается. Пользовательские курсоры могут быть сделаны с помощью URL (..). Динамические пользовательские курсоры могут быть сделаны с помощью данных URI. CSS3 поддерживает указание горячей точки.

Ppb_mouseLock

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Lockmouse СДЛ Element.requestpointerlock
Разблокировать СДЛ Element.ExitPointerLock

Ppb_opengles2

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Несколько методов OpenGLES Рядом с Webgl 1.0 в функциональности.
х Вне экрана

PPB_TEXTINPUTCONTROLLER

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
SetTextInputType ЗАЗОР GAP - потенциально заполненный API редактора метода ввода Некоторые разработчики хотели бы либо иметь возможность намекнуть таким образом, либо предпочтительнее возможность перехватывать и отображать IME события / выводы в линии внутри холста.
UpdateCaretPosition ЗАЗОР GAP - потенциально заполненный API редактора метода ввода https://www.w3.org/tr/ime-api/
CancelCompositionText ЗАЗОР GAP - потенциально заполненный API редактора метода ввода https://www.w3.org/tr/ime-api/
UpdatesurroundingText ЗАЗОР GAP - потенциально заполненный API редактора метода ввода https://www.w3.org/tr/ime-api/

PPB_URLLoader

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать включать new xmlhttprequest ();
Открыть включать Xmlhttprequest.open
Следуйте включать Request.redirect
ЗАЗОР GAP - NO XMLHTTPREQUEST эквивалент
GetUploadProgress включать Xmlhttprequest 'Прогресс' событие
ЗАЗОР Fetchobserver Еще не указан и не реализован; https://github.com/whatwg/fetch/issues/607
GetDownloadProgress включать Xmlhttprequest 'Прогресс' событие
ЗАЗОР Fetchobserver Еще не указан и не реализован; https://github.com/whatwg/fetch/issues/607
GetResponseInfo включать Xmlhttprequest.getallresponseHeaders
включать Ответ извлечения.*
ReadResponsebody включать Xmlhttprequest.response
включать Тело.* (Ответ - это тело)
FinishStreamingtofile включать Разрыв - без прямой эквивалент Xmlhttprequest и Fetch оба предполагают потоковую передачу в память, а не непосредственно в хранилище.
Закрывать включать Xmlhttprequest.abort
ЗАЗОР Fetch API: Аборт и абортконтроллер

Ppb_urlrequestinfo

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать включать Xmlhttprequest
включать Запрос выбора
SetProperty ЗАЗОР GAP - Нет прямого эквивалента для xmlhttprequest Xmlhttprequest не предоставляет прямые способы до лимита в отношении лимита после перенаправления, транслировать в файл, установить рефератора или политики учетных данных.
включать Запрос.*
AppendAtatobody включать Xmlhttprequest.send Разрыв - оба должны иметь все тело, а не кусок.
включать Фетч (.., варианты: тело)
Appendfiletobody ЗАЗОР fetch () загрузить потоковую передачу https://www.chromestatus.com/features/5274139738767360
Н/Д <форма> Вы также можете читать с помощью FileReader и загрузки, но это больше похоже на AppendAtatobody

PPB_URLResponseInfo

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
GetProperty включать Xmlhttprequest.getallresponseHeaders + другие
включать Ответ извлечения.*
GetBodyAsFileref включать Ответ (тело) .blob () Предполагает, что уровень хранения оптимизирует передачу.

Ppb_var

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Varfromutf8 включать TextDecoder.decode
Vartoutf8 включать Textencoder.encode
Varfromresource Н/Д Н/Д
Vartoresource Н/Д Н/Д

Ppb_vararray

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Получать включать Массив [я]
Набор включать Массив [i] = x
GetLength включать Массив.длина
SetLength включать Array.length = n

Ppb_vararraybuffer

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать включать Новый ArrayBuffer (n)
Bytelength включать ArrayBuffer.byTeLength
Карта ЗАЗОР Разрыв - без прямой эквивалент Модули ASM.JS / WASM не могут отображать области массива, кроме их единой линейной кучи памяти. Будущие множественные воспоминания или картирование памяти могут улучшить это.
Невозмутимый ЗАЗОР Разрыв - без прямой эквивалент

PPB_VarDictionary

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать включать {}
Получать включать <object> [i]
Набор включать <object> [i] = x
Удалить включать DELETE <Object> [i]
Хаски включать x в <объект>
GetKeys включать for (k в <object>) {} Нет буквального эквивалента, но это может быть построено.

Ppb_videodecoder

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать ЗАЗОР GAP - будет обрабатываться с предложенным API WebCodecs с использованием VideoDecoder () https://github.com/wicg/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-raining-or-cloud-gaming
Инициализировать ЗАЗОР GAP - будет обрабатываться с предложенным API WebCodecs с использованием параметров инициализации VideoDecoder () (VideoDecoderinitParameters) https://github.com/wicg/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-raining-or-cloud-gaming
Декодировать ЗАЗОР GAP - будет обрабатываться с предложенным API WebCodecs с использованием readableStream.pipethrough (VideoDecoder) https://github.com/wicg/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-raining-or-cloud-gaming
GetPicture ЗАЗОР GAP - будет обрабатываться с предложенным API WebCodecs с использованием readableStream.pipethrough (videodecoder) .pipeto (VideOTrackWriter (). https://github.com/wicg/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-raining-or-cloud-gaming
Переработка ЗАЗОР GAP - будет обрабатываться с предложенным API веб -кодексов. Текущий дизайн автоматически перерабатывает изображения и сохранит процесс декодирования. https://github.com/wicg/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-raining-or-cloud-gaming
Румянец ЗАЗОР GAP - будет обрабатываться с предложенным API веб -кодексов. API будет называться Flush (), однако все еще есть обсуждение того, как он будет секвенировать в отношении вызовов декодирования. https://github.com/wicg/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-raining-or-cloud-gaming
Перезагрузить ЗАЗОР GAP - будет обрабатываться с предложенным API WebCodecs путем уничтожения экземпляра VideoDecoder и создания нового. Это не будет таким эффективным, как выделенный метод сброса, но семантика для API сброса () все еще обсуждается. https://github.com/wicg/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-raining-or-cloud-gaming

Ppb_videoencoder

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать ЗАЗОР GAP - будет обрабатываться с предложенным API WebCodecs с использованием VideoEncoder ()
GetSupportedProfiles ЗАЗОР GAP (Partial) - NAVIGATOR.MEDIAIACAPAILIED.ENCODINGINFO () Поддерживаемые профили должны быть проверены один за другим.
Инициализировать ЗАЗОР GAP - будет обрабатываться с предложенным API WebCodecs с использованием параметров инициализации VideoEncoder ()
GetFramesRequired ЗАЗОР Разрыв - без эквивалента Маловероятно, что пул кадров, используемый внутри веб -кодеков, обнажается.
GetFrameCodeSize ЗАЗОР Разрыв - без эквивалента Маловероятно, что пул кадров, используемый внутри веб -кодеков, обнажается.
GetVideOframe ЗАЗОР GAP - будет обрабатываться с предложенным API WebCodecs с помощью readableStream.pipethrough (VideoCoder). Это напрямую кодирует данные в читаемом потоке вместо того, чтобы захватить один кадр для заполнения данными перед кодированием.
Кодировать ЗАЗОР GAP - будет обрабатываться с предложенным API WebCodecs с использованием readableStream.pipethrough (VideoCoder)
GetBitStreamBuffer ЗАЗОР GAP - будет обрабатываться с предложенным API веб -кодексов. Текущий дизайн автоматически пройдет через закодированный буфер битского обработки, который проходит через. API Webcodecs в настоящее время предполагает, что буфер bitstream можно скопировать, а не объединить, поэтому его не нужно будет переработать.
RecyclebitStreamBuffer ЗАЗОР GAP - будет обрабатываться с предложенным API веб -кодексов. Текущий дизайн автоматически перерабатывает буфер, чтобы продолжить процесс кодирования. Вряд ли это изменится в будущем, поскольку последствия для производительности меньше.
RequestEncodingparameterschange ЗАЗОР GAP - будет обрабатываться предложенным API веб -кодеков. Определенные параметры будут иметь возможность меняться на лету, в то время как другие потребуют, чтобы кодировщик был снесен.
Закрывать ЗАЗОР GAP - будет обрабатываться с предложенным API WebCodecs с использованием videoencoder.close ()

Ppb_videoframe

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
GetTimeStamp ЗАЗОР GAP - будет обрабатываться с предложенным API веб -кодексов.
SetTimeStamp ЗАЗОР GAP - будет обрабатываться с предложенным API веб -кодексов.
GetFormat ЗАЗОР GAP - будет обрабатываться с предложенным API веб -кодексов.
Getsize ЗАЗОР GAP - будет обрабатываться с предложенным API веб -кодексов.
GetDataBuffer ЗАЗОР GAP - будет обрабатываться с предложенным API веб -кодексов.
GetDataBuffersize ЗАЗОР GAP - будет обрабатываться с предложенным API веб -кодексов.

Ppb_view

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Получить включать Element.getBoundingClientRect
IsfullScreen включать Document.fullScreenenedabled Относится к документу, а не только один элемент.
IsVisible включать RecsectionObserver
Ispagevisible включать Document.visibubleState
GetCliprect включать RecsectionObserver
GetDevicescale включать окно.devicePixelRatio
Getcsssscale включать <element> .getBoundingClientRect (). Ширина / <element> .OFFSETWIDTH
GetScrolloffset включать <element> .scrolltop / <element> .scrollleft

PPB_WebSocket

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать ЗАЗОР Websocket.websocket
Соединять ЗАЗОР Websocket.websocket (url, ...) websocket 'Open' Event
Закрывать ЗАЗОР Websocket.close
Получение ЗАЗОР Websocket 'message' event websocket recore 'websocket websocket' close '
Отправить сообщение ЗАЗОР Websocket.send
GetBufferedAmount ЗАЗОР Websocket.bufferedamount
GetCloseCode ЗАЗОР CloseEvent.code
GetClosereason ЗАЗОР CloseEvent.Reason
GetClosewasclean ЗАЗОР CloseEvent.wasclean
Getextensions ЗАЗОР Websocket.extensions
GetProtocol ЗАЗОР Websocket.protocol
GetreadyState ЗАЗОР Websocket.readystate
Geturl ЗАЗОР Websocket.url

Ppp_graphics3d

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Graphics3dcontextlost СДЛ Canvas 'webglcontextlost' событие

PPP_INPUTEVENT

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Руководитель СДЛ Element.AddeventListener

PPP_экземпляр

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Didcreate Н/Д <element> [ключ] Общий доступ к DOM позволяет вам рыть атрибуты тега
Дидестрой Н/Д Н/Д Не запускается для NaCl
Didchangeview Н/Д Элемент «Изменение размера»
Didchangefocus Н/Д Элемент 'Focus', 'Focusin', 'Focusout' события
Обработка Н/Д Разрыв - нет способа зарегистрироваться в качестве обработчика типа MIME Модули NaCl через приложения + манифестная запись может быть настроена для обработки определенных типов MIME.

PPP_MessageHandler

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Handlemessage включать Сообщение «Сообщение" сообщено "Сообщение"
HandleblockingMessage Н/Д Разрыв - без прямой эквивалент Подобная синхронизация может быть сделана из основной потока с Atomics.Wait. Это было добавлено, чтобы поддержать эмуляцию API -интерфейсов синхронных плагинов.

PPP_Сообщения

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Handlemessage включать Сообщение «Сообщение" сообщено "Сообщение"

PPP_MouseLock

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
MouseLocklost СДЛ Элемент 'pointerlockChange', 'Pointerlockerror' события

PPAPI (приложения)

PPB_HostResolver

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать х ЗАЗОР Разрыв (частичный) - нет прямой эквивалент
Решать х ЗАЗОР Разрыв (частичный) - нет прямой эквивалент
GetCanonicalName х ЗАЗОР Разрыв (частичный) - нет прямой эквивалент
GetNetAddressCount х ЗАЗОР Разрыв (частичный) - нет прямой эквивалент
GetNetAddress х ЗАЗОР Разрыв (частичный) - нет прямой эквивалент

PPB_NetAddress

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Createfromipv4address х ЗАЗОР Разрыв (частичный) - нет прямой эквивалент
Createfromipv6address х ЗАЗОР Разрыв (частичный) - нет прямой эквивалент
GetFamily х ЗАЗОР Разрыв (частичный) - нет прямой эквивалент
Описаться х ЗАЗОР Разрыв (частичный) - нет прямой эквивалент
DesciveAsipv4address х ЗАЗОР Разрыв (частичный) - нет прямой эквивалент
DesciveAsipv6address х ЗАЗОР Разрыв (частичный) - нет прямой эквивалент

Ppb_networklist

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
GetCount х ЗАЗОР Разрыв - без прямой эквивалент
Получить имя х ЗАЗОР Разрыв - без прямой эквивалент
GetType х ЗАЗОР Разрыв - без прямой эквивалент
Получить х ЗАЗОР Разрыв - без прямой эквивалент
Getipaddress х ЗАЗОР Разрыв - без прямой эквивалент
GetDisPlayName х ЗАЗОР Разрыв - без прямой эквивалент
GetMtu х ЗАЗОР Разрыв - без прямой эквивалент

PPB_NetworkMonitor

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
Создавать х ЗАЗОР Разрыв - без прямой эквивалент
UpdateNetWorkList х ЗАЗОР Разрыв - без прямой эквивалент

PPB_NetworkProxy

Метод PPAPI Предполагает потоки Emscripten Веб-API Ограничения
GetProxyForurl х ЗАЗОР Разрыв - без прямой эквивалент

Ppb_tcpsocket и ppb_udpsocket

Не существует прямого картирования 1: 1 для миграции. Вместо этого мы рассказали о некоторых пользовательских сценариях ниже и каков рекомендуемый путь миграции.

Вариант использования Рекомендации
Совместное использование экрана getDisplaymedia и webrtc ( демонстрация )
Загрузка с локального сервера, чтобы минимизировать использование полосы пропускания Xhr, выбросы, потоки, сервисный работник, кэш -API
Загрузка из локального экземпляра веб -приложения / подключение к локальному экземпляру веб -приложения ВебRTC
Чат WebSocket *
Аудио/видео общение в реальном времени ВебRTC
Сотрудничество WebSocket *
Реальные многопользовательские игры WebTransport **, если только P2P, в этом случае WEBRTC (или WebTransport через rtcicetransport)
Интерактивная потоковая передача в реальном времени WebTransport **
Общение с устаревшим сервером Прокси -сервер или промежуточное программное обеспечение для преобразования протокола. Обратная связь с bit.ly/network-api-paps

*: Или Webtransport в будущем

**: см. Chromestatus для доступности