diff options
author | noelutz@google.com <noelutz@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-15 19:57:34 +0000 |
---|---|---|
committer | noelutz@google.com <noelutz@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-15 19:57:34 +0000 |
commit | e0f95f276a9aef0570bb7d0f0e7333ad1d56fdeb (patch) | |
tree | 12f000ba26bdd434799f103d2a26812e585556c5 /chrome/browser/safe_browsing | |
parent | 7fac888e97750567424c1ededd1c6c3957dddaa6 (diff) | |
download | chromium_src-e0f95f276a9aef0570bb7d0f0e7333ad1d56fdeb.zip chromium_src-e0f95f276a9aef0570bb7d0f0e7333ad1d56fdeb.tar.gz chromium_src-e0f95f276a9aef0570bb7d0f0e7333ad1d56fdeb.tar.bz2 |
Fix Valgrind errors that occurred during testing.
BUG=62943
TEST=ClientSideDetectionServiceTest
Review URL: http://codereview.chromium.org/4808003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66157 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/safe_browsing')
3 files changed, 11 insertions, 7 deletions
diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chrome/browser/safe_browsing/client_side_detection_service.cc index 8ebd9dd..25b4dbc 100644 --- a/chrome/browser/safe_browsing/client_side_detection_service.cc +++ b/chrome/browser/safe_browsing/client_side_detection_service.cc @@ -38,6 +38,7 @@ ClientSideDetectionService::ClientSideDetectionService( : model_path_(model_path), model_status_(UNKNOWN_STATUS), model_file_(base::kInvalidPlatformFileValue), + model_fetcher_(NULL), ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)), request_context_getter_(request_context_getter) { } @@ -47,7 +48,6 @@ ClientSideDetectionService::~ClientSideDetectionService() { STLDeleteContainerPairPointers(client_phishing_reports_.begin(), client_phishing_reports_.end()); client_phishing_reports_.clear(); - model_fetcher_.reset(); STLDeleteElements(&open_callbacks_); CloseModelFile(); } @@ -102,14 +102,17 @@ void ClientSideDetectionService::OnURLFetchComplete( int response_code, const ResponseCookies& cookies, const std::string& data) { - if (source == model_fetcher_.get()) { + if (source == model_fetcher_) { HandleModelResponse(source, url, status, response_code, cookies, data); + // The fetcher object will be invalid after this method returns. + model_fetcher_ = NULL; } else if (client_phishing_reports_.find(source) != client_phishing_reports_.end()) { HandlePhishingVerdict(source, url, status, response_code, cookies, data); } else { NOTREACHED(); } + delete source; } void ClientSideDetectionService::SetModelStatus(ModelStatus status) { @@ -136,10 +139,10 @@ void ClientSideDetectionService::OpenModelFileDone( SetModelStatus(READY_STATUS); } else if (base::PLATFORM_FILE_ERROR_NOT_FOUND == error_code) { // We need to fetch the model since it does not exist yet. - model_fetcher_.reset(URLFetcher::Create(0 /* ID is not used */, - GURL(kClientModelUrl), - URLFetcher::GET, - this)); + model_fetcher_ = URLFetcher::Create(0 /* ID is not used */, + GURL(kClientModelUrl), + URLFetcher::GET, + this); model_fetcher_->set_request_context(request_context_getter_.get()); model_fetcher_->Start(); } else { diff --git a/chrome/browser/safe_browsing/client_side_detection_service.h b/chrome/browser/safe_browsing/client_side_detection_service.h index 7b08fbb..a0c72a9 100644 --- a/chrome/browser/safe_browsing/client_side_detection_service.h +++ b/chrome/browser/safe_browsing/client_side_detection_service.h @@ -170,7 +170,7 @@ class ClientSideDetectionService : public URLFetcher::Delegate { FilePath model_path_; ModelStatus model_status_; base::PlatformFile model_file_; - scoped_ptr<URLFetcher> model_fetcher_; + URLFetcher* model_fetcher_; scoped_ptr<std::string> tmp_model_string_; std::vector<OpenModelDoneCallback*> open_callbacks_; diff --git a/chrome/browser/safe_browsing/client_side_detection_service_unittest.cc b/chrome/browser/safe_browsing/client_side_detection_service_unittest.cc index b9d6c44..ce5e205 100644 --- a/chrome/browser/safe_browsing/client_side_detection_service_unittest.cc +++ b/chrome/browser/safe_browsing/client_side_detection_service_unittest.cc @@ -161,6 +161,7 @@ TEST_F(ClientSideDetectionServiceTest, SendClientReportPhishingRequest) { // Valid thumbnail but the server returns an error. thumbnail.setConfig(SkBitmap::kARGB_8888_Config, 100, 100); ASSERT_TRUE(thumbnail.allocPixels()); + thumbnail.eraseRGB(255, 0, 0); SetClientReportPhishingResponse("", false /* fail */); EXPECT_FALSE(SendClientReportPhishingRequest(url, score, thumbnail)); |