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 |
index 2953503275b8bf45feaa354813335f81df216740..8b9134e8be3c7097d63608425a415a06b925847f 100644 |
--- a/chrome/browser/media/webrtc_browsertest_base.cc |
+++ b/chrome/browser/media/webrtc_browsertest_base.cc |
@@ -7,18 +7,15 @@ |
#include "base/lazy_instance.h" |
#include "base/strings/string_util.h" |
#include "base/strings/stringprintf.h" |
-#include "chrome/browser/chrome_notification_types.h" |
+#include "chrome/browser/infobars/infobar_responder.h" |
#include "chrome/browser/infobars/infobar_service.h" |
-#include "chrome/browser/media/media_stream_infobar_delegate.h" |
#include "chrome/browser/media/webrtc_browsertest_common.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/browser/ui/website_settings/mock_permission_bubble_view.h" |
#include "chrome/browser/ui/website_settings/permission_bubble_manager.h" |
#include "chrome/test/base/ui_test_utils.h" |
#include "components/infobars/core/infobar.h" |
-#include "content/public/browser/notification_service.h" |
#include "content/public/test/browser_test_utils.h" |
#include "net/test/embedded_test_server/embedded_test_server.h" |
@@ -112,30 +109,22 @@ bool WebRtcTestBase::GetUserMediaAndAccept( |
bool WebRtcTestBase::GetUserMediaWithSpecificConstraintsAndAccept( |
content::WebContents* tab_contents, |
const std::string& constraints) const { |
+ std::string result; |
if (PermissionBubbleManager::Enabled()) { |
- scoped_ptr<MockPermissionBubbleView> mock_bubble_view( |
- new MockPermissionBubbleView()); |
PermissionBubbleManager::FromWebContents(tab_contents) |
- ->SetView(mock_bubble_view.get()); |
- mock_bubble_view->SetBrowserTest(true); |
+ ->set_auto_response_for_test(PermissionBubbleManager::ACCEPT_ALL); |
GetUserMedia(tab_contents, constraints); |
- if (!mock_bubble_view->IsVisible()) |
- content::RunMessageLoop(); |
- mock_bubble_view->Accept(); |
- // Wait for WebRTC to call the success callback, then remove the view. |
- const bool result = test::PollingWaitUntil("obtainGetUserMediaResult()", |
- kOkGotStream, tab_contents); |
- PermissionBubbleManager::FromWebContents(tab_contents)->SetView(NULL); |
- return result; |
+ EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
+ tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result)); |
} else { |
- infobars::InfoBar* infobar = |
- GetUserMediaAndWaitForInfoBar(tab_contents, constraints); |
- infobar->delegate()->AsConfirmInfoBarDelegate()->Accept(); |
- CloseInfoBarInTab(tab_contents, infobar); |
- // Wait for WebRTC to call the success callback. |
- return test::PollingWaitUntil("obtainGetUserMediaResult()", kOkGotStream, |
- tab_contents); |
+ InfoBarResponder infobar_accept_responder( |
+ InfoBarService::FromWebContents(tab_contents), |
+ InfoBarResponder::ACCEPT); |
+ GetUserMedia(tab_contents, constraints); |
+ EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
+ tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result)); |
} |
+ return kOkGotStream == result; |
} |
void WebRtcTestBase::GetUserMediaAndDeny(content::WebContents* tab_contents) { |
@@ -146,87 +135,53 @@ void WebRtcTestBase::GetUserMediaAndDeny(content::WebContents* tab_contents) { |
void WebRtcTestBase::GetUserMediaWithSpecificConstraintsAndDeny( |
content::WebContents* tab_contents, |
const std::string& constraints) const { |
+ std::string result; |
if (PermissionBubbleManager::Enabled()) { |
- scoped_ptr<MockPermissionBubbleView> mock_bubble_view( |
- new MockPermissionBubbleView()); |
PermissionBubbleManager::FromWebContents(tab_contents) |
- ->SetView(mock_bubble_view.get()); |
- mock_bubble_view->SetBrowserTest(true); |
+ ->set_auto_response_for_test(PermissionBubbleManager::DENY_ALL); |
GetUserMedia(tab_contents, constraints); |
- if (!mock_bubble_view->IsVisible()) |
- content::RunMessageLoop(); |
- mock_bubble_view->Deny(); |
- // Wait for WebRTC to call the fail callback, then remove the view. |
- EXPECT_TRUE(test::PollingWaitUntil("obtainGetUserMediaResult()", |
- kFailedWithPermissionDeniedError, |
- tab_contents)); |
- PermissionBubbleManager::FromWebContents(tab_contents)->SetView(NULL); |
+ EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
+ tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result)); |
} else { |
- infobars::InfoBar* infobar = |
- GetUserMediaAndWaitForInfoBar(tab_contents, constraints); |
- infobar->delegate()->AsConfirmInfoBarDelegate()->Cancel(); |
- CloseInfoBarInTab(tab_contents, infobar); |
- // Wait for WebRTC to call the fail callback. |
- EXPECT_TRUE(test::PollingWaitUntil("obtainGetUserMediaResult()", |
- kFailedWithPermissionDeniedError, |
- tab_contents)); |
+ InfoBarResponder infobar_deny_responder( |
+ InfoBarService::FromWebContents(tab_contents), InfoBarResponder::DENY); |
+ GetUserMedia(tab_contents, constraints); |
+ EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
+ tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result)); |
} |
+ EXPECT_EQ(kFailedWithPermissionDeniedError, result); |
} |
void WebRtcTestBase::GetUserMediaAndDismiss( |
content::WebContents* tab_contents) const { |
+ std::string result; |
if (PermissionBubbleManager::Enabled()) { |
- scoped_ptr<MockPermissionBubbleView> mock_bubble_view( |
- new MockPermissionBubbleView()); |
PermissionBubbleManager::FromWebContents(tab_contents) |
- ->SetView(mock_bubble_view.get()); |
- mock_bubble_view->SetBrowserTest(true); |
+ ->set_auto_response_for_test(PermissionBubbleManager::DISMISS); |
GetUserMedia(tab_contents, kAudioVideoCallConstraints); |
- if (!mock_bubble_view->IsVisible()) |
- content::RunMessageLoop(); |
- mock_bubble_view->Close(); |
// A dismiss should be treated like a deny. |
- EXPECT_TRUE(test::PollingWaitUntil("obtainGetUserMediaResult()", |
- kFailedWithPermissionDismissedError, |
- tab_contents)); |
- PermissionBubbleManager::FromWebContents(tab_contents)->SetView(NULL); |
+ EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
+ tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result)); |
} else { |
- infobars::InfoBar* infobar = |
- GetUserMediaAndWaitForInfoBar(tab_contents, kAudioVideoCallConstraints); |
- infobar->delegate()->InfoBarDismissed(); |
- CloseInfoBarInTab(tab_contents, infobar); |
+ InfoBarResponder infobar_dismiss_responder( |
+ InfoBarService::FromWebContents(tab_contents), |
+ InfoBarResponder::DISMISS); |
+ GetUserMedia(tab_contents, kAudioVideoCallConstraints); |
// A dismiss should be treated like a deny. |
- EXPECT_TRUE(test::PollingWaitUntil("obtainGetUserMediaResult()", |
- kFailedWithPermissionDismissedError, |
- tab_contents)); |
+ EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
+ tab_contents->GetMainFrame(), "obtainGetUserMediaResult();", &result)); |
} |
+ EXPECT_EQ(kFailedWithPermissionDismissedError, result); |
} |
void WebRtcTestBase::GetUserMedia(content::WebContents* tab_contents, |
const std::string& constraints) const { |
- // Request user media: this will launch the media stream info bar. |
+ // 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_EQ("ok-requested", result); |
-} |
- |
-infobars::InfoBar* WebRtcTestBase::GetUserMediaAndWaitForInfoBar( |
- content::WebContents* tab_contents, |
- const std::string& constraints) const { |
- content::WindowedNotificationObserver infobar_added( |
- chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_ADDED, |
- content::NotificationService::AllSources()); |
- |
- // Request user media: this will launch the media stream info bar. |
- GetUserMedia(tab_contents, constraints); |
- |
- // Wait for the bar to pop up, then return it. |
- infobar_added.Wait(); |
- content::Details<infobars::InfoBar::AddedDetails> details( |
- infobar_added.details()); |
- EXPECT_TRUE(details->delegate()->AsMediaStreamInfoBarDelegate()); |
- return details.ptr(); |
+ EXPECT_TRUE(result == "request-callback-denied" || |
+ result == "request-callback-granted"); |
} |
content::WebContents* WebRtcTestBase::OpenPageAndGetUserMediaInNewTab( |
@@ -254,55 +209,6 @@ content::WebContents* WebRtcTestBase::OpenTestPageAndGetUserMediaInNewTab( |
embedded_test_server()->GetURL(test_page)); |
} |
-content::WebContents* WebRtcTestBase::OpenPageAndAcceptUserMedia( |
- const GURL& url) const { |
- content::WebContents* tab_contents = |
- browser()->tab_strip_model()->GetActiveWebContents(); |
- if (PermissionBubbleManager::Enabled()) { |
- scoped_ptr<MockPermissionBubbleView> mock_bubble_view( |
- new MockPermissionBubbleView()); |
- PermissionBubbleManager::FromWebContents(tab_contents) |
- ->SetView(mock_bubble_view.get()); |
- mock_bubble_view->SetBrowserTest(true); |
- ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), url, |
- 1); |
- if (!mock_bubble_view->IsVisible()) |
- content::RunMessageLoop(); |
- mock_bubble_view->Accept(); |
- // Wait to make sure the callback is fired before deleting the bubble view. |
- test::PollingWaitUntil("obtainGetUserMediaResult()", kOkGotStream, |
- tab_contents); |
- PermissionBubbleManager::FromWebContents(tab_contents)->SetView(NULL); |
- } else { |
- content::WindowedNotificationObserver nav( |
- chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_ADDED, |
- content::NotificationService::AllSources()); |
- ui_test_utils::NavigateToURL(browser(), url); |
- nav.Wait(); |
- |
- content::Details<infobars::InfoBar::AddedDetails> details(nav.details()); |
- infobars::InfoBar* infobar = details.ptr(); |
- EXPECT_TRUE(infobar); |
- infobar->delegate()->AsMediaStreamInfoBarDelegate()->Accept(); |
- |
- CloseInfoBarInTab(tab_contents, infobar); |
- } |
- return tab_contents; |
-} |
- |
-void WebRtcTestBase::CloseInfoBarInTab(content::WebContents* tab_contents, |
- infobars::InfoBar* infobar) const { |
- content::WindowedNotificationObserver infobar_removed( |
- chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, |
- content::NotificationService::AllSources()); |
- |
- InfoBarService* infobar_service = |
- InfoBarService::FromWebContents(tab_contents); |
- infobar_service->RemoveInfoBar(infobar); |
- |
- infobar_removed.Wait(); |
-} |
- |
void WebRtcTestBase::CloseLastLocalStream( |
content::WebContents* tab_contents) const { |
EXPECT_EQ("ok-stopped", |