מדריך להעברת נתונים (מיגרציה) של WebAssembly

הודעות על הוצאה משימוש של (P)NaCl

לאור המומנטום של התמיכה ב-WebAssembly בדפדפנים שונים, אנחנו מתכננים להתמקד בקוד מקורי ב-WebAssembly מעכשיו והלאה, ולהסיר את התמיכה ב-PNaCl ברבעון הרביעי של 2019 (למעט אפליקציות Chrome). אנחנו מאמינים שהסביבה העסקית התוססת של WebAssembly מתאימה יותר לאפליקציות אינטרנט חדשות וקיימות עם ביצועים גבוהים, וששימוש ב-PNaCl נמוך מספיק כדי להצדיק הוצאה משימוש.

החל מגרסה 76 של Chrome, PNaCl באינטרנט הפתוח הועבר לגרסת Origin. זוהי מנגנון שמאפשר למפתחי אינטרנט להירשם ולקבל גישה לתכונה שלא מופעלת כברירת מחדל. בדרך כלל מדובר בתכונה חדשה שמוצעת, אבל במקרה הזה מדובר בתכונה הוצאה משימוש. מפתח יכול להירשם במסוף גרסת המקור לניסיון ולקבל אסימון שאפשר להטמיע בדף ולהפעיל את התכונה בלי שהמשתמש יצטרך להשתמש בדגל. (פרטים נוספים זמינים במדריך המקושר). תקופת הניסיון אמורה להימשך עד גרסה 78 של Chrome, בערך עד דצמבר 2019. השינוי הזה לא אמור להשפיע על NaCl או על PNaCl באפליקציות או בתוספים של Chrome, וניתן להשתמש בדגל 'enable-nacl' בדף chrome://flags גם כדי להפעיל PNaCl באופן מקומי לצורך בדיקה (הדגל הזה שומר גם על הפונקציה הנוכחית שלו, שמאפשרת להפעיל NaCl 'מקורי' שאינו PNaCl בכל דף).

בנוסף, לאחרונה הודענו על הפסקת השימוש באפליקציות Chrome מחוץ ל-ChromeOS ברבעון הראשון של 2018.

העברת ערכת כלים

ברוב תרחישי השימוש של (P)NaCl, מומלץ לעבור מ-NaCl SDK ל-Emscripten. סביר להניח שההעברה תהיה פשוטה וחלקה אם האפליקציה מאפשרת ניידות ב-Linux, SDL או POSIX APIs. למרות שהתמיכה הישירה בממשקי NaCl / Pepper API לא זמינה, ניסינו לרשום רשימה מקבילה של Web API. לבעיות ניוד מאתגרות יותר, אפשר לפנות אל native-client-discuss@googlegroups.com

העברת API

כאן מפורט הסטטוס של חלופות Web Platform לכל אחד מממשקי ה-API שנחשפים ל-(P)NaCl. בנוסף, בטבלה מפורטים הספרייה או האפשרות ב-Emscripten שמציע את ההחלפה הקרובה ביותר.

אנחנו מצפים להוסיף תמיכה בשרשור של זיכרון משותף ל-WebAssembly בשנת 2017, כי שרשור חיוני להתאמה לתרחישים השימוש המעניינים ביותר של (P)NaCl. פריטי העברה שמבוססים על תמיכה בשרשורים עתידיים מסומנות למטה. אם בקרת הזרימה של האפליקציה מסתמכת במידה רבה על חסימה יכול להיות גם שנדרשת תמיכה בשרשורים כדי לאפשר ניוד נוח.

ניסינו להיות מדויקים בטבלה הזו, אבל ללא ספק יש שגיאות או השמטות. אם נתקלת בבעיה, ניתן לפנות אלינו במספר native-client-discuss@googlegroups.com

PPAPI

PPB_Audio

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה x SDL (חלקי) GAP (חלקי) – AudioWorkletNode ROUGHLY הבדיקה של AudioWorkletSpec הסתיימה, אבל AudioDeviceClient Client מתאים יותר ל-API הזה. ה- AudioDeviceClient עדיין בתהליך הוספה על ידי הקהילה. יכול להיות שה-worklet לא יהיה מקביל ל-API הזה.
GetCurrentConfig SDL AudioContext.* (מקבלת בחזרה את ההגדרות שהועברו)
StartPlayback SDL AudioBufferSourceNode.start
StopPlayback SDL AudioBufferSourceNode.stop

PPB_AudioBuffer

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
GetTimestamp SDL AudioBufferSourceNode.start (פרמטר) מועברים בכל פעם במקום להיות מצורף למאגר הנתונים הזמני.
SetTimestamp SDL AudioBufferSourceNode.start (פרמטר)
GetSampleRate SDL AudioBuffer.sampleRate
GetSampleSize GAP GAP - WebAudio משתמש רק בצף של 32 סיביות, PPAPI משתמש ב-int של 16 סיביות. PPAPI תומך באופן תיאורטי במספר גדלים של דגימה. בפועל, הוא תומך רק בדוגמאות של 16 ביט. לצערנו, המפתחים ביקשו גדלים של דגימות של 16 ביט כדי לחסוך בזיכרון. הגרסה הבאה של מפרט Web Audio תטמיע תמיכה בדוגמאות של 16 ביט. אפשר לבצע אופטימיזציה של AudioBuffer בדומה ל-Firefox באמצעות שימוש במאגר נתונים זמני של 16 ביט לאודיו שמקורו ב-decodeAudioData
GetNumberOfChannels SDL AudioBuffer.numberOfChannels
GetDataBuffer SDL AudioBuffer.getChannelData
GetBufferSize SDL AudioBuffer.length

PPB_AudioConfig

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
CreateStereo16Bit GAP GAP – יש תמיכה רק במדגמים של מספרים ממשיים (float) ב-32 ביט בגרסה הבאה של מפרט Web Audio תהיה תמיכה בקטעי אודיו של 16 ביט.
GetSampleRate SDL AudioContext.sampleRate
GetSampleFrameCount SDL AudioBuffer.length
RecommendSampleRate SDL AudioContext.sampleRate (ממבנה ברירת המחדל) כברירת מחדל, ל- AudioContext יהיה קצב דגימה מועדף שתואם לקצב הדגימה בפועל של התקן האודיו בחומרה.
RecommendSampleFrameCount GAP GAP – הטיפול יתבצע באמצעות AudioDeviceClient המתוכנן יש בעיה פתוחה שמאפשר להשתמש בגודל שצוין על ידי משתמש, אבל הוא עדיין מוגדר. הדרך הטובה ביותר לעשות זאת היא להשתמש ב- AudioDeviceClient, כדי שתוכלו לדעת מה הגודל המתאים לחומרה הזו.

PPB_Console

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יומן Utime console.log/warn/error/...
LogWithSource GAP GAP ה-Play Console נחשב כהחלפה מלאה מספיק, אלא אם המפתחים העלו תרחישים ספציפיים לשימוש בפונקציונליות של LogWithSource. אפשר להשתמש במפות המקור של DevTools כדי לנפות באגים בקוד JavaScript שעבר טרנספייל בשפת המקור המקורית שלו.

PPB_Core

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
getTime Utime new Date().getTime()
getTimeTicks utime new Date().getTime()
IsMainThread GAP window.document !== undefined
CallOnMainThread GAP Worker.postMessage + Atomics.wait אפשר ליצור סנכרון שווה ערך.

