Czy Projekt Fugu jest „gotowy”?

Jednym z celów zespołu Project Fugu jest umożliwienie deweloperom korzystania w internecie z wszystkiego, co aplikacje na danej platformie, dlatego zespół zajmuje się dodawaniem brakujących funkcji internetowych potrzebnych deweloperom stron internetowych. Jeśli mi nie wierzysz, przejrzyj sekcję „Shipped” (Wysłano) w narzędziu do śledzenia interfejsu Fugu API. Oto 55 wysłanych interfejsów API w kolejności od najmniej do ostatniego:

Nazwa interfejsu API Wysłano za
Interfejs Web Bluetooth APIChrome 56
WebUSB APIChrome 61
Cel udostępniania w internecieChrome 71
Web Share API – poziom 2Chrome 75
Schowek asynchroniczny: odczyt i zapis obrazówChrome 76
Docelowy poziom 2 w ramach udostępniania w internecieChrome 76
Wpisz podpowiedź kluczaChrome 77
Zwiększ limit miejsca na daneChrome 78
Interfejs API zainstalowanych aplikacji powiązanych z instalacjamiChrome 80
Okresowa synchronizacja w tleChrome 80
desktop-pwas: obsługa trybu wyświetlania „minimal-ui”Chrome 80
Kodeki kompresjiChrome 80
Contacts API,Chrome 80
Interfejs API logoChrome 81
Zezwalaj na używanie interfejsu Badging API z poziomu skryptu service worker za pomocą funkcji pushChrome 81
Barcode Detection APIChrome 83
Interfejs Content Crawl APIChrome 84
WebOTPChrome 84
Interfejs API funkcji Screen Wake Lock APIChrome 84
Streams API: strumienie, które można przenieśćChrome 85
Skróty do aplikacjiChrome 85
Dostęp do systemu plikówChrome 86
Obsługa text/html interfejsu asynchronicznego schowka APIChrome 86
Obsługa przesuwania i przechylania w kamerzeChrome 87
FUGU Implementuje przechwytywanie dźwięku z systemu i aplikacji na słuchawkach i głośnikach Chrome 88
Niedostosowany ruch wskaźnika PointerLockChrome 88
Tworzenie selektora zdjęć i filmów podobnego do selektora zdjęć na AndroidzieChrome 88
Integracja Web Share (navigator.share) z systemem Windows 10Chrome 88
Internetowa komunikacja NFCChrome 89
WebHID (Human Interface Device)Chrome 89
Web Serial APIChrome 89
Udostępnianie w internecie na komputerzeChrome 89
Interfejs API rozpoznawania pisma odręcznegoChrome 90
Konfiguracja zarządzana na potrzeby aplikacji internetowychChrome 91
Uruchamianie PWA w OS LoginChrome 91
WebCodecsChrome 93
Wykrywanie bezczynnościChrome 94
Interfejs EyeDropper APIChrome 95
Menu skrótów aplikacji PWA w systemach macOS i LinuxChrome 96
Rejestracja modułu obsługi protokołu URL na potrzeby PWA Chrome 96
WebTransportChrome 97
Schowek: wklejanie obrazów siatkówki powoduje utratę metadanych dotyczących pHY.Chrome 98
PWA powinno być odinstalowane tak samo jak „prawdziwą aplikację”.Chrome 99
Internetowa komunikacja NFC: NDEFReader MakeReadOnly()Chrome 100
Umieszczanie okien na wiele ekranówChrome 100
HIDDevice zapomnij()Chrome 100
Zapomnienie urządzenia USBChrome 101
Zachowanie funkcji Web USB SameObjectChrome 101
Nakładka z elementami sterującymi okna dla zainstalowanych aplikacji internetowych na komputeryChrome 102
Obsługa plikówChrome 102
Interfejs chrome.management API nie może już współdziałać z aplikacjami PWAChrome 102
SerialPort zapomnij()Chrome 103
Dostęp do lokalnych czcionekChrome 103
Prośba o Fugu: dynamiczne skróty do aplikacji (skróty w wersji 2)Chrome 104
Niestandardowe formaty internetowe dla interfejsu Async Clipboard APIChrome 104
Do tej pory wszystkie wysłane interfejsy API Fugu.

