WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
84863
REGRESSION:Bindings sequence<T> in Console.idl, Internals.idl and ScriptProfileNode.idl should be T[]
https://bugs.webkit.org/show_bug.cgi?id=84863
Summary
REGRESSION:Bindings sequence<T> in Console.idl, Internals.idl and ScriptProfi...
Vineet Chaudhary (vineetc)
Reported
2012-04-25 07:48:21 PDT
As per discussion on bug
Bug 80696
and with reference to
http://www.w3.org/TR/WebIDL/#idl-sequence
"Sequences must not be used as the type of an attribute, constant or exception field." This caused REGRESSION in files Console.idl, Internals.idl and ScriptProfileNode.idl. We should change these bindings as From: page/Console.idl: readonly attribute sequence<ScriptProfile> profiles; testing/Internals.idl: attribute sequence<String> userPreferredLanguages; inspector/ScriptProfileNode.idl: readonly attribute sequence<ScriptProfileNode> children; To: page/Console.idl: readonly attribute ScriptProfile[] profiles; testing/Internals.idl: attribute String[] userPreferredLanguages; inspector/ScriptProfileNode.idl: readonly attribute ScriptProfileNode[] children;
Attachments
wip_patch
(21.44 KB, patch)
2012-04-25 09:48 PDT
,
Vineet Chaudhary (vineetc)
no flags
Details
Formatted Diff
Diff
updatedPatch
(16.11 KB, patch)
2012-04-25 23:21 PDT
,
Vineet Chaudhary (vineetc)
haraken
: review-
haraken
: commit-queue-
Details
Formatted Diff
Diff
test_case_for_internals
(2.20 KB, text/html)
2012-04-26 03:57 PDT
,
Vineet Chaudhary (vineetc)
no flags
Details
Patch
(51.71 KB, patch)
2012-05-03 03:09 PDT
,
Vineet Chaudhary (vineetc)
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
Archive of layout-test-results from ec2-cr-linux-04
(6.19 MB, application/zip)
2012-05-03 22:44 PDT
,
WebKit Review Bot
no flags
Details
updatedPatch
(21.13 KB, patch)
2012-05-22 02:36 PDT
,
Vineet Chaudhary (vineetc)
no flags
Details
Formatted Diff
Diff
UpdatedPatch
(55.21 KB, patch)
2012-05-22 07:23 PDT
,
Vineet Chaudhary (vineetc)
no flags
Details
Formatted Diff
Diff
Patch
(55.60 KB, patch)
2012-06-07 02:44 PDT
,
Vineet Chaudhary (vineetc)
no flags
Details
Formatted Diff
Diff
patch
(55.78 KB, patch)
2012-06-13 01:25 PDT
,
Vineet Chaudhary (vineetc)
no flags
Details
Formatted Diff
Diff
Show Obsolete
(7)
View All
Add attachment
proposed patch, testcase, etc.
Vineet Chaudhary (vineetc)
Comment 1
2012-04-25 09:48:09 PDT
Created
attachment 138826
[details]
wip_patch In this wip_patch we are just changing representation of attributes in the IDL. From the discussion of the bug
Bug 80696
what I understood is that T[] should return shared Array and sequence<T> returns a new Array every time, I think now we should check how we achieve this.
Kentaro Hara
Comment 2
2012-04-25 10:03:34 PDT
Comment on
attachment 138826
[details]
wip_patch View in context:
https://bugs.webkit.org/attachment.cgi?id=138826&action=review
> Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2967 > + my $seqType = $codeGenerator->GetSequenceType($type);
Nit: $seqType => $sequenceType, for consistency in the following $sequenceType.
> Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3585 > + my $seqType = $codeGenerator->GetSequenceType($type);
Nit: $seqType => $sequenceType, for consistency in the following $sequenceType.
> Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3826 > + return "v8Array($value, $getIsolate)";
Thanks for passing Isolate:)
> Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1185 > - impl->setUnsignedLongSequenceAttr(toNativeArray<unsigned long>(exec, value)); > + impl->setUnsignedLongSequenceAttr(jsUnsignedLongArrayToVector(exec, value));
Is this expected? I mean, why is the generated code changed for unsignedLong[] only?
Vineet Chaudhary (vineetc)
Comment 3
2012-04-25 10:52:47 PDT
Comment on
attachment 138826
[details]
wip_patch View in context:
https://bugs.webkit.org/attachment.cgi?id=138826&action=review
>> Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2967 >> + my $seqType = $codeGenerator->GetSequenceType($type); > > Nit: $seqType => $sequenceType, for consistency in the following $sequenceType.
Oops. Will do.
>> Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1185 >> + impl->setUnsignedLongSequenceAttr(jsUnsignedLongArrayToVector(exec, value)); > > Is this expected? I mean, why is the generated code changed for unsignedLong[] only?
The reason for different code is
http://trac.webkit.org/browser/trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm?rev=115112#L2953
This was introduced in
http://trac.webkit.org/changeset/107926
. I am not sure about these changes as I could not find usage of this. But If these are resonable changes then may be we can generalized these changes for other numeric types using traits too.
> Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp:242 > + return v8Array(imp->intSequenceAttr(), info.GetIsolate());
rebaseline :)
Vineet Chaudhary (vineetc)
Comment 4
2012-04-25 10:52:51 PDT
Comment on
attachment 138826
[details]
wip_patch View in context:
https://bugs.webkit.org/attachment.cgi?id=138826&action=review
>> Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2967 >> + my $seqType = $codeGenerator->GetSequenceType($type); > > Nit: $seqType => $sequenceType, for consistency in the following $sequenceType.
Oops. Will do.
>> Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1185 >> + impl->setUnsignedLongSequenceAttr(jsUnsignedLongArrayToVector(exec, value)); > > Is this expected? I mean, why is the generated code changed for unsignedLong[] only?
The reason for different code is
http://trac.webkit.org/browser/trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm?rev=115112#L2953
This was introduced in
http://trac.webkit.org/changeset/107926
. I am not sure about these changes as I could not find usage of this. But If these are resonable changes then may be we can generalized these changes for other numeric types using traits too.
> Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp:242 > + return v8Array(imp->intSequenceAttr(), info.GetIsolate());
rebaseline :)
Kentaro Hara
Comment 5
2012-04-25 10:55:59 PDT
(In reply to
comment #4
)
> >> Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1185 > >> + impl->setUnsignedLongSequenceAttr(jsUnsignedLongArrayToVector(exec, value)); > > > > Is this expected? I mean, why is the generated code changed for unsignedLong[] only? > > The reason for different code is
http://trac.webkit.org/browser/trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm?rev=115112#L2953
> This was introduced in
http://trac.webkit.org/changeset/107926
. I am not sure about these changes as I could not find usage of this. > But If these are resonable changes then may be we can generalized these changes for other numeric types using traits too.
Makes sense. Maybe we should generalize the changes to other numeric types using traits, but anyway let's do it in another patch. Thanks for the clarification.
Vineet Chaudhary (vineetc)
Comment 6
2012-04-25 23:21:37 PDT
Created
attachment 138941
[details]
updatedPatch Updated patch. I am not very good at perl-script so just wonder if below regExp is correct For parsing T[].
> Source/WebCore/bindings/scripts/CodeGenerator.pm
> return $1 if $type =~ /^([\w\d_\s]+)\[\]/;
Kentaro Hara
Comment 7
2012-04-26 02:15:14 PDT
Comment on
attachment 138941
[details]
updatedPatch View in context:
https://bugs.webkit.org/attachment.cgi?id=138941&action=review
Looks OK in terms of supporting T[]. There are a couple of "FIXME: support T[] ..." comments and "if (xxxx[])" conditions in CodeGenerator*.pm. We might want to clean them up in a follow-up patch.
> Source/WebCore/bindings/scripts/CodeGenerator.pm:466 > + return $1 if $type =~ /^([\w\d_\s]+)\[\]/;
Looks good.
Vineet Chaudhary (vineetc)
Comment 8
2012-04-26 02:20:06 PDT
(In reply to
comment #7
)
> (From update of
attachment 138941
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=138941&action=review
> > Looks OK in terms of supporting T[]. There are a couple of "FIXME: support T[] ..." comments and "if (xxxx[])" conditions in CodeGenerator*.pm. We might want to clean them up in a follow-up patch. > > > Source/WebCore/bindings/scripts/CodeGenerator.pm:466 > > + return $1 if $type =~ /^([\w\d_\s]+)\[\]/; > > Looks good.
Thanks haraken for review. Should we consider this patch for cq?
Kentaro Hara
Comment 9
2012-04-26 02:23:49 PDT
(In reply to
comment #8
)
> Thanks haraken for review. Should we consider this patch for cq?
I think it's OK to commit it. And then let's fix the original bug
https://bugs.webkit.org/show_bug.cgi?id=84540
Any concern to commit it?
Vineet Chaudhary (vineetc)
Comment 10
2012-04-26 02:31:21 PDT
(In reply to
comment #9
)
> (In reply to
comment #8
) > > Thanks haraken for review. Should we consider this patch for cq? > > I think it's OK to commit it. And then let's fix the original bug
https://bugs.webkit.org/show_bug.cgi?id=84540
Any concern to commit it?
As we have just done changes for representation of attributes in the IDL here. I don't see any concerns for landing this. But I am bit confused for the statement "T[] should return shared Array and sequence<T> returns a new Array every time" are we archiving this? Or we need some changes in JSDOM/V9Bindings.Can you please clarify on this..
Kentaro Hara
Comment 11
2012-04-26 02:41:59 PDT
(In reply to
comment #10
)
> As we have just done changes for representation of attributes in the IDL here. I don't see any concerns for landing this. > > But I am bit confused for the statement "T[] should return shared Array and sequence<T> returns a new Array every time" are we archiving this? Or we need some changes in JSDOM/V9Bindings.Can you please clarify on this..
arv: In my understanding, 'shared' or 'non-shared' should be handled (not in bindings but) in WebCore. Right? Or does 'shared' mean that JSC/V8 needs to return the same wrapper object? vineetc: In the generated code with your patch, what is the result for the following code? It should be true, per the spec of T[]. internals.userPreferredLanguages === internals.userPreferredLanguages
Kentaro Hara
Comment 12
2012-04-26 02:47:48 PDT
And it is a good idea to add LayoutTests for the code: internals.userPreferredLanguages === internals.userPreferredLanguages console.profiles === console.profiles scriptProfileNode.children === scriptProfileNode.children
Kentaro Hara
Comment 13
2012-04-26 02:48:22 PDT
Comment on
attachment 138941
[details]
updatedPatch Marking r- due to the recent comments.
Vineet Chaudhary (vineetc)
Comment 14
2012-04-26 03:57:09 PDT
Created
attachment 138969
[details]
test_case_for_internals (In reply to
comment #11
)
> (In reply to
comment #10
) > > As we have just done changes for representation of attributes in the IDL here. I don't see any concerns for landing this.
> arv: In my understanding, 'shared' or 'non-shared' should be handled (not in bindings but) in WebCore. Right? Or does 'shared' mean that JSC/V8 needs to return the same wrapper object? > > vineetc: In the generated code with your patch, what is the result for the following code? It should be true, per the spec of T[]. > > internals.userPreferredLanguages === internals.userPreferredLanguages
We have test case
http://trac.webkit.org/browser/trunk/LayoutTests/fast/harness/user-preferred-language.html?rev=105315
which test if arrays are mutable or not. I have modified this test to test "internals.userPreferredLanguages == internals.userPreferredLanguages" which is "false" with patch for both V8 and JS. I think this is bug original custom binding code because we have just removed custom bindings changing representation the IDLs. We should actually align this behaviour first but as you said not sure where to fix in WebCore or Bindings. BTW below is the output of the attached test case. CONSOLE MESSAGE: line 22: Original Array en-us CONSOLE MESSAGE: line 34: Is shared array false CONSOLE MESSAGE: line 40: New first-language CONSOLE MESSAGE: line 41: Old first-language CONSOLE MESSAGE: line 40: New en-us CONSOLE MESSAGE: line 41: Old en-us CONSOLE MESSAGE: line 40: New last-language CONSOLE MESSAGE: line 41: Old last-language This test verifies that internals.userPreferredLanguages returns a mutable Array of the user's preferred languages. internals.userPreferredLanguages returns a non-empty array: PASS internals.userPreferredLanguages is mutable, and returns the same value passed to it: PASS
Kentaro Hara
Comment 15
2012-04-26 09:07:47 PDT
(In reply to
comment #14
)
> We have test case
http://trac.webkit.org/browser/trunk/LayoutTests/fast/harness/user-preferred-language.html?rev=105315
which test if arrays are mutable or not. > I have modified this test to test "internals.userPreferredLanguages == internals.userPreferredLanguages" which is "false" with patch for both V8 and JS. > I think this is bug original custom binding code because we have just removed custom bindings changing representation the IDLs. > We should actually align this behaviour first but as you said not sure where to fix in WebCore or Bindings.
Sorry for the confusing previous comments. It seems to me that - To make "internals.userPreferredLanguages == internals.userPreferredLanguages" true, the bindings must return the same wrapper object. (This implies that WebCore must return the same C++ object.) I would guess that WebCore is already returning the same C++ object, but the bindings does not yet return the same wrapper object. - I am not sure if we should fix the current behavior, in terms of compatibility. Could you confirm the behavior in other browsers? Nit: Please use === instead of ==. arv, sam, ap: Any comments?
Erik Arvidsson
Comment 16
2012-04-26 10:53:21 PDT
(In reply to
comment #15
)
> (In reply to
comment #14
) > > We have test case
http://trac.webkit.org/browser/trunk/LayoutTests/fast/harness/user-preferred-language.html?rev=105315
which test if arrays are mutable or not. > > I have modified this test to test "internals.userPreferredLanguages == internals.userPreferredLanguages" which is "false" with patch for both V8 and JS. > > I think this is bug original custom binding code because we have just removed custom bindings changing representation the IDLs. > > We should actually align this behaviour first but as you said not sure where to fix in WebCore or Bindings. > > Sorry for the confusing previous comments. It seems to me that > > - To make "internals.userPreferredLanguages == internals.userPreferredLanguages" true, the bindings must return the same wrapper object. (This implies that WebCore must return the same C++ object.) I would guess that WebCore is already returning the same C++ object, but the bindings does not yet return the same wrapper object. > > - I am not sure if we should fix the current behavior, in terms of compatibility. Could you confirm the behavior in other browsers?
All of these are WebKit proprietary extensions. I think the confusing thing is that T[] is supposed to be a live, shared array so that changes done on either side (JS or C++) may be reflected. Think of it as a live NodeList or DOMTokenList but instead of having a unique interface for every TList we have T[]. I'm not really sure we care about liveness in these 3 cases. Implementing the liveness seems like a lot of work for very little gain. I see 3 possible "solutions": 1. Change the APIs to use methods that return sequence<T>. Since these are all proprietary APIs the risk is very low. 2. Make the objects alien and disallow changes from JS but allow changes from C++ 3. Live with the bug that console.profiles !== console.profiles
Ojan Vafai
Comment 17
2012-04-26 19:33:07 PDT
(In reply to
comment #16
)
> 1. Change the APIs to use methods that return sequence<T>. Since these are all proprietary APIs the risk is very low. > 2. Make the objects alien and disallow changes from JS but allow changes from C++ > 3. Live with the bug that console.profiles !== console.profiles
For internals.userPreferredLanguages and scriptProfileNode.children, the only callers are in WebCore. So we should just change the APIs to methods that return sequence<T>. For console.profiles, I'm OK with living with console.profiles !== console.profiles. I'd like a comment in the IDL though explaining that other attributes should not use sequence<T> in order to ward off other people cargo-culting console.profiles (i.e. use a method, not an attribute if you want a sequence<T>)
Vineet Chaudhary (vineetc)
Comment 18
2012-05-03 03:09:30 PDT
Created
attachment 139978
[details]
Patch sorry for late reply. (In reply to
comment #17
)
> (In reply to
comment #16
) > > 1. Change the APIs to use methods that return sequence<T>. Since these are all proprietary APIs the risk is very low. > > 2. Make the objects alien and disallow changes from JS but allow changes from C++ > > 3. Live with the bug that console.profiles !== console.profiles > > For internals.userPreferredLanguages and scriptProfileNode.children, the only callers are in WebCore. So we should just change the APIs to methods that return sequence<T>. > > For console.profiles, I'm OK with living with console.profiles !== console.profiles. I'd like a comment in the IDL though explaining that other attributes should not use sequence<T> in order to ward off other people cargo-culting console.profiles (i.e. use a method, not an attribute if you want a sequence<T>)
With this patch I have changed APIs to Methods. Changing APIs to methods will break cases like var languages = internals.userPreferredLanguages; should be now var languages = internals.userPreferredLanguages(); internals.userPreferredLanguages = languages; should be now internals.setUserPreferredLanguages(languages); Is this is acceptable?
Erik Arvidsson
Comment 19
2012-05-03 10:19:48 PDT
(In reply to
comment #18
)
> Is this is acceptable?
If the tests are update. Yes.
WebKit Review Bot
Comment 20
2012-05-03 22:44:41 PDT
Comment on
attachment 139978
[details]
Patch
Attachment 139978
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/12634036
New failing tests: inspector/profiler/cpu-profiler-profiling-without-inspector.html media/track/track-language-preference.html
WebKit Review Bot
Comment 21
2012-05-03 22:44:49 PDT
Created
attachment 140162
[details]
Archive of layout-test-results from ec2-cr-linux-04 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: ec2-cr-linux-04 Port: <class 'webkitpy.common.config.ports.ChromiumXVFBPort'> Platform: Linux-2.6.35-28-virtual-x86_64-with-Ubuntu-10.10-maverick
Vineet Chaudhary (vineetc)
Comment 22
2012-05-22 02:36:57 PDT
Created
attachment 143242
[details]
updatedPatch Updated patch with fixes to failing layout tests.
Kentaro Hara
Comment 23
2012-05-22 04:07:33 PDT
Comment on
attachment 143242
[details]
updatedPatch View in context:
https://bugs.webkit.org/attachment.cgi?id=143242&action=review
The implementation looks good to me. Waiting for arv's review.
> Source/WebCore/ChangeLog:12 > + Tests:bindings/scripts/test/TestObj.idl
You need to update run-bindings-tests results.
> Source/WebCore/bindings/scripts/CodeGeneratorCPP.pm:226 > + die "Sequences must not be used as the type of an attribute, constant or exception field." if $codeGenerator->GetSequenceType($attribute->signature->type);
It would be dirty to write this string here and there. Shall we make CodeGenerator::AssertSequenceType()?
Vineet Chaudhary (vineetc)
Comment 24
2012-05-22 04:25:56 PDT
(In reply to
comment #23
)
> (From update of
attachment 143242
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=143242&action=review
> > The implementation looks good to me. Waiting for arv's review. > > > Source/WebCore/ChangeLog:12 > > + Tests:bindings/scripts/test/TestObj.idl > > You need to update run-bindings-tests results.
Sorry I missed that.. I see inclusion of "ContextEnabledFeatures.h" headers in some of the file can you please help me in rebaseline those.
> > Source/WebCore/bindings/scripts/CodeGeneratorCPP.pm:226 > > + die "Sequences must not be used as the type of an attribute, constant or exception field." if $codeGenerator->GetSequenceType($attribute->signature->type); > > It would be dirty to write this string here and there. Shall we make CodeGenerator::AssertSequenceType()?
Sure I will do that.
Kentaro Hara
Comment 25
2012-05-22 04:29:47 PDT
(In reply to
comment #24
)
> Sorry I missed that.. > I see inclusion of "ContextEnabledFeatures.h" headers in some of the file can you please help me in rebaseline those.
Does the inclusion cause any problem? morrita@ would know about that well.
Kentaro Hara
Comment 26
2012-05-22 04:42:34 PDT
(In reply to
comment #24
)
> I see inclusion of "ContextEnabledFeatures.h" headers in some of the file can you please help me in rebaseline those.
Ah, I got it. It is already rebaselined at
r117989
.
Vineet Chaudhary (vineetc)
Comment 27
2012-05-22 07:23:53 PDT
Created
attachment 143296
[details]
UpdatedPatch
Erik Arvidsson
Comment 28
2012-05-29 10:41:15 PDT
Comment on
attachment 143296
[details]
UpdatedPatch Doesn't this need any changes to Source/WebCore/inspector/?
Vineet Chaudhary (vineetc)
Comment 29
2012-05-29 11:23:42 PDT
(In reply to
comment #28
)
> (From update of
attachment 143296
[details]
) > Doesn't this need any changes to Source/WebCore/inspector/?
In JavaScripts whereever it is using node.children needs to be replaced with node.children() like LayoutTests/inspector/profiler/cpu-profiler-profiling-without-inspector.html I don't think we need changes in Source/WebCore/inspector/ *.cpp/*.h As we have changed JS interface only.
Erik Arvidsson
Comment 30
2012-05-29 11:44:18 PDT
(In reply to
comment #29
)
> (In reply to
comment #28
) > > (From update of
attachment 143296
[details]
[details]) > > Doesn't this need any changes to Source/WebCore/inspector/? > > In JavaScripts whereever it is using node.children needs to be replaced with node.children() like LayoutTests/inspector/profiler/cpu-profiler-profiling-without-inspector.html > > I don't think we need changes in Source/WebCore/inspector/ *.cpp/*.h As we have changed JS interface only.
There is a bunch of js files under Source/WebCore/inspector
http://code.google.com/p/chromium/source/search?q=file%3Asource%2Fwebcore%2Finspector+file%3A%5C.js+%5C.children%5Cb&origq=file%3Asource%2Fwebcore%2Finspector+file%3A%5C.js+%5C.children%5Cb&btnG=Search+Trunk
Vineet Chaudhary (vineetc)
Comment 31
2012-05-29 23:28:12 PDT
(In reply to
comment #30
)
> (In reply to
comment #29
) > > (In reply to
comment #28
) > > > (From update of
attachment 143296
[details]
[details] [details]) > > > Doesn't this need any changes to Source/WebCore/inspector/? > > > > In JavaScripts whereever it is using node.children needs to be replaced with node.children() like LayoutTests/inspector/profiler/cpu-profiler-profiling-without-inspector.html > > > > I don't think we need changes in Source/WebCore/inspector/ *.cpp/*.h As we have changed JS interface only. > > There is a bunch of js files under Source/WebCore/inspector > >
http://code.google.com/p/chromium/source/search?q=file%3Asource%2Fwebcore%2Finspector+file%3A%5C.js+%5C.children%5Cb&origq=file%3Asource%2Fwebcore%2Finspector+file%3A%5C.js+%5C.children%5Cb&btnG=Search+Trunk
Ahh right I need to change that too. I just grep thro' found 430 occurrences of "children" in Source/WebCore/inspector. It seems big patch to upload and review any alternatives..?
Mikhail Naganov
Comment 32
2012-05-30 06:55:04 PDT
(In reply to
comment #31
)
> (In reply to
comment #30
) > > (In reply to
comment #29
) > > > (In reply to
comment #28
) > > > > (From update of
attachment 143296
[details]
[details] [details] [details]) > > > > Doesn't this need any changes to Source/WebCore/inspector/? > > > > > > In JavaScripts whereever it is using node.children needs to be replaced with node.children() like LayoutTests/inspector/profiler/cpu-profiler-profiling-without-inspector.html > > > > > > I don't think we need changes in Source/WebCore/inspector/ *.cpp/*.h As we have changed JS interface only. > > > > There is a bunch of js files under Source/WebCore/inspector > > > >
http://code.google.com/p/chromium/source/search?q=file%3Asource%2Fwebcore%2Finspector+file%3A%5C.js+%5C.children%5Cb&origq=file%3Asource%2Fwebcore%2Finspector+file%3A%5C.js+%5C.children%5Cb&btnG=Search+Trunk
> > Ahh right I need to change that too. I just grep thro' found 430 occurrences of "children" in Source/WebCore/inspector. It seems big patch to upload and review any alternatives..?
A lot of "children" entries actually come from WebInspector.DataGridNode and derived classes usages. They don't have any relation to the ScriptProfileNode interface. ScriptProfileNode instances are mostly referenced as 'profileNode' in Inspector's code, though I can't guarantee that this is in 100% of cases.
Erik Arvidsson
Comment 33
2012-05-30 10:38:37 PDT
A lot of the children occurrences may also come from HTMLElement.prototype.children getter. This seems like a hard thing to change without input from the inspector people.
Mikhail Naganov
Comment 34
2012-05-30 11:03:50 PDT
(In reply to
comment #33
)
> A lot of the children occurrences may also come from HTMLElement.prototype.children getter. > > This seems like a hard thing to change without input from the inspector people.
We are discussing this issue with Vineet by mail.
Vineet Chaudhary (vineetc)
Comment 35
2012-05-30 11:17:36 PDT
Yes you are right. Actually I discussed this with Mikhail over mail. We won't need to change all occurrence of children as not all related to ScriptProfileNode. So we have spotted few places where we need changes like 1)
http://trac.webkit.org/browser/trunk/Source/WebCore/inspector/front-end/TopDownProfileDataGridTree.js?rev=113971#L36
2)
http://trac.webkit.org/browser/trunk/Source/WebCore/inspector/front-end/TopDownProfileDataGridTree.js?rev=113971#L81
3)
http://trac.webkit.org/browser/trunk/Source/WebCore/inspector/front-end/BottomUpProfileDataGridTree.js?rev=113971#L202
4)
http://trac.webkit.org/browser/trunk/Source/WebCore/inspector/front-end/CPUProfileView.js?rev=118503#L518
5)
http://trac.webkit.org/browser/trunk/Source/WebCore/inspector/front-end/CPUProfileView.js?rev=118503#L522
But before submitting the patch as Mikhail suggested I would play with inspector to see if JavaScript errors in console wrt. to these changes.
Vineet Chaudhary (vineetc)
Comment 36
2012-06-04 04:45:53 PDT
(In reply to
comment #35
) As per below discussion I tried changing above mentioned files/places, but after building code code profiling tool was not working. While, reverting only below JS changes it works. It indicates to me that instances of "children" under inspector code might be of HTMLElement.prototype.children. Even after that commenting "children" interface from ScriptProfileNode.idl inspector tool was working without any issues. So I think we need not any changes to Source/WebCore/inspector/*.
Mikhail Naganov
Comment 37
2012-06-04 08:29:37 PDT
(In reply to
comment #36
)
> (In reply to
comment #35
) > > As per below discussion I tried changing above mentioned files/places, > but after building code code profiling tool was not working. > > While, reverting only below JS changes it works. > > It indicates to me that instances of "children" under inspector code might be of HTMLElement.prototype.children. > > Even after that commenting "children" interface from ScriptProfileNode.idl inspector tool was working without any issues. > > So I think we need not any changes to Source/WebCore/inspector/*.
No, it's definitely not HTMLElement. If you look into ScriptProfile.idl, its 'head' property returns a ScriptProfileNode: ] ScriptProfile { readonly attribute DOMString title; readonly attribute unsigned long uid; readonly attribute ScriptProfileNode head; };
Vineet Chaudhary (vineetc)
Comment 38
2012-06-06 03:53:03 PDT
(In reply to
comment #37
)
> (In reply to
comment #36
) > > (In reply to
comment #35
) > > > > As per below discussion I tried changing above mentioned files/places, > > but after building code code profiling tool was not working. > > > > While, reverting only below JS changes it works. > > > > It indicates to me that instances of "children" under inspector code might be of HTMLElement.prototype.children. > > > > Even after that commenting "children" interface from ScriptProfileNode.idl inspector tool was working without any issues. > > > > So I think we need not any changes to Source/WebCore/inspector/*. > > No, it's definitely not HTMLElement. If you look into ScriptProfile.idl, its 'head' property returns a ScriptProfileNode: > > ] ScriptProfile { > readonly attribute DOMString title; > readonly attribute unsigned long uid; > readonly attribute ScriptProfileNode head; > };
I Mikhail, I debugged the code, but whenever in scripts it calls profile.head it doesn't go to ScriptProfile::head(). Also I observed there is one more Document::head() which gets called when we use profiling. Also ScriptProfileNode::children() wasn't called single time while playing with profiling tool but calls HTMLElement::children().
Mikhail Naganov
Comment 39
2012-06-06 10:35:24 PDT
(In reply to
comment #38
)
> (In reply to
comment #37
) > > (In reply to
comment #36
) > > > (In reply to
comment #35
) > > > > > > As per below discussion I tried changing above mentioned files/places, > > > but after building code code profiling tool was not working. > > > > > > While, reverting only below JS changes it works. > > > > > > It indicates to me that instances of "children" under inspector code might be of HTMLElement.prototype.children. > > > > > > Even after that commenting "children" interface from ScriptProfileNode.idl inspector tool was working without any issues. > > > > > > So I think we need not any changes to Source/WebCore/inspector/*. > > > > No, it's definitely not HTMLElement. If you look into ScriptProfile.idl, its 'head' property returns a ScriptProfileNode: > > > > ] ScriptProfile { > > readonly attribute DOMString title; > > readonly attribute unsigned long uid; > > readonly attribute ScriptProfileNode head; > > }; > > I Mikhail, I debugged the code, but whenever in scripts it calls profile.head it doesn't go to ScriptProfile::head(). Also I observed there is one more Document::head() which gets called when we use profiling. > > Also ScriptProfileNode::children() wasn't called single time while playing with profiling tool but calls HTMLElement::children().
That's weird. I'll check that. Which port (Chromium, Mac, Qt) are you testing?
Mikhail Naganov
Comment 40
2012-06-06 12:29:28 PDT
(In reply to
comment #39
)
> (In reply to
comment #38
) > > (In reply to
comment #37
) > > > (In reply to
comment #36
) > > > > (In reply to
comment #35
) > > > > > > > > As per below discussion I tried changing above mentioned files/places, > > > > but after building code code profiling tool was not working. > > > > > > > > While, reverting only below JS changes it works. > > > > > > > > It indicates to me that instances of "children" under inspector code might be of HTMLElement.prototype.children. > > > > > > > > Even after that commenting "children" interface from ScriptProfileNode.idl inspector tool was working without any issues. > > > > > > > > So I think we need not any changes to Source/WebCore/inspector/*. > > > > > > No, it's definitely not HTMLElement. If you look into ScriptProfile.idl, its 'head' property returns a ScriptProfileNode: > > > > > > ] ScriptProfile { > > > readonly attribute DOMString title; > > > readonly attribute unsigned long uid; > > > readonly attribute ScriptProfileNode head; > > > }; > > > > I Mikhail, I debugged the code, but whenever in scripts it calls profile.head it doesn't go to ScriptProfile::head(). Also I observed there is one more Document::head() which gets called when we use profiling. > > > > Also ScriptProfileNode::children() wasn't called single time while playing with profiling tool but calls HTMLElement::children(). > > That's weird. I'll check that. Which port (Chromium, Mac, Qt) are you testing?
(In reply to
comment #38
)
> (In reply to
comment #37
) > > (In reply to
comment #36
) > > > (In reply to
comment #35
) > > > > > > As per below discussion I tried changing above mentioned files/places, > > > but after building code code profiling tool was not working. > > > > > > While, reverting only below JS changes it works. > > > > > > It indicates to me that instances of "children" under inspector code might be of HTMLElement.prototype.children. > > > > > > Even after that commenting "children" interface from ScriptProfileNode.idl inspector tool was working without any issues. > > > > > > So I think we need not any changes to Source/WebCore/inspector/*. > > > > No, it's definitely not HTMLElement. If you look into ScriptProfile.idl, its 'head' property returns a ScriptProfileNode: > > > > ] ScriptProfile { > > readonly attribute DOMString title; > > readonly attribute unsigned long uid; > > readonly attribute ScriptProfileNode head; > > }; > > I Mikhail, I debugged the code, but whenever in scripts it calls profile.head it doesn't go to ScriptProfile::head(). Also I observed there is one more Document::head() which gets called when we use profiling. > > Also ScriptProfileNode::children() wasn't called single time while playing with profiling tool but calls HTMLElement::children().
Vineet, I've tried your patch and while playing with it, I've recalled an important thing. Usage of console.profiles isn't the same as Inspector internal access to profiles. console.profiles indeed uses those .idl files. That's why your change affects the cpu-profiler-profiling-without-inspector.html test -- it deals with the Console API exposed to the page. Inspector itself uses its own JSON-based protocol, so your changes to .idl files doesn't affect it. In other words, you may safely ignore all those ".children" entries in Inspector's code. I apologize I didn't recall that the first time you've asked.
Vineet Chaudhary (vineetc)
Comment 41
2012-06-07 02:44:20 PDT
Created
attachment 146239
[details]
Patch Thanks Mikhail for clarifying. Reposting patch for review with small correction to previous patch in LayoutTests/inspector/profiler/cpu-profiler-profiling-without-inspector.html
Vineet Chaudhary (vineetc)
Comment 42
2012-06-11 20:39:45 PDT
(In reply to
comment #41
)
> Created an attachment (id=146239) [details] > Patch
Erik as Mikhail clarified abvove we don't need to change Source/WebCore/inspector/*. Can you please review new patch once again. Thanks.
Erik Arvidsson
Comment 43
2012-06-12 10:50:46 PDT
Comment on
attachment 146239
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=146239&action=review
I'm not a reviewer but once the assert function is renamed I would recommend a reviewer to r+ this :-)
> Source/WebCore/bindings/scripts/CodeGenerator.pm:470 > +sub AssertSequenceType
Shouldn't this be called AssertNotSequenceType?
> Source/WebCore/page/Console.idl:49 > + // As per spec :
http://www.w3.org/TR/WebIDL/#idl-sequence
// As per spec:
http://www.w3.org/TR/WebIDL/#idl-sequence
Vineet Chaudhary (vineetc)
Comment 44
2012-06-13 01:25:37 PDT
Created
attachment 147261
[details]
patch Thanks Erik.. Updated patch renaming assert function and few nits as suggested.
Kentaro Hara
Comment 45
2012-06-13 01:33:12 PDT
Comment on
attachment 147261
[details]
patch arv: thank you very much for the review! Looks good to me too.
WebKit Review Bot
Comment 46
2012-06-13 07:40:26 PDT
Comment on
attachment 147261
[details]
patch Clearing flags on attachment: 147261 Committed
r120206
: <
http://trac.webkit.org/changeset/120206
>
WebKit Review Bot
Comment 47
2012-06-13 07:41:14 PDT
All reviewed patches have been landed. Closing bug.
Chris Dumez
Comment 48
2012-06-13 11:36:35 PDT
This patch appears to have caused ~30 regressions on GTK and EFL ports. All of the new failures are fast/profiler test cases.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug