Chuẩn bị phần mở rộng của bạn khi chúng tôi bắt đầu thử nghiệm trình đơn phần mở rộng mới

Ngày xuất bản: 19 tháng 11 năm 2024

Tại Google I/O 2024, chúng tôi đã chia sẻ một số thiết kế ban đầu cho các thay đổi sắp tới đối với trình đơn tiện ích. Điều này giúp người dùng kiểm soát chặt chẽ hơn những trang web mà tiện ích có thể truy cập. Chúng tôi sẽ sớm bắt đầu thử nghiệm những thay đổi này, bắt đầu với một tỷ lệ nhỏ người dùng trong Canary và hy vọng có thể triển khai rộng rãi hơn trong tương lai.

Trước đây, khi trao đổi với các nhà phát triển về sự thay đổi này, chúng tôi thường nghe thấy những lo ngại về tác động của việc thay đổi cách các tiện ích có thể yêu cầu quyền lưu trữ tại thời điểm cài đặt. Trình đơn mới không ảnh hưởng đến bất kỳ hành vi mặc định nào. Tiện ích sẽ tiếp tục được cấp quyền truy cập vào tất cả máy chủ được yêu cầu tại thời điểm cài đặt. Mục tiêu của những thay đổi này là giúp người dùng dễ dàng khám phá các chế độ kiểm soát hiện có.

Bài đăng này cung cấp thông tin tổng quan về những điều cần biết và cách bạn có thể chuẩn bị tiện ích bằng một API mới để xử lý các trường hợp người dùng từ chối quyền truy cập vào một trang.

Điều gì sẽ thay đổi?

Để mang lại cho người dùng thêm quyền kiểm soát, chúng tôi sẽ ra mắt một trình đơn tiện ích mới. Các tiện ích sẽ tiếp tục được cấp quyền truy cập vào tất cả máy chủ được yêu cầu tại thời điểm cài đặt, nhưng giờ đây, người dùng sẽ có cách dễ dàng hơn để kiểm soát quyền truy cập cho mỗi tiện ích.

Thiết kế đang trong quá trình hoàn thiện cho trình đơn tiện ích mới
Thiết kế đang trong quá trình hoàn thiện cho trình đơn tiện ích mới

Trình đơn mới (ảnh chụp có thiết kế hiện tại có thể thay đổi) cho biết rõ hơn những tiện ích nào có thể chạy trên một trang và cho phép người dùng thay đổi quyền truy cập nếu họ chọn. Người dùng cũng có thể ngăn tất cả tiện ích chạy trên một trang web cụ thể. Như đã đề cập, chúng tôi sẽ không thay đổi chế độ cài đặt hoặc chế độ mặc định hiện có. Chúng tôi đang tập trung vào việc giúp người dùng dễ dàng khám phá những tính năng hiện có.

Thêm yêu cầu truy cập trang web

Chúng tôi đã thiết kế một API mới để bổ sung cho những thay đổi này, với ý kiến đóng góp quan trọng từ các trình duyệt và nhà phát triển khác trong Nhóm cộng đồng WebExtensions.

Nếu người dùng đã từ chối quyền truy cập vào một trang, thì các tiện ích hiện có thể yêu cầu quyền truy cập bằng API permissions.addSiteAccessRequest mới. Khi một tiện ích thực hiện việc này, người dùng sẽ thấy thông báo "Cho phép" cùng với mảnh ghép tiện ích trong thanh công cụ. Dưới đây là một thiết kế mà chúng tôi đang khám phá:

Yêu cầu truy cập trang web trên example.com
Yêu cầu truy cập trang web trên example.com

Khi người dùng nhấp vào "Cho phép" trong trình đơn tiện ích, tiện ích sẽ được cấp quyền truy cập liên tục vào máy chủ lưu trữ. Người dùng có thể giữ lại lại thông tin đó trong tương lai bằng cách truy cập vào trình đơn tiện ích hoặc trên trang chrome://extensions. Bạn có thể nhấp vào "Cho phép 1?" trong thanh công cụ để cấp quyền truy cập ngay lập tức một cách nhanh hơn.