PPB_FileIO

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה FS (חלקי) window.chooseFileSystemEntries() שימוש ביצירה ובפתיחה נעשה בצורה שונה, אבל הכוח של חלקיקים זהה.
פתיחה FS (חלקי) window.chooseFileSystemEntries()
שאילתה FS (חלקי) Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.last modified GAP (חלקי) – אפשר להשתמש גם ב-Blob.type כדי לבדוק את סוג ה-MIME. לא ניתן לקבוע את סוג מערכת הקבצים, את זמן היצירה ואת זמן הגישה האחרונה באמצעות Native File System API.
מגע FS (חלקי) FileSystemDirectoryHandle.getFile("name", {create: true})
קריאה FS (חלקי) Blob.slice().arrayBuffer()
כתיבה FS (חלקי) FileSystemWriter.write()‎
SetLength FS (חלקי) FileSystemWriter.truncate()‎
ישירה GAP (חלקי) GAP (חלקי) – הקבצים נמחקים כשמתבצעת קריאה ל-FileSystemWrite.close()‎ זה תוכנן כך שקובצי Native File System API נחשפים למערכת ההפעלה, ולכן צריך לבצע בדיקת גלישה בטוחה לפני שהנתונים מוצגים למערכת ההפעלה.
סגירה FS (חלקי) FileSystemWriter.close()‎ לא מבטלת פעולות ממתינות, אך היא גורמת לכל הנתונים שנכתבו עד כה לדיסק.
ReadToArray GAP Blob.slice().arrayBuffer() או Blob.arrayBuffer() מאפשרת קריאת כמה תת-טווח במקביל.

PPB_FileRef

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה FS (חלקי) FileSystemDirectoryHandle.getFile("name", {create: true})
GetFileSystemType FS (חלקי) FileSystem.type
GetName FS (חלקי) File.name
GetPath FS (חלקי) פער (חלקי) – באמצעות Native File System API, אפשר לקבוע את הנתיב היחסי של קובץ מהפניה לספרייה שמכילה את הקובץ באמצעות FileSystemHandle.resolve(FileSystemHandle) לא ניתן לקבוע את הנתיב המוחלט של קובץ, והמשתמש צריך להעניק הרשאה לגשת לספרייה שמכילה את הקובץ.
GetParent FS (חלקי) GAP (חלקי) - באמצעות ממשק ה-API של Native File System (מערכת קבצים מקומית), ניתן לקבוע את הנתיב היחסי של קובץ מהפניה לספרייה שמכילה את הקובץ באמצעות FileSystemHandle.resolve(FileSystemHandle) המשתמש צריך להעניק הרשאה לגשת לספרייה שמכילה את הקובץ.
MakeDirectory FS (חלקי) FileSystemHandle.getDirectory(..., {createIfNotExists: true})
מגע FS (חלקי) FileSystemDirectoryHandle.getFile("name", {create: true}) אפשר לשנות את זמן השינוי על ידי כתיבת קוד.
מחיקה FS (חלקי) FileSystemDirectoryHandle.removeEntry() בשונה מה-PPAPI, הספריות לא חייבות להיות ריקות.
שינוי השם FS (חלקי) GAP (חלקי) - באמצעות ממשק ה-API של Native File System, ניתן לכתוב את הקובץ עם השם החדש באמצעות שילוב של FileSystemFileHandle.getFile() עבור השם החדש ו-FileSystemFileHandle.createWriter().write() עם התוכן של הקובץ הישן. לאחר מכן FileSystemDirectoryHandle.removeEntry() כדי למחוק את הקובץ הישן. אין ממשק API ישיר שיעשה זאת בשלב אחד ב-Native File System API.
שאילתה GAP (חלקי) Blob.size,‏ FileSystemHandle.getFile(),‏ FileSystemHandle.getDirectory(),‏ File.lastModified GAP (חלקי) - ניתן להשתמש ב-blob.type גם כדי לבדוק את סוג ה-MIME. לא ניתן לקבוע את סוג מערכת הקבצים, את זמן היצירה ואת זמן הגישה האחרונה באמצעות Native File System API.
ReadDirectoryEntries FS (חלקי) FileSystemDirectoryHandle.getEntries()

PPB_FileSystem

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה FS (חלקי) window.requestFileSystem ב-JS API הן מתבצעות בשלב אחד
פתיחה GAP window.requestFileSystem JS API מבצע את שתי הפעולות בשלב אחד
GetType GAP FileSystem.type

PPB_Fullscreen

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
IsFullScreen html5.h Document.fullscreenEnabled
SetFullscreen html5.h Document.requestFullscreen
GetScreenSize html5.h Document.exitFullscreen

PPB_Gamepad

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
דוגמה SDL Gamepad.* אובייקט Gamepad חושף חותמת זמן ביחס ל-navigationStart. הוא מתעדכן כשמתקבלים נתונים מהחומרה https://www.w3.org/TR/gamepad/#gamepad-interface

PPB_Graphics2D

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה SDL Canvas.getContext('2d')
תיאור SDL Canvas.clientWidth + Canvas.clientHeight
PaintImageData SDL CanvasRenderingContext2D.putImageData
גלילה GAP CanvasRenderingContext2D.scrollIntoView,‏ CanvasRenderingContext2D.drawImage GAP (חלקי) – אפשר להטמיע את הפתרון הזה על ידי ציור הלוח על עצמו, עם הזזה, באמצעות drawImage, ולאחר מכן מילוי שאר החלקים.
ReplaceContents SDL CanvasRenderingContext2D.drawImage
ישירה GAP אין ערך מקביל ישיר GAP (חלקי) - תמיד יש סימון מרומז בסוף של קוד השרטוט; זה לא סביר כדי לשנות את המצב. עם זאת, השילוב של OffscreenCanvas ו-ImageBitmapRenderingContext מספק פונקציונליות דומה.
SetScale SDL CanvasRenderingContext2D.scale
GetScale SDL CanvasRenderingContext2D.currentTransform
SetLayerTransform SDL CanvasRenderingContext2D.setTransform CanvasRenderingContext2D.scale CanvasRenderingContext2D.translate

PPB_Graphics3D

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
GetAttribMaxValue OpenGL ES 3.0 WebGL 2.0 GAP (חלקי) - החשיפה של WebGL 2.0 ו-Emscripten ל-OpenGL ES 3.0 תומכות בפריימים מרובי דגימה שהוגדרו על ידי המשתמש, שבהם ניתן להגדיר את כל הפרמטרים שניתנים להגדרה באמצעות PPAPI.
יצירה SDL Canvas.getContext
GetAttribs SDL WebGLRenderingContext.getContextAttributes
SetAttribs SDL Canvas.getContext(.., OPTIONS)
GetError SDL WebGLRenderingContext.getError
ResizeBuffers SDL Canvas.width = w; Canvas.height = h;
SwapBuffers GAP אין ערך מקביל ישיר GAP (חלקי) – תמיד יש שטיפה משתמעת בסוף קוד הציור, וזה לא צפוי להשתנות. עם זאת, השילוב של OffscreenCanvas ו-ImageBitmapRenderingContext מספק פונקציונליות דומה.

PPB_ImageData

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
GetNativeImageDataFormat SDL ImageData מחייב סדר RGBA
IsImageDataFormatSupported SDL ImageData ייפוי כוח על סדר RGBA
יצירה SDL CanvasRenderingContext2d.createImageData
תיאור SDL ImageData אף פעם לא זמין
מפה SDL ImageData.data
ביטול המיפוי SDL ImageData.data

PPB_InputEvent

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
RequestInputEvents SDL אין ערך מקביל ישיר סביר להניח שהיעדר התכונה הזו רלוונטי פחות, כי JS/Wasm פועלים בשרשור הראשי ואפשר לסנן אירועים בצורה זולה יותר בלי לבצע נסיעה הלוך ושוב בין תהליכים.
RequestFilteringInputEvents SDL עכבר* מקש* גלגל* מגע* יצירה* אירועים
SDL Element.addEventListener
ClearInputEventRequest SDL Element.removeEventListener
GetType SDL צאצאים של מחלקה של אירוע
GetTimeStamp SDL Event.timeStamp
GetModifiers SDL *Event.altKey/shiftKey/metaKey/ctrlKey

PPB_MouseInputEvent

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה SDL MouseEvent
GetButton SDL MouseEvent.button
GetPosition SDL MouseEvent.client*/page*/offset*
GetClickCount SDL dblclick' לעומת 'mousedown' אירועים
GetMovement SDL MouseEvent.movement*

PPB_WheelInputEvent

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה SDL WheelEvent
GetDelta SDL WheelEvent.delta*
GetTicks GAP GAP - deltaMode מכיל את המידע הזה, אבל הוא חלקי. דיון קיים לגבי הטמעת API שלwheelEvent.deltaMode: https://github.com/w3c/uievents/issues/181#issuecomment-537811017
GetScrollByPage GAP GAP - deltaMode מכיל את המידע הזה, אבל הוא חלקי. דיון קיים לגבי הטמעת API שלwheelEvent.deltaMode: https://github.com/w3c/uievents/issues/181#issuecomment-537811017

