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

Side by Side Diff: third_party/WebKit/Source/modules/mediasession/MediaSessionTest.cpp

Issue 2367393002: Migrating MediaSession messages to mojo (Closed)
Patch Set: fixed layout tests Created 4 years, 2 months 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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 #include "modules/mediasession/MediaSession.h"
6
7 #include "core/dom/Document.h"
8 #include "core/testing/DummyPageHolder.h"
9 #include "modules/mediasession/MediaMetadata.h"
10 #include "modules/mediasession/MediaMetadataInit.h"
11 #include "public/platform/modules/mediasession/WebMediaSession.h"
12 #include "testing/gmock/include/gmock/gmock.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "wtf/PtrUtil.h"
15 #include <memory>
16
17 using ::testing::_;
18 using ::testing::Invoke;
19
20 namespace blink {
21
22 class MediaSessionTest : public ::testing::Test {
23 protected:
24 MediaSessionTest() : m_page(DummyPageHolder::create(IntSize(1, 1))) {}
25
26 MediaSession* createMediaSession(WebMediaSession* webMediaSession) {
27 // The MediaSession takes ownership of the WebMediaSession, and the
28 // caller must take care to not end up with a stale pointer.
29 return new MediaSession(wrapUnique(webMediaSession));
30 }
31
32 Document& document() { return m_page->document(); }
33 ScriptState* mainScriptState() {
34 return ScriptState::forMainWorld(document().frame());
35 }
36
37 private:
38 std::unique_ptr<DummyPageHolder> m_page;
39 };
40
41 namespace {
42
43 class MockWebMediaSession : public WebMediaSession {
44 public:
45 MOCK_METHOD1(activate, void(WebMediaSessionActivateCallback*));
46 MOCK_METHOD1(deactivate, void(WebMediaSessionDeactivateCallback*));
47 MOCK_METHOD1(setMetadata, void(const WebMediaMetadata*));
48 };
49
50 class Helper {
51 public:
52 void activate(WebMediaSessionActivateCallback* cb) { delete cb; }
53 void deactivate(WebMediaSessionDeactivateCallback* cb) { delete cb; }
54 };
55
56 TEST_F(MediaSessionTest, Activate) {
57 ScriptState::Scope scope(mainScriptState());
58 MockWebMediaSession* mockWebMediaSession = new MockWebMediaSession;
59 MediaSession* mediaSession = createMediaSession(mockWebMediaSession);
60
61 Helper helper;
62 EXPECT_CALL(*mockWebMediaSession, activate(_))
63 .WillOnce(Invoke(&helper, &Helper::activate));
64 mediaSession->activate(mainScriptState());
65 }
66
67 TEST_F(MediaSessionTest, Deactivate) {
68 ScriptState::Scope scope(mainScriptState());
69 MockWebMediaSession* mockWebMediaSession = new MockWebMediaSession;
70 MediaSession* mediaSession = createMediaSession(mockWebMediaSession);
71
72 Helper helper;
73 EXPECT_CALL(*mockWebMediaSession, deactivate(_))
74 .WillOnce(Invoke(&helper, &Helper::deactivate));
75 mediaSession->deactivate(mainScriptState());
76 }
77
78 TEST_F(MediaSessionTest, SetMetadata_Null) {
79 MockWebMediaSession* mockWebMediaSession = new MockWebMediaSession;
80 MediaSession* mediaSession = createMediaSession(mockWebMediaSession);
81
82 EXPECT_CALL(*mockWebMediaSession, setMetadata(testing::IsNull()));
83 mediaSession->setMetadata(nullptr);
84
85 EXPECT_EQ(nullptr, mediaSession->metadata());
86 }
87
88 TEST_F(MediaSessionTest, SetMetadata_NotNull) {
89 MockWebMediaSession* mockWebMediaSession = new MockWebMediaSession;
90 MediaSession* mediaSession = createMediaSession(mockWebMediaSession);
91
92 EXPECT_CALL(*mockWebMediaSession, setMetadata(testing::NotNull()));
93 mediaSession->setMetadata(
94 MediaMetadata::create(&document(), MediaMetadataInit()));
95
96 EXPECT_NE(nullptr, mediaSession->metadata());
97 }
98
99 } // namespace
100 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698