[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
loislo at chromium.org
loislo at chromium.org
Wed Dec 22 11:17:00 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 52486558854a03d87a6292b1d1bc050243e0e37c
Author: loislo at chromium.org <loislo at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Jul 16 17:16:56 2010 +0000
2010-07-16 Ilya Tikhonovsky <loislo at chromium.org>
Reviewed by Yury Semikhatsky.
WebInspector: The current implementation of generator is not ready
for generation Backend part of Inspector interface. The full patch
with Backend is quite big and I've split it.
https://bugs.webkit.org/show_bug.cgi?id=42462
* inspector/CodeGeneratorInspector.pm:
* inspector/Inspector.idl:
* inspector/InspectorValues.cpp:
(WebCore::InspectorArray::get):
* inspector/InspectorValues.h:
(WebCore::InspectorArray::length):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63561 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 4558db6..688ddec 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,19 @@
+2010-07-16 Ilya Tikhonovsky <loislo at chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ WebInspector: The current implementation of generator is not ready
+ for generation Backend part of Inspector interface. The full patch
+ with Backend is quite big and I've split it.
+ https://bugs.webkit.org/show_bug.cgi?id=42462
+
+ * inspector/CodeGeneratorInspector.pm:
+ * inspector/Inspector.idl:
+ * inspector/InspectorValues.cpp:
+ (WebCore::InspectorArray::get):
+ * inspector/InspectorValues.h:
+ (WebCore::InspectorArray::length):
+
2010-07-15 Rob Buis <rwlbuis at gmail.com>
Reviewed by Darin Adler.
diff --git a/WebCore/inspector/CodeGeneratorInspector.pm b/WebCore/inspector/CodeGeneratorInspector.pm
index b20eda1..4dacd90 100644
--- a/WebCore/inspector/CodeGeneratorInspector.pm
+++ b/WebCore/inspector/CodeGeneratorInspector.pm
@@ -6,6 +6,7 @@ package CodeGeneratorInspector;
use strict;
+use Class::Struct;
use File::stat;
my %typeTransform;
@@ -21,56 +22,56 @@ $typeTransform{"Object"} = {
"retVal" => "PassRefPtr<InspectorObject>",
"forward" => "InspectorObject",
"header" => "InspectorValues.h",
- "push" => "push"
+ "accessorSuffix" => ""
};
$typeTransform{"Array"} = {
"param" => "PassRefPtr<InspectorArray>",
"retVal" => "PassRefPtr<InspectorArray>",
"forward" => "InspectorArray",
"header" => "InspectorValues.h",
- "push" => "push"
+ "accessorSuffix" => ""
};
$typeTransform{"Value"} = {
"param" => "PassRefPtr<InspectorValue>",
"retVal" => "PassRefPtr<InspectorValue>",
"forward" => "InspectorValue",
"header" => "InspectorValues.h",
- "push" => "push"
+ "accessorSuffix" => ""
};
$typeTransform{"String"} = {
"param" => "const String&",
"retVal" => "String",
"forward" => "String",
"header" => "PlatformString.h",
- "push" => "pushString"
+ "accessorSuffix" => "String"
};
$typeTransform{"long"} = {
"param" => "long",
"retVal" => "long",
"forward" => "",
"header" => "",
- "push" => "pushNumber"
+ "accessorSuffix" => "Number"
};
$typeTransform{"int"} = {
"param" => "int",
"retVal" => "int",
"forward" => "",
"header" => "",
- "push" => "pushNumber"
+ "accessorSuffix" => "Number",
};
$typeTransform{"unsigned long"} = {
"param" => "unsigned long",
"retVal" => "unsigned long",
"forward" => "",
"header" => "",
- "push" => "pushNumber"
+ "accessorSuffix" => "Number"
};
$typeTransform{"boolean"} = {
"param" => "bool",
"retVal"=> "bool",
"forward" => "",
"header" => "",
- "push" => "pushBool"
+ "accessorSuffix" => "Bool"
};
$typeTransform{"void"} = {
"retVal" => "void",
@@ -92,23 +93,17 @@ my $writeDependencies;
my $verbose;
my $namespace;
-my $frontendClassName;
-my %discoveredTypes;
-my %generatedFunctions;
-
-my @frontendClassDeclaration;
-my @functionDefinitions;
-sub typeSpec
-{
- my $param = shift;
- my $retValue = shift;
+my $frontendClassName;
+my %frontendTypes;
+my %frontendMethods;
+my @frontendMethodsImpl;
+my $frontendConstructor;
+my $frontendFooter;
- my $type = $typeTransform{$param->type}->{$retValue ? "retVal" : "param"};
- $discoveredTypes{$param->type} = 1;
- $type or die "invalid type specification \"" . $param->type ."\"";
- return $type;
-}
+my $callId = new domSignature(); # it is just structure for describing parameters from IDLStructure.pm.
+$callId->type("long");
+$callId->name("callId");
# Default constructor
sub new
@@ -145,127 +140,126 @@ sub GenerateInterface
my $defines = shift;
my $className = $interface->name;
+
$frontendClassName = "Remote" . $className . "Frontend";
+ $frontendConstructor = " ${frontendClassName}(InspectorClient* inspectorClient) : m_inspectorClient(inspectorClient) { }";
+ $frontendFooter = " InspectorClient* m_inspectorClient;";
+ $frontendTypes{"String"} = 1;
+ $frontendTypes{"InspectorClient"} = 1;
+ $frontendTypes{"PassRefPtr"} = 1;
- $discoveredTypes{"String"} = 1;
- $discoveredTypes{"InspectorClient"} = 1;
- $discoveredTypes{"PassRefPtr"} = 1;
-
- push(@frontendClassDeclaration, "class $frontendClassName {");
- push(@frontendClassDeclaration, "public:");
- push(@frontendClassDeclaration, " $frontendClassName(InspectorClient* inspectorClient) : m_inspectorClient(inspectorClient) { }");
- push(@frontendClassDeclaration, "");
- push(@frontendClassDeclaration, generateFunctions($interface, $frontendClassName));
- push(@frontendClassDeclaration, "");
- push(@frontendClassDeclaration, "private:");
- push(@frontendClassDeclaration, " InspectorClient* m_inspectorClient;");
- push(@frontendClassDeclaration, "};");
+ generateFunctions($interface);
}
sub generateFunctions
{
my $interface = shift;
- my $className = shift;
- my @functionDeclarations;
foreach my $function (@{$interface->functions}) {
- my $functionName;
- my $argumentsDirectionFilter;
- my $arguments;
- my @functionBody;
- push(@functionBody, " RefPtr<InspectorArray> arguments = InspectorArray::create();");
- if ($function->signature->extendedAttributes->{"notify"}) {
- $functionName = $function->signature->name;
- $argumentsDirectionFilter = "in";
- $arguments = "";
- push(@functionBody, " arguments->pushString(\"$functionName\");");
- } else {
- my $customResponse = $function->signature->extendedAttributes->{"customResponse"};
- $functionName = $customResponse ? $customResponse : "did" . ucfirst($function->signature->name);
- $argumentsDirectionFilter = "out";
- $arguments = "long callId";
- push(@functionBody, " arguments->pushString(\"$functionName\");");
- push(@functionBody, " arguments->pushNumber(callId);");
- }
-
- foreach my $parameter (@{$function->parameters}) {
- if ($parameter->direction eq $argumentsDirectionFilter) {
- $parameter->name or die "empty argument name specified for function ${frontendClassName}::$functionName and argument type " . $parameter->type;
- $arguments = $arguments . ", " if ($arguments);
- $arguments = $arguments . typeSpec($parameter) . " " . $parameter->name;
- my $pushFunctionName = $typeTransform{$parameter->type}->{"push"};
- push(@functionBody, " arguments->$pushFunctionName(" . $parameter->name . ");");
- }
- }
- push(@functionBody, " m_inspectorClient->sendMessageToFrontend(arguments->toJSONString());");
-
- my $signature = " " . typeSpec($function->signature, 1) . " $functionName($arguments);";
- if (!$generatedFunctions{${signature}}) {
- $generatedFunctions{${signature}} = 1;
- push(@functionDeclarations, $signature);
-
- my @function;
- push(@function, typeSpec($function->signature, 1) . " " . $className . "::" . $functionName . "(" . $arguments . ")");
- push(@function, "{");
- push(@function, @functionBody);
- push(@function, "}");
- push(@function, "");
- push(@functionDefinitions, @function);
- }
+ generateFrontendFunction($function);
}
- return @functionDeclarations;
}
-sub generateHeader
+sub generateFrontendFunction
{
- my @headerContent = split("\r", $licenseTemplate);
- push(@headerContent, "#ifndef ${frontendClassName}_h");
- push(@headerContent, "#define ${frontendClassName}_h");
- push(@headerContent, "");
-
- my @forwardHeaders;
- foreach my $type (keys %discoveredTypes) {
- push(@forwardHeaders, "#include <" . $typeTransform{$type}->{"forwardHeader"} . ">") if !$typeTransform{$type}->{"forwardHeader"} eq "";
+ my $function = shift;
+
+ my $functionName;
+ my $notify = $function->signature->extendedAttributes->{"notify"};
+ if ($notify) {
+ $functionName = $function->signature->name;
+ } else {
+ my $customResponse = $function->signature->extendedAttributes->{"customResponse"};
+ $functionName = $customResponse ? $customResponse : "did" . ucfirst($function->signature->name);
}
- push(@headerContent, sort @forwardHeaders);
- push(@headerContent, "");
- push(@headerContent, "namespace $namespace {");
- push(@headerContent, "");
-
- my @forwardDeclarations;
- foreach my $type (keys %discoveredTypes) {
- push(@forwardDeclarations, "class " . $typeTransform{$type}->{"forward"} . ";") if !$typeTransform{$type}->{"forward"} eq "";
+
+ my @argsFiltered = grep($_->direction eq "out", @{$function->parameters}); # just keep only out parameters for frontend interface.
+ unshift(@argsFiltered, $callId) if !$notify; # Add callId as the first argument for all frontend did* methods.
+ map($frontendTypes{$_->type} = 1, @argsFiltered); # register required types.
+ my $arguments = join(", ", map($typeTransform{$_->type}->{"param"} . " " . $_->name, @argsFiltered)); # prepare arguments for function signature.
+ my @pushArguments = map(" arguments->push" . $typeTransform{$_->type}->{"accessorSuffix"} . "(" . $_->name . ");", @argsFiltered);
+
+ my $signature = " void ${functionName}(${arguments});";
+ if (!$frontendMethods{${signature}}) {
+ $frontendMethods{${signature}} = 1;
+
+ my @function;
+ push(@function, "void ${frontendClassName}::${functionName}(${arguments})");
+ push(@function, "{");
+ push(@function, " RefPtr<InspectorArray> arguments = InspectorArray::create();");
+ push(@function, " arguments->pushString(\"$functionName\");");
+ push(@function, @pushArguments);
+ push(@function, " m_inspectorClient->sendMessageToFrontend(arguments->toJSONString());");
+ push(@function, "}");
+ push(@function, "");
+ push(@frontendMethodsImpl, @function);
}
- push(@headerContent, sort @forwardDeclarations);
-
- push(@headerContent, "");
- push(@headerContent, @frontendClassDeclaration);
- push(@headerContent, "");
- push(@headerContent, "} // namespace $namespace");
- push(@headerContent, "");
- push(@headerContent, "#endif // !defined(${frontendClassName}_h)");
- push(@headerContent, "");
- return @headerContent;
+}
+
+sub generateHeader
+{
+ my $className = shift;
+ my $types = shift;
+ my $constructor = shift;
+ my $methods = shift;
+ my $footer = shift;
+
+ my $forwardHeaders = join("\n", sort(map("#include <" . $typeTransform{$_}->{"forwardHeader"} . ">", grep($typeTransform{$_}->{"forwardHeader"}, keys %{$types}))));
+ my $forwardDeclarations = join("\n", sort(map("class " . $typeTransform{$_}->{"forward"} . ";", grep($typeTransform{$_}->{"forward"}, keys %{$types}))));
+ my $methodsDeclarations = join("\n", keys %{$methods});
+
+ my $headerBody = << "EOF";
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+#ifndef ${className}_h
+#define ${className}_h
+
+${forwardHeaders}
+
+namespace $namespace {
+
+$forwardDeclarations
+
+class $className {
+public:
+$constructor
+
+$methodsDeclarations
+
+private:
+$footer
+};
+
+} // namespace $namespace
+#endif // !defined(${className}_h)
+
+EOF
+ return $headerBody;
}
sub generateSource
{
+ my $className = shift;
+ my $types = shift;
+ my $methods = shift;
+
my @sourceContent = split("\r", $licenseTemplate);
push(@sourceContent, "\n#include \"config.h\"");
- push(@sourceContent, "#include \"$frontendClassName.h\"");
+ push(@sourceContent, "#include \"$className.h\"");
push(@sourceContent, "");
push(@sourceContent, "#if ENABLE(INSPECTOR)");
push(@sourceContent, "");
my %headers;
- foreach my $type (keys %discoveredTypes) {
+ foreach my $type (keys %{$types}) {
$headers{"#include \"" . $typeTransform{$type}->{"header"} . "\""} = 1 if !$typeTransform{$type}->{"header"} eq "";
}
push(@sourceContent, sort keys %headers);
push(@sourceContent, "");
push(@sourceContent, "namespace $namespace {");
push(@sourceContent, "");
- push(@sourceContent, @functionDefinitions);
+ push(@sourceContent, @{$methods});
push(@sourceContent, "");
push(@sourceContent, "} // namespace $namespace");
push(@sourceContent, "");
@@ -279,15 +273,15 @@ sub finish
my $object = shift;
open(my $SOURCE, ">$outputDir/$frontendClassName.cpp") || die "Couldn't open file $outputDir/$frontendClassName.cpp";
- open(my $HEADER, ">$outputDir/$frontendClassName.h") || die "Couldn't open file $outputDir/$frontendClassName.h";
-
- print $SOURCE join("\n", generateSource());
+ print $SOURCE join("\n", generateSource($frontendClassName, \%frontendTypes, \@frontendMethodsImpl));
close($SOURCE);
undef($SOURCE);
- print $HEADER join("\n", generateHeader());
+ open(my $HEADER, ">$outputDir/$frontendClassName.h") || die "Couldn't open file $outputDir/$frontendClassName.h";
+ print $HEADER generateHeader($frontendClassName, \%frontendTypes, $frontendConstructor, \%frontendMethods, $frontendFooter);
close($HEADER);
undef($HEADER);
+
}
1;
diff --git a/WebCore/inspector/Inspector.idl b/WebCore/inspector/Inspector.idl
index 476d040..3c96db1 100644
--- a/WebCore/inspector/Inspector.idl
+++ b/WebCore/inspector/Inspector.idl
@@ -32,15 +32,15 @@
module core {
interface [Conditional=INSPECTOR] Inspector {
- [notify] void addRecordToTimeline(in Object record);
- [notify] void addNodesToSearchResult(in Array nodeIds);
- [notify] void attributesUpdated(in long id, in Array attributes);
- [notify] void childNodeCountUpdated(in long id, in int newValue);
- [notify] void childNodeInserted(in long parentId, in long prevId, in Object node);
- [notify] void childNodeRemoved(in long parentId, in long id);
- [notify] void setChildNodes(in long parentId, in Array nodes);
- [notify] void setDetachedRoot(in Object root);
- [notify] void setDocument(in Value root);
+ [notify] void addRecordToTimeline(out Object record);
+ [notify] void addNodesToSearchResult(out Array nodeIds);
+ [notify] void attributesUpdated(out long id, out Array attributes);
+ [notify] void childNodeCountUpdated(out long id, out int newValue);
+ [notify] void childNodeInserted(out long parentId, out long prevId, out Object node);
+ [notify] void childNodeRemoved(out long parentId, out long id);
+ [notify] void setChildNodes(out long parentId, out Array nodes);
+ [notify] void setDetachedRoot(out Object root);
+ [notify] void setDocument(out Value root);
void storeLastActivePanel(in String panelName);
@@ -55,7 +55,7 @@ module core {
void enableResourceTracking(in boolean always);
void disableResourceTracking(in boolean always);
- void getResourceContent(in unsigned long identifier);
+ void getResourceContent(in long callId, in unsigned long identifier);
void reloadPage();
void startTimelineProfiler();
@@ -65,7 +65,7 @@ module core {
void enableDebugger(in boolean always);
void disableDebugger(in boolean always);
- void setBreakpoint(in String sourceID, in unsigned long lineNumber, in boolean enabled, in String condition);
+ void setBreakpoint(in long callId, in String sourceID, in unsigned long lineNumber, in boolean enabled, in String condition);
void removeBreakpoint(in String sourceID, in unsigned long lineNumber);
void activateBreakpoints();
void deactivateBreakpoints();
@@ -79,8 +79,8 @@ module core {
void setPauseOnExceptionsState(in long pauseOnExceptionsState);
- void editScriptSource(in String sourceID, in String newContent);
- void getScriptSource(in String sourceID);
+ void editScriptSource(in long callId, in String sourceID, in String newContent);
+ void getScriptSource(in long callId, in String sourceID);
void enableProfiler(in boolean always);
void disableProfiler(in boolean always);
@@ -88,8 +88,8 @@ module core {
void startProfiling();
void stopProfiling();
- void getProfileHeaders();
- void getProfile(in unsigned long uid);
+ void getProfileHeaders(in long callId);
+ void getProfile(in long callId, in unsigned long uid);
void removeProfile(in unsigned long uid);
void clearProfiles();
@@ -97,62 +97,62 @@ module core {
void takeHeapSnapshot();
#endif
void setInjectedScriptSource(in String scriptSource);
- void dispatchOnInjectedScript(in long injectedScriptId, in String methodName, in String arguments, in boolean async);
+ void dispatchOnInjectedScript(in long callId, in long injectedScriptId, in String methodName, in String arguments, in boolean async);
void addScriptToEvaluateOnLoad(in String scriptSource);
void removeAllScriptsToEvaluateOnLoad();
- void getChildNodes(in long nodeId);
- [customResponse=didApplyDomChange] void setAttribute(in long elementId, in String name, in String value, out boolean success);
- [customResponse=didApplyDomChange] void removeAttribute(in long elementId, in String name, out boolean success);
- void setTextNodeValue(in long nodeId, in String value);
- void getEventListenersForNode(in long nodeId, out long nodeId, out Array listenersArray);
+ void getChildNodes(in long callId, in long nodeId);
+ [customResponse=didApplyDomChange] void setAttribute(in long callId, in long elementId, in String name, in String value, out boolean success);
+ [customResponse=didApplyDomChange] void removeAttribute(in long callId, in long elementId, in String name, out boolean success);
+ void setTextNodeValue(in long callId, in long nodeId, in String value);
+ void getEventListenersForNode(in long callId, in long nodeId, out long nodeId, out Array listenersArray);
void copyNode(in long nodeId);
- void removeNode(in long nodeId, out long nodeId);
- void changeTagName(in long nodeId, in String newTagName, out long nodeId);
- void getOuterHTML(in long nodeId, out String outerHTML);
- void setOuterHTML(in long nodeId, in String outerHTML, out long nodeId);
+ void removeNode(in long callId, in long nodeId, out long nodeId);
+ void changeTagName(in long callId, in long nodeId, in String newTagName, out long nodeId);
+ void getOuterHTML(in long callId, in long nodeId, out String outerHTML);
+ void setOuterHTML(in long callId, in long nodeId, in String outerHTML, out long nodeId);
void addInspectedNode(in long nodeId);
void performSearch(in String query, in boolean runSynchronously);
void searchCanceled();
- void pushNodeByPathToFrontend(in String path, out long nodeId);
+ void pushNodeByPathToFrontend(in long callId, in String path, out long nodeId);
void clearConsoleMessages();
void highlightDOMNode(in long nodeId);
void hideDOMNodeHighlight();
- void getStyles(in long nodeId, in boolean authOnly, out Value styles);
- void getAllStyles(out Array styles);
- void getInlineStyle(in long nodeId, out Value style);
- void getComputedStyle(in long nodeId, out Value style);
- void getStyleSheet(in long styleSheetId, out Value styleSheet);
- void getRuleRangesForStyleSheetId(in long styleSheetId);
- void applyStyleText(in long styleId, in String styleText, in String propertyName, out boolean success, out Value style, out Array changedProperties);
- void setStyleText(in long styleId, in String styleText, out boolean success);
- void setStyleProperty(in long styleId, in String name, in String value, out boolean success);
- void toggleStyleEnabled(in long styleId, in String propertyName, in boolean disabled, out Value style);
- void setRuleSelector(in long ruleId, in String selector, in long selectedNodeId, out Value rule, out boolean selectorAffectsNode);
- void addRule(in String selector, in long selectedNodeId, out Value rule, out boolean selectorAffectsNode);
-
- void getCookies();
+ void getStyles(in long callId, in long nodeId, in boolean authOnly, out Value styles);
+ void getAllStyles(in long callId, out Array styles);
+ void getInlineStyle(in long callId, in long nodeId, out Value style);
+ void getComputedStyle(in long callId, in long nodeId, out Value style);
+ void getStyleSheet(in long callId, in long styleSheetId, out Value styleSheet);
+ void getRuleRangesForStyleSheetId(in long callId, in long styleSheetId);
+ void applyStyleText(in long callId, in long styleId, in String styleText, in String propertyName, out boolean success, out Value style, out Array changedProperties);
+ void setStyleText(in long callId, in long styleId, in String styleText, out boolean success);
+ void setStyleProperty(in long callId, in long styleId, in String name, in String value, out boolean success);
+ void toggleStyleEnabled(in long callId, in long styleId, in String propertyName, in boolean disabled, out Value style);
+ void setRuleSelector(in long callId, in long ruleId, in String selector, in long selectedNodeId, out Value rule, out boolean selectorAffectsNode);
+ void addRule(in long callId, in String selector, in long selectedNodeId, out Value rule, out boolean selectorAffectsNode);
+
+ void getCookies(in long callId);
void deleteCookie(in String cookieName, in String domain);
#if defined(ENABLE_OFFLINE_WEB_APPLICATIONS) && ENABLE_OFFLINE_WEB_APPLICATIONS
- void getApplicationCaches();
+ void getApplicationCaches(in long callId);
#endif
void releaseWrapperObjectGroup(in long injectedScriptId, in String objectGroup);
- void didEvaluateForTestInFrontend(in String jsonResult);
+ void didEvaluateForTestInFrontend(in long callId, in String jsonResult);
#if defined(ENABLE_DATABASE) && ENABLE_DATABASE
- void getDatabaseTableNames(in long databaseId);
+ void getDatabaseTableNames(in long callId, in long databaseId);
#endif
#if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
- void getDOMStorageEntries(in long storageId);
- void setDOMStorageItem(in long storageId, in String key, in String value);
- void removeDOMStorageItem(in long storageId, in String key);
+ void getDOMStorageEntries(in long callId, in long storageId);
+ void setDOMStorageItem(in long callId, in long storageId, in String key, in String value);
+ void removeDOMStorageItem(in long callId, in long storageId, in String key);
#endif
};
}
diff --git a/WebCore/inspector/InspectorValues.cpp b/WebCore/inspector/InspectorValues.cpp
index f95116c..fd42c65 100644
--- a/WebCore/inspector/InspectorValues.cpp
+++ b/WebCore/inspector/InspectorValues.cpp
@@ -650,6 +650,12 @@ void InspectorArray::writeJSON(Vector<UChar>* output) const
output->append(']');
}
+PassRefPtr<InspectorValue> InspectorArray::get(size_t index)
+{
+ ASSERT(index < m_data.size());
+ return m_data[index];
+}
+
} // namespace WebCore
#endif // ENABLE(INSPECTOR)
diff --git a/WebCore/inspector/InspectorValues.h b/WebCore/inspector/InspectorValues.h
index 30ba95a..a0c0c2d 100644
--- a/WebCore/inspector/InspectorValues.h
+++ b/WebCore/inspector/InspectorValues.h
@@ -198,7 +198,9 @@ public:
void pushNumber(double);
void pushString(const String&);
void push(PassRefPtr<InspectorValue>);
- unsigned length() { return m_data.size(); }
+ unsigned length() const { return m_data.size(); }
+
+ PassRefPtr<InspectorValue> get(size_t index);
virtual void writeJSON(Vector<UChar>* output) const;
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list