PPB_KeyboardInputEvent

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה SDL KeyboardEvent
GetKeyCode SDL KeyboardEvent.keyCode
GetCharacterText SDL KeyboardEvent.key
GetCode SDL KeyboardEvent.code

PPB_TouchInputEvent

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה SDL TouchEvent
AddTouchPoint SDL TouchEvent.touches.push
GetTouchCount SDL TouchEvent.touches.length
GetTouchByIndex SDL TouchEvent.touches[i]
GetTouchById SDL Touch.indentifer (כדי להבין זאת בעצמך)

PPB_IMEInputEvent

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה GAP CompositionEvent
GetText GAP CompositionEvent.data
GetSegmentNumber GAP GAP - אין ערך מקביל ישיר אפשר לאחזר את הנתונים האלה מ-CompositionEvent.data.
GetSegmentOffset GAP GAP – No direct equivalent
GetTargetSegment GAP GAP - אין ערך מקביל ישיר
GetSelection GAP GAP – No direct equivalent

PPB_Instance

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
BindGraphics SDL Canvas.getContext (לא רלוונטי כי הקישור הוא אוטומטי).
IsFullFrame GAP GAP - אין ערך מקביל לרכיבי handler של סוג mime. אפשר לרשום אפליקציות NaCl כדי לטפל בסוג mime מסוים ולהיות הבעלים של המסמך כולו.
DidCreate לא רלוונטי <Element>[key] גישה כללית ל-DOM מאפשרת לכם להבין את מאפייני התגים
DidDestroy לא רלוונטי לא רלוונטי לא הופעל עבור NaCl
DidChangeView לא רלוונטי אירוע 'resize' של רכיב
DidChangeFocus לא רלוונטי אירועים של רכיב 'focus', 'focusin', 'focusout'
HandleDocumentLoad לא רלוונטי GAP - No way to register as a mime type handler ניתן להגדיר מודולים של NaCl דרך אפליקציות + רשומת מניפסט כדי לטפל בסוגים מסוימים של mime.

PPB_MediaStreamAudioTrack

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
הגדרה GAP getUserMedia()‎ האילוצים מ-getUserMedia() יכולים לספק את ערכי התצורה לשימוש ב-MediaStreamTrack.
GetAttrib GAP MediaStreamTrack.getSettings()
GetId GAP MediaStreamTrack.id
HasEnded GAP MediaStreamTrack.readyState
GetBuffer GAP GAP - אין ערך מקביל
RecycleBuffer GAP GAP – No equivalent
סגירה GAP MediaStreamTrack.stop()

PPB_MediaStreamVideoTrack

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה GAP צילום קנבס התכונה Canvas Capture מאפשרת להוסיף פריימים של וידאו באופן פרוגרמטי.
הגדרה GAP applyConstraints(), getUserMedia() פער (חלקי) – היקף ההגדרות שזמין ב-Web API עשוי להיות שונה מזה של PPAPI.
GetAttrib GAP MediaStreamSettings.width
GAP MediaStreamSettings.height
GAP GAP – לא מקביל ל-PP_MEDIASTREAMVIDEOActivity_ATTRIB_BUFFERED_FRAMES לא ניתן לטעון מראש את MediaStream, ולכן אף פעם לא תתבצע אחסון זמני: https://www.w3.org/TR/mediacapture-streams/#mediastreams-in-media-elements
GAP GAP – אין מקביל ל-PP_MEDIASTREAMVIDEOTRACK_ATTRIB_FORMAT
GetId GAP MediaStreamTrack.id
HasEnded GAP MediaStreamTrack.readyState
GetFrame GAP GAP - אין ערך מקביל
RecycleFrame GAP GAP – No equivalent
סגירה GAP MediaStreamTrack.stop()
GetEmptyFrame GAP GAP - אין ערך מקביל
PutFrame GAP GAP – No equivalent

PPB_MessageLoop

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה לא רלוונטי לרוב, העובדים מקבלים לולאת אירועים מרומזת.
GetForMainThread לא רלוונטי ברוב המקרים, לעובדים יש לולאת אירועים משתמעת.
GetCurrent לא רלוונטי ברוב המקרים, לעובדים יש לולאת אירועים משתמעת.
AttachToCurrentThread לא רלוונטי לרוב, העובדים מקבלים לולאת אירועים מרומזת.
ריצה לא רלוונטי ברוב המקרים, לעובדים יש לולאת אירועים משתמעת.
PostWork לא רלוונטי ברוב המקרים, לעובדים יש לולאת אירועים משתמעת.
PostQuit לא רלוונטי לרוב, העובדים מקבלים לולאת אירועים מרומזת.

PPB_Messaging

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
PostMessage לא רלוונטי Window.postMessage
RegisterMessageHandler לא רלוונטי Window.addEventListener
UnregisterMessageHandler לא רלוונטי Window.removeEventListener

PPB_MouseCursor

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
SetCursor SDL Element.style.cursor יש תמיכה באותה קבוצה של סמלי הסמן של מניות. ניתן להגדיר סמנים מותאמים אישית באמצעות כתובת URL(..). אפשר להגדיר סמנים דינמיים בהתאמה אישית באמצעות מזהי URI של נתונים. ב-CSS3 יש תמיכה בציון הנקודה לשיתוף אינטרנט.

PPB_MouseLock

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
LockMouse SDL Element.requestPointerLock
UnlockMouse SDL Element.exitPointerLock

PPB_OpenGLES2

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
כמה שיטות OpenGLES פונקציונליות קרובה ל-WebGL 1.0.
x OffscreenCanvas

PPB_TextInputController

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
SetTextInputType GAP GAP – יכול להיות שיתמלא על ידי Input Method Editor API חלק מהמפתחים ירצו להיות מסוגלים לרמוז באופן הזה, או מעדיפים את היכולת ליירט ולהציג אירועים / פלט של IME בתוך אזור העריכה.
UpdateCaretPosition GAP GAP – יכול להיות שיתמלא על ידי Input Method Editor API https://www.w3.org/TR/ime-api/
CancelCompositionText GAP GAP – יכול להיות שיתמלא על ידי Input Method Editor API https://www.w3.org/TR/ime-api/
UpdateSurroundingText GAP GAP – יכול להיות שיתמלא על ידי Input Method Editor API https://www.w3.org/TR/ime-api/

PPB_URLLoader

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה embind new XMLHttpRequest();‎
פתיחה embind XMLHttpRequest.open
FollowRedirect embind Request.redirect
GAP GAP - אין ערך מקביל של XMLHTTPRequest
GetUploadProgress embind האירוע 'progress' של XMLHttpRequest
GAP FetchObserver עדיין לא פורסמה להם מפרט או הטמעה. https://github.com/whatwg/fetch/issues/607
GetDownloadProgress embind האירוע 'progress' של XMLHttpRequest
GAP FetchObserver עדיין לא פורסמה להם מפרט או הטמעה. https://github.com/whatwg/fetch/issues/607
GetResponseInfo embind XMLHttpRequest.getAllResponseHeaders
embind תגובת אחזור.*
ReadResponseBody embind XMLHttpRequest.response
embind Body.* (התשובה היא גוף)
FinishStreamingToFile embind GAP – No direct equivalent גם XMLHttpRequest וגם אחזור הנתונים מתבססים על העברה בסטרימינג לזיכרון, ולא ישירות באחסון.
סגירה embind XMLHttpRequest.abort
GAP Fetch API: ‏AbortSignal ו-AbortController

