1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_UI_COCOA_FIND_BAR_FIND_BAR_BRIDGE_H_ 6 #define CHROME_BROWSER_UI_COCOA_FIND_BAR_FIND_BAR_BRIDGE_H_ 7 8 #include "base/compiler_specific.h" 9 #include "base/logging.h" 10 #include "chrome/browser/ui/find_bar/find_bar.h" 11 12 class Browser; 13 class FindBarController; 14 15 // This class is included by find_bar_host_browsertest.cc, so it has to be 16 // objc-free. 17 #ifdef __OBJC__ 18 @class FindBarCocoaController; 19 #else 20 class FindBarCocoaController; 21 #endif 22 23 // Implementation of FindBar for the Mac. This class simply passes 24 // each message along to |cocoa_controller_|. 25 // 26 // The initialization here is a bit complicated. FindBarBridge is 27 // created by a static method in BrowserWindow. The FindBarBridge 28 // constructor creates a FindBarCocoaController, which in turn loads a 29 // FindBarView from a nib file. All of this is happening outside of 30 // the main view hierarchy, so the static method also calls 31 // BrowserWindowCocoa::AddFindBar() in order to add its FindBarView to 32 // the cocoa views hierarchy. 33 // 34 // Memory ownership is relatively straightforward. The FindBarBridge 35 // object is owned by the Browser. FindBarCocoaController is retained 36 // by bother FindBarBridge and BrowserWindowController, since both use it. 37 38 class FindBarBridge : public FindBar, 39 public FindBarTesting { 40 public: 41 FindBarBridge(Browser* browser); 42 virtual ~FindBarBridge(); 43 44 FindBarCocoaController* find_bar_cocoa_controller() { 45 return cocoa_controller_; 46 } 47 48 virtual void SetFindBarController( 49 FindBarController* find_bar_controller) OVERRIDE; 50 51 virtual FindBarController* GetFindBarController() const OVERRIDE; 52 53 virtual FindBarTesting* GetFindBarTesting() OVERRIDE; 54 55 // Methods from FindBar. 56 virtual void Show(bool animate) OVERRIDE; 57 virtual void Hide(bool animate) OVERRIDE; 58 virtual void SetFocusAndSelection() OVERRIDE; 59 virtual void ClearResults(const FindNotificationDetails& results) OVERRIDE; 60 virtual void StopAnimation() OVERRIDE; 61 virtual void SetFindText(const string16& find_text) OVERRIDE; 62 virtual void UpdateUIForFindResult(const FindNotificationDetails& result, 63 const string16& find_text) OVERRIDE; 64 virtual void AudibleAlert() OVERRIDE; 65 virtual bool IsFindBarVisible() OVERRIDE; 66 virtual void RestoreSavedFocus() OVERRIDE; 67 virtual bool HasGlobalFindPasteboard() OVERRIDE; 68 virtual void UpdateFindBarForChangedWebContents() OVERRIDE; 69 virtual void MoveWindowIfNecessary(const gfx::Rect& selection_rect, 70 bool no_redraw) OVERRIDE; 71 72 // Methods from FindBarTesting. 73 virtual bool GetFindBarWindowInfo(gfx::Point* position, 74 bool* fully_visible) OVERRIDE; 75 virtual string16 GetFindText() OVERRIDE; 76 virtual string16 GetFindSelectedText() OVERRIDE; 77 virtual string16 GetMatchCountText() OVERRIDE; 78 virtual int GetWidth() OVERRIDE; 79 80 // Used to disable find bar animations when testing. 81 static bool disable_animations_during_testing_; 82 83 private: 84 // Pointer to the cocoa controller which manages the cocoa view. Is 85 // never nil. 86 FindBarCocoaController* cocoa_controller_; 87 88 // Pointer back to the owning controller. 89 FindBarController* find_bar_controller_; // weak, owns us 90 91 DISALLOW_COPY_AND_ASSIGN(FindBarBridge); 92 }; 93 94 #endif // CHROME_BROWSER_UI_COCOA_FIND_BAR_FIND_BAR_BRIDGE_H_ 95