Компания Google представила (http://chromereleases.googleblog.com/2017/04/stable-channel-...) релиз web-браузера Chrome 58 (http://www.google.com/chrome). Одновременно доступен (https://www.chromium.org/developers/calendar) стабильный выпуск свободного проекта Chromium (http://dev.chromium.org/), выступающего основой Chrome. Браузер Chrome отличается (https://code.google.com/p/chromium/wiki/ChromiumBrowserVsGoo...) использованием логотипов Google, идущим в комплекте модулем Flash, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого видеоконтента, системой автоматической установки обновлений и передачей при поиске RLZ-параметров (https://www.opennet.dev/opennews/art.shtml?num=26822).Основные (https://productforums.google.com/forum/#!forum/chrome) изменения (https://plus.google.com/+FrancoisBeaufort/posts) в (https://blog.chromium.org/2017/03/chrome-58-beta-indexeddb-2...) Chrome 58 (https://developers.google.com/web/updates/2017/04/nic58):
- В настойки добавлена опция для отключения API Encrypted Media Extensions (https://w3c.github.io/encrypted-media/).
Необходимость в новой опции возникла после удаления в прошлом выпуске интерфейса для управления плагинами "chrome://plugins", так как без него не осталось средств для отключения CDM-модуля (Content Decryption Module) Widevine, предназначенного для декодирования медиаконтента, защищённого авторскими правами;
- Реализована поддержка API IndexedDB 2.0 (https://hacks.mozilla.org/2016/10/whats-new-in-indexeddb-2-0/), предоставляющего для JavaScript средства работы с локальными БД, работающими в режиме ключ/значение, поддерживающими создание индексов, операции с курсором, первичные ключи и упорядоченную выборку данных. В новой редакции API представлены новые возможности по управлению схемой данных, методы для пакетного выполнения группы операций и более стандартизированные средства обработки сбоев. Для упрощения обновления БД, хранилища и индексы теперь могут быть переименованы после реструктуризации.
Появилась возможность использования бинарных ключей, обеспечивающих компактное представление пользовательским ключам. Для упрощения извлечения данных добавлены методы getKey() и openKeyCursor(), позволяющие добиться повышения производительности выборки, в ситуации кода необходимо получить только ключ. Новый метод continuePrimaryKey() может оказаться полезен для разбиения больших наборов данных на части с обработкой в разных транзакциях без опасения о дублировании первичных ключей. Методы getAll() и getAllKeys() позволяю сразу получить всё содержимое базе без использования курсора;
- Для iframe реализована опция "allow-top-navigation-by-user-activation (https://html.spec.whatwg.org/multipage/browsers.html#attr-if...)", разрешающая выполнять навигацию по родительской странице из изолированного iframe при явном клике пользователя на ссылке, но запрещающая автоматический редирект. Опция полезна для размещения баннеров в iframe, позволяя совершать переходы на заинтересовавшую рекламу, но блокируя нежелательную активность (например, автоматический проброс на другие страницы);
- Для приложений, работающих в режиме Progressive Web Apps (https://developers.google.com/web/progressive-web-apps/), позволяющем организовать работу с web-приложением, как с обычной программой для Android (отображение в списке запущенных программ, выполнение деинсталляции, средства для получения запросов от других приложений, свой блок настроек в системном конфиругаторе, управление уведомлениями, работа при отсутствии сетевого соединения и т.п.), реализована возможность работы в полноэкранном режиме. Указав в файле-манифесте приложения свойство "display: fullscreen" web-приложение будет открываться без служебных кнопок, панели и адресной строки, если программа запущена через ярлык на домашнем экране. Подобный режим может быть востребован для таких приложений, как игры и мультимедийные проигрыватели;
- В CSS-свойство display добавлена поддержка значения flow-root, позволяющего сгенерировать блочный элемент, соответствующий новой технике блочного (https://codepen.io/rachelandrew/pen/RKgevX) форматирования контента, что позволяет обойтись без ручной периодической установки свойств float и clear;
- Добавлен интерфейс PointerEvents.getCoalescedEvents() (https://w3c.github.io/pointerevents/extension.html), позволяющий получить доступ ко всем событиям ввода с момента послежней доставки события PointerEvent. Подобная возможность может применяться для получения истории позиций перемещения указателя для таких приложений, как программы для рисования;
- Workers (https://developer.mozilla.org/en-US/docs/Web/API/Worker) и SharedWorkers (https://developer.mozilla.org/en/docs/Web/API/SharedWorker) теперь могут задаваться через URL "data:", что позволяет организовать более безопасное самодостаточное выполнение фоновых задач без привязки к домену;
- Добавлен API ControlsList (https://github.com/WICG/controls-list/blob/gh-pages/explaine...), через который предоставлена возможность менять оформление встроенных кнопок управления, таких как кнопки загрузки, перехода в полноэкранный режим и удалённого воспроизведения
- В Chrome для Android воспроизведение видео с флагом "autoplay" будет останавливаться при переключении приложения на экране и возобновляться при возвращении в область видимости;
- В Chrome для Android сайтам, добавленным на домашний экран, теперь разрешено автоматическое воспроизведение звука и видео с хостов, явно перечисленных в файле с манифестом;
- Для оптимизации времени разбора JavaScript, элемнеты SVGPoint, SVGRect и SVGMatrix выделены из API Geometry в отдельные интерфейсы (https://hacks.mozilla.org/2014/03/introducing-the-getboxquad.../);
- В Selection API добавлена функция removeRange() (https://developer.mozilla.org/en-US/docs/Web/API/Selection/r...), позволяющая удалить объект Range, определяющий выделенный пользователем блок текста;
- На платформе macOS добавлена поддержка атрибутов PointerEvent.tangentialPressure (https://w3c.github.io/pointerevents/#dom-pointerevent-tangen...) и PointerEvent.twist (https://w3c.github.io/pointerevents/#dom-pointerevent-twist), определяющих параметры стилуса (например, в приложении для рисования можно учитывать силу нажатия);
- В JavaScript теперь разрешено оставлять запятые в конце списков параметров и аргументов;
- В WebAudio API добавлено свойство воспроизведения AudioContextLatencyCategory (https://webaudio.github.io/web-audio-api/#BaseAudioContext), позволяющее выбрать компромисс между величиной задержек и нагрузкой на CPU;
- Создание уведомлений через Notifications API или запрос прав на вывод уведомлений теперь возможен только для сайтов, открытых по HTTPS;
- API Encrypted Media Extensions теперь допускает только обработку данных, поступивших по HTTPS;
- Прямые переходы на URL "data:" объявлены устаревшими для защиты от попыток спуфинга и фишинга;
- Экземпляры объектов HTMLEmbedElement и HTMLObjectElement теперь не могут вызываться как функция.
Кроме нововведений и исправления ошибок в новой версии устранены 29 уязвимостей (https://bugs.chromium.org/p/chromium/issues/list?can=1&q=lab...). Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer (http://code.google.com/p/address-sanitizer/wiki/AddressSanit...), MemorySanitizer (https://code.google.com/p/memory-sanitizer/wiki/MemorySanitizer), Control Flow Integrity (https://sites.google.com/a/chromium.org/dev/developers/testi...) и LibFuzzer (https://sites.google.com/a/chromium.org/dev/developers/testi...). Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе, за пределами sandbox-окружения, не выявлено. В рамках пр...
URL: http://chromereleases.googleblog.com/2017/04/stable-channel-...
Новость: http://www.opennet.dev/opennews/art.shtml?num=46412