PPB_URLRequestInfo

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה embind XMLHttpRequest
embind בקשת אחזור
SetProperty GAP GAP - אין ערך מקביל ישיר ל-XMLHttpRequest XMLHttpRequest לא מספק דרכים ישירות למגבלה לכל בקשה באמצעות הפניות אוטומטיות, סטרימינג לקובץ, הגדרת מדיניות של גורם מפנה או פרטי כניסה.
embind בקשה.*
AppendDataToBody embind XMLHttpRequest.send GAP - לשתיהן צריך להיות את כל הגוף, ולא מקטעים.
embind אחזור(.., options:body)
AppendFileToBody GAP העלאה בסטרימינג של fetch()‎ https://www.chromestatus.com/features/5274139738767360
לא רלוונטי &lt;form&gt; אפשר גם לקרוא באמצעות FileReader ולהעלות, אבל זה דומה יותר ל-AppendDataToBody

PPB_URLResponseInfo

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
GetProperty embind XMLHttpRequest.getAllResponseHeaders + אחרים
embind אחזור התגובה.*
GetBodyAsFileRef embind תגובת אחזור (גוף) .blob() ההנחה היא ששכבת האחסון מבצעת אופטימיזציה של ההעברה.

PPB_Var

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
VarFromUtf8 embind TextDecoder.decode
VarToUtf8 embind TextEncoder.encode
VarFromResource לא רלוונטי לא רלוונטי
VarToResource לא רלוונטי לא רלוונטי

PPB_VarArray

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
קבל embind מערך[i]
אפשר להתחיל? embind מערך[i] = x
GetLength embind Array.length
SetLength embind Array.length = n

PPB_VarArrayBuffer

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה embind new ArrayBuffer(n)
ByteLength embind ArrayBuffer.byteLength
מפה GAP GAP – No direct equivalent מודולים של Asm.js / Wasm לא יכולים למפות אזורים של ArrayBuffer מלבד ערימת הזיכרון הלינארית הבודדת שלהם. בעתיד, יכול להיות שאפשר יהיה לשפר את המצב באמצעות זיכרונות מרובים או מיפוי זיכרון.
ביטול המיפוי GAP GAP – No direct equivalent

PPB_VarDictionary

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה embind {}
קבל embind <Object>[i]
אפשר להתחיל? embind <Object>[i] = x
מחיקה embind מחיקת <Object>[i]
HasKey embind x ב-<Object>
GetKeys embind עבור (k ב-<Object>) {} אין ערך מקביל מילולי, אבל אפשר ליצור אותו.

PPB_VideoDecoder

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה GAP 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 GAP - האם יטופלו עם ממשק ה-API המוצע של WebCodec באמצעות פרמטרים לאתחול VideoDecoder() (VideoDecoderInitParameters) https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Decode GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec באמצעות 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 GAP - יטופל עם ממשק ה-API המוצע של WebCodec באמצעות 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
RecyclePicture GAP 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 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 GAP – הבעיה תטופל באמצעות ה-API המוצע של WebCodecs, על ידי השמדת המופע של VideoDecoder ויצירת מופע חדש. השיטה הזו לא תהיה יעילה כמו שיטת איפוס ייעודית, אבל עדיין מתוארת הסמנטיקה של איפוס API ל-אתחול. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming

PPB_VideoEncoder

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec באמצעות VideoEncoder()
GetSupportedProfiles GAP GAP (חלקי) – navigator.mediaCapabilities.encodingInfo()‎ צריך לבדוק את הפרופילים הנתמכים אחד אחרי השני.
הפעלה GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec באמצעות פרמטרים לאתחול VideoEncoder()
GetFramesRequired GAP GAP – No equivalent סביר להניח שמאגר המסגרות שמשמש באופן פנימי את Web Codecs API לא נחשף.
GetFrameCodedSize GAP GAP – No equivalent לא סביר שמאגר הפריימים שמשמש באופן פנימי את Web Codecs API נחשף.
GetVideoFrame GAP GAP – הבעיה תטופל באמצעות ממשק ה-API המוצע של WebCodecs באמצעות ReadableStream.pipeThrough(VideoEncoder). הפעולה הזו תקודד ישירות את הנתונים בזרם הקריא במקום ללחוץ על פריים אחד שימלא בנתונים לפני הקידוד.
קידוד GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec באמצעות ReadableStream.pipeThrough(VideoEncoder)
GetBitstreamBuffer GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec. העיצוב הנוכחי יעבור אוטומטית דרך מאגר הנתונים הזמני המקודד שמעבירים בסטרימינג. נכון לעכשיו, WebCodecs API מניח שאפשר להעתיק את מאגר הביטים במקום להוסיף אותו למאגר, כך שלא יהיה צורך במחזור.
RecycleBitstreamBuffer GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec. העיצוב הנוכחי ממחזר באופן אוטומטי את מאגר הנתונים הזמני כדי שתהליך הקידוד ימשיך להתבצע. לא סביר להניח שזה ישתנה בעתיד, כי השלכות על הביצועים הן קטנות יותר.
RequestEncodingParametersChange GAP GAP – הבעיה הזו תטופל באמצעות Web Codecs API המוצע. פרמטרים מסוימים ניתן לשנות בזמן אמת, ואחרים מחייבים ניתוק של המקודד.
סגירה GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec באמצעות VideoEncoder.Close()

PPB_VideoFrame

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
GetTimestamp GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec.
SetTimestamp GAP GAP – הבעיה תטופל באמצעות ממשק ה-API המוצע של WebCodecs.
GetFormat GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec.
GetSize GAP GAP – הבעיה תטופל באמצעות ממשק ה-API המוצע של WebCodecs.
GetDataBuffer GAP GAP – הבעיה תטופל באמצעות ממשק ה-API המוצע של WebCodecs.
GetDataBufferSize GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec.

PPB_View

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
GetRect embind Element.getBoundingClientRect
IsFullscreen embind Document.fullScreenEnabled נשמר במסמך במקום ברכיב אחד בלבד.
IsVisible embind IntersectionObserver
IsPageVisible embind document.visibilityState
GetClipRect embind IntersectionObserver
GetDeviceScale embind window.devicePixelRatio
GetCSSScale embind <Element>.getBoundingClientRect().width / <Element>.offsetwidth
GetScrollOffset embind <Element>.scrollTop / <Element>.scrollLeft

PPB_WebSocket

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה GAP WebSocket.WebSocket
התחברות GAP WebSocket.WebSocket(url, ...) אירוע 'פתיחה' ב-WebSocket
סגירה GAP WebSocket.close
ReceiveMessage GAP 'הודעה' של WebSocket האירוע 'שגיאה' של WebSocket האירוע 'סגירה' של WebSocket האירוע
SendMessage GAP WebSocket.send
GetBufferedAmount GAP WebSocket.bufferedAmount
GetCloseCode GAP CloseEvent.code
GetCloseReason GAP CloseEvent.reason
GetCloseWasClean GAP CloseEvent.wasClean
GetExtensions GAP WebSocket.extensions
GetProtocol GAP WebSocket.protocol
GetReadyState GAP WebSocket.readyState
GetURL GAP WebSocket.url

PPP_Graphics3D

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
Graphics3DContextLost SDL קנבס 'webglcontextlost' האירוע

PPP_InputEvent

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
HandleInputEvent SDL Element.addEventListener

PPP_Instance

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
DidCreate לא רלוונטי <Element>[key] גישה כללית ל-DOM מאפשרת לכם להבין את מאפייני התגים
DidDestroy לא רלוונטי לא רלוונטי לא הופעל עבור NaCl
DidChangeView לא רלוונטי אירוע 'resize' של רכיב
DidChangeFocus לא רלוונטי אירועים של רכיב 'focus', 'focusin', 'focusout'
HandleDocumentLoad לא רלוונטי GAP - אין דרך להירשם כ-handler של סוג MIME ניתן להגדיר מודולי NaCl דרך אפליקציות + רשומת מניפסט כדי לטפל בסוגים מסוימים של mime.

PPP_MessageHandler

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
HandleMessage embind MessagePort 'message' האירוע 'הודעה' בחלון האירוע
HandleBlockingMessage לא רלוונטי GAP – No direct equivalent אפשר לבצע סנכרון דומה מחוץ ל-thread הראשי באמצעות Atomics.wait. התכונה הזו נוספה כדי לתמוך בהדמיה של ממשקי API של יישומי פלאגין סינכרוניים.

