Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Fix many bugs by giving Windows one FrameView per page load
WebCore: Fixes to allow multiple FrameViews on Windows Reviewed by Hyatt. * page/FrameView.cpp: (WebCore::FrameView::FrameView): Added a new constructor that takes an IntSize to specify the FrameView's initial size. (WebCore::FrameView::scheduleRelayout): Added an assertion that our Document is not in the page cache. * page/FrameView.h: * platform/gtk/WidgetGtk.cpp: (WebCore::Widget::~Widget): Add a warm, fuzzy ASSERT. * platform/qt/WidgetQt.cpp: (WebCore::Widget::~Widget): Ditto. * rendering/RenderWidget.cpp: (WebCore::RenderWidget::setWidget): Make sure to remove any existing Widget from the Widget hierarchy before deleting it. One instance where this is needed is when setWidget is called during FrameView creation on Windows. WebKit/win: Fix many bugs by giving Windows one FrameView per page load Bugs include: <rdar://5659200> Windows back/forward cache causes crashes in the layout tests <rdar://5659355> <http://bugs.webkit.org/show_bug.cgi?id=16808> REGRESSION: PLT broken on Windows due to back/forward cache <rdar://5663654> <http://bugs.webkit.org/show_bug.cgi?id=16607> Random crashes in FrameView::scheduleRelayout while surfing Thinkgeek On Windows until now we've only had one FrameView per Frame. Once the back/forward cache was turned on this started causing assertions to fail and crashes to occur due to a single FrameView being both in the back/forward cache (possibly multiple times!) and used by a live document. We now create a new FrameView for each page load, just as Mac does. This has the side-effect of plugging some of the world leaks seen at the end of the PLT. Reviewed by Hyatt. * WebFrame.cpp: (WebFrame::initWithWebFrameView): Don't create the FrameView right away -- it'll be created when the load is committed. (WebFrame::transitionToCommittedFromCachedPage): Match the Mac by no longer calling resetMultipleFormSubmissionProtection here. (WebFrame::transitionToCommittedForNewPage): Ported code from -[WebCoreFrameBridge createFrameViewWithNSView:marginWidth:marginHeight:], -[WebCoreFrameBridge installInFrame:], and moved code here from WebFrame::initWithWebFrameView and WebView::initWithFrame. WebCore takes care of resetMultipleFormSubmissionProtection, just like it does on the Mac. * WebView.cpp: (WebView::initWithFrame): Moved FrameView initialization code to WebFrame::transitionToCommittedForNewPage. Canonical link: https://commits.webkit.org/23202@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@29369 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- Loading branch information
Showing
9 changed files
with
121 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -79,6 +79,7 @@ void Widget::setGtkWidget(GtkWidget* widget) | ||
|
||
Widget::~Widget() | ||
{ | ||
ASSERT(!parent()); | ||
delete data; | ||
} | ||
|
||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -79,6 +79,7 @@ Widget::Widget() | ||
|
||
Widget::~Widget() | ||
{ | ||
Q_ASSERT(!parent()); | ||
delete data; | ||
data = 0; | ||
} | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters