OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
7 #include "base/memory/ref_counted.h" | 7 #include "base/memory/ref_counted.h" |
8 #include "chrome/browser/browser_shutdown.h" | 8 #include "chrome/browser/browser_shutdown.h" |
9 #include "chrome/browser/prefs/session_startup_pref.h" | 9 #include "chrome/browser/prefs/session_startup_pref.h" |
10 #include "chrome/browser/profiles/profile_io_data.h" | 10 #include "chrome/browser/profiles/profile_io_data.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 | 22 |
23 namespace { | 23 namespace { |
24 | 24 |
25 void CookieDeleted(bool success) { | 25 void CookieDeleted(bool success) { |
26 DCHECK(success); | 26 DCHECK(success); |
27 } | 27 } |
28 | 28 |
29 class SessionDataDeleter | 29 class SessionDataDeleter |
30 : public base::RefCountedThreadSafe<SessionDataDeleter> { | 30 : public base::RefCountedThreadSafe<SessionDataDeleter> { |
31 public: | 31 public: |
32 SessionDataDeleter(quota::SpecialStoragePolicy* storage_policy, | 32 SessionDataDeleter(storage::SpecialStoragePolicy* storage_policy, |
33 bool delete_only_by_session_only_policy); | 33 bool delete_only_by_session_only_policy); |
34 | 34 |
35 void Run(content::StoragePartition* storage_partition, | 35 void Run(content::StoragePartition* storage_partition, |
36 ProfileIOData* profile_io_data); | 36 ProfileIOData* profile_io_data); |
37 | 37 |
38 private: | 38 private: |
39 friend class base::RefCountedThreadSafe<SessionDataDeleter>; | 39 friend class base::RefCountedThreadSafe<SessionDataDeleter>; |
40 ~SessionDataDeleter(); | 40 ~SessionDataDeleter(); |
41 | 41 |
42 // Deletes the local storage described by |usages| for origins which are | 42 // Deletes the local storage described by |usages| for origins which are |
43 // session-only. | 43 // session-only. |
44 void ClearSessionOnlyLocalStorage( | 44 void ClearSessionOnlyLocalStorage( |
45 content::StoragePartition* storage_partition, | 45 content::StoragePartition* storage_partition, |
46 const std::vector<content::LocalStorageUsageInfo>& usages); | 46 const std::vector<content::LocalStorageUsageInfo>& usages); |
47 | 47 |
48 // Deletes all cookies that are session only if | 48 // Deletes all cookies that are session only if |
49 // |delete_only_by_session_only_policy_| is false. Once completed or skipped, | 49 // |delete_only_by_session_only_policy_| is false. Once completed or skipped, |
50 // this arranges for DeleteSessionOnlyOriginCookies to be called with a list | 50 // this arranges for DeleteSessionOnlyOriginCookies to be called with a list |
51 // of all remaining cookies. | 51 // of all remaining cookies. |
52 void DeleteSessionCookiesOnIOThread(ProfileIOData* profile_io_data); | 52 void DeleteSessionCookiesOnIOThread(ProfileIOData* profile_io_data); |
53 | 53 |
54 // Called when all session-only cookies have been deleted. | 54 // Called when all session-only cookies have been deleted. |
55 void DeleteSessionCookiesDone(int num_deleted); | 55 void DeleteSessionCookiesDone(int num_deleted); |
56 | 56 |
57 // Deletes the cookies in |cookies| that are for origins which are | 57 // Deletes the cookies in |cookies| that are for origins which are |
58 // session-only. | 58 // session-only. |
59 void DeleteSessionOnlyOriginCookies(const net::CookieList& cookies); | 59 void DeleteSessionOnlyOriginCookies(const net::CookieList& cookies); |
60 | 60 |
61 scoped_refptr<net::CookieMonster> cookie_monster_; | 61 scoped_refptr<net::CookieMonster> cookie_monster_; |
62 scoped_refptr<quota::SpecialStoragePolicy> storage_policy_; | 62 scoped_refptr<storage::SpecialStoragePolicy> storage_policy_; |
63 const bool delete_only_by_session_only_policy_; | 63 const bool delete_only_by_session_only_policy_; |
64 | 64 |
65 DISALLOW_COPY_AND_ASSIGN(SessionDataDeleter); | 65 DISALLOW_COPY_AND_ASSIGN(SessionDataDeleter); |
66 }; | 66 }; |
67 | 67 |
68 SessionDataDeleter::SessionDataDeleter( | 68 SessionDataDeleter::SessionDataDeleter( |
69 quota::SpecialStoragePolicy* storage_policy, | 69 storage::SpecialStoragePolicy* storage_policy, |
70 bool delete_only_by_session_only_policy) | 70 bool delete_only_by_session_only_policy) |
71 : storage_policy_(storage_policy), | 71 : storage_policy_(storage_policy), |
72 delete_only_by_session_only_policy_(delete_only_by_session_only_policy) {} | 72 delete_only_by_session_only_policy_(delete_only_by_session_only_policy) { |
| 73 } |
73 | 74 |
74 void SessionDataDeleter::Run(content::StoragePartition* storage_partition, | 75 void SessionDataDeleter::Run(content::StoragePartition* storage_partition, |
75 ProfileIOData* profile_io_data) { | 76 ProfileIOData* profile_io_data) { |
76 if (storage_policy_ && storage_policy_->HasSessionOnlyOrigins()) { | 77 if (storage_policy_ && storage_policy_->HasSessionOnlyOrigins()) { |
77 storage_partition->GetDOMStorageContext()->GetLocalStorageUsage( | 78 storage_partition->GetDOMStorageContext()->GetLocalStorageUsage( |
78 base::Bind(&SessionDataDeleter::ClearSessionOnlyLocalStorage, | 79 base::Bind(&SessionDataDeleter::ClearSessionOnlyLocalStorage, |
79 this, | 80 this, |
80 storage_partition)); | 81 storage_partition)); |
81 } | 82 } |
82 content::BrowserThread::PostTask( | 83 content::BrowserThread::PostTask( |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 *CommandLine::ForCurrentProcess(), profile).type; | 155 *CommandLine::ForCurrentProcess(), profile).type; |
155 #endif | 156 #endif |
156 | 157 |
157 scoped_refptr<SessionDataDeleter> deleter( | 158 scoped_refptr<SessionDataDeleter> deleter( |
158 new SessionDataDeleter(profile->GetSpecialStoragePolicy(), | 159 new SessionDataDeleter(profile->GetSpecialStoragePolicy(), |
159 startup_pref_type == SessionStartupPref::LAST)); | 160 startup_pref_type == SessionStartupPref::LAST)); |
160 deleter->Run( | 161 deleter->Run( |
161 Profile::GetDefaultStoragePartition(profile), | 162 Profile::GetDefaultStoragePartition(profile), |
162 ProfileIOData::FromResourceContext(profile->GetResourceContext())); | 163 ProfileIOData::FromResourceContext(profile->GetResourceContext())); |
163 } | 164 } |
OLD | NEW |