Changeset 207423 in webkit
- Timestamp:
- Oct 17, 2016 12:54:04 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/media/modern-media-controls/icon-service/icon-service-expected.txt
r206864 r207423 5 5 6 6 Checking path to images is computed according to traits 7 PASS iconService. urlForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS).includes("macOS/pause") is true8 PASS iconService. urlForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS).includes("iOS/pause") is true9 PASS iconService. urlForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS | LayoutTraits.Fullscreen).includes("macOS/pause-fullscreen") is true7 PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS).src.includes("macOS/pause@") is true 8 PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS).src.includes("iOS/pause@") is true 9 PASS iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS | LayoutTraits.Fullscreen).src.includes("macOS/pause-fullscreen@") is true 10 10 11 11 Checking requested images are cached -
trunk/LayoutTests/media/modern-media-controls/icon-service/icon-service.html
r206864 r207423 11 11 12 12 debug("Checking path to images is computed according to traits"); 13 shouldBeTrue('iconService. urlForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS).includes("macOS/pause")');14 shouldBeTrue('iconService. urlForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS).includes("iOS/pause")');15 shouldBeTrue('iconService. urlForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS | LayoutTraits.Fullscreen).includes("macOS/pause-fullscreen")');13 shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS).src.includes("macOS/pause@")'); 14 shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.iOS).src.includes("iOS/pause@")'); 15 shouldBeTrue('iconService.imageForIconNameAndLayoutTraits(Icons.Pause, LayoutTraits.macOS | LayoutTraits.Fullscreen).src.includes("macOS/pause-fullscreen@")'); 16 16 17 17 debug(""); -
trunk/Source/WebCore/ChangeLog
r207421 r207423 1 2016-10-17 Antoine Quint <graouts@apple.com> 2 3 [Modern Media Controls] Add a MediaControlsHost API to retrieve images as base64 4 https://bugs.webkit.org/show_bug.cgi?id=163502 5 <rdar://problem/28792017> 6 7 Reviewed by Darin Adler. 8 9 Add a new `base64StringForIconAndPlatform()` method to MediaControlsHost such that we 10 may load images from the modern-media-controls directory in the WebCore.framework bundle. 11 We use this new method in the iconService singleton when a `mediaControlsHost` is set, 12 which will be set in a later patch. 13 14 * Modules/mediacontrols/MediaControlsHost.cpp: 15 (WebCore::MediaControlsHost::base64StringForIconAndPlatform): 16 * Modules/mediacontrols/MediaControlsHost.h: 17 * Modules/mediacontrols/MediaControlsHost.idl: 18 * Modules/modern-media-controls/controls/icon-service.js: 19 (const.iconService.new.IconService.prototype.urlForIconNameAndLayoutTraits): 20 (const.iconService.new.IconService): 21 * rendering/RenderTheme.h: 22 (WebCore::RenderTheme::mediaControlsBase64StringForIconAndPlatform): 23 (WebCore::RenderTheme::mediaControlsScript): Deleted. 24 * rendering/RenderThemeMac.h: 25 * rendering/RenderThemeMac.mm: 26 (WebCore::RenderThemeMac::mediaControlsBase64StringForIconAndPlatform): 27 1 28 2016-10-17 Antoine Quint <graouts@apple.com> 2 29 -
trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp
r207421 r207423 293 293 } 294 294 295 String MediaControlsHost::base64StringForIconAndPlatform(const String& iconName, const String& platform) const 296 { 297 Page* page = m_mediaElement->document().page(); 298 if (!page) 299 return emptyString(); 300 return RenderTheme::themeForPage(page)->mediaControlsBase64StringForIconAndPlatform(iconName, platform); 301 } 302 295 303 } 296 304 -
trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.h
r207421 r207423 84 84 85 85 String shadowRootCSSText() const; 86 String base64StringForIconAndPlatform(const String& iconName, const String& platform) const; 86 87 87 88 private: -
trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.idl
r207421 r207423 62 62 63 63 [EnabledAtRuntime=ModernMediaControls] readonly attribute DOMString shadowRootCSSText; 64 [EnabledAtRuntime=ModernMediaControls] DOMString base64StringForIconAndPlatform(DOMString iconName, DOMString platform); 64 65 }; -
trunk/Source/WebCore/Modules/modern-media-controls/controls/icon-service.js
r207024 r207423 53 53 } 54 54 55 // Public 56 55 57 imageForIconNameAndLayoutTraits(iconName, layoutTraits) 56 58 { 57 const path = this.urlForIconNameAndLayoutTraits(iconName, layoutTraits); 58 59 const [fileName, platform] = this._fileNameAndPlatformForIconNameAndLayoutTraits(iconName, layoutTraits); 60 const path = `${platform}/${fileName}.png`; 61 59 62 let image = this.images[path]; 60 63 if (image) … … 62 65 63 66 image = this.images[path] = new Image; 64 image.src = path; 67 68 if (this.mediaControlsHost) 69 image.src = "data:image/png;base64," + this.mediaControlsHost.base64StringForIconAndPlatform(fileName, platform); 70 else 71 image.src = `${this.directoryPath}/${path}`; 72 65 73 return image; 66 74 } 67 75 68 urlForIconNameAndLayoutTraits(iconName, layoutTraits) 76 // Private 77 78 _fileNameAndPlatformForIconNameAndLayoutTraits(iconName, layoutTraits) 69 79 { 70 80 let platform; … … 79 89 iconName += "-fullscreen"; 80 90 81 return `${this.directoryPath}/${platform}/${iconName}@${window.devicePixelRatio}x.png`; 91 const fileName = `${iconName}@${window.devicePixelRatio}x`; 92 93 return [fileName, platform]; 82 94 } 83 95 -
trunk/Source/WebCore/Modules/modern-media-controls/controls/start-button.js
r207015 r207423 37 37 38 38 const image = this.element.appendChild(new Image); 39 image.src = iconService. urlForIconNameAndLayoutTraits(Icons.Start, this.layoutTraits);39 image.src = iconService.imageForIconNameAndLayoutTraits(Icons.Start, this.layoutTraits).src; 40 40 } 41 41 -
trunk/Source/WebCore/rendering/RenderTheme.h
r205980 r207423 102 102 virtual String extraMediaControlsStyleSheet() { return String(); } 103 103 virtual String mediaControlsScript() { return String(); } 104 virtual String mediaControlsBase64StringForIconAndPlatform(const String&, const String&) { return String(); } 104 105 #endif 105 106 #if ENABLE(FULLSCREEN_API) -
trunk/Source/WebCore/rendering/RenderThemeMac.h
r205980 r207423 109 109 String mediaControlsStyleSheet() override; 110 110 String mediaControlsScript() override; 111 String mediaControlsBase64StringForIconAndPlatform(const String&, const String&) override; 111 112 #endif 112 113 -
trunk/Source/WebCore/rendering/RenderThemeMac.mm
r207418 r207423 273 273 } 274 274 275 String RenderThemeMac::mediaControlsBase64StringForIconAndPlatform(const String& iconName, const String& platform) 276 { 277 #if ENABLE(MEDIA_CONTROLS_SCRIPT) 278 if (!RuntimeEnabledFeatures::sharedFeatures().modernMediaControlsEnabled()) 279 return emptyString(); 280 281 String directory = "modern-media-controls/images/" + platform; 282 NSBundle *bundle = [NSBundle bundleForClass:[WebCoreRenderThemeBundle class]]; 283 return [[NSData dataWithContentsOfFile:[bundle pathForResource:iconName ofType:@"png" inDirectory:directory]] base64EncodedStringWithOptions:0]; 284 #else 285 return emptyString(); 286 #endif 287 } 288 275 289 #endif // ENABLE(VIDEO) 276 290
Note: See TracChangeset
for help on using the changeset viewer.