OLD | NEW |
| (Empty) |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "sky/tools/tester/test_runner.h" | |
6 | |
7 #include <iostream> | |
8 #include "base/bind.h" | |
9 #include "mojo/public/cpp/application/connect.h" | |
10 #include "mojo/services/view_manager/public/cpp/view.h" | |
11 | |
12 namespace sky { | |
13 namespace tester { | |
14 | |
15 TestRunnerClient::~TestRunnerClient() { | |
16 } | |
17 | |
18 TestRunner::TestRunner(TestRunnerClient* client, | |
19 mojo::View* container, | |
20 const std::string& url, | |
21 bool enable_pixel_dumping) | |
22 : client_(client), | |
23 enable_pixel_dumping_(enable_pixel_dumping), | |
24 weak_ptr_factory_(this) { | |
25 CHECK(client); | |
26 | |
27 mojo::ServiceProviderPtr test_harness_provider; | |
28 test_harness_provider_impl_.AddService(this); | |
29 test_harness_provider_impl_.Bind(GetProxy(&test_harness_provider)); | |
30 | |
31 container->Embed(url, nullptr, test_harness_provider.Pass()); | |
32 } | |
33 | |
34 TestRunner::~TestRunner() { | |
35 } | |
36 | |
37 base::WeakPtr<TestRunner> TestRunner::GetWeakPtr() { | |
38 return weak_ptr_factory_.GetWeakPtr(); | |
39 } | |
40 | |
41 void TestRunner::OnTestStart() { | |
42 std::cout << "#BEGIN\n"; | |
43 std::cout.flush(); | |
44 } | |
45 | |
46 void TestRunner::OnTestComplete(const std::string& test_result, | |
47 const mojo::Array<uint8_t>& pixels) { | |
48 std::cout << "Content-Type: text/plain\n"; | |
49 std::cout << test_result << "\n"; | |
50 std::cout << "#EOF\n"; | |
51 | |
52 // TODO(ojan): Don't generate the pixels if enable_pixel_dumping_ is false. | |
53 if (enable_pixel_dumping_) { | |
54 // TODO(ojan): Add real hashes here once we want to do pixel tests. | |
55 std::cout << "\nActualHash: FAKEHASHSTUB\n"; | |
56 std::cout << "Content-Type: image/png\n"; | |
57 std::cout << "Content-Length: " << pixels.size() << "\n"; | |
58 CHECK(pixels.size()) << "Could not dump pixels. Did you call notifyTestCompl
ete before the first paint?"; | |
59 std::cout.write( | |
60 reinterpret_cast<const char*>(&pixels[0]), pixels.size()); | |
61 } | |
62 | |
63 std::cout << "#EOF\n"; | |
64 std::cout.flush(); | |
65 std::cerr << "#EOF\n"; | |
66 std::cerr.flush(); | |
67 | |
68 client_->OnTestComplete(); | |
69 } | |
70 | |
71 void TestRunner::Create(mojo::ApplicationConnection* app, | |
72 mojo::InterfaceRequest<TestHarness> request) { | |
73 new TestHarnessImpl(this, request.Pass()); | |
74 } | |
75 | |
76 } // namespace tester | |
77 } // namespace sky | |
OLD | NEW |