| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/safe_browsing/download_protection_service.h" | 5 #include "chrome/browser/safe_browsing/download_protection_service.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 1862 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1873 const GURL& download_url, | 1873 const GURL& download_url, |
| 1874 content::WebContents* web_contents) { | 1874 content::WebContents* web_contents) { |
| 1875 std::unique_ptr<ReferrerChain> referrer_chain = | 1875 std::unique_ptr<ReferrerChain> referrer_chain = |
| 1876 base::MakeUnique<ReferrerChain>(); | 1876 base::MakeUnique<ReferrerChain>(); |
| 1877 int download_tab_id = SessionTabHelper::IdForTab(web_contents); | 1877 int download_tab_id = SessionTabHelper::IdForTab(web_contents); |
| 1878 UMA_HISTOGRAM_BOOLEAN( | 1878 UMA_HISTOGRAM_BOOLEAN( |
| 1879 "SafeBrowsing.ReferrerHasInvalidTabID.DownloadAttribution", | 1879 "SafeBrowsing.ReferrerHasInvalidTabID.DownloadAttribution", |
| 1880 download_tab_id == -1); | 1880 download_tab_id == -1); |
| 1881 // We look for the referrer chain that leads to the download url first. | 1881 // We look for the referrer chain that leads to the download url first. |
| 1882 SafeBrowsingNavigationObserverManager::AttributionResult result = | 1882 SafeBrowsingNavigationObserverManager::AttributionResult result = |
| 1883 navigation_observer_manager_->IdentifyReferrerChainForDownload( | 1883 navigation_observer_manager_->IdentifyReferrerChainByEventURL( |
| 1884 download_url, | 1884 download_url, download_tab_id, kDownloadAttributionUserGestureLimit, |
| 1885 download_tab_id, | |
| 1886 kDownloadAttributionUserGestureLimit, | |
| 1887 referrer_chain.get()); | 1885 referrer_chain.get()); |
| 1888 | 1886 |
| 1889 // If no navigation event is found, this download is not triggered by regular | 1887 // If no navigation event is found, this download is not triggered by regular |
| 1890 // navigation (e.g. html5 file apis, etc). We look for the referrer chain | 1888 // navigation (e.g. html5 file apis, etc). We look for the referrer chain |
| 1891 // based on relevant WebContents instead. | 1889 // based on relevant WebContents instead. |
| 1892 if (result == | 1890 if (result == |
| 1893 SafeBrowsingNavigationObserverManager::NAVIGATION_EVENT_NOT_FOUND && | 1891 SafeBrowsingNavigationObserverManager::NAVIGATION_EVENT_NOT_FOUND && |
| 1894 web_contents && web_contents->GetLastCommittedURL().is_valid()) { | 1892 web_contents && web_contents->GetLastCommittedURL().is_valid()) { |
| 1895 result = | 1893 result = navigation_observer_manager_->IdentifyReferrerChainByWebContent( |
| 1896 navigation_observer_manager_->IdentifyReferrerChainByDownloadWebContent( | 1894 web_contents, kDownloadAttributionUserGestureLimit, |
| 1897 web_contents, kDownloadAttributionUserGestureLimit, | 1895 referrer_chain.get()); |
| 1898 referrer_chain.get()); | |
| 1899 } | 1896 } |
| 1900 | 1897 |
| 1901 UMA_HISTOGRAM_COUNTS_100( | 1898 UMA_HISTOGRAM_COUNTS_100( |
| 1902 "SafeBrowsing.ReferrerURLChainSize.DownloadAttribution", | 1899 "SafeBrowsing.ReferrerURLChainSize.DownloadAttribution", |
| 1903 referrer_chain->size()); | 1900 referrer_chain->size()); |
| 1904 UMA_HISTOGRAM_ENUMERATION( | 1901 UMA_HISTOGRAM_ENUMERATION( |
| 1905 "SafeBrowsing.ReferrerAttributionResult.DownloadAttribution", result, | 1902 "SafeBrowsing.ReferrerAttributionResult.DownloadAttribution", result, |
| 1906 SafeBrowsingNavigationObserverManager::ATTRIBUTION_FAILURE_TYPE_MAX); | 1903 SafeBrowsingNavigationObserverManager::ATTRIBUTION_FAILURE_TYPE_MAX); |
| 1907 return referrer_chain; | 1904 return referrer_chain; |
| 1908 } | 1905 } |
| 1909 | 1906 |
| 1910 void DownloadProtectionService::AddReferrerChainToPPAPIClientDownloadRequest( | 1907 void DownloadProtectionService::AddReferrerChainToPPAPIClientDownloadRequest( |
| 1911 const GURL& initiating_frame_url, | 1908 const GURL& initiating_frame_url, |
| 1912 const GURL& initiating_main_frame_url, | 1909 const GURL& initiating_main_frame_url, |
| 1913 int tab_id, | 1910 int tab_id, |
| 1914 bool has_user_gesture, | 1911 bool has_user_gesture, |
| 1915 ClientDownloadRequest* out_request) { | 1912 ClientDownloadRequest* out_request) { |
| 1916 if (!base::FeatureList::IsEnabled( | 1913 if (!base::FeatureList::IsEnabled( |
| 1917 SafeBrowsingNavigationObserverManager::kDownloadAttribution) || | 1914 SafeBrowsingNavigationObserverManager::kDownloadAttribution) || |
| 1918 !navigation_observer_manager_) { | 1915 !navigation_observer_manager_) { |
| 1919 return; | 1916 return; |
| 1920 } | 1917 } |
| 1921 | 1918 |
| 1922 UMA_HISTOGRAM_BOOLEAN( | 1919 UMA_HISTOGRAM_BOOLEAN( |
| 1923 "SafeBrowsing.ReferrerHasInvalidTabID.DownloadAttribution", | 1920 "SafeBrowsing.ReferrerHasInvalidTabID.DownloadAttribution", |
| 1924 tab_id == -1); | 1921 tab_id == -1); |
| 1925 SafeBrowsingNavigationObserverManager::AttributionResult result = | 1922 SafeBrowsingNavigationObserverManager::AttributionResult result = |
| 1926 navigation_observer_manager_->IdentifyReferrerChainForDownloadHostingPage( | 1923 navigation_observer_manager_->IdentifyReferrerChainByHostingPage( |
| 1927 initiating_frame_url, initiating_main_frame_url, tab_id, | 1924 initiating_frame_url, initiating_main_frame_url, tab_id, |
| 1928 has_user_gesture, kDownloadAttributionUserGestureLimit, | 1925 has_user_gesture, kDownloadAttributionUserGestureLimit, |
| 1929 out_request->mutable_referrer_chain()); | 1926 out_request->mutable_referrer_chain()); |
| 1930 UMA_HISTOGRAM_COUNTS_100( | 1927 UMA_HISTOGRAM_COUNTS_100( |
| 1931 "SafeBrowsing.ReferrerURLChainSize.PPAPIDownloadAttribution", | 1928 "SafeBrowsing.ReferrerURLChainSize.PPAPIDownloadAttribution", |
| 1932 out_request->referrer_chain_size()); | 1929 out_request->referrer_chain_size()); |
| 1933 UMA_HISTOGRAM_ENUMERATION( | 1930 UMA_HISTOGRAM_ENUMERATION( |
| 1934 "SafeBrowsing.ReferrerAttributionResult.PPAPIDownloadAttribution", result, | 1931 "SafeBrowsing.ReferrerAttributionResult.PPAPIDownloadAttribution", result, |
| 1935 SafeBrowsingNavigationObserverManager::ATTRIBUTION_FAILURE_TYPE_MAX); | 1932 SafeBrowsingNavigationObserverManager::ATTRIBUTION_FAILURE_TYPE_MAX); |
| 1936 out_request->set_download_attribution_finch_enabled(true); | 1933 out_request->set_download_attribution_finch_enabled(true); |
| 1937 } | 1934 } |
| 1938 | 1935 |
| 1939 } // namespace safe_browsing | 1936 } // namespace safe_browsing |
| OLD | NEW |