summaryrefslogtreecommitdiffstats
path: root/chrome/browser/safe_browsing
diff options
context:
space:
mode:
authornoelutz@google.com <noelutz@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-15 19:57:34 +0000
committernoelutz@google.com <noelutz@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-15 19:57:34 +0000
commite0f95f276a9aef0570bb7d0f0e7333ad1d56fdeb (patch)
tree12f000ba26bdd434799f103d2a26812e585556c5 /chrome/browser/safe_browsing
parent7fac888e97750567424c1ededd1c6c3957dddaa6 (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/safe_browsing/client_side_detection_service.cc15
-rw-r--r--chrome/browser/safe_browsing/client_side_detection_service.h2
-rw-r--r--chrome/browser/safe_browsing/client_side_detection_service_unittest.cc1
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));