forked from mirrors/gecko-dev
For some reason, its value in the Google style we use is 80... except for Objective-C, where it's 100, which led to things like: https://hg.mozilla.org/mozilla-central/rev/31bf68247e6e https://hg.mozilla.org/mozilla-central/rev/64ceb33533a4. There's probably a discussion to have about whether 80 is the right limit, but since it's what's used for everything except ObjC, let's roll with it. # ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D187409
169 lines
5.2 KiB
Text
169 lines
5.2 KiB
Text
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
#import <MediaPlayer/MediaPlayer.h>
|
|
|
|
#include "gtest/gtest.h"
|
|
#include "MediaHardwareKeysEventSourceMacMediaCenter.h"
|
|
#include "MediaKeyListenerTest.h"
|
|
#include "nsCocoaUtils.h"
|
|
#include "prinrval.h"
|
|
#include "prthread.h"
|
|
|
|
using namespace mozilla::dom;
|
|
using namespace mozilla::widget;
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
TEST(MediaHardwareKeysEventSourceMacMediaCenter, TestMediaCenterPlayPauseEvent)
|
|
{
|
|
RefPtr<MediaHardwareKeysEventSourceMacMediaCenter> source =
|
|
new MediaHardwareKeysEventSourceMacMediaCenter();
|
|
|
|
ASSERT_TRUE(source->GetListenersNum() == 0);
|
|
|
|
RefPtr<MediaKeyListenerTest> listener = new MediaKeyListenerTest();
|
|
|
|
MPNowPlayingInfoCenter* center = [MPNowPlayingInfoCenter defaultCenter];
|
|
|
|
source->AddListener(listener.get());
|
|
|
|
ASSERT_TRUE(source->Open());
|
|
|
|
ASSERT_TRUE(source->GetListenersNum() == 1);
|
|
ASSERT_TRUE(!listener->IsReceivedResult());
|
|
ASSERT_TRUE(center.playbackState == MPNowPlayingPlaybackStatePlaying);
|
|
|
|
MediaCenterEventHandler playPauseHandler = source->CreatePlayPauseHandler();
|
|
playPauseHandler(nil);
|
|
|
|
ASSERT_TRUE(center.playbackState == MPNowPlayingPlaybackStatePaused);
|
|
ASSERT_TRUE(listener->IsResultEqualTo(MediaControlKey::Playpause));
|
|
|
|
listener->Clear(); // Reset stored media key
|
|
|
|
playPauseHandler(nil);
|
|
|
|
ASSERT_TRUE(center.playbackState == MPNowPlayingPlaybackStatePlaying);
|
|
ASSERT_TRUE(listener->IsResultEqualTo(MediaControlKey::Playpause));
|
|
}
|
|
|
|
TEST(MediaHardwareKeysEventSourceMacMediaCenter, TestMediaCenterPlayEvent)
|
|
{
|
|
RefPtr<MediaHardwareKeysEventSourceMacMediaCenter> source =
|
|
new MediaHardwareKeysEventSourceMacMediaCenter();
|
|
|
|
ASSERT_TRUE(source->GetListenersNum() == 0);
|
|
|
|
RefPtr<MediaKeyListenerTest> listener = new MediaKeyListenerTest();
|
|
|
|
MPNowPlayingInfoCenter* center = [MPNowPlayingInfoCenter defaultCenter];
|
|
|
|
source->AddListener(listener.get());
|
|
|
|
ASSERT_TRUE(source->Open());
|
|
|
|
ASSERT_TRUE(source->GetListenersNum() == 1);
|
|
ASSERT_TRUE(!listener->IsReceivedResult());
|
|
ASSERT_TRUE(center.playbackState == MPNowPlayingPlaybackStatePlaying);
|
|
|
|
MediaCenterEventHandler playHandler = source->CreatePlayHandler();
|
|
|
|
center.playbackState = MPNowPlayingPlaybackStatePaused;
|
|
|
|
playHandler(nil);
|
|
|
|
ASSERT_TRUE(center.playbackState == MPNowPlayingPlaybackStatePlaying);
|
|
ASSERT_TRUE(listener->IsResultEqualTo(MediaControlKey::Play));
|
|
}
|
|
|
|
TEST(MediaHardwareKeysEventSourceMacMediaCenter, TestMediaCenterPauseEvent)
|
|
{
|
|
RefPtr<MediaHardwareKeysEventSourceMacMediaCenter> source =
|
|
new MediaHardwareKeysEventSourceMacMediaCenter();
|
|
|
|
ASSERT_TRUE(source->GetListenersNum() == 0);
|
|
|
|
RefPtr<MediaKeyListenerTest> listener = new MediaKeyListenerTest();
|
|
|
|
MPNowPlayingInfoCenter* center = [MPNowPlayingInfoCenter defaultCenter];
|
|
|
|
source->AddListener(listener.get());
|
|
|
|
ASSERT_TRUE(source->Open());
|
|
|
|
ASSERT_TRUE(source->GetListenersNum() == 1);
|
|
ASSERT_TRUE(!listener->IsReceivedResult());
|
|
ASSERT_TRUE(center.playbackState == MPNowPlayingPlaybackStatePlaying);
|
|
|
|
MediaCenterEventHandler pauseHandler = source->CreatePauseHandler();
|
|
|
|
pauseHandler(nil);
|
|
|
|
ASSERT_TRUE(center.playbackState == MPNowPlayingPlaybackStatePaused);
|
|
ASSERT_TRUE(listener->IsResultEqualTo(MediaControlKey::Pause));
|
|
}
|
|
|
|
TEST(MediaHardwareKeysEventSourceMacMediaCenter, TestMediaCenterPrevNextEvent)
|
|
{
|
|
RefPtr<MediaHardwareKeysEventSourceMacMediaCenter> source =
|
|
new MediaHardwareKeysEventSourceMacMediaCenter();
|
|
|
|
ASSERT_TRUE(source->GetListenersNum() == 0);
|
|
|
|
RefPtr<MediaKeyListenerTest> listener = new MediaKeyListenerTest();
|
|
|
|
source->AddListener(listener.get());
|
|
|
|
ASSERT_TRUE(source->Open());
|
|
|
|
MediaCenterEventHandler nextHandler = source->CreateNextTrackHandler();
|
|
|
|
nextHandler(nil);
|
|
|
|
ASSERT_TRUE(listener->IsResultEqualTo(MediaControlKey::Nexttrack));
|
|
|
|
MediaCenterEventHandler previousHandler =
|
|
source->CreatePreviousTrackHandler();
|
|
|
|
previousHandler(nil);
|
|
|
|
ASSERT_TRUE(listener->IsResultEqualTo(MediaControlKey::Previoustrack));
|
|
}
|
|
|
|
TEST(MediaHardwareKeysEventSourceMacMediaCenter, TestSetMetadata)
|
|
{
|
|
RefPtr<MediaHardwareKeysEventSourceMacMediaCenter> source =
|
|
new MediaHardwareKeysEventSourceMacMediaCenter();
|
|
|
|
ASSERT_TRUE(source->GetListenersNum() == 0);
|
|
|
|
RefPtr<MediaKeyListenerTest> listener = new MediaKeyListenerTest();
|
|
|
|
source->AddListener(listener.get());
|
|
|
|
ASSERT_TRUE(source->Open());
|
|
|
|
MediaMetadataBase metadata;
|
|
metadata.mTitle = u"MediaPlayback";
|
|
metadata.mArtist = u"Firefox";
|
|
metadata.mAlbum = u"Mozilla";
|
|
source->SetMediaMetadata(metadata);
|
|
|
|
// The update procedure of nowPlayingInfo is async, so wait for a second
|
|
// before checking the result.
|
|
PR_Sleep(PR_SecondsToInterval(1));
|
|
MPNowPlayingInfoCenter* center = [MPNowPlayingInfoCenter defaultCenter];
|
|
ASSERT_TRUE([center.nowPlayingInfo[MPMediaItemPropertyTitle]
|
|
isEqualToString:@"MediaPlayback"]);
|
|
ASSERT_TRUE([center.nowPlayingInfo[MPMediaItemPropertyArtist]
|
|
isEqualToString:@"Firefox"]);
|
|
ASSERT_TRUE([center.nowPlayingInfo[MPMediaItemPropertyAlbumTitle]
|
|
isEqualToString:@"Mozilla"]);
|
|
|
|
source->Close();
|
|
PR_Sleep(PR_SecondsToInterval(1));
|
|
ASSERT_TRUE(center.nowPlayingInfo == nil);
|
|
}
|
|
|
|
NS_ASSUME_NONNULL_END
|