To długa lista, a tak mamy ochotę na więcej. Obecnie znajduje się jeszcze kilka interfejsów API i funkcji, które są obecnie w wersji próbnej dla programistów (które zostały wdrożone, ale znajdują się poniżej flagi funkcji), a niektóre zaczęliśmy nad nimi pracować, a wiele rozważa. Jak widać, nie czas już sobie oglądać i mówić, że skończyliśmy.

Synchroniczne metody plików w prywatnym systemie plików źródła

Wręcz przeciwnie, zamiast deklarować nasze wysiłki jako zakończone, w rzeczywistości dopiero zaczynamy. Spójrzmy na przykład poniżej wykres przedstawiający gwałtowny wzrost względnego wykorzystania metody navigator.storage.getDirectory() wykorzystywanej jako punkt wejścia do prywatnego systemu plików źródła (OPFS). Ta metoda jest wykorzystywana np. w przypadku wydajnego miejsca na dane w Photoshopie, którego bardzo interesuje społeczność zajmująca się miejscem na dane, ponieważ rozpoczęto wycofywanie Web SQL, a nawet wcześniej.

Wykres przedstawiający gwałtownie rosnące względne wykorzystanie metody navigator.storage.getDirectory.

Teraz, gdy więcej osób korzysta z OPFS, pojawiają się dodatkowe wymagania. Dotyczy to na przykład w pełni synchronicznego zestawu metod pliku w środowisku roboczym (informacje o tle znajdziesz w artykule whatwg/fs#7). Nowe internetowe interfejsy API są zazwyczaj asynchroniczne, ale stosowanie metod synchronicznych znacznie ułatwiłoby pracę z OPFS w kontekście Wasm, a ponieważ dzieje się to w instancji roboczej, nie można zablokować wątku głównego.

Usprawnienia ochrony prywatności dotyczące sprzętowych interfejsów API

Inne przykłady to sprzętowe interfejsy API, które umożliwiają łączenie się z urządzeniami HID, serial, USB, Bluetooth i NFC. Choć niektóre z tych interfejsów API są używane już od jakiegoś czasu, do niedawna nie można było zapomnieć urządzenia, z którym było wcześniej połączone. Istnieją teraz metody forget() dla niektórych interfejsów API. W ten sposób możesz na przykład zapomnieć wcześniej połączone urządzenie szeregowe, co zwiększy prywatność interfejsu API.

// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();

Udoskonalenia interfejsu Multi-Screen Window Placement API

Ostatnim przykładem jest interfejs Multi-Screen Window Placement API, w którym – zgodnie z opiniami deweloperów – wcześniej ogólne etykiety ekranu (np. "Internal Display 1") zostały zastąpione bardziej znaczącymi etykietami, np. "Built-in Retina Display", by użytkownicy mogli łatwiej powiązać te etykiety z ekranami konfiguracji pod kątem wielu urządzeń.

Podsumowanie

Jak widać tylko na tych 3 przykładach, Projekt Fugu nie jest jeszcze ukończony. Zacznij lub zacznij korzystać z naszych interfejsów API i prześlij opinię. Wszystkie specyfikacje Fugu są opracowywane na licencji otwartej na GitHubie, więc możesz zgłosić problem związany ze specyfikacją w odpowiednim repozytorium GitHub lub dodać uwagi o istniejącym problemie. Jeśli zauważysz błąd w implementacji Chrome lub odkryjesz, że implementacja różni się od specyfikacji, zgłoś błąd na stronie new.crbug.com. Podaj jak najwięcej szczegółów i proste instrukcje odtwarzania.

Jeśli masz obawy związane z obsługą przeglądarek, wiele interfejsów Fugu API zapewnia szereg ulepszeń. Aby znaleźć inspirację, przeczytaj artykuł SVGcode: PWA do konwertowania obrazów rastrowych na grafikę wektorową SVG. Ponadto uważamy, że nasza praca nie jest wykonywana, dopóki te interfejsy API nie będą współdziałać, i nadal będziemy dążyć do dalszej standaryzacji, testowania i wdrożenia tych interfejsów w innych przeglądarkach.