Wycofania i usuwania interfejsów API w Chrome 57

Jan Kowalski
Joe Medley

W niemal każdej wersji Chrome obserwujemy znaczną liczbę aktualizacji i ulepszeń produktu, jego wydajności, a także możliwości platformy internetowej. W tym artykule opisujemy wycofywanie i usuwanie przeglądarki Chrome 57, która od początku lutego znajduje się w fazie beta. Ta lista może się w każdej chwili zmienić.

Usuń atrybut BluetoothDevice.uuids

Usuwamy atrybut BluetoothDevice.uuids, aby zapewnić zgodność interfejsu Web Bluetooth API z aktualną specyfikacją. Aby pobrać wszystkie dozwolone usługi GATT, wywołaj funkcję device.getPrimaryServices().

Błąd Chromium

Usuń element generowania kluczy

Od Chrome 49 domyślnym działaniem <keygen> jest zwracanie pustego ciągu znaków, chyba że stronie przyznano odpowiednie uprawnienia. IE/Edge nie obsługuje parametru <keygen> i nie ma wskazanych sygnałów publicznych do obsługi polecenia <keygen>. Przeglądarka Firefox blokuje już adres <keygen> w odpowiedzi na gest użytkownika, ale publicznie popiera jego usunięcie. Safari wysyła statki <keygen> i nie wyraża opinii na temat dalszego wsparcia tej platformy. W Chrome 57 ten element jest usuwany.

Intencja usunięcia | Narzędzie do śledzenia stanu Chrome | Błąd Chromium

Usuń interfejs API zarządzania buforem czasu zasobów z prefiksem

2 metody i moduł obsługi zdarzeń (webkitClearResourceTimings(), webkitSetResourceTimingBufferSize() i onwebkitresourcetimingbufferfull) są przestarzałe i zależą od konkretnych dostawców. Standardowe wersje tych interfejsów API są obsługiwane w Chrome 46, a funkcje poprzedzone prefiksami zostały wycofane także w tej wersji. Te funkcje były pierwotnie wdrażane w WebKit, ale w przeglądarce Safari ich nie włączono. Przeglądarki Firefox, IE 10+ i Edge mają tylko wersję API bez prefiksu. Dlatego wersje webkit są usuwane.

Intencja usunięcia | Narzędzie do śledzenia stanu Chrome | Błąd Chromium

Usunięcie elementu ServiceWorkerMessageEvent na rzecz użycia funkcji MessageEvent

Specyfikacja HTML rozszerzyła MessageEvent, aby umożliwić użycie typu ServiceWorker jako typu atrybutu source. client.postMessage() i tworzenie niestandardowych zdarzeń wiadomości zmieniono na MessageEvent, a nie ServiceWorkerMessageEvent. Usunięto: ServiceWorkerMessageEvent.

Intencja usunięcia | Narzędzie do śledzenia stanu Chrome | Błąd Chromium

Usuń globalne aliasy IndexedDB z prefiksem webkit-prefixed

W okolicach Chrome 11 punkt wejścia IndexedDB i konstrukcje globalne zostały udostępnione z prefiksami webkit. Wersje bez prefiksu zostały dodane w Chrome 24, a wersje z prefiksem zostały wycofane w Chrome 38. Problem dotyczy tych interfejsów:

  • webkitIndexedDB (główny punkt wejścia)
  • webkitIDBKeyRange (konstruktor globalny, którego nie można wywołać, ale ma przydatne metody statyczne)
  • webkitIDBCursor
  • webkitIDBDatabase
  • webkitIDBFactory
  • webkitIDBIndex
  • webkitIDBObjectStore
  • webkitIDBRequest
  • webkitIDBTransaction (konstruktory globalne bez możliwości wywołania)

Intencja usunięcia | Narzędzie do śledzenia stanu Chrome | Błąd Chromium

WebAudio: usuwanie przedrostka AudioContext i OfflineAudioContext

Od połowy 2011 roku Chrome obsługuje WebAudio, w tym AudioContext. Konto OfflineAudioContext zostało dodane w następnym roku. Ze względu na to, jak długo są obsługiwane interfejsy standardowe, a także długoterminowy cel Google polegający na usunięciu funkcji z prefiksami, wersje z prefiksami są wycofywane pod koniec 2014 roku i teraz są usuwane.

Intencja usunięcia | Narzędzie do śledzenia stanu Chrome | Błąd Chromium

Wycofanie i usunięcie metody webkitRequestAnimationFrame

Metoda webkitCancelRequestAnimationFrame() jest przestarzałym, właściwym dla dostawcy interfejsem API, a standardowy cancelAnimationFrame() jest od dawna obsługiwany w Chromium. Dlatego usuwam wersję webkit.

