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/chrome_content_browser_client.h" | 5 #include "chrome/browser/chrome_content_browser_client.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <set> | 8 #include <set> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 #include "components/task_scheduler_util/common/variations_util.h" | 155 #include "components/task_scheduler_util/common/variations_util.h" |
156 #include "components/translate/core/common/translate_switches.h" | 156 #include "components/translate/core/common/translate_switches.h" |
157 #include "components/url_formatter/url_fixer.h" | 157 #include "components/url_formatter/url_fixer.h" |
158 #include "components/variations/variations_associated_data.h" | 158 #include "components/variations/variations_associated_data.h" |
159 #include "components/version_info/version_info.h" | 159 #include "components/version_info/version_info.h" |
160 #include "content/public/browser/browser_child_process_host.h" | 160 #include "content/public/browser/browser_child_process_host.h" |
161 #include "content/public/browser/browser_main_parts.h" | 161 #include "content/public/browser/browser_main_parts.h" |
162 #include "content/public/browser/browser_ppapi_host.h" | 162 #include "content/public/browser/browser_ppapi_host.h" |
163 #include "content/public/browser/browser_thread.h" | 163 #include "content/public/browser/browser_thread.h" |
164 #include "content/public/browser/browser_url_handler.h" | 164 #include "content/public/browser/browser_url_handler.h" |
165 #include "content/public/browser/browsing_data_filter_builder.h" | |
166 #include "content/public/browser/browsing_data_remover.h" | 165 #include "content/public/browser/browsing_data_remover.h" |
167 #include "content/public/browser/child_process_data.h" | 166 #include "content/public/browser/child_process_data.h" |
168 #include "content/public/browser/child_process_security_policy.h" | 167 #include "content/public/browser/child_process_security_policy.h" |
169 #include "content/public/browser/client_certificate_delegate.h" | 168 #include "content/public/browser/client_certificate_delegate.h" |
170 #include "content/public/browser/navigation_handle.h" | 169 #include "content/public/browser/navigation_handle.h" |
171 #include "content/public/browser/navigation_throttle.h" | 170 #include "content/public/browser/navigation_throttle.h" |
172 #include "content/public/browser/render_frame_host.h" | 171 #include "content/public/browser/render_frame_host.h" |
173 #include "content/public/browser/render_process_host.h" | 172 #include "content/public/browser/render_process_host.h" |
174 #include "content/public/browser/render_view_host.h" | 173 #include "content/public/browser/render_view_host.h" |
175 #include "content/public/browser/resource_context.h" | 174 #include "content/public/browser/resource_context.h" |
(...skipping 12 matching lines...) Expand all Loading... |
188 #include "content/public/common/web_preferences.h" | 187 #include "content/public/common/web_preferences.h" |
189 #include "device/bluetooth/adapter_factory.h" | 188 #include "device/bluetooth/adapter_factory.h" |
190 #include "device/bluetooth/public/interfaces/adapter.mojom.h" | 189 #include "device/bluetooth/public/interfaces/adapter.mojom.h" |
191 #include "device/usb/public/interfaces/chooser_service.mojom.h" | 190 #include "device/usb/public/interfaces/chooser_service.mojom.h" |
192 #include "device/usb/public/interfaces/device_manager.mojom.h" | 191 #include "device/usb/public/interfaces/device_manager.mojom.h" |
193 #include "extensions/features/features.h" | 192 #include "extensions/features/features.h" |
194 #include "gpu/config/gpu_switches.h" | 193 #include "gpu/config/gpu_switches.h" |
195 #include "media/audio/audio_manager.h" | 194 #include "media/audio/audio_manager.h" |
196 #include "media/media_features.h" | 195 #include "media/media_features.h" |
197 #include "net/base/mime_util.h" | 196 #include "net/base/mime_util.h" |
198 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | |
199 #include "net/cookies/canonical_cookie.h" | 197 #include "net/cookies/canonical_cookie.h" |
200 #include "net/cookies/cookie_options.h" | 198 #include "net/cookies/cookie_options.h" |
201 #include "net/ssl/ssl_cert_request_info.h" | 199 #include "net/ssl/ssl_cert_request_info.h" |
202 #include "ppapi/features/features.h" | 200 #include "ppapi/features/features.h" |
203 #include "ppapi/host/ppapi_host.h" | 201 #include "ppapi/host/ppapi_host.h" |
204 #include "printing/features/features.h" | 202 #include "printing/features/features.h" |
205 #include "services/preferences/public/interfaces/preferences.mojom.h" | 203 #include "services/preferences/public/interfaces/preferences.mojom.h" |
206 #include "services/service_manager/public/cpp/binder_registry.h" | 204 #include "services/service_manager/public/cpp/binder_registry.h" |
207 #include "services/service_manager/public/cpp/interface_provider.h" | 205 #include "services/service_manager/public/cpp/interface_provider.h" |
208 #include "services/service_manager/public/cpp/service.h" | 206 #include "services/service_manager/public/cpp/service.h" |
(...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
917 } | 915 } |
918 | 916 |
919 bool GetDataSaverEnabledPref(const PrefService* prefs) { | 917 bool GetDataSaverEnabledPref(const PrefService* prefs) { |
920 // Enable data saver only when data saver pref is enabled and not part of | 918 // Enable data saver only when data saver pref is enabled and not part of |
921 // "Disabled" group of "SaveDataHeader" experiment. | 919 // "Disabled" group of "SaveDataHeader" experiment. |
922 return prefs->GetBoolean(prefs::kDataSaverEnabled) && | 920 return prefs->GetBoolean(prefs::kDataSaverEnabled) && |
923 base::FieldTrialList::FindFullName("SaveDataHeader") | 921 base::FieldTrialList::FindFullName("SaveDataHeader") |
924 .compare("Disabled"); | 922 .compare("Disabled"); |
925 } | 923 } |
926 | 924 |
927 // A BrowsingDataRemover::Observer that waits for |count| | |
928 // OnBrowsingDataRemoverDone() callbacks, translates them into | |
929 // one base::Closure, and then destroys itself. | |
930 class ClearSiteDataObserver : public content::BrowsingDataRemover::Observer { | |
931 public: | |
932 explicit ClearSiteDataObserver(content::BrowsingDataRemover* remover, | |
933 const base::Closure& callback, | |
934 int count) | |
935 : remover_(remover), callback_(callback), count_(count) { | |
936 remover_->AddObserver(this); | |
937 } | |
938 | |
939 ~ClearSiteDataObserver() override { remover_->RemoveObserver(this); } | |
940 | |
941 // BrowsingDataRemover::Observer. | |
942 void OnBrowsingDataRemoverDone() override { | |
943 DCHECK(count_); | |
944 if (--count_) | |
945 return; | |
946 | |
947 callback_.Run(); | |
948 delete this; | |
949 } | |
950 | |
951 private: | |
952 content::BrowsingDataRemover* remover_; | |
953 base::Closure callback_; | |
954 int count_; | |
955 }; | |
956 | |
957 WebContents* GetWebContents(int render_process_id, int render_frame_id) { | 925 WebContents* GetWebContents(int render_process_id, int render_frame_id) { |
958 RenderFrameHost* rfh = | 926 RenderFrameHost* rfh = |
959 RenderFrameHost::FromID(render_process_id, render_frame_id); | 927 RenderFrameHost::FromID(render_process_id, render_frame_id); |
960 return WebContents::FromRenderFrameHost(rfh); | 928 return WebContents::FromRenderFrameHost(rfh); |
961 } | 929 } |
962 | 930 |
963 #if BUILDFLAG(ENABLE_EXTENSIONS) | 931 #if BUILDFLAG(ENABLE_EXTENSIONS) |
964 // Returns true if there is is an extension with the same origin as | 932 // Returns true if there is is an extension with the same origin as |
965 // |source_origin| in |opener_render_process_id| with | 933 // |source_origin| in |opener_render_process_id| with |
966 // APIPermission::kBackground. | 934 // APIPermission::kBackground. |
(...skipping 1791 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2758 | 2726 |
2759 void ChromeContentBrowserClient::ClearCache(RenderFrameHost* rfh) { | 2727 void ChromeContentBrowserClient::ClearCache(RenderFrameHost* rfh) { |
2760 content::BrowsingDataRemover* remover = | 2728 content::BrowsingDataRemover* remover = |
2761 content::BrowserContext::GetBrowsingDataRemover( | 2729 content::BrowserContext::GetBrowsingDataRemover( |
2762 rfh->GetSiteInstance()->GetProcess()->GetBrowserContext()); | 2730 rfh->GetSiteInstance()->GetProcess()->GetBrowserContext()); |
2763 remover->Remove(base::Time(), base::Time::Max(), | 2731 remover->Remove(base::Time(), base::Time::Max(), |
2764 content::BrowsingDataRemover::DATA_TYPE_CACHE, | 2732 content::BrowsingDataRemover::DATA_TYPE_CACHE, |
2765 content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB); | 2733 content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB); |
2766 } | 2734 } |
2767 | 2735 |
2768 void ChromeContentBrowserClient::ClearSiteData( | |
2769 content::BrowserContext* browser_context, | |
2770 const url::Origin& origin, | |
2771 bool remove_cookies, | |
2772 bool remove_storage, | |
2773 bool remove_cache, | |
2774 const base::Closure& callback) { | |
2775 content::BrowsingDataRemover* remover = | |
2776 content::BrowserContext::GetBrowsingDataRemover(browser_context); | |
2777 | |
2778 // ClearSiteDataObserver deletes itself when callbacks from both removal | |
2779 // tasks are received. | |
2780 ClearSiteDataObserver* observer = | |
2781 new ClearSiteDataObserver(remover, callback, 2 /* number of tasks */); | |
2782 | |
2783 // Cookies and channel IDs are scoped to | |
2784 // a) eTLD+1 of |origin|'s host if |origin|'s host is a registrable domain | |
2785 // or a subdomain thereof | |
2786 // b) |origin|'s host exactly if it is an IP address or an internal hostname | |
2787 // (e.g. "localhost" or "fileserver"). | |
2788 if (remove_cookies) { | |
2789 std::string domain = GetDomainAndRegistry( | |
2790 origin.host(), | |
2791 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); | |
2792 | |
2793 if (domain.empty()) | |
2794 domain = origin.host(); // IP address or internal hostname. | |
2795 | |
2796 std::unique_ptr<BrowsingDataFilterBuilder> domain_filter_builder( | |
2797 BrowsingDataFilterBuilder::Create( | |
2798 BrowsingDataFilterBuilder::WHITELIST)); | |
2799 domain_filter_builder->AddRegisterableDomain(domain); | |
2800 | |
2801 remover->RemoveWithFilterAndReply( | |
2802 base::Time(), base::Time::Max(), | |
2803 content::BrowsingDataRemover::DATA_TYPE_COOKIES | | |
2804 content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS | | |
2805 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA, | |
2806 ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES, | |
2807 std::move(domain_filter_builder), observer); | |
2808 } else { | |
2809 // The first removal task is a no-op. | |
2810 observer->OnBrowsingDataRemoverDone(); | |
2811 } | |
2812 | |
2813 // Delete origin-scoped data. | |
2814 int remove_mask = 0; | |
2815 if (remove_storage) | |
2816 remove_mask |= content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE; | |
2817 if (remove_cache) | |
2818 remove_mask |= content::BrowsingDataRemover::DATA_TYPE_CACHE; | |
2819 | |
2820 if (remove_mask) { | |
2821 std::unique_ptr<BrowsingDataFilterBuilder> origin_filter_builder( | |
2822 BrowsingDataFilterBuilder::Create( | |
2823 BrowsingDataFilterBuilder::WHITELIST)); | |
2824 origin_filter_builder->AddOrigin(origin); | |
2825 | |
2826 remover->RemoveWithFilterAndReply( | |
2827 base::Time(), base::Time::Max(), remove_mask, | |
2828 ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES, | |
2829 std::move(origin_filter_builder), observer); | |
2830 } else { | |
2831 // The second removal task is a no-op. | |
2832 observer->OnBrowsingDataRemoverDone(); | |
2833 } | |
2834 } | |
2835 | |
2836 base::FilePath ChromeContentBrowserClient::GetDefaultDownloadDirectory() { | 2736 base::FilePath ChromeContentBrowserClient::GetDefaultDownloadDirectory() { |
2837 return DownloadPrefs::GetDefaultDownloadDirectory(); | 2737 return DownloadPrefs::GetDefaultDownloadDirectory(); |
2838 } | 2738 } |
2839 | 2739 |
2840 std::string ChromeContentBrowserClient::GetDefaultDownloadName() { | 2740 std::string ChromeContentBrowserClient::GetDefaultDownloadName() { |
2841 return l10n_util::GetStringUTF8(IDS_DEFAULT_DOWNLOAD_FILENAME); | 2741 return l10n_util::GetStringUTF8(IDS_DEFAULT_DOWNLOAD_FILENAME); |
2842 } | 2742 } |
2843 | 2743 |
2844 base::FilePath ChromeContentBrowserClient::GetShaderDiskCacheDirectory() { | 2744 base::FilePath ChromeContentBrowserClient::GetShaderDiskCacheDirectory() { |
2845 base::FilePath user_data_dir; | 2745 base::FilePath user_data_dir; |
(...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3611 RedirectNonUINonIOBrowserThreadsToTaskScheduler() { | 3511 RedirectNonUINonIOBrowserThreadsToTaskScheduler() { |
3612 return variations::GetVariationParamValue( | 3512 return variations::GetVariationParamValue( |
3613 "BrowserScheduler", "RedirectNonUINonIOBrowserThreads") == "true"; | 3513 "BrowserScheduler", "RedirectNonUINonIOBrowserThreads") == "true"; |
3614 } | 3514 } |
3615 | 3515 |
3616 // static | 3516 // static |
3617 void ChromeContentBrowserClient::SetDefaultQuotaSettingsForTesting( | 3517 void ChromeContentBrowserClient::SetDefaultQuotaSettingsForTesting( |
3618 const storage::QuotaSettings* settings) { | 3518 const storage::QuotaSettings* settings) { |
3619 g_default_quota_settings = settings; | 3519 g_default_quota_settings = settings; |
3620 } | 3520 } |
OLD | NEW |