|
Lines 1-5
a/Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm_sec1
|
| 1 |
/* |
1 |
/* |
| 2 |
* Copyright (C) 2016-2017 Apple Inc. All rights reserved. |
2 |
* Copyright (C) 2016-2020 Apple Inc. All rights reserved. |
| 3 |
* |
3 |
* |
| 4 |
* Redistribution and use in source and binary forms, with or without |
4 |
* Redistribution and use in source and binary forms, with or without |
| 5 |
* modification, are permitted provided that the following conditions |
5 |
* modification, are permitted provided that the following conditions |
|
Lines 46-60
a/Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm_sec2
|
| 46 |
namespace WebKit { |
46 |
namespace WebKit { |
| 47 |
using namespace WebCore; |
47 |
using namespace WebCore; |
| 48 |
|
48 |
|
| 49 |
static uint64_t nextContextId() |
|
|
| 50 |
{ |
| 51 |
static uint64_t contextId = 0; |
| 52 |
return ++contextId; |
| 53 |
} |
| 54 |
|
| 55 |
#pragma mark - PlaybackSessionInterfaceContext |
49 |
#pragma mark - PlaybackSessionInterfaceContext |
| 56 |
|
50 |
|
| 57 |
PlaybackSessionInterfaceContext::PlaybackSessionInterfaceContext(PlaybackSessionManager& manager, uint64_t contextId) |
51 |
PlaybackSessionInterfaceContext::PlaybackSessionInterfaceContext(PlaybackSessionManager& manager, PlaybackSessionContextIdentifier contextId) |
| 58 |
: m_manager(&manager) |
52 |
: m_manager(&manager) |
| 59 |
, m_contextId(contextId) |
53 |
, m_contextId(contextId) |
| 60 |
{ |
54 |
{ |
|
Lines 197-203
void PlaybackSessionManager::invalidate()
a/Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm_sec3
|
| 197 |
m_page = nullptr; |
191 |
m_page = nullptr; |
| 198 |
} |
192 |
} |
| 199 |
|
193 |
|
| 200 |
PlaybackSessionManager::ModelInterfaceTuple PlaybackSessionManager::createModelAndInterface(uint64_t contextId) |
194 |
PlaybackSessionManager::ModelInterfaceTuple PlaybackSessionManager::createModelAndInterface(PlaybackSessionContextIdentifier contextId) |
| 201 |
{ |
195 |
{ |
| 202 |
auto model = PlaybackSessionModelMediaElement::create(); |
196 |
auto model = PlaybackSessionModelMediaElement::create(); |
| 203 |
auto interface = PlaybackSessionInterfaceContext::create(*this, contextId); |
197 |
auto interface = PlaybackSessionInterfaceContext::create(*this, contextId); |
|
Lines 206-212
PlaybackSessionManager::ModelInterfaceTuple PlaybackSessionManager::createModelA
a/Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm_sec4
|
| 206 |
return std::make_tuple(WTFMove(model), WTFMove(interface)); |
200 |
return std::make_tuple(WTFMove(model), WTFMove(interface)); |
| 207 |
} |
201 |
} |
| 208 |
|
202 |
|
| 209 |
PlaybackSessionManager::ModelInterfaceTuple& PlaybackSessionManager::ensureModelAndInterface(uint64_t contextId) |
203 |
PlaybackSessionManager::ModelInterfaceTuple& PlaybackSessionManager::ensureModelAndInterface(PlaybackSessionContextIdentifier contextId) |
| 210 |
{ |
204 |
{ |
| 211 |
auto addResult = m_contextMap.add(contextId, ModelInterfaceTuple()); |
205 |
auto addResult = m_contextMap.add(contextId, ModelInterfaceTuple()); |
| 212 |
if (addResult.isNewEntry) |
206 |
if (addResult.isNewEntry) |
|
Lines 214-230
PlaybackSessionManager::ModelInterfaceTuple& PlaybackSessionManager::ensureModel
a/Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm_sec5
|
| 214 |
return addResult.iterator->value; |
208 |
return addResult.iterator->value; |
| 215 |
} |
209 |
} |
| 216 |
|
210 |
|
| 217 |
WebCore::PlaybackSessionModelMediaElement& PlaybackSessionManager::ensureModel(uint64_t contextId) |
211 |
WebCore::PlaybackSessionModelMediaElement& PlaybackSessionManager::ensureModel(PlaybackSessionContextIdentifier contextId) |
| 218 |
{ |
212 |
{ |
| 219 |
return *std::get<0>(ensureModelAndInterface(contextId)); |
213 |
return *std::get<0>(ensureModelAndInterface(contextId)); |
| 220 |
} |
214 |
} |
| 221 |
|
215 |
|
| 222 |
PlaybackSessionInterfaceContext& PlaybackSessionManager::ensureInterface(uint64_t contextId) |
216 |
PlaybackSessionInterfaceContext& PlaybackSessionManager::ensureInterface(PlaybackSessionContextIdentifier contextId) |
| 223 |
{ |
217 |
{ |
| 224 |
return *std::get<1>(ensureModelAndInterface(contextId)); |
218 |
return *std::get<1>(ensureModelAndInterface(contextId)); |
| 225 |
} |
219 |
} |
| 226 |
|
220 |
|
| 227 |
void PlaybackSessionManager::removeContext(uint64_t contextId) |
221 |
void PlaybackSessionManager::removeContext(PlaybackSessionContextIdentifier contextId) |
| 228 |
{ |
222 |
{ |
| 229 |
auto& [model, interface] = ensureModelAndInterface(contextId); |
223 |
auto& [model, interface] = ensureModelAndInterface(contextId); |
| 230 |
|
224 |
|
|
Lines 236-247
void PlaybackSessionManager::removeContext(uint64_t contextId)
a/Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm_sec6
|
| 236 |
m_contextMap.remove(contextId); |
230 |
m_contextMap.remove(contextId); |
| 237 |
} |
231 |
} |
| 238 |
|
232 |
|
| 239 |
void PlaybackSessionManager::addClientForContext(uint64_t contextId) |
233 |
void PlaybackSessionManager::addClientForContext(PlaybackSessionContextIdentifier contextId) |
| 240 |
{ |
234 |
{ |
| 241 |
m_clientCounts.add(contextId); |
235 |
m_clientCounts.add(contextId); |
| 242 |
} |
236 |
} |
| 243 |
|
237 |
|
| 244 |
void PlaybackSessionManager::removeClientForContext(uint64_t contextId) |
238 |
void PlaybackSessionManager::removeClientForContext(PlaybackSessionContextIdentifier contextId) |
| 245 |
{ |
239 |
{ |
| 246 |
ASSERT(m_clientCounts.contains(contextId)); |
240 |
ASSERT(m_clientCounts.contains(contextId)); |
| 247 |
if (m_clientCounts.remove(contextId)) |
241 |
if (m_clientCounts.remove(contextId)) |
|
Lines 252-258
void PlaybackSessionManager::setUpPlaybackControlsManager(WebCore::HTMLMediaElem
a/Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm_sec7
|
| 252 |
{ |
246 |
{ |
| 253 |
auto foundIterator = m_mediaElements.find(&mediaElement); |
247 |
auto foundIterator = m_mediaElements.find(&mediaElement); |
| 254 |
if (foundIterator != m_mediaElements.end()) { |
248 |
if (foundIterator != m_mediaElements.end()) { |
| 255 |
uint64_t contextId = foundIterator->value; |
249 |
auto contextId = foundIterator->value; |
| 256 |
if (m_controlsManagerContextId == contextId) |
250 |
if (m_controlsManagerContextId == contextId) |
| 257 |
return; |
251 |
return; |
| 258 |
|
252 |
|
|
Lines 261-267
void PlaybackSessionManager::setUpPlaybackControlsManager(WebCore::HTMLMediaElem
a/Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm_sec8
|
| 261 |
if (previousContextId) |
255 |
if (previousContextId) |
| 262 |
removeClientForContext(previousContextId); |
256 |
removeClientForContext(previousContextId); |
| 263 |
} else { |
257 |
} else { |
| 264 |
auto contextId = m_mediaElements.ensure(&mediaElement, [&] { return nextContextId(); }).iterator->value; |
258 |
auto contextId = m_mediaElements.ensure(&mediaElement, [&] { |
|
|
259 |
return PlaybackSessionContextIdentifier::generate(); |
| 260 |
}).iterator->value; |
| 265 |
|
261 |
|
| 266 |
auto previousContextId = m_controlsManagerContextId; |
262 |
auto previousContextId = m_controlsManagerContextId; |
| 267 |
m_controlsManagerContextId = contextId; |
263 |
m_controlsManagerContextId = contextId; |
|
Lines 283-298
void PlaybackSessionManager::clearPlaybackControlsManager()
a/Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm_sec9
|
| 283 |
return; |
279 |
return; |
| 284 |
|
280 |
|
| 285 |
removeClientForContext(m_controlsManagerContextId); |
281 |
removeClientForContext(m_controlsManagerContextId); |
| 286 |
m_controlsManagerContextId = 0; |
282 |
m_controlsManagerContextId = { }; |
| 287 |
|
283 |
|
| 288 |
m_page->videoControlsManagerDidChange(); |
284 |
m_page->videoControlsManagerDidChange(); |
| 289 |
m_page->send(Messages::PlaybackSessionManagerProxy::ClearPlaybackControlsManager()); |
285 |
m_page->send(Messages::PlaybackSessionManagerProxy::ClearPlaybackControlsManager()); |
| 290 |
} |
286 |
} |
| 291 |
|
287 |
|
| 292 |
uint64_t PlaybackSessionManager::contextIdForMediaElement(WebCore::HTMLMediaElement& mediaElement) |
288 |
PlaybackSessionContextIdentifier PlaybackSessionManager::contextIdForMediaElement(WebCore::HTMLMediaElement& mediaElement) |
| 293 |
{ |
289 |
{ |
| 294 |
auto addResult = m_mediaElements.ensure(&mediaElement, [&] { return nextContextId(); }); |
290 |
auto addResult = m_mediaElements.ensure(&mediaElement, [&] { |
| 295 |
uint64_t contextId = addResult.iterator->value; |
291 |
return PlaybackSessionContextIdentifier::generate(); |
|
|
292 |
}); |
| 293 |
auto contextId = addResult.iterator->value; |
| 296 |
ensureModel(contextId).setMediaElement(&mediaElement); |
294 |
ensureModel(contextId).setMediaElement(&mediaElement); |
| 297 |
return contextId; |
295 |
return contextId; |
| 298 |
} |
296 |
} |
|
Lines 311-342
WebCore::HTMLMediaElement* PlaybackSessionManager::currentPlaybackControlsElemen
a/Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm_sec10
|
| 311 |
|
309 |
|
| 312 |
#pragma mark Interface to PlaybackSessionInterfaceContext: |
310 |
#pragma mark Interface to PlaybackSessionInterfaceContext: |
| 313 |
|
311 |
|
| 314 |
void PlaybackSessionManager::durationChanged(uint64_t contextId, double duration) |
312 |
void PlaybackSessionManager::durationChanged(PlaybackSessionContextIdentifier contextId, double duration) |
| 315 |
{ |
313 |
{ |
| 316 |
m_page->send(Messages::PlaybackSessionManagerProxy::DurationChanged(contextId, duration)); |
314 |
m_page->send(Messages::PlaybackSessionManagerProxy::DurationChanged(contextId, duration)); |
| 317 |
} |
315 |
} |
| 318 |
|
316 |
|
| 319 |
void PlaybackSessionManager::currentTimeChanged(uint64_t contextId, double currentTime, double anchorTime) |
317 |
void PlaybackSessionManager::currentTimeChanged(PlaybackSessionContextIdentifier contextId, double currentTime, double anchorTime) |
| 320 |
{ |
318 |
{ |
| 321 |
m_page->send(Messages::PlaybackSessionManagerProxy::CurrentTimeChanged(contextId, currentTime, anchorTime)); |
319 |
m_page->send(Messages::PlaybackSessionManagerProxy::CurrentTimeChanged(contextId, currentTime, anchorTime)); |
| 322 |
} |
320 |
} |
| 323 |
|
321 |
|
| 324 |
void PlaybackSessionManager::bufferedTimeChanged(uint64_t contextId, double bufferedTime) |
322 |
void PlaybackSessionManager::bufferedTimeChanged(PlaybackSessionContextIdentifier contextId, double bufferedTime) |
| 325 |
{ |
323 |
{ |
| 326 |
m_page->send(Messages::PlaybackSessionManagerProxy::BufferedTimeChanged(contextId, bufferedTime)); |
324 |
m_page->send(Messages::PlaybackSessionManagerProxy::BufferedTimeChanged(contextId, bufferedTime)); |
| 327 |
} |
325 |
} |
| 328 |
|
326 |
|
| 329 |
void PlaybackSessionManager::playbackStartedTimeChanged(uint64_t contextId, double playbackStartedTime) |
327 |
void PlaybackSessionManager::playbackStartedTimeChanged(PlaybackSessionContextIdentifier contextId, double playbackStartedTime) |
| 330 |
{ |
328 |
{ |
| 331 |
m_page->send(Messages::PlaybackSessionManagerProxy::PlaybackStartedTimeChanged(contextId, playbackStartedTime)); |
329 |
m_page->send(Messages::PlaybackSessionManagerProxy::PlaybackStartedTimeChanged(contextId, playbackStartedTime)); |
| 332 |
} |
330 |
} |
| 333 |
|
331 |
|
| 334 |
void PlaybackSessionManager::rateChanged(uint64_t contextId, bool isPlaying, float playbackRate) |
332 |
void PlaybackSessionManager::rateChanged(PlaybackSessionContextIdentifier contextId, bool isPlaying, float playbackRate) |
| 335 |
{ |
333 |
{ |
| 336 |
m_page->send(Messages::PlaybackSessionManagerProxy::RateChanged(contextId, isPlaying, playbackRate)); |
334 |
m_page->send(Messages::PlaybackSessionManagerProxy::RateChanged(contextId, isPlaying, playbackRate)); |
| 337 |
} |
335 |
} |
| 338 |
|
336 |
|
| 339 |
void PlaybackSessionManager::seekableRangesChanged(uint64_t contextId, const WebCore::TimeRanges& timeRanges, double lastModifiedTime, double liveUpdateInterval) |
337 |
void PlaybackSessionManager::seekableRangesChanged(PlaybackSessionContextIdentifier contextId, const WebCore::TimeRanges& timeRanges, double lastModifiedTime, double liveUpdateInterval) |
| 340 |
{ |
338 |
{ |
| 341 |
Vector<std::pair<double, double>> rangesVector; |
339 |
Vector<std::pair<double, double>> rangesVector; |
| 342 |
for (unsigned i = 0; i < timeRanges.length(); i++) { |
340 |
for (unsigned i = 0; i < timeRanges.length(); i++) { |
|
Lines 347-508
void PlaybackSessionManager::seekableRangesChanged(uint64_t contextId, const Web
a/Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm_sec11
|
| 347 |
m_page->send(Messages::PlaybackSessionManagerProxy::SeekableRangesVectorChanged(contextId, WTFMove(rangesVector), lastModifiedTime, liveUpdateInterval)); |
345 |
m_page->send(Messages::PlaybackSessionManagerProxy::SeekableRangesVectorChanged(contextId, WTFMove(rangesVector), lastModifiedTime, liveUpdateInterval)); |
| 348 |
} |
346 |
} |
| 349 |
|
347 |
|
| 350 |
void PlaybackSessionManager::canPlayFastReverseChanged(uint64_t contextId, bool value) |
348 |
void PlaybackSessionManager::canPlayFastReverseChanged(PlaybackSessionContextIdentifier contextId, bool value) |
| 351 |
{ |
349 |
{ |
| 352 |
m_page->send(Messages::PlaybackSessionManagerProxy::CanPlayFastReverseChanged(contextId, value)); |
350 |
m_page->send(Messages::PlaybackSessionManagerProxy::CanPlayFastReverseChanged(contextId, value)); |
| 353 |
} |
351 |
} |
| 354 |
|
352 |
|
| 355 |
void PlaybackSessionManager::audioMediaSelectionOptionsChanged(uint64_t contextId, const Vector<MediaSelectionOption>& options, uint64_t selectedIndex) |
353 |
void PlaybackSessionManager::audioMediaSelectionOptionsChanged(PlaybackSessionContextIdentifier contextId, const Vector<MediaSelectionOption>& options, uint64_t selectedIndex) |
| 356 |
{ |
354 |
{ |
| 357 |
m_page->send(Messages::PlaybackSessionManagerProxy::AudioMediaSelectionOptionsChanged(contextId, options, selectedIndex)); |
355 |
m_page->send(Messages::PlaybackSessionManagerProxy::AudioMediaSelectionOptionsChanged(contextId, options, selectedIndex)); |
| 358 |
} |
356 |
} |
| 359 |
|
357 |
|
| 360 |
void PlaybackSessionManager::legibleMediaSelectionOptionsChanged(uint64_t contextId, const Vector<MediaSelectionOption>& options, uint64_t selectedIndex) |
358 |
void PlaybackSessionManager::legibleMediaSelectionOptionsChanged(PlaybackSessionContextIdentifier contextId, const Vector<MediaSelectionOption>& options, uint64_t selectedIndex) |
| 361 |
{ |
359 |
{ |
| 362 |
m_page->send(Messages::PlaybackSessionManagerProxy::LegibleMediaSelectionOptionsChanged(contextId, options, selectedIndex)); |
360 |
m_page->send(Messages::PlaybackSessionManagerProxy::LegibleMediaSelectionOptionsChanged(contextId, options, selectedIndex)); |
| 363 |
} |
361 |
} |
| 364 |
|
362 |
|
| 365 |
void PlaybackSessionManager::externalPlaybackChanged(uint64_t contextId, bool enabled, PlaybackSessionModel::ExternalPlaybackTargetType targetType, String localizedDeviceName) |
363 |
void PlaybackSessionManager::externalPlaybackChanged(PlaybackSessionContextIdentifier contextId, bool enabled, PlaybackSessionModel::ExternalPlaybackTargetType targetType, String localizedDeviceName) |
| 366 |
{ |
364 |
{ |
| 367 |
m_page->send(Messages::PlaybackSessionManagerProxy::ExternalPlaybackPropertiesChanged(contextId, enabled, static_cast<uint32_t>(targetType), localizedDeviceName)); |
365 |
m_page->send(Messages::PlaybackSessionManagerProxy::ExternalPlaybackPropertiesChanged(contextId, enabled, static_cast<uint32_t>(targetType), localizedDeviceName)); |
| 368 |
} |
366 |
} |
| 369 |
|
367 |
|
| 370 |
void PlaybackSessionManager::audioMediaSelectionIndexChanged(uint64_t contextId, uint64_t selectedIndex) |
368 |
void PlaybackSessionManager::audioMediaSelectionIndexChanged(PlaybackSessionContextIdentifier contextId, uint64_t selectedIndex) |
| 371 |
{ |
369 |
{ |
| 372 |
m_page->send(Messages::PlaybackSessionManagerProxy::AudioMediaSelectionIndexChanged(contextId, selectedIndex)); |
370 |
m_page->send(Messages::PlaybackSessionManagerProxy::AudioMediaSelectionIndexChanged(contextId, selectedIndex)); |
| 373 |
} |
371 |
} |
| 374 |
|
372 |
|
| 375 |
void PlaybackSessionManager::legibleMediaSelectionIndexChanged(uint64_t contextId, uint64_t selectedIndex) |
373 |
void PlaybackSessionManager::legibleMediaSelectionIndexChanged(PlaybackSessionContextIdentifier contextId, uint64_t selectedIndex) |
| 376 |
{ |
374 |
{ |
| 377 |
m_page->send(Messages::PlaybackSessionManagerProxy::LegibleMediaSelectionIndexChanged(contextId, selectedIndex)); |
375 |
m_page->send(Messages::PlaybackSessionManagerProxy::LegibleMediaSelectionIndexChanged(contextId, selectedIndex)); |
| 378 |
} |
376 |
} |
| 379 |
|
377 |
|
| 380 |
void PlaybackSessionManager::wirelessVideoPlaybackDisabledChanged(uint64_t contextId, bool disabled) |
378 |
void PlaybackSessionManager::wirelessVideoPlaybackDisabledChanged(PlaybackSessionContextIdentifier contextId, bool disabled) |
| 381 |
{ |
379 |
{ |
| 382 |
m_page->send(Messages::PlaybackSessionManagerProxy::WirelessVideoPlaybackDisabledChanged(contextId, disabled)); |
380 |
m_page->send(Messages::PlaybackSessionManagerProxy::WirelessVideoPlaybackDisabledChanged(contextId, disabled)); |
| 383 |
} |
381 |
} |
| 384 |
|
382 |
|
| 385 |
void PlaybackSessionManager::mutedChanged(uint64_t contextId, bool muted) |
383 |
void PlaybackSessionManager::mutedChanged(PlaybackSessionContextIdentifier contextId, bool muted) |
| 386 |
{ |
384 |
{ |
| 387 |
m_page->send(Messages::PlaybackSessionManagerProxy::MutedChanged(contextId, muted)); |
385 |
m_page->send(Messages::PlaybackSessionManagerProxy::MutedChanged(contextId, muted)); |
| 388 |
} |
386 |
} |
| 389 |
|
387 |
|
| 390 |
void PlaybackSessionManager::volumeChanged(uint64_t contextId, double volume) |
388 |
void PlaybackSessionManager::volumeChanged(PlaybackSessionContextIdentifier contextId, double volume) |
| 391 |
{ |
389 |
{ |
| 392 |
m_page->send(Messages::PlaybackSessionManagerProxy::VolumeChanged(contextId, volume)); |
390 |
m_page->send(Messages::PlaybackSessionManagerProxy::VolumeChanged(contextId, volume)); |
| 393 |
} |
391 |
} |
| 394 |
|
392 |
|
| 395 |
void PlaybackSessionManager::isPictureInPictureSupportedChanged(uint64_t contextId, bool supported) |
393 |
void PlaybackSessionManager::isPictureInPictureSupportedChanged(PlaybackSessionContextIdentifier contextId, bool supported) |
| 396 |
{ |
394 |
{ |
| 397 |
m_page->send(Messages::PlaybackSessionManagerProxy::PictureInPictureSupportedChanged(contextId, supported)); |
395 |
m_page->send(Messages::PlaybackSessionManagerProxy::PictureInPictureSupportedChanged(contextId, supported)); |
| 398 |
} |
396 |
} |
| 399 |
|
397 |
|
| 400 |
#pragma mark Messages from PlaybackSessionManagerProxy: |
398 |
#pragma mark Messages from PlaybackSessionManagerProxy: |
| 401 |
|
399 |
|
| 402 |
void PlaybackSessionManager::play(uint64_t contextId) |
400 |
void PlaybackSessionManager::play(PlaybackSessionContextIdentifier contextId) |
| 403 |
{ |
401 |
{ |
| 404 |
UserGestureIndicator indicator(ProcessingUserGesture); |
402 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 405 |
ensureModel(contextId).play(); |
403 |
ensureModel(contextId).play(); |
| 406 |
} |
404 |
} |
| 407 |
|
405 |
|
| 408 |
void PlaybackSessionManager::pause(uint64_t contextId) |
406 |
void PlaybackSessionManager::pause(PlaybackSessionContextIdentifier contextId) |
| 409 |
{ |
407 |
{ |
| 410 |
UserGestureIndicator indicator(ProcessingUserGesture); |
408 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 411 |
ensureModel(contextId).pause(); |
409 |
ensureModel(contextId).pause(); |
| 412 |
} |
410 |
} |
| 413 |
|
411 |
|
| 414 |
void PlaybackSessionManager::togglePlayState(uint64_t contextId) |
412 |
void PlaybackSessionManager::togglePlayState(PlaybackSessionContextIdentifier contextId) |
| 415 |
{ |
413 |
{ |
| 416 |
UserGestureIndicator indicator(ProcessingUserGesture); |
414 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 417 |
ensureModel(contextId).togglePlayState(); |
415 |
ensureModel(contextId).togglePlayState(); |
| 418 |
} |
416 |
} |
| 419 |
|
417 |
|
| 420 |
void PlaybackSessionManager::beginScrubbing(uint64_t contextId) |
418 |
void PlaybackSessionManager::beginScrubbing(PlaybackSessionContextIdentifier contextId) |
| 421 |
{ |
419 |
{ |
| 422 |
UserGestureIndicator indicator(ProcessingUserGesture); |
420 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 423 |
ensureModel(contextId).beginScrubbing(); |
421 |
ensureModel(contextId).beginScrubbing(); |
| 424 |
} |
422 |
} |
| 425 |
|
423 |
|
| 426 |
void PlaybackSessionManager::endScrubbing(uint64_t contextId) |
424 |
void PlaybackSessionManager::endScrubbing(PlaybackSessionContextIdentifier contextId) |
| 427 |
{ |
425 |
{ |
| 428 |
UserGestureIndicator indicator(ProcessingUserGesture); |
426 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 429 |
ensureModel(contextId).endScrubbing(); |
427 |
ensureModel(contextId).endScrubbing(); |
| 430 |
} |
428 |
} |
| 431 |
|
429 |
|
| 432 |
void PlaybackSessionManager::seekToTime(uint64_t contextId, double time, double toleranceBefore, double toleranceAfter) |
430 |
void PlaybackSessionManager::seekToTime(PlaybackSessionContextIdentifier contextId, double time, double toleranceBefore, double toleranceAfter) |
| 433 |
{ |
431 |
{ |
| 434 |
UserGestureIndicator indicator(ProcessingUserGesture); |
432 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 435 |
ensureModel(contextId).seekToTime(time, toleranceBefore, toleranceAfter); |
433 |
ensureModel(contextId).seekToTime(time, toleranceBefore, toleranceAfter); |
| 436 |
} |
434 |
} |
| 437 |
|
435 |
|
| 438 |
void PlaybackSessionManager::fastSeek(uint64_t contextId, double time) |
436 |
void PlaybackSessionManager::fastSeek(PlaybackSessionContextIdentifier contextId, double time) |
| 439 |
{ |
437 |
{ |
| 440 |
UserGestureIndicator indicator(ProcessingUserGesture); |
438 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 441 |
ensureModel(contextId).fastSeek(time); |
439 |
ensureModel(contextId).fastSeek(time); |
| 442 |
} |
440 |
} |
| 443 |
|
441 |
|
| 444 |
void PlaybackSessionManager::beginScanningForward(uint64_t contextId) |
442 |
void PlaybackSessionManager::beginScanningForward(PlaybackSessionContextIdentifier contextId) |
| 445 |
{ |
443 |
{ |
| 446 |
UserGestureIndicator indicator(ProcessingUserGesture); |
444 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 447 |
ensureModel(contextId).beginScanningForward(); |
445 |
ensureModel(contextId).beginScanningForward(); |
| 448 |
} |
446 |
} |
| 449 |
|
447 |
|
| 450 |
void PlaybackSessionManager::beginScanningBackward(uint64_t contextId) |
448 |
void PlaybackSessionManager::beginScanningBackward(PlaybackSessionContextIdentifier contextId) |
| 451 |
{ |
449 |
{ |
| 452 |
UserGestureIndicator indicator(ProcessingUserGesture); |
450 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 453 |
ensureModel(contextId).beginScanningBackward(); |
451 |
ensureModel(contextId).beginScanningBackward(); |
| 454 |
} |
452 |
} |
| 455 |
|
453 |
|
| 456 |
void PlaybackSessionManager::endScanning(uint64_t contextId) |
454 |
void PlaybackSessionManager::endScanning(PlaybackSessionContextIdentifier contextId) |
| 457 |
{ |
455 |
{ |
| 458 |
UserGestureIndicator indicator(ProcessingUserGesture); |
456 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 459 |
ensureModel(contextId).endScanning(); |
457 |
ensureModel(contextId).endScanning(); |
| 460 |
} |
458 |
} |
| 461 |
|
459 |
|
| 462 |
void PlaybackSessionManager::selectAudioMediaOption(uint64_t contextId, uint64_t index) |
460 |
void PlaybackSessionManager::selectAudioMediaOption(PlaybackSessionContextIdentifier contextId, uint64_t index) |
| 463 |
{ |
461 |
{ |
| 464 |
UserGestureIndicator indicator(ProcessingUserGesture); |
462 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 465 |
ensureModel(contextId).selectAudioMediaOption(index); |
463 |
ensureModel(contextId).selectAudioMediaOption(index); |
| 466 |
} |
464 |
} |
| 467 |
|
465 |
|
| 468 |
void PlaybackSessionManager::selectLegibleMediaOption(uint64_t contextId, uint64_t index) |
466 |
void PlaybackSessionManager::selectLegibleMediaOption(PlaybackSessionContextIdentifier contextId, uint64_t index) |
| 469 |
{ |
467 |
{ |
| 470 |
UserGestureIndicator indicator(ProcessingUserGesture); |
468 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 471 |
ensureModel(contextId).selectLegibleMediaOption(index); |
469 |
ensureModel(contextId).selectLegibleMediaOption(index); |
| 472 |
} |
470 |
} |
| 473 |
|
471 |
|
| 474 |
void PlaybackSessionManager::handleControlledElementIDRequest(uint64_t contextId) |
472 |
void PlaybackSessionManager::handleControlledElementIDRequest(PlaybackSessionContextIdentifier contextId) |
| 475 |
{ |
473 |
{ |
| 476 |
auto element = ensureModel(contextId).mediaElement(); |
474 |
auto element = ensureModel(contextId).mediaElement(); |
| 477 |
if (element) |
475 |
if (element) |
| 478 |
m_page->send(Messages::PlaybackSessionManagerProxy::HandleControlledElementIDResponse(contextId, element->getIdAttribute())); |
476 |
m_page->send(Messages::PlaybackSessionManagerProxy::HandleControlledElementIDResponse(contextId, element->getIdAttribute())); |
| 479 |
} |
477 |
} |
| 480 |
|
478 |
|
| 481 |
void PlaybackSessionManager::togglePictureInPicture(uint64_t contextId) |
479 |
void PlaybackSessionManager::togglePictureInPicture(PlaybackSessionContextIdentifier contextId) |
| 482 |
{ |
480 |
{ |
| 483 |
UserGestureIndicator indicator(ProcessingUserGesture); |
481 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 484 |
ensureModel(contextId).togglePictureInPicture(); |
482 |
ensureModel(contextId).togglePictureInPicture(); |
| 485 |
} |
483 |
} |
| 486 |
|
484 |
|
| 487 |
void PlaybackSessionManager::toggleMuted(uint64_t contextId) |
485 |
void PlaybackSessionManager::toggleMuted(PlaybackSessionContextIdentifier contextId) |
| 488 |
{ |
486 |
{ |
| 489 |
UserGestureIndicator indicator(ProcessingUserGesture); |
487 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 490 |
ensureModel(contextId).toggleMuted(); |
488 |
ensureModel(contextId).toggleMuted(); |
| 491 |
} |
489 |
} |
| 492 |
|
490 |
|
| 493 |
void PlaybackSessionManager::setMuted(uint64_t contextId, bool muted) |
491 |
void PlaybackSessionManager::setMuted(PlaybackSessionContextIdentifier contextId, bool muted) |
| 494 |
{ |
492 |
{ |
| 495 |
UserGestureIndicator indicator(ProcessingUserGesture); |
493 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 496 |
ensureModel(contextId).setMuted(muted); |
494 |
ensureModel(contextId).setMuted(muted); |
| 497 |
} |
495 |
} |
| 498 |
|
496 |
|
| 499 |
void PlaybackSessionManager::setVolume(uint64_t contextId, double volume) |
497 |
void PlaybackSessionManager::setVolume(PlaybackSessionContextIdentifier contextId, double volume) |
| 500 |
{ |
498 |
{ |
| 501 |
UserGestureIndicator indicator(ProcessingUserGesture); |
499 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 502 |
ensureModel(contextId).setVolume(volume); |
500 |
ensureModel(contextId).setVolume(volume); |
| 503 |
} |
501 |
} |
| 504 |
|
502 |
|
| 505 |
void PlaybackSessionManager::setPlayingOnSecondScreen(uint64_t contextId, bool value) |
503 |
void PlaybackSessionManager::setPlayingOnSecondScreen(PlaybackSessionContextIdentifier contextId, bool value) |
| 506 |
{ |
504 |
{ |
| 507 |
UserGestureIndicator indicator(ProcessingUserGesture); |
505 |
UserGestureIndicator indicator(ProcessingUserGesture); |
| 508 |
ensureModel(contextId).setPlayingOnSecondScreen(value); |
506 |
ensureModel(contextId).setPlayingOnSecondScreen(value); |