Intencja usunięcia | Narzędzie do śledzenia stanu Chrome | Błąd Chromium

Wycofaj dopasowywanie wielkości liter w atrybucie usemap

Atrybut usemap nie był wcześniej zdefiniowany jako niewielkość liter. Wdrożenie tych rozwiązań było jednak na tyle skomplikowane, że żadna z przeglądarek nie zaimplementowała jej prawidłowo. Z badań wynika, że taki skomplikowany algorytm jest niepotrzebny i nie jest konieczne nawet dopasowywanie wielkości liter w standardzie ASCII.

W związku z tym zaktualizowaliśmy specyfikację, aby zastosować dopasowywanie z uwzględnieniem wielkości liter. Stare działanie zostało wycofane w Chrome 57 i wkrótce zostanie usunięte w Chrome 58.

Intencja usunięcia | Narzędzie do śledzenia stanu Chrome | Błąd Chromium

Wycofywanie FileReaderSync w instancjach service worker

Specyfikacja skryptu service worker zawsze zawierała (nienormatywne) uwagi, że „żądania synchronicznego typu nie mogą być inicjowane w skrypcie service worker”, by uniknąć jego zablokowania. Zablokowanie skryptu service worker zablokuje wszystkie żądania sieciowe pochodzące z kontrolowanych stron. Interfejs API FileReaderSync jest już od dawna dostępny w skryptach service worker.

Obecnie tylko Firefox i Chrome ujawniają FileReaderSync w mechanizmach Service Worker. Zgodnie z dyskusją o specyfikacji przeglądarki Firefox należy to naprawić. Usunięcie powinno nastąpić w Chrome 59.

Intencja usunięcia | Narzędzie do śledzenia stanu Chrome | Błąd Chromium

Wycofaj starszą wersję wywołującego elementów HTMLEmbedElement i HTMLObjectElement

To, że interfejs zawiera starszy element wywołujący, oznacza, że instancję można wywołać jako funkcję. Obecnie tę funkcję obsługują HTMLEmbedElement i HTMLObjectElement. W Chrome 57 ta możliwość jest wycofana. Po usunięciu, co jest oczekiwane w Chrome 58, wywołanie spowoduje zgłoszenie wyjątku.

Dzięki tej zmianie wprowadziliśmy najnowsze zmiany w specyfikacji urządzeń Chrome. Starsze zachowanie nie jest obsługiwane w przeglądarkach Edge ani Safari i jest usuwane z Firefoksa.

Intencja usunięcia | Narzędzie do śledzenia stanu Chrome | Błąd Chromium

Wycofano RTCRtcpMuxPolicy na potrzeby negocjowania

Zasada rtcpMuxPolicy jest używana przez Chrome do określania preferowanej zasady dotyczącej użycia multipleksowania RTP/RTCP. W Chrome 57 zmieniliśmy domyślną opcję rtcpMuxPolicy na „require” i wycofaliśmy opcję „negocjowania” z tych powodów:

  • Niezmodyfikowany protokół RTCP wymaga dodatkowych zasobów sieciowych.
  • Usunięcie negocjacji uprości powierzchnię interfejsu API, ponieważ obiekty „RtpSender”/„RtpReceivedr” będą zawsze miały tylko 1 transport.

W Chrome 57 opcja „negocjacja” została wycofana. Sądzimy, że nie jest to awaryjne rozwiązanie, ponieważ użytkownik dostanie wiadomość o wycofaniu usługi i nadal będzie mógł utworzyć RTCPeerConnection urządzenie. Funkcja usuwania jest dostępna w Chrome 63.

Intencje do wycofania | Błąd Chromium

Zrezygnuj z obsługi osadzonych danych logowania w żądaniach zasobów podrzędnych

Kodowanie na stałe danych logowania w żądaniach zasobów podrzędnych stanowi problem z punktu widzenia zabezpieczeń, ponieważ w przeszłości hakerzy mogli wykorzystywać dane logowania brute-force. Te zagrożenia zwiększają się w przypadku żądań zasobów podrzędnych z uwierzytelnianiem, które docierają do zakresów wewnętrznych adresów IP (routerów itp.). Biorąc pod uwagę małe wykorzystanie zasobów, zamknięcie tej (niewielkiej) luki w zabezpieczeniach wydaje się rozsądne.

Deweloperzy mogą umieszczać zasoby, które nie wymagają uwierzytelniania podstawowego/skrótu, zamiast plików cookie i innych mechanizmów zarządzania sesją.

Intencja usunięcia | Narzędzie do śledzenia stanu Chrome | Błąd Chromium