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/content_settings/tab_specific_content_settings.h" | 5 #include "chrome/browser/content_settings/tab_specific_content_settings.h" |
6 | 6 |
7 #include <list> | 7 #include <list> |
8 | 8 |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
11 #include "chrome/browser/browsing_data_appcache_helper.h" | 11 #include "chrome/browser/browsing_data_appcache_helper.h" |
| 12 #include "chrome/browser/browsing_data_cookie_helper.h" |
12 #include "chrome/browser/browsing_data_database_helper.h" | 13 #include "chrome/browser/browsing_data_database_helper.h" |
13 #include "chrome/browser/browsing_data_file_system_helper.h" | 14 #include "chrome/browser/browsing_data_file_system_helper.h" |
14 #include "chrome/browser/browsing_data_indexed_db_helper.h" | 15 #include "chrome/browser/browsing_data_indexed_db_helper.h" |
15 #include "chrome/browser/browsing_data_local_storage_helper.h" | 16 #include "chrome/browser/browsing_data_local_storage_helper.h" |
16 #include "chrome/browser/content_settings/content_settings_details.h" | 17 #include "chrome/browser/content_settings/content_settings_details.h" |
17 #include "chrome/browser/content_settings/host_content_settings_map.h" | 18 #include "chrome/browser/content_settings/host_content_settings_map.h" |
18 #include "chrome/browser/cookies_tree_model.h" | 19 #include "chrome/browser/cookies_tree_model.h" |
19 #include "chrome/browser/profiles/profile.h" | 20 #include "chrome/browser/profiles/profile.h" |
20 #include "chrome/common/chrome_notification_types.h" | 21 #include "chrome/common/chrome_notification_types.h" |
21 #include "chrome/common/render_messages.h" | 22 #include "chrome/common/render_messages.h" |
22 #include "content/browser/renderer_host/render_process_host.h" | 23 #include "content/browser/renderer_host/render_process_host.h" |
23 #include "content/browser/renderer_host/render_view_host.h" | 24 #include "content/browser/renderer_host/render_view_host.h" |
24 #include "content/browser/tab_contents/navigation_details.h" | 25 #include "content/browser/tab_contents/navigation_details.h" |
25 #include "content/browser/tab_contents/tab_contents.h" | 26 #include "content/browser/tab_contents/tab_contents.h" |
26 #include "content/browser/tab_contents/tab_contents_delegate.h" | 27 #include "content/browser/tab_contents/tab_contents_delegate.h" |
27 #include "content/common/notification_service.h" | 28 #include "content/common/notification_service.h" |
28 #include "content/common/view_messages.h" | 29 #include "content/common/view_messages.h" |
29 #include "net/base/cookie_monster.h" | |
30 #include "webkit/fileapi/file_system_types.h" | 30 #include "webkit/fileapi/file_system_types.h" |
31 | 31 |
32 namespace { | 32 namespace { |
33 typedef std::list<TabSpecificContentSettings*> TabSpecificList; | 33 typedef std::list<TabSpecificContentSettings*> TabSpecificList; |
34 static base::LazyInstance<TabSpecificList> g_tab_specific( | 34 static base::LazyInstance<TabSpecificList> g_tab_specific( |
35 base::LINKER_INITIALIZED); | 35 base::LINKER_INITIALIZED); |
36 } | 36 } |
37 | 37 |
38 bool TabSpecificContentSettings::LocalSharedObjectsContainer::empty() const { | 38 bool TabSpecificContentSettings::LocalSharedObjectsContainer::empty() const { |
39 return cookies_->GetAllCookies().empty() && | 39 return appcaches_->empty() && |
40 appcaches_->empty() && | 40 cookies_->empty() && |
41 databases_->empty() && | 41 databases_->empty() && |
42 file_systems_->empty() && | 42 file_systems_->empty() && |
43 indexed_dbs_->empty() && | 43 indexed_dbs_->empty() && |
44 local_storages_->empty() && | 44 local_storages_->empty() && |
45 session_storages_->empty(); | 45 session_storages_->empty(); |
46 } | 46 } |
47 | 47 |
48 TabSpecificContentSettings::TabSpecificContentSettings(TabContents* tab) | 48 TabSpecificContentSettings::TabSpecificContentSettings(TabContents* tab) |
49 : TabContentsObserver(tab), | 49 : TabContentsObserver(tab), |
50 profile_(Profile::FromBrowserContext(tab->browser_context())), | 50 profile_(Profile::FromBrowserContext(tab->browser_context())), |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 NotificationService::NoDetails()); | 232 NotificationService::NoDetails()); |
233 } | 233 } |
234 } | 234 } |
235 | 235 |
236 void TabSpecificContentSettings::OnCookiesRead( | 236 void TabSpecificContentSettings::OnCookiesRead( |
237 const GURL& url, | 237 const GURL& url, |
238 const net::CookieList& cookie_list, | 238 const net::CookieList& cookie_list, |
239 bool blocked_by_policy) { | 239 bool blocked_by_policy) { |
240 if (cookie_list.empty()) | 240 if (cookie_list.empty()) |
241 return; | 241 return; |
242 LocalSharedObjectsContainer& container = blocked_by_policy ? | 242 if (blocked_by_policy) { |
243 blocked_local_shared_objects_ : allowed_local_shared_objects_; | 243 blocked_local_shared_objects_.cookies()->AddReadCookies( |
244 typedef net::CookieList::const_iterator cookie_iterator; | 244 url, cookie_list); |
245 for (cookie_iterator cookie = cookie_list.begin(); | 245 OnContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES, std::string()); |
246 cookie != cookie_list.end(); ++cookie) { | 246 } else { |
247 container.cookies()->SetCookieWithDetails(url, | 247 allowed_local_shared_objects_.cookies()->AddReadCookies( |
248 cookie->Name(), | 248 url, cookie_list); |
249 cookie->Value(), | 249 OnContentAccessed(CONTENT_SETTINGS_TYPE_COOKIES); |
250 cookie->Domain(), | |
251 cookie->Path(), | |
252 cookie->ExpiryDate(), | |
253 cookie->IsSecure(), | |
254 cookie->IsHttpOnly()); | |
255 } | 250 } |
256 if (blocked_by_policy) | |
257 OnContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES, std::string()); | |
258 else | |
259 OnContentAccessed(CONTENT_SETTINGS_TYPE_COOKIES); | |
260 } | 251 } |
261 | 252 |
262 void TabSpecificContentSettings::OnCookieChanged( | 253 void TabSpecificContentSettings::OnCookieChanged( |
263 const GURL& url, | 254 const GURL& url, |
264 const std::string& cookie_line, | 255 const std::string& cookie_line, |
265 const net::CookieOptions& options, | 256 const net::CookieOptions& options, |
266 bool blocked_by_policy) { | 257 bool blocked_by_policy) { |
267 if (blocked_by_policy) { | 258 if (blocked_by_policy) { |
268 blocked_local_shared_objects_.cookies()->SetCookieWithOptions( | 259 blocked_local_shared_objects_.cookies()->AddChangedCookie( |
269 url, cookie_line, options); | 260 url, cookie_line, options); |
270 OnContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES, std::string()); | 261 OnContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES, std::string()); |
271 } else { | 262 } else { |
272 allowed_local_shared_objects_.cookies()->SetCookieWithOptions( | 263 allowed_local_shared_objects_.cookies()->AddChangedCookie( |
273 url, cookie_line, options); | 264 url, cookie_line, options); |
274 OnContentAccessed(CONTENT_SETTINGS_TYPE_COOKIES); | 265 OnContentAccessed(CONTENT_SETTINGS_TYPE_COOKIES); |
275 } | 266 } |
276 } | 267 } |
277 | 268 |
278 void TabSpecificContentSettings::OnIndexedDBAccessed( | 269 void TabSpecificContentSettings::OnIndexedDBAccessed( |
279 const GURL& url, | 270 const GURL& url, |
280 const string16& description, | 271 const string16& description, |
281 bool blocked_by_policy) { | 272 bool blocked_by_policy) { |
282 if (blocked_by_policy) { | 273 if (blocked_by_policy) { |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 HostContentSettingsMap* map = profile->GetHostContentSettingsMap(); | 470 HostContentSettingsMap* map = profile->GetHostContentSettingsMap(); |
480 Send(new ViewMsg_SetDefaultContentSettings( | 471 Send(new ViewMsg_SetDefaultContentSettings( |
481 map->GetDefaultContentSettings())); | 472 map->GetDefaultContentSettings())); |
482 Send(new ViewMsg_SetContentSettingsForCurrentURL( | 473 Send(new ViewMsg_SetContentSettingsForCurrentURL( |
483 entry_url, map->GetContentSettings(entry_url, entry_url))); | 474 entry_url, map->GetContentSettings(entry_url, entry_url))); |
484 } | 475 } |
485 } | 476 } |
486 | 477 |
487 TabSpecificContentSettings::LocalSharedObjectsContainer:: | 478 TabSpecificContentSettings::LocalSharedObjectsContainer:: |
488 LocalSharedObjectsContainer(Profile* profile) | 479 LocalSharedObjectsContainer(Profile* profile) |
489 : cookies_(new net::CookieMonster(NULL, NULL)), | 480 : appcaches_(new CannedBrowsingDataAppCacheHelper(profile)), |
490 appcaches_(new CannedBrowsingDataAppCacheHelper(profile)), | 481 cookies_(new CannedBrowsingDataCookieHelper(profile)), |
491 databases_(new CannedBrowsingDataDatabaseHelper(profile)), | 482 databases_(new CannedBrowsingDataDatabaseHelper(profile)), |
492 file_systems_(new CannedBrowsingDataFileSystemHelper(profile)), | 483 file_systems_(new CannedBrowsingDataFileSystemHelper(profile)), |
493 indexed_dbs_(new CannedBrowsingDataIndexedDBHelper(profile)), | 484 indexed_dbs_(new CannedBrowsingDataIndexedDBHelper(profile)), |
494 local_storages_(new CannedBrowsingDataLocalStorageHelper(profile)), | 485 local_storages_(new CannedBrowsingDataLocalStorageHelper(profile)), |
495 session_storages_(new CannedBrowsingDataLocalStorageHelper(profile)) { | 486 session_storages_(new CannedBrowsingDataLocalStorageHelper(profile)) { |
496 cookies_->SetCookieableSchemes( | |
497 net::CookieMonster::kDefaultCookieableSchemes, | |
498 net::CookieMonster::kDefaultCookieableSchemesCount); | |
499 cookies_->SetKeepExpiredCookies(); | |
500 } | 487 } |
501 | 488 |
502 TabSpecificContentSettings::LocalSharedObjectsContainer:: | 489 TabSpecificContentSettings::LocalSharedObjectsContainer:: |
503 ~LocalSharedObjectsContainer() { | 490 ~LocalSharedObjectsContainer() { |
504 } | 491 } |
505 | 492 |
506 void TabSpecificContentSettings::LocalSharedObjectsContainer::Reset() { | 493 void TabSpecificContentSettings::LocalSharedObjectsContainer::Reset() { |
507 cookies_ = new net::CookieMonster(NULL, NULL); | |
508 cookies_->SetCookieableSchemes( | |
509 net::CookieMonster::kDefaultCookieableSchemes, | |
510 net::CookieMonster::kDefaultCookieableSchemesCount); | |
511 cookies_->SetKeepExpiredCookies(); | |
512 appcaches_->Reset(); | 494 appcaches_->Reset(); |
| 495 cookies_->Reset(); |
513 databases_->Reset(); | 496 databases_->Reset(); |
514 file_systems_->Reset(); | 497 file_systems_->Reset(); |
515 indexed_dbs_->Reset(); | 498 indexed_dbs_->Reset(); |
516 local_storages_->Reset(); | 499 local_storages_->Reset(); |
517 session_storages_->Reset(); | 500 session_storages_->Reset(); |
518 } | 501 } |
519 | 502 |
520 CookiesTreeModel* | 503 CookiesTreeModel* |
521 TabSpecificContentSettings::LocalSharedObjectsContainer::GetCookiesTreeModel() { | 504 TabSpecificContentSettings::LocalSharedObjectsContainer::GetCookiesTreeModel() { |
522 return new CookiesTreeModel(cookies_, | 505 return new CookiesTreeModel(cookies_->Clone(), |
523 databases_->Clone(), | 506 databases_->Clone(), |
524 local_storages_->Clone(), | 507 local_storages_->Clone(), |
525 session_storages_->Clone(), | 508 session_storages_->Clone(), |
526 appcaches_->Clone(), | 509 appcaches_->Clone(), |
527 indexed_dbs_->Clone(), | 510 indexed_dbs_->Clone(), |
528 file_systems_->Clone(), | 511 file_systems_->Clone(), |
529 true); | 512 true); |
530 } | 513 } |
OLD | NEW |