Các tiện ích có thể gọi permissions.addSiteAccessRequest bằng tabId để hiển thị yêu cầu cấp quyền cho thẻ đó. Bạn có thể sử dụng tính năng phát hiện tính năng để bắt đầu sử dụng tính năng này một cách an toàn trong tiện ích của mình ngay hôm nay. API này sẽ không làm gì cho người dùng không có trình đơn mới, nhưng việc sử dụng API này sẽ mang lại lợi ích cho người dùng có trình đơn mới khi API này được triển khai dần dần.

chrome.tabs.onUpdated.addListener(async (tabId, changes) => {
  if (typeof changes.url !== 'string') return;

  const url = new URL(changes.url);

  // If we are on the /checkout page of example.com.
  if (url.origin === 'https://example.com' && url.pathname === '/checkout') {
    const hasPermission = await chrome.permissions.contains({
      origins: ['https://example.com/*']
    });

    // We already have host permissions.
    if (hasPermission) {
      return;
    }

    // Add a site access request if the API is available.
    if (chrome.permissions.addSiteAccessRequest) {
      chrome.permissions.addSiteAccessRequest({ tabId });
    }
  }
});

Trong ví dụ này, chúng ta chỉ thêm một yêu cầu nếu người dùng đang ở trang /checkout. Bạn có thể xem mã đầy đủ trong kho lưu trữ chrome-extensions-samples.

Tiện ích nên lưu ý đến thời điểm yêu cầu người dùng cấp quyền truy cập. Người dùng có nhiều khả năng sẽ bỏ qua các yêu cầu gây phiền toái và Chrome có thể điều tiết các yêu cầu quá mức. Người dùng cũng có thể chọn tắt tính năng hiển thị yêu cầu của tiện ích. Do đó, bạn chỉ nên yêu cầu quyền truy cập trong một số trường hợp cụ thể, khi bạn có độ tin cậy cao rằng người dùng sẽ muốn tương tác với tiện ích của bạn.

Các yêu cầu được liên kết với một thẻ cụ thể và tự động bị xoá khi người dùng chuyển đến một nguồn khác. Có một phương thức removeSiteAccessRequest tương ứng để xoá một yêu cầu một cách rõ ràng (chẳng hạn như nếu một yêu cầu được liên kết với một đường dẫn cụ thể).

Vì API này được liên kết với trình đơn tiện ích mới, nên các lệnh gọi sẽ bị bỏ qua nếu bạn không bật trình đơn mới. Tuy nhiên, bạn nên dùng thử API này ngay hôm nay và cân nhắc việc sử dụng API này trong tiện ích của mình. Bạn sẽ mang đến trải nghiệm tuyệt vời cho người dùng khi các thay đổi về trình đơn mới dần xuất hiện cho nhiều người dùng hơn.

Để tìm hiểu thêm về cách xử lý các quyền không bắt buộc, hãy xem tài liệu về quyền.

Dùng thử

API này được bật theo mặc định trong Chrome 133.0.6838.0 trở lên (hiện có trong Chrome Canary). Để bật trình đơn mới, tại chrome://flags, hãy bật cờ "Extensions Menu Access Control" (Kiểm soát quyền truy cập vào trình đơn tiện ích).

Xin lưu ý rằng tính năng này vẫn đang trong quá trình phát triển và có thể tiếp tục phát triển và thay đổi. Bạn nên thử nghiệm trong Chrome Canary để xem trải nghiệm mới nhất.

Bạn có thể để lại ý kiến phản hồi về thiết kế mới trong danh sách gửi thư chromium-extensions. Chúng tôi sẽ lưu ý đến ý kiến phản hồi của bạn khi tiếp tục phát triển trình đơn mới.