1// Copyright 2013 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#ifndef CHROME_BROWSER_LOCAL_DISCOVERY_TEST_SERVICE_DISCOVERY_CLIENT_H_
6#define CHROME_BROWSER_LOCAL_DISCOVERY_TEST_SERVICE_DISCOVERY_CLIENT_H_
7
8#include "chrome/browser/local_discovery/service_discovery_shared_client.h"
9#include "chrome/common/local_discovery/service_discovery_client.h"
10#include "net/dns/mdns_client.h"
11#include "net/dns/mock_mdns_socket_factory.h"
12#include "testing/gmock/include/gmock/gmock.h"
13
14namespace local_discovery {
15
16class TestServiceDiscoveryClient : public ServiceDiscoverySharedClient {
17 public:
18  TestServiceDiscoveryClient();
19
20  void Start();
21
22  virtual scoped_ptr<ServiceWatcher> CreateServiceWatcher(
23      const std::string& service_type,
24      const ServiceWatcher::UpdatedCallback& callback) OVERRIDE;
25  virtual scoped_ptr<ServiceResolver> CreateServiceResolver(
26      const std::string& service_name,
27      const ServiceResolver::ResolveCompleteCallback& callback) OVERRIDE;
28  virtual scoped_ptr<LocalDomainResolver> CreateLocalDomainResolver(
29      const std::string& domain,
30      net::AddressFamily address_family,
31      const LocalDomainResolver::IPAddressCallback& callback) OVERRIDE;
32
33  MOCK_METHOD1(OnSendTo, void(const std::string& data));
34
35  void SimulateReceive(const uint8* packet, int size);
36
37 private:
38  ~TestServiceDiscoveryClient();
39
40  // Owned by mdns_client_impl_.
41  net::MockMDnsSocketFactory mock_socket_factory_;
42  scoped_ptr<net::MDnsClient> mdns_client_;
43  scoped_ptr<ServiceDiscoveryClient> service_discovery_client_impl_;
44};
45
46}  // namespace local_discovery
47
48#endif  // CHROME_BROWSER_LOCAL_DISCOVERY_TEST_SERVICE_DISCOVERY_CLIENT_H_
49