Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1876)

Unified Diff: content/renderer/media/android/webmediasession_android_unittest.cc

Issue 1441883003: Hook up RendererMediaSessionManager with browser side (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/media/android/webmediasession_android.cc ('k') | ipc/ipc_message_start.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/android/webmediasession_android_unittest.cc
diff --git a/content/renderer/media/android/webmediasession_android_unittest.cc b/content/renderer/media/android/webmediasession_android_unittest.cc
index fb153f761d9cc4f5e82bc06cc5638c06a4727413..69e8138cb6d15e85fbb42d2bc1be2c26548bd439 100644
--- a/content/renderer/media/android/webmediasession_android_unittest.cc
+++ b/content/renderer/media/android/webmediasession_android_unittest.cc
@@ -5,13 +5,23 @@
#include "content/renderer/media/android/webmediasession_android.h"
#include "base/memory/scoped_ptr.h"
+#include "content/common/media/media_session_messages_android.h"
#include "content/renderer/media/android/renderer_media_session_manager.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace content {
+namespace {
+
+const int kRouteId = 0;
+
+} // anonymous namespace
+
class WebMediaSessionTest : public testing::Test {
public:
+ void OnSuccess() { ++success_count_; }
+ void OnError() { ++error_count_; }
+
bool SessionManagerHasSession(RendererMediaSessionManager* session_manager,
WebMediaSessionAndroid* session) {
for (auto& iter : session_manager->sessions_) {
@@ -24,6 +34,34 @@ class WebMediaSessionTest : public testing::Test {
bool IsSessionManagerEmpty(RendererMediaSessionManager* session_manager) {
return session_manager->sessions_.empty();
}
+
+ protected:
+ int success_count_ = 0;
+ int error_count_ = 0;
+};
+
+class TestActivateCallback : public blink::WebMediaSessionActivateCallback {
+ public:
+ TestActivateCallback(WebMediaSessionTest* test) : test_(test) {}
+
+ private:
+ void onSuccess() override { test_->OnSuccess(); }
+ void onError(const blink::WebMediaSessionError&) override {
+ test_->OnError();
+ }
+
+ WebMediaSessionTest* test_;
+};
+
+class TestDeactivateCallback : public blink::WebMediaSessionDeactivateCallback {
+ public:
+ TestDeactivateCallback(WebMediaSessionTest* test) : test_(test) {}
+
+ private:
+ void onSuccess() override { test_->OnSuccess(); }
+ void onError() override { test_->OnError(); }
+
+ WebMediaSessionTest* test_;
};
TEST_F(WebMediaSessionTest, TestRegistration) {
@@ -83,4 +121,132 @@ TEST_F(WebMediaSessionTest, TestMultipleRegistrationOutOfOrder) {
EXPECT_TRUE(IsSessionManagerEmpty(session_manager.get()));
}
+TEST_F(WebMediaSessionTest, ActivationOutOfOrder) {
+ scoped_ptr<RendererMediaSessionManager> session_manager(
+ new RendererMediaSessionManager(nullptr));
+
+ scoped_ptr<WebMediaSessionAndroid> session(
+ new WebMediaSessionAndroid(session_manager.get()));
+
+ // Request activate three times
+ session->activate(new TestActivateCallback(this)); // request 1
+ session->activate(new TestActivateCallback(this)); // request 2
+ session->activate(new TestActivateCallback(this)); // request 3
+
+ // Confirm activation out of order
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidActivate(kRouteId, 3, true));
+
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidActivate(kRouteId, 2, true));
+
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidActivate(kRouteId, 1, true));
+
+ EXPECT_EQ(3, success_count_);
+ EXPECT_EQ(0, error_count_);
+}
+
+TEST_F(WebMediaSessionTest, ActivationInOrder) {
+ scoped_ptr<RendererMediaSessionManager> session_manager(
+ new RendererMediaSessionManager(nullptr));
+
+ scoped_ptr<WebMediaSessionAndroid> session(
+ new WebMediaSessionAndroid(session_manager.get()));
+
+ // Request activate three times
+ session->activate(new TestActivateCallback(this)); // request 1
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidActivate(kRouteId, 1, true));
+
+ session->activate(new TestActivateCallback(this)); // request 2
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidActivate(kRouteId, 2, true));
+
+ session->activate(new TestActivateCallback(this)); // request 3
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidActivate(kRouteId, 3, true));
+
+ EXPECT_EQ(3, success_count_);
+ EXPECT_EQ(0, error_count_);
+}
+
+TEST_F(WebMediaSessionTest, ActivationInFlight) {
+ scoped_ptr<RendererMediaSessionManager> session_manager(
+ new RendererMediaSessionManager(nullptr));
+
+ scoped_ptr<WebMediaSessionAndroid> session(
+ new WebMediaSessionAndroid(session_manager.get()));
+
+ session->activate(new TestActivateCallback(this)); // request 1
+ session->activate(new TestActivateCallback(this)); // request 2
+ session->activate(new TestActivateCallback(this)); // request 3
+
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidActivate(kRouteId, 1, true));
+
+ session->activate(new TestActivateCallback(this)); // request 4
+ session->activate(new TestActivateCallback(this)); // request 5
+
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidActivate(kRouteId, 3, true));
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidActivate(kRouteId, 2, true));
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidActivate(kRouteId, 5, true));
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidActivate(kRouteId, 4, true));
+
+ EXPECT_EQ(5, success_count_);
+ EXPECT_EQ(0, error_count_);
+}
+
+TEST_F(WebMediaSessionTest, ActivationFailure) {
+ scoped_ptr<RendererMediaSessionManager> session_manager(
+ new RendererMediaSessionManager(nullptr));
+
+ scoped_ptr<WebMediaSessionAndroid> session(
+ new WebMediaSessionAndroid(session_manager.get()));
+
+ session->activate(new TestActivateCallback(this)); // request 1
+ session->activate(new TestActivateCallback(this)); // request 2
+ session->activate(new TestActivateCallback(this)); // request 3
+
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidActivate(kRouteId, 1, true));
+ EXPECT_EQ(1, success_count_);
+ EXPECT_EQ(0, error_count_);
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidActivate(kRouteId, 2, false));
+ EXPECT_EQ(1, success_count_);
+ EXPECT_EQ(1, error_count_);
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidActivate(kRouteId, 3, true));
+ EXPECT_EQ(2, success_count_);
+ EXPECT_EQ(1, error_count_);
+}
+
+TEST_F(WebMediaSessionTest, Deactivation) {
+ scoped_ptr<RendererMediaSessionManager> session_manager(
+ new RendererMediaSessionManager(nullptr));
+
+ scoped_ptr<WebMediaSessionAndroid> session(
+ new WebMediaSessionAndroid(session_manager.get()));
+
+ // Request deactivate three times
+ session->deactivate(new TestDeactivateCallback(this)); // request 1
+ session->deactivate(new TestDeactivateCallback(this)); // request 2
+ session->deactivate(new TestDeactivateCallback(this)); // request 3
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidDeactivate(kRouteId, 1));
+ EXPECT_EQ(1, success_count_);
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidDeactivate(kRouteId, 2));
+ EXPECT_EQ(2, success_count_);
+ session_manager->OnMessageReceived(
+ MediaSessionMsg_DidDeactivate(kRouteId, 3));
+ EXPECT_EQ(3, success_count_);
+ EXPECT_EQ(0, error_count_);
+}
+
} // namespace content
« no previous file with comments | « content/renderer/media/android/webmediasession_android.cc ('k') | ipc/ipc_message_start.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698