Allow setting multiple URLs for text/uri-list drag type [chromium/src : main]

6 views
Skip to first unread message

Joone Hur (Gerrit)

unread,
Jun 2, 2025, 7:47:08 PMJun 2
to Daniel Cheng, Sadrul Chowdhury, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, ozone-...@chromium.org, max+watc...@igalia.com, kinuko+...@chromium.org, nickdiego+wa...@igalia.com, mac-r...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, dcheng+c...@chromium.org, jdonnel...@chromium.org, mahmad...@chromium.org, navigation...@chromium.org, roblia...@chromium.org, sky+...@chromium.org
Attention needed from Daniel Cheng

Joone Hur added 1 comment

Patchset-level comments
File-level comment, Patchset 20 (Latest):
Joone Hur . resolved

Hi, could you review this CL?

Open in Gerrit

Related details

Attention is currently required from:
  • Daniel Cheng
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Review
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I05feaa80a6db10e311c2e222281df4a22af7b5a0
Gerrit-Change-Number: 6608042
Gerrit-PatchSet: 20
Gerrit-Owner: Joone Hur <joon...@microsoft.com>
Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
Gerrit-Reviewer: Joone Hur <joon...@microsoft.com>
Gerrit-CC: Sadrul Chowdhury <sad...@chromium.org>
Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
Gerrit-Comment-Date: Mon, 02 Jun 2025 23:46:55 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Rakina Zata Amni (Gerrit)

unread,
Jun 13, 2025, 1:58:10 AMJun 13
to Joone Hur, Min Qin, David Trainor, Daniel Cheng, Sadrul Chowdhury, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, ozone-...@chromium.org, max+watc...@igalia.com, kinuko+...@chromium.org, nickdiego+wa...@igalia.com, mac-r...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, dcheng+c...@chromium.org, jdonnel...@chromium.org, mahmad...@chromium.org, navigation...@chromium.org, roblia...@chromium.org, sky+...@chromium.org
Attention needed from Daniel Cheng, David Trainor, Joone Hur and Min Qin

Rakina Zata Amni voted and added 1 comment

Votes added by Rakina Zata Amni

Code-Review+1

1 comment

Patchset-level comments
Rakina Zata Amni . resolved

content/ changes LGTM, sorry for the delay!

Open in Gerrit

Related details

Attention is currently required from:
  • Daniel Cheng
  • David Trainor
  • Joone Hur
  • Min Qin
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement satisfiedCode-Review
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I05feaa80a6db10e311c2e222281df4a22af7b5a0
Gerrit-Change-Number: 6608042
Gerrit-PatchSet: 20
Gerrit-Owner: Joone Hur <joon...@microsoft.com>
Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
Gerrit-Reviewer: David Trainor <dtra...@chromium.org>
Gerrit-Reviewer: Joone Hur <joon...@microsoft.com>
Gerrit-Reviewer: Min Qin <qin...@chromium.org>
Gerrit-Reviewer: Rakina Zata Amni <rak...@chromium.org>
Gerrit-CC: Sadrul Chowdhury <sad...@chromium.org>
Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
Gerrit-Attention: David Trainor <dtra...@chromium.org>
Gerrit-Attention: Min Qin <qin...@chromium.org>
Gerrit-Attention: Joone Hur <joon...@microsoft.com>
Gerrit-Comment-Date: Fri, 13 Jun 2025 05:57:43 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
open
diffy

David Trainor (Gerrit)

unread,
Jun 13, 2025, 5:24:21 PMJun 13
to Joone Hur, Rakina Zata Amni, Min Qin, Daniel Cheng, Sadrul Chowdhury, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, ozone-...@chromium.org, max+watc...@igalia.com, kinuko+...@chromium.org, nickdiego+wa...@igalia.com, mac-r...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, dcheng+c...@chromium.org, jdonnel...@chromium.org, mahmad...@chromium.org, navigation...@chromium.org, roblia...@chromium.org, sky+...@chromium.org
Attention needed from Daniel Cheng, Joone Hur and Min Qin

David Trainor added 2 comments

Patchset-level comments
David Trainor . resolved

chrome/browser changes are minimal - will stamp once ui/base/dragdrop is reviewed!

File ui/base/dragdrop/os_exchange_data_provider.h
Line 79, Patchset 20 (Latest): GURL url() const;
~UrlInfo();
std::vector<GURL> urls;
David Trainor . unresolved

I'm not an owner of this directory so will defer to the right folks - not sure how I feel about having urls get added to this, but "url" and "title" represent the first one. Just wanted to flag it!

Open in Gerrit

Related details

