// Copyright (c) 2011 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. #ifndef CHROME_BROWSER_UI_COCOA_FIND_BAR_FIND_BAR_BRIDGE_H_ #define CHROME_BROWSER_UI_COCOA_FIND_BAR_FIND_BAR_BRIDGE_H_ #include "base/compiler_specific.h" #include "base/logging.h" #include "chrome/browser/ui/find_bar/find_bar.h" class Browser; class FindBarController; // This class is included by find_bar_host_browsertest.cc, so it has to be // objc-free. #ifdef __OBJC__ @class FindBarCocoaController; #else class FindBarCocoaController; #endif // Implementation of FindBar for the Mac. This class simply passes // each message along to |cocoa_controller_|. // // The initialization here is a bit complicated. FindBarBridge is // created by a static method in BrowserWindow. The FindBarBridge // constructor creates a FindBarCocoaController, which in turn loads a // FindBarView from a nib file. All of this is happening outside of // the main view hierarchy, so the static method also calls // BrowserWindowCocoa::AddFindBar() in order to add its FindBarView to // the cocoa views hierarchy. // // Memory ownership is relatively straightforward. The FindBarBridge // object is owned by the Browser. FindBarCocoaController is retained // by bother FindBarBridge and BrowserWindowController, since both use it. class FindBarBridge : public FindBar, public FindBarTesting { public: FindBarBridge(Browser* browser); virtual ~FindBarBridge(); FindBarCocoaController* find_bar_cocoa_controller() { return cocoa_controller_; } virtual void SetFindBarController( FindBarController* find_bar_controller) OVERRIDE; virtual FindBarController* GetFindBarController() const OVERRIDE; virtual FindBarTesting* GetFindBarTesting() OVERRIDE; // Methods from FindBar. virtual void Show(bool animate) OVERRIDE; virtual void Hide(bool animate) OVERRIDE; virtual void SetFocusAndSelection() OVERRIDE; virtual void ClearResults(const FindNotificationDetails& results) OVERRIDE; virtual void StopAnimation() OVERRIDE; virtual void SetFindTextAndSelectedRange( const base::string16& find_text, const gfx::Range& selected_range) OVERRIDE; virtual base::string16 GetFindText() OVERRIDE; virtual gfx::Range GetSelectedRange() OVERRIDE; virtual void UpdateUIForFindResult(const FindNotificationDetails& result, const base::string16& find_text) OVERRIDE; virtual void AudibleAlert() OVERRIDE; virtual bool IsFindBarVisible() OVERRIDE; virtual void RestoreSavedFocus() OVERRIDE; virtual bool HasGlobalFindPasteboard() OVERRIDE; virtual void UpdateFindBarForChangedWebContents() OVERRIDE; virtual void MoveWindowIfNecessary(const gfx::Rect& selection_rect, bool no_redraw) OVERRIDE; // Methods from FindBarTesting. virtual bool GetFindBarWindowInfo(gfx::Point* position, bool* fully_visible) OVERRIDE; virtual base::string16 GetFindSelectedText() OVERRIDE; virtual base::string16 GetMatchCountText() OVERRIDE; virtual int GetWidth() OVERRIDE; // Used to disable find bar animations when testing. static bool disable_animations_during_testing_; private: // Pointer to the cocoa controller which manages the cocoa view. Is // never nil. FindBarCocoaController* cocoa_controller_; // Pointer back to the owning controller. FindBarController* find_bar_controller_; // weak, owns us DISALLOW_COPY_AND_ASSIGN(FindBarBridge); }; #endif // CHROME_BROWSER_UI_COCOA_FIND_BAR_FIND_BAR_BRIDGE_H_