diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc index 7e78d75860689..5d822606d5df5 100644 --- a/chrome/browser/chrome_browser_interface_binders.cc +++ b/chrome/browser/chrome_browser_interface_binders.cc @@ -121,6 +121,17 @@ #include "third_party/blink/public/mojom/webshare/webshare.mojom.h" #endif +// --- POC INSTRUMENTATION (observation only) -------------------------------- +// On Linux there is no production ShareService receiver. Register a logging +// stub so we can OBSERVE that an http(s) page sends a file: URL across the +// renderer→browser Mojo boundary. This does not change any check; it only +// records what the unmodified renderer sends. +#if BUILDFLAG(IS_LINUX) +#include "mojo/public/cpp/bindings/self_owned_receiver.h" +#include "third_party/blink/public/mojom/webshare/webshare.mojom.h" +#endif +// --------------------------------------------------------------------------- + #if BUILDFLAG(ENABLE_SPEECH_SERVICE) #include "chrome/browser/accessibility/live_caption/live_caption_speech_recognition_host.h" #include "chrome/browser/accessibility/live_caption/live_caption_unavailability_notifier.h" @@ -361,6 +372,38 @@ void BindOnDeviceSpeechRecognitionHandler( ->Bind(std::move(receiver)); } +// --- POC INSTRUMENTATION (observation only) -------------------------------- +#if BUILDFLAG(IS_LINUX) +class PocLinuxShareServiceLogger : public blink::mojom::ShareService { + public: + explicit PocLinuxShareServiceLogger(content::RenderFrameHost* rfh) + : last_committed_(rfh ? rfh->GetLastCommittedURL() : GURL()) {} + void Share(const std::string& title, + const std::string& text, + const GURL& share_url, + std::vector files, + ShareCallback callback) override { + LOG(ERROR) << "POC-OBSERVE [browser process] ShareService::Share" + << " from page=" << last_committed_ + << " share_url=" << share_url + << " scheme=" << share_url.scheme() + << " SchemeIsFile=" << share_url.SchemeIsFile(); + std::move(callback).Run(blink::mojom::ShareError::CANCELED); + } + + private: + const GURL last_committed_; +}; + +void BindPocLinuxShareServiceLogger( + content::RenderFrameHost* rfh, + mojo::PendingReceiver receiver) { + mojo::MakeSelfOwnedReceiver( + std::make_unique(rfh), std::move(receiver)); +} +#endif // BUILDFLAG(IS_LINUX) +// --------------------------------------------------------------------------- + #if BUILDFLAG(IS_WIN) void BindMediaFoundationPreferences( content::RenderFrameHost* frame_host, @@ -529,6 +572,11 @@ void PopulateChromeFrameBinders( map->Add( &ForwardToJavaWebContents); #endif +// --- POC INSTRUMENTATION (observation only) -------------------------------- +#if BUILDFLAG(IS_LINUX) + map->Add(&BindPocLinuxShareServiceLogger); +#endif +// --------------------------------------------------------------------------- map->Add(&BindNetworkHintsHandler); map->Add(