1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/undo/bookmark_undo_utils.h" 6 7 #include "chrome/browser/undo/bookmark_undo_service.h" 8 #include "chrome/browser/undo/bookmark_undo_service_factory.h" 9 #include "chrome/browser/undo/undo_manager.h" 10 11 namespace { 12 13 // Utility funciton to safely return an UndoManager if available. 14 UndoManager* GetUndoManager(Profile* profile) { 15 BookmarkUndoService* undo_service = profile ? 16 BookmarkUndoServiceFactory::GetForProfile(profile) : NULL; 17 return undo_service ? undo_service->undo_manager() : NULL; 18 } 19 20 } // namespace 21 22 // ScopedSuspendBookmarkUndo -------------------------------------------------- 23 24 ScopedSuspendBookmarkUndo::ScopedSuspendBookmarkUndo(Profile* profile) 25 : profile_(profile) { 26 UndoManager* undo_manager = GetUndoManager(profile_); 27 if (undo_manager) 28 undo_manager->SuspendUndoTracking(); 29 } 30 31 ScopedSuspendBookmarkUndo::~ScopedSuspendBookmarkUndo() { 32 UndoManager *undo_manager = GetUndoManager(profile_); 33 if (undo_manager) 34 undo_manager->ResumeUndoTracking(); 35 } 36