summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions
diff options
context:
space:
mode:
authorbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-14 16:19:40 +0000
committerbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-14 16:19:40 +0000
commitb535bf1e563f43dbc5d60307a425a6766b98d00b (patch)
tree3c47e8a423c687ab598d5569fd993e4527992c44 /chrome/browser/extensions
parent42ed07c83974dad37006484c4a9fc466572b4a60 (diff)
downloadchromium_src-b535bf1e563f43dbc5d60307a425a6766b98d00b.zip
chromium_src-b535bf1e563f43dbc5d60307a425a6766b98d00b.tar.gz
chromium_src-b535bf1e563f43dbc5d60307a425a6766b98d00b.tar.bz2
Ensure proper teardown of repost form warning objects.
Make sure a repost form warning is closed properly even when the constrained window is closed from underneath us. To do this, its controller now calls |Cancel| in its destructor. We now have a potential cycle of methods calling each other: * |RepostFormWarningController::CloseDialog| closes the |ConstrainedWindow|. * This eventually calls |RepostFormWarningWin::DeleteDelegate|, which destroys |RepostFormWarningWin| and |RepostFormWarningController|. * In its destructor, |RepostFormWarningController| calls |Cancel|, which calls |CloseDialog|. Therefore, there are some checks in place to make sure we do everything during the teardown exactly once: * After calling |NavigationController::CancelPendingReload|, we set |tab_contents| to null to make sure we don't call it again. * During destruction, we set |window_| to null to make sure we don't call |CloseConstrainedWindow| again. BUG=41367 TEST=RepostFormWarningTest.* Review URL: http://codereview.chromium.org/1530032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44481 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions')
0 files changed, 0 insertions, 0 deletions