find_bar_bridge.mm revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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#import <Cocoa/Cocoa.h> 6#include "chrome/browser/ui/cocoa/find_bar/find_bar_bridge.h" 7 8#include "base/strings/sys_string_conversions.h" 9#import "chrome/browser/ui/cocoa/find_bar/find_bar_cocoa_controller.h" 10#include "ui/gfx/range/range.h" 11 12// static 13bool FindBarBridge::disable_animations_during_testing_ = false; 14 15FindBarBridge::FindBarBridge(Browser* browser) 16 : find_bar_controller_(NULL) { 17 cocoa_controller_ = [[FindBarCocoaController alloc] initWithBrowser:browser]; 18 [cocoa_controller_ setFindBarBridge:this]; 19} 20 21FindBarBridge::~FindBarBridge() { 22 [cocoa_controller_ release]; 23} 24 25void FindBarBridge::SetFindBarController( 26 FindBarController* find_bar_controller) { 27 find_bar_controller_ = find_bar_controller; 28} 29 30FindBarController* FindBarBridge::GetFindBarController() const { 31 return find_bar_controller_; 32} 33 34FindBarTesting* FindBarBridge::GetFindBarTesting() { 35 return this; 36} 37 38void FindBarBridge::Show(bool animate) { 39 bool really_animate = animate && !disable_animations_during_testing_; 40 [cocoa_controller_ showFindBar:(really_animate ? YES : NO)]; 41} 42 43void FindBarBridge::Hide(bool animate) { 44 bool really_animate = animate && !disable_animations_during_testing_; 45 [cocoa_controller_ hideFindBar:(really_animate ? YES : NO)]; 46} 47 48void FindBarBridge::SetFocusAndSelection() { 49 [cocoa_controller_ setFocusAndSelection]; 50} 51 52void FindBarBridge::ClearResults(const FindNotificationDetails& results) { 53 [cocoa_controller_ clearResults:results]; 54} 55 56void FindBarBridge::SetFindTextAndSelectedRange( 57 const base::string16& find_text, 58 const gfx::Range& selected_range) { 59 [cocoa_controller_ setFindText:base::SysUTF16ToNSString(find_text) 60 selectedRange:selected_range.ToNSRange()]; 61} 62 63base::string16 FindBarBridge::GetFindText() { 64 return base::SysNSStringToUTF16([cocoa_controller_ findText]); 65} 66 67gfx::Range FindBarBridge::GetSelectedRange() { 68 return gfx::Range([cocoa_controller_ selectedRange]); 69} 70 71void FindBarBridge::UpdateUIForFindResult(const FindNotificationDetails& result, 72 const base::string16& find_text) { 73 [cocoa_controller_ updateUIForFindResult:result withText:find_text]; 74} 75 76void FindBarBridge::AudibleAlert() { 77 // Beep beep, beep beep, Yeah! 78 NSBeep(); 79} 80 81bool FindBarBridge::IsFindBarVisible() { 82 return [cocoa_controller_ isFindBarVisible] ? true : false; 83} 84 85void FindBarBridge::MoveWindowIfNecessary(const gfx::Rect& selection_rect, 86 bool no_redraw) { 87 // See FindBarCocoaController moveFindBarToAvoidRect. 88} 89 90void FindBarBridge::StopAnimation() { 91 [cocoa_controller_ stopAnimation]; 92} 93 94void FindBarBridge::RestoreSavedFocus() { 95 [cocoa_controller_ restoreSavedFocus]; 96} 97 98bool FindBarBridge::HasGlobalFindPasteboard() { 99 return true; 100} 101 102void FindBarBridge::UpdateFindBarForChangedWebContents() { 103 [cocoa_controller_ updateFindBarForChangedWebContents]; 104} 105 106bool FindBarBridge::GetFindBarWindowInfo(gfx::Point* position, 107 bool* fully_visible) { 108 NSWindow* window = [[cocoa_controller_ view] window]; 109 bool window_visible = [window isVisible] ? true : false; 110 if (position) { 111 if (window_visible) 112 *position = [cocoa_controller_ findBarWindowPosition]; 113 else 114 *position = gfx::Point(0, 0); 115 } 116 if (fully_visible) { 117 *fully_visible = window_visible && 118 [cocoa_controller_ isFindBarVisible] && 119 ![cocoa_controller_ isFindBarAnimating]; 120 } 121 return window_visible; 122} 123 124base::string16 FindBarBridge::GetFindSelectedText() { 125 // This function is currently only used in Views. 126 NOTIMPLEMENTED(); 127 return base::string16(); 128} 129 130base::string16 FindBarBridge::GetMatchCountText() { 131 return base::SysNSStringToUTF16([cocoa_controller_ matchCountText]); 132} 133 134int FindBarBridge::GetWidth() { 135 return [cocoa_controller_ findBarWidth]; 136} 137