Hi,
Thank you for the reply. I tried view->resize(width(), height(), but
it does not make any difference.
The stack trace is like the following when GTKLauncher hangs.
#0 0xb74e80ac in WTF::PairFirstExtractor<std::pair<unsigned int,
unsigned long> >::extract (p...@0x90c8860) at
JavaScriptCore/wtf/HashMap.h:93
#1 0xb74e811a in WTF::HashTable<unsigned int, std::pair<unsigned int,
unsigned long>, WTF::PairFirstExtractor<std::pair<unsigned int,
unsigned long> >, WTF::IntHash<unsigned int>,
WTF::PairHashTraits<WTF::HashTraits<unsigned int>,
WTF::HashTraits<unsigned long> >, WTF::HashTraits<unsigned int>
::isEmptyBucket (val...@0x90c8860) at
JavaScriptCore/wtf/HashTable.h:336
#2 0xb74e813d in WTF::HashTable<unsigned int, std::pair<unsigned int,
unsigned long>, WTF::PairFirstExtractor<std::pair<unsigned int,
unsigned long> >, WTF::IntHash<unsigned int>,
WTF::PairHashTraits<WTF::HashTraits<unsigned int>,
WTF::HashTraits<unsigned long> >, WTF::HashTraits<unsigned int>
::isEmptyOrDeletedBucket (val...@0x90c8860) at
JavaScriptCore/wtf/HashTable.h:338
#3 0xb74e8191 in WTF::HashTableConstIterator<unsigned int,
std::pair<unsigned int, unsigned long>,
WTF::PairFirstExtractor<std::pair<unsigned int, unsigned long> >,
WTF::IntHash<unsigned int>,
WTF::PairHashTraits<WTF::HashTraits<unsigned int>,
WTF::HashTraits<unsigned long> >, WTF::HashTraits<unsigned int>
::skipEmptyBuckets (this=0xbfe5bbcc) at
JavaScriptCore/wtf/HashTable.h:107
#4 0xb74e91de in HashTableConstIterator (this=0xbfe5bbcc,
table=0x90c5870, position=0x90c8798, endPosition=0x90c8998) at
JavaScriptCore/wtf/HashTable.h:115
#5 0xb74e920a in HashTableIterator (this=0xbfe5bbcc, table=0x90c5870,
pos=0x90c8798, end=0x90c8998) at JavaScriptCore/wtf/HashTable.h:232
#6 0xb74e9243 in WTF::HashTable<unsigned int, std::pair<unsigned int,
unsigned long>, WTF::PairFirstExtractor<std::pair<unsigned int,
unsigned long> >, WTF::IntHash<unsigned int>,
WTF::PairHashTraits<WTF::HashTraits<unsigned int>,
WTF::HashTraits<unsigned long> >, WTF::HashTraits<unsigned int>
::makeIterator (this=0x90c5870, pos=0x90c8798) at
JavaScriptCore/wtf/HashTable.h:381
#7 0xb74e9274 in WTF::HashTable<unsigned int, std::pair<unsigned int,
unsigned long>, WTF::PairFirstExtractor<std::pair<unsigned int,
unsigned long> >, WTF::IntHash<unsigned int>,
WTF::PairHashTraits<WTF::HashTraits<unsigned int>,
WTF::HashTraits<unsigned long> >, WTF::HashTraits<unsigned int>
::begin (this=0x90c5870) at JavaScriptCore/wtf/HashTable.h:306
#8 0xb74e95d1 in WTF::HashMap<unsigned int, unsigned long,
WTF::IntHash<unsigned int>, WTF::HashTraits<unsigned int>,
WTF::HashTraits<unsigned long> >::begin (this=0x90c5870) at
JavaScriptCore/wtf/HashMap.h:137
#9 0xb74e7d96 in identifierByPthreadHandle
(pthreadhand...@0xbfe5bc60) at
JavaScriptCore/wtf/ThreadingPthreads.cpp:99
#10 0xb74e7f3d in WTF::currentThread () at
JavaScriptCore/wtf/ThreadingPthreads.cpp:221
#11 0xb74e7f7c in WTF::isMainThread () at
JavaScriptCore/wtf/ThreadingPthreads.cpp:231
#12 0xb798f01f in WebCore::FontFallbackList::primarySimpleFontData
(this=0x9b89c48, f=0x9b89d60) at
WebCore/platform/graphics/FontFallbackList.h:63
#13 0xb798e431 in WebCore::Font::primaryFont (this=0x9b89d60) at
WebCore/platform/graphics/Font.cpp:130
#14 0xb78076b5 in WebCore::Font::ascent (this=0x9b89d60) at
./WebCore/platform/graphics/Font.h:108
#15 0xb7a92e6f in WebCore::RenderObject::baselinePosition
(this=0x9b8a1a4, firstLine=false, isRootLineBox=false) at
WebCore/rendering/RenderObject.cpp:1955
#16 0xb7a0b9a8 in WebCore::InlineFlowBox::computeLogicalBoxHeights
(this=0x9f7e43c, maxpositiont...@0xbfe5bf48,
maxpositionbott...@0xbfe5bf44, maxasce...@0xbfe5bf40,
maxdesce...@0xbfe5bf3c, strictMode=false) at
WebCore/rendering/InlineFlowBox.cpp:460
#17 0xb7a0bb0e in WebCore::InlineFlowBox::computeLogicalBoxHeights
(this=0x99216d4, maxpositiont...@0xbfe5bf48,
maxpositionbott...@0xbfe5bf44, maxasce...@0xbfe5bf40,
maxdesce...@0xbfe5bf3c, strictMode=false) at
WebCore/rendering/InlineFlowBox.cpp:480
#18 0xb7a0bb0e in WebCore::InlineFlowBox::computeLogicalBoxHeights
(this=0x9f97a94, maxpositiont...@0xbfe5bf48,
maxpositionbott...@0xbfe5bf44, maxasce...@0xbfe5bf40,
maxdesce...@0xbfe5bf3c, strictMode=false) at
WebCore/rendering/InlineFlowBox.cpp:480
#19 0xb7a0bc0c in WebCore::InlineFlowBox::verticallyAlignBoxes
(this=0x9f97a94, heightOfBlock=57) at
WebCore/rendering/InlineFlowBox.cpp:345
#20 0xb7ae3076 in
WebCore::RenderBlock::computeVerticalPositionsForLine (this=0x9b89794,
lineBox=0x9f97a94, firstRun=0x9f9507c) at
WebCore/rendering/bidi.cpp:752
#21 0xb7ae8fa0 in WebCore::RenderBlock::layoutInlineChildren
(this=0x9b89794, relayoutChildren=true, repaintt...@0xbfe5c38c,
repaintbott...@0xbfe5c388) at WebCore/rendering/bidi.cpp:1019
#22 0xb7a2b9e5 in WebCore::RenderBlock::layoutBlock (this=0x9b89794,
relayoutChildren=true) at WebCore/rendering/RenderBlock.cpp:779
#23 0xb7a18d64 in WebCore::RenderBlock::layout (this=0x9b89794) at
WebCore/rendering/RenderBlock.cpp:698
#24 0xb7a2a592 in WebCore::RenderBlock::layoutBlockChildren
(this=0x9b8916c, relayoutChildren=true, maxfloatbott...@0xbfe5c604) at
WebCore/rendering/RenderBlock.cpp:1373
#25 0xb7a2ba04 in WebCore::RenderBlock::layoutBlock (this=0x9b8916c,
relayoutChildren=true) at WebCore/rendering/RenderBlock.cpp:781
#26 0xb7ab0f9d in WebCore::RenderTableCell::layout (this=0x9b8916c) at
WebCore/rendering/RenderTableCell.cpp:137
#27 0xb7ab5fb0 in WebCore::RenderTableRow::layout (this=0x9b88ecc) at
WebCore/rendering/RenderTableRow.cpp:127
#28 0xb75bc09b in WebCore::RenderObject::layoutIfNeeded
(this=0x9b88ecc) at ./WebCore/rendering/RenderObject.h:483
#29 0xb7ab9e9a in WebCore::RenderTableSection::layout (this=0x9b88e1c)
at WebCore/rendering/RenderTableSection.cpp:400
#30 0xb75bc09b in WebCore::RenderObject::layoutIfNeeded
(this=0x9b88e1c) at ./WebCore/rendering/RenderObject.h:483
#31 0xb7aade17 in WebCore::RenderTable::layout (this=0x9b88c7c) at
WebCore/rendering/RenderTable.cpp:282
#32 0xb7a2a592 in WebCore::RenderBlock::layoutBlockChildren
(this=0x976b0a4, relayoutChildren=true, maxfloatbott...@0xbfe5cad4) at
WebCore/rendering/RenderBlock.cpp:1373
#33 0xb7a2ba04 in WebCore::RenderBlock::layoutBlock (this=0x976b0a4,
relayoutChildren=true) at WebCore/rendering/RenderBlock.cpp:781
#34 0xb7a18d64 in WebCore::RenderBlock::layout (this=0x976b0a4) at
WebCore/rendering/RenderBlock.cpp:698
#35 0xb7a2a592 in WebCore::RenderBlock::layoutBlockChildren
(this=0x968b70c, relayoutChildren=true, maxfloatbott...@0xbfe5cd54) at
WebCore/rendering/RenderBlock.cpp:1373
#36 0xb7a2ba04 in WebCore::RenderBlock::layoutBlock (this=0x968b70c,
relayoutChildren=true) at WebCore/rendering/RenderBlock.cpp:781
#37 0xb7a18d64 in WebCore::RenderBlock::layout (this=0x968b70c) at
WebCore/rendering/RenderBlock.cpp:698
#38 0xb7a2a592 in WebCore::RenderBlock::layoutBlockChildren
(this=0x962ba54, relayoutChildren=true, maxfloatbott...@0xbfe5cfd4) at
WebCore/rendering/RenderBlock.cpp:1373
#39 0xb7a2ba04 in WebCore::RenderBlock::layoutBlock (this=0x962ba54,
relayoutChildren=true) at WebCore/rendering/RenderBlock.cpp:781
#40 0xb7a18d64 in WebCore::RenderBlock::layout (this=0x962ba54) at
WebCore/rendering/RenderBlock.cpp:698
#41 0xb7ad1b65 in WebCore::RenderView::layout (this=0x962ba54) at
WebCore/rendering/RenderView.cpp:122
#42 0xb7934391 in WebCore::FrameView::layout (this=0x9904618,
allowSubtree=true) at WebCore/page/FrameView.cpp:610
#43 0xb7939b4c in WebCore::FrameView::visibleContentsResized
(this=0x9904618) at WebCore/page/FrameView.h:215
#44 0xb797bced in WebCore::ScrollView::updateScrollbars
(this=0x9904618, desiredoffs...@0x9904684) at
WebCore/platform/ScrollView.cpp:392
#45 0xb797c562 in WebCore::ScrollView::setFrameRect (this=0x9904618,
newre...@0xbfe5d2a0) at WebCore/platform/ScrollView.cpp:700
#46 0xb7436c52 in WebCore::Widget::resize (this=0x9904618, w=345,
h=3336) at ./WebCore/platform/Widget.h:128
#47 0xb7a62d01 in WebCore::RenderFrame::layout (this=0x967d524) at
WebCore/rendering/RenderFrame.cpp:78
#48 0xb7a64205 in WebCore::RenderFrameSet::positionFrames
(this=0x9687f24) at WebCore/rendering/RenderFrameSet.cpp:618
#49 0xb7a65741 in WebCore::RenderFrameSet::layout (this=0x9687f24) at
WebCore/rendering/RenderFrameSet.cpp:499
#50 0xb7a63d5e in WebCore::RenderFrameSet::positionFrames
(this=0x968a94c) at WebCore/rendering/RenderFrameSet.cpp:554
#51 0xb7a65741 in WebCore::RenderFrameSet::layout (this=0x968a94c) at
WebCore/rendering/RenderFrameSet.cpp:499
#52 0xb7a2a592 in WebCore::RenderBlock::layoutBlockChildren
(this=0x98d356c, relayoutChildren=false, maxfloatbott...@0xbfe5d794)
at WebCore/rendering/RenderBlock.cpp:1373
#53 0xb7a2ba04 in WebCore::RenderBlock::layoutBlock (this=0x98d356c,
relayoutChildren=false) at WebCore/rendering/RenderBlock.cpp:781
#54 0xb7a18d64 in WebCore::RenderBlock::layout (this=0x98d356c) at
WebCore/rendering/RenderBlock.cpp:698
#55 0xb7a2a592 in WebCore::RenderBlock::layoutBlockChildren
(this=0x968a484, relayoutChildren=false, maxfloatbott...@0xbfe5da14)
at WebCore/rendering/RenderBlock.cpp:1373
#56 0xb7a2ba04 in WebCore::RenderBlock::layoutBlock (this=0x968a484,
relayoutChildren=false) at WebCore/rendering/RenderBlock.cpp:781
#57 0xb7a18d64 in WebCore::RenderBlock::layout (this=0x968a484) at
WebCore/rendering/RenderBlock.cpp:698
#58 0xb7ad1b65 in WebCore::RenderView::layout (this=0x968a484) at
WebCore/rendering/RenderView.cpp:122
#59 0xb7934391 in WebCore::FrameView::layout (this=0x90dcb00,
allowSubtree=true) at WebCore/page/FrameView.cpp:610
#60 0xb793460d in WebCore::FrameView::layout (this=0x90dcb00,
allowSubtree=false) at WebCore/page/FrameView.cpp:664
#61 0xb79346f3 in WebCore::FrameView::forceLayout (this=0x90dcb00,
allowSubtree=false) at WebCore/page/FrameView.cpp:1473
#62 0xb74351e3 in webkit_web_view_size_allocate (widget=0x90ce820,
allocation=0xbfe5dfec) at WebKit/gtk/webkit/webkitwebview.cpp:558
#63 0xb5a67a3c in g_cclosure_marshal_VOID__BOXED () from
/usr/lib/libgobject-2.0.so.0
#64 0xb5a593c9 in ?? () from /usr/lib/libgobject-2.0.so.0
#65 0xb5a5ab78 in g_closure_invoke () from /usr/lib/
libgobject-2.0.so.0
#66 0xb5a708ee in ?? () from /usr/lib/libgobject-2.0.so.0
#67 0xb5a727ac in g_signal_emit_valist () from /usr/lib/
libgobject-2.0.so.0
#68 0xb5a72c26 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#69 0xb6159454 in gtk_widget_size_allocate () from /usr/lib/libgtk-
x11-2.0.so.0
#70 0xb609aadb in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#71 0xb5a67a3c in g_cclosure_marshal_VOID__BOXED () from
/usr/lib/libgobject-2.0.so.0
#72 0xb5a593c9 in ?? () from /usr/lib/libgobject-2.0.so.0
#73 0xb5a5ab78 in g_closure_invoke () from /usr/lib/
libgobject-2.0.so.0
#74 0xb5a708ee in ?? () from /usr/lib/libgobject-2.0.so.0
#75 0xb5a727ac in g_signal_emit_valist () from /usr/lib/
libgobject-2.0.so.0
#76 0xb5a72c26 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#77 0xb6159454 in gtk_widget_size_allocate () from /usr/lib/libgtk-
x11-2.0.so.0
#78 0xb614de26 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#79 0xb5a67a3c in g_cclosure_marshal_VOID__BOXED () from
/usr/lib/libgobject-2.0.so.0
#80 0xb5a593c9 in ?? () from /usr/lib/libgobject-2.0.so.0
#81 0xb5a5ab78 in g_closure_invoke () from /usr/lib/
libgobject-2.0.so.0
#82 0xb5a708ee in ?? () from /usr/lib/libgobject-2.0.so.0
#83 0xb5a727ac in g_signal_emit_valist () from /usr/lib/
libgobject-2.0.so.0
#84 0xb5a72c26 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#85 0xb6159454 in gtk_widget_size_allocate () from /usr/lib/libgtk-
x11-2.0.so.0
#86 0xb616b63b in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#87 0xb5a67a3c in g_cclosure_marshal_VOID__BOXED () from
/usr/lib/libgobject-2.0.so.0
#88 0xb5a593c9 in ?? () from /usr/lib/libgobject-2.0.so.0
#89 0xb5a5ac4b in g_closure_invoke () from /usr/lib/
libgobject-2.0.so.0
#90 0xb5a708ee in ?? () from /usr/lib/libgobject-2.0.so.0
#91 0xb5a727ac in g_signal_emit_valist () from /usr/lib/
libgobject-2.0.so.0
#92 0xb5a72c26 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#93 0xb6159454 in gtk_widget_size_allocate () from /usr/lib/libgtk-
x11-2.0.so.0
#94 0xb5fb3dcf in gtk_container_resize_children () from
/usr/lib/libgtk-x11-2.0.so.0
#95 0xb616b886 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#96 0xb5a683d4 in g_cclosure_marshal_VOID__VOID () from
/usr/lib/libgobject-2.0.so.0
#97 0xb5a593c9 in ?? () from /usr/lib/libgobject-2.0.so.0
#98 0xb5a5ac4b in g_closure_invoke () from /usr/lib/
libgobject-2.0.so.0
#99 0xb5a70d3d in ?? () from /usr/lib/libgobject-2.0.so.0
#100 0xb5a727ac in g_signal_emit_valist () from /usr/lib/
libgobject-2.0.so.0
#101 0xb5a72c26 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#102 0xb5fb3e6a in gtk_container_check_resize () from
/usr/lib/libgtk-x11-2.0.so.0
#103 0xb5fb3ec0 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#104 0xb5e9946b in ?? () from /usr/lib/libgdk-x11-2.0.so.0
#105 0xb59c17e1 in ?? () from /usr/lib/libglib-2.0.so.0
#106 0xb59c3718 in g_main_context_dispatch () from /usr/lib/
libglib-2.0.so.0
#107 0xb59c6dc3 in ?? () from /usr/lib/libglib-2.0.so.0
#108 0xb59c72e2 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#109 0xb60373a9 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#110 0x08049ede in main (argc=1, argv=0xbfe5f324) at
WebKitTools/GtkLauncher/main.c:205
I know some changes in rendering between the latest version of WebKit
and the Android WebKit makes this difference. I suspect that two lines
are causing infinite layouts, but I don't have any detailed knowledge
on the rendering process of WebKit.
Thanks,
K Seo
2009/7/1 Patrick Hanna <[email protected]>:
The patch on Android is against a different webkit revision so who
knows
what will happen when patching against the latest webkit.
My first thought is to try view->resize(width(), height()) instead
of using
m_width and m_height but I don't know what that will change.
Have you looked at the stack trace when GtkLauncher hangs to find
out why
those 2 lines are the culprit?
On Jun 30, 2009, at 10:34 AM, Seo K wrote:
Hi,
I want to flatten frames within a frameset so that no individual
scrollbars
of frames would appear. This is the behavior of most mobile browsers
including iPhone and Android.
I found the patch from the Android WebKit source code with
FLATTEN_FRAMESET.
I applied the patch to the latest version of WebKit and adjusted it
the
latest changes, but it does not seem to work.
WebCore/rendering/RenderFrame.cpp
+#if USE(FLATTEN_FRAMESET)
+void RenderFrame::layout()
+{
+ if (widget() && widget()->isFrameView()) {
+ FrameView* view = static_cast<FrameView*>(widget());
+ RenderView* root = NULL;
+ if (view->frame() && view->frame()->document() &&
+ view->frame()->document()->renderer() &&
view->frame()->document()->renderer()->isRenderView())
+ root =
static_cast<RenderView*>(view->frame()->document()->renderer());
+ if (root) {
+ // Resize the widget so that the RenderView will layout
according to those dimensions.
+ view->resize(m_width, m_height);
+ view->layout();
+ // We can only grow in width and height because if
positionFrames gives us a width and we become smaller,
+ // then the fixup process of forcing the frame to fill
extra
space will fail.
+ if (m_width > root->docWidth()) {
+ view->resize(root->docWidth(), 0);
+ view->layout();
+ }
+ // Honor the height set by
RenderFrameSet::positionFrames
unless our document height is larger.
+ setHeight(max(root->docHeight(), height()));
+ setWidth(max(root->docWidth(), width()));
+ }
+ }
+ setNeedsLayout(false);
+}
+#endif
+
I tested it with http://java.sun.com/j2se/1.5.0/docs/api/ which has
three
frames within a frameset.
GtkLauncher hangs when it loads the Java API page. However, after I
remove
the following two lines from the patch, it seems to work and frames
are
correctly flattened.
if (root) {
// Resize the widget so that the RenderView will layout
according to those dimensions.
- view->resize(m_width, m_height);
- view->layout();
// We can only grow in width and height because if
positionFrames gives us a width and we become smaller,
// then the fixup process of forcing the frame to fill
extra
space will fail.
What's the problem here? I attached the whole patch.
Thanks,
K Seo
<FlattenFrameSet.diff>_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev