Chrome 120 thử nghiệm

Tạo mặt nạ cho CSS, các quy tắc đơn giản để lồng ghép CSS, tạo các mẫu phong cách bằng phần tử <details>, hành động enterpictureinpicture cho API Phiên truyền thông.

Trừ phi có ghi chú khác, những thay đổi được mô tả sẽ áp dụng cho bản phát hành kênh thử nghiệm Chrome mới nhất dành cho Android, ChromeOS, Linux, macOS và Windows. Tìm hiểu thêm về các tính năng nêu tại đây thông qua đường liên kết đi kèm hoặc trong danh sách trên chromestatus.com. Chrome 120 đã đi vào giai đoạn thử nghiệm beta kể từ ngày 1 tháng 11 năm 2023. Bạn có thể tải phiên bản mới nhất xuống từ Google.com cho máy tính hoặc trên Cửa hàng Google Play trên Android.

CSS

Bản phát hành này bổ sung 7 tính năng mới của Dịch vụ so sánh giá (CSS).

Cú pháp <image> của CSS cho các thuộc tính tuỳ chỉnh đã đăng ký

Hỗ trợ sử dụng cú pháp <image> cho các thuộc tính tuỳ chỉnh đã đăng ký bằng @property hoặc registerProperty(). Bạn có thể sử dụng cú pháp <image> để giới hạn các giá trị của thuộc tính tuỳ chỉnh ở các giá trị url() và các hình ảnh được tạo như màu chuyển tiếp (gradient).

Cú pháp <transform-function><transform-list> của CSS cho các thuộc tính tuỳ chỉnh đã đăng ký

Hỗ trợ sử dụng cú pháp <transform-function><transform-list> cho các thuộc tính tuỳ chỉnh đã đăng ký bằng @property hoặc registerProperty().

Bạn có thể sử dụng cú pháp để giới hạn các giá trị của thuộc tính tuỳ chỉnh nhằm biểu thị cho các phép biến đổi. Điều này cũng giúp bạn có thể sử dụng hiệu ứng chuyển đổi và ảnh động trực tiếp trên các thuộc tính tuỳ chỉnh đã đăng ký này.

Truy vấn phương tiện: tính năng tập lệnh

Tính năng đa phương tiện tập lệnh được dùng để truy vấn xem các ngôn ngữ tập lệnh, chẳng hạn như JavaScript, có được hỗ trợ trên tài liệu hiện tại hay không. Các tuỳ chọn hợp lệ là "đã bật", "chỉ ban đầu" và "không có". Tuy nhiên, trường "ban đầu" không bao giờ khớp bên trong trình duyệt.

bộ chọn lớp giả :dir()

Bộ chọn lớp giả CSS :dir() khớp với các phần tử dựa trên hướng, được xác định dựa trên thuộc tính thư mục HTML.

:dir(ltr) khớp với hướng văn bản từ trái sang phải. :dir(rtl) khớp với các phần tử có hướng văn bản từ phải sang trái.

Thuộc tính này không tương đương với bộ chọn thuộc tính [dir] vì khớp với hướng được kế thừa từ đối tượng cấp trên có thuộc tính dir, và khớp với hướng được tính toán khi sử dụng dir=auto (xác định hướng từ ký tự đầu tiên trong văn bản có hướng rõ ràng).

Hàm mũ CSS

Thêm các hàm mũ CSS: pow(), sqrt(), hypot(), log()exp() từ thông số kỹ thuật cấp 4 của CSS (giá trị CSS và đơn vị).

Ẩn giấu CSS

CSS mask và các thuộc tính có liên quan như mask-imagemask-mode được dùng để ẩn một phần tử (một phần hoặc toàn bộ) bằng cách che hoặc cắt hình ảnh tại các điểm cụ thể.

Tính năng này giúp huỷ tiền tố cho các tài sản -webkit-mask* và giúp các tài sản đó phù hợp với quy cách hiện tại. Các từ này bao gồm mask-image, mask-mode, mask-repeat, mask-position, mask-clip, mask-origin, mask-sizemask-composite, cũng như viết tắt mask. Các tệp tham chiếu mask-image cục bộ được hỗ trợ. Quá trình chuyển đổi tuần tự giờ đây khớp với thông số kỹ thuật và các giá trị được chấp nhận giờ đây sẽ khớp với thông số kỹ thuật (ví dụ: add thay vì source-over cho mask-composite.)

Lồng ghép CSS

Thay đổi này đối với cách triển khai lồng CSS cho phép các quy tắc kiểu lồng nhau bắt đầu bằng một phần tử, ví dụ: h1 thay vì yêu cầu biểu tượng & phía trước hoặc được bao bọc bằng is(). Ví dụ sau đây hiện hợp lệ trong phần thông số kỹ thuật và hoạt động trong Chrome 120.

.card {
  h1 {
    /* h1 does not start with a symbol */
  }
}

HTML

Mẫu đàn xếp sử dụng thuộc tính tên trên <details>

Tính năng này bổ sung khả năng tạo đàn phong bằng cách sử dụng chuỗi các phần tử <details> HTML. Thao tác này bổ sung thuộc tính tên cho phần tử <details>. Khi thuộc tính này được dùng, nhiều phần tử <details> có cùng tên sẽ tạo thành một nhóm. Bạn chỉ có thể mở tối đa một phần tử trong nhóm cùng một lúc.

API web

Cho phép chuyển ArrayBuffer vào các hàm khởi tạo VideoFrame, AudioData, EncodedVideoChunk, EncodedAudioChunk, ImageDecoder

Điều này sẽ cho phép tách vùng đệm mảng và sử dụng vùng đệm tương ứng bên trong VideoFrame, ImageDecoder, EncodedVideoChunk, EncodedAudioChunk, AudioData mà không cần bản sao.

API tải phông chữ CSS FontFaceSet: phương thức check()

Phương thức check() của FontFaceSet sẽ xác minh liệu có thể hiển thị văn bản bằng phông chữ được chỉ định mà không cần cố gắng sử dụng phông chữ trong FontFaceSet chưa tải xong hay không. Tính năng này cho phép người dùng sử dụng phông chữ một cách an toàn mà không cần kích hoạt chế độ thay thế phông chữ sau đó.

Đóng yêu cầu và CloseWatcher

Yêu cầu đóng là một khái niệm mới bao gồm yêu cầu người dùng đóng nội dung nào đó hiện đang mở bằng cách sử dụng phím Esc trên máy tính hoặc nút hay cử chỉ quay lại trên Android. Việc tích hợp các tiện ích này vào Chrome sẽ dẫn đến 2 thay đổi:

  • CloseWatcher, một API mới để trực tiếp nghe và phản hồi các yêu cầu đóng.
  • Nâng cấp lên <dialog>popover="" để sử dụng khung yêu cầu đóng mới nhằm phản hồi nút quay lại của Android.

API truy cập bộ nhớ và worker chuyên dụng

Worker chuyên dụng sẽ kế thừa trạng thái truy cập bộ nhớ của bối cảnh mẹ. Do đó, nếu một tài liệu có quyền truy cập vào bộ nhớ thông qua document.requestStorageAccess(), sau đó tạo một trình thực thi chuyên dụng, thì trình thực thi đó cũng sẽ có quyền truy cập vào bộ nhớ (và có thể truy cập vào cookie không được phân vùng).

FedCM: API Lỗi và AutoSelectedFlag API

Các API chuyên biệt giúp nhà phát triển và người dùng hiểu rõ hơn về quy trình xác thực. Cả hai API đều được kích hoạt sau khi người dùng có quyền đăng nhập vào trang web hoặc ứng dụng (trong ngữ cảnh này được gọi là bên phụ thuộc (RP)) thông qua một nhà cung cấp danh tính. Nói cách khác, sau khi người dùng nhấp vào nút Tiếp tục dưới dạng.

Với API Lỗi, nếu người dùng không đăng nhập được, nhà cung cấp danh tính có thể chia sẻ lý do với trình duyệt để cập nhật thông tin cho cả người dùng và nhà phát triển RP.

Với AutoSelectedFlag API, cả nhà cung cấp danh tính và nhà phát triển RP đều có thể hiểu rõ hơn về trải nghiệm người dùng khi đăng nhập, đồng thời đánh giá hiệu suất và phân đoạn các chỉ số cho phù hợp.

