إيقاف واجهات برمجة التطبيقات وإزالتها في Chrome 57

Joe Medley
Joe Medley

في كل إصدار من Chrome تقريبًا، نلاحظ عددًا كبيرًا من التحديثات والتحسينات على المنتج وأدائه وإمكانات Web Platform. توضِّح هذه المقالة الميزات التي سيتم إيقافها نهائيًا وإزالتها في الإصدار 57 من Chrome، الذي أصبح متاحًا في إصدار تجريبي اعتبارًا من أوائل شباط (فبراير). تخضع هذه القائمة للتغيير في أي وقت.

إزالة سمة BluetoothDevice.uuids

تتم إزالة سمة BluetoothDevice.uuids لتتوافق Web Bluetooth API مع المواصفات الحالية. يمكنك استرداد جميع خدمات GATT المسموح بها من خلال استدعاء device.getPrimaryServices().

خطأ في Chromium

إزالة عنصر إنشاء المفاتيح

منذ الإصدار 49 من Chrome، كان السلوك التلقائي لـ <keygen> هو عرض السلسلة الفارغة ، ما لم يتم منح إذن لهذه الصفحة. لا يتيح كلّ من IE/Edge استخدام <keygen> ولم يُشيرا إلى إشارات عامة تتيح استخدام <keygen>. يفرض Firefox حاليًا <keygen> على المستخدمين استخدام إيماءة معيّنة، ولكنه يعلن علنيًا عن تأييده لإزالتها. يُرسِل Safari الإصدار <keygen> ولم يُعلِن عن آراء الجمهور بشأن مواصلة دعمه. في الإصدار 57 من Chrome، تمت إزالة هذا العنصر.

Intent to Remove | Chromestatus Tracker | Chromium Bug

إزالة واجهة برمجة التطبيقات لإدارة ذاكرة التخزين المؤقت لتوقيت الموارد التي تتضمّن بادئة

إنّ الطريقتَين ومعالج الحدث webkitClearResourceTimings() webkitSetResourceTimingBufferSize() وonwebkitresourcetimingbufferfull قديمان ومخصّصان للمورّدين. أصبح بإمكانك استخدام الإصدارات العادية من واجهات برمجة التطبيقات هذه بدءًا من الإصدار 46 من Chrome، وتم أيضًا التوقّف عن استخدام الدوالّ التي تحتوي على بادئة في هذا الإصدار. تم تنفيذ هذه الميزات في الأصل في WebKit، ولكن لم يفعّلها Safari. لا يتوفّر في Firefox وInternet Explorer 10 والإصدارات الأحدث و Edge سوى إصدار واجهة برمجة التطبيقات غير المزوّد ببادئة. لذلك، تتم إزالة إصدارات webkit.

Intent to Remove | Chromestatus Tracker | Chromium Bug

إزالة ServiceWorkerMessageEvent لصالح استخدام MessageEvent

وسعت مواصفات HTML نطاق MessageEvent للسماح باستخدام ServiceWorker كنوع لسمة source. تم تغيير client.postMessage() وأحداث إنشاء الرسائل المخصّصة لاستخدام MessageEvent بدلاً من ServiceWorkerMessageEvent. تمت إزالة ServiceWorkerMessageEvent.

Intent to Remove | Chromestatus Tracker | Chromium Bug

إزالة الأسماء البديلة الشاملة لـ IndexedDB التي تبدأ بالبادئة webkit

تم عرض نقطة دخول IndexedDB والمنشئين العامين باستخدام بادئات webkit في Chrome 11 تقريبًا. تمت إضافة الإصدارات غير المزوّدة ببادئة في Chrome 24، وتم إيقاف الإصدارات المزوّدة ببادئة نهائيًا في Chrome 38. تتأثر الواجهات التالية:

  • webkitIndexedDB (نقطة الدخول الرئيسية)
  • webkitIDBKeyRange (طريقة وضع تصميم عالمية غير قابلة للدعوة، ولكنّها تتضمّن طرقًا ثابتة مفيدة)
  • webkitIDBCursor
  • webkitIDBDatabase
  • webkitIDBFactory
  • webkitIDBIndex
  • webkitIDBObjectStore
  • webkitIDBRequest
  • webkitIDBTransaction (العناصر المنشئة الشاملة غير القابلة للاتّصال)

Intent to Remove | Chromestatus Tracker | Chromium Bug

WebAudio: إزالة AudioContext وOfflineAudioContext اللذَين يتضمّنان بادئة

يتيح Chrome استخدام WebAudio منذ منتصف عام 2011، بما في ذلك AudioContext. تمت إضافة OfflineAudioContext في العام التالي. نظرًا إلى الفترة الطويلة التي تم فيها استخدام الواجهات العادية وهدف Google على المدى الطويل المتمثل في إزالة الميزات التي تحتوي على بادئة، تم إيقاف الإصدارات التي تحتوي على بادئة من هذه الواجهات نهائيًا منذ أواخر عام 2014، ونحن بصدد إزالتها الآن.

Intent to Remove | Chromestatus Tracker | Chromium Bug

إيقاف webkitCancelRequestAnimationFrame نهائيًا وإزالتها

طريقة webkitCancelRequestAnimationFrame() هي واجهة برمجة تطبيقات قديمة متعلقة بالمورّد، وقد كان cancelAnimationFrame() العادي متوفّرًا منذ فترة طويلة في Chromium. لذلك، تتم إزالة إصدار webkit.

