// 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 SKY_SHELL_TESTING_TEST_RUNNER_H_ #define SKY_SHELL_TESTING_TEST_RUNNER_H_ #include #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "mojo/common/weak_binding_set.h" #include "mojo/public/cpp/application/interface_factory_impl.h" #include "sky/services/engine/sky_engine.mojom.h" #include "sky/services/testing/test_harness.mojom.h" namespace sky { namespace shell { class ShellView; class TestRunner : public mojo::InterfaceFactory, public TestHarness { public: static TestRunner& Shared(); void set_package_root(const std::string& package_root) { package_root_ = package_root; } struct SingleTest { std::string path; bool is_snapshot = false; }; void Start(scoped_ptr single_test); private: // mojo::InterfaceFactory implementation: void Create(mojo::ApplicationConnection* app, mojo::InterfaceRequest request) override; // TestHarness implementation: void OnTestComplete(const mojo::String& test_result, const mojo::Array pixels) override; void DispatchInputEvent(mojo::EventPtr event) override; TestRunner(); ~TestRunner() override; void ScheduleRun(); void Run(); std::string package_root_; scoped_ptr shell_view_; SkyEnginePtr sky_engine_; scoped_ptr single_test_; mojo::WeakBindingSet bindings_; base::WeakPtrFactory weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(TestRunner); }; } // namespace shell } // namespace sky #endif // SKY_SHELL_TESTING_TEST_RUNNER_H_