[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
yurys at chromium.org
yurys at chromium.org
Wed Dec 22 11:42:19 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit c603af63223f7c2ef659ff1acdad615abeb9ef1d
Author: yurys at chromium.org <yurys at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Aug 4 12:22:31 2010 +0000
2010-08-04 Yury Semikhatsky <yurys at chromium.org>
Reviewed by Pavel Feldman.
Web Inspector: serialize CPU profiles to InspectorValues instead of
using JS wrappers.
https://bugs.webkit.org/show_bug.cgi?id=43475
* Android.jscbindings.mk:
* CMakeLists.txt:
* GNUmakefile.am:
* WebCore.pro:
* WebCore.vcproj/WebCore.vcproj:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/ScriptProfile.h:
* bindings/js/ScriptProfiler.cpp:
(WebCore::ScriptProfiler::stop):
* bindings/scripts/CodeGeneratorJS.pm:
* bindings/v8/ScriptProfile.cpp:
(WebCore::buildInspectorObjectFor):
(WebCore::ScriptProfile::buildInspectorObjectForHead):
* bindings/v8/ScriptProfile.h:
* inspector/Inspector.idl:
* inspector/InspectorController.cpp:
(WebCore::InspectorController::addProfile):
(WebCore::InspectorController::addProfileFinishedMessageToConsole):
(WebCore::InspectorController::getProfileHeaders):
(WebCore::InspectorController::getProfile):
(WebCore::InspectorController::createProfileHeader):
* inspector/InspectorController.h:
* inspector/InspectorFrontend.cpp:
* inspector/InspectorFrontend.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64642 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/Android.jscbindings.mk b/WebCore/Android.jscbindings.mk
index 2ee4276..01b5a16 100644
--- a/WebCore/Android.jscbindings.mk
+++ b/WebCore/Android.jscbindings.mk
@@ -170,6 +170,7 @@ LOCAL_SRC_FILES += \
bindings/js/ScriptEventListener.cpp \
bindings/js/ScriptFunctionCall.cpp \
bindings/js/ScriptObject.cpp \
+ bindings/js/ScriptProfile.cpp \
bindings/js/ScriptState.cpp \
bindings/js/ScriptValue.cpp \
bindings/js/SerializedScriptValue.cpp \
diff --git a/WebCore/CMakeLists.txt b/WebCore/CMakeLists.txt
index dc2ad17..f611594 100644
--- a/WebCore/CMakeLists.txt
+++ b/WebCore/CMakeLists.txt
@@ -684,6 +684,7 @@ SET(WebCore_SOURCES
bindings/js/ScriptFunctionCall.cpp
bindings/js/ScriptGCEvent.cpp
bindings/js/ScriptObject.cpp
+ bindings/js/ScriptProfile.cpp
bindings/js/ScriptProfiler.cpp
bindings/js/ScriptState.cpp
bindings/js/ScriptValue.cpp
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index c0c3ec5..72d08e2 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,36 @@
+2010-08-04 Yury Semikhatsky <yurys at chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector: serialize CPU profiles to InspectorValues instead of
+ using JS wrappers.
+ https://bugs.webkit.org/show_bug.cgi?id=43475
+
+ * Android.jscbindings.mk:
+ * CMakeLists.txt:
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/ScriptProfile.h:
+ * bindings/js/ScriptProfiler.cpp:
+ (WebCore::ScriptProfiler::stop):
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * bindings/v8/ScriptProfile.cpp:
+ (WebCore::buildInspectorObjectFor):
+ (WebCore::ScriptProfile::buildInspectorObjectForHead):
+ * bindings/v8/ScriptProfile.h:
+ * inspector/Inspector.idl:
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::addProfile):
+ (WebCore::InspectorController::addProfileFinishedMessageToConsole):
+ (WebCore::InspectorController::getProfileHeaders):
+ (WebCore::InspectorController::getProfile):
+ (WebCore::InspectorController::createProfileHeader):
+ * inspector/InspectorController.h:
+ * inspector/InspectorFrontend.cpp:
+ * inspector/InspectorFrontend.h:
+
2010-08-04 Andreas Kling <andreas.kling at nokia.com>
Reviewed by Simon Hausmann.
diff --git a/WebCore/GNUmakefile.am b/WebCore/GNUmakefile.am
index 919a354..3f3c0db 100644
--- a/WebCore/GNUmakefile.am
+++ b/WebCore/GNUmakefile.am
@@ -776,6 +776,7 @@ webcore_sources += \
WebCore/bindings/js/ScriptInstance.h \
WebCore/bindings/js/ScriptObject.cpp \
WebCore/bindings/js/ScriptObject.h \
+ WebCore/bindings/js/ScriptProfile.cpp \
WebCore/bindings/js/ScriptProfile.h \
WebCore/bindings/js/ScriptProfileNode.h \
WebCore/bindings/js/ScriptProfiler.cpp \
diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
index ed5e2da..88242f9 100644
--- a/WebCore/WebCore.pro
+++ b/WebCore/WebCore.pro
@@ -378,6 +378,7 @@ SOURCES += \
bindings/js/ScriptFunctionCall.cpp \
bindings/js/ScriptGCEvent.cpp \
bindings/js/ScriptObject.cpp \
+ bindings/js/ScriptProfile.cpp \
bindings/js/ScriptState.cpp \
bindings/js/ScriptValue.cpp \
bindings/js/ScheduledAction.cpp \
diff --git a/WebCore/WebCore.vcproj/WebCore.vcproj b/WebCore/WebCore.vcproj/WebCore.vcproj
index da2d43d..1685261 100644
--- a/WebCore/WebCore.vcproj/WebCore.vcproj
+++ b/WebCore/WebCore.vcproj/WebCore.vcproj
@@ -48248,6 +48248,10 @@
>
</File>
<File
+ RelativePath="..\bindings\js\ScriptProfile.cpp"
+ >
+ </File>
+ <File
RelativePath="..\bindings\js\ScriptSourceCode.h"
>
</File>
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index e0804eb..723140c 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -5187,6 +5187,7 @@
ED501DC60B249F2900AE18D9 /* EditorMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED501DC50B249F2900AE18D9 /* EditorMac.mm */; };
EDE3A5000C7A430600956A37 /* ColorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = EDE3A4FF0C7A430600956A37 /* ColorMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
EDEC98030AED7E170059137F /* WebCorePrefix.h in Headers */ = {isa = PBXBuildFile; fileRef = EDEC98020AED7E170059137F /* WebCorePrefix.h */; };
+ F33F0282120947F200E5743A /* ScriptProfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F33F0281120947F200E5743A /* ScriptProfile.cpp */; };
F344C7141125B82C00F26EEE /* InspectorFrontendClient.h in Headers */ = {isa = PBXBuildFile; fileRef = F344C7121125B82C00F26EEE /* InspectorFrontendClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
F344C75311294D9D00F26EEE /* InspectorFrontendClientLocal.h in Headers */ = {isa = PBXBuildFile; fileRef = F344C75211294D9D00F26EEE /* InspectorFrontendClientLocal.h */; settings = {ATTRIBUTES = (Private, ); }; };
F344C75811294FF600F26EEE /* InspectorFrontendClientLocal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F344C75711294FF600F26EEE /* InspectorFrontendClientLocal.cpp */; };
@@ -10920,6 +10921,7 @@
ED501DC50B249F2900AE18D9 /* EditorMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = EditorMac.mm; path = mac/EditorMac.mm; sourceTree = "<group>"; };
EDE3A4FF0C7A430600956A37 /* ColorMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColorMac.h; sourceTree = "<group>"; };
EDEC98020AED7E170059137F /* WebCorePrefix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebCorePrefix.h; sourceTree = "<group>"; tabWidth = 4; usesTabs = 0; };
+ F33F0281120947F200E5743A /* ScriptProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptProfile.cpp; sourceTree = "<group>"; };
F344C7121125B82C00F26EEE /* InspectorFrontendClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorFrontendClient.h; sourceTree = "<group>"; };
F344C75211294D9D00F26EEE /* InspectorFrontendClientLocal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorFrontendClientLocal.h; sourceTree = "<group>"; };
F344C75711294FF600F26EEE /* InspectorFrontendClientLocal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorFrontendClientLocal.cpp; sourceTree = "<group>"; };
@@ -15822,6 +15824,7 @@
934CC1160EDCAC7300A658F2 /* ScriptInstance.h */,
41F066E30F64BCF600A07EAC /* ScriptObject.cpp */,
41F066E20F64BCF600A07EAC /* ScriptObject.h */,
+ F33F0281120947F200E5743A /* ScriptProfile.cpp */,
9F72304C11184B4100AD0126 /* ScriptProfile.h */,
9FA37EE31172FC8000C4CD55 /* ScriptProfileNode.h */,
9F72304D11184B4100AD0126 /* ScriptProfiler.cpp */,
@@ -21917,6 +21920,7 @@
41002CCE0F66EDEF009E660D /* ScriptFunctionCall.cpp in Sources */,
4FD8D0F2119C718B002FA825 /* ScriptGCEvent.cpp in Sources */,
41F066E50F64BCF600A07EAC /* ScriptObject.cpp in Sources */,
+ F33F0282120947F200E5743A /* ScriptProfile.cpp in Sources */,
9F72305011184B4100AD0126 /* ScriptProfiler.cpp in Sources */,
4127D5370F8AAB1D00E424F5 /* ScriptState.cpp in Sources */,
934CC0E10ED39D6F00A658F2 /* ScriptValue.cpp in Sources */,
diff --git a/WebCore/bindings/js/ScriptProfile.cpp b/WebCore/bindings/js/ScriptProfile.cpp
new file mode 100644
index 0000000..1fbd040
--- /dev/null
+++ b/WebCore/bindings/js/ScriptProfile.cpp
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "ScriptProfile.h"
+
+#if ENABLE(JAVASCRIPT_DEBUGGER)
+#include "InspectorValues.h"
+#include "JSDOMBinding.h"
+#include <profiler/Profile.h>
+#include <profiler/ProfileNode.h>
+
+namespace WebCore {
+
+PassRefPtr<ScriptProfile> ScriptProfile::create(PassRefPtr<JSC::Profile> profile)
+{
+ if (!profile)
+ return 0;
+ return adoptRef(new ScriptProfile(profile));
+}
+
+ScriptProfile::ScriptProfile(PassRefPtr<JSC::Profile> profile)
+ : m_profile(profile)
+{
+}
+
+ScriptProfile::~ScriptProfile()
+{
+}
+
+String ScriptProfile::title() const
+{
+ return ustringToString(m_profile->title());
+}
+
+unsigned int ScriptProfile::uid() const
+{
+ return m_profile->uid();
+}
+
+ScriptProfileNode* ScriptProfile::head() const
+{
+ return m_profile->head();
+}
+
+static PassRefPtr<InspectorObject> buildInspectorObjectFor(const JSC::ProfileNode* node)
+{
+ RefPtr<InspectorObject> result = InspectorObject::create();
+
+ result->setString("functionName", ustringToString(node->functionName()));
+ result->setString("url", ustringToString(node->url()));
+ result->setNumber("lineNumber", node->lineNumber());
+ result->setNumber("totalTime", node->totalTime());
+ result->setNumber("selfTime", node->selfTime());
+ result->setNumber("numberOfCalls", node->numberOfCalls());
+ result->setBool("visible", node->visible());
+ result->setNumber("callUID", node->callIdentifier().hash());
+
+ RefPtr<InspectorArray> childrenArray = InspectorArray::create();
+ typedef Vector<RefPtr<JSC::ProfileNode> > ProfileNodesList;
+ const ProfileNodesList& children = node->children();
+ ProfileNodesList::const_iterator end = children.end();
+ for (ProfileNodesList::const_iterator iter = children.begin(); iter != end; ++iter)
+ childrenArray->push(buildInspectorObjectFor(iter->get()));
+ result->set("children", childrenArray);
+
+ return result;
+}
+
+PassRefPtr<InspectorObject> ScriptProfile::buildInspectorObjectForHead() const
+{
+ return buildInspectorObjectFor(m_profile->head());
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(JAVASCRIPT_DEBUGGER)
diff --git a/WebCore/bindings/js/ScriptProfile.h b/WebCore/bindings/js/ScriptProfile.h
index 32095e3..8b98e49 100644
--- a/WebCore/bindings/js/ScriptProfile.h
+++ b/WebCore/bindings/js/ScriptProfile.h
@@ -28,11 +28,37 @@
#define ScriptProfile_h
#if ENABLE(JAVASCRIPT_DEBUGGER)
-#include <profiler/Profile.h>
+#include "ScriptProfileNode.h"
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
+#include <wtf/RefPtr.h>
+
+namespace JSC {
+class Profile;
+}
namespace WebCore {
-typedef JSC::Profile ScriptProfile;
+class InspectorObject;
+class String;
+
+class ScriptProfile : public RefCounted<ScriptProfile> {
+public:
+ static PassRefPtr<ScriptProfile> create(PassRefPtr<JSC::Profile> profile);
+ virtual ~ScriptProfile();
+
+ String title() const;
+ unsigned int uid() const;
+ ScriptProfileNode* head() const;
+
+ PassRefPtr<InspectorObject> buildInspectorObjectForHead() const;
+
+private:
+ ScriptProfile(PassRefPtr<JSC::Profile> profile);
+
+ RefPtr<JSC::Profile> m_profile;
+};
+
} // namespace WebCore
diff --git a/WebCore/bindings/js/ScriptProfiler.cpp b/WebCore/bindings/js/ScriptProfiler.cpp
index 5121232..f372c3c 100644
--- a/WebCore/bindings/js/ScriptProfiler.cpp
+++ b/WebCore/bindings/js/ScriptProfiler.cpp
@@ -42,7 +42,8 @@ void ScriptProfiler::start(ScriptState* state, const String& title)
PassRefPtr<ScriptProfile> ScriptProfiler::stop(ScriptState* state, const String& title)
{
- return JSC::Profiler::profiler()->stopProfiling(state, stringToUString(title));
+ RefPtr<JSC::Profile> profile = JSC::Profiler::profiler()->stopProfiling(state, stringToUString(title));
+ return ScriptProfile::create(profile);
}
} // namespace WebCore
diff --git a/WebCore/bindings/scripts/CodeGeneratorJS.pm b/WebCore/bindings/scripts/CodeGeneratorJS.pm
index 0f1878f..33820d8 100644
--- a/WebCore/bindings/scripts/CodeGeneratorJS.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorJS.pm
@@ -299,7 +299,7 @@ sub AddIncludesForSVGAnimatedType
sub IsScriptProfileType
{
my $type = shift;
- return 1 if ($type eq "ScriptProfile" or $type eq "ScriptProfileNode");
+ return 1 if ($type eq "ScriptProfileNode");
return 0;
}
diff --git a/WebCore/bindings/v8/ScriptProfile.cpp b/WebCore/bindings/v8/ScriptProfile.cpp
index 3b71d5f..32e0066 100644
--- a/WebCore/bindings/v8/ScriptProfile.cpp
+++ b/WebCore/bindings/v8/ScriptProfile.cpp
@@ -29,12 +29,13 @@
*/
#include "config.h"
-
#include "ScriptProfile.h"
+#include "InspectorValues.h"
#include "V8Binding.h"
-
#include <v8-profiler.h>
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefPtr.h>
namespace WebCore {
@@ -54,4 +55,32 @@ PassRefPtr<ScriptProfileNode> ScriptProfile::head() const
return ScriptProfileNode::create(m_profile->GetTopDownRoot());
}
+static PassRefPtr<InspectorObject> buildInspectorObjectFor(const v8::CpuProfileNode* node)
+{
+ v8::HandleScope handleScope;
+ RefPtr<InspectorObject> result = InspectorObject::create();
+ result->setString("functionName", toWebCoreString(node->GetFunctionName()));
+ result->setString("url", toWebCoreString(node->GetScriptResourceName()));
+ result->setNumber("lineNumber", node->GetLineNumber());
+ result->setNumber("totalTime", node->GetTotalTime());
+ result->setNumber("selfTime", node->GetSelfTime());
+ result->setNumber("numberOfCalls", 0);
+ result->setBool("visible", true);
+ result->setNumber("callUID", node->GetCallUid());
+
+ RefPtr<InspectorArray> children = InspectorArray::create();
+ const int childrenCount = node->GetChildrenCount();
+ for (int i = 0; i < childrenCount; i++) {
+ const v8::CpuProfileNode* child = node->GetChild(i);
+ children->push(buildInspectorObjectFor(child));
+ }
+ result->set("children", children);
+ return result;
+}
+
+PassRefPtr<InspectorObject> ScriptProfile::buildInspectorObjectForHead() const
+{
+ return buildInspectorObjectFor(m_profile->GetTopDownRoot());
+}
+
} // namespace WebCore
diff --git a/WebCore/bindings/v8/ScriptProfile.h b/WebCore/bindings/v8/ScriptProfile.h
index 2f42ad2..0182669 100644
--- a/WebCore/bindings/v8/ScriptProfile.h
+++ b/WebCore/bindings/v8/ScriptProfile.h
@@ -40,6 +40,8 @@ class CpuProfile;
namespace WebCore {
+class InspectorObject;
+
class ScriptProfile : public RefCounted<ScriptProfile> {
public:
static PassRefPtr<ScriptProfile> create(const v8::CpuProfile* profile)
@@ -52,12 +54,13 @@ public:
unsigned int uid() const;
PassRefPtr<ScriptProfileNode> head() const;
-protected:
+ PassRefPtr<InspectorObject> buildInspectorObjectForHead() const;
+
+private:
ScriptProfile(const v8::CpuProfile* profile)
: m_profile(profile)
{}
-private:
const v8::CpuProfile* m_profile;
};
diff --git a/WebCore/inspector/Inspector.idl b/WebCore/inspector/Inspector.idl
index c77d6bd..dea1cd0 100644
--- a/WebCore/inspector/Inspector.idl
+++ b/WebCore/inspector/Inspector.idl
@@ -49,6 +49,7 @@ module core {
#if defined(ENABLE_JAVASCRIPT_DEBUGGER) && ENABLE_JAVASCRIPT_DEBUGGER
[notify] void pausedScript(out Value callFrames);
[notify] void resumedScript();
+ [notify] void addProfileHeader(out Object header);
#endif
[handler=Controller] void storeLastActivePanel(in String panelName);
@@ -97,8 +98,8 @@ module core {
[handler=Controller] void startProfiling();
[handler=Controller] void stopProfiling();
- [handler=Controller] void getProfileHeaders(in long callId);
- [handler=Controller] void getProfile(in long callId, in unsigned long uid);
+ [handler=Controller] void getProfileHeaders(in long callId, out Array headers);
+ [handler=Controller] void getProfile(in long callId, in unsigned long uid, out Object profile);
[handler=Controller] void removeProfile(in unsigned long uid);
[handler=Controller] void clearProfiles();
diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp
index 1c6400c..0eacf28 100644
--- a/WebCore/inspector/InspectorController.cpp
+++ b/WebCore/inspector/InspectorController.cpp
@@ -108,14 +108,6 @@
#if ENABLE(JAVASCRIPT_DEBUGGER)
#include "ScriptDebugServer.h"
-#if USE(JSC)
-#include <runtime/JSLock.h>
-#include <runtime/UString.h>
-#include "JSScriptProfile.h"
-#else
-#include "ScriptScope.h"
-#include "V8ScriptProfile.h"
-#endif
#endif
using namespace std;
@@ -1498,11 +1490,8 @@ void InspectorController::addProfile(PassRefPtr<ScriptProfile> prpProfile, unsig
RefPtr<ScriptProfile> profile = prpProfile;
m_profiles.add(profile->uid(), profile);
- if (m_frontend) {
-#if USE(JSC)
- JSC::JSLock lock(JSC::SilenceAssertionsOnly);
-#endif
- m_frontend->addProfileHeader(createProfileHeader(*profile));
+ if (m_remoteFrontend) {
+ m_remoteFrontend->addProfileHeader(createProfileHeader(*profile));
}
addProfileFinishedMessageToConsole(profile, lineNumber, sourceURL);
@@ -1512,11 +1501,7 @@ void InspectorController::addProfileFinishedMessageToConsole(PassRefPtr<ScriptPr
{
RefPtr<ScriptProfile> profile = prpProfile;
-#if USE(JSC)
- String title = ustringToString(profile->title());
-#else
String title = profile->title();
-#endif
String message = String::format("Profile \"webkit-profile://%s/%s#%d\" finished.", CPUProfileType, encodeWithURLEscapeSequences(title).utf8().data(), profile->uid());
addMessageToConsole(JSMessageSource, LogMessageType, LogMessageLevel, message, lineNumber, sourceURL);
}
@@ -1548,14 +1533,13 @@ void InspectorController::clearProfiles()
void InspectorController::getProfileHeaders(long callId)
{
- if (!m_frontend)
+ if (!m_remoteFrontend)
return;
- ScriptArray result = m_frontend->newScriptArray();
+ RefPtr<InspectorArray> result = InspectorArray::create();
ProfilesMap::iterator profilesEnd = m_profiles.end();
- int i = 0;
for (ProfilesMap::iterator it = m_profiles.begin(); it != profilesEnd; ++it)
- result.set(i++, createProfileHeader(*it->second));
- m_frontend->didGetProfileHeaders(callId, result);
+ result->push(createProfileHeader(*it->second));
+ m_remoteFrontend->didGetProfileHeaders(callId, result);
}
void InspectorController::getProfile(long callId, unsigned uid)
@@ -1564,27 +1548,18 @@ void InspectorController::getProfile(long callId, unsigned uid)
return;
ProfilesMap::iterator it = m_profiles.find(uid);
if (it != m_profiles.end()) {
-#if USE(JSC)
- m_frontend->didGetProfile(callId, toJS(m_frontend->scriptState(), it->second.get()));
-#else
- ScriptScope scope(m_frontend->scriptState());
- m_frontend->didGetProfile(callId, toV8(it->second.get()));
-#endif
+ RefPtr<InspectorObject> profileObject = createProfileHeader(*it->second);
+ profileObject->set("head", it->second->buildInspectorObjectForHead());
+ m_remoteFrontend->didGetProfile(callId, profileObject);
}
}
-ScriptObject InspectorController::createProfileHeader(const ScriptProfile& profile)
+PassRefPtr<InspectorObject> InspectorController::createProfileHeader(const ScriptProfile& profile)
{
-#if USE(JSC)
- String title = ustringToString(profile.title());
-#else
- String title = profile.title();
-#endif
-
- ScriptObject header = m_frontend->newScriptObject();
- header.set("title", title);
- header.set("uid", profile.uid());
- header.set("typeId", String(CPUProfileType));
+ RefPtr<InspectorObject> header = InspectorObject::create();
+ header->setString("title", profile.title());
+ header->setNumber("uid", profile.uid());
+ header->setString("typeId", String(CPUProfileType));
return header;
}
diff --git a/WebCore/inspector/InspectorController.h b/WebCore/inspector/InspectorController.h
index 890af31..eae5d16 100644
--- a/WebCore/inspector/InspectorController.h
+++ b/WebCore/inspector/InspectorController.h
@@ -318,7 +318,7 @@ private:
void enableDebuggerFromFrontend(bool always);
void getProfileHeaders(long callId);
void getProfile(long callId, unsigned uid);
- ScriptObject createProfileHeader(const ScriptProfile& profile);
+ PassRefPtr<InspectorObject> createProfileHeader(const ScriptProfile& profile);
#endif
#if ENABLE(DATABASE)
void selectDatabase(Database* database);
diff --git a/WebCore/inspector/InspectorFrontend.cpp b/WebCore/inspector/InspectorFrontend.cpp
index 296f008..68ebe7d 100644
--- a/WebCore/inspector/InspectorFrontend.cpp
+++ b/WebCore/inspector/InspectorFrontend.cpp
@@ -310,14 +310,6 @@ void InspectorFrontend::profilerWasDisabled()
callSimpleFunction("profilerWasDisabled");
}
-void InspectorFrontend::addProfileHeader(const ScriptValue& profile)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("addProfileHeader");
- function.appendArgument(profile);
- function.call();
-}
-
void InspectorFrontend::setRecordingProfile(bool isProfiling)
{
ScriptFunctionCall function(m_webInspector, "dispatch");
@@ -326,15 +318,6 @@ void InspectorFrontend::setRecordingProfile(bool isProfiling)
function.call();
}
-void InspectorFrontend::didGetProfileHeaders(long callId, const ScriptArray& headers)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didGetProfileHeaders");
- function.appendArgument(callId);
- function.appendArgument(headers);
- function.call();
-}
-
void InspectorFrontend::didGetProfile(long callId, const ScriptValue& profile)
{
ScriptFunctionCall function(m_webInspector, "dispatch");
diff --git a/WebCore/inspector/InspectorFrontend.h b/WebCore/inspector/InspectorFrontend.h
index 3846bd4..2ab5a1e 100644
--- a/WebCore/inspector/InspectorFrontend.h
+++ b/WebCore/inspector/InspectorFrontend.h
@@ -102,9 +102,7 @@ namespace WebCore {
void profilerWasEnabled();
void profilerWasDisabled();
- void addProfileHeader(const ScriptValue& profile);
void setRecordingProfile(bool isProfiling);
- void didGetProfileHeaders(long callId, const ScriptArray& headers);
void didGetProfile(long callId, const ScriptValue& profile);
#endif
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list