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_MEDIA_WEBRTC_BROWSERTEST_BASE_H_
6#define CHROME_BROWSER_MEDIA_WEBRTC_BROWSERTEST_BASE_H_
7
8#include <string>
9
10#include "chrome/test/base/in_process_browser_test.h"
11
12namespace content {
13class WebContents;
14}
15
16class MediaStreamInfoBarDelegate;
17
18// Base class for WebRTC browser tests with useful primitives for interacting
19// getUserMedia. We use inheritance here because it makes the test code look
20// as clean as it can be.
21class WebRtcTestBase : public InProcessBrowserTest {
22 protected:
23  // Typical constraints.
24  static const char kAudioVideoCallConstraints[];
25  static const char kAudioOnlyCallConstraints[];
26  static const char kVideoOnlyCallConstraints[];
27
28  static const char kFailedWithErrorPermissionDenied[];
29
30  WebRtcTestBase();
31  virtual ~WebRtcTestBase();
32
33  void GetUserMediaAndAccept(content::WebContents* tab_contents);
34  void GetUserMediaWithSpecificConstraintsAndAccept(
35      content::WebContents* tab_contents,
36      const std::string& constraints);
37  void GetUserMediaAndDeny(content::WebContents* tab_contents);
38  void GetUserMediaWithSpecificConstraintsAndDeny(
39      content::WebContents* tab_contents,
40      const std::string& constraints);
41  void GetUserMediaAndDismiss(content::WebContents* tab_contents);
42  void GetUserMedia(content::WebContents* tab_contents,
43                    const std::string& constraints);
44
45 private:
46  MediaStreamInfoBarDelegate* GetUserMediaAndWaitForInfoBar(
47      content::WebContents* tab_contents,
48      const std::string& constraints);
49  void CloseInfoBarInTab(content::WebContents* tab_contents,
50                         MediaStreamInfoBarDelegate* infobar);
51
52  DISALLOW_COPY_AND_ASSIGN(WebRtcTestBase);
53};
54
55#endif  // CHROME_BROWSER_MEDIA_WEBRTC_BROWSERTEST_BASE_H_
56