1// Copyright (c) 2012 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// C++ bridge class between Chromium and Cocoa to connect the 6// Bookmarks (model) with the Bookmark Bar (view). 7// 8// There is exactly one BookmarkBarBridge per BookmarkBarController / 9// BrowserWindowController / Browser. 10 11#ifndef CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_BRIDGE_H_ 12#define CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_BRIDGE_H_ 13 14#include "base/basictypes.h" 15#include "base/compiler_specific.h" 16#include "base/prefs/pref_change_registrar.h" 17#include "components/bookmarks/browser/bookmark_model_observer.h" 18 19class Profile; 20@class BookmarkBarController; 21 22class BookmarkBarBridge : public BookmarkModelObserver { 23 public: 24 BookmarkBarBridge(Profile* profile, 25 BookmarkBarController* controller, 26 BookmarkModel* model); 27 virtual ~BookmarkBarBridge(); 28 29 // Overridden from BookmarkModelObserver: 30 virtual void BookmarkModelLoaded(BookmarkModel* model, 31 bool ids_reassigned) OVERRIDE; 32 virtual void BookmarkModelBeingDeleted(BookmarkModel* model) OVERRIDE; 33 virtual void BookmarkNodeMoved(BookmarkModel* model, 34 const BookmarkNode* old_parent, 35 int old_index, 36 const BookmarkNode* new_parent, 37 int new_index) OVERRIDE; 38 virtual void BookmarkNodeAdded(BookmarkModel* model, 39 const BookmarkNode* parent, 40 int index) OVERRIDE; 41 virtual void BookmarkNodeRemoved(BookmarkModel* model, 42 const BookmarkNode* parent, 43 int old_index, 44 const BookmarkNode* node, 45 const std::set<GURL>& removed_urls) OVERRIDE; 46 virtual void BookmarkAllUserNodesRemoved( 47 BookmarkModel* model, 48 const std::set<GURL>& removed_urls) OVERRIDE; 49 virtual void BookmarkNodeChanged(BookmarkModel* model, 50 const BookmarkNode* node) OVERRIDE; 51 virtual void BookmarkNodeFaviconChanged(BookmarkModel* model, 52 const BookmarkNode* node) OVERRIDE; 53 virtual void BookmarkNodeChildrenReordered(BookmarkModel* model, 54 const BookmarkNode* node) OVERRIDE; 55 virtual void ExtensiveBookmarkChangesBeginning(BookmarkModel* model) OVERRIDE; 56 virtual void ExtensiveBookmarkChangesEnded(BookmarkModel* model) OVERRIDE; 57 58 private: 59 BookmarkBarController* controller_; // weak; owns me 60 BookmarkModel* model_; // weak; it is owned by a Profile. 61 bool batch_mode_; 62 63 // Needed to react to kShowAppsShortcutInBookmarkBar changes. 64 PrefChangeRegistrar profile_pref_registrar_; 65 66 // Updates the visibility of the apps shortcut and the managed bookmarks 67 // folder based on the pref values. 68 void OnExtraButtonsVisibilityChanged(); 69 70 DISALLOW_COPY_AND_ASSIGN(BookmarkBarBridge); 71}; 72 73#endif // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_BRIDGE_H_ 74