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

ג'ו מדלי
ג'ו מדלי

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

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

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

באג ב-Chromium

הסרת אלמנט ליצירת מפתחות

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

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

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

שתי שיטות ו-handler של אירועים (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

הסרת כינויים גלובליים של webkit-prefixed IndexedDB

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

  • webkitIndexedDB (נקודת הכניסה הראשית)
  • webkitIDBKeyRange (בנאי גלובלי שלא ניתן לקרוא, אבל יש לו שיטות סטטיות שימושיות)
  • 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 היא לא נחוצה.

בעקבות זאת המפרט עודכן כדי להחיל התאמה תלוית אותיות רישיות (case-sensitive). ההתנהגות הישנה הוצאה משימוש ב-Chrome 57, וצפויה הסרה ב-Chrome 58.

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

הוצאה משימוש של FileReaderSync ב-Service Workers

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

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

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

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

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

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

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

הוצאה משימוש של RTCRtcpMuxPolicy מתוך "negotiate"

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

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

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

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

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

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

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

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