Changeset 142809 in webkit
- Timestamp:
- Feb 13, 2013 2:57:11 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r142805 r142809 1 2013-02-13 Eric Carlson <eric.carlson@apple.com> 2 3 [Mac] Caption menu should have only one item selected 4 https://bugs.webkit.org/show_bug.cgi?id=109730 5 6 Reviewed by Dean Jackson. 7 8 * media/track/track-user-preferences-expected.txt: 9 * media/track/track-user-preferences.html: Update test to check for reactions to preferences. 10 1 11 2013-02-13 Hans Muller <hmuller@adobe.com> 2 12 -
trunk/LayoutTests/media/track/track-user-preferences-expected.txt
r142580 r142809 4 4 Set user languages to: ['no', 'es-ES', 'en', 'fr']. 5 5 6 Test 1: track selected because of 'default' attribute6 Test 1: 'no' track selected because of user preferred language 7 7 - creating tracks for: [en,fr,no]. 8 EVENT(load)9 EXPECTED (event.target.srclang == 'fr') OK10 EXPECTED (event.target.readyState == '2') OK11 12 Test 2: track selected because of original user preferred language13 - creating tracks for: [fr,en,no].14 8 EVENT(load) 15 9 EXPECTED (event.target.srclang == 'no') OK 16 10 EXPECTED (event.target.readyState == '2') OK 17 11 18 Test 3: preferred language changed by selecting track from menu 12 Test 2: 'no' track still selected because of language, overriding 'default' attribute 13 - creating tracks for: [fr,en,no]. 14 -- 'en' track marked as default. 15 EVENT(load) 16 EXPECTED (event.target.srclang == 'no') OK 17 EXPECTED (event.target.readyState == '2') OK 18 19 Test 3: select 'fr' track from menu 19 20 - show captions menu. 21 EXPECTED (trackMenuItems[1].className == '') OK 22 EXPECTED (trackMenuItems[2].className == '') OK 23 EXPECTED (trackMenuItems[3].className == 'selected') OK 20 24 - click on menu item 2. 21 EXPECTED (video.textTracks[0].mode == 'showing') OK22 EXPECTED (video.textTracks[0].language == 'fr') OK23 - creating tracks for: [no,fr,en].24 25 EVENT(load) 25 26 EXPECTED (event.target.srclang == 'fr') OK 26 27 EXPECTED (event.target.readyState == '2') OK 28 EXPECTED (video.textTracks[0].mode == 'showing') OK 29 EXPECTED (video.textTracks[0].language == 'fr') OK 27 30 28 Test 4: turning captions off from menu disables captions 31 Test 4: preferred language was changed to 'fr' by selecting track from menu 32 - creating tracks for: [ru,en,fr]. 33 EVENT(load) 34 EXPECTED (event.target.srclang == 'fr') OK 35 EXPECTED (event.target.readyState == '2') OK 36 EXPECTED (video.textTracks[2].mode == 'showing') OK 37 EXPECTED (video.textTracks[2].language == 'fr') OK 38 39 Test 5: turning captions off from menu disables caption selection 29 40 - show captions menu. 30 41 - click on menu item 0. -
trunk/LayoutTests/media/track/track-user-preferences.html
r142580 r142809 12 12 var testStage = 0; 13 13 var captionsButtonCoordinates; 14 var trackMenuItems; 14 15 15 16 function showCaptionMenu() … … 25 26 function trackMenuList() 26 27 { 27 vartrackListElement = getTrackListElement();28 trackListElement = getTrackListElement(); 28 29 if (!trackListElement) 29 30 return; … … 47 48 { 48 49 consoleWrite("- click on menu item " + index + "."); 49 var track ListItems = trackMenuList();50 var selectedTrackItem = track ListItems[index];50 var trackMenuItems = trackMenuList(); 51 var selectedTrackItem = trackMenuItems[index]; 51 52 var boundingRect = selectedTrackItem.getBoundingClientRect(); 52 53 var x = boundingRect.left + boundingRect.width / 2; … … 73 74 track.setAttribute('srclang', language); 74 75 track.setAttribute('onload', 'trackLoaded()'); 75 if (isDefault) 76 if (isDefault) { 77 consoleWrite("-- '" + language + "' track marked as default."); 76 78 track.setAttribute('default', 'default'); 79 } 77 80 video.appendChild(track); 78 81 } … … 94 97 switch (testStage) { 95 98 case 1: 96 consoleWrite("<br>Test 1: track selected because of 'default' attribute");97 createTrackElements(['en', 'fr', 'no'] , 1);98 expectedLanguage = ' fr';99 consoleWrite("<br>Test 1: 'no' track selected because of user preferred language"); 100 createTrackElements(['en', 'fr', 'no']); 101 expectedLanguage = 'no'; 99 102 break; 100 103 101 104 case 2: 102 consoleWrite("<br>Test 2: track selected because of original user preferred language");103 createTrackElements(['fr', 'en', 'no'] );105 consoleWrite("<br>Test 2: 'no' track still selected because of language, overriding 'default' attribute"); 106 createTrackElements(['fr', 'en', 'no'], 1); 104 107 expectedLanguage = 'no'; 105 108 break; 106 109 107 110 case 3: 108 consoleWrite("<br>Test 3: preferred language changed by selecting track from menu"); 111 // Clear the debug setting so it isn't considered in the track selection logic 112 internals.settings.setShouldDisplayTrackKind('Captions', false); 113 114 consoleWrite("<br>Test 3: select 'fr' track from menu"); 109 115 showCaptionMenu(); 110 116 break; 111 117 112 118 case 4: 119 trackMenuItems = trackMenuList(); 120 testExpected("trackMenuItems[1].className", ""); 121 testExpected("trackMenuItems[2].className", ""); 122 testExpected("trackMenuItems[3].className", "selected"); 123 113 124 selectCaptionMenuItem(2); 114 testExpected("video.textTracks[0].mode", "showing");115 testExpected("video.textTracks[0].language", "fr");116 125 expectedLanguage = 'fr'; 117 createTrackElements([ 'no', 'fr', 'en']);118 126 break; 119 127 120 128 case 5: 121 consoleWrite("<br>Test 4: turning captions off from menu disables captions"); 129 testExpected("video.textTracks[0].mode", "showing"); 130 testExpected("video.textTracks[0].language", "fr"); 131 132 consoleWrite("<br>Test 4: preferred language was changed to 'fr' by selecting track from menu"); 133 createTrackElements(['ru', 'en', 'fr']); 134 expectedLanguage = 'fr'; 135 break; 136 137 case 6: 138 testExpected("video.textTracks[2].mode", "showing"); 139 testExpected("video.textTracks[2].language", "fr"); 140 141 consoleWrite("<br>Test 5: turning captions off from menu disables caption selection"); 122 142 showCaptionMenu(); 123 143 break; 124 144 125 case 6:145 case 7: 126 146 selectCaptionMenuItem(0); 127 147 createTrackElements([ 'ru', 'jp', 'en']); 128 timer = setTimeout(nextStep, 250);148 timer = setTimeout(nextStep, 100); 129 149 break; 130 150 131 case 7:151 case 8: 132 152 for (var ndx = 0; ndx < video.textTracks.length; ++ndx) 133 153 testExpected("video.textTracks[" + ndx + "].mode", "disabled"); … … 146 166 consoleWrite("<br>Set user languages to: ['no', 'es-ES', 'en', 'fr']."); 147 167 internals.setUserPreferredLanguages(['no', 'es-ES', 'en', 'fr']); 168 internals.settings.setShouldDisplayTrackKind('Captions', true); 148 169 } 149 170 </script> -
trunk/Source/WebCore/CMakeLists.txt
r142765 r142809 1748 1748 page/AutoscrollController.cpp 1749 1749 page/BarInfo.cpp 1750 page/CaptionUserPreferences.cpp 1750 1751 page/Chrome.cpp 1751 1752 page/Console.cpp -
trunk/Source/WebCore/ChangeLog
r142805 r142809 1 2013-02-13 Eric Carlson <eric.carlson@apple.com> 2 3 [Mac] Caption menu should have only one item selected 4 https://bugs.webkit.org/show_bug.cgi?id=109730 5 6 Reviewed by Dean Jackson. 7 8 No new tests, media/track/track-user-preferences.html was modified to test the changes. 9 10 * CMakeLists.txt: Add CaptionUserPreferences.cpp. 11 * GNUmakefile.list.am: Ditto. 12 * Target.pri: Ditto. 13 * WebCore.gypi: Ditto. 14 * WebCore.vcproj/WebCore.vcproj: Ditto. 15 * WebCore.vcxproj/WebCore.vcxproj: Ditto. 16 * WebCore.xcodeproj/project.pbxproj: Ditto. 17 18 * html/HTMLMediaElement.cpp: 19 (WebCore::HTMLMediaElement::HTMLMediaElement): Initialize m_processingPreferenceChange. 20 (WebCore::HTMLMediaElement::configureTextTrackGroup): Only end up with one selected track when 21 called because of a preferences change. 22 (WebCore::HTMLMediaElement::captionPreferencesChanged): Call setClosedCaptionsVisible instead 23 of calling markCaptionAndSubtitleTracksAsUnconfigured directly. 24 (WebCore::HTMLMediaElement::markCaptionAndSubtitleTracksAsUnconfigured): Process all tracks, 25 not just track elements. 26 * html/HTMLMediaElement.h: 27 28 * page/CaptionUserPreferences.cpp: Added so the functionality can be tested in DRT. 29 (WebCore::CaptionUserPreferences::registerForPreferencesChangedCallbacks): 30 (WebCore::CaptionUserPreferences::unregisterForPreferencesChangedCallbacks): 31 (WebCore::CaptionUserPreferences::setUserPrefersCaptions): 32 (WebCore::CaptionUserPreferences::captionPreferencesChanged): 33 (WebCore::CaptionUserPreferences::preferredLanguages): 34 (WebCore::CaptionUserPreferences::setPreferredLanguage): 35 (WebCore::CaptionUserPreferences::displayNameForTrack): 36 * page/CaptionUserPreferences.h: 37 38 * page/CaptionUserPreferencesMac.h: 39 * page/CaptionUserPreferencesMac.mm: 40 (WebCore::CaptionUserPreferencesMac::registerForPreferencesChangedCallbacks): Moved some logic 41 to base class. 42 (WebCore::CaptionUserPreferencesMac::captionPreferencesChanged): Ditto. 43 1 44 2013-02-13 Hans Muller <hmuller@adobe.com> 2 45 -
trunk/Source/WebCore/GNUmakefile.list.am
r142765 r142809 4103 4103 Source/WebCore/page/BarInfo.cpp \ 4104 4104 Source/WebCore/page/BarInfo.h \ 4105 Source/WebCore/page/CaptionUserPreferences.cpp \ 4105 4106 Source/WebCore/page/CaptionUserPreferences.h \ 4106 4107 Source/WebCore/page/Chrome.cpp \ -
trunk/Source/WebCore/Target.pri
r142765 r142809 908 908 page/AutoscrollController.cpp \ 909 909 page/BarInfo.cpp \ 910 page/CaptionUserPreferences.cpp \ 910 911 page/Chrome.cpp \ 911 912 page/Console.cpp \ … … 2092 2093 page/AutoscrollController.h \ 2093 2094 page/BarInfo.h \ 2095 page/CaptionUserPreferences.h \ 2094 2096 page/Chrome.h \ 2095 2097 page/Console.h \ -
trunk/Source/WebCore/WebCore.gypi
r142782 r142809 2075 2075 'page/BarInfo.cpp', 2076 2076 'page/BarInfo.h', 2077 'page/CaptionUserPreferences.cpp', 2077 2078 'page/Chrome.cpp', 2078 2079 'page/Console.cpp', -
trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj
r142765 r142809 27112 27112 </File> 27113 27113 <File 27114 RelativePath="..\page\CaptionUserPreferences.cpp" 27115 > 27116 </File> 27117 <File 27118 RelativePath="..\page\CaptionUserPreferences.h" 27119 > 27120 </File> 27121 <File 27114 27122 RelativePath="..\page\Chrome.cpp" 27115 27123 > -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj
r142641 r142809 1997 1997 <ClCompile Include="..\page\AutoscrollController.cpp" /> 1998 1998 <ClCompile Include="..\page\BarInfo.cpp" /> 1999 <ClCompile Include="..\page\CaptionUserPreferences.cpp" /> 1999 2000 <ClCompile Include="..\page\Chrome.cpp" /> 2000 2001 <ClCompile Include="..\page\animation\CompositeAnimation.cpp" /> -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r142765 r142809 104 104 0720B0A114D3323500642957 /* GestureEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 0720B09F14D3323500642957 /* GestureEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; 105 105 072C8B11131C518600A4FCE9 /* MediaPlayerPrivateAVFoundation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 076F0D0912B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.cpp */; }; 106 072CA86116CB4DC3008AE131 /* CaptionUserPreferences.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 072CA86016CB4DC3008AE131 /* CaptionUserPreferences.cpp */; }; 106 107 0735EE6A0F40C5E4004A2604 /* MediaPlayerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 0735EE690F40C5E4004A2604 /* MediaPlayerProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; 107 108 0753860214489E9800B78452 /* CachedTextTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0753860014489E9800B78452 /* CachedTextTrack.cpp */; }; … … 7358 7359 0720B09F14D3323500642956 /* GestureEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GestureEvent.cpp; sourceTree = "<group>"; }; 7359 7360 0720B09F14D3323500642957 /* GestureEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GestureEvent.h; sourceTree = "<group>"; }; 7361 072CA86016CB4DC3008AE131 /* CaptionUserPreferences.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CaptionUserPreferences.cpp; sourceTree = "<group>"; }; 7360 7362 0735EE690F40C5E4004A2604 /* MediaPlayerProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPlayerProxy.h; sourceTree = "<group>"; }; 7361 7363 0753860014489E9800B78452 /* CachedTextTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedTextTrack.cpp; sourceTree = "<group>"; }; … … 16302 16304 BC124EE50C2641CD009E2349 /* BarInfo.h */, 16303 16305 BC124EE60C2641CD009E2349 /* BarInfo.idl */, 16306 072CA86016CB4DC3008AE131 /* CaptionUserPreferences.cpp */, 16304 16307 079D0867162F20E800DB8658 /* CaptionUserPreferences.h */, 16305 16308 079D0869162F21F900DB8658 /* CaptionUserPreferencesMac.h */, … … 29385 29388 08F859D41463F9CD0067D934 /* SVGImageForContainer.cpp in Sources */, 29386 29389 B2227A2C0D00BF220071B782 /* SVGImageElement.cpp in Sources */, 29390 072CA86116CB4DC3008AE131 /* CaptionUserPreferences.cpp in Sources */, 29387 29391 B28C6A290D00C44800334AA4 /* SVGImageLoader.cpp in Sources */, 29388 29392 B2227A2F0D00BF220071B782 /* SVGLangSpace.cpp in Sources */, -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r142580 r142809 290 290 , m_tracksAreReady(true) 291 291 , m_haveVisibleTextTrack(false) 292 , m_processingPreferenceChange(false) 292 293 , m_lastTextTrackUpdateTime(-1) 293 294 , m_textTracks(0) … … 3015 3016 } 3016 3017 3017 void HTMLMediaElement::configureTextTrackGroup(const TrackGroup& group) const3018 void HTMLMediaElement::configureTextTrackGroup(const TrackGroup& group) 3018 3019 { 3019 3020 ASSERT(group.tracks.size()); … … 3032 3033 3033 3034 // First, find the track in the group that should be enabled (if any). 3035 Vector<RefPtr<TextTrack> > currentlyEnabledTracks; 3034 3036 RefPtr<TextTrack> trackToEnable; 3035 3037 RefPtr<TextTrack> defaultTrack; 3036 3038 RefPtr<TextTrack> fallbackTrack; 3037 for (size_t i = 0; !trackToEnable &&i < group.tracks.size(); ++i) {3039 for (size_t i = 0; i < group.tracks.size(); ++i) { 3038 3040 RefPtr<TextTrack> textTrack = group.tracks[i]; 3041 3042 if (m_processingPreferenceChange && textTrack->mode() == TextTrack::showingKeyword()) 3043 currentlyEnabledTracks.append(textTrack); 3044 3045 if (trackToEnable) 3046 continue; 3039 3047 3040 3048 if (userIsInterestedInThisTrackKind(textTrack->kind())) { … … 3075 3083 if (!trackToEnable && fallbackTrack) 3076 3084 trackToEnable = fallbackTrack; 3085 3086 if (currentlyEnabledTracks.size()) { 3087 m_processingPreferenceChange = false; 3088 for (size_t i = 0; i < currentlyEnabledTracks.size(); ++i) { 3089 RefPtr<TextTrack> textTrack = currentlyEnabledTracks[i]; 3090 if (textTrack != trackToEnable) 3091 textTrack->setMode(TextTrack::disabledKeyword()); 3092 } 3093 } 3077 3094 3078 3095 if (trackToEnable) … … 4414 4431 return; 4415 4432 4433 m_processingPreferenceChange = true; 4434 setClosedCaptionsVisible(userPrefersCaptions()); 4435 4416 4436 if (hasMediaControls()) 4417 4437 mediaControls()->textTrackPreferencesChanged(); 4418 4419 markCaptionAndSubtitleTracksAsUnconfigured();4420 4438 } 4421 4439 4422 4440 void HTMLMediaElement::markCaptionAndSubtitleTracksAsUnconfigured() 4423 4441 { 4424 // Mark all track elements as not "configured" so that configureTextTracks()4442 // Mark all tracks as not "configured" so that configureTextTracks() 4425 4443 // will reconsider which tracks to display in light of new user preferences 4426 4444 // (e.g. default tracks should not be displayed if the user has turned off 4427 4445 // captions and non-default tracks should be displayed based on language 4428 4446 // preferences if the user has turned captions on). 4429 for (RefPtr<Node> node = firstChild(); node; node = node->nextSibling()) { 4430 if (!node->hasTagName(trackTag)) 4431 continue; 4447 for (unsigned i = 0; i < m_textTracks->length(); ++i) { 4432 4448 4433 HTMLTrackElement* trackElement = static_cast<HTMLTrackElement*>(node.get()); 4434 RefPtr<TextTrack> textTrack = trackElement->track(); 4435 if (!textTrack) 4436 continue; 4437 4449 RefPtr<TextTrack> textTrack = m_textTracks->item(i); 4438 4450 String kind = textTrack->kind(); 4439 4451 -
trunk/Source/WebCore/html/HTMLMediaElement.h
r142327 r142809 254 254 void configureTextTrackGroupForLanguage(const TrackGroup&) const; 255 255 void configureTextTracks(); 256 void configureTextTrackGroup(const TrackGroup&) const;256 void configureTextTrackGroup(const TrackGroup&); 257 257 258 258 void toggleTrackAtIndex(int index, bool exclusive = true); … … 692 692 bool m_tracksAreReady : 1; 693 693 bool m_haveVisibleTextTrack : 1; 694 bool m_processingPreferenceChange : 1; 694 695 float m_lastTextTrackUpdateTime; 695 696 -
trunk/Source/WebCore/page/CaptionUserPreferences.h
r142580 r142809 51 51 virtual ~CaptionUserPreferences() { } 52 52 53 virtual bool userHasCaptionPreferences() const { return false; }53 virtual bool userHasCaptionPreferences() const { return m_testingMode && m_havePreferences; } 54 54 virtual bool userPrefersCaptions() const { return m_testingMode ? m_userPrefersCaptions : false; } 55 virtual void setUserPrefersCaptions(bool preference) { m_userPrefersCaptions = preference; }55 virtual void setUserPrefersCaptions(bool preference); 56 56 virtual float captionFontSizeScale(bool& important) const { important = false; return 0.05f; } 57 57 virtual String captionsStyleSheetOverride() const { return emptyString(); } 58 virtual void registerForPreferencesChangedCallbacks(CaptionPreferencesChangedListener*) { }59 virtual void unregisterForPreferencesChangedCallbacks(CaptionPreferencesChangedListener*) { }60 58 61 virtual void setPreferredLanguage(String language) { m_userPreferredLanguage = language; } 62 virtual Vector<String> preferredLanguages() const 63 { 64 Vector<String> languages = userPreferredLanguages(); 65 if (m_testingMode && !m_userPreferredLanguage.isEmpty()) 66 languages.insert(0, m_userPreferredLanguage); 67 return languages; 68 } 59 virtual void registerForPreferencesChangedCallbacks(CaptionPreferencesChangedListener*); 60 virtual void unregisterForPreferencesChangedCallbacks(CaptionPreferencesChangedListener*); 61 virtual void captionPreferencesChanged(); 62 bool havePreferenceChangeListeners() const { return !m_captionPreferenceChangeListeners.isEmpty(); } 69 63 70 virtual String displayNameForTrack(TextTrack* track) const 71 { 72 if (track->label().isEmpty() && track->language().isEmpty()) 73 return textTrackNoLabelText(); 74 if (!track->label().isEmpty()) 75 return track->label(); 76 return track->language(); 77 } 64 virtual void setPreferredLanguage(String); 65 virtual Vector<String> preferredLanguages() const; 66 67 virtual String displayNameForTrack(TextTrack*) const; 78 68 79 69 virtual bool testingMode() const { return m_testingMode; } … … 86 76 : m_pageGroup(group) 87 77 , m_testingMode(false) 78 , m_havePreferences(false) 88 79 , m_userPrefersCaptions(false) 89 80 { … … 91 82 92 83 private: 84 HashSet<CaptionPreferencesChangedListener*> m_captionPreferenceChangeListeners; 93 85 PageGroup* m_pageGroup; 94 86 String m_userPreferredLanguage; 95 87 bool m_testingMode; 88 bool m_havePreferences; 96 89 bool m_userPrefersCaptions; 97 90 }; -
trunk/Source/WebCore/page/CaptionUserPreferencesMac.h
r142580 r142809 47 47 virtual float captionFontSizeScale(bool&) const OVERRIDE; 48 48 virtual String captionsStyleSheetOverride() const OVERRIDE; 49 49 50 virtual void registerForPreferencesChangedCallbacks(CaptionPreferencesChangedListener*) OVERRIDE; 50 virtual void unregisterForPreferencesChangedCallbacks(CaptionPreferencesChangedListener*) OVERRIDE;51 51 52 52 virtual void setPreferredLanguage(String) OVERRIDE; 53 53 virtual Vector<String> preferredLanguages() const OVERRIDE; 54 54 55 v oid captionPreferencesChanged();55 virtual void captionPreferencesChanged() OVERRIDE; 56 56 #endif 57 57 … … 75 75 void updateCaptionStyleSheetOveride(); 76 76 77 HashSet<CaptionPreferencesChangedListener*> m_captionPreferenceChangeListeners;78 77 bool m_listeningForPreferenceChanges; 79 78 #endif -
trunk/Source/WebCore/page/CaptionUserPreferencesMac.mm
r142639 r142809 129 129 void CaptionUserPreferencesMac::registerForPreferencesChangedCallbacks(CaptionPreferencesChangedListener* listener) 130 130 { 131 if (!MediaAccessibilityLibrary()) { 132 CaptionUserPreferences::registerForPreferencesChangedCallbacks(listener); 131 CaptionUserPreferences::registerForPreferencesChangedCallbacks(listener); 132 133 if (!MediaAccessibilityLibrary()) 133 134 return; 134 }135 136 ASSERT(!m_captionPreferenceChangeListeners.contains(listener));137 135 138 136 if (!kMAXCaptionAppearanceSettingsChangedNotification) … … 141 139 if (!m_listeningForPreferenceChanges) { 142 140 m_listeningForPreferenceChanges = true; 143 CFNotificationCenterAddObserver 141 CFNotificationCenterAddObserver(CFNotificationCenterGetLocalCenter(), this, userCaptionPreferencesChangedNotificationCallback, kMAXCaptionAppearanceSettingsChangedNotification, NULL, CFNotificationSuspensionBehaviorCoalesce); 144 142 } 145 143 146 144 updateCaptionStyleSheetOveride(); 147 m_captionPreferenceChangeListeners.add(listener); 148 } 149 150 void CaptionUserPreferencesMac::unregisterForPreferencesChangedCallbacks(CaptionPreferencesChangedListener* listener) 151 { 152 if (!MediaAccessibilityLibrary()) { 153 CaptionUserPreferences::unregisterForPreferencesChangedCallbacks(listener); 154 return; 155 } 156 157 if (kMAXCaptionAppearanceSettingsChangedNotification) 158 m_captionPreferenceChangeListeners.remove(listener); 145 } 146 147 void CaptionUserPreferencesMac::captionPreferencesChanged() 148 { 149 if (havePreferenceChangeListeners()) 150 updateCaptionStyleSheetOveride(); 151 152 CaptionUserPreferences::captionPreferencesChanged(); 159 153 } 160 154 … … 422 416 } 423 417 424 void CaptionUserPreferencesMac::captionPreferencesChanged()425 {426 if (m_captionPreferenceChangeListeners.isEmpty())427 return;428 429 updateCaptionStyleSheetOveride();430 431 for (HashSet<CaptionPreferencesChangedListener*>::iterator i = m_captionPreferenceChangeListeners.begin(); i != m_captionPreferenceChangeListeners.end(); ++i)432 (*i)->captionPreferencesChanged();433 }434 435 418 void CaptionUserPreferencesMac::updateCaptionStyleSheetOveride() 436 419 {
Note: See TracChangeset
for help on using the changeset viewer.