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

Side by Side Diff: components/safe_json_parser/safe_json_parser.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 dependency around 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/safe_json_parser.h" 5 #include "components/safe_json_parser/safe_json_parser.h"
6 6
7 #include "chrome/common/chrome_utility_messages.h" 7 #include <string>
8 #include "chrome/grit/generated_resources.h" 8
9 #include "base/strings/utf_string_conversions.h"
10 #include "base/tuple.h"
11 #include "base/values.h"
12 #include "ipc/ipc_message_macros.h"
jam 2015/05/18 23:59:19 nit: this is an internal file, you shouldn't have
Eran Messeri 2015/05/19 20:49:56 Done.
13 #include "components/safe_json_parser/safe_json_parser_messages.h"
9 #include "content/public/browser/browser_thread.h" 14 #include "content/public/browser/browser_thread.h"
10 #include "content/public/browser/utility_process_host.h" 15 #include "content/public/browser/utility_process_host.h"
11 #include "ui/base/l10n/l10n_util.h"
12 16
13 using content::BrowserThread; 17 using content::BrowserThread;
14 using content::UtilityProcessHost; 18 using content::UtilityProcessHost;
15 19
20 namespace {
21
22 const char* kJSONParserProcessName = "JSON Parser";
23
24 } // namespace
25
26 namespace safe_json_parser {
27
16 SafeJsonParser::SafeJsonParser(const std::string& unsafe_json, 28 SafeJsonParser::SafeJsonParser(const std::string& unsafe_json,
17 const SuccessCallback& success_callback, 29 const SuccessCallback& success_callback,
18 const ErrorCallback& error_callback) 30 const ErrorCallback& error_callback)
19 : unsafe_json_(unsafe_json), 31 : unsafe_json_(unsafe_json),
20 success_callback_(success_callback), 32 success_callback_(success_callback),
21 error_callback_(error_callback) {} 33 error_callback_(error_callback) {
34 }
22 35
23 void SafeJsonParser::Start() { 36 void SafeJsonParser::Start() {
24 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 37 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
25 BrowserThread::PostTask( 38 BrowserThread::PostTask(
26 BrowserThread::IO, 39 BrowserThread::IO, FROM_HERE,
27 FROM_HERE,
28 base::Bind(&SafeJsonParser::StartWorkOnIOThread, this)); 40 base::Bind(&SafeJsonParser::StartWorkOnIOThread, this));
29 } 41 }
30 42
31 SafeJsonParser::~SafeJsonParser() {} 43 SafeJsonParser::~SafeJsonParser() {
44 }
32 45
33 void SafeJsonParser::StartWorkOnIOThread() { 46 void SafeJsonParser::StartWorkOnIOThread() {
34 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 47 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
35 UtilityProcessHost* host = 48 UtilityProcessHost* host =
36 UtilityProcessHost::Create(this, base::MessageLoopProxy::current().get()); 49 UtilityProcessHost::Create(this, base::MessageLoopProxy::current().get());
37 host->SetName(l10n_util::GetStringUTF16( 50 host->SetName(base::ASCIIToUTF16(kJSONParserProcessName));
jam 2015/05/18 23:59:19 seems like a regression here that you switch from
Eran Messeri 2015/05/19 20:49:56 Correct. It does not seem to be trivial to get int
jam 2015/05/20 15:38:31 Everywhere else that sets process names in the tas
Eran Messeri 2015/05/26 16:19:59 Done - added the localized string back as suggeste
38 IDS_UTILITY_PROCESS_JSON_PARSER_NAME)); 51 host->Send(new SafeJsonParserMsg_ParseJSON(unsafe_json_));
39 host->Send(new ChromeUtilityMsg_ParseJSON(unsafe_json_));
40 } 52 }
41 53
42 void SafeJsonParser::OnJSONParseSucceeded(const base::ListValue& wrapper) { 54 void SafeJsonParser::OnJSONParseSucceeded(const base::ListValue& wrapper) {
43 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 55 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
44 const base::Value* value = NULL; 56 const base::Value* value = NULL;
45 CHECK(wrapper.Get(0, &value)); 57 CHECK(wrapper.Get(0, &value));
46 58
47 parsed_json_.reset(value->DeepCopy()); 59 parsed_json_.reset(value->DeepCopy());
48 ReportResults(); 60 ReportResults();
49 } 61 }
50 62
51 void SafeJsonParser::OnJSONParseFailed(const std::string& error_message) { 63 void SafeJsonParser::OnJSONParseFailed(const std::string& error_message) {
52 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 64 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
53 error_ = error_message; 65 error_ = error_message;
54 ReportResults(); 66 ReportResults();
55 } 67 }
56 68
57 void SafeJsonParser::ReportResults() { 69 void SafeJsonParser::ReportResults() {
58 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 70 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
59 71
60 BrowserThread::PostTask( 72 BrowserThread::PostTask(
61 BrowserThread::UI, 73 BrowserThread::UI, FROM_HERE,
62 FROM_HERE,
63 base::Bind(&SafeJsonParser::ReportResultOnUIThread, this)); 74 base::Bind(&SafeJsonParser::ReportResultOnUIThread, this));
64 } 75 }
65 76
66 void SafeJsonParser::ReportResultOnUIThread() { 77 void SafeJsonParser::ReportResultOnUIThread() {
67 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 78 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
68 if (error_.empty() && parsed_json_) { 79 if (error_.empty() && parsed_json_) {
69 if (!success_callback_.is_null()) 80 if (!success_callback_.is_null())
70 success_callback_.Run(parsed_json_.Pass()); 81 success_callback_.Run(parsed_json_.Pass());
71 } else { 82 } else {
72 if (!error_callback_.is_null()) 83 if (!error_callback_.is_null())
73 error_callback_.Run(error_); 84 error_callback_.Run(error_);
74 } 85 }
75 } 86 }
76 87
77 bool SafeJsonParser::OnMessageReceived(const IPC::Message& message) { 88 bool SafeJsonParser::OnMessageReceived(const IPC::Message& message) {
78 bool handled = true; 89 bool handled = true;
79 IPC_BEGIN_MESSAGE_MAP(SafeJsonParser, message) 90 IPC_BEGIN_MESSAGE_MAP(SafeJsonParser, message)
80 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Succeeded, 91 IPC_MESSAGE_HANDLER(SafeJsonParserHostMsg_ParseJSON_Succeeded,
81 OnJSONParseSucceeded) 92 OnJSONParseSucceeded)
82 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Failed, 93 IPC_MESSAGE_HANDLER(SafeJsonParserHostMsg_ParseJSON_Failed, OnJSONParseFailed)
83 OnJSONParseFailed) 94 IPC_MESSAGE_UNHANDLED(handled = false)
84 IPC_MESSAGE_UNHANDLED(handled = false)
85 IPC_END_MESSAGE_MAP() 95 IPC_END_MESSAGE_MAP()
86 return handled; 96 return handled;
87 } 97 }
98
99 } // namespace safe_json_parser
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698