| Index: chrome/browser/media/webrtc_browsertest_base.cc
|
| diff --git a/chrome/browser/media/webrtc_browsertest_base.cc b/chrome/browser/media/webrtc_browsertest_base.cc
|
| deleted file mode 100644
|
| index 4e574ab9b3fd090462a58125f5cd608f73d60be2..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/media/webrtc_browsertest_base.cc
|
| +++ /dev/null
|
| @@ -1,478 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/media/webrtc_browsertest_base.h"
|
| -
|
| -#include <stddef.h>
|
| -
|
| -#include "base/lazy_instance.h"
|
| -#include "base/macros.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "base/strings/stringprintf.h"
|
| -#include "build/build_config.h"
|
| -#include "chrome/browser/media/webrtc_browsertest_common.h"
|
| -#include "chrome/browser/permissions/permission_request_manager.h"
|
| -#include "chrome/browser/ui/browser.h"
|
| -#include "chrome/browser/ui/browser_tabstrip.h"
|
| -#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| -#include "chrome/test/base/ui_test_utils.h"
|
| -#include "content/public/test/browser_test_utils.h"
|
| -#include "net/test/embedded_test_server/embedded_test_server.h"
|
| -
|
| -#if defined(OS_WIN)
|
| -// For fine-grained suppression.
|
| -#include "base/win/windows_version.h"
|
| -#endif
|
| -
|
| -const char WebRtcTestBase::kAudioVideoCallConstraints[] =
|
| - "{audio: true, video: true}";
|
| -const char WebRtcTestBase::kVideoCallConstraintsQVGA[] =
|
| - "{video: {mandatory: {minWidth: 320, maxWidth: 320, "
|
| - " minHeight: 240, maxHeight: 240}}}";
|
| -const char WebRtcTestBase::kVideoCallConstraints360p[] =
|
| - "{video: {mandatory: {minWidth: 640, maxWidth: 640, "
|
| - " minHeight: 360, maxHeight: 360}}}";
|
| -const char WebRtcTestBase::kVideoCallConstraintsVGA[] =
|
| - "{video: {mandatory: {minWidth: 640, maxWidth: 640, "
|
| - " minHeight: 480, maxHeight: 480}}}";
|
| -const char WebRtcTestBase::kVideoCallConstraints720p[] =
|
| - "{video: {mandatory: {minWidth: 1280, maxWidth: 1280, "
|
| - " minHeight: 720, maxHeight: 720}}}";
|
| -const char WebRtcTestBase::kVideoCallConstraints1080p[] =
|
| - "{video: {mandatory: {minWidth: 1920, maxWidth: 1920, "
|
| - " minHeight: 1080, maxHeight: 1080}}}";
|
| -const char WebRtcTestBase::kAudioOnlyCallConstraints[] = "{audio: true}";
|
| -const char WebRtcTestBase::kVideoOnlyCallConstraints[] = "{video: true}";
|
| -const char WebRtcTestBase::kOkGotStream[] = "ok-got-stream";
|
| -const char WebRtcTestBase::kFailedWithPermissionDeniedError[] =
|
| - "failed-with-error-PermissionDeniedError";
|
| -const char WebRtcTestBase::kFailedWithPermissionDismissedError[] =
|
| - "failed-with-error-PermissionDismissedError";
|
| -const char WebRtcTestBase::kAudioVideoCallConstraints360p[] =
|
| - "{audio: true, video: {mandatory: {minWidth: 640, maxWidth: 640, "
|
| - " minHeight: 360, maxHeight: 360}}}";
|
| -const char WebRtcTestBase::kAudioVideoCallConstraints720p[] =
|
| - "{audio: true, video: {mandatory: {minWidth: 1280, maxWidth: 1280, "
|
| - " minHeight: 720, maxHeight: 720}}}";
|
| -const char WebRtcTestBase::kUseDefaultCertKeygen[] = "null";
|
| -const char WebRtcTestBase::kUseDefaultVideoCodec[] = "";
|
| -
|
| -namespace {
|
| -
|
| -base::LazyInstance<bool> hit_javascript_errors_ =
|
| - LAZY_INSTANCE_INITIALIZER;
|
| -
|
| -// Intercepts all log messages. We always attach this handler but only look at
|
| -// the results if the test requests so. Note that this will only work if the
|
| -// WebrtcTestBase-inheriting test cases do not run in parallel (if they did they
|
| -// would race to look at the log, which is global to all tests).
|
| -bool JavascriptErrorDetectingLogHandler(int severity,
|
| - const char* file,
|
| - int line,
|
| - size_t message_start,
|
| - const std::string& str) {
|
| - if (file == NULL || std::string("CONSOLE") != file)
|
| - return false;
|
| -
|
| - bool contains_uncaught = str.find("\"Uncaught ") != std::string::npos;
|
| - if (severity == logging::LOG_ERROR ||
|
| - (severity == logging::LOG_INFO && contains_uncaught)) {
|
| - hit_javascript_errors_.Get() = true;
|
| - }
|
| -
|
| - return false;
|
| -}
|
| -
|
| -// PermissionRequestObserver ---------------------------------------------------
|
| -
|
| -// Used to observe the creation of permission prompt without responding.
|
| -class PermissionRequestObserver : public PermissionRequestManager::Observer {
|
| - public:
|
| - explicit PermissionRequestObserver(content::WebContents* web_contents)
|
| - : request_manager_(
|
| - PermissionRequestManager::FromWebContents(web_contents)),
|
| - request_shown_(false),
|
| - message_loop_runner_(new content::MessageLoopRunner) {
|
| - request_manager_->AddObserver(this);
|
| - }
|
| - ~PermissionRequestObserver() override {
|
| - // Safe to remove twice if it happens.
|
| - request_manager_->RemoveObserver(this);
|
| - }
|
| -
|
| - void Wait() { message_loop_runner_->Run(); }
|
| -
|
| - bool request_shown() const { return request_shown_; }
|
| -
|
| - private:
|
| - // PermissionRequestManager::Observer
|
| - void OnBubbleAdded() override {
|
| - request_shown_ = true;
|
| - request_manager_->RemoveObserver(this);
|
| - message_loop_runner_->Quit();
|
| - }
|
| -
|
| - PermissionRequestManager* request_manager_;
|
| - bool request_shown_;
|
| - scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(PermissionRequestObserver);
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -WebRtcTestBase::WebRtcTestBase(): detect_errors_in_javascript_(false) {
|
| - // The handler gets set for each test method, but that's fine since this
|
| - // set operation is idempotent.
|
| - logging::SetLogMessageHandler(&JavascriptErrorDetectingLogHandler);
|
| - hit_javascript_errors_.Get() = false;
|
| -
|
| - EnablePixelOutput();
|
| -}
|
| -
|
| -WebRtcTestBase::~WebRtcTestBase() {
|
| - if (detect_errors_in_javascript_) {
|
| - EXPECT_FALSE(hit_javascript_errors_.Get())
|
| - << "Encountered javascript errors during test execution (Search "
|
| - << "for Uncaught or ERROR:CONSOLE in the test output).";
|
| - }
|
| -}
|
| -
|
| -bool WebRtcTestBase::GetUserMediaAndAccept(
|
| - content::WebContents* tab_contents) const {
|
| - return GetUserMediaWithSpecificConstraintsAndAccept(
|
| - tab_contents, kAudioVideoCallConstraints);
|
| -}
|
| -
|
| -bool WebRtcTestBase::GetUserMediaWithSpecificConstraintsAndAccept(
|
| - content::WebContents* tab_contents,
|
| - const std::string& constraints) const {
|
| - std::string result;
|
| - PermissionRequestManager::FromWebContents(tab_contents)
|
| - ->set_auto_response_for_test(PermissionRequestManager::ACCEPT_ALL);
|
| - PermissionRequestObserver permissionRequestObserver(tab_contents);
|
| - GetUserMedia(tab_contents, constraints);
|
| - EXPECT_TRUE(permissionRequestObserver.request_shown());
|
| - EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| - tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result));
|
| - return kOkGotStream == result;
|
| -}
|
| -
|
| -bool WebRtcTestBase::GetUserMediaWithSpecificConstraintsAndAcceptIfPrompted(
|
| - content::WebContents* tab_contents,
|
| - const std::string& constraints) const {
|
| - std::string result;
|
| - PermissionRequestManager::FromWebContents(tab_contents)
|
| - ->set_auto_response_for_test(PermissionRequestManager::ACCEPT_ALL);
|
| - GetUserMedia(tab_contents, constraints);
|
| - EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| - tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result));
|
| - return kOkGotStream == result;
|
| -}
|
| -
|
| -void WebRtcTestBase::GetUserMediaAndDeny(content::WebContents* tab_contents) {
|
| - return GetUserMediaWithSpecificConstraintsAndDeny(tab_contents,
|
| - kAudioVideoCallConstraints);
|
| -}
|
| -
|
| -void WebRtcTestBase::GetUserMediaWithSpecificConstraintsAndDeny(
|
| - content::WebContents* tab_contents,
|
| - const std::string& constraints) const {
|
| - std::string result;
|
| - PermissionRequestManager::FromWebContents(tab_contents)
|
| - ->set_auto_response_for_test(PermissionRequestManager::DENY_ALL);
|
| - PermissionRequestObserver permissionRequestObserver(tab_contents);
|
| - GetUserMedia(tab_contents, constraints);
|
| - EXPECT_TRUE(permissionRequestObserver.request_shown());
|
| - EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| - tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result));
|
| - EXPECT_EQ(kFailedWithPermissionDeniedError, result);
|
| -}
|
| -
|
| -void WebRtcTestBase::GetUserMediaAndDismiss(
|
| - content::WebContents* tab_contents) const {
|
| - std::string result;
|
| - PermissionRequestManager::FromWebContents(tab_contents)
|
| - ->set_auto_response_for_test(PermissionRequestManager::DISMISS);
|
| - PermissionRequestObserver permissionRequestObserver(tab_contents);
|
| - GetUserMedia(tab_contents, kAudioVideoCallConstraints);
|
| - EXPECT_TRUE(permissionRequestObserver.request_shown());
|
| - // A dismiss should be treated like a deny.
|
| - EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| - tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result));
|
| - EXPECT_EQ(kFailedWithPermissionDismissedError, result);
|
| -}
|
| -
|
| -void WebRtcTestBase::GetUserMediaAndExpectAutoAcceptWithoutPrompt(
|
| - content::WebContents* tab_contents) const {
|
| - std::string result;
|
| - // We issue a GetUserMedia() request. We expect that the origin already has a
|
| - // sticky "accept" permission (e.g. because the caller previously called
|
| - // GetUserMediaAndAccept()), and therefore the GetUserMedia() request
|
| - // automatically succeeds without a prompt.
|
| - // If the caller made a mistake, a prompt may show up instead. For this case,
|
| - // we set an auto-response to avoid leaving the prompt hanging. The choice of
|
| - // DENY_ALL makes sure that the response to the prompt doesn't accidentally
|
| - // result in a newly granted media stream permission.
|
| - PermissionRequestManager::FromWebContents(tab_contents)
|
| - ->set_auto_response_for_test(PermissionRequestManager::DENY_ALL);
|
| - PermissionRequestObserver permissionRequestObserver(tab_contents);
|
| - GetUserMedia(tab_contents, kAudioVideoCallConstraints);
|
| - EXPECT_FALSE(permissionRequestObserver.request_shown());
|
| - EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| - tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result));
|
| - EXPECT_EQ(kOkGotStream, result);
|
| -}
|
| -
|
| -void WebRtcTestBase::GetUserMediaAndExpectAutoDenyWithoutPrompt(
|
| - content::WebContents* tab_contents) const {
|
| - std::string result;
|
| - // We issue a GetUserMedia() request. We expect that the origin already has a
|
| - // sticky "deny" permission (e.g. because the caller previously called
|
| - // GetUserMediaAndDeny()), and therefore the GetUserMedia() request
|
| - // automatically succeeds without a prompt.
|
| - // If the caller made a mistake, a prompt may show up instead. For this case,
|
| - // we set an auto-response to avoid leaving the prompt hanging. The choice of
|
| - // ACCEPT_ALL makes sure that the response to the prompt doesn't accidentally
|
| - // result in a newly granted media stream permission.
|
| - PermissionRequestManager::FromWebContents(tab_contents)
|
| - ->set_auto_response_for_test(PermissionRequestManager::ACCEPT_ALL);
|
| - PermissionRequestObserver permissionRequestObserver(tab_contents);
|
| - GetUserMedia(tab_contents, kAudioVideoCallConstraints);
|
| - EXPECT_FALSE(permissionRequestObserver.request_shown());
|
| - EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| - tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result));
|
| - EXPECT_EQ(kFailedWithPermissionDeniedError, result);
|
| -}
|
| -
|
| -void WebRtcTestBase::GetUserMedia(content::WebContents* tab_contents,
|
| - const std::string& constraints) const {
|
| - // Request user media: this will launch the media stream info bar or bubble.
|
| - std::string result;
|
| - EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| - tab_contents, "doGetUserMedia(" + constraints + ");", &result));
|
| - EXPECT_TRUE(result == "request-callback-denied" ||
|
| - result == "request-callback-granted");
|
| -}
|
| -
|
| -content::WebContents* WebRtcTestBase::OpenPageAndGetUserMediaInNewTab(
|
| - const GURL& url) const {
|
| - return OpenPageAndGetUserMediaInNewTabWithConstraints(
|
| - url, kAudioVideoCallConstraints);
|
| -}
|
| -
|
| -content::WebContents*
|
| -WebRtcTestBase::OpenPageAndGetUserMediaInNewTabWithConstraints(
|
| - const GURL& url,
|
| - const std::string& constraints) const {
|
| - chrome::AddTabAt(browser(), GURL(), -1, true);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| - content::WebContents* new_tab =
|
| - browser()->tab_strip_model()->GetActiveWebContents();
|
| - // Accept if necessary, but don't expect a prompt (because auto-accept is also
|
| - // okay).
|
| - PermissionRequestManager::FromWebContents(new_tab)
|
| - ->set_auto_response_for_test(PermissionRequestManager::ACCEPT_ALL);
|
| - GetUserMedia(new_tab, constraints);
|
| - std::string result;
|
| - EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| - new_tab->GetMainFrame(), "obtainGetUserMediaResult();", &result));
|
| - EXPECT_EQ(kOkGotStream, result);
|
| - return new_tab;
|
| -}
|
| -
|
| -content::WebContents* WebRtcTestBase::OpenTestPageAndGetUserMediaInNewTab(
|
| - const std::string& test_page) const {
|
| - return OpenPageAndGetUserMediaInNewTab(
|
| - embedded_test_server()->GetURL(test_page));
|
| -}
|
| -
|
| -void WebRtcTestBase::CloseLastLocalStream(
|
| - content::WebContents* tab_contents) const {
|
| - EXPECT_EQ("ok-stopped",
|
| - ExecuteJavascript("stopLocalStream();", tab_contents));
|
| -}
|
| -
|
| -// Convenience method which executes the provided javascript in the context
|
| -// of the provided web contents and returns what it evaluated to.
|
| -std::string WebRtcTestBase::ExecuteJavascript(
|
| - const std::string& javascript,
|
| - content::WebContents* tab_contents) const {
|
| - std::string result;
|
| - EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| - tab_contents, javascript, &result));
|
| - return result;
|
| -}
|
| -
|
| -void WebRtcTestBase::SetupPeerconnectionWithLocalStream(
|
| - content::WebContents* tab,
|
| - const std::string& certificate_keygen_algorithm) const {
|
| - SetupPeerconnectionWithoutLocalStream(tab, certificate_keygen_algorithm);
|
| - EXPECT_EQ("ok-added", ExecuteJavascript("addLocalStream()", tab));
|
| -}
|
| -
|
| -void WebRtcTestBase::SetupPeerconnectionWithoutLocalStream(
|
| - content::WebContents* tab,
|
| - const std::string& certificate_keygen_algorithm) const {
|
| - std::string javascript = base::StringPrintf(
|
| - "preparePeerConnection(%s)", certificate_keygen_algorithm.c_str());
|
| - EXPECT_EQ("ok-peerconnection-created", ExecuteJavascript(javascript, tab));
|
| -}
|
| -
|
| -void WebRtcTestBase::SetupPeerconnectionWithCertificateAndLocalStream(
|
| - content::WebContents* tab,
|
| - const std::string& certificate) const {
|
| - SetupPeerconnectionWithCertificateWithoutLocalStream(tab, certificate);
|
| - EXPECT_EQ("ok-added", ExecuteJavascript("addLocalStream()", tab));
|
| -}
|
| -
|
| -void WebRtcTestBase::SetupPeerconnectionWithCertificateWithoutLocalStream(
|
| - content::WebContents* tab,
|
| - const std::string& certificate) const {
|
| - std::string javascript = base::StringPrintf(
|
| - "preparePeerConnectionWithCertificate(%s)", certificate.c_str());
|
| - EXPECT_EQ("ok-peerconnection-created", ExecuteJavascript(javascript, tab));
|
| -}
|
| -
|
| -std::string WebRtcTestBase::CreateLocalOffer(
|
| - content::WebContents* from_tab) const {
|
| - std::string response = ExecuteJavascript("createLocalOffer({})", from_tab);
|
| - EXPECT_EQ("ok-", response.substr(0, 3)) << "Failed to create local offer: "
|
| - << response;
|
| -
|
| - std::string local_offer = response.substr(3);
|
| - return local_offer;
|
| -}
|
| -
|
| -std::string WebRtcTestBase::CreateAnswer(std::string local_offer,
|
| - content::WebContents* to_tab) const {
|
| - std::string javascript =
|
| - base::StringPrintf("receiveOfferFromPeer('%s', {})", local_offer.c_str());
|
| - std::string response = ExecuteJavascript(javascript, to_tab);
|
| - EXPECT_EQ("ok-", response.substr(0, 3))
|
| - << "Receiving peer failed to receive offer and create answer: "
|
| - << response;
|
| -
|
| - std::string answer = response.substr(3);
|
| - response = ExecuteJavascript(
|
| - base::StringPrintf("verifyDefaultVideoCodec('%s')", answer.c_str()),
|
| - to_tab);
|
| - EXPECT_EQ("ok-", response.substr(0, 3))
|
| - << "Receiving peer failed to verify default codec: " << response;
|
| - return answer;
|
| -}
|
| -
|
| -void WebRtcTestBase::ReceiveAnswer(const std::string& answer,
|
| - content::WebContents* from_tab) const {
|
| - ASSERT_EQ(
|
| - "ok-accepted-answer",
|
| - ExecuteJavascript(
|
| - base::StringPrintf("receiveAnswerFromPeer('%s')", answer.c_str()),
|
| - from_tab));
|
| -}
|
| -
|
| -void WebRtcTestBase::GatherAndSendIceCandidates(
|
| - content::WebContents* from_tab,
|
| - content::WebContents* to_tab) const {
|
| - std::string ice_candidates =
|
| - ExecuteJavascript("getAllIceCandidates()", from_tab);
|
| -
|
| - EXPECT_EQ("ok-received-candidates", ExecuteJavascript(
|
| - base::StringPrintf("receiveIceCandidates('%s')", ice_candidates.c_str()),
|
| - to_tab));
|
| -}
|
| -
|
| -void WebRtcTestBase::NegotiateCall(content::WebContents* from_tab,
|
| - content::WebContents* to_tab) const {
|
| - std::string local_offer = CreateLocalOffer(from_tab);
|
| - std::string answer = CreateAnswer(local_offer, to_tab);
|
| - ReceiveAnswer(answer, from_tab);
|
| -
|
| - // Send all ICE candidates (wait for gathering to finish if necessary).
|
| - GatherAndSendIceCandidates(to_tab, from_tab);
|
| - GatherAndSendIceCandidates(from_tab, to_tab);
|
| -}
|
| -
|
| -void WebRtcTestBase::HangUp(content::WebContents* from_tab) const {
|
| - EXPECT_EQ("ok-call-hung-up", ExecuteJavascript("hangUp()", from_tab));
|
| -}
|
| -
|
| -void WebRtcTestBase::DetectErrorsInJavaScript() {
|
| - detect_errors_in_javascript_ = true;
|
| -}
|
| -
|
| -void WebRtcTestBase::StartDetectingVideo(
|
| - content::WebContents* tab_contents,
|
| - const std::string& video_element) const {
|
| - std::string javascript = base::StringPrintf(
|
| - "startDetection('%s', 320, 240)", video_element.c_str());
|
| - EXPECT_EQ("ok-started", ExecuteJavascript(javascript, tab_contents));
|
| -}
|
| -
|
| -bool WebRtcTestBase::WaitForVideoToPlay(
|
| - content::WebContents* tab_contents) const {
|
| - bool is_video_playing = test::PollingWaitUntil(
|
| - "isVideoPlaying()", "video-playing", tab_contents);
|
| - EXPECT_TRUE(is_video_playing);
|
| - return is_video_playing;
|
| -}
|
| -
|
| -std::string WebRtcTestBase::GetStreamSize(
|
| - content::WebContents* tab_contents,
|
| - const std::string& video_element) const {
|
| - std::string javascript =
|
| - base::StringPrintf("getStreamSize('%s')", video_element.c_str());
|
| - std::string result = ExecuteJavascript(javascript, tab_contents);
|
| - EXPECT_TRUE(base::StartsWith(result, "ok-", base::CompareCase::SENSITIVE));
|
| - return result.substr(3);
|
| -}
|
| -
|
| -bool WebRtcTestBase::HasWebcamAvailableOnSystem(
|
| - content::WebContents* tab_contents) const {
|
| - std::string result =
|
| - ExecuteJavascript("hasVideoInputDeviceOnSystem();", tab_contents);
|
| - return result == "has-video-input-device";
|
| -}
|
| -
|
| -bool WebRtcTestBase::OnWin8() const {
|
| -#if defined(OS_WIN)
|
| - return base::win::GetVersion() > base::win::VERSION_WIN7;
|
| -#else
|
| - return false;
|
| -#endif
|
| -}
|
| -
|
| -void WebRtcTestBase::OpenDatabase(content::WebContents* tab) const {
|
| - EXPECT_EQ("ok-database-opened", ExecuteJavascript("openDatabase()", tab));
|
| -}
|
| -
|
| -void WebRtcTestBase::CloseDatabase(content::WebContents* tab) const {
|
| - EXPECT_EQ("ok-database-closed", ExecuteJavascript("closeDatabase()", tab));
|
| -}
|
| -
|
| -void WebRtcTestBase::DeleteDatabase(content::WebContents* tab) const {
|
| - EXPECT_EQ("ok-database-deleted", ExecuteJavascript("deleteDatabase()", tab));
|
| -}
|
| -
|
| -void WebRtcTestBase::GenerateAndCloneCertificate(
|
| - content::WebContents* tab, const std::string& keygen_algorithm) const {
|
| - std::string javascript = base::StringPrintf(
|
| - "generateAndCloneCertificate(%s)", keygen_algorithm.c_str());
|
| - EXPECT_EQ("ok-generated-and-cloned", ExecuteJavascript(javascript, tab));
|
| -}
|
| -
|
| -void WebRtcTestBase::VerifyStatsGenerated(content::WebContents* tab) const {
|
| - EXPECT_EQ("ok-got-stats", ExecuteJavascript("verifyStatsGenerated()", tab));
|
| -}
|
| -
|
| -void WebRtcTestBase::SetDefaultVideoCodec(
|
| - content::WebContents* tab,
|
| - const std::string& video_codec) const {
|
| - EXPECT_EQ("ok-forced",
|
| - ExecuteJavascript("forceVideoCodec('" + video_codec + "')", tab));
|
| -}
|
| -
|
| -void WebRtcTestBase::EnableOpusDtx(content::WebContents* tab) const {
|
| - EXPECT_EQ("ok-forced", ExecuteJavascript("forceOpusDtx()", tab));
|
| -}
|
|
|