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

Unified Diff: chrome/browser/extensions/webstore_install_helper.cc

Issue 1214903010: Make JSONParser a pure interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: review Created 5 years, 6 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
Index: chrome/browser/extensions/webstore_install_helper.cc
diff --git a/chrome/browser/extensions/webstore_install_helper.cc b/chrome/browser/extensions/webstore_install_helper.cc
index 37710ba393c34cddab0963799ac710f4f48aa939..2f05709ac74d3e45c3535f29787d805a9d2c8f13 100644
--- a/chrome/browser/extensions/webstore_install_helper.cc
+++ b/chrome/browser/extensions/webstore_install_helper.cc
@@ -31,6 +31,7 @@ WebstoreInstallHelper::WebstoreInstallHelper(
: delegate_(delegate),
id_(id),
manifest_(manifest),
+ started_(false),
icon_url_(icon_url),
context_getter_(context_getter),
icon_decode_complete_(false),
@@ -43,19 +44,12 @@ WebstoreInstallHelper::~WebstoreInstallHelper() {}
void WebstoreInstallHelper::Start() {
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- // No existing |json_parser_| to avoid unbalanced AddRef().
- CHECK(!json_parser_.get());
- AddRef(); // Balanced in OnJSONParseSucceeded()/OnJSONParseFailed().
- // Use base::Unretained so that base::Bind won't AddRef() on us. Otherwise,
- // we'll have two callbacks holding references to us, only one of which will
- // ever be called.
- json_parser_ = new safe_json::SafeJsonParser(
- manifest_,
- base::Bind(&WebstoreInstallHelper::OnJSONParseSucceeded,
- base::Unretained(this)),
- base::Bind(&WebstoreInstallHelper::OnJSONParseFailed,
- base::Unretained(this)));
- json_parser_->Start();
+ CHECK(!started_);
+ started_ = true;
+
+ safe_json::SafeJsonParser::Parse(
+ manifest_, base::Bind(&WebstoreInstallHelper::OnJSONParseSucceeded, this),
+ base::Bind(&WebstoreInstallHelper::OnJSONParseFailed, this));
if (icon_url_.is_empty()) {
icon_decode_complete_ = true;
@@ -103,7 +97,6 @@ void WebstoreInstallHelper::OnJSONParseSucceeded(
parse_error_ = Delegate::MANIFEST_ERROR;
ReportResultsIfComplete();
- Release(); // Balanced in Start().
}
void WebstoreInstallHelper::OnJSONParseFailed(
@@ -113,7 +106,6 @@ void WebstoreInstallHelper::OnJSONParseFailed(
error_ = error_message;
parse_error_ = Delegate::MANIFEST_ERROR;
ReportResultsIfComplete();
- Release(); // Balanced in Start().
}
void WebstoreInstallHelper::ReportResultsIfComplete() {

Powered by Google App Engine
This is Rietveld 408576698