Intent to Remove | Chromestatus Tracker | Chromium Bug

إيقاف المطابقة غير الحسّاسة لحالة الأحرف لسمة usemap

كانت سمة usemap محدّدة سابقًا على أنّها غير حسّاسة لحالة الأحرف. لسوء الحظ، كان تنفيذ ذلك معقدًا بما يكفي لدرجة أنّه لم يتم تنفيذه بشكلٍ صحيح في أيّ من المتصفّحات. أشارت الأبحاث إلى أنّ هذه الخوارزمية المعقّدة غير ضرورية، وحتى المطابقة غير الحسّاسة لحالة الأحرف في ASCII غير ضرورية.

نتيجةً لذلك، تم تعديل المواصفة لتتم أولاً المطابقة الحساسة لحالة الأحرف. تم إيقاف السلوك القديم نهائيًا في الإصدار 57 من Chrome، ومن المتوقّع أن تتم إزالته في الإصدار 58 من Chrome.

Intent to Remove | Chromestatus Tracker | Chromium Bug

إيقاف FileReaderSync نهائيًا في ملفات تشغيل الخدمات

كانت مواصفات مشغّل الخدمات تتضمن دائمًا ملاحظة (غير قياسية) مفادها أنّه "يجب عدم بدء أي نوع من الطلبات المتزامنة داخل مشغّل الخدمات"، لتجنُّب حظر مشغّل الخدمات. سيؤدي حظر مشغّل الخدمة إلى حظر جميع طلبات الشبكة من الصفحات الخاضعة للرقابة. عذرًا، كانت واجهة برمجة التطبيقات FileReaderSync متاحة منذ فترة طويلة في مهام الخدمة.

لا يعرض حاليًا سوى Firefox وChrome FileReaderSync في مهام الخدمة. هناك موافقة من Firefox في مناقشة المواصفات على أن يتم إصلاح هذه المشكلة. من المتوقّع أن تتم إزالة هذه الميزة في الإصدار 59 من Chrome.

Intent to Remove | Chromestatus Tracker | Chromium Bug

إيقاف العنصر القديم الذي يُطلِق HTMLEmbedElement وHTMLObjectElement

إذا كانت الواجهة تحتوي على مُرسِل طلب قديم، يعني ذلك أنّه يمكن استدعاء مثيل كأحد الدوالّ. تتوفّر هذه الميزة في الوقت الحالي على HTMLEmbedElement وHTMLObjectElement. في الإصدار 57 من Chrome، تم إيقاف هذه الميزة نهائيًا. بعد الإزالة، والتي من المفترض أن تتم في الإصدار 58 من Chrome، سيؤدي الاتصال إلى طرح استثناء.

يتوافق هذا التغيير مع التغييرات الأخيرة في المواصفات. لا يتوفّر السلوك القديم في Edge أو Safari، ويتم إزالته من Firefox.

Intent to Remove | Chromestatus Tracker | Chromium Bug

إيقاف ميزة RTCRtcpMuxPolicy من "negotiate" نهائيًا

يستخدم Chrome العنصر rtcpMuxPolicy لتحديد سياسته المفضّلة بشأن استخدام ميزة "البث المتعدّد عبر بروتوكول RTP/RTCP". في الإصدار 57 من Chrome، غيّرنا الإعداد التلقائي rtcpMuxPolicy إلى "طلب" وأوقفنا نهائيًا الإعداد "تفاوض" للأسباب التالية:

  • يستخدم بروتوكول RTCP غير المجمّع موارد إضافية للشبكة.
  • ستؤدي إزالة "negotiate" إلى تبسيط واجهة برمجة التطبيقات، لأنّه لن يكون لدى "RtpSender"/"RtpReceiver" سوى وسيلة نقل واحدة.

في الإصدار 57 من Chrome، تم إيقاف الإجراء "negotiate" نهائيًا. نعتقد أنّ هذا التغيير لن يؤثر في تجربة المستخدمين، لأنّه سيتلقّى رسالة تشير إلى إيقاف الميزة نهائيًا وسيظل بإمكانه إنشاء RTCPeerConnection. ستتم إزالة هذه الميزة في الإصدار 63 من Chrome.

النية لإيقاف الميزة نهائيًا | خطأ في Chromium

إيقاف بيانات الاعتماد المضمّنة في طلبات الموارد الفرعية نهائيًا

إنّ الترميز الثابت لبيانات الاعتماد في طلبات الموارد الفرعية يشكّل مشكلة من ناحية الأمان، لأنّه سمح للمخترقين في السابق باستخدام هجمات القوة الغاشمة لمحاولة الوصول إلى بيانات الاعتماد. تزداد هذه المخاطر في ما يتعلّق بطلبات الموارد الفرعية التي تتضمّن بيانات اعتماد وتصل إلى نطاقات عناوين IP الداخلية (أجهزة التوجيه وما إلى ذلك). نظرًا لانخفاض معدّل الاستخدام، يبدو أنّ إغلاق ثغرة الأمان هذه (الصغيرة) أمر معقول تمامًا.

يمكن للمطوّرين تضمين موارد لا تتطلّب مصادقة أساسية/مجزأة، مع الاعتماد بدلاً من ذلك على ملفات تعريف الارتباط وآليات إدارة الجلسات الأخرى.

Intent to Remove | Chromestatus Tracker | Chromium Bug