<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[171405] branches/safari-600.1-branch</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/171405">171405</a></dd>
<dt>Author</dt> <dd>dburkart@apple.com</dd>
<dt>Date</dt> <dd>2014-07-22 22:27:26 -0700 (Tue, 22 Jul 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merge <a href="http://trac.webkit.org/projects/webkit/changeset/171195">r171195</a></pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchessafari6001branchLayoutTestsChangeLog">branches/safari-600.1-branch/LayoutTests/ChangeLog</a></li>
<li><a href="#branchessafari6001branchLayoutTestsfastprofilerprofilewithnotitleexpectedtxt">branches/safari-600.1-branch/LayoutTests/fast/profiler/profile-with-no-title-expected.txt</a></li>
<li><a href="#branchessafari6001branchSourceWebCoreChangeLog">branches/safari-600.1-branch/Source/WebCore/ChangeLog</a></li>
<li><a href="#branchessafari6001branchSourceWebCorebindingsjsScriptStatecpp">branches/safari-600.1-branch/Source/WebCore/bindings/js/ScriptState.cpp</a></li>
<li><a href="#branchessafari6001branchSourceWebCorebindingsjsScriptStateh">branches/safari-600.1-branch/Source/WebCore/bindings/js/ScriptState.h</a></li>
<li><a href="#branchessafari6001branchSourceWebCoreinspectorInspectorControllercpp">branches/safari-600.1-branch/Source/WebCore/inspector/InspectorController.cpp</a></li>
<li><a href="#branchessafari6001branchSourceWebCoreinspectorInspectorControllerh">branches/safari-600.1-branch/Source/WebCore/inspector/InspectorController.h</a></li>
<li><a href="#branchessafari6001branchSourceWebCoreinspectorInspectorInstrumentationcpp">branches/safari-600.1-branch/Source/WebCore/inspector/InspectorInstrumentation.cpp</a></li>
<li><a href="#branchessafari6001branchSourceWebCoreinspectorInspectorTimelineAgentcpp">branches/safari-600.1-branch/Source/WebCore/inspector/InspectorTimelineAgent.cpp</a></li>
<li><a href="#branchessafari6001branchSourceWebCoreinspectorInspectorTimelineAgenth">branches/safari-600.1-branch/Source/WebCore/inspector/InspectorTimelineAgent.h</a></li>
<li><a href="#branchessafari6001branchSourceWebCoreinspectorInstrumentingAgentscpp">branches/safari-600.1-branch/Source/WebCore/inspector/InstrumentingAgents.cpp</a></li>
<li><a href="#branchessafari6001branchSourceWebCoreinspectorInstrumentingAgentsh">branches/safari-600.1-branch/Source/WebCore/inspector/InstrumentingAgents.h</a></li>
<li><a href="#branchessafari6001branchSourceWebCoreinspectorTimelineRecordFactorycpp">branches/safari-600.1-branch/Source/WebCore/inspector/TimelineRecordFactory.cpp</a></li>
<li><a href="#branchessafari6001branchSourceWebCoreinspectorTimelineRecordFactoryh">branches/safari-600.1-branch/Source/WebCore/inspector/TimelineRecordFactory.h</a></li>
<li><a href="#branchessafari6001branchSourceWebCoreinspectorprotocolTimelinejson">branches/safari-600.1-branch/Source/WebCore/inspector/protocol/Timeline.json</a></li>
<li><a href="#branchessafari6001branchSourceWebCorepagePageConsolecpp">branches/safari-600.1-branch/Source/WebCore/page/PageConsole.cpp</a></li>
<li><a href="#branchessafari6001branchSourceWebInspectorUIChangeLog">branches/safari-600.1-branch/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#branchessafari6001branchSourceWebInspectorUILocalizationsenlprojlocalizedStringsjs">branches/safari-600.1-branch/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js</a></li>
<li><a href="#branchessafari6001branchSourceWebInspectorUIUserInterfaceControllersTimelineManagerjs">branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js</a></li>
<li><a href="#branchessafari6001branchSourceWebInspectorUIUserInterfaceModelsScriptTimelineRecordjs">branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Models/ScriptTimelineRecord.js</a></li>
<li><a href="#branchessafari6001branchSourceWebInspectorUIUserInterfaceProtocolTimelineObserverjs">branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Protocol/TimelineObserver.js</a></li>
<li><a href="#branchessafari6001branchSourceWebInspectorUIUserInterfaceViewsTimelineIconscss">branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Views/TimelineIcons.css</a></li>
<li><a href="#branchessafari6001branchSourceWebInspectorUIUserInterfaceViewsTimelineRecordTreeElementjs">branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Views/TimelineRecordTreeElement.js</a></li>
<li><a href="#branchessafari6001branchSourceWebKitmacChangeLog">branches/safari-600.1-branch/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#branchessafari6001branchSourceWebKitmacWebInspectorWebInspectormm">branches/safari-600.1-branch/Source/WebKit/mac/WebInspector/WebInspector.mm</a></li>
<li><a href="#branchessafari6001branchSourceWebKit2ChangeLog">branches/safari-600.1-branch/Source/WebKit2/ChangeLog</a></li>
<li><a href="#branchessafari6001branchSourceWebKit2WebProcessWebPageWebInspectorcpp">branches/safari-600.1-branch/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#branchessafari6001branchSourceWebInspectorUIUserInterfaceImagesTimelineRecordConsoleProfilesvg">branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Images/TimelineRecordConsoleProfile.svg</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li>branches/safari-600.1-branch/LayoutTests/inspector-protocol/profiler/</li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchessafari6001branchLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/LayoutTests/ChangeLog (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/LayoutTests/ChangeLog        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/LayoutTests/ChangeLog        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -1,5 +1,22 @@
</span><span class="cx"> 2014-07-22 Dana Burkart &lt;dburkart@apple.com&gt;
</span><span class="cx">     
</span><ins>+        Merge r171195.
+
+    2014-07-17  Timothy Hatcher  &lt;timothy@apple.com&gt;
+
+            Make console.profile record to the Timeline.
+
+            https://bugs.webkit.org/show_bug.cgi?id=134643
+
+            Reviewed by Joseph Pecoraro.
+
+            * WebProcess/WebPage/WebInspector.cpp:
+            (WebKit::WebInspector::setJavaScriptProfilingEnabled):
+            (WebKit::WebInspector::startJavaScriptProfiling):
+            (WebKit::WebInspector::stopJavaScriptProfiling):
+
+2014-07-22 Dana Burkart &lt;dburkart@apple.com&gt;
+    
</ins><span class="cx">         Merge r171184.
</span><span class="cx"> 
</span><span class="cx">     2014-07-17  Jer Noble  &lt;jer.noble@apple.com&gt;
</span></span></pre></div>
<a id="branchessafari6001branchLayoutTestsfastprofilerprofilewithnotitleexpectedtxt"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/LayoutTests/fast/profiler/profile-with-no-title-expected.txt (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/LayoutTests/fast/profiler/profile-with-no-title-expected.txt        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/LayoutTests/fast/profiler/profile-with-no-title-expected.txt        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -2,7 +2,7 @@
</span><span class="cx"> 
</span><span class="cx"> To run this test manually, load it in the browser then load the WebInspector and look at the profile. If there is a profile that is sufficient for this test.
</span><span class="cx"> 
</span><del>-Profile title: org.webkit.profiles.user-initiated.1
</del><ins>+Profile title: 
</ins><span class="cx"> Thread_1 (no file) (line 0:0)
</span><span class="cx">    startTest profile-with-no-title.html (line 11:1)
</span><span class="cx">       endTest profiler-test-JS-resources.js (line 1:20)
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebCore/ChangeLog (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebCore/ChangeLog        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebCore/ChangeLog        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -1,5 +1,69 @@
</span><span class="cx"> 2014-07-22 Dana Burkart &lt;dburkart@apple.com&gt;
</span><span class="cx">     
</span><ins>+        Merge r171195.
+
+    2014-07-17  Timothy Hatcher  &lt;timothy@apple.com&gt;
+
+            Make console.profile record to the Timeline.
+
+            https://bugs.webkit.org/show_bug.cgi?id=134643
+
+            Reviewed by Joseph Pecoraro.
+
+            Passes existing profiler tests in fast/profiler.
+
+            * bindings/js/ScriptState.cpp:
+            (WebCore::domWindowFromExecState):
+            (WebCore::frameFromExecState):
+            (WebCore::scriptExecutionContextFromExecState):
+            (WebCore::mainWorldExecState):
+            (WebCore::execStateFromNode):
+            * bindings/js/ScriptState.h:
+            * inspector/InspectorController.cpp:
+            (WebCore::InspectorController::InspectorController):
+            (WebCore::InspectorController::profilerEnabled):
+            (WebCore::InspectorController::setProfilerEnabled):
+            * inspector/InspectorController.h:
+            * inspector/InspectorInstrumentation.cpp:
+            (WebCore::InspectorInstrumentation::startProfilingImpl):
+            (WebCore::InspectorInstrumentation::stopProfilingImpl):
+            * inspector/InspectorTimelineAgent.cpp:
+            (WebCore::InspectorTimelineAgent::didCreateFrontendAndBackend):
+            (WebCore::InspectorTimelineAgent::willDestroyFrontendAndBackend):
+            (WebCore::InspectorTimelineAgent::start):
+            (WebCore::InspectorTimelineAgent::stop):
+            (WebCore::startProfiling):
+            (WebCore::stopProfiling):
+            (WebCore::InspectorTimelineAgent::startFromConsole):
+            (WebCore::InspectorTimelineAgent::stopFromConsole):
+            (WebCore::InspectorTimelineAgent::didWriteHTML):
+            (WebCore::InspectorTimelineAgent::breakpointActionProbe):
+            (WebCore::toProtocol):
+            (WebCore::InspectorTimelineAgent::addRecordToTimeline):
+            (WebCore::InspectorTimelineAgent::didCompleteRecordEntry):
+            (WebCore::InspectorTimelineAgent::didCompleteCurrentRecord):
+            (WebCore::InspectorTimelineAgent::InspectorTimelineAgent):
+            (WebCore::InspectorTimelineAgent::sendEvent):
+            (WebCore::InspectorTimelineAgent::createRecordEntry):
+            (WebCore::InspectorTimelineAgent::pushCurrentRecord):
+            * inspector/InspectorTimelineAgent.h:
+            (WebCore::InspectorTimelineAgent::TimelineRecordEntry::TimelineRecordEntry):
+            (WebCore::InspectorTimelineAgent::pushCurrentRecord):
+            * inspector/InstrumentingAgents.cpp:
+            (WebCore::InstrumentingAgents::InstrumentingAgents):
+            (WebCore::InstrumentingAgents::reset):
+            * inspector/InstrumentingAgents.h:
+            (WebCore::InstrumentingAgents::persistentInspectorTimelineAgent):
+            (WebCore::InstrumentingAgents::setPersistentInspectorTimelineAgent):
+            * inspector/TimelineRecordFactory.cpp:
+            (WebCore::TimelineRecordFactory::createConsoleProfileData):
+            * inspector/TimelineRecordFactory.h:
+            * inspector/protocol/Timeline.json:
+            * page/PageConsole.cpp:
+            (WebCore::PageConsole::profileEnd):
+
+2014-07-22 Dana Burkart &lt;dburkart@apple.com&gt;
+    
</ins><span class="cx">         Merge r171188.
</span><span class="cx"> 
</span><span class="cx">     2014-07-16  Sam Weinig  &lt;sam@webkit.org&gt;
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebCorebindingsjsScriptStatecpp"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebCore/bindings/js/ScriptState.cpp (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebCore/bindings/js/ScriptState.cpp        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebCore/bindings/js/ScriptState.cpp        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -51,22 +51,29 @@
</span><span class="cx"> {
</span><span class="cx">     JSC::JSGlobalObject* globalObject = scriptState-&gt;lexicalGlobalObject();
</span><span class="cx">     if (!globalObject-&gt;inherits(JSDOMWindowBase::info()))
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     return &amp;JSC::jsCast&lt;JSDOMWindowBase*&gt;(globalObject)-&gt;impl();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+Frame* frameFromExecState(JSC::ExecState* scriptState)
+{
+    ScriptExecutionContext* context = scriptExecutionContextFromExecState(scriptState);
+    Document* document = context &amp;&amp; context-&gt;isDocument() ? toDocument(context) : nullptr;
+    return document ? document-&gt;frame() : nullptr;
+}
+
</ins><span class="cx"> ScriptExecutionContext* scriptExecutionContextFromExecState(JSC::ExecState* scriptState)
</span><span class="cx"> {
</span><span class="cx">     JSC::JSGlobalObject* globalObject = scriptState-&gt;lexicalGlobalObject();
</span><span class="cx">     if (!globalObject-&gt;inherits(JSDOMGlobalObject::info()))
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     return JSC::jsCast&lt;JSDOMGlobalObject*&gt;(globalObject)-&gt;scriptExecutionContext();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSC::ExecState* mainWorldExecState(Frame* frame)
</span><span class="cx"> {
</span><span class="cx">     if (!frame)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     JSDOMWindowShell* shell = frame-&gt;script().windowShell(mainThreadNormalWorld());
</span><span class="cx">     return shell-&gt;window()-&gt;globalExec();
</span><span class="cx"> }
</span><span class="lines">@@ -74,12 +81,12 @@
</span><span class="cx"> JSC::ExecState* execStateFromNode(DOMWrapperWorld&amp; world, Node* node)
</span><span class="cx"> {
</span><span class="cx">     if (!node)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     Frame* frame = node-&gt;document().frame();
</span><span class="cx">     if (!frame)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     if (!frame-&gt;script().canExecuteScripts(NotAboutToExecuteScript))
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     return frame-&gt;script().globalObject(world)-&gt;globalExec();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebCorebindingsjsScriptStateh"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebCore/bindings/js/ScriptState.h (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebCore/bindings/js/ScriptState.h        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebCore/bindings/js/ScriptState.h        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -52,6 +52,7 @@
</span><span class="cx"> typedef JSC::ExecState ScriptState;
</span><span class="cx"> 
</span><span class="cx"> DOMWindow* domWindowFromExecState(JSC::ExecState*);
</span><ins>+Frame* frameFromExecState(JSC::ExecState*);
</ins><span class="cx"> ScriptExecutionContext* scriptExecutionContextFromExecState(JSC::ExecState*);
</span><span class="cx"> 
</span><span class="cx"> JSC::ExecState* mainWorldExecState(Frame*);
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebCoreinspectorInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebCore/inspector/InspectorController.cpp (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebCore/inspector/InspectorController.cpp        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebCore/inspector/InspectorController.cpp        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -134,7 +134,7 @@
</span><span class="cx">     m_agents.append(WTF::move(domStorageAgentPtr));
</span><span class="cx"> 
</span><span class="cx">     auto timelineAgentPtr = std::make_unique&lt;InspectorTimelineAgent&gt;(m_instrumentingAgents.get(), pageAgent, InspectorTimelineAgent::PageInspector, inspectorClient);
</span><del>-    InspectorTimelineAgent* timelineAgent = timelineAgentPtr.get();
</del><ins>+    m_timelineAgent = timelineAgentPtr.get();
</ins><span class="cx">     m_agents.append(WTF::move(timelineAgentPtr));
</span><span class="cx"> 
</span><span class="cx">     auto resourceAgentPtr = std::make_unique&lt;InspectorResourceAgent&gt;(m_instrumentingAgents.get(), pageAgent, inspectorClient);
</span><span class="lines">@@ -175,7 +175,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     runtimeAgent-&gt;setScriptDebugServer(&amp;m_debuggerAgent-&gt;scriptDebugServer());
</span><del>-    timelineAgent-&gt;setPageScriptDebugServer(&amp;m_debuggerAgent-&gt;scriptDebugServer());
</del><ins>+    m_timelineAgent-&gt;setPageScriptDebugServer(&amp;m_debuggerAgent-&gt;scriptDebugServer());
</ins><span class="cx">     m_profilerAgent-&gt;setScriptDebugServer(&amp;m_debuggerAgent-&gt;scriptDebugServer());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -380,16 +380,18 @@
</span><span class="cx"> 
</span><span class="cx"> bool InspectorController::profilerEnabled() const
</span><span class="cx"> {
</span><del>-    return m_profilerAgent-&gt;enabled();
</del><ins>+    return m_instrumentingAgents-&gt;inspectorTimelineAgent();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorController::setProfilerEnabled(bool enable)
</span><span class="cx"> {
</span><del>-    ErrorString error;
-    if (enable)
-        m_profilerAgent-&gt;enable(&amp;error);
-    else
-        m_profilerAgent-&gt;disable(&amp;error);
</del><ins>+    if (enable) {
+        m_instrumentingAgents-&gt;setPersistentInspectorTimelineAgent(m_timelineAgent);
+        m_timelineAgent-&gt;start();
+    } else {
+        m_instrumentingAgents-&gt;setPersistentInspectorTimelineAgent(nullptr);
+        m_timelineAgent-&gt;stop();
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorController::resume()
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebCoreinspectorInspectorControllerh"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebCore/inspector/InspectorController.h (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebCore/inspector/InspectorController.h        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebCore/inspector/InspectorController.h        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -62,6 +62,7 @@
</span><span class="cx"> class InspectorFrontendClient;
</span><span class="cx"> class InspectorPageAgent;
</span><span class="cx"> class InspectorResourceAgent;
</span><ins>+class InspectorTimelineAgent;
</ins><span class="cx"> class InstrumentingAgents;
</span><span class="cx"> class Node;
</span><span class="cx"> class Page;
</span><span class="lines">@@ -144,6 +145,7 @@
</span><span class="cx">     PageDebuggerAgent* m_debuggerAgent;
</span><span class="cx">     InspectorDOMDebuggerAgent* m_domDebuggerAgent;
</span><span class="cx">     Inspector::InspectorProfilerAgent* m_profilerAgent;
</span><ins>+    InspectorTimelineAgent* m_timelineAgent;
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;Inspector::InspectorBackendDispatcher&gt; m_inspectorBackendDispatcher;
</span><span class="cx">     std::unique_ptr&lt;InspectorFrontendClient&gt; m_inspectorFrontendClient;
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebCoreinspectorInspectorInstrumentationcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebCore/inspector/InspectorInstrumentation.cpp (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebCore/inspector/InspectorInstrumentation.cpp        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebCore/inspector/InspectorInstrumentation.cpp        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -945,14 +945,14 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorInstrumentation::startProfilingImpl(InstrumentingAgents* instrumentingAgents, JSC::ExecState* exec, const String&amp; title)
</span><span class="cx"> {
</span><del>-    if (InspectorProfilerAgent* profilerAgent = instrumentingAgents-&gt;inspectorProfilerAgent())
-        profilerAgent-&gt;startProfiling(title, exec);
</del><ins>+    if (InspectorTimelineAgent* timelineAgent = instrumentingAgents-&gt;persistentInspectorTimelineAgent())
+        timelineAgent-&gt;startFromConsole(exec, title);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;JSC::Profile&gt; InspectorInstrumentation::stopProfilingImpl(InstrumentingAgents* instrumentingAgents, JSC::ExecState* exec, const String&amp; title)
</span><span class="cx"> {
</span><del>-    if (InspectorProfilerAgent* profilerAgent = instrumentingAgents-&gt;inspectorProfilerAgent())
-        return profilerAgent-&gt;stopProfiling(title, exec);
</del><ins>+    if (InspectorTimelineAgent* timelineAgent = instrumentingAgents-&gt;persistentInspectorTimelineAgent())
+        return timelineAgent-&gt;stopFromConsole(exec, title);
</ins><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebCoreinspectorInspectorTimelineAgentcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebCore/inspector/InspectorTimelineAgent.cpp (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebCore/inspector/InspectorTimelineAgent.cpp        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebCore/inspector/InspectorTimelineAgent.cpp        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -74,6 +74,8 @@
</span><span class="cx"> {
</span><span class="cx">     m_frontendDispatcher = std::make_unique&lt;InspectorTimelineFrontendDispatcher&gt;(frontendChannel);
</span><span class="cx">     m_backendDispatcher = InspectorTimelineBackendDispatcher::create(backendDispatcher, this);
</span><ins>+
+    m_instrumentingAgents-&gt;setPersistentInspectorTimelineAgent(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorTimelineAgent::willDestroyFrontendAndBackend(InspectorDisconnectReason)
</span><span class="lines">@@ -81,15 +83,14 @@
</span><span class="cx">     m_frontendDispatcher = nullptr;
</span><span class="cx">     m_backendDispatcher.clear();
</span><span class="cx"> 
</span><ins>+    m_instrumentingAgents-&gt;setPersistentInspectorTimelineAgent(nullptr);
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     stop(&amp;error);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorTimelineAgent::start(ErrorString*, const int* maxCallStackDepth)
</span><span class="cx"> {
</span><del>-    if (!m_frontendDispatcher)
-        return;
-
</del><span class="cx">     if (maxCallStackDepth &amp;&amp; *maxCallStackDepth &gt; 0)
</span><span class="cx">         m_maxCallStackDepth = *maxCallStackDepth;
</span><span class="cx">     else
</span><span class="lines">@@ -103,6 +104,9 @@
</span><span class="cx">         m_scriptDebugServer-&gt;addListener(this);
</span><span class="cx"> 
</span><span class="cx">     m_enabled = true;
</span><ins>+
+    if (m_frontendDispatcher)
+        m_frontendDispatcher-&gt;recordingStarted();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorTimelineAgent::stop(ErrorString*)
</span><span class="lines">@@ -110,7 +114,6 @@
</span><span class="cx">     if (!m_enabled)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_weakFactory.revokeAll();
</del><span class="cx">     m_instrumentingAgents-&gt;setInspectorTimelineAgent(nullptr);
</span><span class="cx"> 
</span><span class="cx">     if (m_scriptDebugServer)
</span><span class="lines">@@ -119,6 +122,9 @@
</span><span class="cx">     clearRecordStack();
</span><span class="cx"> 
</span><span class="cx">     m_enabled = false;
</span><ins>+
+    if (m_frontendDispatcher)
+        m_frontendDispatcher-&gt;recordingStopped();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorTimelineAgent::setPageScriptDebugServer(PageScriptDebugServer* scriptDebugServer)
</span><span class="lines">@@ -129,16 +135,76 @@
</span><span class="cx">     m_scriptDebugServer = scriptDebugServer;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static inline void startProfiling(JSC::ExecState* exec, const String&amp; title)
+{
+    JSC::LegacyProfiler::profiler()-&gt;startProfiling(exec, title);
+}
+
+static inline PassRefPtr&lt;JSC::Profile&gt; stopProfiling(JSC::ExecState* exec, const String&amp; title)
+{
+    return JSC::LegacyProfiler::profiler()-&gt;stopProfiling(exec, title);
+}
+
</ins><span class="cx"> static inline void startProfiling(Frame* frame, const String&amp; title)
</span><span class="cx"> {
</span><del>-    JSC::LegacyProfiler::profiler()-&gt;startProfiling(toJSDOMWindow(frame, debuggerWorld())-&gt;globalExec(), title);
</del><ins>+    startProfiling(toJSDOMWindow(frame, debuggerWorld())-&gt;globalExec(), title);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline PassRefPtr&lt;JSC::Profile&gt; stopProfiling(Frame* frame, const String&amp; title)
</span><span class="cx"> {
</span><del>-    return JSC::LegacyProfiler::profiler()-&gt;stopProfiling(toJSDOMWindow(frame, debuggerWorld())-&gt;globalExec(), title);
</del><ins>+    return stopProfiling(toJSDOMWindow(frame, debuggerWorld())-&gt;globalExec(), title);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void InspectorTimelineAgent::startFromConsole(JSC::ExecState* exec, const String &amp;title)
+{
+    // Only allow recording of a profile if it is anonymous (empty title) or does not match
+    // the title of an already recording profile.
+    if (!title.isEmpty()) {
+        for (const TimelineRecordEntry&amp; record : m_pendingConsoleProfileRecords) {
+            String recordTitle;
+            record.data-&gt;getString(ASCIILiteral(&quot;title&quot;), &amp;recordTitle);
+            if (recordTitle == title)
+                return;
+        }
+    }
+
+    if (m_pendingConsoleProfileRecords.isEmpty())
+        start();
+
+    startProfiling(exec, title);
+
+    m_pendingConsoleProfileRecords.append(createRecordEntry(TimelineRecordFactory::createConsoleProfileData(title), TimelineRecordType::ConsoleProfile, true, frameFromExecState(exec)));
+}
+
+PassRefPtr&lt;JSC::Profile&gt; InspectorTimelineAgent::stopFromConsole(JSC::ExecState* exec, const String&amp; title)
+{
+    // Stop profiles in reverse order. If the title is empty, then stop the last profile.
+    // Otherwise, match the title of the profile to stop.
+    for (ptrdiff_t i = m_pendingConsoleProfileRecords.size() - 1; i &gt;= 0; --i) {
+        const TimelineRecordEntry&amp; record = m_pendingConsoleProfileRecords[i];
+
+        String recordTitle;
+        record.data-&gt;getString(ASCIILiteral(&quot;title&quot;), &amp;recordTitle);
+
+        if (title.isEmpty() || recordTitle == title) {
+            RefPtr&lt;JSC::Profile&gt; profile = stopProfiling(exec, title);
+            if (profile)
+                TimelineRecordFactory::appendProfile(record.data.get(), profile);
+
+            didCompleteRecordEntry(record);
+
+            m_pendingConsoleProfileRecords.remove(i);
+
+            if (m_pendingConsoleProfileRecords.isEmpty())
+                stop();
+
+            return profile.release();
+        }
+    }
+
+    return nullptr;
+}
+
</ins><span class="cx"> void InspectorTimelineAgent::willCallFunction(const String&amp; scriptName, int scriptLine, Frame* frame)
</span><span class="cx"> {
</span><span class="cx">     pushCurrentRecord(TimelineRecordFactory::createFunctionCallData(scriptName, scriptLine), TimelineRecordType::FunctionCall, true, frame);
</span><span class="lines">@@ -264,7 +330,7 @@
</span><span class="cx"> void InspectorTimelineAgent::didWriteHTML(unsigned endLine)
</span><span class="cx"> {
</span><span class="cx">     if (!m_recordStack.isEmpty()) {
</span><del>-        TimelineRecordEntry entry = m_recordStack.last();
</del><ins>+        const TimelineRecordEntry&amp; entry = m_recordStack.last();
</ins><span class="cx">         entry.data-&gt;setNumber(&quot;endLine&quot;, endLine);
</span><span class="cx">         didCompleteCurrentRecord(TimelineRecordType::ParseHTML);
</span><span class="cx">     }
</span><span class="lines">@@ -457,10 +523,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(exec);
</span><span class="cx"> 
</span><del>-    ScriptExecutionContext* context = scriptExecutionContextFromExecState(exec);
-    Document* document = (context &amp;&amp; context-&gt;isDocument()) ? toDocument(context) : nullptr;
-    Frame* frame = document ? document-&gt;frame() : nullptr;
-    appendRecord(TimelineRecordFactory::createProbeSampleData(action, hitCount), TimelineRecordType::ProbeSample, false, frame);
</del><ins>+    appendRecord(TimelineRecordFactory::createProbeSampleData(action, hitCount), TimelineRecordType::ProbeSample, false, frameFromExecState(exec));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static Inspector::TypeBuilder::Timeline::EventType::Enum toProtocol(TimelineRecordType type)
</span><span class="lines">@@ -528,6 +591,8 @@
</span><span class="cx">         return Inspector::TypeBuilder::Timeline::EventType::FunctionCall;
</span><span class="cx">     case TimelineRecordType::ProbeSample:
</span><span class="cx">         return Inspector::TypeBuilder::Timeline::EventType::ProbeSample;
</span><ins>+    case TimelineRecordType::ConsoleProfile:
+        return Inspector::TypeBuilder::Timeline::EventType::ConsoleProfile;
</ins><span class="cx"> 
</span><span class="cx">     case TimelineRecordType::RequestAnimationFrame:
</span><span class="cx">         return Inspector::TypeBuilder::Timeline::EventType::RequestAnimationFrame;
</span><span class="lines">@@ -558,7 +623,7 @@
</span><span class="cx">     if (m_recordStack.isEmpty())
</span><span class="cx">         sendEvent(record.release());
</span><span class="cx">     else {
</span><del>-        TimelineRecordEntry parent = m_recordStack.last();
</del><ins>+        const TimelineRecordEntry&amp; parent = m_recordStack.last();
</ins><span class="cx">         parent.children-&gt;pushObject(record.release());
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -573,6 +638,14 @@
</span><span class="cx">     record-&gt;setString(&quot;frameId&quot;, frameId);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void InspectorTimelineAgent::didCompleteRecordEntry(const TimelineRecordEntry&amp; entry)
+{
+    entry.record-&gt;setObject(ASCIILiteral(&quot;data&quot;), entry.data);
+    entry.record-&gt;setArray(ASCIILiteral(&quot;children&quot;), entry.children);
+    entry.record-&gt;setNumber(ASCIILiteral(&quot;endTime&quot;), timestamp());
+    addRecordToTimeline(entry.record, entry.type);
+}
+
</ins><span class="cx"> void InspectorTimelineAgent::didCompleteCurrentRecord(TimelineRecordType type)
</span><span class="cx"> {
</span><span class="cx">     // An empty stack could merely mean that the timeline agent was turned on in the middle of
</span><span class="lines">@@ -580,11 +653,8 @@
</span><span class="cx">     if (!m_recordStack.isEmpty()) {
</span><span class="cx">         TimelineRecordEntry entry = m_recordStack.last();
</span><span class="cx">         m_recordStack.removeLast();
</span><del>-        ASSERT(entry.type == type);
-        entry.record-&gt;setObject(&quot;data&quot;, entry.data);
-        entry.record-&gt;setArray(&quot;children&quot;, entry.children);
-        entry.record-&gt;setNumber(&quot;endTime&quot;, timestamp());
-        addRecordToTimeline(entry.record, type);
</del><ins>+        ASSERT_UNUSED(type, entry.type == type);
+        didCompleteRecordEntry(entry);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -596,7 +666,6 @@
</span><span class="cx">     , m_maxCallStackDepth(5)
</span><span class="cx">     , m_inspectorType(type)
</span><span class="cx">     , m_client(client)
</span><del>-    , m_weakFactory(this)
</del><span class="cx">     , m_enabled(false)
</span><span class="cx">     , m_recordingProfile(false)
</span><span class="cx"> {
</span><span class="lines">@@ -612,18 +681,26 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorTimelineAgent::sendEvent(PassRefPtr&lt;InspectorObject&gt; event)
</span><span class="cx"> {
</span><ins>+    if (!m_frontendDispatcher)
+        return;
+
</ins><span class="cx">     // FIXME: runtimeCast is a hack. We do it because we can't build TimelineEvent directly now.
</span><span class="cx">     RefPtr&lt;Inspector::TypeBuilder::Timeline::TimelineEvent&gt; recordChecked = Inspector::TypeBuilder::Timeline::TimelineEvent::runtimeCast(event);
</span><span class="cx">     m_frontendDispatcher-&gt;eventRecorded(recordChecked.release());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorTimelineAgent::pushCurrentRecord(PassRefPtr&lt;InspectorObject&gt; data, TimelineRecordType type, bool captureCallStack, Frame* frame)
</del><ins>+InspectorTimelineAgent::TimelineRecordEntry InspectorTimelineAgent::createRecordEntry(PassRefPtr&lt;InspectorObject&gt; data, TimelineRecordType type, bool captureCallStack, Frame* frame)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; record = TimelineRecordFactory::createGenericRecord(timestamp(), captureCallStack ? m_maxCallStackDepth : 0);
</span><span class="cx">     setFrameIdentifier(record.get(), frame);
</span><del>-    m_recordStack.append(TimelineRecordEntry(record.release(), data, InspectorArray::create(), type));
</del><ins>+    return TimelineRecordEntry(record.release(), data, InspectorArray::create(), type);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void InspectorTimelineAgent::pushCurrentRecord(PassRefPtr&lt;InspectorObject&gt; data, TimelineRecordType type, bool captureCallStack, Frame* frame)
+{
+    pushCurrentRecord(createRecordEntry(data, type, captureCallStack, frame));
+}
+
</ins><span class="cx"> void InspectorTimelineAgent::clearRecordStack()
</span><span class="cx"> {
</span><span class="cx">     m_recordStack.clear();
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebCoreinspectorInspectorTimelineAgenth"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebCore/inspector/InspectorTimelineAgent.h (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebCore/inspector/InspectorTimelineAgent.h        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebCore/inspector/InspectorTimelineAgent.h        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -43,6 +43,10 @@
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> #include &lt;wtf/WeakPtr.h&gt;
</span><span class="cx"> 
</span><ins>+namespace JSC {
+class Profile;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class Event;
</span><span class="lines">@@ -97,6 +101,7 @@
</span><span class="cx"> 
</span><span class="cx">     FunctionCall,
</span><span class="cx">     ProbeSample,
</span><ins>+    ConsoleProfile,
</ins><span class="cx"> 
</span><span class="cx">     RequestAnimationFrame,
</span><span class="cx">     CancelAnimationFrame,
</span><span class="lines">@@ -136,8 +141,8 @@
</span><span class="cx">     virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) override;
</span><span class="cx">     virtual void willDestroyFrontendAndBackend(Inspector::InspectorDisconnectReason) override;
</span><span class="cx"> 
</span><del>-    virtual void start(ErrorString*, const int* maxCallStackDepth) override;
-    virtual void stop(ErrorString*) override;
</del><ins>+    virtual void start(ErrorString* = nullptr, const int* maxCallStackDepth = nullptr) override;
+    virtual void stop(ErrorString* = nullptr) override;
</ins><span class="cx"> 
</span><span class="cx">     int id() const { return m_id; }
</span><span class="cx"> 
</span><span class="lines">@@ -146,6 +151,9 @@
</span><span class="cx">     void didCommitLoad();
</span><span class="cx"> 
</span><span class="cx">     // Methods called from WebCore.
</span><ins>+    void startFromConsole(JSC::ExecState*, const String &amp;title);
+    PassRefPtr&lt;JSC::Profile&gt; stopFromConsole(JSC::ExecState*, const String&amp; title);
+
</ins><span class="cx">     void willCallFunction(const String&amp; scriptName, int scriptLine, Frame*);
</span><span class="cx">     void didCallFunction(Frame*);
</span><span class="cx"> 
</span><span class="lines">@@ -224,10 +232,13 @@
</span><span class="cx">     friend class TimelineRecordStack;
</span><span class="cx"> 
</span><span class="cx">     struct TimelineRecordEntry {
</span><ins>+        TimelineRecordEntry()
+            : type(TimelineRecordType::EventDispatch) { }
</ins><span class="cx">         TimelineRecordEntry(PassRefPtr&lt;Inspector::InspectorObject&gt; record, PassRefPtr&lt;Inspector::InspectorObject&gt; data, PassRefPtr&lt;Inspector::InspectorArray&gt; children, TimelineRecordType type)
</span><span class="cx">             : record(record), data(data), children(children), type(type)
</span><span class="cx">         {
</span><span class="cx">         }
</span><ins>+
</ins><span class="cx">         RefPtr&lt;Inspector::InspectorObject&gt; record;
</span><span class="cx">         RefPtr&lt;Inspector::InspectorObject&gt; data;
</span><span class="cx">         RefPtr&lt;Inspector::InspectorArray&gt; children;
</span><span class="lines">@@ -237,9 +248,13 @@
</span><span class="cx">     void sendEvent(PassRefPtr&lt;Inspector::InspectorObject&gt;);
</span><span class="cx">     void appendRecord(PassRefPtr&lt;Inspector::InspectorObject&gt; data, TimelineRecordType, bool captureCallStack, Frame*);
</span><span class="cx">     void pushCurrentRecord(PassRefPtr&lt;Inspector::InspectorObject&gt;, TimelineRecordType, bool captureCallStack, Frame*);
</span><ins>+    void pushCurrentRecord(const TimelineRecordEntry&amp; record) { m_recordStack.append(record); }
</ins><span class="cx"> 
</span><ins>+    TimelineRecordEntry createRecordEntry(PassRefPtr&lt;Inspector::InspectorObject&gt; data, TimelineRecordType, bool captureCallStack, Frame*);
+
</ins><span class="cx">     void setFrameIdentifier(Inspector::InspectorObject* record, Frame*);
</span><span class="cx"> 
</span><ins>+    void didCompleteRecordEntry(const TimelineRecordEntry&amp;);
</ins><span class="cx">     void didCompleteCurrentRecord(TimelineRecordType);
</span><span class="cx"> 
</span><span class="cx">     void addRecordToTimeline(PassRefPtr&lt;Inspector::InspectorObject&gt;, TimelineRecordType);
</span><span class="lines">@@ -264,8 +279,9 @@
</span><span class="cx">     int m_maxCallStackDepth;
</span><span class="cx">     InspectorType m_inspectorType;
</span><span class="cx">     InspectorClient* m_client;
</span><del>-    WeakPtrFactory&lt;InspectorTimelineAgent&gt; m_weakFactory;
</del><span class="cx"> 
</span><ins>+    Vector&lt;TimelineRecordEntry&gt; m_pendingConsoleProfileRecords;
+
</ins><span class="cx">     bool m_enabled;
</span><span class="cx">     bool m_recordingProfile;
</span><span class="cx"> };
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebCoreinspectorInstrumentingAgentscpp"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebCore/inspector/InstrumentingAgents.cpp (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebCore/inspector/InstrumentingAgents.cpp        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebCore/inspector/InstrumentingAgents.cpp        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -56,6 +56,7 @@
</span><span class="cx">     , m_pageRuntimeAgent(nullptr)
</span><span class="cx">     , m_workerRuntimeAgent(nullptr)
</span><span class="cx">     , m_inspectorTimelineAgent(nullptr)
</span><ins>+    , m_persistentInspectorTimelineAgent(nullptr)
</ins><span class="cx">     , m_inspectorDOMStorageAgent(nullptr)
</span><span class="cx"> #if ENABLE(WEB_REPLAY)
</span><span class="cx">     , m_inspectorReplayAgent(nullptr)
</span><span class="lines">@@ -84,6 +85,7 @@
</span><span class="cx">     m_pageRuntimeAgent = nullptr;
</span><span class="cx">     m_workerRuntimeAgent = nullptr;
</span><span class="cx">     m_inspectorTimelineAgent = nullptr;
</span><ins>+    m_persistentInspectorTimelineAgent = nullptr;
</ins><span class="cx">     m_inspectorDOMStorageAgent = nullptr;
</span><span class="cx"> #if ENABLE(WEB_REPLAY)
</span><span class="cx">     m_inspectorReplayAgent = nullptr;
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebCoreinspectorInstrumentingAgentsh"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebCore/inspector/InstrumentingAgents.h (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebCore/inspector/InstrumentingAgents.h        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebCore/inspector/InstrumentingAgents.h        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -105,6 +105,9 @@
</span><span class="cx">     InspectorTimelineAgent* inspectorTimelineAgent() const { return m_inspectorTimelineAgent; }
</span><span class="cx">     void setInspectorTimelineAgent(InspectorTimelineAgent* agent) { m_inspectorTimelineAgent = agent; }
</span><span class="cx"> 
</span><ins>+    InspectorTimelineAgent* persistentInspectorTimelineAgent() const { return m_persistentInspectorTimelineAgent; }
+    void setPersistentInspectorTimelineAgent(InspectorTimelineAgent* agent) { m_persistentInspectorTimelineAgent = agent; }
+
</ins><span class="cx">     InspectorDOMStorageAgent* inspectorDOMStorageAgent() const { return m_inspectorDOMStorageAgent; }
</span><span class="cx">     void setInspectorDOMStorageAgent(InspectorDOMStorageAgent* agent) { m_inspectorDOMStorageAgent = agent; }
</span><span class="cx"> 
</span><span class="lines">@@ -154,6 +157,7 @@
</span><span class="cx">     PageRuntimeAgent* m_pageRuntimeAgent;
</span><span class="cx">     WorkerRuntimeAgent* m_workerRuntimeAgent;
</span><span class="cx">     InspectorTimelineAgent* m_inspectorTimelineAgent;
</span><ins>+    InspectorTimelineAgent* m_persistentInspectorTimelineAgent;
</ins><span class="cx">     InspectorDOMStorageAgent* m_inspectorDOMStorageAgent;
</span><span class="cx"> #if ENABLE(WEB_REPLAY)
</span><span class="cx">     InspectorReplayAgent* m_inspectorReplayAgent;
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebCoreinspectorTimelineRecordFactorycpp"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebCore/inspector/TimelineRecordFactory.cpp (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebCore/inspector/TimelineRecordFactory.cpp        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebCore/inspector/TimelineRecordFactory.cpp        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -90,6 +90,13 @@
</span><span class="cx">     return data.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+PassRefPtr&lt;InspectorObject&gt; TimelineRecordFactory::createConsoleProfileData(const String&amp; title)
+{
+    RefPtr&lt;InspectorObject&gt; data = InspectorObject::create();
+    data-&gt;setString(&quot;title&quot;, title);
+    return data.release();
+}
+
</ins><span class="cx"> PassRefPtr&lt;InspectorObject&gt; TimelineRecordFactory::createProbeSampleData(const ScriptBreakpointAction&amp; action, int hitCount)
</span><span class="cx"> {
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; data = InspectorObject::create();
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebCoreinspectorTimelineRecordFactoryh"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebCore/inspector/TimelineRecordFactory.h (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebCore/inspector/TimelineRecordFactory.h        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebCore/inspector/TimelineRecordFactory.h        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -61,6 +61,7 @@
</span><span class="cx">         static PassRefPtr&lt;Inspector::InspectorObject&gt; createGCEventData(const size_t usedHeapSizeDelta);
</span><span class="cx"> 
</span><span class="cx">         static PassRefPtr&lt;Inspector::InspectorObject&gt; createFunctionCallData(const String&amp; scriptName, int scriptLine);
</span><ins>+        static PassRefPtr&lt;Inspector::InspectorObject&gt; createConsoleProfileData(const String&amp; title);
</ins><span class="cx"> 
</span><span class="cx">         static PassRefPtr&lt;Inspector::InspectorObject&gt; createProbeSampleData(const Inspector::ScriptBreakpointAction&amp;, int hitCount);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebCoreinspectorprotocolTimelinejson"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebCore/inspector/protocol/Timeline.json (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebCore/inspector/protocol/Timeline.json        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebCore/inspector/protocol/Timeline.json        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx">         {
</span><span class="cx">             &quot;id&quot;: &quot;EventType&quot;,
</span><span class="cx">             &quot;type&quot;: &quot;string&quot;,
</span><del>-            &quot;enum&quot;: [&quot;EventDispatch&quot;, &quot;ScheduleStyleRecalculation&quot;, &quot;RecalculateStyles&quot;, &quot;InvalidateLayout&quot;, &quot;Layout&quot;, &quot;Paint&quot;, &quot;ScrollLayer&quot;, &quot;ResizeImage&quot;, &quot;ParseHTML&quot;, &quot;TimerInstall&quot;, &quot;TimerRemove&quot;, &quot;TimerFire&quot;, &quot;EvaluateScript&quot;, &quot;MarkLoad&quot;, &quot;MarkDOMContent&quot;, &quot;TimeStamp&quot;, &quot;Time&quot;, &quot;TimeEnd&quot;, &quot;ScheduleResourceRequest&quot;, &quot;ResourceSendRequest&quot;, &quot;ResourceReceiveResponse&quot;, &quot;ResourceReceivedData&quot;, &quot;ResourceFinish&quot;, &quot;XHRReadyStateChange&quot;, &quot;XHRLoad&quot;, &quot;FunctionCall&quot;, &quot;ProbeSample&quot;, &quot;GCEvent&quot;, &quot;RequestAnimationFrame&quot;, &quot;CancelAnimationFrame&quot;, &quot;FireAnimationFrame&quot;, &quot;WebSocketCreate&quot;, &quot;WebSocketSendHandshakeRequest&quot;, &quot;WebSocketReceiveHandshakeResponse&quot;, &quot;WebSocketDestroy&quot;],
</del><ins>+            &quot;enum&quot;: [&quot;EventDispatch&quot;, &quot;ScheduleStyleRecalculation&quot;, &quot;RecalculateStyles&quot;, &quot;InvalidateLayout&quot;, &quot;Layout&quot;, &quot;Paint&quot;, &quot;ScrollLayer&quot;, &quot;ResizeImage&quot;, &quot;ParseHTML&quot;, &quot;TimerInstall&quot;, &quot;TimerRemove&quot;, &quot;TimerFire&quot;, &quot;EvaluateScript&quot;, &quot;MarkLoad&quot;, &quot;MarkDOMContent&quot;, &quot;TimeStamp&quot;, &quot;Time&quot;, &quot;TimeEnd&quot;, &quot;ScheduleResourceRequest&quot;, &quot;ResourceSendRequest&quot;, &quot;ResourceReceiveResponse&quot;, &quot;ResourceReceivedData&quot;, &quot;ResourceFinish&quot;, &quot;XHRReadyStateChange&quot;, &quot;XHRLoad&quot;, &quot;FunctionCall&quot;, &quot;ProbeSample&quot;, &quot;ConsoleProfile&quot;, &quot;GCEvent&quot;, &quot;RequestAnimationFrame&quot;, &quot;CancelAnimationFrame&quot;, &quot;FireAnimationFrame&quot;, &quot;WebSocketCreate&quot;, &quot;WebSocketSendHandshakeRequest&quot;, &quot;WebSocketReceiveHandshakeResponse&quot;, &quot;WebSocketDestroy&quot;],
</ins><span class="cx">             &quot;description&quot;: &quot;Timeline record type.&quot;
</span><span class="cx">         },
</span><span class="cx">         {
</span><span class="lines">@@ -39,6 +39,14 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;record&quot;, &quot;$ref&quot;: &quot;TimelineEvent&quot;, &quot;description&quot;: &quot;Timeline event record data.&quot; }
</span><span class="cx">             ],
</span><span class="cx">             &quot;description&quot;: &quot;Fired for every instrumentation event while timeline is started.&quot;
</span><ins>+        },
+        {
+            &quot;name&quot;: &quot;recordingStarted&quot;,
+            &quot;description&quot;: &quot;Fired when recording has started.&quot;
+        },
+        {
+            &quot;name&quot;: &quot;recordingStopped&quot;,
+            &quot;description&quot;: &quot;Fired when recording has stopped.&quot;
</ins><span class="cx">         }
</span><span class="cx">     ]
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebCorepagePageConsolecpp"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebCore/page/PageConsole.cpp (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebCore/page/PageConsole.cpp        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebCore/page/PageConsole.cpp        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -170,8 +170,7 @@
</span><span class="cx"> 
</span><span class="cx"> void PageConsole::profileEnd(JSC::ExecState* exec, const String&amp; title)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;JSC::Profile&gt; profile = InspectorInstrumentation::stopProfiling(&amp;m_page, exec, title);
-    if (profile)
</del><ins>+    if (RefPtr&lt;JSC::Profile&gt; profile = InspectorInstrumentation::stopProfiling(&amp;m_page, exec, title))
</ins><span class="cx">         m_profiles.append(profile.release());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebInspectorUI/ChangeLog (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebInspectorUI/ChangeLog        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebInspectorUI/ChangeLog        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -1,3 +1,30 @@
</span><ins>+2014-07-17  Timothy Hatcher  &lt;timothy@apple.com&gt;
+
+        Make console.profile record to the Timeline.
+
+        https://bugs.webkit.org/show_bug.cgi?id=134643
+
+        Reviewed by Joseph Pecoraro.
+
+        * Localizations/en.lproj/localizedStrings.js:
+        * UserInterface/Controllers/TimelineManager.js:
+        (WebInspector.TimelineManager.prototype.startCapturing):
+        (WebInspector.TimelineManager.prototype.stopCapturing):
+        (WebInspector.TimelineManager.prototype.capturingStarted):
+        (WebInspector.TimelineManager.prototype.capturingStopped):
+        (WebInspector.TimelineManager.prototype.eventRecorded.processRecord):
+        (WebInspector.TimelineManager.prototype.eventRecorded):
+        * UserInterface/Images/TimelineRecordConsoleProfile.svg: Added.
+        * UserInterface/Models/ScriptTimelineRecord.js:
+        * UserInterface/Protocol/TimelineObserver.js:
+        (WebInspector.TimelineObserver.prototype.eventRecorded):
+        (WebInspector.TimelineObserver.prototype.recordingStarted):
+        (WebInspector.TimelineObserver.prototype.recordingStopped):
+        * UserInterface/Views/TimelineIcons.css:
+        (.console-profile-record .icon):
+        * UserInterface/Views/TimelineRecordTreeElement.js:
+        (WebInspector.TimelineRecordTreeElement):
+
</ins><span class="cx"> 2014-07-16  Saam Barati  &lt;sbarati@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: TextContentView calls the wrong super function in shown()
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebInspectorUILocalizationsenlprojlocalizedStringsjs"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -101,6 +101,7 @@
</span><span class="cx"> localizedStrings[&quot;Condition&quot;] = &quot;Condition&quot;;
</span><span class="cx"> localizedStrings[&quot;Conditional expression&quot;] = &quot;Conditional expression&quot;;
</span><span class="cx"> localizedStrings[&quot;Console&quot;] = &quot;Console&quot;;
</span><ins>+localizedStrings[&quot;Console Profile Recorded&quot;] = &quot;Console Profile Recorded&quot;;
</ins><span class="cx"> localizedStrings[&quot;Console errors, click to show the Console&quot;] = &quot;Console errors, click to show the Console&quot;;
</span><span class="cx"> localizedStrings[&quot;Console logs, click to show the Console&quot;] = &quot;Console logs, click to show the Console&quot;;
</span><span class="cx"> localizedStrings[&quot;Console warnings, click to show the Console&quot;] = &quot;Console warnings, click to show the Console&quot;;
</span><span class="lines">@@ -152,7 +153,6 @@
</span><span class="cx"> localizedStrings[&quot;Element clips compositing descendants&quot;] = &quot;Element clips compositing descendants&quot;;
</span><span class="cx"> localizedStrings[&quot;Element establishes a stacking context&quot;] = &quot;Element establishes a stacking context&quot;;
</span><span class="cx"> localizedStrings[&quot;Element has CSS blending applied and composited descendants&quot;] = &quot;Element has CSS blending applied and composited descendants&quot;;
</span><del>-localizedStrings[&quot;Element is a stacking context and has composited descendants with CSS blending applied&quot;] = &quot;Element is a stacking context and has composited descendants with CSS blending applied&quot;;
</del><span class="cx"> localizedStrings[&quot;Element has CSS filters applied&quot;] = &quot;Element has CSS filters applied&quot;;
</span><span class="cx"> localizedStrings[&quot;Element has CSS filters applied and composited descendants&quot;] = &quot;Element has CSS filters applied and composited descendants&quot;;
</span><span class="cx"> localizedStrings[&quot;Element has a 2D transform and composited descendants&quot;] = &quot;Element has a 2D transform and composited descendants&quot;;
</span><span class="lines">@@ -171,6 +171,7 @@
</span><span class="cx"> localizedStrings[&quot;Element is &lt;iframe&gt;&quot;] = &quot;Element is &lt;iframe&gt;&quot;;
</span><span class="cx"> localizedStrings[&quot;Element is &lt;video&gt;&quot;] = &quot;Element is &lt;video&gt;&quot;;
</span><span class="cx"> localizedStrings[&quot;Element is a plug-in&quot;] = &quot;Element is a plug-in&quot;;
</span><ins>+localizedStrings[&quot;Element is a stacking context and has composited descendants with CSS blending applied&quot;] = &quot;Element is a stacking context and has composited descendants with CSS blending applied&quot;;
</ins><span class="cx"> localizedStrings[&quot;Element is animated&quot;] = &quot;Element is animated&quot;;
</span><span class="cx"> localizedStrings[&quot;Element is masked and composited descendants&quot;] = &quot;Element is masked and composited descendants&quot;;
</span><span class="cx"> localizedStrings[&quot;Element is the root element&quot;] = &quot;Element is the root element&quot;;
</span><span class="lines">@@ -216,9 +217,9 @@
</span><span class="cx"> localizedStrings[&quot;HTML Attributes&quot;] = &quot;HTML Attributes&quot;;
</span><span class="cx"> localizedStrings[&quot;HTTP&quot;] = &quot;HTTP&quot;;
</span><span class="cx"> localizedStrings[&quot;Height&quot;] = &quot;Height&quot;;
</span><ins>+localizedStrings[&quot;Hide Replay Controls&quot;] = &quot;Hide Replay Controls&quot;;
</ins><span class="cx"> localizedStrings[&quot;Hide compositing borders&quot;] = &quot;Hide compositing borders&quot;;
</span><span class="cx"> localizedStrings[&quot;Hide console (%s)&quot;] = &quot;Hide console (%s)&quot;;
</span><del>-localizedStrings[&quot;Hide Replay Controls&quot;] = &quot;Hide Replay Controls&quot;;
</del><span class="cx"> localizedStrings[&quot;Hide shadow DOM nodes&quot;] = &quot;Hide shadow DOM nodes&quot;;
</span><span class="cx"> localizedStrings[&quot;Hide the %s details sidebar&quot;] = &quot;Hide the %s details sidebar&quot;;
</span><span class="cx"> localizedStrings[&quot;Hide the %s details sidebar (%s)&quot;] = &quot;Hide the %s details sidebar (%s)&quot;;
</span><span class="lines">@@ -344,8 +345,8 @@
</span><span class="cx"> localizedStrings[&quot;Reference Issue&quot;] = &quot;Reference Issue&quot;;
</span><span class="cx"> localizedStrings[&quot;Reflection&quot;] = &quot;Reflection&quot;;
</span><span class="cx"> localizedStrings[&quot;Refresh&quot;] = &quot;Refresh&quot;;
</span><ins>+localizedStrings[&quot;Region Flow&quot;] = &quot;Region Flow&quot;;
</ins><span class="cx"> localizedStrings[&quot;Region announced in its entirety.&quot;] = &quot;Region announced in its entirety.&quot;;
</span><del>-localizedStrings[&quot;Region Flow&quot;] = &quot;Region Flow&quot;;
</del><span class="cx"> localizedStrings[&quot;Reload page (%s)\nReload ignoring cache (%s)&quot;] = &quot;Reload page (%s)\nReload ignoring cache (%s)&quot;;
</span><span class="cx"> localizedStrings[&quot;Removals&quot;] = &quot;Removals&quot;;
</span><span class="cx"> localizedStrings[&quot;Remove this breakpoint action&quot;] = &quot;Remove this breakpoint action&quot;;
</span><span class="lines">@@ -387,11 +388,11 @@
</span><span class="cx"> localizedStrings[&quot;Shared Focus&quot;] = &quot;Shared Focus&quot;;
</span><span class="cx"> localizedStrings[&quot;Show All&quot;] = &quot;Show All&quot;;
</span><span class="cx"> localizedStrings[&quot;Show All Nodes (%d More)&quot;] = &quot;Show All Nodes (%d More)&quot;;
</span><ins>+localizedStrings[&quot;Show Replay Controls&quot;] = &quot;Show Replay Controls&quot;;
</ins><span class="cx"> localizedStrings[&quot;Show compositing borders&quot;] = &quot;Show compositing borders&quot;;
</span><span class="cx"> localizedStrings[&quot;Show console (%s)&quot;] = &quot;Show console (%s)&quot;;
</span><span class="cx"> localizedStrings[&quot;Show full-height console&quot;] = &quot;Show full-height console&quot;;
</span><span class="cx"> localizedStrings[&quot;Show function definition&quot;] = &quot;Show function definition&quot;;
</span><del>-localizedStrings[&quot;Show Replay Controls&quot;] = &quot;Show Replay Controls&quot;;
</del><span class="cx"> localizedStrings[&quot;Show shadow DOM nodes&quot;] = &quot;Show shadow DOM nodes&quot;;
</span><span class="cx"> localizedStrings[&quot;Show split console&quot;] = &quot;Show split console&quot;;
</span><span class="cx"> localizedStrings[&quot;Show the %s details sidebar&quot;] = &quot;Show the %s details sidebar&quot;;
</span><span class="lines">@@ -407,8 +408,8 @@
</span><span class="cx"> localizedStrings[&quot;Source Code&quot;] = &quot;Source Code&quot;;
</span><span class="cx"> localizedStrings[&quot;Spelling&quot;] = &quot;Spelling&quot;;
</span><span class="cx"> localizedStrings[&quot;Start JavaScript profiling.&quot;] = &quot;Start JavaScript profiling.&quot;;
</span><ins>+localizedStrings[&quot;Start Playback&quot;] = &quot;Start Playback&quot;;
</ins><span class="cx"> localizedStrings[&quot;Start Recording&quot;] = &quot;Start Recording&quot;;
</span><del>-localizedStrings[&quot;Start Playback&quot;] = &quot;Start Playback&quot;;
</del><span class="cx"> localizedStrings[&quot;Start Time&quot;] = &quot;Start Time&quot;;
</span><span class="cx"> localizedStrings[&quot;Status&quot;] = &quot;Status&quot;;
</span><span class="cx"> localizedStrings[&quot;Step into (%s or %s)&quot;] = &quot;Step into (%s or %s)&quot;;
</span><span class="lines">@@ -462,3 +463,4 @@
</span><span class="cx"> localizedStrings[&quot;line &quot;] = &quot;line &quot;;
</span><span class="cx"> localizedStrings[&quot;originally %s&quot;] = &quot;originally %s&quot;;
</span><span class="cx"> localizedStrings[&quot;undefined \xD7 %d&quot;] = &quot;undefined \xD7 %d&quot;;
</span><ins>+localizedStrings[&quot; %s  Profile Recorded&quot;] = &quot; %s  Profile Recorded&quot;;
</ins></span></pre></div>
<a id="branchessafari6001branchSourceWebInspectorUIUserInterfaceControllersTimelineManagerjs"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -61,17 +61,25 @@
</span><span class="cx"> 
</span><span class="cx">     startCapturing: function()
</span><span class="cx">     {
</span><ins>+        TimelineAgent.start();
+    },
+
+    stopCapturing: function()
+    {
+        TimelineAgent.stop();
+    },
+
+    capturingStarted: function()
+    {
</ins><span class="cx">         if (this._isCapturing)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><span class="cx">         this._isCapturing = true;
</span><span class="cx"> 
</span><del>-        TimelineAgent.start();
-
</del><span class="cx">         this.dispatchEventToListeners(WebInspector.TimelineManager.Event.CapturingStarted);
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    stopCapturing: function()
</del><ins>+    capturingStopped: function()
</ins><span class="cx">     {
</span><span class="cx">         if (!this._isCapturing)
</span><span class="cx">             return;
</span><span class="lines">@@ -86,8 +94,6 @@
</span><span class="cx">             delete this._deadTimeTimeout;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        TimelineAgent.stop();
-
</del><span class="cx">         this._isCapturing = false;
</span><span class="cx">         this._autoCapturingMainResource = null;
</span><span class="cx"> 
</span><span class="lines">@@ -229,6 +235,12 @@
</span><span class="cx">                 this._activeRecording.addEventMarker(eventMarker);
</span><span class="cx">                 break;
</span><span class="cx"> 
</span><ins>+            case TimelineAgent.EventType.ConsoleProfile:
+                var profile = this._profileFromPayload(recordPayload.data.profile);
+                console.assert(profile);
+                this._addRecord(new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.ConsoleProfileRecorded, startTime, endTime, callFrames, sourceCodeLocation, recordPayload.data.title, profile));
+                break;
+
</ins><span class="cx">             case TimelineAgent.EventType.FunctionCall:
</span><span class="cx">                 // FunctionCall always happens as a child of another record, and since the FunctionCall record
</span><span class="cx">                 // has useful info we just make the timeline record here (combining the data from both records).
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebInspectorUIUserInterfaceImagesTimelineRecordConsoleProfilesvgfromrev171195trunkSourceWebInspectorUIUserInterfaceImagesTimelineRecordConsoleProfilesvg"></a>
<div class="copfile"><h4>Copied: branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Images/TimelineRecordConsoleProfile.svg (from rev 171195, trunk/Source/WebInspectorUI/UserInterface/Images/TimelineRecordConsoleProfile.svg) (0 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Images/TimelineRecordConsoleProfile.svg                                (rev 0)
+++ branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Images/TimelineRecordConsoleProfile.svg        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!-- Copyright © 2013 Apple Inc. All rights reserved. --&gt;
+&lt;svg viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+    &lt;path fill=&quot;rgb(190, 165, 202)&quot; d=&quot;M 13 1 L 3 1 C 1.898438 1 1 1.898438 1 3 L 1 13 C 1 14.101562 1.898438 15 3 15 L 13 15 C 14.101562 15 15 14.101562 15 13 L 15 3 C 15 1.898438 14.101562 1 13 1 Z&quot;/&gt;
+    &lt;path fill=&quot;rgb(141, 118, 153)&quot; d=&quot;M 13 1 L 3 1 C 1.898438 1 1 1.898438 1 3 L 1 13 C 1 14.101562 1.898438 15 3 15 L 13 15 C 14.101562 15 15 14.101562 15 13 L 15 3 C 15 1.898438 14.101562 1 13 1 M 13 2 C 13.550781 2 14 2.449219 14 3 L 14 13 C 14 13.550781 13.550781 14 13 14 L 3 14 C 2.449219 14 2 13.550781 2 13 L 2 3 C 2 2.449219 2.449219 2 3 2 L 13 2&quot;/&gt;
+    &lt;path fill=&quot;rgb(153, 127, 166)&quot; d=&quot;M 7.09187665 9.86486483 L 8.09187665 9.86486483 L 8.09187675 12 L 8.09187675 13 L 7.09187675 13 L 5.4 13 L 4.4 13 L 4.4 12 L 4.4 4 L 4.4 3 L 5.4 3 L 8.2907563 3 C 9.49663194 3 10.4135483 3.20769232 11.0534889 3.69149996 C 11.7636984 4.22843229 12.097479 5.0719049 12.097479 6.12432432 C 12.097479 7.27475638 11.6870881 8.23200847 10.8722916 8.91131913 C 10.0975424 9.55724163 9.06464428 9.86486486 7.80896359 9.86486486 L 7.09187675 9.86486486 L 7.09187675 9.36486486 L 7.09187675 8.86486486 L 7.80896359 8.86486486 C 8.11369101 8.86486486 8.39855198 8.84414571 8.66354709 8.80270722 C 9.30146061 8.70295376 9.82425299 8.48313329 10.2319328 8.14324324 C 10.8089665 7.66215976 11.097479 6.98919351 11.097479 6.12432432 C 11.097479 5.36035654 10.8817949 4.81531695 10.4504202 4.48918919 C 10.0190455 4.16306143 9.29916471 4 8.2907563 4 L 5.4 4 L 5.4 12 L 7.09187675 12 L 7.09187675 9.36486486 L 7.09187665 9.86486483 Z M 7.09187675 7.76756757 L 7.4280112 7.76756757 C 8.01811686 7.76756757 8.4840319 7.63513646 8.82577031 7.37027027 C 9.16750871 7.10540408 9.33837535 6.74594822 9.33837535 6.29189189 C 9.33837535 5.49549151 8.81363737 5.0972973 7.76414566 5.0972973 L 7.09187675 5.0972973 L 7.09187675 7.76756757 Z M 7.09187675 7.76756757&quot;/&gt;
+    &lt;path fill=&quot;white&quot; d=&quot;M 5.4 12 L 5.4 4 L 8.2907563 4 C 9.29916471 4 10.0190455 4.16306143 10.4504202 4.48918919 C 10.8817949 4.81531695 11.097479 5.36035654 11.097479 6.12432432 C 11.097479 6.98919351 10.8089665 7.66215976 10.2319328 8.14324324 C 9.65489908 8.62432673 8.84725076 8.86486486 7.80896359 8.86486486 L 7.09187675 8.86486486 L 7.09187675 12 L 5.4 12 Z M 7.09187675 7.76756757 L 7.4280112 7.76756757 C 8.01811686 7.76756757 8.4840319 7.63513646 8.82577031 7.37027027 C 9.16750871 7.10540408 9.33837535 6.74594822 9.33837535 6.29189189 C 9.33837535 5.49549151 8.81363737 5.0972973 7.76414566 5.0972973 L 7.09187675 5.0972973 L 7.09187675 7.76756757 Z M 7.09187675 7.76756757&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="branchessafari6001branchSourceWebInspectorUIUserInterfaceModelsScriptTimelineRecordjs"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Models/ScriptTimelineRecord.js (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Models/ScriptTimelineRecord.js        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Models/ScriptTimelineRecord.js        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -46,7 +46,8 @@
</span><span class="cx">     TimerRemoved: &quot;script-timeline-record-timer-removed&quot;,
</span><span class="cx">     AnimationFrameFired: &quot;script-timeline-record-animation-frame-fired&quot;,
</span><span class="cx">     AnimationFrameRequested: &quot;script-timeline-record-animation-frame-requested&quot;,
</span><del>-    AnimationFrameCanceled: &quot;script-timeline-record-animation-frame-canceled&quot;
</del><ins>+    AnimationFrameCanceled: &quot;script-timeline-record-animation-frame-canceled&quot;,
+    ConsoleProfileRecorded: &quot;script-timeline-record-console-profile-recorded&quot;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> WebInspector.ScriptTimelineRecord.EventType.displayName = function(eventType, details, includeTimerIdentifierInMainTitle)
</span><span class="lines">@@ -216,6 +217,10 @@
</span><span class="cx">         return WebInspector.UIString(&quot;Event Dispatched&quot;);
</span><span class="cx">     case WebInspector.ScriptTimelineRecord.EventType.ProbeSampleRecorded:
</span><span class="cx">         return WebInspector.UIString(&quot;Probe Sample Recorded&quot;);
</span><ins>+    case WebInspector.ScriptTimelineRecord.EventType.ConsoleProfileRecorded:
+        if (details &amp;&amp; (details instanceof String || typeof details === &quot;string&quot;))
+            return WebInspector.UIString(&quot;“%s” Profile Recorded&quot;).format(details);
+        return WebInspector.UIString(&quot;Console Profile Recorded&quot;);
</ins><span class="cx">     case WebInspector.ScriptTimelineRecord.EventType.TimerFired:
</span><span class="cx">         if (details &amp;&amp; includeTimerIdentifierInMainTitle)
</span><span class="cx">             return WebInspector.UIString(&quot;Timer %s Fired&quot;).format(details);
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebInspectorUIUserInterfaceProtocolTimelineObserverjs"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Protocol/TimelineObserver.js (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Protocol/TimelineObserver.js        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Protocol/TimelineObserver.js        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -36,6 +36,16 @@
</span><span class="cx">     eventRecorded: function(record)
</span><span class="cx">     {
</span><span class="cx">         WebInspector.timelineManager.eventRecorded(record);
</span><ins>+    },
+
+    recordingStarted: function()
+    {
+        WebInspector.timelineManager.capturingStarted();
+    },
+
+    recordingStopped: function()
+    {
+        WebInspector.timelineManager.capturingStopped();
</ins><span class="cx">     }
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebInspectorUIUserInterfaceViewsTimelineIconscss"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Views/TimelineIcons.css (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Views/TimelineIcons.css        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Views/TimelineIcons.css        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -79,6 +79,10 @@
</span><span class="cx">     content: url(../Images/TimelineRecordProbeSampled.svg);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+.console-profile-record .icon {
+    content: url(../Images/TimelineRecordConsoleProfile.svg);
+}
+
</ins><span class="cx"> .timer-record .icon {
</span><span class="cx">     content: url(../Images/TimelineRecordTimer.svg);
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebInspectorUIUserInterfaceViewsTimelineRecordTreeElementjs"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Views/TimelineRecordTreeElement.js (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Views/TimelineRecordTreeElement.js        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebInspectorUI/UserInterface/Views/TimelineRecordTreeElement.js        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -80,6 +80,9 @@
</span><span class="cx">         case WebInspector.ScriptTimelineRecord.EventType.ProbeSampleRecorded:
</span><span class="cx">             iconStyleClass = WebInspector.TimelineRecordTreeElement.ProbeRecordIconStyleClass;
</span><span class="cx">             break;
</span><ins>+        case WebInspector.ScriptTimelineRecord.EventType.ConsoleProfileRecorded:
+            iconStyleClass = WebInspector.TimelineRecordTreeElement.ConsoleProfileIconStyleClass;
+            break;
</ins><span class="cx">         case WebInspector.ScriptTimelineRecord.EventType.TimerFired:
</span><span class="cx">         case WebInspector.ScriptTimelineRecord.EventType.TimerInstalled:
</span><span class="cx">         case WebInspector.ScriptTimelineRecord.EventType.TimerRemoved:
</span><span class="lines">@@ -116,6 +119,7 @@
</span><span class="cx"> WebInspector.TimelineRecordTreeElement.TimerRecordIconStyleClass = &quot;timer-record&quot;;
</span><span class="cx"> WebInspector.TimelineRecordTreeElement.AnimationRecordIconStyleClass = &quot;animation-record&quot;;
</span><span class="cx"> WebInspector.TimelineRecordTreeElement.ProbeRecordIconStyleClass = &quot;probe-record&quot;;
</span><ins>+WebInspector.TimelineRecordTreeElement.ConsoleProfileIconStyleClass = &quot;console-profile-record&quot;;
</ins><span class="cx"> 
</span><span class="cx"> WebInspector.TimelineRecordTreeElement.prototype = {
</span><span class="cx">     constructor: WebInspector.TimelineRecordTreeElement,
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebKit/mac/ChangeLog (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebKit/mac/ChangeLog        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebKit/mac/ChangeLog        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2014-07-22 Dana Burkart &lt;dburkart@apple.com&gt;
+    
+        Merge r171195.
+
+    2014-07-17  Timothy Hatcher  &lt;timothy@apple.com&gt;
+
+            Make console.profile record to the Timeline.
+
+            https://bugs.webkit.org/show_bug.cgi?id=134643
+
+            Reviewed by Joseph Pecoraro.
+
+            * WebInspector/WebInspector.mm:
+            (-[WebInspector isProfilingJavaScript]):
+            (-[WebInspector toggleProfilingJavaScript:]):
+            (-[WebInspector startProfilingJavaScript:]):
+            (-[WebInspector stopProfilingJavaScript:]):
+            (-[WebInspector isJavaScriptProfilingEnabled]):
+            (-[WebInspector setJavaScriptProfilingEnabled:]):
+
</ins><span class="cx"> 2014-07-17  Dean Jackson  &lt;dino@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         &lt;rdar://problem/17675068&gt; Disable some features on this branch.
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebKitmacWebInspectorWebInspectormm"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebKit/mac/WebInspector/WebInspector.mm (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebKit/mac/WebInspector/WebInspector.mm        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebKit/mac/WebInspector/WebInspector.mm        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -109,45 +109,34 @@
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)isProfilingJavaScript
</span><span class="cx"> {
</span><del>-    return _frontend &amp;&amp; [_frontend isProfilingJavaScript];
</del><ins>+    // No longer supported.
+    return NO;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)toggleProfilingJavaScript:(id)sender
</span><span class="cx"> {
</span><del>-    [self showWindow];
-
-    if ([self isProfilingJavaScript])
-        [_frontend stopProfilingJavaScript];
-    else
-        [_frontend startProfilingJavaScript];
</del><ins>+    // No longer supported.
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)startProfilingJavaScript:(id)sender
</span><span class="cx"> {
</span><del>-    if (_frontend)
-        [_frontend startProfilingJavaScript];
</del><ins>+    // No longer supported.
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)stopProfilingJavaScript:(id)sender
</span><span class="cx"> {
</span><del>-    if (_frontend)
-        [_frontend stopProfilingJavaScript];
</del><ins>+    // No longer supported.
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)isJavaScriptProfilingEnabled
</span><span class="cx"> {
</span><del>-    if (Page* page = core(_webView))
-        return page-&gt;inspectorController().profilerEnabled();
</del><ins>+    // No longer supported.
</ins><span class="cx">     return NO;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)setJavaScriptProfilingEnabled:(BOOL)enabled
</span><span class="cx"> {
</span><del>-    Page* page = core(_webView);
-    if (!page)
-        return;
-
-    page-&gt;inspectorController().setProfilerEnabled(enabled);
</del><ins>+    // No longer supported.
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)isTimelineProfilingEnabled
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebKit2/ChangeLog (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebKit2/ChangeLog        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebKit2/ChangeLog        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -1,5 +1,22 @@
</span><span class="cx"> 2014-07-22 Dana Burkart &lt;dburkart@apple.com&gt;
</span><span class="cx">     
</span><ins>+        Merge r171195.
+
+    2014-07-17  Timothy Hatcher  &lt;timothy@apple.com&gt;
+
+            Make console.profile record to the Timeline.
+
+            https://bugs.webkit.org/show_bug.cgi?id=134643
+
+            Reviewed by Joseph Pecoraro.
+
+            * WebProcess/WebPage/WebInspector.cpp:
+            (WebKit::WebInspector::setJavaScriptProfilingEnabled):
+            (WebKit::WebInspector::startJavaScriptProfiling):
+            (WebKit::WebInspector::stopJavaScriptProfiling):
+
+2014-07-22 Dana Burkart &lt;dburkart@apple.com&gt;
+    
</ins><span class="cx">         Merge r171194.
</span><span class="cx"> 
</span><span class="cx">     2014-07-17  Brady Eidson  &lt;beidson@apple.com&gt;
</span></span></pre></div>
<a id="branchessafari6001branchSourceWebKit2WebProcessWebPageWebInspectorcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-600.1-branch/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp (171404 => 171405)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-600.1-branch/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp        2014-07-23 05:18:09 UTC (rev 171404)
+++ branches/safari-600.1-branch/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp        2014-07-23 05:27:26 UTC (rev 171405)
</span><span class="lines">@@ -277,25 +277,17 @@
</span><span class="cx"> 
</span><span class="cx"> void WebInspector::setJavaScriptProfilingEnabled(bool enabled)
</span><span class="cx"> {
</span><del>-    m_page-&gt;corePage()-&gt;inspectorController().show();
-    if (!m_frontendClient)
-        return;
-
-    m_page-&gt;corePage()-&gt;inspectorController().setProfilerEnabled(enabled);
</del><ins>+    // No longer supported.
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebInspector::startJavaScriptProfiling()
</span><span class="cx"> {
</span><del>-    m_page-&gt;corePage()-&gt;inspectorController().show();
-    if (m_frontendClient)
-        m_frontendClient-&gt;startProfilingJavaScript();
</del><ins>+    // No longer supported.
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebInspector::stopJavaScriptProfiling()
</span><span class="cx"> {
</span><del>-    m_page-&gt;corePage()-&gt;inspectorController().show();
-    if (m_frontendClient)
-        m_frontendClient-&gt;stopProfilingJavaScript();
</del><ins>+    // No longer supported.
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebInspector::startPageProfiling()
</span></span></pre>
</div>
</div>

</body>
</html>