OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/find_bar/find_bar_controller.h" | 5 #include "chrome/browser/ui/find_bar/find_bar_controller.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/i18n/rtl.h" | 9 #include "base/i18n/rtl.h" |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
11 #include "chrome/browser/ui/find_bar/find_bar.h" | 11 #include "chrome/browser/ui/find_bar/find_bar.h" |
12 #include "chrome/browser/ui/find_bar/find_bar_state.h" | 12 #include "chrome/browser/ui/find_bar/find_bar_state.h" |
13 #include "chrome/browser/ui/find_bar/find_tab_helper.h" | 13 #include "chrome/browser/ui/find_bar/find_tab_helper.h" |
14 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 14 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| 15 #include "chrome/common/chrome_notification_types.h" |
15 #include "content/browser/tab_contents/navigation_details.h" | 16 #include "content/browser/tab_contents/navigation_details.h" |
16 #include "content/browser/tab_contents/navigation_entry.h" | 17 #include "content/browser/tab_contents/navigation_entry.h" |
17 #include "content/common/notification_details.h" | 18 #include "content/common/notification_details.h" |
18 #include "content/common/notification_source.h" | 19 #include "content/common/notification_source.h" |
19 #include "ui/gfx/rect.h" | 20 #include "ui/gfx/rect.h" |
20 | 21 |
21 // The minimum space between the FindInPage window and the search result. | 22 // The minimum space between the FindInPage window and the search result. |
22 static const int kMinFindWndDistanceFromSelection = 5; | 23 static const int kMinFindWndDistanceFromSelection = 5; |
23 | 24 |
24 FindBarController::FindBarController(FindBar* find_bar) | 25 FindBarController::FindBarController(FindBar* find_bar) |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 // Hide any visible find window from the previous tab if NULL |tab_contents| | 78 // Hide any visible find window from the previous tab if NULL |tab_contents| |
78 // is passed in or if the find UI is not active in the new tab. | 79 // is passed in or if the find UI is not active in the new tab. |
79 if (find_bar_->IsFindBarVisible() && | 80 if (find_bar_->IsFindBarVisible() && |
80 (!tab_contents_ || !tab_contents_->find_tab_helper()->find_ui_active())) { | 81 (!tab_contents_ || !tab_contents_->find_tab_helper()->find_ui_active())) { |
81 find_bar_->Hide(false); | 82 find_bar_->Hide(false); |
82 } | 83 } |
83 | 84 |
84 if (!tab_contents_) | 85 if (!tab_contents_) |
85 return; | 86 return; |
86 | 87 |
87 registrar_.Add(this, NotificationType::FIND_RESULT_AVAILABLE, | 88 registrar_.Add(this, chrome::NOTIFICATION_FIND_RESULT_AVAILABLE, |
88 Source<TabContents>(tab_contents_->tab_contents())); | 89 Source<TabContents>(tab_contents_->tab_contents())); |
89 registrar_.Add(this, NotificationType::NAV_ENTRY_COMMITTED, | 90 registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
90 Source<NavigationController>(&tab_contents_->controller())); | 91 Source<NavigationController>(&tab_contents_->controller())); |
91 | 92 |
92 MaybeSetPrepopulateText(); | 93 MaybeSetPrepopulateText(); |
93 | 94 |
94 if (tab_contents_->find_tab_helper()->find_ui_active()) { | 95 if (tab_contents_->find_tab_helper()->find_ui_active()) { |
95 // A tab with a visible find bar just got selected and we need to show the | 96 // A tab with a visible find bar just got selected and we need to show the |
96 // find bar but without animation since it was already animated into its | 97 // find bar but without animation since it was already animated into its |
97 // visible state. We also want to reset the window location so that | 98 // visible state. We also want to reset the window location so that |
98 // we don't surprise the user by popping up to the left for no apparent | 99 // we don't surprise the user by popping up to the left for no apparent |
99 // reason. | 100 // reason. |
100 find_bar_->Show(false); | 101 find_bar_->Show(false); |
101 } | 102 } |
102 | 103 |
103 UpdateFindBarForCurrentResult(); | 104 UpdateFindBarForCurrentResult(); |
104 } | 105 } |
105 | 106 |
106 //////////////////////////////////////////////////////////////////////////////// | 107 //////////////////////////////////////////////////////////////////////////////// |
107 // FindBarHost, NotificationObserver implementation: | 108 // FindBarHost, NotificationObserver implementation: |
108 | 109 |
109 void FindBarController::Observe(NotificationType type, | 110 void FindBarController::Observe(int type, |
110 const NotificationSource& source, | 111 const NotificationSource& source, |
111 const NotificationDetails& details) { | 112 const NotificationDetails& details) { |
112 FindTabHelper* find_tab_helper = tab_contents_->find_tab_helper(); | 113 FindTabHelper* find_tab_helper = tab_contents_->find_tab_helper(); |
113 if (type == NotificationType::FIND_RESULT_AVAILABLE) { | 114 if (type == chrome::NOTIFICATION_FIND_RESULT_AVAILABLE) { |
114 // Don't update for notifications from TabContentses other than the one we | 115 // Don't update for notifications from TabContentses other than the one we |
115 // are actively tracking. | 116 // are actively tracking. |
116 if (Source<TabContents>(source).ptr() == tab_contents_->tab_contents()) { | 117 if (Source<TabContents>(source).ptr() == tab_contents_->tab_contents()) { |
117 UpdateFindBarForCurrentResult(); | 118 UpdateFindBarForCurrentResult(); |
118 if (find_tab_helper->find_result().final_update() && | 119 if (find_tab_helper->find_result().final_update() && |
119 find_tab_helper->find_result().number_of_matches() == 0) { | 120 find_tab_helper->find_result().number_of_matches() == 0) { |
120 const string16& last_search = find_tab_helper->previous_find_text(); | 121 const string16& last_search = find_tab_helper->previous_find_text(); |
121 const string16& current_search = find_tab_helper->find_text(); | 122 const string16& current_search = find_tab_helper->find_text(); |
122 if (last_search.find(current_search) != 0) | 123 if (last_search.find(current_search) != 0) |
123 find_bar_->AudibleAlert(); | 124 find_bar_->AudibleAlert(); |
124 } | 125 } |
125 } | 126 } |
126 } else if (type == NotificationType::NAV_ENTRY_COMMITTED) { | 127 } else if (type == content::NOTIFICATION_NAV_ENTRY_COMMITTED) { |
127 NavigationController* source_controller = | 128 NavigationController* source_controller = |
128 Source<NavigationController>(source).ptr(); | 129 Source<NavigationController>(source).ptr(); |
129 if (source_controller == &tab_contents_->controller()) { | 130 if (source_controller == &tab_contents_->controller()) { |
130 content::LoadCommittedDetails* commit_details = | 131 content::LoadCommittedDetails* commit_details = |
131 Details<content::LoadCommittedDetails>(details).ptr(); | 132 Details<content::LoadCommittedDetails>(details).ptr(); |
132 PageTransition::Type transition_type = | 133 PageTransition::Type transition_type = |
133 commit_details->entry->transition_type(); | 134 commit_details->entry->transition_type(); |
134 // We hide the FindInPage window when the user navigates away, except on | 135 // We hide the FindInPage window when the user navigates away, except on |
135 // reload. | 136 // reload. |
136 if (find_bar_->IsFindBarVisible()) { | 137 if (find_bar_->IsFindBarVisible()) { |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 // shown it is showing the right state for this tab. We update the find text | 229 // shown it is showing the right state for this tab. We update the find text |
229 // _first_ since the FindBarView checks its emptiness to see if it should | 230 // _first_ since the FindBarView checks its emptiness to see if it should |
230 // clear the result count display when there's nothing in the box. | 231 // clear the result count display when there's nothing in the box. |
231 find_bar_->SetFindText(find_string); | 232 find_bar_->SetFindText(find_string); |
232 #else | 233 #else |
233 // Having a per-tab find_string is not compatible with OS X's find pasteboard, | 234 // Having a per-tab find_string is not compatible with OS X's find pasteboard, |
234 // so we always have the same find text in all find bars. This is done through | 235 // so we always have the same find text in all find bars. This is done through |
235 // the find pasteboard mechanism, so don't set the text here. | 236 // the find pasteboard mechanism, so don't set the text here. |
236 #endif | 237 #endif |
237 } | 238 } |
OLD | NEW |