Chrome 120 thử nghiệm

Tạo mặt nạ CSS, nới lỏng các quy tắc để lồng CSS, tạo mẫu đàn accordion với phần tử <details>, hành động enterpictureinpicture cho Media Session API.

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

Cú pháp CSS <image> 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 thành các giá trị url() và các hình ảnh đã tạo như độ dốc.

Cú pháp CSS <transform-function><transform-list> 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 này để hạn chế các giá trị của thuộc tính tuỳ chỉnh nhằm biểu thị các phép biến đổi. Nhờ đó, 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 tập lệnh đa phương tiện được dùng để truy vấn xem 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à "enabled", "chỉ ban đầu" và "none". Tuy nhiên, "chỉ ban đầu" không bao giờ khớp trong trình duyệt.

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

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

: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ì thuộc tính này so khớp với hướng kế thừa từ đối tượng cấp trên với thuộc tính dir và vì thuộc tính này khớp với hướng được tính toán bằng cách 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 CSS và Đơn vị cấp 4.

Mặt nạ CSS

CSS mask và các thuộc tính 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 giấu hoặc cắt hình ảnh tại các điểm cụ thể.

Tính năng này bỏ tiền tố của tài sản -webkit-mask* và điều chỉnh các tài sản đó cho phù hợp với quy cách hiện tại. Trong đó bao gồm mask-image, mask-mode, mask-repeat, mask-position, mask-clip, mask-origin, mask-sizemask-composite, cũng như tên viết tắt mask. Hỗ trợ tham chiếu mask-image cục bộ, chuyển đổi tuần tự hiện khớp với quy cách và các giá trị được chấp nhận nay khớp với quy cách (ví dụ: add thay vì source-over cho mask-composite).

Lồng ghép CSS thoải mái

Thay đổi này đối với cách triển khai lồng ghép 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 gói bằng is(). Ví dụ sau hiện hợp lệ trong 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 phong cầm 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 cầm bằng cách sử dụng một chuỗi các phần tử HTML <details>. Hàm này thêm thuộc tính name vào phần tử <details>. Khi bạn sử dụng thuộc tính này, 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 rời các vùng đệm mảng và sử dụng các 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 xác minh xem có thể hiển thị văn bản bằng các phông chữ đã chỉ định hay không mà không cần cố gắng sử dụng phông chữ trong FontFaceSet chưa tải xong. Điều 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 việc thay thế phông chữ sau này.

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

Yêu cầu đóng là một khái niệm mới bao gồm các yêu cầu của người dùng về việc đóng một thứ gì đó đ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 Trình quản lý thẻ với Chrome sẽ đi kèm với hai thay đổi:

  • CloseWatcher, một API mới để trực tiếp lắng 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 trên Android.

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

Trình chạy riê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ó được quyền truy cập bộ nhớ qua document.requestStorageAccess() rồi tạo một worker chuyên trách, thì worker này cũng sẽ có quyền truy cập bộ nhớ (và có thể truy cập cookie không được phân vùng).

FedCM: API Lỗi và API AutoSelectedflag

Các API riêng 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 cho phép người dùng đăng nhập vào một trang web hoặc ứng dụng (trong ngữ cảnh này được gọi là một bên tin cậy (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 bằng tài khoản.

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

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 đăng nhập, đồng thời đánh giá hiệu suất cũng như phân đoạn chỉ số một cách phù hợp.

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

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

Bạn cũng có thể sử dụng một tuỳ chọn định dạng bổ sung cho các macro kích thước quảng cáo của Protected Audience API 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 macro mà deprecatedReplaceInURNregisterAdMacro() sử dụng), trong Chrome 120, chúng tôi bổ sung khả năng sử dụng ${AD_WIDTH} và ${AD_HEIGHT} làm định dạng cho macro ngoài định dạng hiện tại.

Bây giờ, beacon tự động sẽ gửi tới tất cả các URL đã đăng ký. Trước đây, chỉ các đích đến được chỉ định khi gọi setReportEventDataForAutomaticBeacons() mới nhận được beacon tự động, ngay cả khi đích đến đó gọi registerAdBeacon() cho reserved.top_navigation trong worklet của chúng. Hiện tại, mọi đích đến gọi registerAdBeacon() cho reserved.top_navigation sẽ nhận được beacon tự động, nhưng chỉ các đí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 đối với trình quan sát giao lộ

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 các vùng chứa cuộn lồng nhau hiện đang bị các vùng chứa cuộn cắt bớt. Bạn có thể thực hiện việc này bằng cách mở rộng kích cỡ khuôn hình chữ nhật cắt của vùng chứa theo 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

Tính năng này tích hợp API Chính sách quyền truy cập với API Báo cáo. Nhờ đó, nhà phát triển web có thể định cấu hình các điểm cuối mà hệ thống sẽ gửi báo cáo lỗi vi phạm chính sách về quyền. Nhờ đó, chủ sở hữu trang web có thể biết khi nào có người dùng yêu cầu các tính năng không được phép trên các trang thuộc lĩnh vực của họ.

Tiêu đề 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 chính sách đề 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 phát hiện lỗi tiềm ẩn trước khi triển khai ở chế độ thực thi thông thường.

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

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

Tìm hiểu thêm trong bài viết Chế độ hình trong hình tự động cho các ứng dụng web.

Hỗ trợ WebGPU f16

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

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

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

Mở rộng Media Capabilities API để cho phép phát hiện tính năng hỗ trợ kết xuất HDR qua 3 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 riêng, vì vậy sẽ luôn trả về giá trị true đối với 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 không được hỗ trợ, do đó 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 cho người dùng được hỗ trợ.

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

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

API tổng hợp riêng tư: lựa chọn trình đ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ế chọn trình điều phối sẽ 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). Người dùng có thể lựa chọn dịch vụ kèm theo lựa chọn bổ sung trong các lệnh gọi SharedStorage run()selectURL(), cũng như trong các lệnh gọi Protected Audience runAdAuction()joinAdInterestGroup(). Cách tiếp cận rộng này chủ yếu 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 qua IdP) cho phép nhà cung cấp danh tính gửi tín hiệu cho trình duyệt khi người dùng của họ đang đăng nhập hoặc đăng xuất.

