Chromium Code Reviews| Index: components/safe_json/safe_json_parser_impl.cc |
| diff --git a/components/safe_json/safe_json_parser.cc b/components/safe_json/safe_json_parser_impl.cc |
| similarity index 69% |
| copy from components/safe_json/safe_json_parser.cc |
| copy to components/safe_json/safe_json_parser_impl.cc |
| index af30a19f2d7be77f18052233b91acff618c1e833..25eb74c0ca2bb6a062d6c870ecf150d671d5a4db 100644 |
| --- a/components/safe_json/safe_json_parser.cc |
| +++ b/components/safe_json/safe_json_parser_impl.cc |
| @@ -2,11 +2,9 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#include "components/safe_json/safe_json_parser.h" |
| +#include "components/safe_json/safe_json_parser_impl.h" |
| -#include <string> |
| - |
| -#include "base/single_thread_task_runner.h" |
| +#include "base/sequenced_task_runner.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/thread_task_runner_handle.h" |
| #include "base/tuple.h" |
| @@ -23,26 +21,17 @@ using content::UtilityProcessHost; |
| namespace safe_json { |
| -SafeJsonParser::SafeJsonParser(const std::string& unsafe_json, |
| - const SuccessCallback& success_callback, |
| - const ErrorCallback& error_callback) |
| +SafeJsonParserImpl::SafeJsonParserImpl(const std::string& unsafe_json, |
| + const SuccessCallback& success_callback, |
| + const ErrorCallback& error_callback) |
| : unsafe_json_(unsafe_json), |
| success_callback_(success_callback), |
| - error_callback_(error_callback) { |
| -} |
| - |
| -void SafeJsonParser::Start() { |
| - caller_task_runner_ = base::ThreadTaskRunnerHandle::Get(); |
| + error_callback_(error_callback) {} |
| - BrowserThread::PostTask( |
| - BrowserThread::IO, FROM_HERE, |
| - base::Bind(&SafeJsonParser::StartWorkOnIOThread, this)); |
| +SafeJsonParserImpl::~SafeJsonParserImpl() { |
| } |
| -SafeJsonParser::~SafeJsonParser() { |
| -} |
| - |
| -void SafeJsonParser::StartWorkOnIOThread() { |
| +void SafeJsonParserImpl::StartWorkOnIOThread() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| UtilityProcessHost* host = UtilityProcessHost::Create( |
| this, base::ThreadTaskRunnerHandle::Get().get()); |
| @@ -51,7 +40,7 @@ void SafeJsonParser::StartWorkOnIOThread() { |
| host->Send(new SafeJsonParserMsg_ParseJSON(unsafe_json_)); |
| } |
| -void SafeJsonParser::OnJSONParseSucceeded(const base::ListValue& wrapper) { |
| +void SafeJsonParserImpl::OnJSONParseSucceeded(const base::ListValue& wrapper) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| const base::Value* value = NULL; |
| CHECK(wrapper.Get(0, &value)); |
| @@ -60,26 +49,22 @@ void SafeJsonParser::OnJSONParseSucceeded(const base::ListValue& wrapper) { |
| ReportResults(); |
| } |
| -void SafeJsonParser::OnJSONParseFailed(const std::string& error_message) { |
| +void SafeJsonParserImpl::OnJSONParseFailed(const std::string& error_message) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| error_ = error_message; |
| ReportResults(); |
| } |
| -void SafeJsonParser::ReportResults() { |
| +void SafeJsonParserImpl::ReportResults() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| caller_task_runner_->PostTask( |
| FROM_HERE, |
| - base::Bind(&SafeJsonParser::ReportResultsOnOriginThread, this)); |
| + base::Bind(&SafeJsonParserImpl::ReportResultsOnOriginThread, this)); |
| } |
| -void SafeJsonParser::ReportResultsOnOriginThread() { |
| - // Current callers of this class are known to either come from |
| - // the UI or IO threads. This DCHECK can be removed/further enhanced |
| - // in case this class is useable outside of these contexts. |
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || |
| - BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| +void SafeJsonParserImpl::ReportResultsOnOriginThread() { |
| + DCHECK(caller_task_runner_->RunsTasksOnCurrentThread()); |
| if (error_.empty() && parsed_json_) { |
| if (!success_callback_.is_null()) |
| success_callback_.Run(parsed_json_.Pass()); |
| @@ -89,9 +74,9 @@ void SafeJsonParser::ReportResultsOnOriginThread() { |
| } |
| } |
| -bool SafeJsonParser::OnMessageReceived(const IPC::Message& message) { |
| +bool SafeJsonParserImpl::OnMessageReceived(const IPC::Message& message) { |
| bool handled = true; |
| - IPC_BEGIN_MESSAGE_MAP(SafeJsonParser, message) |
| + IPC_BEGIN_MESSAGE_MAP(SafeJsonParserImpl, message) |
| IPC_MESSAGE_HANDLER(SafeJsonParserHostMsg_ParseJSON_Succeeded, |
| OnJSONParseSucceeded) |
| IPC_MESSAGE_HANDLER(SafeJsonParserHostMsg_ParseJSON_Failed, |
| @@ -101,4 +86,18 @@ bool SafeJsonParser::OnMessageReceived(const IPC::Message& message) { |
| return handled; |
| } |
| +void SafeJsonParserImpl::Start() { |
| + // Current callers of this class are known to either come from |
| + // the UI or IO threads. This DCHECK can be removed/further enhanced |
| + // in case this class is useable outside of these contexts. |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || |
|
Robert Sesek
2015/07/02 17:28:19
I don't know if this DCHECK is really that useful.
Bernhard Bauer
2015/07/02 22:38:24
True. Removed.
|
| + BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| + |
| + caller_task_runner_ = base::ThreadTaskRunnerHandle::Get(); |
| + |
| + BrowserThread::PostTask( |
| + BrowserThread::IO, FROM_HERE, |
| + base::Bind(&SafeJsonParserImpl::StartWorkOnIOThread, this)); |
| +} |
| + |
| } // namespace safe_json |