Tìm hiểu thêm trong bài đăng trên blog của FedCM về Chrome 120.

Bản cập nhật chức năng của Khung bảo vệ

Ngoài ra, còn có một tuỳ chọn định dạng khác cho macro kích thước quảng cáo của Protected Audience trong Protected Audience API trong Hộp cát về quyền riêng tư. Tính năng chọn tham gia cho phép bạn sử dụng macro để chỉ định kích thước của quảng cáo giành chiến thắng trong phiên đấu giá vào URL của quảng cáo, ví dụ:

https://ad.com?width={/%AD_WIDTH%}&height={/%AD_HEIGHT%}

Để nhất quán hơn với các loại macro khác trong Protected Audience, chẳng hạn như các loại macro mà deprecatedReplaceInURNregisterAdMacro() sử dụng, trong Chrome 120, chúng tôi sẽ bổ sung khả năng sử dụng ${AD_WIDTH} và ${AD_HEIGHT} làm định dạng cho macro, bên cạnh định dạng hiện tại.

Bây giờ, beacon tự động sẽ gửi đến tất cả các URL đã đăng ký. Trước đây, chỉ những đích đến được chỉ định khi gọi setReportEventDataForAutomaticBeacons() mới nhận được beacon tự động, ngay cả khi đích đó được gọi là registerAdBeacon() cho reserved.top_navigation trong worklet của chúng. Giờ đây, mọi đích đến gọi registerAdBeacon() cho reserved.top_navigation đều sẽ nhận được beacon tự động, nhưng chỉ những đích đến được chỉ định trong setReportEventDataForAutomaticBeacons() mới nhận được dữ liệu beacon tự động cùng với beacon. Giờ đây, tham số once trong setReportEventDataForAutomaticBeacons() sẽ xác định xem dữ liệu có được gửi đi một lần hay không, thay vì xác định xem toàn bộ beacon có được gửi một lần hay không.

Lề cuộn của Trình quan sát giao điểm

Trình quan sát giao diện scrollMargin cho phép nhà phát triển quan sát các mục tiêu bên trong vùng chứa cuộn lồng hiện đang bị các vùng chứa cuộn cắt bớt. Thực hiện việc này bằng cách mở rộng hình chữ nhật cắt của vùng chứa bằng scrollMargin khi tính toán giao điểm.

Báo cáo lỗi vi phạm chính sách về quyền

API này sẽ tích hợp API Chính sách về quyền với API Báo cáo, cho phép nhà phát triển web thiết lập những điểm cuối để gửi báo cáo vi phạm chính sách về quyền, giúp chủ sở hữu trang web biết được khi nào có yêu cầu tính năng không được phép trên trang của họ trong trường.

API này cũng bao gồm tiêu đề Permissions-Policy-Report-Only, cho phép gửi báo cáo dựa trên một chính sách được đề xuất (tương tự với Content-Security-Policy-Report-Only) để có thể đánh giá các thay đổi về chính sách nhằm xác định các lỗi có thể xảy ra trước khi triển khai các thay đổi đó ở chế độ thực thi thông thường.

API Phiên phát nội dung đa phương tiện: enterpictureinpicture hành động

Thêm hành động enterpictureinpicture vào Media Session API. Các trang web có thể đăng ký một trình xử lý hành động có thể dùng để mở cửa sổ Hình trong hình hoặc Hình trong hình tài liệu.

Tìm hiểu thêm trong phần Hình trong hình tự động cho ứng dụng web.

Hỗ trợ WebGPU f16

Cho phép sử dụng loại dấu phẩy động bán chính xác f16 trong chương trình đổ bóng WebGPU (WGSL).

Các nhà phát triển có thể sử dụng tính năng "shader-f16" từ thông số WebGPU và tiện ích "f16" từ thông số WGSL để truy cập các biến và API dấu phẩy động 16 bit trong chương trình đổ bóng.

MediaCapabilities: Truy vấn tính năng hỗ trợ HDR bằng decodingInfo()

