1// Copyright (c) 2012 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 CONTENT_RENDERER_MEDIA_MOCK_MEDIA_STREAM_DISPATCHER_H_
6#define CONTENT_RENDERER_MEDIA_MOCK_MEDIA_STREAM_DISPATCHER_H_
7
8#include <string>
9
10#include "content/renderer/media/media_stream_dispatcher.h"
11#include "url/gurl.h"
12
13namespace content {
14
15// This class is a mock implementation of MediaStreamDispatcher.
16class MockMediaStreamDispatcher : public MediaStreamDispatcher {
17 public:
18  MockMediaStreamDispatcher();
19  virtual ~MockMediaStreamDispatcher();
20
21  virtual void GenerateStream(
22      int request_id,
23      const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler,
24      const StreamOptions& components,
25      const GURL& url) OVERRIDE;
26  virtual void CancelGenerateStream(
27      int request_id,
28      const base::WeakPtr<MediaStreamDispatcherEventHandler>&
29          event_handler) OVERRIDE;
30  virtual void EnumerateDevices(
31      int request_id,
32      const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler,
33      MediaStreamType type,
34      const GURL& security_origin) OVERRIDE;
35  virtual void StopStreamDevice(const StreamDeviceInfo& device_info) OVERRIDE;
36  virtual bool IsStream(const std::string& label) OVERRIDE;
37  virtual int video_session_id(const std::string& label, int index) OVERRIDE;
38  virtual int audio_session_id(const std::string& label, int index) OVERRIDE;
39
40  int audio_input_request_id() const { return audio_input_request_id_; }
41  int audio_output_request_id() const { return audio_output_request_id_; }
42  int video_request_id() const { return video_request_id_; }
43  int request_stream_counter() const { return request_stream_counter_; }
44  void IncrementSessionId() { ++session_id_; }
45
46  int stop_audio_device_counter() const { return stop_audio_device_counter_; }
47  int stop_video_device_counter() const { return stop_video_device_counter_; }
48
49  const std::string& stream_label() const { return stream_label_;}
50  const StreamDeviceInfoArray& audio_input_array() const {
51    return audio_input_array_;
52  }
53  const StreamDeviceInfoArray& audio_output_array() const {
54    return audio_output_array_;
55  }
56  const StreamDeviceInfoArray& video_array() const { return video_array_; }
57
58 private:
59  void AddAudioInputDeviceToArray(bool matched_output);
60  void AddAudioOutputDeviceToArray();
61  void AddVideoDeviceToArray(bool facing_user);
62
63  int audio_input_request_id_;
64  int audio_output_request_id_;  // Only used for EnumerateDevices.
65  int video_request_id_;  // Only used for EnumerateDevices.
66  base::WeakPtr<MediaStreamDispatcherEventHandler> event_handler_;
67  int request_stream_counter_;
68  int stop_audio_device_counter_;
69  int stop_video_device_counter_;
70
71  std::string stream_label_;
72  int session_id_;
73  StreamDeviceInfoArray audio_input_array_;
74  StreamDeviceInfoArray audio_output_array_;
75  StreamDeviceInfoArray video_array_;
76
77  DISALLOW_COPY_AND_ASSIGN(MockMediaStreamDispatcher);
78};
79
80}  // namespace content
81
82#endif  // CONTENT_RENDERER_MEDIA_MOCK_MEDIA_STREAM_DISPATCHER_H_
83