הוצאה משימוש והסרות של ממשקי API ב-Chrome 57

Joe Medley
Joe Medley

כמעט בכל גרסה של Chrome אנחנו מוסיפים מספר רב של עדכונים ושיפורים למוצר, לביצועים שלו וליכולות של פלטפורמת האינטרנט. במאמר הזה מתוארים הפריטים שהוצאו משימוש והפריטים שיוסר ב-Chrome 57, שמשווק בגרסה בטא מתחילת פברואר. הרשימה הזו עשויה להשתנות בכל שלב.

הסרת המאפיין BluetoothDevice.uuids

המאפיין BluetoothDevice.uuids הוסר כדי להתאים את Web Bluetooth API למפרט הנוכחי. אפשר לאחזר את כל שירותי ה-GATT המותרים באמצעות הקריאה device.getPrimaryServices().

באג ב-Chromium

הסרת רכיב ליצירת מפתחות

החל מגרסה 49 של Chrome, התנהגות ברירת המחדל של <keygen> היא להחזיר את המחרוזת הריקה, אלא אם הוקצה הרשאה לדף הזה. דפדפני IE/Edge לא תומכים ב-<keygen> ולא הוצגו בהם אותות ציבוריים לתמיכה ב-<keygen>. כבר עכשיו, <keygen> מוגן ב-Firefox מאחורי תנועת משתמש, אבל החברה תומכת באופן ציבורי בהסרת התכונה. דפדפן Safari כולל את <keygen>, ולא הוצגו בו דעות ציבוריות לגבי המשך התמיכה בו. החל מגרסה 57 של Chrome, הרכיב הזה הוסר.

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium

הסרת ממשק API לניהול מאגרי זמן של משאבים עם קידומת

שתי שיטות וגורם מטפל באירועים, webkitClearResourceTimings(),‏ webkitSetResourceTimingBufferSize() ו-onwebkitresourcetimingbufferfull, הם לא בתוקף וספציפיים לספק. התמיכה בגרסאות הרגילות של ממשקי ה-API האלה החלה ב-Chrome 46, והפונקציות עם הקידומת הוצאו משימוש גם בגרסה הזו. התכונות האלה הופעלו במקור ב-WebKit, אבל הן לא הופעלו ב-Safari. ב-Firefox, ב-IE מגרסה 10 ואילך וב-Edge יש רק גרסה ללא קידומת של ה-API. לכן אנחנו מסירים את הגרסאות של webkit.

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium

הסרת ServiceWorkerMessageEvent לטובת שימוש ב-MessageEvent

מפרט ה-HTML הרחיב את MessageEvent כדי לאפשר את ServiceWorker כסוג של המאפיין source. client.postMessage() ויצירת אירועי הודעות בהתאמה אישית משתנים כך שישתמשו ב-MessageEvent במקום ב-ServiceWorkerMessageEvent. השדה ServiceWorkerMessageEvent הוסר.

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium

הסרת כינויים גלובליים של IndexedDB עם הקידומת webkit

נקודת הכניסה IndexedDB והמגדירים הגלובליים נחשפו עם תחילית webkit בסביבות Chrome 11. הגרסאות ללא הקידומת נוספו ב-Chrome 24, והגרסאות עם הקידומת הוצאו משימוש ב-Chrome 38. הממשקים הבאים מושפעים מהשינוי:

  • webkitIndexedDB (נקודת הכניסה הראשית)
  • webkitIDBKeyRange (constructor גלובלי שלא ניתן לקרוא לו, אבל יש לו שיטות סטטיות שימושיות)
  • webkitIDBCursor
  • webkitIDBDatabase
  • webkitIDBFactory
  • webkitIDBIndex
  • webkitIDBObjectStore
  • webkitIDBRequest
  • webkitIDBTransaction (יוצרים גלובליים שלא ניתן לקרוא להם)

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium

WebAudio: הסרת AudioContext ו-OfflineAudioContext עם קידומת

Chrome תומך ב-WebAudio מאז אמצע 2011, כולל AudioContext. OfflineAudioContext נוסף בשנה שלאחר מכן. בגלל משך הזמן הארוך שבו יש תמיכה בממשקים הרגילים, והמטרה לטווח הארוך של Google להסיר תכונות עם קידומת, הגרסאות עם הקידומת של הממשקים האלה הוצאו משימוש בסוף שנת 2014, והן יוסרו עכשיו.

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium

הוצאה משימוש והסרה של webkitCancelRequestAnimationFrame

