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

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

Issue 1140053003: Refactoring: Moving the SafeJsonParser to its own component. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moving to namespace Created 5 years, 7 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 948d9954134fe6b38718be0cd34471830942c63a..19cc59285391776a1decfdb1d7b3ebb0d91be8b7 100644
--- a/chrome/browser/extensions/webstore_install_helper.cc
+++ b/chrome/browser/extensions/webstore_install_helper.cc
@@ -7,12 +7,14 @@
#include <string>
#include "base/bind.h"
+#include "base/memory/weak_ptr.h"
#include "base/thread_task_runner_handle.h"
#include "base/values.h"
#include "chrome/browser/bitmap_fetcher/bitmap_fetcher.h"
#include "chrome/common/chrome_utility_messages.h"
Robert Sesek 2015/05/14 20:12:33 Unused.
Eran Messeri 2015/05/15 12:52:40 Done.
#include "chrome/common/extensions/chrome_utility_extensions_messages.h"
#include "chrome/grit/generated_resources.h"
+#include "components/safe_json_parser/safe_json_parser.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/utility_process_host.h"
Robert Sesek 2015/05/14 20:12:33 Unused.
Eran Messeri 2015/05/15 12:52:40 Done.
#include "net/base/load_flags.h"
@@ -64,33 +66,14 @@ void WebstoreInstallHelper::Start() {
net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DO_NOT_SEND_COOKIES);
}
- BrowserThread::PostTask(
- BrowserThread::IO,
- FROM_HERE,
- base::Bind(&WebstoreInstallHelper::StartWorkOnIOThread, this));
-}
-
-void WebstoreInstallHelper::StartWorkOnIOThread() {
- CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- utility_host_ = UtilityProcessHost::Create(
- this, base::ThreadTaskRunnerHandle::Get().get())->AsWeakPtr();
- utility_host_->SetName(l10n_util::GetStringUTF16(
- IDS_UTILITY_PROCESS_JSON_PARSER_NAME));
- utility_host_->StartBatchMode();
-
- utility_host_->Send(new ChromeUtilityMsg_ParseJSON(manifest_));
-}
-
-bool WebstoreInstallHelper::OnMessageReceived(const IPC::Message& message) {
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(WebstoreInstallHelper, message)
- IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Succeeded,
- OnJSONParseSucceeded)
- IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Failed,
- OnJSONParseFailed)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
+ base::WeakPtrFactory<WebstoreInstallHelper> weak_factory(this);
+ scoped_refptr<safe_json_parser::SafeJsonParser> parser =
+ new safe_json_parser::SafeJsonParser(
+ manifest_, base::Bind(&WebstoreInstallHelper::OnJSONParseSucceeded,
+ weak_factory.GetWeakPtr()),
+ base::Bind(&WebstoreInstallHelper::OnJSONParseFailed,
+ weak_factory.GetWeakPtr()));
+ parser->Start();
}
void WebstoreInstallHelper::OnFetchComplete(const GURL& url,
@@ -116,16 +99,21 @@ void WebstoreInstallHelper::OnFetchComplete(const GURL& url,
}
void WebstoreInstallHelper::OnJSONParseSucceeded(
- const base::ListValue& wrapper) {
+ scoped_ptr<base::Value> wrapper) {
CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
manifest_parse_complete_ = true;
- const base::Value* value = NULL;
- CHECK(wrapper.Get(0, &value));
- if (value->IsType(base::Value::TYPE_DICTIONARY)) {
- parsed_manifest_.reset(
- static_cast<const base::DictionaryValue*>(value)->DeepCopy());
- } else {
+ const base::ListValue* wrapper_list = NULL;
+ if (!wrapper->GetAsList(&wrapper_list)) {
parse_error_ = Delegate::MANIFEST_ERROR;
+ } else {
+ const base::Value* value = NULL;
+ CHECK(wrapper_list->Get(0, &value));
+ if (value->IsType(base::Value::TYPE_DICTIONARY)) {
+ parsed_manifest_.reset(
+ static_cast<const base::DictionaryValue*>(value)->DeepCopy());
+ } else {
+ parse_error_ = Delegate::MANIFEST_ERROR;
+ }
}
ReportResultsIfComplete();
}
@@ -145,12 +133,6 @@ void WebstoreInstallHelper::ReportResultsIfComplete() {
if (!icon_decode_complete_ || !manifest_parse_complete_)
return;
- // The utility_host_ will take care of deleting itself after this call.
- if (utility_host_.get()) {
- utility_host_->EndBatchMode();
- utility_host_.reset();
- }
-
BrowserThread::PostTask(
BrowserThread::UI,
FROM_HERE,

Powered by Google App Engine
This is Rietveld 408576698