// Copyright 2014 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_TOOLS_TESTER_TEST_RUNNER_H_ #define SKY_TOOLS_TESTER_TEST_RUNNER_H_ #include "base/memory/weak_ptr.h" #include "mojo/public/cpp/application/service_provider_impl.h" #include "sky/tools/tester/test_harness_impl.h" namespace mojo{ class View; } namespace sky { namespace tester { class TestRunnerClient { public: virtual void OnTestComplete() = 0; virtual void DispatchInputEvent(mojo::EventPtr event) = 0; protected: virtual ~TestRunnerClient(); }; class TestRunner : public mojo::InterfaceFactory { public: TestRunner(TestRunnerClient* client, mojo::View* container, const std::string& url, bool enable_pixel_dumping); ~TestRunner() override; TestRunnerClient* client() const { return client_; } base::WeakPtr GetWeakPtr(); void OnTestStart(); void OnTestComplete(const std::string& test_result, const mojo::Array& pixels); private: // mojo::InterfaceFactory implementation: void Create(mojo::ApplicationConnection* app, mojo::InterfaceRequest request) override; mojo::ServiceProviderImpl test_harness_provider_impl_; TestRunnerClient* client_; bool enable_pixel_dumping_; base::WeakPtrFactory weak_ptr_factory_; MOJO_DISALLOW_COPY_AND_ASSIGN(TestRunner); }; } // namespace tester } // namespace sky #endif // SKY_TOOLS_TESTER_TEST_RUNNER_H_