Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1122)

Unified Diff: chrome/browser/history/web_history_service.cc

Issue 164703002: Don't leak WebHistoryService::Request on HistoryService shutdown. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: dubroy comments Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/history/web_history_service.h ('k') | chrome/browser/ui/webui/history_ui.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/history/web_history_service.cc
diff --git a/chrome/browser/history/web_history_service.cc b/chrome/browser/history/web_history_service.cc
index 12d13e10e41981d1889f1a1d76868a7aee46174f..a8be69ccd56a5efcd4fb926e64aa482f0610bd0d 100644
--- a/chrome/browser/history/web_history_service.cc
+++ b/chrome/browser/history/web_history_service.cc
@@ -8,6 +8,7 @@
#include "base/json/json_reader.h"
#include "base/json/json_writer.h"
#include "base/metrics/histogram.h"
+#include "base/stl_util.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
@@ -304,6 +305,7 @@ WebHistoryService::WebHistoryService(Profile* profile)
}
WebHistoryService::~WebHistoryService() {
+ STLDeleteElements(&pending_expire_requests_);
}
scoped_ptr<WebHistoryService::Request> WebHistoryService::QueryHistory(
@@ -321,7 +323,7 @@ scoped_ptr<WebHistoryService::Request> WebHistoryService::QueryHistory(
return request.PassAs<Request>();
}
-scoped_ptr<WebHistoryService::Request> WebHistoryService::ExpireHistory(
+void WebHistoryService::ExpireHistory(
const std::vector<ExpireHistoryArgs>& expire_list,
const ExpireWebHistoryCallback& callback) {
base::DictionaryValue delete_request;
@@ -368,10 +370,10 @@ scoped_ptr<WebHistoryService::Request> WebHistoryService::ExpireHistory(
new RequestImpl(profile_, url, completion_callback));
request->set_post_data(post_data);
request->Start();
- return request.PassAs<Request>();
+ pending_expire_requests_.insert(request.release());
}
-scoped_ptr<WebHistoryService::Request> WebHistoryService::ExpireHistoryBetween(
+void WebHistoryService::ExpireHistoryBetween(
const std::set<GURL>& restrict_urls,
base::Time begin_time,
base::Time end_time,
@@ -380,7 +382,7 @@ scoped_ptr<WebHistoryService::Request> WebHistoryService::ExpireHistoryBetween(
expire_list.back().urls = restrict_urls;
expire_list.back().begin_time = begin_time;
expire_list.back().end_time = end_time;
- return ExpireHistory(expire_list, callback);
+ ExpireHistory(expire_list, callback);
}
// static
@@ -404,7 +406,10 @@ void WebHistoryService::ExpireHistoryCompletionCallback(
if (response_value)
response_value->GetString("version_info", &server_version_info_);
}
- callback.Run(request, response_value.get() && success);
+ callback.Run(response_value.get() && success);
+ // Clean up from pending requests.
+ pending_expire_requests_.erase(request);
+ delete request;
}
} // namespace history
« no previous file with comments | « chrome/browser/history/web_history_service.h ('k') | chrome/browser/ui/webui/history_ui.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698