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

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: Removing export macro, duplicate android string 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 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 "components/safe_json_parser/safe_json_parser_messages.h"
9 #include "content/public/browser/browser_thread.h" 13 #include "content/public/browser/browser_thread.h"
10 #include "content/public/browser/utility_process_host.h" 14 #include "content/public/browser/utility_process_host.h"
15 #include "grit/components_strings.h"
16 #include "ipc/ipc_message_macros.h"
11 #include "ui/base/l10n/l10n_util.h" 17 #include "ui/base/l10n/l10n_util.h"
12 18
13 using content::BrowserThread; 19 using content::BrowserThread;
14 using content::UtilityProcessHost; 20 using content::UtilityProcessHost;
15 21
22 namespace safe_json_parser {
23
16 SafeJsonParser::SafeJsonParser(const std::string& unsafe_json, 24 SafeJsonParser::SafeJsonParser(const std::string& unsafe_json,
17 const SuccessCallback& success_callback, 25 const SuccessCallback& success_callback,
18 const ErrorCallback& error_callback) 26 const ErrorCallback& error_callback)
19 : unsafe_json_(unsafe_json), 27 : unsafe_json_(unsafe_json),
20 success_callback_(success_callback), 28 success_callback_(success_callback),
21 error_callback_(error_callback) {} 29 error_callback_(error_callback) {
30 }
22 31
23 void SafeJsonParser::Start() { 32 void SafeJsonParser::Start() {
24 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 33 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
25 BrowserThread::PostTask( 34 BrowserThread::PostTask(
26 BrowserThread::IO, 35 BrowserThread::IO, FROM_HERE,
27 FROM_HERE,
28 base::Bind(&SafeJsonParser::StartWorkOnIOThread, this)); 36 base::Bind(&SafeJsonParser::StartWorkOnIOThread, this));
29 } 37 }
30 38
31 SafeJsonParser::~SafeJsonParser() {} 39 SafeJsonParser::~SafeJsonParser() {
40 }
32 41
33 void SafeJsonParser::StartWorkOnIOThread() { 42 void SafeJsonParser::StartWorkOnIOThread() {
34 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 43 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
35 UtilityProcessHost* host = 44 UtilityProcessHost* host =
36 UtilityProcessHost::Create(this, base::MessageLoopProxy::current().get()); 45 UtilityProcessHost::Create(this, base::MessageLoopProxy::current().get());
37 host->SetName(l10n_util::GetStringUTF16( 46 host->SetName(
38 IDS_UTILITY_PROCESS_JSON_PARSER_NAME)); 47 l10n_util::GetStringUTF16(IDS_UTILITY_PROCESS_JSON_PARSER_NAME));
39 host->Send(new ChromeUtilityMsg_ParseJSON(unsafe_json_)); 48 host->Send(new SafeJsonParserMsg_ParseJSON(unsafe_json_));
40 } 49 }
41 50
42 void SafeJsonParser::OnJSONParseSucceeded(const base::ListValue& wrapper) { 51 void SafeJsonParser::OnJSONParseSucceeded(const base::ListValue& wrapper) {
43 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 52 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
44 const base::Value* value = NULL; 53 const base::Value* value = NULL;
45 CHECK(wrapper.Get(0, &value)); 54 CHECK(wrapper.Get(0, &value));
46 55
47 parsed_json_.reset(value->DeepCopy()); 56 parsed_json_.reset(value->DeepCopy());
48 ReportResults(); 57 ReportResults();
49 } 58 }
50 59
51 void SafeJsonParser::OnJSONParseFailed(const std::string& error_message) { 60 void SafeJsonParser::OnJSONParseFailed(const std::string& error_message) {
52 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 61 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
53 error_ = error_message; 62 error_ = error_message;
54 ReportResults(); 63 ReportResults();
55 } 64 }
56 65
57 void SafeJsonParser::ReportResults() { 66 void SafeJsonParser::ReportResults() {
58 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 67 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
59 68
60 BrowserThread::PostTask( 69 BrowserThread::PostTask(
61 BrowserThread::UI, 70 BrowserThread::UI, FROM_HERE,
62 FROM_HERE,
63 base::Bind(&SafeJsonParser::ReportResultOnUIThread, this)); 71 base::Bind(&SafeJsonParser::ReportResultOnUIThread, this));
64 } 72 }
65 73
66 void SafeJsonParser::ReportResultOnUIThread() { 74 void SafeJsonParser::ReportResultOnUIThread() {
67 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 75 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
68 if (error_.empty() && parsed_json_) { 76 if (error_.empty() && parsed_json_) {
69 if (!success_callback_.is_null()) 77 if (!success_callback_.is_null())
70 success_callback_.Run(parsed_json_.Pass()); 78 success_callback_.Run(parsed_json_.Pass());
71 } else { 79 } else {
72 if (!error_callback_.is_null()) 80 if (!error_callback_.is_null())
73 error_callback_.Run(error_); 81 error_callback_.Run(error_);
74 } 82 }
75 } 83 }
76 84
77 bool SafeJsonParser::OnMessageReceived(const IPC::Message& message) { 85 bool SafeJsonParser::OnMessageReceived(const IPC::Message& message) {
78 bool handled = true; 86 bool handled = true;
79 IPC_BEGIN_MESSAGE_MAP(SafeJsonParser, message) 87 IPC_BEGIN_MESSAGE_MAP(SafeJsonParser, message)
80 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Succeeded, 88 IPC_MESSAGE_HANDLER(SafeJsonParserHostMsg_ParseJSON_Succeeded,
Robert Sesek 2015/06/01 20:25:48 nit: indent
Eran Messeri 2015/06/02 10:31:42 Done.
81 OnJSONParseSucceeded) 89 OnJSONParseSucceeded)
82 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Failed, 90 IPC_MESSAGE_HANDLER(SafeJsonParserHostMsg_ParseJSON_Failed, OnJSONParseFailed)
83 OnJSONParseFailed) 91 IPC_MESSAGE_UNHANDLED(handled = false)
84 IPC_MESSAGE_UNHANDLED(handled = false)
85 IPC_END_MESSAGE_MAP() 92 IPC_END_MESSAGE_MAP()
86 return handled; 93 return handled;
87 } 94 }
95
96 } // namespace safe_json_parser
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698