[gIRA] Don't return early if in incognito mode. Check for the installed apps, then return an empty list if in incognito mode, to prevent the ability to use this API for detecting incognito mode. Bug: 1045506 Change-Id: I83c4611947990af470d64ac723fc6695893e2a23 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2066778 Commit-Queue: Rayan Kanso <rayankans@chromium.org> Auto-Submit: Rayan Kanso <rayankans@chromium.org> Reviewed-by: Peter Beverloo <peter@chromium.org> Cr-Commit-Position: refs/heads/master@{#743132}
diff --git a/content/browser/installedapp/installed_app_provider_impl.cc b/content/browser/installedapp/installed_app_provider_impl.cc index 53fd127..16c8a436 100644 --- a/content/browser/installedapp/installed_app_provider_impl.cc +++ b/content/browser/installedapp/installed_app_provider_impl.cc
@@ -13,6 +13,25 @@ namespace content { +namespace { + +#if defined(OS_WIN) +void DidGetInstalledApps( + bool is_off_the_record, + InstalledAppProviderImpl::FilterInstalledAppsCallback callback, + std::vector<blink::mojom::RelatedApplicationPtr> apps) { + if (is_off_the_record) { + // Don't expose the installed apps if this is off the record. + std::move(callback).Run({}); + return; + } + + std::move(callback).Run(std::move(apps)); +} +#endif + +} // namespace + InstalledAppProviderImpl::InstalledAppProviderImpl( RenderFrameHost* render_frame_host) : render_frame_host_(render_frame_host) { @@ -23,17 +42,17 @@ std::vector<blink::mojom::RelatedApplicationPtr> related_apps, const GURL& manifest_url, FilterInstalledAppsCallback callback) { - if (render_frame_host_->GetProcess()->GetBrowserContext()->IsOffTheRecord()) { - std::move(callback).Run(std::vector<blink::mojom::RelatedApplicationPtr>()); - return; - } - bool is_implemented = false; if (base::FeatureList::IsEnabled(features::kInstalledAppProvider)) { #if defined(OS_WIN) is_implemented = true; + bool is_off_the_record = + render_frame_host_->GetProcess()->GetBrowserContext()->IsOffTheRecord(); installed_app_provider_win::FilterInstalledAppsForWin( - std::move(related_apps), std::move(callback), render_frame_host_); + std::move(related_apps), + base::BindOnce(&DidGetInstalledApps, is_off_the_record, + std::move(callback)), + render_frame_host_); #endif }