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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 | 67 |
68 SessionDataDeleter::SessionDataDeleter( | 68 SessionDataDeleter::SessionDataDeleter( |
69 storage::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 |
75 void SessionDataDeleter::Run(content::StoragePartition* storage_partition, | 75 void SessionDataDeleter::Run(content::StoragePartition* storage_partition, |
76 ProfileIOData* profile_io_data) { | 76 ProfileIOData* profile_io_data) { |
77 if (storage_policy_ && storage_policy_->HasSessionOnlyOrigins()) { | 77 if (storage_policy_.get() && storage_policy_->HasSessionOnlyOrigins()) { |
78 storage_partition->GetDOMStorageContext()->GetLocalStorageUsage( | 78 storage_partition->GetDOMStorageContext()->GetLocalStorageUsage( |
79 base::Bind(&SessionDataDeleter::ClearSessionOnlyLocalStorage, | 79 base::Bind(&SessionDataDeleter::ClearSessionOnlyLocalStorage, |
80 this, | 80 this, |
81 storage_partition)); | 81 storage_partition)); |
82 } | 82 } |
83 content::BrowserThread::PostTask( | 83 content::BrowserThread::PostTask( |
84 content::BrowserThread::IO, | 84 content::BrowserThread::IO, |
85 FROM_HERE, | 85 FROM_HERE, |
86 base::Bind(&SessionDataDeleter::DeleteSessionCookiesOnIOThread, | 86 base::Bind(&SessionDataDeleter::DeleteSessionCookiesOnIOThread, |
87 this, | 87 this, |
88 profile_io_data)); | 88 profile_io_data)); |
89 } | 89 } |
90 | 90 |
91 SessionDataDeleter::~SessionDataDeleter() {} | 91 SessionDataDeleter::~SessionDataDeleter() {} |
92 | 92 |
93 void SessionDataDeleter::ClearSessionOnlyLocalStorage( | 93 void SessionDataDeleter::ClearSessionOnlyLocalStorage( |
94 content::StoragePartition* storage_partition, | 94 content::StoragePartition* storage_partition, |
95 const std::vector<content::LocalStorageUsageInfo>& usages) { | 95 const std::vector<content::LocalStorageUsageInfo>& usages) { |
96 DCHECK(storage_policy_); | 96 DCHECK(storage_policy_.get()); |
97 DCHECK(storage_policy_->HasSessionOnlyOrigins()); | 97 DCHECK(storage_policy_->HasSessionOnlyOrigins()); |
98 for (size_t i = 0; i < usages.size(); ++i) { | 98 for (size_t i = 0; i < usages.size(); ++i) { |
99 const content::LocalStorageUsageInfo& usage = usages[i]; | 99 const content::LocalStorageUsageInfo& usage = usages[i]; |
100 if (!storage_policy_->IsStorageSessionOnly(usage.origin)) | 100 if (!storage_policy_->IsStorageSessionOnly(usage.origin)) |
101 continue; | 101 continue; |
102 storage_partition->GetDOMStorageContext()->DeleteLocalStorage(usage.origin); | 102 storage_partition->GetDOMStorageContext()->DeleteLocalStorage(usage.origin); |
103 } | 103 } |
104 } | 104 } |
105 | 105 |
106 void SessionDataDeleter::DeleteSessionCookiesOnIOThread( | 106 void SessionDataDeleter::DeleteSessionCookiesOnIOThread( |
(...skipping 11 matching lines...) Expand all Loading... |
118 } | 118 } |
119 } | 119 } |
120 | 120 |
121 void SessionDataDeleter::DeleteSessionCookiesDone(int num_deleted) { | 121 void SessionDataDeleter::DeleteSessionCookiesDone(int num_deleted) { |
122 cookie_monster_->GetAllCookiesAsync( | 122 cookie_monster_->GetAllCookiesAsync( |
123 base::Bind(&SessionDataDeleter::DeleteSessionOnlyOriginCookies, this)); | 123 base::Bind(&SessionDataDeleter::DeleteSessionOnlyOriginCookies, this)); |
124 } | 124 } |
125 | 125 |
126 void SessionDataDeleter::DeleteSessionOnlyOriginCookies( | 126 void SessionDataDeleter::DeleteSessionOnlyOriginCookies( |
127 const net::CookieList& cookies) { | 127 const net::CookieList& cookies) { |
128 if (!storage_policy_ || !storage_policy_->HasSessionOnlyOrigins()) | 128 if (!storage_policy_.get() || !storage_policy_->HasSessionOnlyOrigins()) |
129 return; | 129 return; |
130 | 130 |
131 for (net::CookieList::const_iterator it = cookies.begin(); | 131 for (net::CookieList::const_iterator it = cookies.begin(); |
132 it != cookies.end(); | 132 it != cookies.end(); |
133 ++it) { | 133 ++it) { |
134 GURL url = | 134 GURL url = |
135 net::cookie_util::CookieOriginToURL(it->Domain(), it->IsSecure()); | 135 net::cookie_util::CookieOriginToURL(it->Domain(), it->IsSecure()); |
136 if (!storage_policy_->IsStorageSessionOnly(url)) | 136 if (!storage_policy_->IsStorageSessionOnly(url)) |
137 continue; | 137 continue; |
138 cookie_monster_->DeleteCanonicalCookieAsync(*it, base::Bind(CookieDeleted)); | 138 cookie_monster_->DeleteCanonicalCookieAsync(*it, base::Bind(CookieDeleted)); |
(...skipping 16 matching lines...) Expand all Loading... |
155 *CommandLine::ForCurrentProcess(), profile).type; | 155 *CommandLine::ForCurrentProcess(), profile).type; |
156 #endif | 156 #endif |
157 | 157 |
158 scoped_refptr<SessionDataDeleter> deleter( | 158 scoped_refptr<SessionDataDeleter> deleter( |
159 new SessionDataDeleter(profile->GetSpecialStoragePolicy(), | 159 new SessionDataDeleter(profile->GetSpecialStoragePolicy(), |
160 startup_pref_type == SessionStartupPref::LAST)); | 160 startup_pref_type == SessionStartupPref::LAST)); |
161 deleter->Run( | 161 deleter->Run( |
162 Profile::GetDefaultStoragePartition(profile), | 162 Profile::GetDefaultStoragePartition(profile), |
163 ProfileIOData::FromResourceContext(profile->GetResourceContext())); | 163 ProfileIOData::FromResourceContext(profile->GetResourceContext())); |
164 } | 164 } |
OLD | NEW |