Home | History | Annotate | Download | only in undo
      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