Компания Google представила релиз web-браузера Chrome 73. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается использованием логотипов Google, возможностью загрузки модуля Flash по запросу, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого видеоконтента, системой автоматической установки обновлений и передачей при поиске RLZ-параметров. Следующий выпуск Chrome 74 запланирован на 23 апреля.

Основные изменения в Chrome 73:

  • В версию для Android добавлен режим “Lite pages”, позволяющий ускорить загрузку сайтов и сократить трафик за счёт обращения через прокси в Google, на лету осуществляющий оптимизацию запрашиваемых страниц для просмотра на мобильном устройстве.
    На серверы Google передаётся только URL страницы, а Cookies и параметры аутентификации обрабатываются напрямую. Оптимизация включается при активации опции “Data Saver” в настройках, после чего применяется автоматически, в зависимости от конкретных сайтов и качества канала связи.

    Например, оптимизация применяется при доступе в режиме “2G” или когда страница загружается более 5 секунд. Критерии активации можно настроить при помощи опций “#force-effective-connection-type” и “#ignore-previews-blocklist” в “chrome://flags”. При отображении страницы в режиме оптимизации в адресной строке высвечивается специальный индикатор “Lite”, через который можно вернуться к просмотру оригинальных страниц. Режим автоматически отключается для конкретных сайтов, если пользователь часто возвращается к просмотру оригинальных неоптимизированных страниц;

  • В настройках учётной записи предложена отдельная секция “Sync and Google services”, в которой собраны все имеющиеся опции для управления синхронизацией данных и отправки сведений в сервисы Google. В секции также предложены новые опции “Enhanced spell check” (синхронизация добавленных пользователем слов в словарь), “Safe browsing extended reporting” (отправка в Google дополнительных данных для определения вредоносных приложений и страниц) и “Make searches and browsing better” (анонимизированный сбор телеметрии с информацией об открываемых URL);
  • Усовершенствован режим просмотра “картинка в картинке” (Picture-In-Picture). Помимо видео в форме плавающего окна, которое остаётся на виду в процессе навигации в браузере, в данном режиме теперь можно отсоединить web-приложения в формате PWA (Progressive Web Apps). Например, подобным способом удобно запускать чаты, мессенджеры и и видеоконференции. По умолчанию возможность пока неактивна и ограничена тестами в режиме “Origin Trial”;
  • Для видео добавлено новое свойство “autopictureinpicture”, позволяющее в случае предоставления должных полномочий автоматически перейти в режим Picture-In-Picture при переходе на другую вкладку и отключить данный режим при возвращении на исходную вкладку;
  • В режиме Picture-In-Picture также реализована возможность показа кнопки “Skip Ad” (действие skipad в Media Session API) для отмены показа рекламной вставки (ранее воспроизведение в окне Picture-In-Picture было не интерактивным);
  • Добавлена поддержка использования аппаратных мультимедийных клавиш для управления воспроизведением контента, например, для остановки, проигрывания и перехода к следующему ролику на YuoTube. Для привязки обработчиков к мультимедийным клавишам предлагается использовать API Media Sessions. Возможность пока доступна в версиях для Chrome OS, macOS и Windows, а в Linux обещают добавить позднее;
  • В версии для Android появился новый менеджер загрузок. Добавлена возможность наглядного отслеживания состояния загрузки – в нижней части теперь отображается специальный индикатор прогресса (раньше браузер лишь выдавал уведомление о завершении загрузки). В списке файлов обеспечен показ крупных эскизов загруженных изображений и возможность сортировки по типу контента и времени загрузки;
  • В версии для Android на странице с “динозавром”, отображаемой при отсутствии сетевого соединения, добавлен список рекомендаций, включающих страницы, доступные в кэше для просмотра в offline;
  • В версии для macOS добавлена поддержка PWA (Progressive Web Apps, возможность обособленного запуска web-приложений как обычных программ без адресной строки и вкладок) и тёмной темы оформления интерфейса;

  • Включена поддержка механизма Signed HTTP Exchanges (SXG) для организации размещения верифицированных копий web-страниц на других сайтах, выглядящих для пользователя как исходные страницы. Благодаря SXG владелец одного сайта при помощи цифровой подписи может авторизовать размещения определённых страниц на другом сайте. В случае обращения к этим страницам на втором сайте, браузер будет показывать пользователю URL исходного сайта, несмотря на то, что страница загружена с другого хоста. Подробнее см. анонс появления данной технологии;

  • Объявлено устаревшим и будет удалено в следующем выпуске свойство “allow-downloads-without-user-activation”, через которой можно было организовать автоматическую загрузку файлов при обработке iframe. В следующем выпуске инициирование загрузки файлов без явного действия пользователя будет запрещено, так как оно активно применялось для злоупотреблений, навязывания загрузок и подстановки частей вредоносного ПО на компьютер пользователя. Для начала загрузки обязательно потребуется клик пользователя на той же странице;
  • В предоставляемых дополнениями скриптах обработки контента запрещена загрузка внешних ресурсов (Cross-Origin), не соответствующих домену страницы, в контексте которой выполняется скрипт. Для выполнения сторонних загрузок разработчикам дополнений следует применять фоновые обработчики (background pages). Изменение касается только новых дополнений и дополнений, в которых данная функциональность не была реализована ранее. Для всех дополнений изменение будет применено в одном из будущих выпусков Chrome после принятия второй версии манифеста. По приблизительной оценке изменение коснётся менее 1% дополнений, которыми пользуется более 1000 пользователей (в настоящее время белый список включает 70 дополнений);
  • Добавлен HTTP-заголовок “Cross-Origin-Resource-Policy” позволяющий серверу запретить вставку отдаваемых ресурсов (например, изображений) в контексте других доменов (cross-origin и cross-site);

  • Добавлен API Badging, позволяющий web-приложениям создавать индикаторы, выводимые на панели или домашнем экране. При закрытии страницы индикатор автоматически убирается. Например, подобным способом можно отображать число непрочитанных сообщений или информацию о каких-то событиях;
  • Добавлен программный интерфейс, позволяющий из JavaScript-приложения динамически создавать таблицы стилей и манипулировать применением стилей. В отличие от создания таблиц стилей при помощи метода document.createElement(‘style’) новый API добавляет средства для конструирования стилей через объект CSSStyleSheet(), предоставляя такие методы, как insertRule, deleteRule, replace и replaceSync. Применение CSSStyleSheet позволяет упростить манипуляции с CSS и решить проблемы с дублированием свойств, одновременным применением изменений к разным частям DOM и совместным использованием в разных компонентах;

  • Предложен новый метод String.prototype.matchAll() для сопоставления с использованием регулярных выражений. При использовании метода match с флагом “/g” возвращается простой массив строк, но при единичном сопоставлении (без флага “/g”) выводится объект с расширенными свойствами. Метод matchAll отличается от выполнения метода match с флагом “/g” тем, что он возвращает массив объектов со свойствами всех совпадений, а не массив строк;
  • По умолчанию обработчики событий от колеса мыши (wheel и mousewheel) теперь создаются в пассивном режиме (как при выполнении “window.addEventListener(‘wheel’, func, {passive: true}))”, не блокирующем выполнение браузером операций прокрутки и масштабирования, что положительно сказывается на отзывчивости интерфейса. Ранее аналогичное изменение поведения по умолчанию было выполнено для обработчиков “touchstart” и “touchmove”;
  • В тег “link” добавлена поддержка свойств “imagesrcset” и “imagesizes” (используются только совместно со свойствами “preload” и “image”), аналогичных свойствам “srcset” и “sizes” объекта HTMLImageElement;
  • В CSS и XSLT в качестве базового URL для загрузки ресурсов со вложенными путями теперь принимается URL с которого фактически был загружен CSS. Например, если в теге link указан “/styles.css”, но при обращении выполняется редирект на “/foo/styles.css” то базовым для загрузки ресурсов (например, фоновых изображений) будет каталог “/foo”, а не “/”;
  • Отрисовка свойства “blur-radius” приведена в соответствие с требованием спецификации и поведением Firefox и Safari;
  • В WebSQL прекращена поддержка операций “EXPLAIN” и “REINDEX”. Поведение EXPLAIN отличалось в зависимости от версий SQLite, а REINDEX был бесполезен на практике;
  • В JavaSсript-движке V8 ускорена реализация операции “await” (включен по умолчанию флаг “–harmony-await-optimization”) и на 20-25% сокращено время компиляции WebAssembly;
  • Внесены улучшения в инструменты для web-разработчиков:
    • Добавлена поддержка “точек логгирования” (Logpoints), похожих на точки останова, но в момент срабатывания сбрасывающие значения определённых переменных и объектов в отладочную консоль, без необходимости явного вызова console.log() в коде. Выражение, которое будет выведено в лог определяется в момент создания
      Logpoint;

    • Данные о вовлечённости тех или иных CSS и JavaScript файлов в процесс выполнения (coverage) теперь могут быть экспортированы в формате JSON;
    • Во вкладке “Sensors” появилась возможность переопределения отдаваемых web-приложениям данных о местоположении пользователя;

    • В панелях Sources и Network добавлена функция сворачивания блоков кода. В панели Network вкладка Frames, используемая для инспектирования соединений WebSocket, переименована в Messages.

    Кроме нововведений и исправления ошибок в новой версии устранено 60 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 18 премии на сумму 13500 долларов США (одна премия $7500, четыре премии $1000 и четыре премий $500). Размер 9 вознаграждений пока не определён.