Diff
Modified: trunk/Source/WebCore/ChangeLog (139898 => 139899)
--- trunk/Source/WebCore/ChangeLog 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebCore/ChangeLog 2013-01-16 19:19:59 UTC (rev 139899)
@@ -1,3 +1,31 @@
+2013-01-15 Jer Noble <[email protected]>
+
+ Add a Setting to disable QTKit media engine.
+ https://bugs.webkit.org/show_bug.cgi?id=106972
+
+ Reviewed by Eric Carlson.
+
+ Allow the MediaPlayerPrivateQTKit engine to be disabled by adding a
+ runtime setting to Settings. Make the setting 'live' by requerying the
+ installed media engines when the setting changes.
+
+ * WebCore.exp.in: Add new symbols to export list.
+ * page/Settings.cpp: Add new gQTKitEnabled global.
+ (WebCore::Settings::setAVFoundationEnabled): Requery media engines.
+ (WebCore::Settings::setQTKitEnabled): Ditto. Setter for global setting variable.
+ * page/Settings.h:
+ (WebCore::Settings::isQTKitEnabled): Getter for same.
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::installedMediaEngines): Check isQTKitEnabled() before adding
+ MediaPlayerPrivateQTKit engine.
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::requeryMediaEngines): Pass through to MediaPlayer.
+ * html/HTMLMediaElement.h:
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::installedMediaEngines): Take an optional requery options parameter.
+ (WebCore::MediaPlayer::requeryMediaEngines): Pass through to installedMediaEngines().
+ * platform/graphics/MediaPlayer.h:
+
2013-01-16 Christophe Dumez <[email protected]>
[gstreamer] Some media tests occasionally crash with gstreamer 1.0 backend
Modified: trunk/Source/WebCore/WebCore.exp.in (139898 => 139899)
--- trunk/Source/WebCore/WebCore.exp.in 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebCore/WebCore.exp.in 2013-01-16 19:19:59 UTC (rev 139899)
@@ -2202,8 +2202,14 @@
#if USE(AVFOUNDATION)
__ZN7WebCore8Settings20gAVFoundationEnabledE
+__ZN7WebCore8Settings22setAVFoundationEnabledEb
#endif
+#if PLATFORM(MAC) || (PLATFORM(QT) && USE(QTKIT))
+__ZN7WebCore8Settings13gQTKitEnabledE
+__ZN7WebCore8Settings15setQTKitEnabledEb
+#endif
+
#if USE(CFNETWORK)
__ZNK7WebCore13ResourceErrorcvP9__CFErrorEv
__ZN7WebCore12SchedulePairC1EP11__CFRunLoopPK10__CFString
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (139898 => 139899)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2013-01-16 19:19:59 UTC (rev 139899)
@@ -4221,6 +4221,11 @@
MediaPlayer::clearMediaCacheForSite(site);
}
+void HTMLMediaElement::requeryMediaEngines()
+{
+ MediaPlayer::requeryMediaEngines();
+}
+
void HTMLMediaElement::privateBrowsingStateDidChange()
{
if (!m_player)
Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (139898 => 139899)
--- trunk/Source/WebCore/html/HTMLMediaElement.h 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h 2013-01-16 19:19:59 UTC (rev 139899)
@@ -310,6 +310,7 @@
static void getSitesInMediaCache(Vector<String>&);
static void clearMediaCache();
static void clearMediaCacheForSite(const String&);
+ static void requeryMediaEngines();
bool isPlaying() const { return m_playing; }
Modified: trunk/Source/WebCore/page/Settings.cpp (139898 => 139899)
--- trunk/Source/WebCore/page/Settings.cpp 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebCore/page/Settings.cpp 2013-01-16 19:19:59 UTC (rev 139899)
@@ -35,6 +35,7 @@
#include "Frame.h"
#include "FrameTree.h"
#include "FrameView.h"
+#include "HTMLMediaElement.h"
#include "HistoryItem.h"
#include "Page.h"
#include "PageCache.h"
@@ -93,6 +94,10 @@
bool Settings::gAVFoundationEnabled = false;
#endif
+#if PLATFORM(MAC) || (PLATFORM(QT) && USE(QTKIT))
+bool Settings::gQTKitEnabled = true;
+#endif
+
bool Settings::gMockScrollbarsEnabled = false;
bool Settings::gUsesOverlayScrollbars = false;
@@ -635,6 +640,28 @@
#endif
}
+#if USE(AVFOUNDATION)
+void Settings::setAVFoundationEnabled(bool enabled)
+{
+ if (gAVFoundationEnabled == enabled)
+ return;
+
+ gAVFoundationEnabled = enabled;
+ HTMLMediaElement::requeryMediaEngines();
+}
+#endif
+
+#if PLATFORM(MAC) || (PLATFORM(QT) && USE(QTKIT))
+void Settings::setQTKitEnabled(bool enabled)
+{
+ if (gQTKitEnabled == enabled)
+ return;
+
+ gQTKitEnabled = enabled;
+ HTMLMediaElement::requeryMediaEngines();
+}
+#endif
+
void Settings::setScrollingPerformanceLoggingEnabled(bool enabled)
{
m_scrollingPerformanceLoggingEnabled = enabled;
Modified: trunk/Source/WebCore/page/Settings.h (139898 => 139899)
--- trunk/Source/WebCore/page/Settings.h 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebCore/page/Settings.h 2013-01-16 19:19:59 UTC (rev 139899)
@@ -256,10 +256,15 @@
bool tiledBackingStoreEnabled() const { return m_tiledBackingStoreEnabled; }
#if USE(AVFOUNDATION)
- static void setAVFoundationEnabled(bool flag) { gAVFoundationEnabled = flag; }
+ static void setAVFoundationEnabled(bool flag);
static bool isAVFoundationEnabled() { return gAVFoundationEnabled; }
#endif
+#if PLATFORM(MAC) || (PLATFORM(QT) && USE(QTKIT))
+ static void setQTKitEnabled(bool flag);
+ static bool isQTKitEnabled() { return gQTKitEnabled; }
+#endif
+
static const unsigned defaultMaximumHTMLParserDOMTreeDepth = 512;
#if ENABLE(SMOOTH_SCROLLING)
@@ -376,6 +381,11 @@
#if USE(AVFOUNDATION)
static bool gAVFoundationEnabled;
#endif
+
+#if PLATFORM(MAC) || (PLATFORM(QT) && USE(QTKIT))
+ static bool gQTKitEnabled;
+#endif
+
static bool gMockScrollbarsEnabled;
static bool gUsesOverlayScrollbars;
Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp (139898 => 139899)
--- trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp 2013-01-16 19:19:59 UTC (rev 139899)
@@ -58,7 +58,6 @@
#if USE(AVFOUNDATION)
#include "MediaPlayerPrivateAVFoundationObjC.h"
#endif
-#define PlatformMediaEngineClassName MediaPlayerPrivateQTKit
#elif OS(WINCE) && !PLATFORM(QT)
#include "MediaPlayerPrivateWinCE.h"
#define PlatformMediaEngineClassName MediaPlayerPrivate
@@ -205,11 +204,17 @@
static MediaPlayerFactory* bestMediaEngineForTypeAndCodecs(const String& type, const String& codecs, const String& keySystem, const KURL&, MediaPlayerFactory* current = 0);
static MediaPlayerFactory* nextMediaEngine(MediaPlayerFactory* current);
-static Vector<MediaPlayerFactory*>& installedMediaEngines()
+enum RequeryEngineOptions { DoNotRequeryEngines, RequeryEngines };
+static Vector<MediaPlayerFactory*>& installedMediaEngines(RequeryEngineOptions requeryFlags = DoNotRequeryEngines )
{
DEFINE_STATIC_LOCAL(Vector<MediaPlayerFactory*>, installedEngines, ());
static bool enginesQueried = false;
+ if (requeryFlags == RequeryEngines) {
+ installedEngines.clear();
+ enginesQueried = false;
+ }
+
if (!enginesQueried) {
enginesQueried = true;
@@ -223,6 +228,11 @@
}
#endif
+#if PLATFORM(MAC) || (PLATFORM(QT) && USE(QTKIT))
+ if (Settings::isQTKitEnabled())
+ MediaPlayerPrivateQTKit::registerMediaEngine(addMediaEngine);
+#endif
+
#if defined(PlatformMediaEngineClassName)
PlatformMediaEngineClassName::registerMediaEngine(addMediaEngine);
#endif
@@ -1141,6 +1151,11 @@
}
#endif
+void MediaPlayer::requeryMediaEngines()
+{
+ installedMediaEngines(RequeryEngines);
}
+}
+
#endif
Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.h (139898 => 139899)
--- trunk/Source/WebCore/platform/graphics/MediaPlayer.h 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.h 2013-01-16 19:19:59 UTC (rev 139899)
@@ -445,6 +445,8 @@
void setTextTrackRepresentation(TextTrackRepresentation*);
#endif
+ static void requeryMediaEngines();
+
private:
MediaPlayer(MediaPlayerClient*);
void loadWithNextMediaEngine(MediaPlayerFactory*);
Modified: trunk/Source/WebKit/mac/ChangeLog (139898 => 139899)
--- trunk/Source/WebKit/mac/ChangeLog 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebKit/mac/ChangeLog 2013-01-16 19:19:59 UTC (rev 139899)
@@ -1,3 +1,21 @@
+2013-01-15 Jer Noble <[email protected]>
+
+ Add a Setting to disable QTKit media engine.
+ https://bugs.webkit.org/show_bug.cgi?id=106972
+
+ Reviewed by Eric Carlson.
+
+ Add WebKit API to set QTKit enabled setting from user defaults.
+
+ * WebView/WebPreferenceKeysPrivate.h:
+ * WebView/WebPreferences.mm:
+ (+[WebPreferences initialize]): Set WebCore settings based on user defaults.
+ (-[WebPreferences setQTKitEnabled:]): Pass through to WebCore.
+ (-[WebPreferences isQTKitEnabled]): Ditto.
+ * WebView/WebPreferencesPrivate.h:
+ * WebView/WebView.mm:
+ (-[WebView _preferencesChanged:]): Synchronize WebKit/WebCore settings.
+
2013-01-15 Enrica Casucci <[email protected]>
Add a new set of WebKit2 APIs for text search and
Modified: trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (139898 => 139899)
--- trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2013-01-16 19:19:59 UTC (rev 139899)
@@ -129,6 +129,7 @@
#define WebKitScreenFontSubstitutionEnabledKey @"WebKitScreenFontSubstitutionEnabled"
#define WebKitStorageBlockingPolicyKey @"WebKitStorageBlockingPolicy"
#define WebKitPlugInSnapshottingEnabledPreferenceKey @"WebKitPlugInSnapshottingEnabled"
+#define WebKitQTKitEnabledPreferenceKey @"WebKitQTKitEnabled"
// These are private both because callers should be using the cover methods and because the
// cover methods themselves are private.
Modified: trunk/Source/WebKit/mac/WebView/WebPreferences.mm (139898 => 139899)
--- trunk/Source/WebKit/mac/WebView/WebPreferences.mm 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebKit/mac/WebView/WebPreferences.mm 2013-01-16 19:19:59 UTC (rev 139899)
@@ -419,6 +419,7 @@
[NSNumber numberWithLongLong:ApplicationCacheStorage::noQuota()], WebKitApplicationCacheTotalQuota,
[NSNumber numberWithLongLong:ApplicationCacheStorage::noQuota()], WebKitApplicationCacheDefaultOriginQuota,
+ [NSNumber numberWithBool:YES], WebKitQTKitEnabledPreferenceKey,
nil];
@@ -1578,6 +1579,16 @@
return [self _boolValueForKey:WebKitAVFoundationEnabledKey];
}
+- (void)setQTKitEnabled:(BOOL)flag
+{
+ [self _setBoolValue:flag forKey:WebKitQTKitEnabledPreferenceKey];
+}
+
+- (BOOL)isQTKitEnabled
+{
+ return [self _boolValueForKey:WebKitQTKitEnabledPreferenceKey];
+}
+
- (void)setHixie76WebSocketProtocolEnabled:(BOOL)flag
{
}
Modified: trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (139898 => 139899)
--- trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2013-01-16 19:19:59 UTC (rev 139899)
@@ -280,6 +280,9 @@
- (void)setAVFoundationEnabled:(BOOL)flag;
- (BOOL)isAVFoundationEnabled;
+- (void)setQTKitEnabled:(BOOL)flag;
+- (BOOL)isQTKitEnabled;
+
// WebSocket support depends on ENABLE(WEB_SOCKETS).
- (void)setHixie76WebSocketProtocolEnabled:(BOOL)flag;
- (BOOL)isHixie76WebSocketProtocolEnabled;
Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (139898 => 139899)
--- trunk/Source/WebKit/mac/WebView/WebView.mm 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm 2013-01-16 19:19:59 UTC (rev 139899)
@@ -1539,6 +1539,9 @@
settings->setAVFoundationEnabled(false);
#endif
#endif
+#if PLATFORM(MAC) || (PLATFORM(QT) && USE(QTKIT))
+ settings->setQTKitEnabled([preferences isQTKitEnabled]);
+#endif
settings->setMediaPlaybackRequiresUserGesture([preferences mediaPlaybackRequiresUserGesture]);
settings->setMediaPlaybackAllowsInline([preferences mediaPlaybackAllowsInline]);
settings->setSuppressesIncrementalRendering([preferences suppressesIncrementalRendering]);
Modified: trunk/Source/WebKit2/ChangeLog (139898 => 139899)
--- trunk/Source/WebKit2/ChangeLog 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebKit2/ChangeLog 2013-01-16 19:19:59 UTC (rev 139899)
@@ -1,3 +1,20 @@
+2013-01-15 Jer Noble <[email protected]>
+
+ Add a Setting to disable QTKit media engine.
+ https://bugs.webkit.org/show_bug.cgi?id=106972
+
+ Reviewed by Eric Carlson.
+
+ Add a WebKit2 API to access WebCore QTKitEnabled settings.
+
+ * Shared/WebPreferencesStore.h:
+ * UIProcess/API/C/WKPreferences.cpp:
+ (WKPreferencesSetQTKitEnabled): Pass through to WebCore.
+ (WKPreferencesGetQTKitEnabled): Ditto.
+ * UIProcess/API/C/WKPreferences.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::updatePreferences): Synchronize WebKit2/WebCore settings.
+
2013-01-16 Kiran Muppala <[email protected]>
Groundwork to enable process suppression by default on Mac
Modified: trunk/Source/WebKit2/Shared/WebPreferencesStore.h (139898 => 139899)
--- trunk/Source/WebKit2/Shared/WebPreferencesStore.h 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebKit2/Shared/WebPreferencesStore.h 2013-01-16 19:19:59 UTC (rev 139899)
@@ -137,6 +137,7 @@
macro(UsesEncodingDetector, usesEncodingDetector, Bool, bool, false) \
macro(TextAutosizingEnabled, textAutosizingEnabled, Bool, bool, false) \
macro(AggressiveTileRetentionEnabled, aggressiveTileRetentionEnabled, Bool, bool, false) \
+ macro(QTKitEnabled, isQTKitEnabled, Bool, bool, true) \
\
#define FOR_EACH_WEBKIT_DOUBLE_PREFERENCE(macro) \
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp (139898 => 139899)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2013-01-16 19:19:59 UTC (rev 139899)
@@ -1003,3 +1003,13 @@
{
return toImpl(preferencesRef)->aggressiveTileRetentionEnabled();
}
+
+void WKPreferencesSetQTKitEnabled(WKPreferencesRef preferencesRef, bool enabled)
+{
+ toImpl(preferencesRef)->setQTKitEnabled(enabled);
+}
+
+bool WKPreferencesGetQTKitEnabled(WKPreferencesRef preferencesRef)
+{
+ return toImpl(preferencesRef)->isQTKitEnabled();
+}
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.h (139898 => 139899)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.h 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.h 2013-01-16 19:19:59 UTC (rev 139899)
@@ -228,6 +228,10 @@
WK_EXPORT void WKPreferencesSetTextAutosizingEnabled(WKPreferencesRef preferences, bool textAutosizingEnabled);
WK_EXPORT bool WKPreferencesGetTextAutosizingEnabled(WKPreferencesRef preferences);
+// Defaults to true.
+WK_EXPORT void WKPreferencesSetQTKitEnabled(WKPreferencesRef preferencesRef, bool enabled);
+WK_EXPORT bool WKPreferencesGetQTKitEnabled(WKPreferencesRef preferencesRef);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (139898 => 139899)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2013-01-16 19:07:23 UTC (rev 139898)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2013-01-16 19:19:59 UTC (rev 139899)
@@ -2370,6 +2370,10 @@
settings->setAVFoundationEnabled(store.getBoolValueForKey(WebPreferencesKey::isAVFoundationEnabledKey()));
#endif
+#if PLATFORM(MAC) || (PLATFORM(QT) && USE(QTKIT))
+ settings->setQTKitEnabled(store.getBoolValueForKey(WebPreferencesKey::isQTKitEnabledKey()));
+#endif
+
#if ENABLE(WEB_AUDIO)
settings->setWebAudioEnabled(store.getBoolValueForKey(WebPreferencesKey::webAudioEnabledKey()));
#endif