// 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. #include "sky/tools/tester/test_runner.h" #include #include "base/bind.h" #include "mojo/public/cpp/application/connect.h" #include "mojo/services/view_manager/public/cpp/view.h" namespace sky { namespace tester { TestRunnerClient::~TestRunnerClient() { } TestRunner::TestRunner(TestRunnerClient* client, mojo::View* container, const std::string& url, bool enable_pixel_dumping) : client_(client), enable_pixel_dumping_(enable_pixel_dumping), weak_ptr_factory_(this) { CHECK(client); mojo::ServiceProviderPtr test_harness_provider; test_harness_provider_impl_.AddService(this); test_harness_provider_impl_.Bind(GetProxy(&test_harness_provider)); container->Embed(url, nullptr, test_harness_provider.Pass()); } TestRunner::~TestRunner() { } base::WeakPtr TestRunner::GetWeakPtr() { return weak_ptr_factory_.GetWeakPtr(); } void TestRunner::OnTestStart() { std::cout << "#BEGIN\n"; std::cout.flush(); } void TestRunner::OnTestComplete(const std::string& test_result, const mojo::Array& pixels) { std::cout << "Content-Type: text/plain\n"; std::cout << test_result << "\n"; std::cout << "#EOF\n"; // TODO(ojan): Don't generate the pixels if enable_pixel_dumping_ is false. if (enable_pixel_dumping_) { // TODO(ojan): Add real hashes here once we want to do pixel tests. std::cout << "\nActualHash: FAKEHASHSTUB\n"; std::cout << "Content-Type: image/png\n"; std::cout << "Content-Length: " << pixels.size() << "\n"; CHECK(pixels.size()) << "Could not dump pixels. Did you call notifyTestComplete before the first paint?"; std::cout.write( reinterpret_cast(&pixels[0]), pixels.size()); } std::cout << "#EOF\n"; std::cout.flush(); std::cerr << "#EOF\n"; std::cerr.flush(); client_->OnTestComplete(); } void TestRunner::Create(mojo::ApplicationConnection* app, mojo::InterfaceRequest request) { new TestHarnessImpl(this, request.Pass()); } } // namespace tester } // namespace sky