|  | // Copyright 2016 the V8 project 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 TEST_FUZZER_FUZZER_SUPPORT_H_ | 
|  | #define TEST_FUZZER_FUZZER_SUPPORT_H_ | 
|  |  | 
|  | #include "include/libplatform/libplatform.h" | 
|  | #include "include/v8.h" | 
|  |  | 
|  | namespace v8_fuzzer { | 
|  |  | 
|  | class FuzzerSupport { | 
|  | public: | 
|  | FuzzerSupport(int* argc, char*** argv); | 
|  |  | 
|  | ~FuzzerSupport(); | 
|  |  | 
|  | static void InitializeFuzzerSupport(int* argc, char*** argv); | 
|  |  | 
|  | static FuzzerSupport* Get(); | 
|  |  | 
|  | v8::Isolate* GetIsolate() const { return isolate_; } | 
|  |  | 
|  | v8::Local<v8::Context> GetContext(); | 
|  |  | 
|  | bool PumpMessageLoop(v8::platform::MessageLoopBehavior = | 
|  | v8::platform::MessageLoopBehavior::kDoNotWait); | 
|  |  | 
|  | private: | 
|  | // Prevent copying. Not implemented. | 
|  | FuzzerSupport(const FuzzerSupport&); | 
|  | FuzzerSupport& operator=(const FuzzerSupport&); | 
|  |  | 
|  | static std::unique_ptr<FuzzerSupport> fuzzer_support_; | 
|  | std::unique_ptr<v8::Platform> platform_; | 
|  | v8::ArrayBuffer::Allocator* allocator_; | 
|  | v8::Isolate* isolate_; | 
|  | v8::Global<v8::Context> context_; | 
|  | }; | 
|  |  | 
|  | }  // namespace v8_fuzzer | 
|  |  | 
|  | #endif  //  TEST_FUZZER_FUZZER_SUPPORT_H_ |