Устаревшие и удаленные версии Chrome 58

Джо Медли
Joe Medley

Почти в каждой версии Chrome мы видим значительное количество обновлений и улучшений продукта, его производительности, а также возможностей веб-платформы. В этой статье описаны устаревания и удаления в Chrome 58, который находится в стадии бета-тестирования по состоянию на 16 марта. Этот список может быть изменен в любое время.

Мышь на Android перестает запускать TouchEvents

До Chrome 57 низкоуровневые события мыши Android в Chrome в основном следовали пути событий, предназначенному для сенсорного взаимодействия. Например, движение перетаскивания мыши, происходящее при нажатии кнопки мыши, генерирует MotionEvents , доставляемый через View.onTouchEvent .

Но поскольку события касания не поддерживают наведение, движения мыши при наведении следовали по отдельному пути. Этот дизайн имел множество побочных эффектов, включая взаимодействие с мышью, вызывающее TouchEvents , все кнопки мыши отображались как левые кнопки мыши, а MouseEvents подавлялись TouchEvents .

Начиная с Chrome 58, мышь на Android M или более поздней версии будет:

  • Больше не запускайте TouchEvents .
  • Запустите последовательную последовательность MouseEvents с соответствующими кнопками и другими свойствами.

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Удалить сопоставление без учета регистра для атрибута usemap

Атрибут usemap ранее определялся как безрегистровый. К сожалению, реализация этого была настолько сложной, что ни один браузер не реализовал ее правильно. Исследования показали, что такой сложный алгоритм не нужен, и даже сопоставление ASCII без учета регистра не является необходимым.

Следовательно, спецификация была обновлена, и теперь применяется сопоставление с учетом регистра. Старое поведение устарело в Chrome 57 и теперь удалено.

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Удалить переходы в верхнем фрейме, инициированные контентом, к URL-адресам данных.

Из-за того, что они незнакомы нетехническим пользователям браузеров, мы все чаще видим, что схема data: используется в спуфинговых и фишинговых атаках. Чтобы предотвратить это, мы блокируем загрузку data: URL-адреса в верхнем фрейме. Это относится к <a> теги, window.open , window.location и подобные механизмы. Схема data: по-прежнему будет работать для ресурсов, загруженных ниже страницы.

Эта функция будет удалена в Chrome 60.

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Удалите устаревшие имена для свойств пути движения.

Свойства CSS пути движения позволяют авторам анимировать любой графический объект по указанному автором пути. В соответствии со спецификацией в Chrome 45 было реализовано несколько свойств. Названия этих свойств были изменены в спецификации в середине 2016 года . Новые имена реализованы в Chrome 55 и Chrome 56 . Также были реализованы предупреждения об устаревании консоли.

В Chrome 58 старые имена свойств удаляются. Затронутые свойства и их новые имена показаны ниже.

Удаленное свойство Нынешнее название
путь движения путь смещения
смещение движения расстояние смещения
движение-вращение смещение-поворот
движение компенсировать

Намерение удалить

Удалить EME из незащищенных контекстов

Некоторые варианты использования Encrypted Media Extensions (EME) предоставляют реализации управления цифровыми правами, которые не являются открытым исходным кодом, предполагают доступ к постоянным уникальным идентификаторам и/или выполняются без изолированной программной среды или с привилегированным доступом. Риски безопасности увеличиваются для сайтов, открытых через незащищенный HTTP, поскольку они могут быть атакованы кем угодно на канале. Кроме того, когда требуется согласие пользователя, такое согласие может быть использовано злоумышленником для незащищенного HTTP-сайта.

Поддержка незащищенных контекстов была удалена из спецификации EME версии 1 , не поддерживается в предложенной рекомендации и не ожидается в последующем окончательном варианте. не будет ни в предстоящей предлагаемой рекомендации, ни в последующей окончательной рекомендации. Начиная с версии Chrome 44 (май 2015 г.), API отображает сообщение об устаревании для незащищенных источников. В Chrome 58 он теперь удален. Это изменение является частью наших более широких усилий по удалению мощных функций из незащищенных источников .

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Удалить устаревший вызывающий объект для HTMLEmbedElement и HTMLObjectElement.

Наличие у интерфейса устаревшего вызывающего объекта означает, что экземпляр можно вызывать как функцию. В настоящее время HTMLEmbedElement и HTMLObjectElement поддерживают эту функцию. В Chrome 57 эта возможность устарела. Начиная с Chrome 58, вызов вызывает исключение.

Это изменение приводит Chrome в соответствие с недавними изменениями спецификаций. Устаревшее поведение не поддерживается в Edge или Safari и удаляется из Firefox .

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Удалить предстандартные шифры ChaCha20-Poly1305.

В 2013 году в Chrome 31 были развернуты новые наборы шифров TLS , основанные на алгоритмах профессора Дэна Бернштейна ChaCha20 и Poly1305. Позже они были стандартизированы с небольшими изменениями в IETF как RFC 7539 и RFC 7905 . Мы выпустили стандартизированный вариант в начале 2016 года вместе с Chrome 49 . Сейчас мы удаляем предстандартные варианты.

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Удалить поддержку сопоставления commonName в сертификатах.