Mở rộng API Media Capabilities để cho phép phát hiện việc hỗ trợ kết xuất HDR thông qua ba trường từ điển VideoConfiguration mới: hdrMetadataType, colorGamuttransferFunction. Chrome triển khai các thuật toán ánh xạ tông màu của riêng mình để luôn trả về giá trị true cho siêu dữ liệu tĩnh HDR10 (smpteSt2086). Siêu dữ liệu động HDR10+ (smpteSt2094-10) và Dolby Vision (smpteSt2094-40) hiện chưa được hỗ trợ nên sẽ trả về giá trị false. Chúng tôi dự kiến sẽ hỗ trợ thêm siêu dữ liệu động trong tương lai. Vì vậy, API này sẽ cho phép nhà phát triển chọn nội dung phù hợp với người dùng được hỗ trợ.

Số liệu thống kê MediaStreamTrack (Video)

Một API hiển thị bộ đếm khung hình (đã phân phối, huỷ bỏ, tổng cộng) dành cho loại video MediaStreamTracks. Số liệu thống kê về âm thanh sẽ được đề cập trong một đợt phát hành tính năng riêng của Chrome.

API tổng hợp riêng tư: lựa chọn điều phối viên tổng hợp

Sửa đổi API tổng hợp riêng tư để cung cấp cơ chế lựa chọn công cụ điều phối cần sử dụng cho việc mã hoá tải trọng (từ danh sách cho phép do nhà cung cấp chỉ định). Bạn có thể lựa chọn dịch vụ với một tuỳ chọn bổ sung trong các lệnh gọi run()selectURL() SharedStorage, cũng như trong các lệnh gọi Protected Audience runAdAuction()joinAdInterestGroup(). Cách tiếp cận trên phạm vi rộng phần lớn phù hợp với cách tiếp cận của Attribution Reporting API.

API trạng thái đăng nhập trong FedCM

API trạng thái đăng nhập (trước đây là API trạng thái đăng nhập của IdP) cho phép nhà cung cấp danh tính báo hiệu cho trình duyệt khi người dùng của họ đang đăng nhập hoặc đăng xuất.

Tính năng này được FedCM sử dụng để xử lý cuộc tấn công định giờ im lặng, và nhờ đó, cho phép FedCM hoạt động mà không cần cookie của bên thứ ba.

Trong tương lai, API này có thể được cung cấp cho nhiều trường hợp sử dụng hơn.

Tìm hiểu thêm trong bài đăng trên blog thông báo.

Chuyển đổi khung hiển thị: đặt lệnh gọi lại không rỗng

Lệnh gọi startViewTransition hiện sử dụng một loại lệnh gọi lại rỗng (không bắt buộc) với giá trị mặc định là rỗng: startViewTransition(optional UpdateCallback? callback = null).

Tính năng này chuyển thuộc tính này thành loại không thể nhận giá trị rỗng: startViewTransition(optional UpdateCallback callback).

X25519Kyber768 đóng gói phím cho TLS

Bảo vệ lưu lượng truy cập TLS hiện tại của Chrome khỏi phương pháp phân tích mật mã lượng tử trong tương lai bằng cách triển khai thuật toán thoả thuận khoá kháng lượng tử Kyber768. Đây là một thoả thuận khoá kết hợp X25519 + Kyber768 dựa trên tiêu chuẩn IETF. Thông số kỹ thuật và bản phát hành này nằm ngoài phạm vi của W3C. Thoả thuận về khoá này sẽ được phát hành dưới dạng thuật toán mật mã TLS và phải minh bạch trước người dùng.

Đang chạy bản dùng thử theo nguyên gốc

Trong Chrome 120, bạn có thể chọn sử dụng các bản dùng thử theo nguyên gốc mới sau đây.

Tiêu đề của yêu cầu HTTP có "mức độ ưu tiên"

Tính năng này thêm tiêu đề của yêu cầu priority cho tất cả các yêu cầu HTTP cùng với thông tin về mức độ ưu tiên của yêu cầu tại thời điểm gửi.

