Diff
Modified: trunk/LayoutTests/ChangeLog (88009 => 88010)
--- trunk/LayoutTests/ChangeLog 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/LayoutTests/ChangeLog 2011-06-03 13:29:43 UTC (rev 88010)
@@ -1,3 +1,16 @@
+2011-06-03 Mikhail Naganov <mnaga...@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: [Chromium] cpu-profiler-profiling layout test is flaky on Linux Debug.
+ https://bugs.webkit.org/show_bug.cgi?id=61533
+
+ Skip cpu-profiler-profiling in debug, implement a fast headless alternative.
+
+ * inspector/profiler/cpu-profiler-profiling-without-inspector-expected.txt: Added.
+ * inspector/profiler/cpu-profiler-profiling-without-inspector.html: Added.
+ * platform/chromium/test_expectations.txt:
+
2011-06-03 Nikolas Zimmermann <nzimmerm...@rim.com>
Reviewed by Andreas Kling.
Added: trunk/LayoutTests/inspector/profiler/cpu-profiler-profiling-without-inspector-expected.txt (0 => 88010)
--- trunk/LayoutTests/inspector/profiler/cpu-profiler-profiling-without-inspector-expected.txt (rev 0)
+++ trunk/LayoutTests/inspector/profiler/cpu-profiler-profiling-without-inspector-expected.txt 2011-06-03 13:29:43 UTC (rev 88010)
@@ -0,0 +1,6 @@
+Tests that CPU profiling works.
+Doesn't open Inspector, uses console.profile....
+
+
+Found pageFunction
+
Property changes on: trunk/LayoutTests/inspector/profiler/cpu-profiler-profiling-without-inspector-expected.txt
___________________________________________________________________
Added: svn:eol-style
Added: trunk/LayoutTests/inspector/profiler/cpu-profiler-profiling-without-inspector.html (0 => 88010)
--- trunk/LayoutTests/inspector/profiler/cpu-profiler-profiling-without-inspector.html (rev 0)
+++ trunk/LayoutTests/inspector/profiler/cpu-profiler-profiling-without-inspector.html 2011-06-03 13:29:43 UTC (rev 88010)
@@ -0,0 +1,84 @@
+<html>
+<head>
+<script>
+
+if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.setJavaScriptProfilingEnabled(true);
+}
+
+function pageFunction()
+{
+ console.profile("outer");
+ console.profile("inner"); // [Chromium] Make sure we capture the current callstack.
+ console.profileEnd("outer");
+ console.profileEnd("inner");
+}
+
+function startTest()
+{
+ pageFunction();
+ printResult();
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+}
+
+function printResult()
+{
+ var preElement = document.createElement("pre");
+ preElement.appendChild(document.createTextNode("\n"));
+
+ var profiles = console.profiles;
+ for (var i = 0; i < profiles.length; ++i) {
+ var profile = ""
+ if (profile.title !== "inner")
+ continue;
+ var functionName = "pageFunction";
+ if (findFunctionInProfile(profile.head, functionName))
+ preElement.appendChild(document.createTextNode("Found " + functionName));
+ else {
+ preElement.appendChild(document.createTextNode("!!! Not found " + functionName));
+ preElement.appendChild(document.createTextNode("\n\n"));
+ printProfileNodeWithoutTime(preElement, profile.head, "");
+ }
+ preElement.appendChild(document.createTextNode("\n"));
+ }
+
+ document.getElementById("output").appendChild(preElement);
+}
+
+function printProfileNodeWithoutTime(preElement, node, space)
+{
+ if (!node.visible)
+ return;
+
+ var line = space + node.functionName + " (line " + node.lineNumber + ")\n";
+ preElement.appendChild(document.createTextNode(line));
+
+ var children = node.children;
+ for (var i = 0; i < children.length; ++i)
+ printProfileNodeWithoutTime(preElement, children[i], space + " ");
+}
+
+function findFunctionInProfile(node, functionName)
+{
+ if (node.functionName === functionName)
+ return true;
+ var children = node.children;
+ for (var i = 0; i < children.length; ++i)
+ if (findFunctionInProfile(children[i], functionName))
+ return true;
+ return false;
+}
+
+</script>
+</head>
+<body _onload_="startTest()">
+<p>
+Tests that CPU profiling works.<br>
+Doesn't open Inspector, uses <b>console.profile...</b>.
+
+<div id="output"></div>
+</p>
+</body>
+</html>
Property changes on: trunk/LayoutTests/inspector/profiler/cpu-profiler-profiling-without-inspector.html
___________________________________________________________________
Added: svn:eol-style
Modified: trunk/LayoutTests/platform/chromium/test_expectations.txt (88009 => 88010)
--- trunk/LayoutTests/platform/chromium/test_expectations.txt 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/LayoutTests/platform/chromium/test_expectations.txt 2011-06-03 13:29:43 UTC (rev 88010)
@@ -3944,7 +3944,8 @@
BUGCR84031 MAC LINUX : storage/domstorage/sessionstorage/delete-removal.html = TIMEOUT PASS
BUGCR84032 WIN : fast/dom/object-plugin-hides-properties.html = TIMEOUT PASS
-BUGWK61533 LINUX : inspector/profiler/cpu-profiler-profiling.html = CRASH TIMEOUT PASS
+// Works slowly, we have an equivalent test that doesn't open Inspector and runs fast.
+WONTFIX LINUX DEBUG SKIP : inspector/profiler/cpu-profiler-profiling.html = CRASH TIMEOUT PASS
BUGCR84093 VISTA : http/tests/history/redirect-200-refresh-2-seconds.pl = TIMEOUT PASS
BUGCR84095 VISTA : svg/custom/use-detach.svg = TIMEOUT PASS
Modified: trunk/Source/WebKit/chromium/ChangeLog (88009 => 88010)
--- trunk/Source/WebKit/chromium/ChangeLog 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Source/WebKit/chromium/ChangeLog 2011-06-03 13:29:43 UTC (rev 88010)
@@ -1,3 +1,17 @@
+2011-06-03 Mikhail Naganov <mnaga...@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: [Chromium] cpu-profiler-profiling layout test is flaky on Linux Debug.
+ https://bugs.webkit.org/show_bug.cgi?id=61533
+
+ Skip cpu-profiler-profiling in debug, implement a fast headless alternative.
+
+ * public/WebDevToolsAgent.h:
+ * src/WebDevToolsAgentImpl.cpp:
+ (WebKit::WebDevToolsAgentImpl::setJavaScriptProfilingEnabled):
+ * src/WebDevToolsAgentImpl.h:
+
2011-06-02 Yury Semikhatsky <yu...@chromium.org>
Reviewed by Pavel Feldman.
Modified: trunk/Source/WebKit/chromium/public/WebDevToolsAgent.h (88009 => 88010)
--- trunk/Source/WebKit/chromium/public/WebDevToolsAgent.h 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Source/WebKit/chromium/public/WebDevToolsAgent.h 2011-06-03 13:29:43 UTC (rev 88010)
@@ -62,6 +62,7 @@
// Exposed for LayoutTestController.
virtual void evaluateInWebInspector(long callId, const WebString& script) = 0;
+ virtual void setJavaScriptProfilingEnabled(bool) = 0;
virtual void setTimelineProfilingEnabled(bool enabled) = 0;
// Asynchronously executes debugger command in the render thread.
Modified: trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp (88009 => 88010)
--- trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp 2011-06-03 13:29:43 UTC (rev 88010)
@@ -312,6 +312,15 @@
ic->evaluateForTestInFrontend(callId, script);
}
+void WebDevToolsAgentImpl::setJavaScriptProfilingEnabled(bool enabled)
+{
+ InspectorController* ic = inspectorController();
+ if (enabled)
+ ic->enableProfiler();
+ else
+ ic->disableProfiler();
+}
+
void WebDevToolsAgentImpl::setTimelineProfilingEnabled(bool enabled)
{
InspectorController* ic = inspectorController();
Modified: trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.h (88009 => 88010)
--- trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.h 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.h 2011-06-03 13:29:43 UTC (rev 88010)
@@ -76,6 +76,7 @@
virtual void dispatchOnInspectorBackend(const WebString& message);
virtual void inspectElementAt(const WebPoint& point);
virtual void evaluateInWebInspector(long callId, const WebString& script);
+ virtual void setJavaScriptProfilingEnabled(bool);
virtual void setRuntimeProperty(const WebString& name, const WebString& value);
virtual void setTimelineProfilingEnabled(bool enable);
Modified: trunk/Source/WebKit2/ChangeLog (88009 => 88010)
--- trunk/Source/WebKit2/ChangeLog 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Source/WebKit2/ChangeLog 2011-06-03 13:29:43 UTC (rev 88010)
@@ -1,3 +1,19 @@
+2011-06-03 Mikhail Naganov <mnaga...@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: [Chromium] cpu-profiler-profiling layout test is flaky on Linux Debug.
+ https://bugs.webkit.org/show_bug.cgi?id=61533
+
+ Skip cpu-profiler-profiling in debug, implement a fast headless alternative.
+
+ * WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp:
+ (WKBundleInspectorSetJavaScriptProfilingEnabled):
+ * WebProcess/InjectedBundle/API/c/WKBundleInspector.h:
+ * WebProcess/WebPage/WebInspector.cpp:
+ (WebKit::WebInspector::setJavaScriptProfilingEnabled):
+ * WebProcess/WebPage/WebInspector.h:
+
2011-06-02 Anders Carlsson <ander...@apple.com>
Reviewed by Mark Rowe.
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp (88009 => 88010)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp 2011-06-03 13:29:43 UTC (rev 88010)
@@ -55,6 +55,11 @@
return toImpl(inspectorRef)->evaluateScriptForTest(callID, toImpl(script)->string());
}
+void WKBundleInspectorSetJavaScriptProfilingEnabled(WKBundleInspectorRef inspectorRef, bool enabled)
+{
+ toImpl(inspectorRef)->setJavaScriptProfilingEnabled(enabled);
+}
+
void WKBundleInspectorSetPageProfilingEnabled(WKBundleInspectorRef inspectorRef, bool enabled)
{
if (enabled)
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleInspector.h (88009 => 88010)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleInspector.h 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleInspector.h 2011-06-03 13:29:43 UTC (rev 88010)
@@ -44,6 +44,7 @@
WK_EXPORT void WKBundleInspectorClose(WKBundleInspectorRef inspector);
WK_EXPORT void WKBundleInspectorEvaluateScriptForTest(WKBundleInspectorRef inspector, long callID, WKStringRef script);
+WK_EXPORT void WKBundleInspectorSetJavaScriptProfilingEnabled(WKBundleInspectorRef inspector, bool enabled);
WK_EXPORT void WKBundleInspectorSetPageProfilingEnabled(WKBundleInspectorRef inspector, bool enabled);
#ifdef __cplusplus
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp (88009 => 88010)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp 2011-06-03 13:29:43 UTC (rev 88010)
@@ -146,6 +146,16 @@
#endif
}
+void WebInspector::setJavaScriptProfilingEnabled(bool enabled)
+{
+#if ENABLE(_javascript__DEBUGGER)
+ if (enabled)
+ m_page->corePage()->inspectorController()->enableProfiler();
+ else
+ m_page->corePage()->inspectorController()->disableProfiler();
+#endif
+}
+
void WebInspector::startJavaScriptProfiling()
{
#if ENABLE(_javascript__DEBUGGER)
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.h (88009 => 88010)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.h 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.h 2011-06-03 13:29:43 UTC (rev 88010)
@@ -56,6 +56,7 @@
void evaluateScriptForTest(long callID, const String& script);
+ void setJavaScriptProfilingEnabled(bool);
void startPageProfiling();
void stopPageProfiling();
Modified: trunk/Tools/ChangeLog (88009 => 88010)
--- trunk/Tools/ChangeLog 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Tools/ChangeLog 2011-06-03 13:29:43 UTC (rev 88010)
@@ -1,3 +1,25 @@
+2011-06-03 Mikhail Naganov <mnaga...@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: [Chromium] cpu-profiler-profiling layout test is flaky on Linux Debug.
+ https://bugs.webkit.org/show_bug.cgi?id=61533
+
+ Skip cpu-profiler-profiling in debug, implement a fast headless alternative.
+
+ * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
+ (DRTDevToolsAgent::setJavaScriptProfilingEnabled):
+ * DumpRenderTree/chromium/DRTDevToolsAgent.h:
+ * DumpRenderTree/chromium/LayoutTestController.cpp:
+ (LayoutTestController::LayoutTestController):
+ (LayoutTestController::setJavaScriptProfilingEnabled):
+ * DumpRenderTree/chromium/LayoutTestController.h:
+ * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
+ (LayoutTestController::setJavaScriptProfilingEnabled):
+ * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
+ (WTR::LayoutTestController::setJavaScriptProfilingEnabled):
+ * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
+
2011-06-02 Dirk Pranke <dpra...@chromium.org>
Reviewed by Tony Chang.
Modified: trunk/Tools/DumpRenderTree/chromium/DRTDevToolsAgent.cpp (88009 => 88010)
--- trunk/Tools/DumpRenderTree/chromium/DRTDevToolsAgent.cpp 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Tools/DumpRenderTree/chromium/DRTDevToolsAgent.cpp 2011-06-03 13:29:43 UTC (rev 88010)
@@ -127,6 +127,15 @@
postTask(new DelayedFrontendLoadedTask(this));
}
+bool DRTDevToolsAgent::setJavaScriptProfilingEnabled(bool enabled)
+{
+ WebDevToolsAgent* agent = webDevToolsAgent();
+ if (!agent)
+ return false;
+ agent->setJavaScriptProfilingEnabled(enabled);
+ return true;
+}
+
bool DRTDevToolsAgent::setTimelineProfilingEnabled(bool enabled)
{
WebDevToolsAgent* agent = webDevToolsAgent();
Modified: trunk/Tools/DumpRenderTree/chromium/DRTDevToolsAgent.h (88009 => 88010)
--- trunk/Tools/DumpRenderTree/chromium/DRTDevToolsAgent.h 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Tools/DumpRenderTree/chromium/DRTDevToolsAgent.h 2011-06-03 13:29:43 UTC (rev 88010)
@@ -70,6 +70,7 @@
void frontendLoaded();
bool evaluateInWebInspector(long callID, const std::string& script);
+ bool setJavaScriptProfilingEnabled(bool);
bool setTimelineProfilingEnabled(bool);
TaskList* taskList() { return &m_taskList; }
Modified: trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp (88009 => 88010)
--- trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp 2011-06-03 13:29:43 UTC (rev 88010)
@@ -157,6 +157,7 @@
bindMethod("setGeolocationPermission", &LayoutTestController::setGeolocationPermission);
bindMethod("setIconDatabaseEnabled", &LayoutTestController::setIconDatabaseEnabled);
bindMethod("setJavaScriptCanAccessClipboard", &LayoutTestController::setJavaScriptCanAccessClipboard);
+ bindMethod("setJavaScriptProfilingEnabled", &LayoutTestController::setJavaScriptProfilingEnabled);
bindMethod("setMinimumTimerInterval", &LayoutTestController::setMinimumTimerInterval);
bindMethod("setMockDeviceOrientation", &LayoutTestController::setMockDeviceOrientation);
bindMethod("setMockGeolocationError", &LayoutTestController::setMockGeolocationError);
@@ -1630,6 +1631,14 @@
WebString(), 0);
}
+void LayoutTestController::setJavaScriptProfilingEnabled(const CppArgumentList& arguments, CppVariant* result)
+{
+ result->setNull();
+ if (arguments.size() < 1 || !arguments[0].isBool())
+ return;
+ m_shell->drtDevToolsAgent()->setJavaScriptProfilingEnabled(arguments[0].toBoolean());
+}
+
void LayoutTestController::setTimelineProfilingEnabled(const CppArgumentList& arguments, CppVariant* result)
{
result->setNull();
Modified: trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h (88009 => 88010)
--- trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h 2011-06-03 13:29:43 UTC (rev 88010)
@@ -323,6 +323,9 @@
// Gets the number of geolocation permissions requests pending.
void numberOfPendingGeolocationPermissionRequests(const CppArgumentList&, CppVariant*);
+ // Allows layout tests to start _javascript_ profiling.
+ void setJavaScriptProfilingEnabled(const CppArgumentList&, CppVariant*);
+
// Allows layout tests to start Timeline profiling.
void setTimelineProfilingEnabled(const CppArgumentList&, CppVariant*);
Modified: trunk/Tools/DumpRenderTree/wx/LayoutTestControllerWx.cpp (88009 => 88010)
--- trunk/Tools/DumpRenderTree/wx/LayoutTestControllerWx.cpp 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Tools/DumpRenderTree/wx/LayoutTestControllerWx.cpp 2011-06-03 13:29:43 UTC (rev 88010)
@@ -450,6 +450,11 @@
// FIXME: Implement this.
}
+void LayoutTestController::setJavaScriptProfilingEnabled(bool enabled)
+{
+
+}
+
void LayoutTestController::setTimelineProfilingEnabled(bool enabled)
{
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.cpp (88009 => 88010)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.cpp 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.cpp 2011-06-03 13:29:43 UTC (rev 88010)
@@ -492,6 +492,11 @@
WKBundleInspectorEvaluateScriptForTest(WKBundlePageGetInspector(InjectedBundle::shared().page()->page()), callID, scriptWK.get());
}
+void LayoutTestController::setJavaScriptProfilingEnabled(bool enabled)
+{
+ WKBundleInspectorSetJavaScriptProfilingEnabled(WKBundlePageGetInspector(InjectedBundle::shared().page()->page()), enabled);
+}
+
void LayoutTestController::setTimelineProfilingEnabled(bool enabled)
{
WKBundleInspectorSetPageProfilingEnabled(WKBundlePageGetInspector(InjectedBundle::shared().page()->page()), enabled);
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.h (88009 => 88010)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.h 2011-06-03 12:43:26 UTC (rev 88009)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.h 2011-06-03 13:29:43 UTC (rev 88010)
@@ -161,6 +161,7 @@
void showWebInspector();
void closeWebInspector();
void evaluateInWebInspector(long callId, JSStringRef script);
+ void setJavaScriptProfilingEnabled(bool);
void setTimelineProfilingEnabled(bool);
void setPOSIXLocale(JSStringRef);