| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/undo/bookmark_undo_utils.h" |
| |
| #include "chrome/browser/undo/bookmark_undo_service.h" |
| #include "chrome/browser/undo/bookmark_undo_service_factory.h" |
| #include "chrome/browser/undo/undo_manager.h" |
| |
| namespace { |
| |
| // Utility funciton to safely return an UndoManager if available. |
| UndoManager* GetUndoManager(Profile* profile) { |
| BookmarkUndoService* undo_service = profile ? |
| BookmarkUndoServiceFactory::GetForProfile(profile) : NULL; |
| return undo_service ? undo_service->undo_manager() : NULL; |
| } |
| |
| } // namespace |
| |
| // ScopedSuspendBookmarkUndo -------------------------------------------------- |
| |
| ScopedSuspendBookmarkUndo::ScopedSuspendBookmarkUndo(Profile* profile) |
| : profile_(profile) { |
| UndoManager* undo_manager = GetUndoManager(profile_); |
| if (undo_manager) |
| undo_manager->SuspendUndoTracking(); |
| } |
| |
| ScopedSuspendBookmarkUndo::~ScopedSuspendBookmarkUndo() { |
| UndoManager *undo_manager = GetUndoManager(profile_); |
| if (undo_manager) |
| undo_manager->ResumeUndoTracking(); |
| } |