Diff
Modified: trunk/Source/WebCore/ChangeLog (185471 => 185472)
--- trunk/Source/WebCore/ChangeLog 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebCore/ChangeLog 2015-06-11 20:53:49 UTC (rev 185472)
@@ -1,3 +1,71 @@
+2015-06-11 Jon Lee <[email protected]>
+
+ Update media controls JS and CSS to use picture-in-picture
+ https://bugs.webkit.org/show_bug.cgi?id=145827
+ <rdar://problem/21311576>
+
+ Reviewed by Dean Jackson.
+
+ * English.lproj/mediaControlsLocalizedStrings.js: Update localized strings.
+ Add a string for the placeholder text, and for the aria-label of the
+ placard.
+
+ * Modules/mediacontrols/MediaControlsHost.idl: Remove uncalled functions.
+ * Modules/mediacontrols/MediaControlsHost.h: Also remove optimizedFullscreenSupported(),
+ which was never used.
+ * Modules/mediacontrols/MediaControlsHost.cpp: Remove uncalled functions and media part IDs.
+ (WebCore::MediaControlsHost::enterFullscreenOptimized): Deleted.
+ (WebCore::MediaControlsHost::mediaUIImageData): Deleted.
+
+ * Modules/mediacontrols/mediaControlsApple.css:
+ (audio::-webkit-media-controls-picture-in-picture-button): Update pseudo-element name.
+ (audio::-webkit-media-controls-optimized-fullscreen-button): Deleted.
+ * Modules/mediacontrols/mediaControlsApple.js: Update global variable name, and classes.
+ (Controller.prototype.createControls): Update button name. Add aria-label to the placeholder.
+ (Controller.prototype.updateFullscreenButtons):
+ (Controller.prototype.updateLayoutForDisplayedWidth):
+ (Controller.prototype.handlePictureInPictureButtonClicked): Update handler names.
+ (Controller.prototype.handleOptimizedFullscreenButtonClicked): Deleted.
+
+ * Modules/mediacontrols/mediaControlsiOS.css: Rename pseudo-element.
+ (audio::-webkit-media-controls-picture-in-picture-button): Add mask images.
+ (audio::-webkit-media-controls-picture-in-picture-button:active):
+ (video::-webkit-media-controls-picture-in-picture-button):
+ (video::-webkit-media-controls-picture-in-picture-button.return-from-picture-in-picture):
+ (audio::-webkit-media-controls-wireless-playback-status.picture-in-picture):
+ (audio::-webkit-media-controls-wireless-playback-text-top.picture-in-picture):
+ (audio::-webkit-media-controls-wireless-playback-text-bottom.picture-in-picture):
+ (audio::-webkit-media-controls-optimized-fullscreen-button): Deleted.
+ (audio::-webkit-media-controls-optimized-fullscreen-button:active): Deleted.
+ (video::-webkit-media-controls-optimized-fullscreen-button): Deleted.
+ (audio::-webkit-media-controls-wireless-playback-status.optimized): Deleted. The placard
+ pseudo-element should be updated from wireless-playback-status to just playback-status
+ since it serves both for pip and AirPlay.
+ (audio::-webkit-media-controls-wireless-playback-text-top.optimized): Deleted.
+ (audio::-webkit-media-controls-wireless-playback-text-bottom.optimized): Deleted.
+ * Modules/mediacontrols/mediaControlsiOS.js:
+ (ControllerIOS.prototype.createControls): Update button names.
+ (ControllerIOS.prototype.configureInlineControls):
+ (ControllerIOS.prototype.handlePictureInPictureButtonClicked): Update handler name.
+ (ControllerIOS.prototype.handlePictureInPictureTouchStart):
+ (ControllerIOS.prototype.handlePictureInPictureTouchEnd):
+ (ControllerIOS.prototype.handlePictureInPictureTouchCancel):
+ (ControllerIOS.prototype.handlePresentationModeChange): Remove changes to the inline bg
+ image style, and rely on the CSS to fill those in. Use localized strings for the placard.
+ Move the aria-label to createControls().
+ (ControllerIOS.prototype.handleOptimizedFullscreenButtonClicked): Deleted.
+ (ControllerIOS.prototype.handleOptimizedFullscreenTouchStart): Deleted.
+ (ControllerIOS.prototype.handleOptimizedFullscreenTouchEnd): Deleted.
+ (ControllerIOS.prototype.handleOptimizedFullscreenTouchCancel): Deleted.
+
+ * html/HTMLMediaElement.cpp: Remove enterFullscreenOptimized since it is never called.
+ (WebCore::HTMLMediaElement::enterFullscreenOptimized): Deleted.
+ * html/HTMLMediaElement.h:
+ * platform/ios/WebCoreSystemInterfaceIOS.h: Remove wkGetMediaUIImageData.
+ * platform/ios/WebCoreSystemInterfaceIOS.mm:
+ * rendering/RenderThemeIOS.mm:
+ (WebCore::RenderThemeIOS::mediaControlsStyleSheet): Remove calls to wkGetMediaUIImageData.
+
2015-06-11 Dean Jackson <[email protected]>
Add an appearance keyword for wireless playback / airplay icon
Modified: trunk/Source/WebCore/English.lproj/mediaControlsLocalizedStrings.js (185471 => 185472)
--- trunk/Source/WebCore/English.lproj/mediaControlsLocalizedStrings.js 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebCore/English.lproj/mediaControlsLocalizedStrings.js 2015-06-11 20:53:49 UTC (rev 185472)
@@ -11,7 +11,7 @@
'Captions': 'Captions',
'Choose Wireless Display': 'Choose Wireless Display',
'Display Full Screen': 'Display Full Screen',
- 'Display Optimized Full Screen': 'Display Optimized Full Screen',
+ 'Display Picture in Picture': 'Display Picture in Picture',
'Duration': 'Duration',
'Elapsed': 'Elapsed',
'Error': 'Error',
@@ -31,8 +31,10 @@
'Start Playback': 'Start Playback',
'Subtitles': 'Subtitles',
'Suspended': 'Suspended',
+ 'This video is playing in Picture in Picture': 'This video is playing in Picture in Picture',
'Unmute': 'Unmute',
'Video Playback': 'Video Playback',
+ 'Video Playback Placeholder': 'Video Playback Placeholder',
'Volume': 'Volume',
'Waiting': 'Waiting'
};
\ No newline at end of file
Modified: trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp (185471 => 185472)
--- trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp 2015-06-11 20:53:49 UTC (rev 185472)
@@ -188,14 +188,7 @@
if (m_textTrackContainer)
m_textTrackContainer->exitedFullscreen();
}
-
-void MediaControlsHost::enterFullscreenOptimized()
-{
-#if PLATFORM(IOS)
- m_mediaElement->enterFullscreenOptimized();
-#endif
-}
-
+
void MediaControlsHost::updateCaptionDisplaySizes()
{
if (m_textTrackContainer)
@@ -278,27 +271,6 @@
m_mediaElement->setMediaControlsDependOnPageScaleFactor(value);
}
-String MediaControlsHost::mediaUIImageData(const String& partID) const
-{
-#if PLATFORM(IOS)
- if (partID == "optimized-fullscreen-button")
- return wkGetMediaUIImageData(wkMediaUIPartOptimizedFullscreenButton);
-
- if (partID == "optimized-fullscreen-return-button")
- return wkGetMediaUIImageData(wkMediaUIPartOptimizedFullscreenReturnButton);
-
- if (partID == "optimized-fullscreen-placeholder")
- return wkGetMediaUIImageData(wkMediaUIPartOptimizedFullscreenPlaceholder);
-
- if (partID == "optimized-fullscreen-placeholder-text")
- return wkGetMediaUIImageData(wkMediaUIPartOptimizedFullscreenPlaceholderText);
-#else
- UNUSED_PARAM(partID);
-#endif
-
- return emptyString();
-}
-
String MediaControlsHost::generateUUID() const
{
return createCanonicalUUIDString();
Modified: trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.h (185471 => 185472)
--- trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.h 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.h 2015-06-11 20:53:49 UTC (rev 185472)
@@ -70,9 +70,6 @@
void updateCaptionDisplaySizes();
void enteredFullscreen();
void exitedFullscreen();
- void enterFullscreenOptimized();
- bool optimizedFullscreenSupported();
- String mediaUIImageData(const String&) const;
String externalDeviceDisplayName() const;
String externalDeviceType() const;
Modified: trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.idl (185471 => 185472)
--- trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.idl 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.idl 2015-06-11 20:53:49 UTC (rev 185472)
@@ -29,13 +29,6 @@
"tvout"
};
-enum MediaUIPartID {
- "optimized-fullscreen-button",
- "optimized-fullscreen-return-button",
- "optimized-fullscreen-placeholder",
- "optimized-fullscreen-placeholder-text"
-};
-
[
NoInterfaceObject,
Conditional=MEDIA_CONTROLS_SCRIPT,
@@ -62,8 +55,6 @@
void updateTextTrackContainer();
void enteredFullscreen();
void exitedFullscreen();
- void enterFullscreenOptimized();
- DOMString mediaUIImageData(MediaUIPartID partID);
DOMString generateUUID();
};
Modified: trunk/Source/WebCore/Modules/mediacontrols/mediaControlsApple.css (185471 => 185472)
--- trunk/Source/WebCore/Modules/mediacontrols/mediaControlsApple.css 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebCore/Modules/mediacontrols/mediaControlsApple.css 2015-06-11 20:53:49 UTC (rev 185472)
@@ -437,8 +437,8 @@
margin-top: 6px;
}
-video::-webkit-media-controls-optimized-fullscreen-button,
-audio::-webkit-media-controls-optimized-fullscreen-button {
+video::-webkit-media-controls-picture-in-picture-button,
+audio::-webkit-media-controls-picture-in-picture-button {
background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 15" transform="rotate(90,0,0)"><linearGradient id="gradient" x2="0" y2="100%" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="rgb(216, 216, 216)"/><stop offset="0.4375" stop-color="rgb(216, 216, 216)"/><stop offset="0.4375" stop-color="rgb(208, 208, 208)"/><stop offset="0.5" stop-color="rgb(208, 208, 208)"/><stop offset="0.5" stop-color="rgb(200, 200, 200)"/><stop offset="1" stop-color="rgb(208, 208, 208)"/></linearGradient><path d="M 7,8 m 0,6 -2,-2 -2,2 c 0,0 -1,1 -2,0 -1,-1 0,-2 0,-2 l 2,-2 -2,-2 6,0 z" style="fill:url(#gradient) "/><path d="M 8,7 m 0,-6 2,2 2,-2 c
0,0 1,-1 2,0 1,1 0,2 0,2 l -2,2 2,2 -6,0 z" style="fill:url(#gradient) "/></svg>');
margin: 0 7px;
}
Modified: trunk/Source/WebCore/Modules/mediacontrols/mediaControlsApple.js (185471 => 185472)
--- trunk/Source/WebCore/Modules/mediacontrols/mediaControlsApple.js 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebCore/Modules/mediacontrols/mediaControlsApple.js 2015-06-11 20:53:49 UTC (rev 185472)
@@ -54,7 +54,7 @@
/* Globals */
Controller.gSimulateWirelessPlaybackTarget = false; // Used for testing when there are no wireless targets.
-Controller.gSimulateOptimizedFullscreenAvailable = false; // Used for testing when optimized fullscreen is not available.
+Controller.gSimulatePictureInPictureAvailable = false; // Used for testing when picture-in-picture is not available.
Controller.prototype = {
@@ -99,10 +99,10 @@
list: 'list',
muteBox: 'mute-box',
muted: 'muted',
- optimized: 'optimized',
paused: 'paused',
+ pictureInPicture: 'picture-in-picture',
playing: 'playing',
- returnFromOptimized: 'return-from-optimized',
+ returnFromPictureInPicture: 'return-from-picture-in-picture',
selected: 'selected',
show: 'show',
small: 'small',
@@ -464,14 +464,15 @@
fullscreenButton.setAttribute('aria-label', this.UIString('Display Full Screen'));
this.listenFor(fullscreenButton, 'click', this.handleFullscreenButtonClicked);
- var optimizedFullscreenButton = this.controls.optimizedFullscreenButton = document.createElement('button');
- optimizedFullscreenButton.setAttribute('pseudo', '-webkit-media-controls-optimized-fullscreen-button');
- optimizedFullscreenButton.setAttribute('aria-label', this.UIString('Display Optimized Full Screen'));
- this.listenFor(optimizedFullscreenButton, 'click', this.handleOptimizedFullscreenButtonClicked);
+ var pictureInPictureButton = this.controls.pictureInPictureButton = document.createElement('button');
+ pictureInPictureButton.setAttribute('pseudo', '-webkit-media-controls-picture-in-picture-button');
+ pictureInPictureButton.setAttribute('aria-label', this.UIString('Display Picture in Picture'));
+ this.listenFor(pictureInPictureButton, 'click', this.handlePictureInPictureButtonClicked);
var inlinePlaybackPlaceholder = this.controls.inlinePlaybackPlaceholder = document.createElement('div');
inlinePlaybackPlaceholder.setAttribute('pseudo', '-webkit-media-controls-wireless-playback-status');
- if (!Controller.gSimulateOptimizedFullscreenAvailable)
+ inlinePlaybackPlaceholder.setAttribute('aria-label', this.UIString('Video Playback Placeholder'));
+ if (!Controller.gSimulatePictureInPictureAvailable)
inlinePlaybackPlaceholder.classList.add(this.ClassNames.hidden);
var inlinePlaybackPlaceholderText = this.controls.inlinePlaybackPlaceholderText = document.createElement('div');
@@ -1025,7 +1026,7 @@
{
var shouldBeHidden = !this.video.webkitSupportsFullscreen || !this.hasVideo();
this.controls.fullscreenButton.classList.toggle(this.ClassNames.hidden, shouldBeHidden && !this.isFullScreen());
- this.controls.optimizedFullscreenButton.classList.toggle(this.ClassNames.hidden, shouldBeHidden);
+ this.controls.pictureInPictureButton.classList.toggle(this.ClassNames.hidden, shouldBeHidden);
this.setNeedsUpdateForDisplayedWidth();
this.updateLayoutForDisplayedWidth();
},
@@ -1441,7 +1442,7 @@
// Filter all the buttons which are not explicitly hidden.
var buttons = [this.controls.playButton, this.controls.rewindButton, this.controls.captionButton,
- this.controls.fullscreenButton, this.controls.optimizedFullscreenButton,
+ this.controls.fullscreenButton, this.controls.pictureInPictureButton,
this.controls.wirelessTargetPicker, this.controls.muteBox];
var visibleButtons = buttons.filter(this.isControlVisible, this);
@@ -1455,7 +1456,7 @@
this.controls.remainingTime.classList.toggle(this.ClassNames.dropped, shouldDropTimeline);
// Then controls in the following order:
- var removeOrder = [this.controls.wirelessTargetPicker, this.controls.optimizedFullscreenButton,
+ var removeOrder = [this.controls.wirelessTargetPicker, this.controls.pictureInPictureButton,
this.controls.captionButton, this.controls.muteBox, this.controls.rewindButton,
this.controls.fullscreenButton];
removeOrder.forEach(function(control) {
@@ -1884,7 +1885,7 @@
this.hideTimer = setTimeout(this.hideControls.bind(this), this.HideControlsDelay);
},
- handleOptimizedFullscreenButtonClicked: function(event) {
+ handlePictureInPictureButtonClicked: function(event) {
},
currentPlaybackTargetIsWireless: function() {
Modified: trunk/Source/WebCore/Modules/mediacontrols/mediaControlsiOS.css (185471 => 185472)
--- trunk/Source/WebCore/Modules/mediacontrols/mediaControlsiOS.css 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebCore/Modules/mediacontrols/mediaControlsiOS.css 2015-06-11 20:53:49 UTC (rev 185472)
@@ -225,8 +225,8 @@
audio::-webkit-media-controls-fullscreen-button,
audio::-webkit-media-controls-wireless-playback-picker-button,
video::-webkit-media-controls-wireless-playback-picker-button,
-video::-webkit-media-controls-optimized-fullscreen-button,
-audio::-webkit-media-controls-optimized-fullscreen-button {
+video::-webkit-media-controls-picture-in-picture-button,
+audio::-webkit-media-controls-picture-in-picture-button {
-webkit-appearance: none;
display: block;
padding: 0;
@@ -250,8 +250,8 @@
audio::-webkit-media-controls-fullscreen-button:active,
audio::-webkit-media-controls-wireless-playback-picker-button:active,
video::-webkit-media-controls-wireless-playback-picker-button:active,
-video::-webkit-media-controls-optimized-fullscreen-button:active,
-audio::-webkit-media-controls-optimized-fullscreen-button:active {
+video::-webkit-media-controls-picture-in-picture-button:active,
+audio::-webkit-media-controls-picture-in-picture-button:active {
mix-blend-mode: normal;
opacity: 1;
background-color: white;
@@ -320,14 +320,20 @@
background-color: -apple-system-blue;
}
-/* ================== OPTIMIZED FULLSCREEN BUTTON ====================== */
+/* ================== PICTURE IN PICTURE BUTTON ====================== */
-video::-webkit-media-controls-optimized-fullscreen-button {
+video::-webkit-media-controls-picture-in-picture-button {
width: 35px;
height: 44px;
-webkit-order: 5;
+ -webkit-mask-size: 23px 18px;
+ -webkit-mask-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAkCAYAAAD2IghRAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANhJREFUeNrslzEOwjAMRR2UA3AQ7sLKwsTEglg6sTIgLgs7qCZBRbIsWpDayHH1v/SHJmn0ZFutHYiIqX4F+cDMtCCncgseh1JiLJ5lxH+Br2qGZ2Gpa/IjeVMZ1/ur0ndgLdaeydsvF9/7LrYEz7oo+J0X8Kyz2GuT917As04K/uAFPKtR5xov4FnHLuIy+i7AqavxVr1jAh7H/HbRZE3QZGndBvaW1k1Z6VqdHtjzIBELZrHoKIfRzbpUxqY4IOJzLpWAiAMc4AAHOMAB/m9T9Bn1veklwACtBYmnlYBaIQAAAABJRU5ErkJggg==');
}
+video::-webkit-media-controls-picture-in-picture-button.return-from-picture-in-picture {
+ -webkit-mask-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAkCAYAAAD2IghRAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOZJREFUeNpiZGBg+M8w+AEjMuf///8MTAxDFAxZh7Pgi5IBBv+HZYgPS4f/JwJ/GA1xCjMnIfAejf9poHPvfyy5GFvS6KdjyYPLXeAKiFiH/0ZiT6GT46ni8CAg/onEn0WH/EEVh4OAL5rjFwIx81BwOAh4APE3JPGlNHQ8VR0OAs5A/BVJbjUQsw0Fh4OAHRB/RpLPG0wOJwSsoTXnfBolF5o5HARUBqL2pYbDB6bGBDqchYYlAk27cqPt8YFuHVIaxYyjIT6ckwrjaIiPOnzU4aMOH3X4qMNHHU5sowjWmxhqACDAAI3lmdvpn4aTAAAAAElFTkSuQmCC');
+}
+
/* ================== SPACER ====================== */
video::-webkit-media-controls-spacer,
@@ -560,7 +566,7 @@
font-style: italic;
}
-/* ==================== AIRPLAY PLACARD ==================== */
+/* ==================== PLAYBACK PLACARD ==================== */
video::-webkit-media-controls-wireless-playback-status,
audio::-webkit-media-controls-wireless-playback-status {
@@ -638,21 +644,22 @@
display: none;
}
-video::-webkit-media-controls-wireless-playback-status.optimized,
-audio::-webkit-media-controls-wireless-playback-status.optimized
+video::-webkit-media-controls-wireless-playback-status.picture-in-picture,
+audio::-webkit-media-controls-wireless-playback-status.picture-in-picture
{
background-size: 304px auto;
background-position: 50% calc(.5 * (100% - 25px));
+ background-image: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 304 150\"><g fill=\"none\" stroke=\"#3c3c3c\" stroke-width=\"3\"><path d=\"m 172,106 -81,0 c -3.5,0 -6,-2.5 -6,-6 l 0,-89 c 0,-3.5 2.5,-6 6,-6 l 122,0 c 3.5,0 6,2.5 6,6 l 0,57\" /><path d=\"m 233,119 -53,0 c -3,0 -3,-0 -3,-3 l 0,-40 c 0,-3 0,-3 3,-3 l 53,0 c 3,0 3,0 3,3 l 0,40 c 0,3 0,3 -3,3 z\" /></g></svg>');
}
-video::-webkit-media-controls-wireless-playback-text-top.optimized,
-audio::-webkit-media-controls-wireless-playback-text-top.optimized {
+video::-webkit-media-controls-wireless-playback-text-top.picture-in-picture,
+audio::-webkit-media-controls-wireless-playback-text-top.picture-in-picture {
top: initial;
bottom: 0;
}
-video::-webkit-media-controls-wireless-playback-text-bottom.optimized,
-audio::-webkit-media-controls-wireless-playback-text-bottom.optimized {
+video::-webkit-media-controls-wireless-playback-text-bottom.picture-in-picture,
+audio::-webkit-media-controls-wireless-playback-text-bottom.picture-in-picture {
display: none;
}
Modified: trunk/Source/WebCore/Modules/mediacontrols/mediaControlsiOS.js (185471 => 185472)
--- trunk/Source/WebCore/Modules/mediacontrols/mediaControlsiOS.js 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebCore/Modules/mediacontrols/mediaControlsiOS.js 2015-06-11 20:53:49 UTC (rev 185472)
@@ -125,9 +125,9 @@
this.listenFor(this.controls.fullscreenButton, 'touchstart', this.handleFullscreenTouchStart);
this.listenFor(this.controls.fullscreenButton, 'touchend', this.handleFullscreenTouchEnd);
this.listenFor(this.controls.fullscreenButton, 'touchcancel', this.handleFullscreenTouchCancel);
- this.listenFor(this.controls.optimizedFullscreenButton, 'touchstart', this.handleOptimizedFullscreenTouchStart);
- this.listenFor(this.controls.optimizedFullscreenButton, 'touchend', this.handleOptimizedFullscreenTouchEnd);
- this.listenFor(this.controls.optimizedFullscreenButton, 'touchcancel', this.handleOptimizedFullscreenTouchCancel);
+ this.listenFor(this.controls.pictureInPictureButton, 'touchstart', this.handlePictureInPictureTouchStart);
+ this.listenFor(this.controls.pictureInPictureButton, 'touchend', this.handlePictureInPictureTouchEnd);
+ this.listenFor(this.controls.pictureInPictureButton, 'touchcancel', this.handlePictureInPictureTouchCancel);
this.listenFor(this.controls.timeline, 'touchstart', this.handleTimelineTouchStart);
this.stopListeningFor(this.controls.playButton, 'click', this.handlePlayButtonClicked);
@@ -179,8 +179,8 @@
// Hide the scrubber on audio until the user starts playing.
this.controls.timelineBox.classList.add(this.ClassNames.hidden);
} else {
- if (Controller.gSimulateOptimizedFullscreenAvailable || ('webkitSupportsPresentationMode' in this.video && this.video.webkitSupportsPresentationMode('picture-in-picture')))
- this.controls.panel.appendChild(this.controls.optimizedFullscreenButton);
+ if (Controller.gSimulatePictureInPictureAvailable || ('webkitSupportsPresentationMode' in this.video && this.video.webkitSupportsPresentationMode('picture-in-picture')))
+ this.controls.panel.appendChild(this.controls.pictureInPictureButton);
this.controls.panel.appendChild(this.controls.fullscreenButton);
}
},
@@ -428,7 +428,7 @@
return true;
},
- handleOptimizedFullscreenButtonClicked: function(event) {
+ handlePictureInPictureButtonClicked: function(event) {
if (!('webkitSetPresentationMode' in this.video))
return;
@@ -438,20 +438,20 @@
this.video.webkitSetPresentationMode('picture-in-picture');
},
- handleOptimizedFullscreenTouchStart: function() {
- this.controls.optimizedFullscreenButton.classList.add('active');
+ handlePictureInPictureTouchStart: function() {
+ this.controls.pictureInPictureButton.classList.add('active');
},
- handleOptimizedFullscreenTouchEnd: function(event) {
- this.controls.optimizedFullscreenButton.classList.remove('active');
+ handlePictureInPictureTouchEnd: function(event) {
+ this.controls.pictureInPictureButton.classList.remove('active');
- this.handleOptimizedFullscreenButtonClicked();
+ this.handlePictureInPictureButtonClicked();
return true;
},
- handleOptimizedFullscreenTouchCancel: function(event) {
- this.controls.optimizedFullscreenButton.classList.remove('active');
+ handlePictureInPictureTouchCancel: function(event) {
+ this.controls.pictureInPictureButton.classList.remove('active');
return true;
},
@@ -562,35 +562,30 @@
switch (presentationMode) {
case 'inline':
- this.controls.inlinePlaybackPlaceholder.style.backgroundImage = "";
this.controls.inlinePlaybackPlaceholder.classList.add(this.ClassNames.hidden);
- this.controls.inlinePlaybackPlaceholder.classList.remove(this.ClassNames.optimized);
- this.controls.inlinePlaybackPlaceholderTextTop.classList.remove(this.ClassNames.optimized);
- this.controls.inlinePlaybackPlaceholderTextBottom.classList.remove(this.ClassNames.optimized);
+ this.controls.inlinePlaybackPlaceholder.classList.remove(this.ClassNames.pictureInPicture);
+ this.controls.inlinePlaybackPlaceholderTextTop.classList.remove(this.ClassNames.pictureInPicture);
+ this.controls.inlinePlaybackPlaceholderTextBottom.classList.remove(this.ClassNames.pictureInPicture);
- this.controls.optimizedFullscreenButton.classList.remove(this.ClassNames.returnFromOptimized);
+ this.controls.pictureInPictureButton.classList.remove(this.ClassNames.returnFromPictureInPicture);
break;
case 'picture-in-picture':
- var backgroundImage = "url('" + this.host.mediaUIImageData("optimized-fullscreen-placeholder") + "')";
- this.controls.inlinePlaybackPlaceholder.style.backgroundImage = backgroundImage;
- this.controls.inlinePlaybackPlaceholder.setAttribute('aria-label', "video playback placeholder");
- this.controls.inlinePlaybackPlaceholder.classList.add(this.ClassNames.optimized);
+ this.controls.inlinePlaybackPlaceholder.classList.add(this.ClassNames.pictureInPicture);
this.controls.inlinePlaybackPlaceholder.classList.remove(this.ClassNames.hidden);
- this.controls.inlinePlaybackPlaceholderTextTop.innerText = this.host.mediaUIImageData("optimized-fullscreen-placeholder-text");
- this.controls.inlinePlaybackPlaceholderTextTop.classList.add(this.ClassNames.optimized);
+ this.controls.inlinePlaybackPlaceholderTextTop.innerText = this.UIString('This video is playing in Picture in Picture');
+ this.controls.inlinePlaybackPlaceholderTextTop.classList.add(this.ClassNames.pictureInPicture);
this.controls.inlinePlaybackPlaceholderTextBottom.innerText = "";
- this.controls.inlinePlaybackPlaceholderTextBottom.classList.add(this.ClassNames.optimized);
+ this.controls.inlinePlaybackPlaceholderTextBottom.classList.add(this.ClassNames.pictureInPicture);
- this.controls.optimizedFullscreenButton.classList.add(this.ClassNames.returnFromOptimized);
+ this.controls.pictureInPictureButton.classList.add(this.ClassNames.returnFromPictureInPicture);
break;
default:
- this.controls.inlinePlaybackPlaceholder.style.backgroundImage = "";
- this.controls.inlinePlaybackPlaceholder.classList.remove(this.ClassNames.optimized);
- this.controls.inlinePlaybackPlaceholderTextTop.classList.remove(this.ClassNames.optimized);
- this.controls.inlinePlaybackPlaceholderTextBottom.classList.remove(this.ClassNames.optimized);
+ this.controls.inlinePlaybackPlaceholder.classList.remove(this.ClassNames.pictureInPicture);
+ this.controls.inlinePlaybackPlaceholderTextTop.classList.remove(this.ClassNames.pictureInPicture);
+ this.controls.inlinePlaybackPlaceholderTextBottom.classList.remove(this.ClassNames.pictureInPicture);
- this.controls.optimizedFullscreenButton.classList.remove(this.ClassNames.returnFromOptimized);
+ this.controls.pictureInPictureButton.classList.remove(this.ClassNames.returnFromPictureInPicture);
break;
}
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (185471 => 185472)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2015-06-11 20:53:49 UTC (rev 185472)
@@ -5138,12 +5138,6 @@
}
}
-void HTMLMediaElement::enterFullscreenOptimized()
-{
- if (m_mediaSession->allowsAlternateFullscreen(*this))
- enterFullscreen(VideoFullscreenModeOptimized);
-}
-
void HTMLMediaElement::didBecomeFullscreenElement()
{
if (hasMediaControls())
Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (185471 => 185472)
--- trunk/Source/WebCore/html/HTMLMediaElement.h 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h 2015-06-11 20:53:49 UTC (rev 185472)
@@ -368,7 +368,6 @@
void enterFullscreen(VideoFullscreenMode);
virtual void enterFullscreen() override;
WEBCORE_EXPORT void exitFullscreen();
- void enterFullscreenOptimized();
virtual bool hasClosedCaptions() const override;
virtual bool closedCaptionsVisible() const override;
Modified: trunk/Source/WebCore/platform/ios/WebCoreSystemInterfaceIOS.h (185471 => 185472)
--- trunk/Source/WebCore/platform/ios/WebCoreSystemInterfaceIOS.h 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebCore/platform/ios/WebCoreSystemInterfaceIOS.h 2015-06-11 20:53:49 UTC (rev 185472)
@@ -78,13 +78,4 @@
extern bool (*wkIsOptimizedFullscreenSupported)(void);
-typedef enum {
- wkMediaUIPartOptimizedFullscreenButton = 0,
- wkMediaUIPartOptimizedFullscreenReturnButton,
- wkMediaUIPartOptimizedFullscreenPlaceholder,
- wkMediaUIPartOptimizedFullscreenPlaceholderText
-} wkMediaUIPart;
-extern CFStringRef (*wkGetMediaUIImageData)(int wkMediaUIPart);
-
-
#endif // WebCoreSystemInterfaceIOS_h
Modified: trunk/Source/WebCore/platform/ios/WebCoreSystemInterfaceIOS.mm (185471 => 185472)
--- trunk/Source/WebCore/platform/ios/WebCoreSystemInterfaceIOS.mm 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebCore/platform/ios/WebCoreSystemInterfaceIOS.mm 2015-06-11 20:53:49 UTC (rev 185472)
@@ -117,7 +117,6 @@
WEBCORE_EXPORT CFStringRef (*wkGetVendorNameForNavigator)(void);
WEBCORE_EXPORT bool (*wkIsOptimizedFullscreenSupported)(void);
-WEBCORE_EXPORT CFStringRef (*wkGetMediaUIImageData)(int);
WEBCORE_EXPORT int (*wkExernalDeviceTypeForPlayer)(AVPlayer *);
WEBCORE_EXPORT NSString *(*wkExernalDeviceDisplayNameForPlayer)(AVPlayer *);
Modified: trunk/Source/WebCore/rendering/RenderThemeIOS.mm (185471 => 185472)
--- trunk/Source/WebCore/rendering/RenderThemeIOS.mm 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebCore/rendering/RenderThemeIOS.mm 2015-06-11 20:53:49 UTC (rev 185472)
@@ -1285,8 +1285,6 @@
if (m_mediaControlsStyleSheet.isEmpty()) {
StringBuilder builder;
builder.append([NSString stringWithContentsOfFile:[[NSBundle bundleForClass:[WebCoreRenderThemeBundle class]] pathForResource:@"mediaControlsiOS" ofType:@"css"] encoding:NSUTF8StringEncoding error:nil]);
- builder.append(wkGetMediaUIImageData(wkMediaUIPartOptimizedFullscreenButton));
- builder.append(wkGetMediaUIImageData(wkMediaUIPartOptimizedFullscreenReturnButton));
m_mediaControlsStyleSheet = builder.toString();
}
return m_mediaControlsStyleSheet;
Modified: trunk/Source/WebKit/mac/ChangeLog (185471 => 185472)
--- trunk/Source/WebKit/mac/ChangeLog 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebKit/mac/ChangeLog 2015-06-11 20:53:49 UTC (rev 185472)
@@ -1,3 +1,14 @@
+2015-06-11 Jon Lee <[email protected]>
+
+ Update media controls JS and CSS to use picture-in-picture
+ https://bugs.webkit.org/show_bug.cgi?id=145827
+ <rdar://problem/21311576>
+
+ Reviewed by Dean Jackson.
+
+ * WebCoreSupport/WebSystemInterface.mm:
+ (InitWebCoreSystemInterface): Deleted GetMediaUIImageData.
+
2015-06-10 Jon Honeycutt <[email protected]>
Meta refresh preference is not respected on fast path WebView
Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebSystemInterface.mm (185471 => 185472)
--- trunk/Source/WebKit/mac/WebCoreSupport/WebSystemInterface.mm 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebSystemInterface.mm 2015-06-11 20:53:49 UTC (rev 185472)
@@ -125,7 +125,6 @@
INIT(GetScreenScaleFactor);
INIT(IsGB18030ComplianceRequired);
INIT(IsOptimizedFullscreenSupported);
- INIT(GetMediaUIImageData);
#endif
#if !PLATFORM(IOS)
Modified: trunk/Source/WebKit2/ChangeLog (185471 => 185472)
--- trunk/Source/WebKit2/ChangeLog 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebKit2/ChangeLog 2015-06-11 20:53:49 UTC (rev 185472)
@@ -1,3 +1,14 @@
+2015-06-11 Jon Lee <[email protected]>
+
+ Update media controls JS and CSS to use picture-in-picture
+ https://bugs.webkit.org/show_bug.cgi?id=145827
+ <rdar://problem/21311576>
+
+ Reviewed by Dean Jackson.
+
+ * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
+ (InitWebCoreSystemInterface): Deleted GetMediaUIImageData.
+
2015-06-11 Alex Christensen <[email protected]>
Speculative build fix for GTK after r185463.
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm (185471 => 185472)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm 2015-06-11 20:51:11 UTC (rev 185471)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm 2015-06-11 20:53:49 UTC (rev 185472)
@@ -191,7 +191,6 @@
INIT(GetScreenScaleFactor);
INIT(IsGB18030ComplianceRequired);
INIT(IsOptimizedFullscreenSupported);
- INIT(GetMediaUIImageData);
#endif
#if ENABLE(PUBLIC_SUFFIX_LIST)