| 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 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 #include "components/task_scheduler_util/common/variations_util.h" | 154 #include "components/task_scheduler_util/common/variations_util.h" |
| 155 #include "components/translate/core/common/translate_switches.h" | 155 #include "components/translate/core/common/translate_switches.h" |
| 156 #include "components/url_formatter/url_fixer.h" | 156 #include "components/url_formatter/url_fixer.h" |
| 157 #include "components/variations/variations_associated_data.h" | 157 #include "components/variations/variations_associated_data.h" |
| 158 #include "components/version_info/version_info.h" | 158 #include "components/version_info/version_info.h" |
| 159 #include "content/public/browser/browser_child_process_host.h" | 159 #include "content/public/browser/browser_child_process_host.h" |
| 160 #include "content/public/browser/browser_main_parts.h" | 160 #include "content/public/browser/browser_main_parts.h" |
| 161 #include "content/public/browser/browser_ppapi_host.h" | 161 #include "content/public/browser/browser_ppapi_host.h" |
| 162 #include "content/public/browser/browser_thread.h" | 162 #include "content/public/browser/browser_thread.h" |
| 163 #include "content/public/browser/browser_url_handler.h" | 163 #include "content/public/browser/browser_url_handler.h" |
| 164 #include "content/public/browser/browsing_data_filter_builder.h" | |
| 165 #include "content/public/browser/browsing_data_remover.h" | 164 #include "content/public/browser/browsing_data_remover.h" |
| 166 #include "content/public/browser/child_process_data.h" | 165 #include "content/public/browser/child_process_data.h" |
| 167 #include "content/public/browser/child_process_security_policy.h" | 166 #include "content/public/browser/child_process_security_policy.h" |
| 168 #include "content/public/browser/client_certificate_delegate.h" | 167 #include "content/public/browser/client_certificate_delegate.h" |
| 169 #include "content/public/browser/navigation_handle.h" | 168 #include "content/public/browser/navigation_handle.h" |
| 170 #include "content/public/browser/navigation_throttle.h" | 169 #include "content/public/browser/navigation_throttle.h" |
| 171 #include "content/public/browser/render_frame_host.h" | 170 #include "content/public/browser/render_frame_host.h" |
| 172 #include "content/public/browser/render_process_host.h" | 171 #include "content/public/browser/render_process_host.h" |
| 173 #include "content/public/browser/render_view_host.h" | 172 #include "content/public/browser/render_view_host.h" |
| 174 #include "content/public/browser/resource_context.h" | 173 #include "content/public/browser/resource_context.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 188 #include "device/bluetooth/adapter_factory.h" | 187 #include "device/bluetooth/adapter_factory.h" |
| 189 #include "device/bluetooth/public/interfaces/adapter.mojom.h" | 188 #include "device/bluetooth/public/interfaces/adapter.mojom.h" |
| 190 #include "device/usb/public/interfaces/chooser_service.mojom.h" | 189 #include "device/usb/public/interfaces/chooser_service.mojom.h" |
| 191 #include "device/usb/public/interfaces/device_manager.mojom.h" | 190 #include "device/usb/public/interfaces/device_manager.mojom.h" |
| 192 #include "extensions/features/features.h" | 191 #include "extensions/features/features.h" |
| 193 #include "gpu/config/gpu_switches.h" | 192 #include "gpu/config/gpu_switches.h" |
| 194 #include "media/audio/audio_manager.h" | 193 #include "media/audio/audio_manager.h" |
| 195 #include "media/media_features.h" | 194 #include "media/media_features.h" |
| 196 #include "media/mojo/features.h" | 195 #include "media/mojo/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 713 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 922 } | 920 } |
| 923 | 921 |
| 924 bool GetDataSaverEnabledPref(const PrefService* prefs) { | 922 bool GetDataSaverEnabledPref(const PrefService* prefs) { |
| 925 // Enable data saver only when data saver pref is enabled and not part of | 923 // Enable data saver only when data saver pref is enabled and not part of |
| 926 // "Disabled" group of "SaveDataHeader" experiment. | 924 // "Disabled" group of "SaveDataHeader" experiment. |
| 927 return prefs->GetBoolean(prefs::kDataSaverEnabled) && | 925 return prefs->GetBoolean(prefs::kDataSaverEnabled) && |
| 928 base::FieldTrialList::FindFullName("SaveDataHeader") | 926 base::FieldTrialList::FindFullName("SaveDataHeader") |
| 929 .compare("Disabled"); | 927 .compare("Disabled"); |
| 930 } | 928 } |
| 931 | 929 |
| 932 // A BrowsingDataRemover::Observer that waits for |count| | |
| 933 // OnBrowsingDataRemoverDone() callbacks, translates them into | |
| 934 // one base::Closure, and then destroys itself. | |
| 935 class ClearSiteDataObserver : public content::BrowsingDataRemover::Observer { | |
| 936 public: | |
| 937 explicit ClearSiteDataObserver(content::BrowsingDataRemover* remover, | |
| 938 const base::Closure& callback, | |
| 939 int count) | |
| 940 : remover_(remover), callback_(callback), count_(count) { | |
| 941 remover_->AddObserver(this); | |
| 942 } | |
| 943 | |
| 944 ~ClearSiteDataObserver() override { remover_->RemoveObserver(this); } | |
| 945 | |
| 946 // BrowsingDataRemover::Observer. | |
| 947 void OnBrowsingDataRemoverDone() override { | |
| 948 DCHECK(count_); | |
| 949 if (--count_) | |
| 950 return; | |
| 951 | |
| 952 callback_.Run(); | |
| 953 delete this; | |
| 954 } | |
| 955 | |
| 956 private: | |
| 957 content::BrowsingDataRemover* remover_; | |
| 958 base::Closure callback_; | |
| 959 int count_; | |
| 960 }; | |
| 961 | |
| 962 WebContents* GetWebContents(int render_process_id, int render_frame_id) { | 930 WebContents* GetWebContents(int render_process_id, int render_frame_id) { |
| 963 RenderFrameHost* rfh = | 931 RenderFrameHost* rfh = |
| 964 RenderFrameHost::FromID(render_process_id, render_frame_id); | 932 RenderFrameHost::FromID(render_process_id, render_frame_id); |
| 965 return WebContents::FromRenderFrameHost(rfh); | 933 return WebContents::FromRenderFrameHost(rfh); |
| 966 } | 934 } |
| 967 | 935 |
| 968 #if BUILDFLAG(ENABLE_EXTENSIONS) | 936 #if BUILDFLAG(ENABLE_EXTENSIONS) |
| 969 // Returns true if there is is an extension with the same origin as | 937 // Returns true if there is is an extension with the same origin as |
| 970 // |source_origin| in |opener_render_process_id| with | 938 // |source_origin| in |opener_render_process_id| with |
| 971 // APIPermission::kBackground. | 939 // APIPermission::kBackground. |
| (...skipping 1761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2733 #else | 2701 #else |
| 2734 // Handler to rewrite chrome://newtab for InstantExtended. | 2702 // Handler to rewrite chrome://newtab for InstantExtended. |
| 2735 handler->AddHandlerPair(&search::HandleNewTabURLRewrite, | 2703 handler->AddHandlerPair(&search::HandleNewTabURLRewrite, |
| 2736 &search::HandleNewTabURLReverseRewrite); | 2704 &search::HandleNewTabURLReverseRewrite); |
| 2737 #endif | 2705 #endif |
| 2738 | 2706 |
| 2739 // chrome: & friends. | 2707 // chrome: & friends. |
| 2740 handler->AddHandlerPair(&HandleWebUI, &HandleWebUIReverse); | 2708 handler->AddHandlerPair(&HandleWebUI, &HandleWebUIReverse); |
| 2741 } | 2709 } |
| 2742 | 2710 |
| 2743 void ChromeContentBrowserClient::ClearSiteData( | |
| 2744 content::BrowserContext* browser_context, | |
| 2745 const url::Origin& origin, | |
| 2746 bool remove_cookies, | |
| 2747 bool remove_storage, | |
| 2748 bool remove_cache, | |
| 2749 const base::Closure& callback) { | |
| 2750 content::BrowsingDataRemover* remover = | |
| 2751 content::BrowserContext::GetBrowsingDataRemover(browser_context); | |
| 2752 | |
| 2753 // ClearSiteDataObserver deletes itself when callbacks from both removal | |
| 2754 // tasks are received. | |
| 2755 ClearSiteDataObserver* observer = | |
| 2756 new ClearSiteDataObserver(remover, callback, 2 /* number of tasks */); | |
| 2757 | |
| 2758 // Cookies and channel IDs are scoped to | |
| 2759 // a) eTLD+1 of |origin|'s host if |origin|'s host is a registrable domain | |
| 2760 // or a subdomain thereof | |
| 2761 // b) |origin|'s host exactly if it is an IP address or an internal hostname | |
| 2762 // (e.g. "localhost" or "fileserver"). | |
| 2763 if (remove_cookies) { | |
| 2764 std::string domain = GetDomainAndRegistry( | |
| 2765 origin.host(), | |
| 2766 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); | |
| 2767 | |
| 2768 if (domain.empty()) | |
| 2769 domain = origin.host(); // IP address or internal hostname. | |
| 2770 | |
| 2771 std::unique_ptr<BrowsingDataFilterBuilder> domain_filter_builder( | |
| 2772 BrowsingDataFilterBuilder::Create( | |
| 2773 BrowsingDataFilterBuilder::WHITELIST)); | |
| 2774 domain_filter_builder->AddRegisterableDomain(domain); | |
| 2775 | |
| 2776 remover->RemoveWithFilterAndReply( | |
| 2777 base::Time(), base::Time::Max(), | |
| 2778 content::BrowsingDataRemover::DATA_TYPE_COOKIES | | |
| 2779 content::BrowsingDataRemover::DATA_TYPE_CHANNEL_IDS | | |
| 2780 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA, | |
| 2781 ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES, | |
| 2782 std::move(domain_filter_builder), observer); | |
| 2783 } else { | |
| 2784 // The first removal task is a no-op. | |
| 2785 observer->OnBrowsingDataRemoverDone(); | |
| 2786 } | |
| 2787 | |
| 2788 // Delete origin-scoped data. | |
| 2789 int remove_mask = 0; | |
| 2790 if (remove_storage) | |
| 2791 remove_mask |= content::BrowsingDataRemover::DATA_TYPE_DOM_STORAGE; | |
| 2792 if (remove_cache) | |
| 2793 remove_mask |= content::BrowsingDataRemover::DATA_TYPE_CACHE; | |
| 2794 | |
| 2795 if (remove_mask) { | |
| 2796 std::unique_ptr<BrowsingDataFilterBuilder> origin_filter_builder( | |
| 2797 BrowsingDataFilterBuilder::Create( | |
| 2798 BrowsingDataFilterBuilder::WHITELIST)); | |
| 2799 origin_filter_builder->AddOrigin(origin); | |
| 2800 | |
| 2801 remover->RemoveWithFilterAndReply( | |
| 2802 base::Time(), base::Time::Max(), remove_mask, | |
| 2803 ChromeBrowsingDataRemoverDelegate::ALL_ORIGIN_TYPES, | |
| 2804 std::move(origin_filter_builder), observer); | |
| 2805 } else { | |
| 2806 // The second removal task is a no-op. | |
| 2807 observer->OnBrowsingDataRemoverDone(); | |
| 2808 } | |
| 2809 } | |
| 2810 | |
| 2811 base::FilePath ChromeContentBrowserClient::GetDefaultDownloadDirectory() { | 2711 base::FilePath ChromeContentBrowserClient::GetDefaultDownloadDirectory() { |
| 2812 return DownloadPrefs::GetDefaultDownloadDirectory(); | 2712 return DownloadPrefs::GetDefaultDownloadDirectory(); |
| 2813 } | 2713 } |
| 2814 | 2714 |
| 2815 std::string ChromeContentBrowserClient::GetDefaultDownloadName() { | 2715 std::string ChromeContentBrowserClient::GetDefaultDownloadName() { |
| 2816 return l10n_util::GetStringUTF8(IDS_DEFAULT_DOWNLOAD_FILENAME); | 2716 return l10n_util::GetStringUTF8(IDS_DEFAULT_DOWNLOAD_FILENAME); |
| 2817 } | 2717 } |
| 2818 | 2718 |
| 2819 base::FilePath ChromeContentBrowserClient::GetShaderDiskCacheDirectory() { | 2719 base::FilePath ChromeContentBrowserClient::GetShaderDiskCacheDirectory() { |
| 2820 base::FilePath user_data_dir; | 2720 base::FilePath user_data_dir; |
| (...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3582 RedirectNonUINonIOBrowserThreadsToTaskScheduler() { | 3482 RedirectNonUINonIOBrowserThreadsToTaskScheduler() { |
| 3583 return variations::GetVariationParamValue( | 3483 return variations::GetVariationParamValue( |
| 3584 "BrowserScheduler", "RedirectNonUINonIOBrowserThreads") == "true"; | 3484 "BrowserScheduler", "RedirectNonUINonIOBrowserThreads") == "true"; |
| 3585 } | 3485 } |
| 3586 | 3486 |
| 3587 // static | 3487 // static |
| 3588 void ChromeContentBrowserClient::SetDefaultQuotaSettingsForTesting( | 3488 void ChromeContentBrowserClient::SetDefaultQuotaSettingsForTesting( |
| 3589 const storage::QuotaSettings* settings) { | 3489 const storage::QuotaSettings* settings) { |
| 3590 g_default_quota_settings = settings; | 3490 g_default_quota_settings = settings; |
| 3591 } | 3491 } |
| OLD | NEW |