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

Side by Side Diff: third_party/WebKit/Source/core/html/shadow/MediaControls.cpp

Issue 1578853002: [m48 merge] Remove clientWidth call during MediaControls::reset. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2564
Patch Set: nopresubmit / notry Created 4 years, 11 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/html/shadow/MediaControlsTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2011, 2012 Apple Inc. All rights reserved.
3 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. 3 * Copyright (C) 2011, 2012 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 m_timeline->setDuration(duration); 253 m_timeline->setDuration(duration);
254 m_timeline->setPosition(mediaElement().currentTime()); 254 m_timeline->setPosition(mediaElement().currentTime());
255 255
256 updateVolume(); 256 updateVolume();
257 257
258 refreshClosedCaptionsButtonVisibility(); 258 refreshClosedCaptionsButtonVisibility();
259 259
260 m_fullScreenButton->setIsWanted(shouldShowFullscreenButton(mediaElement())); 260 m_fullScreenButton->setIsWanted(shouldShowFullscreenButton(mediaElement()));
261 261
262 refreshCastButtonVisibilityWithoutUpdate(); 262 refreshCastButtonVisibilityWithoutUpdate();
263
264 // Set the panel width here, and force a layout, before the controls update.
265 // This would be harmless for the !useNewUi case too, but it causes
266 // compositing/geometry/video-fixed-scrolling.html to fail with two extra
267 // 0 height nodes in the render tree.
268 if (useNewUi)
269 m_panelWidth = m_panel->clientWidth();
270 } 263 }
271 264
272 LayoutObject* MediaControls::layoutObjectForTextTrackLayout() 265 LayoutObject* MediaControls::layoutObjectForTextTrackLayout()
273 { 266 {
274 return m_panel->layoutObject(); 267 return m_panel->layoutObject();
275 } 268 }
276 269
277 void MediaControls::show() 270 void MediaControls::show()
278 { 271 {
279 makeOpaque(); 272 makeOpaque();
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 638
646 void MediaControls::computeWhichControlsFit() 639 void MediaControls::computeWhichControlsFit()
647 { 640 {
648 // Hide all controls that don't fit, and show the ones that do. 641 // Hide all controls that don't fit, and show the ones that do.
649 // This might be better suited for a layout, but since JS media controls 642 // This might be better suited for a layout, but since JS media controls
650 // won't benefit from that anwyay, we just do it here like JS will. 643 // won't benefit from that anwyay, we just do it here like JS will.
651 644
652 if (!RuntimeEnabledFeatures::newMediaPlaybackUiEnabled()) 645 if (!RuntimeEnabledFeatures::newMediaPlaybackUiEnabled())
653 return; 646 return;
654 647
655 if (!m_panelWidth)
656 return;
657
658 // Controls that we'll hide / show, in order of decreasing priority. 648 // Controls that we'll hide / show, in order of decreasing priority.
659 MediaControlElement* elements[] = { 649 MediaControlElement* elements[] = {
660 m_playButton.get(), 650 m_playButton.get(),
661 m_toggleClosedCaptionsButton.get(), 651 m_toggleClosedCaptionsButton.get(),
662 m_fullScreenButton.get(), 652 m_fullScreenButton.get(),
663 m_timeline.get(), 653 m_timeline.get(),
664 m_currentTimeDisplay.get(), 654 m_currentTimeDisplay.get(),
665 m_volumeSlider.get(), 655 m_volumeSlider.get(),
666 m_castButton.get(), 656 m_castButton.get(),
667 m_muteButton.get(), 657 m_muteButton.get(),
668 m_durationDisplay.get(), 658 m_durationDisplay.get(),
669 }; 659 };
670 660
661 if (!m_panelWidth) {
662 // No layout yet -- hide everything, then make them show up later.
663 // This prevents the wrong controls from being shown briefly
664 // immediately after the first layout and paint, but before we have
665 // a chance to revise them.
666 for (MediaControlElement* element : elements) {
667 if (element)
668 element->setDoesFit(false);
669 }
670 return;
671 }
672
671 int usedWidth = 0; 673 int usedWidth = 0;
672 bool droppedCastButton = false; 674 bool droppedCastButton = false;
673 // Assume that all controls require 48px. Ideally, we could get this 675 // Assume that all controls require 48px. Ideally, we could get this
674 // the computed style, but that requires the controls to be shown. 676 // the computed style, but that requires the controls to be shown.
675 const int minimumWidth = 48; 677 const int minimumWidth = 48;
676 for (MediaControlElement* element : elements) { 678 for (MediaControlElement* element : elements) {
677 if (!element) 679 if (!element)
678 continue; 680 continue;
679 681
680 if (element->isWanted()) { 682 if (element->isWanted()) {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 visitor->trace(m_toggleClosedCaptionsButton); 741 visitor->trace(m_toggleClosedCaptionsButton);
740 visitor->trace(m_fullScreenButton); 742 visitor->trace(m_fullScreenButton);
741 visitor->trace(m_durationDisplay); 743 visitor->trace(m_durationDisplay);
742 visitor->trace(m_enclosure); 744 visitor->trace(m_enclosure);
743 visitor->trace(m_castButton); 745 visitor->trace(m_castButton);
744 visitor->trace(m_overlayCastButton); 746 visitor->trace(m_overlayCastButton);
745 HTMLDivElement::trace(visitor); 747 HTMLDivElement::trace(visitor);
746 } 748 }
747 749
748 } 750 }
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/html/shadow/MediaControlsTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698