RFC 2818 описывает два метода сопоставления имени домена с сертификатом: использование доступных имен в расширении subjectAlternativeName или, при отсутствии расширения SAN, возврат к commonName . Резервное имя commonName было объявлено устаревшим в RFC 2818 (опубликованном в 2000 году), но поддержка сохраняется в ряде клиентов TLS, часто ошибочно.

Использование полей subjectAlternativeName позволяет однозначно определить, выражает ли сертификат привязку к IP-адресу или доменному имени, и полностью определяется с точки зрения его взаимодействия с ограничениями имени. Однако commonName неоднозначно, и из-за этого его поддержка была источником ошибок безопасности в Chrome, используемых им библиотеках и в экосистеме TLS в целом.

Риск совместимости при удалении commonName невелик. В RFC 2818 это устарело почти на два десятилетия, а базовые требования (которые должны соблюдать все публично доверенные центры сертификации) требовали наличия subjectAltName с 2012 года. Firefox уже требует subjectAltName для любых вновь выпущенных публично доверенных сертификатов, начиная с Firefox 48. .

Намерение удалить | Трекер Chromestatus | Ошибка хрома

regions элементов интерфейса addRegion() и removeRegion() были удалены из спецификации WebVTT и удалены в Chrome 58, чтобы соответствовать последней спецификации . Мы ожидаем незначительного эффекта от этого удаления, поскольку эта функция никогда не была включена по умолчанию (то есть она находилась за флажком). Те, кому нужна альтернатива, могут использовать свойство VTTCue.region , которое добавляется в Chrome 58.

Трекер Chromestatus | Ошибка хрома

WebAudio: удалить интерфейс AudioSourceNode

Интерфейс AudioSourceNode не является частью спецификации Web Audio , не является конструктивным и не имеет атрибутов, поэтому он по сути не имеет функциональных возможностей, доступных разработчику. Поэтому его удаляют.

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Удалить глобальный атрибут webkitdropzone

Глобальный атрибут dropzone был введен спецификацией перетаскивания HTML5 как декларативный метод для указания готовности HTML-элемента быть целью операции перетаскивания, типов контента, которые можно переместить на элемент, а также типа перетаскивания. Операция -и-удаления (копирование/перемещение/ссылка).

Атрибут не получил поддержки среди производителей браузеров. Blink и WebKit реализуют только префиксную форму атрибута webkitdropzone . Поскольку атрибут dropzone был удален из спецификации в начале марта 2017 года, версия с префиксом удаляется из Chrome.

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Устаревшее небезопасное использование уведомлений

Уведомления являются мощной функцией, поскольку они позволяют веб-сайтам вызывать системный пользовательский интерфейс для передачи либо самой личной информации, либо сигнала об изменении личной информации. Злоумышленники могут перехватить или украсть любую информацию, отправленную через уведомление по незащищенному соединению. Для веб-push требуется безопасный источник, поэтому это изменение приведет в соответствие обычные push-уведомления с push-уведомлениями. Это изменение является частью наших более широких усилий по удалению мощных функций из незащищенных источников .

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Устарело использование уведомлений из небезопасных iframe.

Запросы разрешений от iframe могут сбить с толку пользователей, поскольку трудно отличить происхождение содержащей страницы от источника iframe, отправляющего запрос. Когда объем запросов неясен, пользователям трудно решить, предоставить или отклонить разрешение.

Запрет уведомлений в iframe также приведет в соответствие требования к разрешению уведомлений с требованиями к push-уведомлениям, что облегчит работу разработчиков.

Разработчики, которым нужна эта функция, могут открыть новое окно и запросить разрешение на уведомление.

Удаление происходит в Chrome 62.

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Удалить indexedDB.webkitGetDatabaseNames()

Мы добавили эту функцию, когда индексированная база данных была относительно новой в Chrome и использование префиксов было в моде. API асинхронно возвращает список существующих имен баз данных в источнике, что казалось достаточно разумным.

К сожалению, конструкция имеет недостатки: результаты могут устареть сразу после их возврата, поэтому на самом деле ее можно использовать только для журналирования, а не для серьезной логики приложения. Проблема с github отслеживает/ссылается на предыдущее обсуждение альтернатив, которые потребуют другого подхода. Несмотря на то, что разработчики время от времени проявляли интерес, учитывая отсутствие межбраузерного прогресса, авторы библиотек решили проблему.

Разработчикам, которым нужна эта функциональность, необходимо разработать собственное решение. Например, такие библиотеки, как Dexie.js, используют глобальную таблицу, которая сама по себе является еще одной базой данных для отслеживания имен баз данных.

Эта функция удалена в Chrome 60.

Намерение прекратить поддержку | Трекер Chromestatus | Ошибка хрома