diff options
author | scr@chromium.org <scr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-28 22:27:34 +0000 |
---|---|---|
committer | scr@chromium.org <scr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-28 22:27:34 +0000 |
commit | e5721c184caf103838f6a8ae49c12d018fa60c9e (patch) | |
tree | 165ee35e1e934b68af069072b7c0ad857d042ab3 /content/browser/cancelable_request.cc | |
parent | bacef3cbbc55efebb2573194d329eabac5f5c7e3 (diff) | |
download | chromium_src-e5721c184caf103838f6a8ae49c12d018fa60c9e.zip chromium_src-e5721c184caf103838f6a8ae49c12d018fa60c9e.tar.gz chromium_src-e5721c184caf103838f6a8ae49c12d018fa60c9e.tar.bz2 |
When looking at this bug, I found at least the following issues:
1) PasswordManagerHandler was not canceling requests if new requests were made (by double-clicking the "Manage Saved Passwords..." button with a slow database - simulated with long Sleep).
2) PasswordStore starts its handle numbering at 0 meaning that the very first request is non-true and could hit DCHECK(s).
3) PasswordManagerHandler doesn't free the results.
When talking with the DOMUI TL (jhawkins) and an author of PasswordStore (stuartmorgan), I learned that it was modeled after HistoryService, which had since been refactored into a reusable suite of classes in content/browser/cancelable_request.h
So the CL will include fixes for the 3 issues, as well as a refactor to use the shared code in cancelable_requst.h
BUG=71466
TEST=chrome://settings/personal, then click "Manage Saved Passwords". Put
PlatformThread::Sleep(10000), then try double-clicking the button to see no error.
Review URL: http://codereview.chromium.org/6646051
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79625 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/cancelable_request.cc')
-rw-r--r-- | content/browser/cancelable_request.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/content/browser/cancelable_request.cc b/content/browser/cancelable_request.cc index f1826fd..5e36d89 100644 --- a/content/browser/cancelable_request.cc +++ b/content/browser/cancelable_request.cc @@ -4,7 +4,8 @@ #include "content/browser/cancelable_request.h" -CancelableRequestProvider::CancelableRequestProvider() : next_handle_(1) { +CancelableRequestProvider::CancelableRequestProvider() + : next_handle_(1) { } CancelableRequestProvider::~CancelableRequestProvider() { @@ -28,6 +29,8 @@ CancelableRequestProvider::Handle CancelableRequestProvider::AddRequest( handle = next_handle_; pending_requests_[next_handle_] = request; ++next_handle_; + DCHECK(next_handle_) + << "next_handle_ may have wrapped around to invalid state."; } consumer->OnRequestAdded(this, handle); |