PPP_Messaging

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
HandleMessage embind אירוע 'message' של MessagePort אירוע 'message' של Window

PPP_MouseLock

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
MouseLockLost SDL הרכיב 'pointerlockchange', 'pointerlockerror' אירועים

IRT

PPB_Audio

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה x SDL (חלקי) GAP (חלקי) – AudioWorkletNode ROUGHLY הבדיקה של AudioWorkletSpec הסתיימה, אבל AudioDeviceClient Client מתאים יותר ל-API הזה. ה- AudioDeviceClient עדיין בתהליך הוספה על ידי הקהילה. יכול להיות שה-worklet לא יהיה מקביל ל-API הזה.
GetCurrentConfig SDL AudioContext.* (מקבלת בחזרה את ההגדרות שהועברו)
StartPlayback SDL AudioBufferSourceNode.start
StopPlayback SDL AudioBufferSourceNode.stop

PPB_AudioBuffer

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
GetTimestamp SDL AudioBufferSourceNode.start (פרמטר) מועברים בכל פעם במקום להיות מצורף למאגר הנתונים הזמני.
SetTimestamp SDL AudioBufferSourceNode.start (פרמטר)
GetSampleRate SDL AudioBuffer.sampleRate
GetSampleSize GAP GAP - WebAudio משתמש רק בצף של 32 סיביות, PPAPI משתמש ב-int של 16 סיביות. PPAPI תומך באופן תיאורטי במספר גדלים של דגימה. בפועל, הוא תומך רק בדוגמאות של 16 ביט. לצערנו, המפתחים ביקשו גדלים של דגימות של 16 ביט כדי לחסוך בזיכרון. הגרסה הבאה של מפרט Web Audio תטמיע תמיכה בדוגמאות של 16 ביט. אפשר לבצע אופטימיזציה של AudioBuffer בדומה ל-Firefox באמצעות שימוש במאגר נתונים זמני של 16 ביט לאודיו שמקורו ב-decodeAudioData
GetNumberOfChannels SDL AudioBuffer.numberOfChannels
GetDataBuffer SDL AudioBuffer.getChannelData
GetBufferSize SDL AudioBuffer.length

PPB_AudioConfig

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
CreateStereo16Bit GAP GAP – יש תמיכה רק במדגמים של מספרים ממשיים (float) ב-32 ביט בגרסה הבאה של מפרט Web Audio תהיה תמיכה בקטעי אודיו של 16 ביט.
GetSampleRate SDL AudioContext.sampleRate
GetSampleFrameCount SDL AudioBuffer.length
RecommendSampleRate SDL AudioContext.sampleRate (ממבנה ברירת המחדל) כברירת מחדל, ל- AudioContext יהיה קצב דגימה מועדף שתואם לקצב הדגימה בפועל של התקן האודיו בחומרה.
RecommendSampleFrameCount GAP GAP – הטיפול יתבצע באמצעות AudioDeviceClient המתוכנן יש בעיה פתוחה שמאפשר להשתמש בגודל שצוין על ידי משתמש, אבל הוא עדיין מוגדר. הדרך הטובה ביותר לעשות זאת היא להשתמש ב- AudioDeviceClient, כדי שתוכלו לדעת מה הגודל המתאים לחומרה הזו.

PPB_Console

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יומן Utime console.log/warn/error/...
LogWithSource GAP GAP ה-Play Console נחשב כהחלפה מלאה מספיק, אלא אם המפתחים העלו תרחישים ספציפיים לשימוש בפונקציונליות של LogWithSource. אפשר להשתמש במפות המקור של DevTools כדי לנפות באגים בקוד JavaScript שעבר טרנספייל בשפת המקור המקורית שלו.

PPB_Core

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
getTime Utime new Date().getTime()
getTimeTicks utime new Date().getTime()
IsMainThread GAP window.document !== undefined
CallOnMainThread GAP Worker.postMessage + Atomics.wait אפשר ליצור סנכרון שווה ערך.

PPB_FileIO

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה FS (חלקי) window.chooseFileSystemEntries() שימוש ביצירה ובפתיחה נעשה בצורה שונה, אבל הכוח של חלקיקים זהה.
פתיחה FS (חלקי) window.chooseFileSystemEntries()
שאילתה FS (חלקי) Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.last modified GAP (חלקי) – אפשר להשתמש גם ב-Blob.type כדי לבדוק את סוג ה-MIME. לא ניתן לקבוע את סוג מערכת הקבצים, את זמן היצירה ואת זמן הגישה האחרונה באמצעות Native File System API.
מגע FS (חלקי) FileSystemDirectoryHandle.getFile(&quot;name&quot;, {create: true})
קריאה FS (חלקי) Blob.slice().arrayBuffer()
כתיבה FS (חלקי) FileSystemWriter.write()‎
SetLength FS (חלקי) FileSystemWriter.truncate()‎
ישירה GAP (חלקי) GAP (חלקי) – הקבצים נמחקים כשמתבצעת קריאה ל-FileSystemWrite.close()‎ זה תוכנן כך שקובצי Native File System API נחשפים למערכת ההפעלה, ולכן צריך לבצע בדיקת גלישה בטוחה לפני שהנתונים מוצגים למערכת ההפעלה.
סגירה FS (חלקי) FileSystemWriter.close()‎ לא מבטלת פעולות ממתינות, אך היא גורמת לכל הנתונים שנכתבו עד כה לדיסק.
ReadToArray GAP Blob.slice().arrayBuffer() או Blob.arrayBuffer() מאפשרת קריאת כמה תת-טווח במקביל.

PPB_FileRef

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה FS (חלקי) FileSystemDirectoryHandle.getFile(&quot;name&quot;, {create: true})
GetFileSystemType FS (חלקי) FileSystem.type
GetName FS (חלקי) File.name
GetPath FS (חלקי) פער (חלקי) – באמצעות Native File System API, אפשר לקבוע את הנתיב היחסי של קובץ מהפניה לספרייה שמכילה את הקובץ באמצעות FileSystemHandle.resolve(FileSystemHandle) לא ניתן לקבוע את הנתיב המוחלט של קובץ, והמשתמש צריך להעניק הרשאה לגשת לספרייה שמכילה את הקובץ.
GetParent FS (חלקי) GAP (חלקי) - באמצעות ממשק ה-API של Native File System (מערכת קבצים מקומית), ניתן לקבוע את הנתיב היחסי של קובץ מהפניה לספרייה שמכילה את הקובץ באמצעות FileSystemHandle.resolve(FileSystemHandle) המשתמש צריך להעניק הרשאה לגשת לספרייה שמכילה את הקובץ.
MakeDirectory FS (חלקי) FileSystemHandle.getDirectory(..., {createIfNotExists: true})
מגע FS (חלקי) FileSystemDirectoryHandle.getFile(&quot;name&quot;, {create: true}) אפשר לשנות את זמן השינוי על ידי כתיבת קוד.
מחיקה FS (חלקי) FileSystemDirectoryHandle.removeEntry() בשונה מה-PPAPI, הספריות לא חייבות להיות ריקות.
שינוי השם FS (חלקי) GAP (חלקי) - באמצעות ממשק ה-API של Native File System, ניתן לכתוב את הקובץ עם השם החדש באמצעות שילוב של FileSystemFileHandle.getFile() עבור השם החדש ו-FileSystemFileHandle.createWriter().write() עם התוכן של הקובץ הישן. לאחר מכן FileSystemDirectoryHandle.removeEntry() כדי למחוק את הקובץ הישן. אין ממשק API ישיר שיעשה זאת בשלב אחד ב-Native File System API.
שאילתה GAP (חלקי) Blob.size,‏ FileSystemHandle.getFile(),‏ FileSystemHandle.getDirectory(),‏ File.lastModified GAP (חלקי) - ניתן להשתמש ב-blob.type גם כדי לבדוק את סוג ה-MIME. לא ניתן לקבוע את סוג מערכת הקבצים, את זמן היצירה ואת זמן הגישה האחרונה באמצעות Native File System API.
ReadDirectoryEntries FS (חלקי) FileSystemDirectoryHandle.getEntries()

