Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: chrome/browser/chrome_content_browser_client.cc

Issue 2825003002: Rewrite base::Bind to base::BindOnce with base_bind_rewriters in //chrome/browser/{a,b,c,d,e,f,g}* (Closed)
Patch Set: split rest of changes to 3 CLs Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 1037 matching lines...) Expand 10 before | Expand all | Expand 10 after
1048 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1048 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1049 1049
1050 // This object is guaranteed to outlive all threads so we don't have to 1050 // This object is guaranteed to outlive all threads so we don't have to
1051 // worry about the lack of refcounting and can just post as Unretained. 1051 // worry about the lack of refcounting and can just post as Unretained.
1052 // 1052 //
1053 // The common case is that this function is called early in Chrome startup 1053 // The common case is that this function is called early in Chrome startup
1054 // before any threads are created (it will also be called later if the user 1054 // before any threads are created (it will also be called later if the user
1055 // changes the pref). In this case, there will be no threads created and 1055 // changes the pref). In this case, there will be no threads created and
1056 // posting will fail. When there are no threads, we can just set the string 1056 // posting will fail. When there are no threads, we can just set the string
1057 // without worrying about threadsafety. 1057 // without worrying about threadsafety.
1058 if (!BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 1058 if (!BrowserThread::PostTask(
1059 base::Bind(&SetApplicationLocaleOnIOThread, locale))) { 1059 BrowserThread::IO, FROM_HERE,
1060 base::BindOnce(&SetApplicationLocaleOnIOThread, locale))) {
1060 g_io_thread_application_locale.Get() = locale; 1061 g_io_thread_application_locale.Get() = locale;
1061 } 1062 }
1062 } 1063 }
1063 1064
1064 content::BrowserMainParts* ChromeContentBrowserClient::CreateBrowserMainParts( 1065 content::BrowserMainParts* ChromeContentBrowserClient::CreateBrowserMainParts(
1065 const content::MainFunctionParams& parameters) { 1066 const content::MainFunctionParams& parameters) {
1066 ChromeBrowserMainParts* main_parts; 1067 ChromeBrowserMainParts* main_parts;
1067 // Construct the Main browser parts based on the OS type. 1068 // Construct the Main browser parts based on the OS type.
1068 #if defined(OS_WIN) 1069 #if defined(OS_WIN)
1069 main_parts = new ChromeBrowserMainPartsWin(parameters); 1070 main_parts = new ChromeBrowserMainPartsWin(parameters);
(...skipping 1012 matching lines...) Expand 10 before | Expand all | Expand 10 after
2082 2083
2083 // Check if cookies are allowed. 2084 // Check if cookies are allowed.
2084 bool allow_serviceworker = 2085 bool allow_serviceworker =
2085 io_data->GetCookieSettings()->IsCookieAccessAllowed(scope, 2086 io_data->GetCookieSettings()->IsCookieAccessAllowed(scope,
2086 first_party_url); 2087 first_party_url);
2087 // Record access to database for potential display in UI. 2088 // Record access to database for potential display in UI.
2088 // Only post the task if this is for a specific tab. 2089 // Only post the task if this is for a specific tab.
2089 if (!wc_getter.is_null()) { 2090 if (!wc_getter.is_null()) {
2090 BrowserThread::PostTask( 2091 BrowserThread::PostTask(
2091 BrowserThread::UI, FROM_HERE, 2092 BrowserThread::UI, FROM_HERE,
2092 base::Bind(&TabSpecificContentSettings::ServiceWorkerAccessed, 2093 base::BindOnce(&TabSpecificContentSettings::ServiceWorkerAccessed,
2093 wc_getter, scope, !allow_javascript, !allow_serviceworker)); 2094 wc_getter, scope, !allow_javascript,
2095 !allow_serviceworker));
2094 } 2096 }
2095 return allow_javascript && allow_serviceworker; 2097 return allow_javascript && allow_serviceworker;
2096 } 2098 }
2097 2099
2098 bool ChromeContentBrowserClient::AllowGetCookie( 2100 bool ChromeContentBrowserClient::AllowGetCookie(
2099 const GURL& url, 2101 const GURL& url,
2100 const GURL& first_party, 2102 const GURL& first_party,
2101 const net::CookieList& cookie_list, 2103 const net::CookieList& cookie_list,
2102 content::ResourceContext* context, 2104 content::ResourceContext* context,
2103 int render_process_id, 2105 int render_process_id,
2104 int render_frame_id) { 2106 int render_frame_id) {
2105 DCHECK_CURRENTLY_ON(BrowserThread::IO); 2107 DCHECK_CURRENTLY_ON(BrowserThread::IO);
2106 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context); 2108 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context);
2107 bool allow = 2109 bool allow =
2108 io_data->GetCookieSettings()->IsCookieAccessAllowed(url, first_party); 2110 io_data->GetCookieSettings()->IsCookieAccessAllowed(url, first_party);
2109 2111
2110 base::Callback<content::WebContents*(void)> wc_getter = 2112 base::Callback<content::WebContents*(void)> wc_getter =
2111 base::Bind(&GetWebContents, render_process_id, render_frame_id); 2113 base::Bind(&GetWebContents, render_process_id, render_frame_id);
2112 BrowserThread::PostTask( 2114 BrowserThread::PostTask(
2113 BrowserThread::UI, FROM_HERE, 2115 BrowserThread::UI, FROM_HERE,
2114 base::Bind(&TabSpecificContentSettings::CookiesRead, wc_getter, url, 2116 base::BindOnce(&TabSpecificContentSettings::CookiesRead, wc_getter, url,
2115 first_party, cookie_list, !allow)); 2117 first_party, cookie_list, !allow));
2116 return allow; 2118 return allow;
2117 } 2119 }
2118 2120
2119 bool ChromeContentBrowserClient::AllowSetCookie( 2121 bool ChromeContentBrowserClient::AllowSetCookie(
2120 const GURL& url, 2122 const GURL& url,
2121 const GURL& first_party, 2123 const GURL& first_party,
2122 const std::string& cookie_line, 2124 const std::string& cookie_line,
2123 content::ResourceContext* context, 2125 content::ResourceContext* context,
2124 int render_process_id, 2126 int render_process_id,
2125 int render_frame_id, 2127 int render_frame_id,
2126 const net::CookieOptions& options) { 2128 const net::CookieOptions& options) {
2127 DCHECK_CURRENTLY_ON(BrowserThread::IO); 2129 DCHECK_CURRENTLY_ON(BrowserThread::IO);
2128 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context); 2130 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context);
2129 content_settings::CookieSettings* cookie_settings = 2131 content_settings::CookieSettings* cookie_settings =
2130 io_data->GetCookieSettings(); 2132 io_data->GetCookieSettings();
2131 bool allow = cookie_settings->IsCookieAccessAllowed(url, first_party); 2133 bool allow = cookie_settings->IsCookieAccessAllowed(url, first_party);
2132 2134
2133 base::Callback<content::WebContents*(void)> wc_getter = 2135 base::Callback<content::WebContents*(void)> wc_getter =
2134 base::Bind(&GetWebContents, render_process_id, render_frame_id); 2136 base::Bind(&GetWebContents, render_process_id, render_frame_id);
2135 BrowserThread::PostTask( 2137 BrowserThread::PostTask(
2136 BrowserThread::UI, FROM_HERE, 2138 BrowserThread::UI, FROM_HERE,
2137 base::Bind(&TabSpecificContentSettings::CookieChanged, wc_getter, url, 2139 base::BindOnce(&TabSpecificContentSettings::CookieChanged, wc_getter, url,
2138 first_party, cookie_line, options, !allow)); 2140 first_party, cookie_line, options, !allow));
2139 return allow; 2141 return allow;
2140 } 2142 }
2141 2143
2142 bool ChromeContentBrowserClient::AllowSaveLocalState( 2144 bool ChromeContentBrowserClient::AllowSaveLocalState(
2143 content::ResourceContext* context) { 2145 content::ResourceContext* context) {
2144 DCHECK_CURRENTLY_ON(BrowserThread::IO); 2146 DCHECK_CURRENTLY_ON(BrowserThread::IO);
2145 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context); 2147 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context);
2146 content_settings::CookieSettings* cookie_settings = 2148 content_settings::CookieSettings* cookie_settings =
2147 io_data->GetCookieSettings(); 2149 io_data->GetCookieSettings();
2148 ContentSetting setting = cookie_settings->GetDefaultCookieSetting(NULL); 2150 ContentSetting setting = cookie_settings->GetDefaultCookieSetting(NULL);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2191 if (extensions::WebViewRendererState::GetInstance()->IsGuest(i->first)) 2193 if (extensions::WebViewRendererState::GetInstance()->IsGuest(i->first))
2192 has_web_view_guest = true; 2194 has_web_view_guest = true;
2193 } 2195 }
2194 if (!has_web_view_guest) { 2196 if (!has_web_view_guest) {
2195 FileSystemAccessed(url, render_frames, callback, allow); 2197 FileSystemAccessed(url, render_frames, callback, allow);
2196 return; 2198 return;
2197 } 2199 }
2198 DCHECK_EQ(1U, process_map.size()); 2200 DCHECK_EQ(1U, process_map.size());
2199 it = process_map.begin(); 2201 it = process_map.begin();
2200 BrowserThread::PostTask( 2202 BrowserThread::PostTask(
2201 BrowserThread::UI, 2203 BrowserThread::UI, FROM_HERE,
2202 FROM_HERE, 2204 base::BindOnce(
2203 base::Bind(&ChromeContentBrowserClient:: 2205 &ChromeContentBrowserClient::RequestFileSystemPermissionOnUIThread,
2204 RequestFileSystemPermissionOnUIThread, 2206 it->first, it->second, url, allow,
2205 it->first, 2207 base::Bind(&ChromeContentBrowserClient::FileSystemAccessed,
2206 it->second, 2208 weak_factory_.GetWeakPtr(), url, render_frames,
2207 url, 2209 callback)));
2208 allow,
2209 base::Bind(&ChromeContentBrowserClient::FileSystemAccessed,
2210 weak_factory_.GetWeakPtr(),
2211 url,
2212 render_frames,
2213 callback)));
2214 } 2210 }
2215 2211
2216 void ChromeContentBrowserClient::RequestFileSystemPermissionOnUIThread( 2212 void ChromeContentBrowserClient::RequestFileSystemPermissionOnUIThread(
2217 int render_process_id, 2213 int render_process_id,
2218 int render_frame_id, 2214 int render_frame_id,
2219 const GURL& url, 2215 const GURL& url,
2220 bool allowed_by_default, 2216 bool allowed_by_default,
2221 const base::Callback<void(bool)>& callback) { 2217 const base::Callback<void(bool)>& callback) {
2222 DCHECK_CURRENTLY_ON(BrowserThread::UI); 2218 DCHECK_CURRENTLY_ON(BrowserThread::UI);
2223 extensions::WebViewPermissionHelper* web_view_permission_helper = 2219 extensions::WebViewPermissionHelper* web_view_permission_helper =
2224 extensions::WebViewPermissionHelper::FromFrameID( 2220 extensions::WebViewPermissionHelper::FromFrameID(
2225 render_process_id, render_frame_id); 2221 render_process_id, render_frame_id);
2226 web_view_permission_helper->RequestFileSystemPermission(url, 2222 web_view_permission_helper->RequestFileSystemPermission(url,
2227 allowed_by_default, 2223 allowed_by_default,
2228 callback); 2224 callback);
2229 } 2225 }
2230 #endif 2226 #endif
2231 2227
2232 void ChromeContentBrowserClient::FileSystemAccessed( 2228 void ChromeContentBrowserClient::FileSystemAccessed(
2233 const GURL& url, 2229 const GURL& url,
2234 const std::vector<std::pair<int, int> >& render_frames, 2230 const std::vector<std::pair<int, int> >& render_frames,
2235 base::Callback<void(bool)> callback, 2231 base::Callback<void(bool)> callback,
2236 bool allow) { 2232 bool allow) {
2237 // Record access to file system for potential display in UI. 2233 // Record access to file system for potential display in UI.
2238 std::vector<std::pair<int, int> >::const_iterator i; 2234 std::vector<std::pair<int, int> >::const_iterator i;
2239 for (i = render_frames.begin(); i != render_frames.end(); ++i) { 2235 for (i = render_frames.begin(); i != render_frames.end(); ++i) {
2240 BrowserThread::PostTask( 2236 BrowserThread::PostTask(
2241 BrowserThread::UI, 2237 BrowserThread::UI, FROM_HERE,
2242 FROM_HERE, 2238 base::BindOnce(&TabSpecificContentSettings::FileSystemAccessed,
2243 base::Bind(&TabSpecificContentSettings::FileSystemAccessed, 2239 i->first, i->second, url, !allow));
2244 i->first, i->second, url, !allow));
2245 } 2240 }
2246 callback.Run(allow); 2241 callback.Run(allow);
2247 } 2242 }
2248 2243
2249 bool ChromeContentBrowserClient::AllowWorkerIndexedDB( 2244 bool ChromeContentBrowserClient::AllowWorkerIndexedDB(
2250 const GURL& url, 2245 const GURL& url,
2251 const base::string16& name, 2246 const base::string16& name,
2252 content::ResourceContext* context, 2247 content::ResourceContext* context,
2253 const std::vector<std::pair<int, int> >& render_frames) { 2248 const std::vector<std::pair<int, int> >& render_frames) {
2254 DCHECK_CURRENTLY_ON(BrowserThread::IO); 2249 DCHECK_CURRENTLY_ON(BrowserThread::IO);
2255 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context); 2250 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context);
2256 content_settings::CookieSettings* cookie_settings = 2251 content_settings::CookieSettings* cookie_settings =
2257 io_data->GetCookieSettings(); 2252 io_data->GetCookieSettings();
2258 bool allow = cookie_settings->IsCookieAccessAllowed(url, url); 2253 bool allow = cookie_settings->IsCookieAccessAllowed(url, url);
2259 2254
2260 // Record access to IndexedDB for potential display in UI. 2255 // Record access to IndexedDB for potential display in UI.
2261 std::vector<std::pair<int, int> >::const_iterator i; 2256 std::vector<std::pair<int, int> >::const_iterator i;
2262 for (i = render_frames.begin(); i != render_frames.end(); ++i) { 2257 for (i = render_frames.begin(); i != render_frames.end(); ++i) {
2263 BrowserThread::PostTask( 2258 BrowserThread::PostTask(
2264 BrowserThread::UI, FROM_HERE, 2259 BrowserThread::UI, FROM_HERE,
2265 base::Bind(&TabSpecificContentSettings::IndexedDBAccessed, 2260 base::BindOnce(&TabSpecificContentSettings::IndexedDBAccessed, i->first,
2266 i->first, i->second, url, name, !allow)); 2261 i->second, url, name, !allow));
2267 } 2262 }
2268 2263
2269 return allow; 2264 return allow;
2270 } 2265 }
2271 2266
2272 #if BUILDFLAG(ENABLE_WEBRTC) 2267 #if BUILDFLAG(ENABLE_WEBRTC)
2273 bool ChromeContentBrowserClient::AllowWebRTCIdentityCache( 2268 bool ChromeContentBrowserClient::AllowWebRTCIdentityCache(
2274 const GURL& url, 2269 const GURL& url,
2275 const GURL& first_party_url, 2270 const GURL& first_party_url,
2276 content::ResourceContext* context) { 2271 content::ResourceContext* context) {
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
2537 2532
2538 HostContentSettingsMap* content_settings = 2533 HostContentSettingsMap* content_settings =
2539 ProfileIOData::FromResourceContext(context)->GetHostContentSettingsMap(); 2534 ProfileIOData::FromResourceContext(context)->GetHostContentSettingsMap();
2540 2535
2541 #if BUILDFLAG(ENABLE_PLUGINS) 2536 #if BUILDFLAG(ENABLE_PLUGINS)
2542 if (FlashDownloadInterception::ShouldStopFlashDownloadAction( 2537 if (FlashDownloadInterception::ShouldStopFlashDownloadAction(
2543 content_settings, opener_top_level_frame_url, target_url, 2538 content_settings, opener_top_level_frame_url, target_url,
2544 user_gesture)) { 2539 user_gesture)) {
2545 BrowserThread::PostTask( 2540 BrowserThread::PostTask(
2546 BrowserThread::UI, FROM_HERE, 2541 BrowserThread::UI, FROM_HERE,
2547 base::Bind(&HandleFlashDownloadActionOnUIThread, 2542 base::BindOnce(&HandleFlashDownloadActionOnUIThread,
2548 opener_render_process_id, opener_render_frame_id, 2543 opener_render_process_id, opener_render_frame_id,
2549 opener_top_level_frame_url)); 2544 opener_top_level_frame_url));
2550 return false; 2545 return false;
2551 } 2546 }
2552 #endif 2547 #endif
2553 2548
2554 BlockedWindowParams blocked_params( 2549 BlockedWindowParams blocked_params(
2555 target_url, referrer, frame_name, disposition, features, user_gesture, 2550 target_url, referrer, frame_name, disposition, features, user_gesture,
2556 opener_suppressed, opener_render_process_id, opener_render_frame_id); 2551 opener_suppressed, opener_render_process_id, opener_render_frame_id);
2557 2552
2558 if (!user_gesture && 2553 if (!user_gesture &&
2559 !base::CommandLine::ForCurrentProcess()->HasSwitch( 2554 !base::CommandLine::ForCurrentProcess()->HasSwitch(
2560 switches::kDisablePopupBlocking)) { 2555 switches::kDisablePopupBlocking)) {
2561 if (content_settings->GetContentSetting(opener_top_level_frame_url, 2556 if (content_settings->GetContentSetting(opener_top_level_frame_url,
2562 opener_top_level_frame_url, 2557 opener_top_level_frame_url,
2563 CONTENT_SETTINGS_TYPE_POPUPS, 2558 CONTENT_SETTINGS_TYPE_POPUPS,
2564 std::string()) != 2559 std::string()) !=
2565 CONTENT_SETTING_ALLOW) { 2560 CONTENT_SETTING_ALLOW) {
2566 BrowserThread::PostTask(BrowserThread::UI, 2561 BrowserThread::PostTask(
2567 FROM_HERE, 2562 BrowserThread::UI, FROM_HERE,
2568 base::Bind(&HandleBlockedPopupOnUIThread, 2563 base::BindOnce(&HandleBlockedPopupOnUIThread, blocked_params));
2569 blocked_params));
2570 return false; 2564 return false;
2571 } 2565 }
2572 } 2566 }
2573 2567
2574 #if defined(OS_ANDROID) 2568 #if defined(OS_ANDROID)
2575 if (SingleTabModeTabHelper::IsRegistered(opener_render_process_id, 2569 if (SingleTabModeTabHelper::IsRegistered(opener_render_process_id,
2576 opener_render_frame_id)) { 2570 opener_render_frame_id)) {
2577 BrowserThread::PostTask(BrowserThread::UI, 2571 BrowserThread::PostTask(BrowserThread::UI,
2578 FROM_HERE, 2572 FROM_HERE,
2579 base::Bind(&HandleSingleTabModeBlockOnUIThread, 2573 base::Bind(&HandleSingleTabModeBlockOnUIThread,
(...skipping 1066 matching lines...) Expand 10 before | Expand all | Expand 10 after
3646 RedirectNonUINonIOBrowserThreadsToTaskScheduler() { 3640 RedirectNonUINonIOBrowserThreadsToTaskScheduler() {
3647 return variations::GetVariationParamValue( 3641 return variations::GetVariationParamValue(
3648 "BrowserScheduler", "RedirectNonUINonIOBrowserThreads") == "true"; 3642 "BrowserScheduler", "RedirectNonUINonIOBrowserThreads") == "true";
3649 } 3643 }
3650 3644
3651 // static 3645 // static
3652 void ChromeContentBrowserClient::SetDefaultQuotaSettingsForTesting( 3646 void ChromeContentBrowserClient::SetDefaultQuotaSettingsForTesting(
3653 const storage::QuotaSettings* settings) { 3647 const storage::QuotaSettings* settings) {
3654 g_default_quota_settings = settings; 3648 g_default_quota_settings = settings;
3655 } 3649 }
OLDNEW
« no previous file with comments | « chrome/browser/chrome_browser_main_posix.cc ('k') | chrome/browser/chrome_plugin_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698