RFC 9218 (Giao thức ưu tiên mở rộng cho HTTP) xác định tiêu đề của yêu cầu HTTP có "mức độ ưu tiên" để sử dụng cho việc báo hiệu mức độ ưu tiên của yêu cầu tới các nguồn gốc (và bên trung gian). Hướng dẫn này cũng xác định các quá trình thương lượng và khung cấp giao thức để HTTP/2 và HTTP/3 mang cùng thông tin ưu tiên. Tiêu đề chỉ có thể báo hiệu mức độ ưu tiên ban đầu cho một tài nguyên trong lần yêu cầu đầu tiên, còn cơ chế dựa trên khung cho phép sửa đổi mức độ ưu tiên sau khi thực tế. Tiêu đề có thể hoạt động hai đầu đối với máy chủ gốc (và cung cấp cơ chế để máy gốc ghi đè mức độ ưu tiên nếu được bên trung gian nhận ra) trong khi các khung bị giới hạn để hoạt động ở cấp liên kết. Tính năng này dùng riêng để hỗ trợ lược đồ ưu tiên dựa trên tiêu đề.

Chúng tôi đề xuất mở rộng Storage Access API (tương thích ngược) để cho phép truy cập vào bộ nhớ không phân vùng (cookie và không phải cookie) trong ngữ cảnh bên thứ ba.

Quyền truy cập mạng riêng tư để giải phóng nội dung hỗn hợp

Để thiết lập kết nối cho các thiết bị trên mạng cục bộ không có tên riêng biệt trên toàn cục và do đó không thể lấy chứng chỉ TLS, tính năng này giới thiệu một tuỳ chọn mới cho fetch() để khai báo ý định của nhà phát triển về việc trò chuyện với một thiết bị như vậy, một tính năng mới do chính sách kiểm soát để kiểm soát quyền truy cập của từng trang web vào tính năng này cũng như các tiêu đề mới cho phản hồi kiểm tra của máy chủ nhằm cung cấp thêm siêu dữ liệu.

Đăng ký bản dùng thử theo nguyên gốc Lời nhắc quyền truy cập mạng riêng tư.

Quyền truy cập không hạn chế vào Performance.measureUserAgentSpecificMemory()

Performance.measureUserAgentSpecificMemory() được chỉ định để chỉ dùng được trong các môi trường tách biệt nhiều nguồn gốc (phía sau COOP/COEP). Tính năng này loại bỏ giới hạn COOP/COEP để cho phép thử nghiệm hồi quy và đo lường tác động khi không thể triển khai đầy đủ COOP/COEP. Xin lưu ý rằng bạn không thể sử dụng Performance.memory (API cũ) cho mục đích này vì API này chưa từng được kích hoạt cho worker.

performance.measureUserAgentSpecificMemory()

Tính năng này thêm hàm performance.measureUserAgentSpecificMemory() ước tính mức sử dụng bộ nhớ của trang web. Trang web cần được tách riêng trên nhiều nguồn gốc để sử dụng API này.

Ngừng sử dụng và xoá

Phiên bản Chrome này giới thiệu các ngừng sử dụng và xoá được liệt kê dưới đây. Hãy truy cập vào ChromeStatus.com để xem danh sách các phương thức ngừng hoạt động theo kế hoạch, không dùng nữa và các lượt xoá trước đây.

Bản phát hành Chrome này sẽ ngừng sử dụng một tính năng nữa.

Ngừng hỗ trợ và xoá sự hỗ trợ Theora

Chrome sẽ ngừng sử dụng và ngừng hỗ trợ bộ mã hoá và giải mã video Theora trong Chrome dành cho máy tính do các rủi ro bảo mật mới xuất hiện. Mức sử dụng thấp (và hiện thường không chính xác) của Theora không còn biện minh cho việc hỗ trợ hầu hết người dùng.

Bản phát hành Chrome này xoá hai tính năng.

Xoá dữ liệu: URL trong SVGUseElement

Chỉ định dữ liệu: URL trong SVGUseElement có thể gây ra XSS. Và điều này cũng dẫn đến việc bỏ qua Loại đáng tin cậy. Do đó, chúng tôi dự định sẽ ngừng sử dụng và ngừng hỗ trợ phiên bản này.

Xoá biện pháp thực thi hàng loạt cùng nguồn gốc trong CSPEE

Xoá một cơ chế xử lý đặc biệt cho các iframe cùng nguồn gốc khỏi Biện pháp thực thi được nhúng của CSP. Việc này giúp điều chỉnh hành vi thực thi biện pháp thực thi nhúng của CSP cho iframe nhiều nguồn gốc và iframe cùng nguồn gốc.