// 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 "base/macros.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); ~FindBarBridge() override; FindBarCocoaController* find_bar_cocoa_controller() { return cocoa_controller_; } void SetFindBarController(FindBarController* find_bar_controller) override; FindBarController* GetFindBarController() const override; FindBarTesting* GetFindBarTesting() override; // Methods from FindBar. void Show(bool animate) override; void Hide(bool animate) override; void SetFocusAndSelection() override; void ClearResults(const FindNotificationDetails& results) override; void StopAnimation() override; void SetFindTextAndSelectedRange(const base::string16& find_text, const gfx::Range& selected_range) override; base::string16 GetFindText() override; gfx::Range GetSelectedRange() override; void UpdateUIForFindResult(const FindNotificationDetails& result, const base::string16& find_text) override; void AudibleAlert() override; bool IsFindBarVisible() override; void RestoreSavedFocus() override; bool HasGlobalFindPasteboard() override; void UpdateFindBarForChangedWebContents() override; void MoveWindowIfNecessary(const gfx::Rect& selection_rect) override; // Methods from FindBarTesting. bool GetFindBarWindowInfo(gfx::Point* position, bool* fully_visible) override; base::string16 GetFindSelectedText() override; base::string16 GetMatchCountText() override; 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_