diff options
author | sky@google.com <sky@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-09-05 02:44:51 +0000 |
---|---|---|
committer | sky@google.com <sky@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-09-05 02:44:51 +0000 |
commit | 3de6fd34b8081868e0476341987c8953fd1cfba4 (patch) | |
tree | 5c55943a94a1edb6a744d75b5389c68f38f81557 /chrome/browser/views | |
parent | f052118e0a1dea89270f0c92cb78d8b277720dc6 (diff) | |
download | chromium_src-3de6fd34b8081868e0476341987c8953fd1cfba4.zip chromium_src-3de6fd34b8081868e0476341987c8953fd1cfba4.tar.gz chromium_src-3de6fd34b8081868e0476341987c8953fd1cfba4.tar.bz2 |
Attempt at fixing crash. I believe this is happening during session
end, which has a different shutdown path and is possible for the model
to be deleted before the view.
I'm also adding checking to XPFrame/VistaFrame to make sure the
BookmarkBarView doesn't have a parent in the destructor. This
shouldn't be possible, but I'm adding the check to be sure;)
BUG=1359852
TEST=make sure you don't see problems with bookmarks
Review URL: http://codereview.chromium.org/440
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1754 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views')
-rw-r--r-- | chrome/browser/views/bookmark_bar_view.cc | 12 | ||||
-rw-r--r-- | chrome/browser/views/bookmark_bar_view.h | 3 |
2 files changed, 14 insertions, 1 deletions
diff --git a/chrome/browser/views/bookmark_bar_view.cc b/chrome/browser/views/bookmark_bar_view.cc index b5a952f..fb9d579 100644 --- a/chrome/browser/views/bookmark_bar_view.cc +++ b/chrome/browser/views/bookmark_bar_view.cc @@ -1118,7 +1118,6 @@ void BookmarkBarView::Init() { SetContextMenuController(this); size_animation_.reset(new SlideAnimation(this)); - size_animation_->SetSlideDuration(4000); } MenuButton* BookmarkBarView::CreateOtherBookmarkedButton() { @@ -1166,6 +1165,17 @@ void BookmarkBarView::Loaded(BookmarkBarModel* model) { SchedulePaint(); } +void BookmarkBarView::BookmarkModelBeingDeleted(BookmarkBarModel* model) { + // The bookmark model should never be deleted before us. This code exists + // to check for regressions in shutdown code and not crash. + NOTREACHED(); + + // Do minimal cleanup, presumably we'll be deleted shortly. + NotifyModelChanged(); + model_->RemoveObserver(this); + model_ = NULL; +} + void BookmarkBarView::BookmarkNodeMoved(BookmarkBarModel* model, BookmarkBarNode* old_parent, int old_index, diff --git a/chrome/browser/views/bookmark_bar_view.h b/chrome/browser/views/bookmark_bar_view.h index 507da5d..d48780c 100644 --- a/chrome/browser/views/bookmark_bar_view.h +++ b/chrome/browser/views/bookmark_bar_view.h @@ -216,6 +216,9 @@ class BookmarkBarView : public ChromeViews::View, // for each of the children of the root node from the model. virtual void Loaded(BookmarkBarModel* model); + // Invoked when the model is being deleted. + virtual void BookmarkModelBeingDeleted(BookmarkBarModel* model); + // Invokes added followed by removed. virtual void BookmarkNodeMoved(BookmarkBarModel* model, BookmarkBarNode* old_parent, |