|  | // Copyright 2015 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef COMPONENTS_SAFE_JSON_TESTING_JSON_PARSER_H_ | 
|  | #define COMPONENTS_SAFE_JSON_TESTING_JSON_PARSER_H_ | 
|  |  | 
|  | #include "base/macros.h" | 
|  | #include "components/safe_json/safe_json_parser.h" | 
|  |  | 
|  | namespace safe_json { | 
|  |  | 
|  | // An implementation of SafeJsonParser that parses JSON in process. This can be | 
|  | // used in unit tests to avoid having to set up the multiprocess infrastructure | 
|  | // necessary for the out-of-process SafeJsonParser. | 
|  | class TestingJsonParser : public SafeJsonParser { | 
|  | public: | 
|  | // A helper class that will temporarily override the SafeJsonParser factory to | 
|  | // create instances of this class. | 
|  | class ScopedFactoryOverride { | 
|  | public: | 
|  | ScopedFactoryOverride(); | 
|  | ~ScopedFactoryOverride(); | 
|  |  | 
|  | private: | 
|  | DISALLOW_COPY_AND_ASSIGN(ScopedFactoryOverride); | 
|  | }; | 
|  |  | 
|  | // If instantiating this class manually, it must be allocated with |new| (i.e. | 
|  | // not on the stack). It will delete itself after calling one of the | 
|  | // callbacks. | 
|  | TestingJsonParser(const std::string& unsafe_json, | 
|  | const SuccessCallback& success_callback, | 
|  | const ErrorCallback& error_callback); | 
|  | ~TestingJsonParser() override; | 
|  |  | 
|  | private: | 
|  | void Start() override; | 
|  |  | 
|  | const std::string unsafe_json_; | 
|  | SuccessCallback success_callback_; | 
|  | ErrorCallback error_callback_; | 
|  |  | 
|  | DISALLOW_COPY_AND_ASSIGN(TestingJsonParser); | 
|  | }; | 
|  |  | 
|  | }  // namespace | 
|  |  | 
|  | #endif  // COMPONENTS_SAFE_JSON_TESTING_JSON_PARSER_H_ |