השיטה webkitCancelRequestAnimationFrame() היא ממשק API מדור קודם שספציפי לספק, וה-cancelAnimationFrame() הסטנדרטי נתמך ב-Chromium כבר זמן רב. לכן אנחנו מסירים את הגרסה ל-WebKit.

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium

הוצאה משימוש של התאמה לא תלוית-רישיות למאפיין usemap

בעבר, המאפיין usemap הוגדר ללא קשר לאותיות רישיות. לצערנו, ההטמעה הייתה מורכבת מספיק כך שאף דפדפן לא הטמיע אותה בצורה נכונה. מחקרים הראו שאין צורך באלגוריתמים מורכבים כאלה, ואפילו אין צורך בהתאמה של ASCII ללא קשר לאותיות רישיות.

כתוצאה מכך, המפרט עודכן כך שתתבצע התאמה תלוית אותיות רישיות. ההתנהגות הישנה הוצאה משימוש ב-Chrome 57, והיא תוסר ב-Chrome 58.

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium

הוצאה משימוש של FileReaderSync בשירותי ה-worker

במפרט של Service Worker תמיד הייתה הערה (לא רגולטורית) שלפיה "אסור להתחיל בקשות סינכרוניות מסוג כלשהו בתוך service worker", כדי למנוע חסימה של ה-service worker. חסימה של קובץ השירות תמנע את כל בקשות הרשת מדפים שנשלטות. לצערנו, ממשק ה-API של FileReaderSync זמין כבר זמן רב בשירותי עובדים.

בשלב הזה, רק דפדפני Firefox ו-Chrome חושפים את FileReaderSync בשירותי העבודה. בדיון בנושא המפרט, נציגי Firefox הסכימו שצריך לתקן את הבעיה הזו. ההסרה צפויה להתבצע ב-Chrome 59.

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium

הוצאה משימוש של מבצע הקריאה הקודם ל-HTMLEmbedElement ול-HTMLObjectElement

אם לממשק יש מבצע קריאה מהדור הקודם, אפשר להפעיל את המופע כפונקציה. בשלב זה, רק HTMLEmbedElement ו-HTMLObjectElement תומכים בפונקציה הזו. ב-Chrome 57 היכולת הזו הוצאה משימוש. אחרי ההסרה, שצפויה להתרחש ב-Chrome 58, הקריאה תגרום להשלכת חריגה.

השינוי הזה מביא את Chrome לקו אחד עם השינויים האחרונים במפרט. ההתנהגות הקודמת לא נתמכת ב-Edge או ב-Safari, והיא תוסר מ-Firefox.

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium

הוצאה משימוש של RTCRtcpMuxPolicy עם הערך 'negotiate'

Chrome משתמש ב-rtcpMuxPolicy כדי לציין את המדיניות המועדפת שלו לגבי שימוש במולטיפלקס של RTP/RTCP. ב-Chrome 57 שינינו את ברירת המחדל של rtcpMuxPolicy ל-'דרישה' והוצאנו משימוש את האפשרות 'משא ומתן' מהסיבות הבאות:

  • שימוש ב-RTCP ללא מיקס משתמש במשאבי רשת נוספים.
  • הסרת האפשרות 'negotiate' תפשט את ממשק ה-API, כי ל-'RtpSender'/'RtpReceiver' תהיה תמיד רק תשתית תחבורה אחת.

ב-Chrome 57, האפשרות 'negotiate' הוצאה משימוש. אנחנו מאמינים שזהו שינוי לא קריטי, כי המשתמש יקבל הודעה על הוצאה משימוש ועדיין אפשר ליצור את RTCPeerConnection. ההסרה מתבצעת ב-Chrome 63.

כוונה להוצאה משימוש | באג ב-Chromium

הוצאה משימוש של התמיכה בפרטי כניסה מוטמעים בבקשות למשאבי משנה

קידוד קבוע של פרטי הכניסה בבקשות למשאבים משניים הוא בעייתי מבחינת אבטחה, כי בעבר הוא איפשר להאקרים לפרוץ בכוח לפרטים האלה. הסכנות האלה חמורות יותר בבקשות למשאבי משנה עם פרטי כניסה שמגיעות לטווחי IP פנימיים (נתבים וכו'). לאור השימוש הנמוך, נראה הגיוני לסגור את נקודת החולשה הזו (הקטנה) באבטחה.

מפתחים יכולים להטמיע משאבים שלא דורשים אימות בסיסי/digest, ולהסתמך במקום זאת על קובצי cookie ועל מנגנונים אחרים לניהול סשנים.

כוונה להסרה | מעקב אחר סטטוס Chrome | באג ב-Chromium