| Index: components/safe_json/safe_json_parser.h
|
| diff --git a/components/safe_json/safe_json_parser.h b/components/safe_json/safe_json_parser.h
|
| index 8fb703b3e9a619f630906418841a8c87bd6d395f..704f0680cb39b2b7edf0311964f4860a31377acc 100644
|
| --- a/components/safe_json/safe_json_parser.h
|
| +++ b/components/safe_json/safe_json_parser.h
|
| @@ -10,57 +10,40 @@
|
| #include "base/basictypes.h"
|
| #include "base/callback.h"
|
| #include "base/memory/scoped_ptr.h"
|
| -#include "content/public/browser/utility_process_host_client.h"
|
|
|
| namespace base {
|
| -class ListValue;
|
| -class SingleThreadTaskRunner;
|
| class Value;
|
| }
|
|
|
| -namespace IPC {
|
| -class Message;
|
| -}
|
| -
|
| namespace safe_json {
|
|
|
| -// SafeJsonParser parses a given JSON safely via a utility process. The object
|
| -// is ref-counted and kept alive after Start() is called until one of the two
|
| -// callbacks is called.
|
| -class SafeJsonParser : public content::UtilityProcessHostClient {
|
| +// SafeJsonParser parses a given JSON safely via a platform-dependent mechanism
|
| +// (like parsing it in a utility process or in a memory-safe environment).
|
| +// Internally, an instance of this class is created when Parse() is called and
|
| +// is kept alive until one of the two callbacks is called, after which it
|
| +// deletes itself.
|
| +class SafeJsonParser {
|
| public:
|
| - typedef base::Callback<void(scoped_ptr<base::Value>)> SuccessCallback;
|
| - typedef base::Callback<void(const std::string&)> ErrorCallback;
|
| -
|
| - SafeJsonParser(const std::string& unsafe_json,
|
| - const SuccessCallback& success_callback,
|
| - const ErrorCallback& error_callback);
|
| + using SuccessCallback = base::Callback<void(scoped_ptr<base::Value>)>;
|
| + using ErrorCallback = base::Callback<void(const std::string&)>;
|
|
|
| - void Start();
|
| -
|
| - private:
|
| - ~SafeJsonParser() override;
|
| + using Factory = SafeJsonParser* (*)(const std::string& unsafe_json,
|
| + const SuccessCallback& success_callback,
|
| + const ErrorCallback& error_callback);
|
|
|
| - void StartWorkOnIOThread();
|
| + // Starts parsing the passed in |unsafe_json| and calls either
|
| + // |success_callback| or |error_callback| when finished.
|
| + static void Parse(const std::string& unsafe_json,
|
| + const SuccessCallback& success_callback,
|
| + const ErrorCallback& error_callback);
|
|
|
| - void OnJSONParseSucceeded(const base::ListValue& wrapper);
|
| - void OnJSONParseFailed(const std::string& error_message);
|
| + static void SetFactoryForTesting(Factory factory);
|
|
|
| - void ReportResults();
|
| - void ReportResultsOnOriginThread();
|
| + protected:
|
| + virtual ~SafeJsonParser() {}
|
|
|
| - // Implementing pieces of the UtilityProcessHostClient interface.
|
| - bool OnMessageReceived(const IPC::Message& message) override;
|
| -
|
| - const std::string unsafe_json_;
|
| - SuccessCallback success_callback_;
|
| - ErrorCallback error_callback_;
|
| - scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner_;
|
| -
|
| - scoped_ptr<base::Value> parsed_json_;
|
| - std::string error_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SafeJsonParser);
|
| + private:
|
| + virtual void Start() = 0;
|
| };
|
|
|
| } // namespace safe_json
|
|
|