PPB_FileSystem

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה FS (חלקי) window.requestFileSystem ב-JS API הן מתבצעות בשלב אחד
פתיחה GAP window.requestFileSystem JS API מבצע את שתי הפעולות בשלב אחד
GetType GAP FileSystem.type

PPB_Fullscreen

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
IsFullScreen html5.h Document.fullscreenEnabled
SetFullscreen html5.h Document.requestFullscreen
GetScreenSize html5.h Document.exitFullscreen

PPB_Gamepad

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
דוגמה SDL Gamepad.* אובייקט Gamepad חושף חותמת זמן ביחס ל-navigationStart. הוא מתעדכן כשמתקבלים נתונים מהחומרה https://www.w3.org/TR/gamepad/#gamepad-interface

PPB_Graphics2D

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה SDL Canvas.getContext('2d')
תיאור SDL Canvas.clientWidth + Canvas.clientHeight
PaintImageData SDL CanvasRenderingContext2D.putImageData
גלילה GAP CanvasRenderingContext2D.scrollIntoView,‏ CanvasRenderingContext2D.drawImage GAP (חלקי) – אפשר להטמיע את הפתרון הזה על ידי ציור הלוח על עצמו, עם הזזה, באמצעות drawImage, ולאחר מכן מילוי שאר החלקים.
ReplaceContents SDL CanvasRenderingContext2D.drawImage
ישירה GAP אין ערך מקביל ישיר GAP (חלקי) - תמיד יש סימון מרומז בסוף של קוד השרטוט; זה לא סביר כדי לשנות את המצב. עם זאת, השילוב של OffscreenCanvas ו-ImageBitmapRenderingContext מספק פונקציונליות דומה.
SetScale SDL CanvasRenderingContext2D.scale
GetScale SDL CanvasRenderingContext2D.currentTransform
SetLayerTransform SDL CanvasRenderingContext2D.setTransform CanvasRenderingContext2D.scale CanvasRenderingContext2D.translate

PPB_Graphics3D

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
GetAttribMaxValue OpenGL ES 3.0 WebGL 2.0 GAP (חלקי) - החשיפה של WebGL 2.0 ו-Emscripten ל-OpenGL ES 3.0 תומכות בפריימים מרובי דגימה שהוגדרו על ידי המשתמש, שבהם ניתן להגדיר את כל הפרמטרים שניתנים להגדרה באמצעות PPAPI.
יצירה SDL Canvas.getContext
GetAttribs SDL WebGLRenderingContext.getContextAttributes
SetAttribs SDL Canvas.getContext(.., OPTIONS)
GetError SDL WebGLRenderingContext.getError
ResizeBuffers SDL Canvas.width = w; Canvas.height = h;
SwapBuffers GAP אין ערך מקביל ישיר GAP (חלקי) - תמיד יש סימון מרומז בסוף של קוד השרטוט; זה לא סביר כדי לשנות את המצב. עם זאת, השילוב של OffscreenCanvas ו-ImageBitmapRenderingContext מספק פונקציונליות דומה.

PPB_ImageData

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
GetNativeImageDataFormat SDL ImageData מחייב סדר RGBA
IsImageDataFormatSupported SDL ImageData ייפוי כוח על סדר RGBA
יצירה SDL CanvasRenderingContext2d.createImageData
תיאור SDL ImageData אף פעם לא זמין
מפה SDL ImageData.data
ביטול המיפוי SDL ImageData.data

PPB_InputEvent

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
RequestInputEvents SDL אין ערך מקביל ישיר סביר להניח שהיעדר התכונה הזו רלוונטי פחות, כי JS/Wasm פועלים בשרשור הראשי ואפשר לסנן אירועים בצורה זולה יותר בלי לבצע נסיעה הלוך ושוב בין תהליכים.
RequestFilteringInputEvents SDL עכבר* מקש* גלגל* מגע* יצירה* אירועים
SDL Element.addEventListener
ClearInputEventRequest SDL Element.removeEventListener
GetType SDL צאצאים של מחלקה של אירוע
GetTimeStamp SDL Event.timeStamp
GetModifiers SDL *Event.altKey/shiftKey/metaKey/ctrlKey

PPB_MouseInputEvent

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה SDL MouseEvent
GetButton SDL MouseEvent.button
GetPosition SDL MouseEvent.client*/page*/offset*
GetClickCount SDL dblclick' לעומת 'mousedown' אירועים
GetMovement SDL MouseEvent.movement*

PPB_WheelInputEvent

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה SDL WheelEvent
GetDelta SDL WheelEvent.delta*
GetTicks GAP GAP - deltaMode מכיל את המידע הזה, אבל הוא חלקי. דיון קיים לגבי הטמעת API שלwheelEvent.deltaMode: https://github.com/w3c/uievents/issues/181#issuecomment-537811017
GetScrollByPage GAP GAP - deltaMode מכיל את המידע הזה, אבל הוא חלקי. דיון קיים לגבי הטמעת API שלwheelEvent.deltaMode: https://github.com/w3c/uievents/issues/181#issuecomment-537811017

PPB_KeyboardInputEvent

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה SDL KeyboardEvent
GetKeyCode SDL KeyboardEvent.keyCode
GetCharacterText SDL KeyboardEvent.key
GetCode SDL KeyboardEvent.code

PPB_TouchInputEvent

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה SDL TouchEvent
AddTouchPoint SDL TouchEvent.touches.push
GetTouchCount SDL TouchEvent.touches.length
GetTouchByIndex SDL TouchEvent.touches[i]
GetTouchById SDL Touch.indentifer (כדי להבין זאת בעצמך)

PPB_IMEInputEvent

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה GAP CompositionEvent
GetText GAP CompositionEvent.data
GetSegmentNumber GAP GAP - אין ערך מקביל ישיר אפשר לאחזר את הנתונים האלה מ-CompositionEvent.data.
GetSegmentOffset GAP GAP – No direct equivalent
GetTargetSegment GAP GAP - אין ערך מקביל ישיר
GetSelection GAP GAP – No direct equivalent

PPB_Instance

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
BindGraphics SDL Canvas.getContext (לא רלוונטי כי הקישור הוא אוטומטי).
IsFullFrame GAP GAP - אין ערך מקביל לרכיבי handler של סוג mime. אפשר לרשום אפליקציות NaCl כדי לטפל בסוג mime מסוים ולהיות הבעלים של המסמך כולו.
DidCreate לא רלוונטי <Element>[key] גישה כללית ל-DOM מאפשרת לכם להבין את מאפייני התגים
DidDestroy לא רלוונטי לא רלוונטי לא הופעל עבור NaCl
DidChangeView לא רלוונטי אירוע 'resize' של רכיב
DidChangeFocus לא רלוונטי אירועים של רכיב 'focus', 'focusin', 'focusout'
HandleDocumentLoad לא רלוונטי GAP - No way to register as a mime type handler ניתן להגדיר מודולים של NaCl דרך אפליקציות + רשומת מניפסט כדי לטפל בסוגים מסוימים של mime.

PPB_MediaStreamAudioTrack

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
הגדרה GAP getUserMedia()‎ האילוצים מ-getUserMedia() יכולים לספק את ערכי התצורה לשימוש ב-MediaStreamTrack.
GetAttrib GAP MediaStreamTrack.getSettings()
GetId GAP MediaStreamTrack.id
HasEnded GAP MediaStreamTrack.readyState
GetBuffer GAP GAP - אין ערך מקביל
RecycleBuffer GAP GAP – No equivalent
סגירה GAP MediaStreamTrack.stop()

