Diff
Modified: trunk/Source/WebCore/ChangeLog (139436 => 139437)
--- trunk/Source/WebCore/ChangeLog 2013-01-11 14:34:06 UTC (rev 139436)
+++ trunk/Source/WebCore/ChangeLog 2013-01-11 14:37:29 UTC (rev 139437)
@@ -1,3 +1,18 @@
+2013-01-11 Allan Sandfeld Jensen <[email protected]>
+
+ [Qt][WK1] Web Audio support
+ https://bugs.webkit.org/show_bug.cgi?id=106651
+
+ Reviewed by Jocelyn Turcotte.
+
+ Convert _javascript_ Uint8Array to QByteArray. This conversion is necessary to support testRunner.setAudioData().
+
+ * bridge/qt/qt_runtime.cpp:
+ (JSC::Bindings::isJSUint8Array):
+ (Bindings):
+ (JSC::Bindings::valueRealType):
+ (JSC::Bindings::convertValueToQVariant):
+
2013-01-11 Anton Vayvod <[email protected]>
Text Autosizing - elements much narrower than its parent autosizing clusters should be autosized separately.
Modified: trunk/Source/WebCore/bridge/qt/qt_runtime.cpp (139436 => 139437)
--- trunk/Source/WebCore/bridge/qt/qt_runtime.cpp 2013-01-11 14:34:06 UTC (rev 139436)
+++ trunk/Source/WebCore/bridge/qt/qt_runtime.cpp 2013-01-11 14:37:29 UTC (rev 139437)
@@ -103,7 +103,7 @@
QObj,
Object,
Null,
- RTUint8ClampedArray
+ RTUint8Array
} JSRealType;
#if defined(QTWK_RUNTIME_CONVERSION_DEBUG) || defined(QTWK_RUNTIME_MATCH_DEBUG)
@@ -145,9 +145,9 @@
customRuntimeConversions()->insert(qtMetaTypeId, conversion);
}
-static bool isJSUint8ClampedArray(JSObjectRef object)
+static bool isJSUint8Array(JSObjectRef object)
{
- return toJS(object)->inherits(&JSUint8ClampedArray::s_info);
+ return toJS(object)->inherits(&JSUint8Array::s_info);
}
static bool isJSArray(JSObjectRef object)
@@ -180,8 +180,8 @@
JSObjectRef object = JSValueToObject(context, value, exception);
- if (isJSUint8ClampedArray(object))
- return RTUint8ClampedArray;
+ if (isJSUint8Array(object))
+ return RTUint8Array;
if (isJSArray(object))
return Array;
if (isJSDate(object))
@@ -356,7 +356,7 @@
case QObj:
hint = QMetaType::QObjectStar;
break;
- case RTUint8ClampedArray:
+ case RTUint8Array:
hint = QMetaType::QByteArray;
break;
case Array:
@@ -490,8 +490,8 @@
}
case QMetaType::QByteArray: {
- if (type == RTUint8ClampedArray) {
- WTF::Uint8ClampedArray* arr = toUint8ClampedArray(toJS(toJS(context), value));
+ if (type == RTUint8Array) {
+ WTF::Uint8Array* arr = toUint8Array(toJS(toJS(context), value));
ret = QVariant(QByteArray(reinterpret_cast<const char*>(arr->data()), arr->length()));
dist = 0;
} else {
Modified: trunk/Source/WebKit/qt/Api/qwebsettings.cpp (139436 => 139437)
--- trunk/Source/WebKit/qt/Api/qwebsettings.cpp 2013-01-11 14:34:06 UTC (rev 139436)
+++ trunk/Source/WebKit/qt/Api/qwebsettings.cpp 2013-01-11 14:37:29 UTC (rev 139437)
@@ -164,6 +164,10 @@
settings->setAcceleratedCompositingForCanvasEnabled(value);
#endif
#endif
+#if ENABLE(WEB_AUDIO)
+ value = attributes.value(QWebSettings::WebAudioEnabled, global->attributes.value(QWebSettings::WebAudioEnabled));
+ settings->setWebAudioEnabled(value);
+#endif
value = attributes.value(QWebSettings::CSSRegionsEnabled,
global->attributes.value(QWebSettings::CSSRegionsEnabled));
@@ -534,6 +538,7 @@
d->attributes.insert(QWebSettings::LocalContentCanAccessFileUrls, true);
d->attributes.insert(QWebSettings::AcceleratedCompositingEnabled, true);
d->attributes.insert(QWebSettings::WebGLEnabled, true);
+ d->attributes.insert(QWebSettings::WebAudioEnabled, false);
d->attributes.insert(QWebSettings::CSSRegionsEnabled, true);
d->attributes.insert(QWebSettings::CSSGridLayoutEnabled, false);
d->attributes.insert(QWebSettings::HyperlinkAuditingEnabled, false);
Modified: trunk/Source/WebKit/qt/Api/qwebsettings.h (139436 => 139437)
--- trunk/Source/WebKit/qt/Api/qwebsettings.h 2013-01-11 14:34:06 UTC (rev 139436)
+++ trunk/Source/WebKit/qt/Api/qwebsettings.h 2013-01-11 14:37:29 UTC (rev 139437)
@@ -84,7 +84,8 @@
CSSGridLayoutEnabled,
ScrollAnimatorEnabled,
CaretBrowsingEnabled,
- NotificationsEnabled
+ NotificationsEnabled,
+ WebAudioEnabled
};
enum WebGraphic {
MissingImageGraphic,
Modified: trunk/Source/WebKit/qt/ChangeLog (139436 => 139437)
--- trunk/Source/WebKit/qt/ChangeLog 2013-01-11 14:34:06 UTC (rev 139436)
+++ trunk/Source/WebKit/qt/ChangeLog 2013-01-11 14:37:29 UTC (rev 139437)
@@ -1,3 +1,17 @@
+2013-01-11 Allan Sandfeld Jensen <[email protected]>
+
+ [Qt][WK1] Web Audio support
+ https://bugs.webkit.org/show_bug.cgi?id=106651
+
+ Reviewed by Jocelyn Turcotte.
+
+ Expose setting to enable WebAudio at runtime.
+
+ * Api/qwebsettings.cpp:
+ (QWebSettingsPrivate::apply):
+ (QWebSettings::QWebSettings):
+ * Api/qwebsettings.h:
+
2013-01-08 Mark Lam <[email protected]>
Removed the need for the ProposedDatabase mechanism.
Modified: trunk/Tools/ChangeLog (139436 => 139437)
--- trunk/Tools/ChangeLog 2013-01-11 14:34:06 UTC (rev 139436)
+++ trunk/Tools/ChangeLog 2013-01-11 14:37:29 UTC (rev 139437)
@@ -1,3 +1,38 @@
+2013-01-11 Allan Sandfeld Jensen <[email protected]>
+
+ [Qt][WK1] Web Audio support
+ https://bugs.webkit.org/show_bug.cgi?id=106651
+
+ Reviewed by Jocelyn Turcotte.
+
+ Implements support for dumping audio data in DumpRenderTree.
+
+ Adds WebAudio to toggleable features in QtTestBrowser.
+
+ Enables LEGACY_WEB_AUDIO. This feature is required for 2/3 of the web audio regression tests. It is enabled by default
+ because it has no effect when WEB_AUDIO is not enabled. This combination matches the settings in FeatureList.pm.
+
+ * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
+ (WebCore::DumpRenderTree::dump):
+ * DumpRenderTree/qt/TestRunnerQt.cpp:
+ (TestRunner::reset):
+ (TestRunner::overridePreference):
+ (TestRunner::setAudioData):
+ * DumpRenderTree/qt/TestRunnerQt.h:
+ (TestRunner::shouldDumpAsAudio):
+ (TestRunner::audioData):
+ (TestRunner):
+ * QtTestBrowser/launcherwindow.cpp:
+ (LauncherWindow::applyPrefs):
+ (LauncherWindow::createChrome):
+ (LauncherWindow::toggleWebAudio):
+ * QtTestBrowser/launcherwindow.h:
+ (WindowOptions::WindowOptions):
+ (WindowOptions):
+ (LauncherWindow):
+ * qmake/mkspecs/features/features.prf:
+ * qmake/mkspecs/features/features.pri:
+
2013-01-11 Raphael Kubo da Costa <[email protected]>
Unreviewed jhbuild-related fix after r139431.
Modified: trunk/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp (139436 => 139437)
--- trunk/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp 2013-01-11 14:34:06 UTC (rev 139436)
+++ trunk/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp 2013-01-11 14:37:29 UTC (rev 139437)
@@ -916,14 +916,19 @@
// Dump render text...
QString resultString;
- if (m_controller->shouldDumpAsText())
+ QString resultContentType = "text/plain";
+ QByteArray resultData;
+ if (m_controller->shouldDumpAsAudio()) {
+ resultContentType = "audio/wav";
+ resultData = m_controller->audioData();
+ } else if (m_controller->shouldDumpAsText())
resultString = dumpFramesAsText(mainFrame);
else {
resultString = DumpRenderTreeSupportQt::frameRenderTreeDump(mainFrame->handle());
resultString += dumpFrameScrollPosition(mainFrame);
}
if (!resultString.isEmpty()) {
- fprintf(stdout, "Content-Type: text/plain\n");
+ fprintf(stdout, "Content-Type: %s\n", resultContentType.toUtf8().constData());
fprintf(stdout, "%s", resultString.toUtf8().constData());
if (m_controller->shouldDumpBackForwardList()) {
@@ -933,7 +938,10 @@
fprintf(stdout, "%s", dumpBackForwardList(page).toUtf8().constData());
}
}
-
+ } else if (!resultData.isEmpty()) {
+ fprintf(stdout, "Content-Type: %s\n", resultContentType.toUtf8().constData());
+ fprintf(stdout, "Content-Transfer-Encoding: base64\n");
+ fprintf(stdout, "%s", resultData.toBase64().constData());
} else
printf("ERROR: nil result from %s", methodNameStringForFailedTest(m_controller));
Modified: trunk/Tools/DumpRenderTree/qt/TestRunnerQt.cpp (139436 => 139437)
--- trunk/Tools/DumpRenderTree/qt/TestRunnerQt.cpp 2013-01-11 14:34:06 UTC (rev 139436)
+++ trunk/Tools/DumpRenderTree/qt/TestRunnerQt.cpp 2013-01-11 14:37:29 UTC (rev 139437)
@@ -53,6 +53,7 @@
m_hasDumped = false;
m_loadFinished = false;
m_textDump = false;
+ m_audioDump = false;
m_shouldDumpPixels = true;
m_dumpBackForwardList = false;
m_dumpChildrenAsText = false;
@@ -76,6 +77,7 @@
m_isGeolocationPermissionSet = false;
m_isPrinting = false;
m_geolocationPermission = false;
+ m_audioData.clear();
DumpRenderTreeSupportQt::dumpEditingCallbacks(false);
DumpRenderTreeSupportQt::dumpFrameLoader(false);
@@ -677,6 +679,8 @@
settings->setAttribute(QWebSettings::AcceleratedCompositingEnabled, value.toBool());
else if (name == "WebKitDisplayImagesKey")
settings->setAttribute(QWebSettings::AutoLoadImages, value.toBool());
+ else if (name == "WebKitWebAudioEnabled")
+ settings->setAttribute(QWebSettings::WebAudioEnabled, value.toBool());
else
printf("ERROR: TestRunner::overridePreference() does not support the '%s' preference\n",
name.toLatin1().data());
@@ -968,5 +972,11 @@
globalSettings->setThirdPartyCookiePolicy(QWebSettings::AlwaysAllowThirdPartyCookies);
}
+void TestRunner::setAudioData(const QByteArray& audioData)
+{
+ m_audioData = audioData;
+ m_audioDump = true;
+}
+
const unsigned TestRunner::maxViewWidth = 800;
const unsigned TestRunner::maxViewHeight = 600;
Modified: trunk/Tools/DumpRenderTree/qt/TestRunnerQt.h (139436 => 139437)
--- trunk/Tools/DumpRenderTree/qt/TestRunnerQt.h 2013-01-11 14:34:06 UTC (rev 139436)
+++ trunk/Tools/DumpRenderTree/qt/TestRunnerQt.h 2013-01-11 14:37:29 UTC (rev 139437)
@@ -63,6 +63,7 @@
bool shouldDisallowIncreaseForApplicationCacheQuota() const { return m_disallowIncreaseForApplicationCacheQuota; }
bool shouldDumpAsText() const { return m_textDump; }
+ bool shouldDumpAsAudio() const { return m_audioDump; }
bool shouldDumpPixels() const { return m_shouldDumpPixels; }
bool shouldDumpBackForwardList() const { return m_dumpBackForwardList; }
bool shouldDumpChildrenAsText() const { return m_dumpChildrenAsText; }
@@ -78,6 +79,8 @@
bool ignoreReqestForPermission() const { return m_ignoreDesktopNotification; }
bool isPrinting() { return m_isPrinting; }
+ const QByteArray& audioData() const { return m_audioData; }
+
void reset();
static const unsigned int maxViewWidth;
@@ -275,6 +278,8 @@
void setAlwaysAcceptCookies(bool);
void setAlwaysBlockCookies(bool);
+ void setAudioData(const QByteArray&);
+
private Q_SLOTS:
void processWork();
@@ -284,6 +289,7 @@
private:
bool m_hasDumped;
bool m_textDump;
+ bool m_audioDump;
bool m_shouldDumpPixels;
bool m_disallowIncreaseForApplicationCacheQuota;
bool m_dumpBackForwardList;
@@ -312,6 +318,8 @@
QStringList m_desktopNotificationAllowedOrigins;
bool m_ignoreDesktopNotification;
+ QByteArray m_audioData;
+
bool m_shouldTimeout;
int m_timeout;
};
Modified: trunk/Tools/QtTestBrowser/launcherwindow.cpp (139436 => 139437)
--- trunk/Tools/QtTestBrowser/launcherwindow.cpp 2013-01-11 14:34:06 UTC (rev 139436)
+++ trunk/Tools/QtTestBrowser/launcherwindow.cpp 2013-01-11 14:37:29 UTC (rev 139437)
@@ -217,6 +217,7 @@
settings->setAttribute(QWebSettings::TiledBackingStoreEnabled, m_windowOptions.useTiledBackingStore);
settings->setAttribute(QWebSettings::FrameFlatteningEnabled, m_windowOptions.useFrameFlattening);
settings->setAttribute(QWebSettings::WebGLEnabled, m_windowOptions.useWebGL);
+ m_windowOptions.useWebAudio = settings->testAttribute(QWebSettings::WebAudioEnabled);
if (!isGraphicsBased())
return;
@@ -312,7 +313,18 @@
QAction* toggleWebGL = toolsMenu->addAction("Toggle WebGL", this, SLOT(toggleWebGL(bool)));
toggleWebGL->setCheckable(true);
toggleWebGL->setChecked(settings->testAttribute(QWebSettings::WebGLEnabled));
+#if !ENABLE(WEBGL)
+ toggleWebGL->setEnabled(false);
+#endif
+ QAction* toggleWebAudio = toolsMenu->addAction("Toggle WebAudio", this, SLOT(toggleWebAudio(bool)));
+ toggleWebAudio->setCheckable(true);
+#if ENABLE(WEB_AUDIO)
+ toggleWebAudio->setChecked(m_windowOptions.useWebAudio);
+#else
+ toggleWebAudio->setEnabled(false);
+#endif
+
QAction* spatialNavigationAction = toolsMenu->addAction("Toggle Spatial Navigation", this, SLOT(toggleSpatialNavigation(bool)));
spatialNavigationAction->setCheckable(true);
spatialNavigationAction->setShortcut(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_S));
@@ -860,6 +872,12 @@
page()->settings()->setAttribute(QWebSettings::WebGLEnabled, toggle);
}
+void LauncherWindow::toggleWebAudio(bool toggle)
+{
+ m_windowOptions.useWebAudio = toggle;
+ page()->settings()->setAttribute(QWebSettings::WebAudioEnabled, toggle);
+}
+
void LauncherWindow::animatedFlip()
{
qobject_cast<WebViewGraphicsBased*>(m_view)->animatedFlip();
Modified: trunk/Tools/QtTestBrowser/launcherwindow.h (139436 => 139437)
--- trunk/Tools/QtTestBrowser/launcherwindow.h 2013-01-11 14:34:06 UTC (rev 139436)
+++ trunk/Tools/QtTestBrowser/launcherwindow.h 2013-01-11 14:37:29 UTC (rev 139437)
@@ -68,6 +68,7 @@
, useCompositing(true)
, useTiledBackingStore(false)
, useWebGL(false)
+ , useWebAudio(false)
, useFrameFlattening(false)
, cacheWebView(false)
, showFrameRate(false)
@@ -92,6 +93,7 @@
bool useCompositing;
bool useTiledBackingStore;
bool useWebGL;
+ bool useWebAudio;
bool useFrameFlattening;
bool cacheWebView;
bool showFrameRate;
@@ -152,6 +154,7 @@
void toggleTiledBackingStore(bool toggle);
void toggleResizesToContents(bool toggle);
void toggleWebGL(bool toggle);
+ void toggleWebAudio(bool toggle);
void toggleSpatialNavigation(bool b);
void toggleFullScreenMode(bool enable);
void toggleFrameFlattening(bool toggle);
Modified: trunk/Tools/qmake/mkspecs/features/features.prf (139436 => 139437)
--- trunk/Tools/qmake/mkspecs/features/features.prf 2013-01-11 14:34:06 UTC (rev 139436)
+++ trunk/Tools/qmake/mkspecs/features/features.prf 2013-01-11 14:37:29 UTC (rev 139437)
@@ -168,5 +168,8 @@
# WK2's plugin process code requires NPAPI
!enable?(netscape_plugin_api): WEBKIT_CONFIG -= plugin_process
+ # Web Audio requires GStreamer.
+ !use?(gstreamer): WEBKIT_CONFIG -= web_audio
+
export(WEBKIT_CONFIG)
}
Modified: trunk/Tools/qmake/mkspecs/features/features.pri (139436 => 139437)
--- trunk/Tools/qmake/mkspecs/features/features.pri 2013-01-11 14:34:06 UTC (rev 139436)
+++ trunk/Tools/qmake/mkspecs/features/features.pri 2013-01-11 14:37:29 UTC (rev 139437)
@@ -71,6 +71,7 @@
ENABLE_LEGACY_NOTIFICATIONS=1 \
ENABLE_LEGACY_VIEWPORT_ADAPTION=1 \
ENABLE_LEGACY_VENDOR_PREFIXES=1 \
+ ENABLE_LEGACY_WEB_AUDIO=1 \
ENABLE_LINK_PREFETCH=0 \
ENABLE_LINK_PRERENDER=0 \
ENABLE_MATHML=0 \