Attention is currently required from:
  • Daniel Cheng
  • Joone Hur
  • Min Qin
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I05feaa80a6db10e311c2e222281df4a22af7b5a0
    Gerrit-Change-Number: 6608042
    Gerrit-PatchSet: 20
    Gerrit-Owner: Joone Hur <joon...@microsoft.com>
    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
    Gerrit-Reviewer: David Trainor <dtra...@chromium.org>
    Gerrit-Reviewer: Joone Hur <joon...@microsoft.com>
    Gerrit-Reviewer: Min Qin <qin...@chromium.org>
    Gerrit-Reviewer: Rakina Zata Amni <rak...@chromium.org>
    Gerrit-CC: Sadrul Chowdhury <sad...@chromium.org>
    Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
    Gerrit-Attention: Min Qin <qin...@chromium.org>
    Gerrit-Attention: Joone Hur <joon...@microsoft.com>
    Gerrit-Comment-Date: Fri, 13 Jun 2025 21:24:11 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Daniel Cheng (Gerrit)

    unread,
    Jun 14, 2025, 3:08:01 AMJun 14
    to Joone Hur, Rakina Zata Amni, Min Qin, David Trainor, Daniel Cheng, Sadrul Chowdhury, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, ozone-...@chromium.org, max+watc...@igalia.com, kinuko+...@chromium.org, nickdiego+wa...@igalia.com, mac-r...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, dcheng+c...@chromium.org, jdonnel...@chromium.org, mahmad...@chromium.org, navigation...@chromium.org, roblia...@chromium.org, sky+...@chromium.org
    Attention needed from Joone Hur and Min Qin

    Daniel Cheng added 18 comments

    Patchset-level comments
    File-level comment, Patchset 22 (Latest):
    Daniel Cheng . unresolved

    My biggest concern is about the platform-specific plumbing. I'm not sure many OSes actually support multiple URLs in their default URL type (see the comments about Windows and Mac). We may need to do something else to make it work well.

    My other comment is about the invariants we want to maintain. To make the APIs easier to use, I propose:

    • don't allow any invalid GURLs in the various URL lists. So when we're parsing out the URL lists, that means validating that they're actually valid URLs before appending them to the list.
    • an empty list means no URLs at all
    • the various SetURL()/SetURLs() functions should only be called if there is a non-empty list of URLs
    File chrome/browser/ui/views/frame/multi_contents_view_drop_target_controller.cc
    Line 35, Patchset 22 (Latest): if (data.urls.empty() || !data.urls.front().is_valid() || is_in_split_view) {
    Daniel Cheng . unresolved

    Should we really have invalid URLs here?

    I think we should avoid having invalid URLs in this list; instead, whether or not the list is empty should represent whether or not URLs are present.

    File content/app_shim_remote_cocoa/web_drag_source_mac.mm
    Line 213, Patchset 22 (Latest): NSURL* url = net::NSURLWithGURL(_dropData.url());
    Daniel Cheng . unresolved

    IIRC, this is the bit that produces the drag data asynchronously. But we only ever produce one URL–so does that mean this only sort of works on Mac?

    File content/browser/renderer_host/data_transfer_util.cc
    Line 172, Patchset 22 (Latest): }
    Daniel Cheng . resolved

    It's too bad `base::JoinString()` doesn't take a projection.

    You could also save some steps here: if the GURLs are valid, they should only contain ASCII characters. So we can do:

    ```
    std::u16string merged_urls;
    for (const auto& url : drop_data.urls) {
    DCHECK(base::IsStringASCII(url.spec());
    if (!merged_urls.empty()) {
    merged_urls += "\r\n";
    }
    merged_urls.append(url.spec().begin(), url.spec().end());
    }
    ```

    But probably we should just change the Mojo type to avoid these conversions. I suppose that's mostly out of scope here though.

    Line 306, Patchset 22 (Latest): std::vector<std::u16string> urls16 = base::SplitString(
    Daniel Cheng . unresolved

    Use SplitStringPiece() here please, to avoid allocating a new string for each thing.

    File content/browser/web_contents/web_contents_view_aura.cc
    Line 717, Patchset 22 (Latest): if (std::optional<ui::OSExchangeData::UrlInfo> url = data.GetURLAndTitle(
    Daniel Cheng . unresolved

    rename this url_info; that was my oversight when I wrote this originally

    Line 719, Patchset 22 (Latest): url.has_value() && !url->urls.empty()) {
    Daniel Cheng . unresolved

    I think we should probably guarantee `urls` is non-empty if we return a `url_info` here.

    File content/public/common/drop_data.h
    Line 79, Patchset 22 (Latest): GURL url() const;
    Daniel Cheng . unresolved

    Remove this, or have it return a `const GURL*`, returning non-null only if `urls` is non-empty.

    File ui/base/clipboard/clipboard_util_win.cc
    Line 98, Patchset 22 (Latest): std::vector<std::u16string> urls16 = base::SplitString(
    Daniel Cheng . unresolved

    SplitStringPiece() here as well, to avoid allocations.

    That being said... I'm not sure if this is really correct. This is used to process some pre-existing formats on the clipboard, which expect to be a certain shape.

    Line 534, Patchset 22 (Latest): // Mozilla URL format or Unicode URL
    Daniel Cheng . unresolved

    e.g. do we really expect a list of URLs in these clipboard formats? Will other apps expect a list of URLs/incorrectly treat the second URL as the title? If I remember correctly, this format isn't determined solely by Chrome; it's used for interop with other OS apps.

    Line 558, Patchset 22 (Latest): urls = {net::FilePathToFileURL(base::FilePath(filenames[0]))};
    Daniel Cheng . unresolved

    Since we're using a vector-based approach now, let's avoid even adding the GURL to the list if it's invalid.

    File ui/base/dragdrop/os_exchange_data_provider.h
    Line 82, Patchset 22 (Latest): std::u16string title;
    Daniel Cheng . unresolved

    There should be a comment here that states that this is the title for the first URL, if there is any.

    Line 79, Patchset 20: GURL url() const;

    ~UrlInfo();
    std::vector<GURL> urls;
    David Trainor . unresolved

    I'm not an owner of this directory so will defer to the right folks - not sure how I feel about having urls get added to this, but "url" and "title" represent the first one. Just wanted to flag it!

    Daniel Cheng

    I'm fine with this (modulo the plumbing questions), but I think this should also have a comment/guarantee about not including invalid GURLs in the list.

    File ui/base/dragdrop/os_exchange_data_provider_mac.mm
    Line 188, Patchset 22 (Latest): GURL url = urls.empty() ? GURL() : urls.front();
    Daniel Cheng . unresolved

    Is it really OK to drop the rest of the URLs on the floor here?

    Line 189, Patchset 22 (Latest): NSArray<NSPasteboardItem*>* items = clipboard_util::PasteboardItemsFromUrls(
    Daniel Cheng . unresolved

    Do we really want to continue with the rest of this work if there aren't any URLs? I'm not sure we would have called this before... would we?

    File ui/base/dragdrop/os_exchange_data_provider_non_backed.cc
    Line 77, Patchset 22 (Latest): title_ = title;
    Daniel Cheng . unresolved

    We should not do any of this if urls is empty (probably we should not call this function at all)

    File ui/base/dragdrop/os_exchange_data_provider_win.cc
    Line 346, Patchset 22 (Latest): std::string url_list;
    Daniel Cheng . unresolved

    Same comment here; we probably don't want to allow calling this function with an empty list of URLs.

    Line 382, Patchset 22 (Latest): ClipboardFormatType::UrlType().ToFormatEtc(), storage));
    Daniel Cheng . unresolved

    I'm not sure that it's valid to pass a URL list here.

    https://learn.microsoft.com/en-us/windows/win32/shell/clipboard#cfstr_ineturl

    "This format gives the best clipboard representation of a single URL."

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Joone Hur
    • Min Qin
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I05feaa80a6db10e311c2e222281df4a22af7b5a0
    Gerrit-Change-Number: 6608042
    Gerrit-PatchSet: 22
    Gerrit-Owner: Joone Hur <joon...@microsoft.com>
    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
    Gerrit-Reviewer: David Trainor <dtra...@chromium.org>
    Gerrit-Reviewer: Joone Hur <joon...@microsoft.com>
    Gerrit-Reviewer: Min Qin <qin...@chromium.org>
    Gerrit-Reviewer: Rakina Zata Amni <rak...@chromium.org>
    Gerrit-CC: Sadrul Chowdhury <sad...@chromium.org>
    Gerrit-Attention: Min Qin <qin...@chromium.org>
    Gerrit-Attention: Joone Hur <joon...@microsoft.com>
    Gerrit-Comment-Date: Sat, 14 Jun 2025 07:07:47 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: David Trainor <dtra...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Avi Drissman (Gerrit)

    unread,
    Jun 14, 2025, 11:16:35 AMJun 14
    to Joone Hur, Avi Drissman, Rakina Zata Amni, Min Qin, David Trainor, Daniel Cheng, Sadrul Chowdhury, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, ozone-...@chromium.org, max+watc...@igalia.com, kinuko+...@chromium.org, nickdiego+wa...@igalia.com, mac-r...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, dcheng+c...@chromium.org, jdonnel...@chromium.org, mahmad...@chromium.org, navigation...@chromium.org, roblia...@chromium.org, sky+...@chromium.org
    Attention needed from Joone Hur and Min Qin

    Avi Drissman voted and added 3 comments

    Votes added by Avi Drissman

    Code-Review-1

    3 comments

    Patchset-level comments
    Avi Drissman . resolved

    I object to the design. URLs have titles, and if we want to plumb a list of URLs, we need to plumb a parallel list of titles.

    File ui/base/dragdrop/os_exchange_data_provider_mac.mm
    Line 188, Patchset 22 (Latest): GURL url = urls.empty() ? GURL() : urls.front();
    Daniel Cheng . unresolved

    Is it really OK to drop the rest of the URLs on the floor here?

    Avi Drissman

    We have a call to create multiple pasteboard items (`clipboard_util::PasteboardItemsFromUrls`) and a call to put multiple pasteboard items onto the pasteboard (`clipboard_util::AddDataToPasteboard`). It’s more work to drop the extra URLs than to just remove the call to `.firstObject` below.

    File ui/base/x/x11_os_exchange_data_provider.h
    Line 77, Patchset 22 (Latest): void SetURLs(const std::vector<GURL>& urls,
    std::u16string_view title) override;
    Avi Drissman . unresolved

    This API doesn’t make sense. Each URL has a title, so we’d need a parallel array of titles.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Joone Hur
    • Min Qin
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is blockingCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I05feaa80a6db10e311c2e222281df4a22af7b5a0
    Gerrit-Change-Number: 6608042
    Gerrit-PatchSet: 22
    Gerrit-Owner: Joone Hur <joon...@microsoft.com>
    Gerrit-Reviewer: Avi Drissman <a...@chromium.org>
    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
    Gerrit-Reviewer: David Trainor <dtra...@chromium.org>
    Gerrit-Reviewer: Joone Hur <joon...@microsoft.com>
    Gerrit-Reviewer: Min Qin <qin...@chromium.org>
    Gerrit-Reviewer: Rakina Zata Amni <rak...@chromium.org>
    Gerrit-CC: Sadrul Chowdhury <sad...@chromium.org>
    Gerrit-Attention: Min Qin <qin...@chromium.org>
    Gerrit-Attention: Joone Hur <joon...@microsoft.com>
    Gerrit-Comment-Date: Sat, 14 Jun 2025 15:16:28 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Daniel Cheng <dch...@chromium.org>
    satisfied_requirement
    blocking_requirement
    unsatisfied_requirement
    open
    diffy

    Avi Drissman (Gerrit)

    unread,
    Jun 14, 2025, 3:34:47 PMJun 14
    to Joone Hur, Avi Drissman, Rakina Zata Amni, Min Qin, David Trainor, Daniel Cheng, Sadrul Chowdhury, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, ozone-...@chromium.org, max+watc...@igalia.com, kinuko+...@chromium.org, nickdiego+wa...@igalia.com, mac-r...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, dcheng+c...@chromium.org, jdonnel...@chromium.org, mahmad...@chromium.org, navigation...@chromium.org, roblia...@chromium.org, sky+...@chromium.org
    Attention needed from Joone Hur and Min Qin

    Avi Drissman added 1 comment

    File content/public/common/drop_data.h
    Line 89, Patchset 22 (Latest): // Holds one or more URLs, such as those from dragging links or images.
    // For text/uri-list drag types, this contains multiple URLs.
    // https://www.rfc-editor.org/rfc/rfc2483#section-5
    std::vector<GURL> urls;
    std::u16string url_title; // The title associated with `url`.
    Avi Drissman . unresolved

    Same objection here; each URL should be matched with a title (an optional one, but still).

    Gerrit-Comment-Date: Sat, 14 Jun 2025 19:34:40 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    blocking_requirement
    unsatisfied_requirement
    open
    diffy

    Avi Drissman (Gerrit)

    unread,
    Jun 15, 2025, 5:15:12 PMJun 15
    to Joone Hur, Avi Drissman, Rakina Zata Amni, Min Qin, David Trainor, Daniel Cheng, Sadrul Chowdhury, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, ozone-...@chromium.org, max+watc...@igalia.com, kinuko+...@chromium.org, nickdiego+wa...@igalia.com, mac-r...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, dcheng+c...@chromium.org, jdonnel...@chromium.org, mahmad...@chromium.org, navigation...@chromium.org, roblia...@chromium.org, sky+...@chromium.org
    Attention needed from Joone Hur and Min Qin

    Avi Drissman added 1 comment

    File content/browser/web_contents/web_drag_dest_mac.mm
    Line 496, Patchset 22 (Latest): drop_data.urls = {
    GURL(base::SysNSStringToUTF8(urls_and_titles.firstObject.URL))};
    drop_data.url_title =
    base::SysNSStringToUTF16(urls_and_titles.firstObject.title);
    }
    Avi Drissman . unresolved

    Please wire up all URLs here. This code dropped all but the first on the floor because `DropData` couldn’t handle more than one. With this CL it can, so we should take advantage of that.

    Gerrit-Comment-Date: Sun, 15 Jun 2025 21:15:03 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    blocking_requirement
    unsatisfied_requirement
    open
    diffy

    Rakina Zata Amni (Gerrit)

    unread,
    Jun 15, 2025, 9:03:29 PMJun 15
    to Joone Hur, Avi Drissman, Min Qin, David Trainor, Daniel Cheng, Sadrul Chowdhury, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, ozone-...@chromium.org, max+watc...@igalia.com, kinuko+...@chromium.org, nickdiego+wa...@igalia.com, mac-r...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, dcheng+c...@chromium.org, jdonnel...@chromium.org, mahmad...@chromium.org, navigation...@chromium.org, roblia...@chromium.org, sky+...@chromium.org
    Attention needed from Joone Hur and Min Qin

    Rakina Zata Amni voted and added 1 comment

    Votes added by Rakina Zata Amni

    Code-Review+0

    1 comment

    Patchset-level comments
    Rakina Zata Amni . resolved

    content/ changes LGTM, sorry for the delay!

    Rakina Zata Amni

    Ah, I only looked at the changes as a "change URL -> list of URLs" change, but it looks like there are more concerns for this around the titles etc. Since avi@ is also a content/ owner and has concerns about this, let me remove my +1 and move myself to cc (sorry about the confusion, and thanks avi@ and dcheng@!).

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Joone Hur
    • Min Qin
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is blockingCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I05feaa80a6db10e311c2e222281df4a22af7b5a0
    Gerrit-Change-Number: 6608042
    Gerrit-PatchSet: 22
    Gerrit-Owner: Joone Hur <joon...@microsoft.com>
    Gerrit-Reviewer: Avi Drissman <a...@chromium.org>
    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
    Gerrit-Reviewer: David Trainor <dtra...@chromium.org>
    Gerrit-Reviewer: Joone Hur <joon...@microsoft.com>
    Gerrit-Reviewer: Min Qin <qin...@chromium.org>
    Gerrit-CC: Rakina Zata Amni <rak...@chromium.org>
    Gerrit-CC: Sadrul Chowdhury <sad...@chromium.org>
    Gerrit-Attention: Min Qin <qin...@chromium.org>
    Gerrit-Attention: Joone Hur <joon...@microsoft.com>
    Gerrit-Comment-Date: Mon, 16 Jun 2025 01:02:53 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Rakina Zata Amni <rak...@chromium.org>
    satisfied_requirement
    blocking_requirement
    unsatisfied_requirement
    open
    diffy

    Avi Drissman (Gerrit)

    unread,
    Jun 16, 2025, 11:15:09 AMJun 16
    to Joone Hur, Rakina Zata Amni, Avi Drissman, Min Qin, David Trainor, Daniel Cheng, Sadrul Chowdhury, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, ozone-...@chromium.org, max+watc...@igalia.com, kinuko+...@chromium.org, nickdiego+wa...@igalia.com, mac-r...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, dcheng+c...@chromium.org, jdonnel...@chromium.org, mahmad...@chromium.org, navigation...@chromium.org, roblia...@chromium.org, sky+...@chromium.org
    Attention needed from Joone Hur, Min Qin and Rakina Zata Amni

    Avi Drissman voted and added 1 comment

    Votes added by Avi Drissman

    Code-Review+0

    1 comment

    Patchset-level comments
    Rakina Zata Amni . resolved

    content/ changes LGTM, sorry for the delay!

    Rakina Zata Amni

    Ah, I only looked at the changes as a "change URL -> list of URLs" change, but it looks like there are more concerns for this around the titles etc. Since avi@ is also a content/ owner and has concerns about this, let me remove my +1 and move myself to cc (sorry about the confusion, and thanks avi@ and dcheng@!).

    Avi Drissman

    No problem.

    This is a “url → list of urls” change, but if we do that (and I am happy to see such a change!) it should be done fully.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Joone Hur
    • Min Qin
    • Rakina Zata Amni
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I05feaa80a6db10e311c2e222281df4a22af7b5a0
    Gerrit-Change-Number: 6608042
    Gerrit-PatchSet: 22
    Gerrit-Owner: Joone Hur <joon...@microsoft.com>
    Gerrit-Reviewer: Avi Drissman <a...@chromium.org>
    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
    Gerrit-Reviewer: David Trainor <dtra...@chromium.org>
    Gerrit-Reviewer: Joone Hur <joon...@microsoft.com>
    Gerrit-Reviewer: Min Qin <qin...@chromium.org>
    Gerrit-CC: Rakina Zata Amni <rak...@chromium.org>
    Gerrit-CC: Sadrul Chowdhury <sad...@chromium.org>
    Gerrit-Attention: Rakina Zata Amni <rak...@chromium.org>
    Gerrit-Attention: Min Qin <qin...@chromium.org>
    Gerrit-Attention: Joone Hur <joon...@microsoft.com>
    Gerrit-Comment-Date: Mon, 16 Jun 2025 15:14:58 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Joone Hur (Gerrit)

    unread,
    Jun 17, 2025, 6:37:28 PMJun 17
    to Rakina Zata Amni, Avi Drissman, Min Qin, David Trainor, Daniel Cheng, Sadrul Chowdhury, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, ozone-...@chromium.org, max+watc...@igalia.com, kinuko+...@chromium.org, nickdiego+wa...@igalia.com, mac-r...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, dcheng+c...@chromium.org, jdonnel...@chromium.org, mahmad...@chromium.org, navigation...@chromium.org, roblia...@chromium.org, sky+...@chromium.org
    Attention needed from Min Qin and Rakina Zata Amni

    Joone Hur added 1 comment

    Patchset-level comments
    File-level comment, Patchset 22 (Latest):
    Joone Hur . resolved

    Thanks for the feedback! I will update this CL this week.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Min Qin
    • Rakina Zata Amni
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I05feaa80a6db10e311c2e222281df4a22af7b5a0
    Gerrit-Change-Number: 6608042
    Gerrit-PatchSet: 22
    Gerrit-Owner: Joone Hur <joon...@microsoft.com>
    Gerrit-Reviewer: Avi Drissman <a...@chromium.org>
    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
    Gerrit-Reviewer: David Trainor <dtra...@chromium.org>
    Gerrit-Reviewer: Joone Hur <joon...@microsoft.com>
    Gerrit-Reviewer: Min Qin <qin...@chromium.org>
    Gerrit-CC: Rakina Zata Amni <rak...@chromium.org>
    Gerrit-CC: Sadrul Chowdhury <sad...@chromium.org>
    Gerrit-Attention: Rakina Zata Amni <rak...@chromium.org>
    Gerrit-Attention: Min Qin <qin...@chromium.org>
    Gerrit-Comment-Date: Tue, 17 Jun 2025 22:37:19 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Joone Hur (Gerrit)

    unread,
    Jul 5, 2025, 3:35:22 AM (5 days ago) Jul 5
    to Rakina Zata Amni, Avi Drissman, Min Qin, David Trainor, Daniel Cheng, Sadrul Chowdhury, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, ajwong...@chromium.org, omnibox-...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, ozone-...@chromium.org, max+watc...@igalia.com, kinuko+...@chromium.org, nickdiego+wa...@igalia.com, mac-r...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, dcheng+c...@chromium.org, jdonnel...@chromium.org, mahmad...@chromium.org, navigation...@chromium.org, roblia...@chromium.org, sky+...@chromium.org
    Attention needed from Avi Drissman, Daniel Cheng, David Trainor and Min Qin

    Joone Hur added 20 comments

    Patchset-level comments
    File-level comment, Patchset 37 (Latest):
    Joone Hur . resolved

    I’ve updated the CL based on your suggestions. The major change is the introduction of the ui::ClipboardUrlInfo struct, which holds a URL and its title. This struct is now used to support multiple URLs via a std::vector<ui::ClipboardUrlInfo>, replacing the previous urlInfo in OSExchangeData and the url & url_title properties in DropData.

    There are many updates in this CL. Please let me know if I missed anything or if further changes are needed.

    File chrome/browser/ui/views/frame/multi_contents_view_drop_target_controller.cc
    Line 35, Patchset 22: if (data.urls.empty() || !data.urls.front().is_valid() || is_in_split_view) {
    Daniel Cheng . resolved

    Should we really have invalid URLs here?

    I think we should avoid having invalid URLs in this list; instead, whether or not the list is empty should represent whether or not URLs are present.

    Joone Hur

    Done

    File content/app_shim_remote_cocoa/web_drag_source_mac.mm
    Line 213, Patchset 22: NSURL* url = net::NSURLWithGURL(_dropData.url());
    Daniel Cheng . resolved

    IIRC, this is the bit that produces the drag data asynchronously. But we only ever produce one URL–so does that mean this only sort of works on Mac?

    Joone Hur

    url() is intended to return a single URL so it should also work on Mac. I'll replace url() with front().url here.

    File content/browser/renderer_host/data_transfer_util.cc
    Line 306, Patchset 22: std::vector<std::u16string> urls16 = base::SplitString(
    Daniel Cheng . resolved

    Use SplitStringPiece() here please, to avoid allocating a new string for each thing.

    Joone Hur

    Done

    File content/browser/web_contents/web_contents_view_aura.cc
    Line 717, Patchset 22: if (std::optional<ui::OSExchangeData::UrlInfo> url = data.GetURLAndTitle(
    Daniel Cheng . resolved

    rename this url_info; that was my oversight when I wrote this originally

    Joone Hur

    Done

    Line 719, Patchset 22: url.has_value() && !url->urls.empty()) {
    Daniel Cheng . resolved

    I think we should probably guarantee `urls` is non-empty if we return a `url_info` here.

    Joone Hur

    Done

    File content/browser/web_contents/web_drag_dest_mac.mm
    Line 496, Patchset 22: drop_data.urls = {

    GURL(base::SysNSStringToUTF8(urls_and_titles.firstObject.URL))};
    drop_data.url_title =
    base::SysNSStringToUTF16(urls_and_titles.firstObject.title);
    }
    Avi Drissman . resolved

    Please wire up all URLs here. This code dropped all but the first on the floor because `DropData` couldn’t handle more than one. With this CL it can, so we should take advantage of that.

    Joone Hur

    Done

    File content/public/common/drop_data.h
    Line 89, Patchset 22: // Holds one or more URLs, such as those from dragging links or images.

    // For text/uri-list drag types, this contains multiple URLs.
    // https://www.rfc-editor.org/rfc/rfc2483#section-5
    std::vector<GURL> urls;
    std::u16string url_title; // The title associated with `url`.
    Avi Drissman . resolved

    Same objection here; each URL should be matched with a title (an optional one, but still).

    Joone Hur

    Done

    Line 79, Patchset 22: GURL url() const;
    Daniel Cheng . resolved

    Remove this, or have it return a `const GURL*`, returning non-null only if `urls` is non-empty.

    Joone Hur

    Done

    File ui/base/clipboard/clipboard_util_win.cc
    Line 98, Patchset 22: std::vector<std::u16string> urls16 = base::SplitString(
    Daniel Cheng . resolved

    SplitStringPiece() here as well, to avoid allocations.

    That being said... I'm not sure if this is really correct. This is used to process some pre-existing formats on the clipboard, which expect to be a certain shape.

    Joone Hur

    Done

    Line 534, Patchset 22: // Mozilla URL format or Unicode URL
    Daniel Cheng . resolved

    e.g. do we really expect a list of URLs in these clipboard formats? Will other apps expect a list of URLs/incorrectly treat the second URL as the title? If I remember correctly, this format isn't determined solely by Chrome; it's used for interop with other OS apps.

    Joone Hur

    According to the spec, they should return a list of URLs, but Chromium doesn't handle multiple URLs properly—this is the core issue. While the Windows clipboard format(CFSTR_INETURL) isn't designed for multiple URLs, we can still set them using a delimiter. On MacOS, this change enables support for multiple URLs.

    Line 558, Patchset 22: urls = {net::FilePathToFileURL(base::FilePath(filenames[0]))};
    Daniel Cheng . resolved

    Since we're using a vector-based approach now, let's avoid even adding the GURL to the list if it's invalid.

    Joone Hur

    Done

    File ui/base/dragdrop/os_exchange_data_provider.h
    Line 82, Patchset 22: std::u16string title;
    Daniel Cheng . resolved

    There should be a comment here that states that this is the title for the first URL, if there is any.

    Joone Hur

    With the proposed change to use std::vector<ClipboardUrlInfo>, each UrlInfo object in the vector can hold its own title.

    Line 79, Patchset 20: GURL url() const;
    ~UrlInfo();
    std::vector<GURL> urls;
    David Trainor . resolved

    I'm not an owner of this directory so will defer to the right folks - not sure how I feel about having urls get added to this, but "url" and "title" represent the first one. Just wanted to flag it!

    Daniel Cheng

    I'm fine with this (modulo the plumbing questions), but I think this should also have a comment/guarantee about not including invalid GURLs in the list.

    Joone Hur

    Instead of modifying struct UrlInfo, I'll use std::vector<ClipboardUrlInfo> to hold the URL information.

    File ui/base/dragdrop/os_exchange_data_provider_mac.mm
    Line 188, Patchset 22: GURL url = urls.empty() ? GURL() : urls.front();
    Daniel Cheng . unresolved

    Is it really OK to drop the rest of the URLs on the floor here?

    Avi Drissman

    We have a call to create multiple pasteboard items (`clipboard_util::PasteboardItemsFromUrls`) and a call to put multiple pasteboard items onto the pasteboard (`clipboard_util::AddDataToPasteboard`). It’s more work to drop the extra URLs than to just remove the call to `.firstObject` below.

    Joone Hur

    can we separate the multiple URL support for Mac into a follow-up change?

    Line 189, Patchset 22: NSArray<NSPasteboardItem*>* items = clipboard_util::PasteboardItemsFromUrls(
    Daniel Cheng . resolved

    Do we really want to continue with the rest of this work if there aren't any URLs? I'm not sure we would have called this before... would we?

    Joone Hur

    We need to return early if urls is empty here. I'll add that check.

    File ui/base/dragdrop/os_exchange_data_provider_non_backed.cc
    Line 77, Patchset 22: title_ = title;
    Daniel Cheng . resolved

    We should not do any of this if urls is empty (probably we should not call this function at all)

    Joone Hur

    Done

    File ui/base/dragdrop/os_exchange_data_provider_win.cc
    Line 346, Patchset 22: std::string url_list;
    Daniel Cheng . resolved

    Same comment here; we probably don't want to allow calling this function with an empty list of URLs.

    Joone Hur

    Done

    Line 382, Patchset 22: ClipboardFormatType::UrlType().ToFormatEtc(), storage));
    Daniel Cheng . unresolved

    I'm not sure that it's valid to pass a URL list here.

    https://learn.microsoft.com/en-us/windows/win32/shell/clipboard#cfstr_ineturl

    "This format gives the best clipboard representation of a single URL."

    Joone Hur

    For multiple URLs, we can provide them in CF_TEXT as a standard fallback. For a single URL, we need to continue providing it in CFSTR_INETURL for compatibility with other applications.

    File ui/base/x/x11_os_exchange_data_provider.h
    Line 77, Patchset 22: void SetURLs(const std::vector<GURL>& urls,
    std::u16string_view title) override;
    Avi Drissman . resolved

    This API doesn’t make sense. Each URL has a title, so we’d need a parallel array of titles.

    Joone Hur

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Avi Drissman
    • Daniel Cheng
    • David Trainor
    • Min Qin
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I05feaa80a6db10e311c2e222281df4a22af7b5a0
    Gerrit-Change-Number: 6608042
    Gerrit-PatchSet: 37
    Gerrit-Owner: Joone Hur <joon...@microsoft.com>
    Gerrit-Reviewer: Avi Drissman <a...@chromium.org>
    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
    Gerrit-Reviewer: David Trainor <dtra...@chromium.org>
    Gerrit-Reviewer: Joone Hur <joon...@microsoft.com>
    Gerrit-Reviewer: Min Qin <qin...@chromium.org>
    Gerrit-CC: Rakina Zata Amni <rak...@chromium.org>
    Gerrit-CC: Sadrul Chowdhury <sad...@chromium.org>
    Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
    Gerrit-Attention: Avi Drissman <a...@chromium.org>
    Gerrit-Attention: David Trainor <dtra...@chromium.org>
    Gerrit-Attention: Min Qin <qin...@chromium.org>
    Gerrit-Comment-Date: Sat, 05 Jul 2025 07:35:07 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Daniel Cheng <dch...@chromium.org>
    Comment-In-Reply-To: Avi Drissman <a...@chromium.org>
    Comment-In-Reply-To: David Trainor <dtra...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Avi Drissman (Gerrit)

    unread,
    Jul 5, 2025, 3:02:22 PM (5 days ago) Jul 5
    to Joone Hur, Rakina Zata Amni, Avi Drissman, Min Qin, David Trainor, Daniel Cheng, Sadrul Chowdhury, AyeAye, Chromium LUCI CQ, chromium...@chromium.org, ajwong...@chromium.org, omnibox-...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, ozone-...@chromium.org, max+watc...@igalia.com, kinuko+...@chromium.org, nickdiego+wa...@igalia.com, mac-r...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, dcheng+c...@chromium.org, jdonnel...@chromium.org, mahmad...@chromium.org, navigation...@chromium.org, roblia...@chromium.org, sky+...@chromium.org
    Attention needed from Daniel Cheng, David Trainor, Joone Hur and Min Qin

    Avi Drissman added 7 comments

    File chrome/browser/ui/bookmarks/bookmark_browsertest.cc
    Line 475, Patchset 37 (Latest): EXPECT_EQ(page_url, url_infos->front().url);
    EXPECT_EQ(page_title, url_infos->front().title);
    #if !BUILDFLAG(IS_WIN)
    Avi Drissman . unresolved

    Check for exactly one value in `url_infos` before checking the url/title?

    Line 555, Patchset 37 (Latest):#if BUILDFLAG(IS_MAC)
    // On the Mac, the clipboard can hold multiple items, each with
    // different representations. Therefore, when the "write multiple URLs"
    // call is made, a full-fledged array of objects and types are written
    // to the clipboard, providing rich interoperability with the rest of
    // the OS and other apps. Then, when `GetURLAndTitle` is called, it
    // looks at the clipboard, sees URL and title data, and returns true.
    std::optional<std::vector<ui::ClipboardUrlInfo>> url_infos =
    drag_data->GetURLAndTitle(
    ui::FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES);
    ASSERT_TRUE(url_infos.has_value());

    // The bookmarks are added in order, and the first is retrieved, so
    // expect the values from the first bookmark.
    EXPECT_EQ(page_title, url_infos->front().title);
    EXPECT_EQ(page_url, url_infos->front().url);
    #else
    // On other platforms, because they don't have the concept of multiple
    // items on the clipboard, single URLs are added as a URL, but multiple
    // URLs are added as a data blob opaque to the outside world. Then, when
    // `GetURLAndTitle` is called, it's unable to extract any single URL,
    // and returns false.
    EXPECT_FALSE(drag_data
    ->GetURLAndTitle(
    ui::FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES)
    .has_value());
    #endif
    #if !BUILDFLAG(IS_WIN)
    Avi Drissman . unresolved

    This difference in behavior between Mac/non-Mac is due to the exact thing that you’re changing in this CL. For followup, would we need to change this section?

    File content/app_shim_remote_cocoa/web_drag_source_mac.mm
    Line 212, Patchset 37 (Latest): DCHECK(!_dropData.url_infos.empty());
    NSURL* url = net::NSURLWithGURL(_dropData.url_infos.front().url);
    // If NSURL creation failed, check for a badly-escaped JavaScript URL.
    // Strip out any existing escapes and then re-escape uniformly.
    if (!url &&
    _dropData.url_infos.front().url.SchemeIs(url::kJavaScriptScheme)) {
    std::string unescapedUrlString = base::UnescapeBinaryURLComponent(
    _dropData.url_infos.front().url.spec());
    std::string escapedUrlString =
    base::EscapeUrlEncodedData(unescapedUrlString, false);
    url = [NSURL URLWithString:base::SysUTF8ToNSString(escapedUrlString)];
    }
    return url.absoluteString;
    }

    // URL title.
    if ([type isEqualToString:ui::kUTTypeUrlName]) {
    return base::SysUTF16ToNSString(_dropData.url_infos.front().title);
    }
    Avi Drissman . unresolved

    Oh boy.

    The problem here is that this code assumes that the webpage is initiating a drag of a single object. We’d have to rethink how to do this if we have to initiate a drag of multiple objects.

    This is fine for now but can you file a bug for followup? This is going to be a longer-range refactor of the code.

    File content/public/common/common_param_traits_macros.h
    Line 73, Patchset 37 (Latest):IPC_STRUCT_TRAITS_BEGIN(ui::ClipboardUrlInfo)
    Avi Drissman . unresolved

    Can you define a `ui::` structure here in content? Do we still even use these macros files with mojo?

    File ui/base/dragdrop/os_exchange_data.h
    Line 123, Patchset 37 (Latest): std::optional<std::vector<ClipboardUrlInfo>> GetURLAndTitle(
    FilenameToURLPolicy policy) const;
    std::optional<std::vector<ui::ClipboardUrlInfo>> GetURLs(
    FilenameToURLPolicy policy) const;
    // Return information about the contained files, if any.
    Avi Drissman . unresolved

    The bifurcation was “get one url and its title” and “get many urls but no titles”. This is a chance to unify those two, and since we already have to change every caller, can we merge these together as `GetURLs()`? From this interface it seems these are redundant.

    Line 125, Patchset 37 (Latest): std::optional<std::vector<ui::ClipboardUrlInfo>> GetURLs(
    Avi Drissman . unresolved

    You’re in the `ui::` namespace so no need to qualify here.

    File ui/base/dragdrop/os_exchange_data_provider_mac.mm
    Line 188, Patchset 22: GURL url = urls.empty() ? GURL() : urls.front();
    Daniel Cheng . resolved

    Is it really OK to drop the rest of the URLs on the floor here?

    Avi Drissman

    We have a call to create multiple pasteboard items (`clipboard_util::PasteboardItemsFromUrls`) and a call to put multiple pasteboard items onto the pasteboard (`clipboard_util::AddDataToPasteboard`). It’s more work to drop the extra URLs than to just remove the call to `.firstObject` below.

    Joone Hur

    can we separate the multiple URL support for Mac into a follow-up change?

    Avi Drissman

    That sounds fine, as this leaves the Mac impl no worse off than today and this is getting to be a big CL. As a Mac person, happy to advise if you have questions when you follow up.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Daniel Cheng
    • David Trainor
    • Joone Hur
    • Min Qin
    Gerrit-Attention: David Trainor <dtra...@chromium.org>
    Gerrit-Attention: Min Qin <qin...@chromium.org>
    Gerrit-Attention: Joone Hur <joon...@microsoft.com>
    Gerrit-Comment-Date: Sat, 05 Jul 2025 19:02:16 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Daniel Cheng <dch...@chromium.org>
    Comment-In-Reply-To: Avi Drissman <a...@chromium.org>
    Comment-In-Reply-To: Joone Hur <joon...@microsoft.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy
    Reply all
    Reply to author
    Forward
    0 new messages