PPB_MediaStreamVideoTrack

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה GAP צילום קנבס התכונה Canvas Capture מאפשרת להוסיף פריימים של וידאו באופן פרוגרמטי.
הגדרה GAP applyConstraints(), getUserMedia() פער (חלקי) – היקף ההגדרות שזמין ב-Web API עשוי להיות שונה מזה של PPAPI.
GetAttrib GAP MediaStreamSettings.width
GAP MediaStreamSettings.height
GAP GAP – לא מקביל ל-PP_MEDIASTREAMVIDEOActivity_ATTRIB_BUFFERED_FRAMES לא ניתן לטעון מראש את MediaStream, ולכן אף פעם לא תתבצע אחסון זמני: https://www.w3.org/TR/mediacapture-streams/#mediastreams-in-media-elements
GAP GAP – אין מקביל ל-PP_MEDIASTREAMVIDEOTRACK_ATTRIB_FORMAT
GetId GAP MediaStreamTrack.id
HasEnded GAP MediaStreamTrack.readyState
GetFrame GAP GAP - אין ערך מקביל
RecycleFrame GAP GAP – No equivalent
סגירה GAP MediaStreamTrack.stop()
GetEmptyFrame GAP GAP - אין ערך מקביל
PutFrame GAP GAP – No equivalent

PPB_MessageLoop

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה לא רלוונטי לרוב, העובדים מקבלים לולאת אירועים מרומזת.
GetForMainThread לא רלוונטי ברוב המקרים, לעובדים יש לולאת אירועים משתמעת.
GetCurrent לא רלוונטי ברוב המקרים, לעובדים יש לולאת אירועים משתמעת.
AttachToCurrentThread לא רלוונטי לרוב, העובדים מקבלים לולאת אירועים מרומזת.
ריצה לא רלוונטי ברוב המקרים, לעובדים יש לולאת אירועים משתמעת.
PostWork לא רלוונטי ברוב המקרים, לעובדים יש לולאת אירועים משתמעת.
PostQuit לא רלוונטי לרוב, העובדים מקבלים לולאת אירועים מרומזת.

PPB_Messaging

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
PostMessage לא רלוונטי Window.postMessage
RegisterMessageHandler לא רלוונטי Window.addEventListener
UnregisterMessageHandler לא רלוונטי Window.removeEventListener

PPB_MouseCursor

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
SetCursor SDL Element.style.cursor יש תמיכה באותה קבוצה של סמלי הסמן של מניות. ניתן להגדיר סמנים מותאמים אישית באמצעות כתובת URL(..). אפשר להגדיר סמנים דינמיים בהתאמה אישית באמצעות מזהי URI של נתונים. ב-CSS3 יש תמיכה בציון הנקודה לשיתוף אינטרנט.

PPB_MouseLock

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
LockMouse SDL Element.requestPointerLock
UnlockMouse SDL Element.exitPointerLock

PPB_OpenGLES2

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
כמה שיטות OpenGLES פונקציונליות קרובה ל-WebGL 1.0.
x OffscreenCanvas

PPB_TextInputController

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
SetTextInputType GAP GAP – יכול להיות שיתמלא על ידי Input Method Editor API חלק מהמפתחים ירצו להיות מסוגלים לרמוז באופן הזה, או מעדיפים את היכולת ליירט ולהציג אירועים / פלט של IME בתוך אזור העריכה.
UpdateCaretPosition GAP GAP – יכול להיות שיתמלא על ידי Input Method Editor API https://www.w3.org/TR/ime-api/
CancelCompositionText GAP GAP – יכול להיות שיתמלא על ידי Input Method Editor API https://www.w3.org/TR/ime-api/
UpdateSurroundingText GAP GAP – יכול להיות שיתמלא על ידי Input Method Editor API https://www.w3.org/TR/ime-api/

PPB_URLLoader

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה embind new XMLHttpRequest();‎
פתיחה embind XMLHttpRequest.open
FollowRedirect embind Request.redirect
GAP GAP - אין ערך מקביל של XMLHTTPRequest
GetUploadProgress embind האירוע 'progress' של XMLHttpRequest
GAP FetchObserver עדיין לא פורסמה להם מפרט או הטמעה. https://github.com/whatwg/fetch/issues/607
GetDownloadProgress embind האירוע 'progress' של XMLHttpRequest
GAP FetchObserver עדיין לא פורסמה להם מפרט או הטמעה. https://github.com/whatwg/fetch/issues/607
GetResponseInfo embind XMLHttpRequest.getAllResponseHeaders
embind תגובת אחזור.*
ReadResponseBody embind XMLHttpRequest.response
embind Body.* (התשובה היא גוף)
FinishStreamingToFile embind GAP – No direct equivalent גם XMLHttpRequest וגם אחזור הנתונים מתבססים על העברה בסטרימינג לזיכרון, ולא ישירות באחסון.
סגירה embind XMLHttpRequest.abort
GAP Fetch API: ‏AbortSignal ו-AbortController

PPB_URLRequestInfo

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה embind XMLHttpRequest
embind בקשת אחזור
SetProperty GAP GAP - אין ערך מקביל ישיר ל-XMLHttpRequest XMLHttpRequest לא מספק דרכים ישירות למגבלה לכל בקשה באמצעות הפניות אוטומטיות, סטרימינג לקובץ, הגדרת מדיניות של גורם מפנה או פרטי כניסה.
embind בקשה.*
AppendDataToBody embind XMLHttpRequest.send GAP - לשתיהן צריך להיות את כל הגוף, ולא מקטעים.
embind אחזור(.., options:body)
AppendFileToBody GAP העלאה בסטרימינג של fetch()‎ https://www.chromestatus.com/features/5274139738767360
לא רלוונטי &lt;form&gt; אפשר גם לקרוא באמצעות FileReader ולהעלות, אבל זה דומה יותר ל-AppendDataToBody

PPB_URLResponseInfo

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
GetProperty embind XMLHttpRequest.getAllResponseHeaders + אחרים
embind אחזור התגובה.*
GetBodyAsFileRef embind תגובת אחזור (גוף) .blob() ההנחה היא ששכבת האחסון מבצעת אופטימיזציה של ההעברה.

PPB_Var

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
VarFromUtf8 embind TextDecoder.decode
VarToUtf8 embind TextEncoder.encode
VarFromResource לא רלוונטי לא רלוונטי
VarToResource לא רלוונטי לא רלוונטי

PPB_VarArray

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
קבל embind מערך[i]
אפשר להתחיל? embind מערך[i] = x
GetLength embind Array.length
SetLength embind Array.length = n

PPB_VarArrayBuffer

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה embind new ArrayBuffer(n)
ByteLength embind ArrayBuffer.byteLength
מפה GAP GAP – No direct equivalent מודולים של Asm.js / Wasm לא יכולים למפות אזורים של ArrayBuffer מלבד ערימת הזיכרון הלינארית הבודדת שלהם. בעתיד, יכול להיות שאפשר יהיה לשפר את המצב באמצעות זיכרונות מרובים או מיפוי זיכרון.
ביטול המיפוי GAP GAP – No direct equivalent

PPB_VarDictionary

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה embind {}
קבל embind <Object>[i]
אפשר להתחיל? embind <Object>[i] = x
מחיקה embind מחיקת <Object>[i]
HasKey embind x ב-<Object>
GetKeys embind עבור (k ב-<Object>) {} אין ערך מקביל מילולי, אבל אפשר ליצור אותו.

PPB_VideoDecoder

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה GAP 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 GAP - האם יטופלו עם ממשק ה-API המוצע של WebCodec באמצעות פרמטרים לאתחול VideoDecoder() (VideoDecoderInitParameters) https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Decode GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec באמצעות 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 GAP - יטופל עם ממשק ה-API המוצע של WebCodec באמצעות 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
RecyclePicture GAP 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 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 GAP – הבעיה תטופל באמצעות ה-API המוצע של WebCodecs, על ידי השמדת המופע של VideoDecoder ויצירת מופע חדש. השיטה הזו לא תהיה יעילה כמו שיטת איפוס ייעודית, אבל עדיין מתוארת הסמנטיקה של איפוס API ל-אתחול. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming

