OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "chrome/app/breakpad_mac.h" | 8 #include "chrome/app/breakpad_mac.h" |
9 #include "chrome/browser/browser_process.h" | 9 #include "chrome/browser/browser_process.h" |
10 #include "chrome/browser/character_encoding.h" | 10 #include "chrome/browser/character_encoding.h" |
(...skipping 26 matching lines...) Expand all Loading... |
37 #include "content/browser/plugin_process_host.h" | 37 #include "content/browser/plugin_process_host.h" |
38 #include "content/browser/renderer_host/browser_render_process_host.h" | 38 #include "content/browser/renderer_host/browser_render_process_host.h" |
39 #include "content/browser/renderer_host/render_view_host.h" | 39 #include "content/browser/renderer_host/render_view_host.h" |
40 #include "content/browser/resource_context.h" | 40 #include "content/browser/resource_context.h" |
41 #include "content/browser/site_instance.h" | 41 #include "content/browser/site_instance.h" |
42 #include "content/browser/tab_contents/tab_contents.h" | 42 #include "content/browser/tab_contents/tab_contents.h" |
43 #include "content/browser/worker_host/worker_process_host.h" | 43 #include "content/browser/worker_host/worker_process_host.h" |
44 #include "content/common/bindings_policy.h" | 44 #include "content/common/bindings_policy.h" |
45 #include "net/base/cookie_monster.h" | 45 #include "net/base/cookie_monster.h" |
46 #include "net/base/cookie_options.h" | 46 #include "net/base/cookie_options.h" |
47 #include "net/base/static_cookie_policy.h" | |
48 | 47 |
49 #if defined(OS_LINUX) | 48 #if defined(OS_LINUX) |
50 #include "base/linux_util.h" | 49 #include "base/linux_util.h" |
51 #include "chrome/browser/crash_handler_host_linux.h" | 50 #include "chrome/browser/crash_handler_host_linux.h" |
52 #endif // OS_LINUX | 51 #endif // OS_LINUX |
53 | 52 |
54 namespace { | 53 namespace { |
55 | 54 |
56 void InitRenderViewHostForExtensions(RenderViewHost* render_view_host) { | 55 void InitRenderViewHostForExtensions(RenderViewHost* render_view_host) { |
57 // Note that due to GetEffectiveURL(), even hosted apps will have a | 56 // Note that due to GetEffectiveURL(), even hosted apps will have a |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 if (!g_browser_process->safe_browsing_detection_service()) | 226 if (!g_browser_process->safe_browsing_detection_service()) |
228 command_line->AppendSwitch(switches::kDisableClientSidePhishingDetection); | 227 command_line->AppendSwitch(switches::kDisableClientSidePhishingDetection); |
229 } | 228 } |
230 } | 229 } |
231 | 230 |
232 std::string ChromeContentBrowserClient::GetApplicationLocale() { | 231 std::string ChromeContentBrowserClient::GetApplicationLocale() { |
233 return g_browser_process->GetApplicationLocale(); | 232 return g_browser_process->GetApplicationLocale(); |
234 } | 233 } |
235 | 234 |
236 bool ChromeContentBrowserClient::AllowAppCache( | 235 bool ChromeContentBrowserClient::AllowAppCache( |
237 const GURL& manifest_url, const content::ResourceContext& context) { | 236 const GURL& manifest_url, |
| 237 const content::ResourceContext& context) { |
238 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 238 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
239 ProfileIOData* io_data = | 239 ProfileIOData* io_data = |
240 reinterpret_cast<ProfileIOData*>(context.GetUserData(NULL)); | 240 reinterpret_cast<ProfileIOData*>(context.GetUserData(NULL)); |
| 241 // FIXME(jochen): get the correct top-level origin. |
241 ContentSetting setting = io_data->GetHostContentSettingsMap()-> | 242 ContentSetting setting = io_data->GetHostContentSettingsMap()-> |
242 GetContentSetting(manifest_url, CONTENT_SETTINGS_TYPE_COOKIES, ""); | 243 GetCookieContentSetting(manifest_url, manifest_url, true); |
243 DCHECK(setting != CONTENT_SETTING_DEFAULT); | 244 DCHECK(setting != CONTENT_SETTING_DEFAULT); |
244 return setting != CONTENT_SETTING_BLOCK; | 245 return setting != CONTENT_SETTING_BLOCK; |
245 } | 246 } |
246 | 247 |
247 bool ChromeContentBrowserClient::AllowGetCookie( | 248 bool ChromeContentBrowserClient::AllowGetCookie( |
248 const GURL& url, | 249 const GURL& url, |
249 const GURL& first_party, | 250 const GURL& first_party, |
250 const net::CookieList& cookie_list, | 251 const net::CookieList& cookie_list, |
251 const content::ResourceContext& context, | 252 const content::ResourceContext& context, |
252 int render_process_id, | 253 int render_process_id, |
253 int render_view_id) { | 254 int render_view_id) { |
254 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 255 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
255 bool allow = true; | |
256 ProfileIOData* io_data = | 256 ProfileIOData* io_data = |
257 reinterpret_cast<ProfileIOData*>(context.GetUserData(NULL)); | 257 reinterpret_cast<ProfileIOData*>(context.GetUserData(NULL)); |
258 if (io_data->GetHostContentSettingsMap()->BlockThirdPartyCookies()) { | 258 ContentSetting setting = io_data->GetHostContentSettingsMap()-> |
259 bool strict = CommandLine::ForCurrentProcess()->HasSwitch( | 259 GetCookieContentSetting(url, first_party, false); |
260 switches::kBlockReadingThirdPartyCookies); | 260 bool allow = setting == CONTENT_SETTING_ALLOW || |
261 net::StaticCookiePolicy policy(strict ? | 261 setting == CONTENT_SETTING_SESSION_ONLY; |
262 net::StaticCookiePolicy::BLOCK_ALL_THIRD_PARTY_COOKIES : | |
263 net::StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES); | |
264 int rv = policy.CanGetCookies(url, first_party); | |
265 DCHECK_NE(net::ERR_IO_PENDING, rv); | |
266 if (rv != net::OK) | |
267 allow = false; | |
268 } | |
269 | |
270 if (allow) { | |
271 ContentSetting setting = io_data->GetHostContentSettingsMap()-> | |
272 GetContentSetting(url, CONTENT_SETTINGS_TYPE_COOKIES, ""); | |
273 allow = setting == CONTENT_SETTING_ALLOW || | |
274 setting == CONTENT_SETTING_SESSION_ONLY; | |
275 } | |
276 | 262 |
277 BrowserThread::PostTask( | 263 BrowserThread::PostTask( |
278 BrowserThread::UI, FROM_HERE, | 264 BrowserThread::UI, FROM_HERE, |
279 NewRunnableFunction( | 265 NewRunnableFunction( |
280 &TabSpecificContentSettings::CookiesRead, | 266 &TabSpecificContentSettings::CookiesRead, |
281 render_process_id, render_view_id, url, cookie_list, !allow)); | 267 render_process_id, render_view_id, url, cookie_list, !allow)); |
282 return allow; | 268 return allow; |
283 } | 269 } |
284 | 270 |
285 bool ChromeContentBrowserClient::AllowSetCookie( | 271 bool ChromeContentBrowserClient::AllowSetCookie( |
286 const GURL& url, | 272 const GURL& url, |
287 const GURL& first_party, | 273 const GURL& first_party, |
288 const std::string& cookie_line, | 274 const std::string& cookie_line, |
289 const content::ResourceContext& context, | 275 const content::ResourceContext& context, |
290 int render_process_id, | 276 int render_process_id, |
291 int render_view_id, | 277 int render_view_id, |
292 net::CookieOptions* options) { | 278 net::CookieOptions* options) { |
293 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 279 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
294 bool allow = true; | |
295 ProfileIOData* io_data = | 280 ProfileIOData* io_data = |
296 reinterpret_cast<ProfileIOData*>(context.GetUserData(NULL)); | 281 reinterpret_cast<ProfileIOData*>(context.GetUserData(NULL)); |
297 if (io_data->GetHostContentSettingsMap()->BlockThirdPartyCookies()) { | 282 ContentSetting setting = io_data->GetHostContentSettingsMap()-> |
298 bool strict = CommandLine::ForCurrentProcess()->HasSwitch( | 283 GetCookieContentSetting(url, first_party, true); |
299 switches::kBlockReadingThirdPartyCookies); | |
300 net::StaticCookiePolicy policy(strict ? | |
301 net::StaticCookiePolicy::BLOCK_ALL_THIRD_PARTY_COOKIES : | |
302 net::StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES); | |
303 int rv = policy.CanSetCookie(url, first_party, cookie_line); | |
304 if (rv != net::OK) | |
305 allow = false; | |
306 } | |
307 | 284 |
308 if (allow) { | 285 if (setting == CONTENT_SETTING_SESSION_ONLY) |
309 ContentSetting setting = io_data->GetHostContentSettingsMap()-> | 286 options->set_force_session(); |
310 GetContentSetting(url, CONTENT_SETTINGS_TYPE_COOKIES, ""); | |
311 | 287 |
312 if (setting == CONTENT_SETTING_SESSION_ONLY) | 288 bool allow = setting == CONTENT_SETTING_ALLOW || |
313 options->set_force_session(); | 289 setting == CONTENT_SETTING_SESSION_ONLY; |
314 | |
315 allow = setting == CONTENT_SETTING_ALLOW || | |
316 setting == CONTENT_SETTING_SESSION_ONLY; | |
317 } | |
318 | 290 |
319 BrowserThread::PostTask( | 291 BrowserThread::PostTask( |
320 BrowserThread::UI, FROM_HERE, | 292 BrowserThread::UI, FROM_HERE, |
321 NewRunnableFunction( | 293 NewRunnableFunction( |
322 &TabSpecificContentSettings::CookieChanged, | 294 &TabSpecificContentSettings::CookieChanged, |
323 render_process_id, render_view_id, url, cookie_line, *options, | 295 render_process_id, render_view_id, url, cookie_line, *options, |
324 !allow)); | 296 !allow)); |
325 return allow; | 297 return allow; |
326 } | 298 } |
327 | 299 |
(...skipping 10 matching lines...) Expand all Loading... |
338 return PpapiCrashHandlerHostLinux::GetInstance()->GetDeathSignalSocket(); | 310 return PpapiCrashHandlerHostLinux::GetInstance()->GetDeathSignalSocket(); |
339 | 311 |
340 if (process_type == switches::kGpuProcess) | 312 if (process_type == switches::kGpuProcess) |
341 return GpuCrashHandlerHostLinux::GetInstance()->GetDeathSignalSocket(); | 313 return GpuCrashHandlerHostLinux::GetInstance()->GetDeathSignalSocket(); |
342 | 314 |
343 return -1; | 315 return -1; |
344 } | 316 } |
345 #endif | 317 #endif |
346 | 318 |
347 } // namespace chrome | 319 } // namespace chrome |
OLD | NEW |