| 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/browsing_data_database_helper.h" | 5 #include "chrome/browser/browsing_data_database_helper.h" |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 } | 56 } |
| 57 | 57 |
| 58 void BrowsingDataDatabaseHelper::StartFetching( | 58 void BrowsingDataDatabaseHelper::StartFetching( |
| 59 Callback1<const std::vector<DatabaseInfo>& >::Type* callback) { | 59 Callback1<const std::vector<DatabaseInfo>& >::Type* callback) { |
| 60 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 60 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 61 DCHECK(!is_fetching_); | 61 DCHECK(!is_fetching_); |
| 62 DCHECK(callback); | 62 DCHECK(callback); |
| 63 is_fetching_ = true; | 63 is_fetching_ = true; |
| 64 database_info_.clear(); | 64 database_info_.clear(); |
| 65 completion_callback_.reset(callback); | 65 completion_callback_.reset(callback); |
| 66 BrowserThread::PostTask(BrowserThread::WEBKIT, FROM_HERE, NewRunnableMethod( | 66 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, NewRunnableMethod( |
| 67 this, &BrowsingDataDatabaseHelper::FetchDatabaseInfoInWebKitThread)); | 67 this, &BrowsingDataDatabaseHelper::FetchDatabaseInfoOnFileThread)); |
| 68 } | 68 } |
| 69 | 69 |
| 70 void BrowsingDataDatabaseHelper::CancelNotification() { | 70 void BrowsingDataDatabaseHelper::CancelNotification() { |
| 71 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 71 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 72 completion_callback_.reset(NULL); | 72 completion_callback_.reset(NULL); |
| 73 } | 73 } |
| 74 | 74 |
| 75 void BrowsingDataDatabaseHelper::DeleteDatabase(const std::string& origin, | 75 void BrowsingDataDatabaseHelper::DeleteDatabase(const std::string& origin, |
| 76 const std::string& name) { | 76 const std::string& name) { |
| 77 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 77 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 78 BrowserThread::PostTask(BrowserThread::WEBKIT, FROM_HERE, NewRunnableMethod( | 78 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, NewRunnableMethod( |
| 79 this, &BrowsingDataDatabaseHelper::DeleteDatabaseInWebKitThread, origin, | 79 this, &BrowsingDataDatabaseHelper::DeleteDatabaseOnFileThread, origin, |
| 80 name)); | 80 name)); |
| 81 } | 81 } |
| 82 | 82 |
| 83 void BrowsingDataDatabaseHelper::FetchDatabaseInfoInWebKitThread() { | 83 void BrowsingDataDatabaseHelper::FetchDatabaseInfoOnFileThread() { |
| 84 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 84 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| 85 std::vector<webkit_database::OriginInfo> origins_info; | 85 std::vector<webkit_database::OriginInfo> origins_info; |
| 86 if (tracker_.get() && tracker_->GetAllOriginsInfo(&origins_info)) { | 86 if (tracker_.get() && tracker_->GetAllOriginsInfo(&origins_info)) { |
| 87 for (std::vector<webkit_database::OriginInfo>::const_iterator ori = | 87 for (std::vector<webkit_database::OriginInfo>::const_iterator ori = |
| 88 origins_info.begin(); ori != origins_info.end(); ++ori) { | 88 origins_info.begin(); ori != origins_info.end(); ++ori) { |
| 89 const std::string origin_identifier(UTF16ToUTF8(ori->GetOrigin())); | 89 const std::string origin_identifier(UTF16ToUTF8(ori->GetOrigin())); |
| 90 if (StartsWithASCII(origin_identifier, | 90 if (StartsWithASCII(origin_identifier, |
| 91 std::string(chrome::kExtensionScheme), | 91 std::string(chrome::kExtensionScheme), |
| 92 true)) { | 92 true)) { |
| 93 // Extension state is not considered browsing data. | 93 // Extension state is not considered browsing data. |
| 94 continue; | 94 continue; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 // Note: completion_callback_ mutates only in the UI thread, so it's safe to | 126 // Note: completion_callback_ mutates only in the UI thread, so it's safe to |
| 127 // test it here. | 127 // test it here. |
| 128 if (completion_callback_ != NULL) { | 128 if (completion_callback_ != NULL) { |
| 129 completion_callback_->Run(database_info_); | 129 completion_callback_->Run(database_info_); |
| 130 completion_callback_.reset(); | 130 completion_callback_.reset(); |
| 131 } | 131 } |
| 132 is_fetching_ = false; | 132 is_fetching_ = false; |
| 133 database_info_.clear(); | 133 database_info_.clear(); |
| 134 } | 134 } |
| 135 | 135 |
| 136 void BrowsingDataDatabaseHelper::DeleteDatabaseInWebKitThread( | 136 void BrowsingDataDatabaseHelper::DeleteDatabaseOnFileThread( |
| 137 const std::string& origin, | 137 const std::string& origin, |
| 138 const std::string& name) { | 138 const std::string& name) { |
| 139 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 139 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| 140 if (!tracker_.get()) | 140 if (!tracker_.get()) |
| 141 return; | 141 return; |
| 142 tracker_->DeleteDatabase(UTF8ToUTF16(origin), UTF8ToUTF16(name), NULL); | 142 tracker_->DeleteDatabase(UTF8ToUTF16(origin), UTF8ToUTF16(name), NULL); |
| 143 } | 143 } |
| 144 | 144 |
| 145 CannedBrowsingDataDatabaseHelper::PendingDatabaseInfo::PendingDatabaseInfo() {} | 145 CannedBrowsingDataDatabaseHelper::PendingDatabaseInfo::PendingDatabaseInfo() {} |
| 146 | 146 |
| 147 CannedBrowsingDataDatabaseHelper::PendingDatabaseInfo::PendingDatabaseInfo( | 147 CannedBrowsingDataDatabaseHelper::PendingDatabaseInfo::PendingDatabaseInfo( |
| 148 const GURL& origin, | 148 const GURL& origin, |
| 149 const std::string& name, | 149 const std::string& name, |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 info->description, | 235 info->description, |
| 236 web_security_origin.toString().utf8(), | 236 web_security_origin.toString().utf8(), |
| 237 0, | 237 0, |
| 238 base::Time())); | 238 base::Time())); |
| 239 } | 239 } |
| 240 pending_database_info_.clear(); | 240 pending_database_info_.clear(); |
| 241 | 241 |
| 242 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, NewRunnableMethod( | 242 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, NewRunnableMethod( |
| 243 this, &CannedBrowsingDataDatabaseHelper::NotifyInUIThread)); | 243 this, &CannedBrowsingDataDatabaseHelper::NotifyInUIThread)); |
| 244 } | 244 } |
| OLD | NEW |