FedCM sử dụng công nghệ này để xử lý cuộc tấn công "tấn công thầm lặng" và qua đó, cho phép FedCM hoạt động mà không cần hoàn toàn sử dụng 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 về thông báo trên blog.

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 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 sẽ thay đổi thành một kiểu không thể có giá trị rỗng: startViewTransition(optional UpdateCallback callback).

Đóng gói khóa X25519Kyber768 cho TLS

Bảo vệ lưu lượng truy cập TLS hiện tại trên Chrome khỏi quy trình 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 về khoá kháng lượng tử Kyber768. Đây là thỏa thuận khoá X25519 + Kyber768 kết hợp dựa trên tiêu chuẩn IETF. Quy cách 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 đưa ra dưới dạng thuật toán mật mã TLS và phải minh bạch đối với người dùng.

Bản dùng thử theo nguyên gốc đang diễn ra

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

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

Tính năng này sẽ thêm tiêu đề của yêu cầu priority cho tất 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 yêu cầu.

RFC 9218 (Cơ chế ưu tiên mở rộng dành cho HTTP) xác định "mức độ ưu tiên" Tiêu đề của yêu cầu HTTP dùng để báo hiệu mức độ ưu tiên của yêu cầu gửi đến các nguồn gốc (và bên trung gian). Thẻ này cũng xác định các quy 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 của tài nguyên khi tài nguyên đó được yêu cầu lần đầu tiên, còn các cơ chế dựa trên khung cho phép sửa đổi mức độ ưu tiên sau khi tài nguyên đó được yêu cầu. Tiêu đề có thể hoạt động hai đầu đến máy chủ gốc (và cung cấp cơ chế để máy chủ gốc ghi đè mức ưu tiên nếu được các bên trung gian công nhận) trong khi các khung bị giới hạn hoạt động ở mức liên kết. Tính năng này chuyên 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 được phân vùng (cookie và không phải cookie) trong bối cảnh của bên thứ ba.

Quyền truy cập vào mạng riêng tư để thư giãn nội dung hỗn hợp

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

Đăng ký dùng thử theo nguyên gốc Nhắc cấp quyền truy cập vào mạng riêng.

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

Performance.measureUserAgentSpecificMemory() được chỉ định là chỉ hoạt động 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ỏ quy định hạn chế của COOP/COEP để cho phép kiểm thử hồi quy và đo lường tác động khi không thể triển khai đầy đủ COOP/COEP. Lưu ý rằng bạn không thể sử dụng hiệu suất.memory (API cũ) cho mục đích này vì API này chưa bao giờ được bật trên worker.

performance.measureUserAgentSpecificMemory()

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

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

Phiên bản Chrome này đã ngừng sử dụng và loại bỏ được liệt kê bên dưới. Truy cập vào ChromeStatus.com để biết danh sách các miền ngừng sử dụng theo kế hoạch, các lượt ngừng sử dụng hiện tại 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.

Ngừng sử dụng và ngừng hỗ trợ Theora

Do những rủi ro bảo mật mới, Chrome sẽ ngừng hỗ trợ bộ mã hoá và giải mã video Theora trong Chrome dành cho máy tính. 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ợ cho hầu hết người dùng.

Bản phát hành Chrome này xoá 2 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. Điều này cũng dẫn đến việc bỏ qua các loại đáng tin cậy. Do đó, chúng tôi dự định sẽ ngừng sử dụng và ngừng hỗ trợ kênh này.

Xoá biện pháp thực thi tổng quá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 Cơ chế thực thi nhúng CSP. Việc này điều chỉnh hành vi thực thi Thực thi nhúng CSP cho các iframe trên nhiều nguồn gốc và iframe cùng nguồn gốc.