Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / components / test_runner / mock_web_midi_accessor.cc
blobf4cbbf5fb2a54aeb7b1af13d7ed9c8f1647c41b4
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.
5 #include "components/test_runner/mock_web_midi_accessor.h"
7 #include "components/test_runner/test_interfaces.h"
8 #include "components/test_runner/test_runner.h"
9 #include "components/test_runner/web_test_delegate.h"
10 #include "components/test_runner/web_test_runner.h"
11 #include "third_party/WebKit/public/platform/WebMIDIAccessorClient.h"
13 namespace test_runner {
15 namespace {
17 class DidStartSessionTask : public WebMethodTask<MockWebMIDIAccessor> {
18 public:
19 DidStartSessionTask(MockWebMIDIAccessor* object,
20 blink::WebMIDIAccessorClient* client,
21 bool result)
22 : WebMethodTask<MockWebMIDIAccessor>(object),
23 client_(client),
24 result_(result) {}
26 void RunIfValid() override {
27 client_->didStartSession(result_, "InvalidStateError", "");
30 private:
31 blink::WebMIDIAccessorClient* client_;
32 bool result_;
34 DISALLOW_COPY_AND_ASSIGN(DidStartSessionTask);
37 } // namespace
39 MockWebMIDIAccessor::MockWebMIDIAccessor(blink::WebMIDIAccessorClient* client,
40 TestInterfaces* interfaces)
41 : client_(client), interfaces_(interfaces) {
44 MockWebMIDIAccessor::~MockWebMIDIAccessor() {
47 void MockWebMIDIAccessor::startSession() {
48 // Add a mock input and output port.
49 blink::WebMIDIAccessorClient::MIDIPortState state =
50 blink::WebMIDIAccessorClient::MIDIPortStateConnected;
51 client_->didAddInputPort("MockInputID",
52 "MockInputManufacturer",
53 "MockInputName",
54 "MockInputVersion",
55 state);
56 client_->didAddOutputPort("MockOutputID",
57 "MockOutputManufacturer",
58 "MockOutputName",
59 "MockOutputVersion",
60 state);
61 interfaces_->GetDelegate()->PostTask(new DidStartSessionTask(
62 this, client_, interfaces_->GetTestRunner()->midiAccessorResult()));
65 void MockWebMIDIAccessor::sendMIDIData(unsigned port_index,
66 const unsigned char* data,
67 size_t length,
68 double timestamp) {
69 // Emulate a loopback device for testing.
70 client_->didReceiveMIDIData(port_index, data, length, timestamp);
73 } // namespace test_runner