PPB_VideoEncoder

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec באמצעות VideoEncoder()
GetSupportedProfiles GAP GAP (חלקי) – navigator.mediaCapabilities.encodingInfo()‎ צריך לבדוק את הפרופילים הנתמכים אחד אחרי השני.
הפעלה GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec באמצעות פרמטרים לאתחול VideoEncoder()
GetFramesRequired GAP GAP – No equivalent סביר להניח שמאגר המסגרות שמשמש באופן פנימי את Web Codecs API לא נחשף.
GetFrameCodedSize GAP GAP – No equivalent לא סביר שמאגר הפריימים שמשמש באופן פנימי את Web Codecs API נחשף.
GetVideoFrame GAP GAP – הבעיה תטופל באמצעות ממשק ה-API המוצע של WebCodecs באמצעות ReadableStream.pipeThrough(VideoEncoder). הפעולה הזו תקודד ישירות את הנתונים בזרם הקריא במקום ללחוץ על פריים אחד שימלא בנתונים לפני הקידוד.
קידוד GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec באמצעות ReadableStream.pipeThrough(VideoEncoder)
GetBitstreamBuffer GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec. העיצוב הנוכחי יעבור אוטומטית דרך מאגר הנתונים הזמני המקודד שמעבירים בסטרימינג. נכון לעכשיו, WebCodecs API מניח שאפשר להעתיק את מאגר הביטים במקום להוסיף אותו למאגר, כך שלא יהיה צורך במחזור.
RecycleBitstreamBuffer GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec. העיצוב הנוכחי ממחזר באופן אוטומטי את מאגר הנתונים הזמני כדי שתהליך הקידוד ימשיך להתבצע. לא סביר להניח שזה ישתנה בעתיד, כי השלכות על הביצועים הן קטנות יותר.
RequestEncodingParametersChange GAP GAP – הבעיה הזו תטופל באמצעות Web Codecs API המוצע. פרמטרים מסוימים ניתן לשנות בזמן אמת, ואחרים מחייבים ניתוק של המקודד.
סגירה GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec באמצעות VideoEncoder.Close()

PPB_VideoFrame

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
GetTimestamp GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec.
SetTimestamp GAP GAP – הבעיה תטופל באמצעות ממשק ה-API המוצע של WebCodecs.
GetFormat GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec.
GetSize GAP GAP – הבעיה תטופל באמצעות ממשק ה-API המוצע של WebCodecs.
GetDataBuffer GAP GAP – הבעיה תטופל באמצעות ממשק ה-API המוצע של WebCodecs.
GetDataBufferSize GAP GAP - יטופל עם ממשק ה-API המוצע של WebCodec.

PPB_View

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
GetRect embind Element.getBoundingClientRect
IsFullscreen embind Document.fullScreenEnabled נשמר במסמך במקום ברכיב אחד בלבד.
IsVisible embind IntersectionObserver
IsPageVisible embind document.visibilityState
GetClipRect embind IntersectionObserver
GetDeviceScale embind window.devicePixelRatio
GetCSSScale embind <Element>.getBoundingClientRect().width / <Element>.offsetwidth
GetScrollOffset embind <Element>.scrollTop / <Element>.scrollLeft

PPB_WebSocket

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה GAP WebSocket.WebSocket
התחברות GAP WebSocket.WebSocket(url, ...) אירוע 'פתיחה' ב-WebSocket
סגירה GAP WebSocket.close
ReceiveMessage GAP 'הודעה' של WebSocket האירוע 'שגיאה' של WebSocket האירוע 'סגירה' של WebSocket האירוע
SendMessage GAP WebSocket.send
GetBufferedAmount GAP WebSocket.bufferedAmount
GetCloseCode GAP CloseEvent.code
GetCloseReason GAP CloseEvent.reason
GetCloseWasClean GAP CloseEvent.wasClean
GetExtensions GAP WebSocket.extensions
GetProtocol GAP WebSocket.protocol
GetReadyState GAP WebSocket.readyState
GetURL GAP WebSocket.url

PPP_Graphics3D

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
Graphics3DContextLost SDL קנבס 'webglcontextlost' האירוע

PPP_InputEvent

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
HandleInputEvent SDL Element.addEventListener

PPP_Instance

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
DidCreate לא רלוונטי <Element>[key] גישה כללית ל-DOM מאפשרת לכם להבין את מאפייני התגים
DidDestroy לא רלוונטי לא רלוונטי לא הופעל עבור NaCl
DidChangeView לא רלוונטי אירוע 'resize' של רכיב
DidChangeFocus לא רלוונטי אירועים של רכיב 'focus', 'focusin', 'focusout'
HandleDocumentLoad לא רלוונטי GAP - אין דרך להירשם כ-handler של סוג MIME ניתן להגדיר מודולי NaCl דרך אפליקציות + רשומת מניפסט כדי לטפל בסוגים מסוימים של mime.

PPP_MessageHandler

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
HandleMessage embind MessagePort 'message' האירוע 'הודעה' בחלון האירוע
HandleBlockingMessage לא רלוונטי GAP – No direct equivalent אפשר לבצע סנכרון דומה מחוץ ל-thread הראשי באמצעות Atomics.wait. התכונה הזו נוספה כדי לתמוך בהדמיה של ממשקי API של יישומי פלאגין סינכרוניים.

PPP_Messaging

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
HandleMessage embind אירוע 'message' של MessagePort אירוע 'message' של Window

PPP_MouseLock

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
MouseLockLost SDL הרכיב 'pointerlockchange', 'pointerlockerror' אירועים

PPAPI (אפליקציות)

PPB_HostResolver

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה x GAP GAP (חלקי) - אין ערך מקביל ישיר
לפתרון הבעיה x GAP GAP (partial) – No direct equivalent
GetCanonicalName x GAP GAP (חלקי) - אין ערך מקביל ישיר
GetNetAddressCount x GAP GAP (חלקי) - אין ערך מקביל ישיר
GetNetAddress x GAP GAP (חלקי) - אין ערך מקביל ישיר

PPB_NetAddress

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
CreateFromIPv4Address x GAP GAP (חלקי) - אין ערך מקביל ישיר
CreateFromIPv6Address x GAP GAP (חלקי) - אין ערך מקביל ישיר
GetFamily x GAP GAP (חלקי) - אין ערך מקביל ישיר
DescribeAsString x GAP GAP (חלקי) - אין ערך מקביל ישיר
DescribeAsIPv4Address x GAP GAP (partial) – No direct equivalent
DescribeAsIPv6Address x GAP GAP (partial) – No direct equivalent

PPB_NetworkList

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
GetCount x GAP GAP - אין ערך מקביל ישיר
GetName x GAP GAP - אין ערך מקביל ישיר
GetType x GAP GAP – No direct equivalent
GetState x GAP GAP – No direct equivalent
GetIpAddress x GAP GAP – No direct equivalent
GetDisplayName x GAP GAP – No direct equivalent
GetMTU x GAP GAP - אין ערך מקביל ישיר

PPB_NetworkMonitor

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
יצירה x GAP GAP – No direct equivalent
UpdateNetworkList x GAP GAP – No direct equivalent

PPB_NetworkProxy

שיטת PPAPI מתבססת על ההנחה שהשרשורים Emscripten Web API הגבלות
GetProxyForURL x GAP GAP – No direct equivalent

PPB_TCPSocket ו-PPB_UDPSocket

אין מיפוי ישיר של 1:1 להעברה. במקום זאת, בתרחישי המשתמש שבהמשך ומהו נתיב ההעברה המומלץ.

תרחיש לדוגמה המלצות
שיתוף מסך getDisplayMedia ו-WebRTC (דמו)
טעינה מתוך שרת מקומי כדי לצמצם את השימוש ברוחב פס XHR, Fetch, Streams, Service Worker, Cache API
טעינה מתוך מופע מקומי של אפליקציית אינטרנט / התחברות למופע מקומי של אפליקציית אינטרנט WebRTC
צ'אט WebSocket*
תקשורת אודיו/וידאו בזמן אמת WebRTC
שיתוף פעולה WebSocket*
פעילות בזמן אמת משחקים רבי-משתתפים WebTransport** אלא אם כן P2P במקרה כזה WebRTC (או WebTransport באמצעות RTCIceTransport)
סטרימינג אינטראקטיבי בזמן אמת WebTransport**
תקשורת עם שרת מדור קודם שרת proxy או תוכנה לעיבוד נתונים ביניים (middleware) כדי לבצע המרה של פרוטוקול. שליחת משוב אל bit.ly/network-api-gaps

*: או WebTransport בעתיד

**: מידע על הזמינות אפשר למצוא ב-chromestatus