Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Side by Side Diff: chrome/browser/ui/find_bar/find_tab_helper.cc

Issue 9030010: Move most of the remaining users of WebContentsObserver::tab_contents() to use web_contents(). (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 8 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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_tab_helper.h" 5 #include "chrome/browser/ui/find_bar/find_tab_helper.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/ui/find_bar/find_bar_state.h" 10 #include "chrome/browser/ui/find_bar/find_bar_state.h"
11 #include "content/browser/renderer_host/render_view_host.h" 11 #include "content/browser/renderer_host/render_view_host.h"
12 #include "content/browser/tab_contents/tab_contents.h" 12 #include "content/browser/tab_contents/tab_contents.h"
13 #include "chrome/common/chrome_notification_types.h" 13 #include "chrome/common/chrome_notification_types.h"
14 #include "content/public/browser/notification_service.h" 14 #include "content/public/browser/notification_service.h"
15 #include "content/public/common/stop_find_action.h" 15 #include "content/public/common/stop_find_action.h"
16 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFindOptions.h" 16 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFindOptions.h"
17 17
18 using WebKit::WebFindOptions; 18 using WebKit::WebFindOptions;
19 using content::WebContents;
19 20
20 // static 21 // static
21 int FindTabHelper::find_request_id_counter_ = -1; 22 int FindTabHelper::find_request_id_counter_ = -1;
22 23
23 FindTabHelper::FindTabHelper(TabContents* tab_contents) 24 FindTabHelper::FindTabHelper(TabContents* tab_contents)
24 : content::WebContentsObserver(tab_contents), 25 : content::WebContentsObserver(tab_contents),
25 find_ui_active_(false), 26 find_ui_active_(false),
26 find_op_aborted_(false), 27 find_op_aborted_(false),
27 current_find_request_id_(find_request_id_counter_++), 28 current_find_request_id_(find_request_id_counter_++),
28 last_search_case_sensitive_(false), 29 last_search_case_sensitive_(false),
29 last_search_result_() { 30 last_search_result_() {
30 } 31 }
31 32
32 FindTabHelper::~FindTabHelper() { 33 FindTabHelper::~FindTabHelper() {
33 } 34 }
34 35
35 void FindTabHelper::StartFinding(string16 search_string, 36 void FindTabHelper::StartFinding(string16 search_string,
36 bool forward_direction, 37 bool forward_direction,
37 bool case_sensitive) { 38 bool case_sensitive) {
38 // If search_string is empty, it means FindNext was pressed with a keyboard 39 // If search_string is empty, it means FindNext was pressed with a keyboard
39 // shortcut so unless we have something to search for we return early. 40 // shortcut so unless we have something to search for we return early.
40 if (search_string.empty() && find_text_.empty()) { 41 if (search_string.empty() && find_text_.empty()) {
41 Profile* profile = 42 Profile* profile =
42 Profile::FromBrowserContext(tab_contents()->GetBrowserContext()); 43 Profile::FromBrowserContext(web_contents()->GetBrowserContext());
43 string16 last_search_prepopulate_text = 44 string16 last_search_prepopulate_text =
44 FindBarState::GetLastPrepopulateText(profile); 45 FindBarState::GetLastPrepopulateText(profile);
45 46
46 // Try the last thing we searched for on this tab, then the last thing 47 // Try the last thing we searched for on this tab, then the last thing
47 // searched for on any tab. 48 // searched for on any tab.
48 if (!previous_find_text_.empty()) 49 if (!previous_find_text_.empty())
49 search_string = previous_find_text_; 50 search_string = previous_find_text_;
50 else if (!last_search_prepopulate_text.empty()) 51 else if (!last_search_prepopulate_text.empty())
51 search_string = last_search_prepopulate_text; 52 search_string = last_search_prepopulate_text;
52 else 53 else
(...skipping 16 matching lines...) Expand all
69 current_find_request_id_ = find_request_id_counter_++; 70 current_find_request_id_ = find_request_id_counter_++;
70 71
71 if (!search_string.empty()) 72 if (!search_string.empty())
72 find_text_ = search_string; 73 find_text_ = search_string;
73 last_search_case_sensitive_ = case_sensitive; 74 last_search_case_sensitive_ = case_sensitive;
74 75
75 find_op_aborted_ = false; 76 find_op_aborted_ = false;
76 77
77 // Keep track of what the last search was across the tabs. 78 // Keep track of what the last search was across the tabs.
78 Profile* profile = 79 Profile* profile =
79 Profile::FromBrowserContext(tab_contents()->GetBrowserContext()); 80 Profile::FromBrowserContext(web_contents()->GetBrowserContext());
80 FindBarState* find_bar_state = profile->GetFindBarState(); 81 FindBarState* find_bar_state = profile->GetFindBarState();
81 find_bar_state->set_last_prepopulate_text(find_text_); 82 find_bar_state->set_last_prepopulate_text(find_text_);
82 83
83 WebFindOptions options; 84 WebFindOptions options;
84 options.forward = forward_direction; 85 options.forward = forward_direction;
85 options.matchCase = case_sensitive; 86 options.matchCase = case_sensitive;
86 options.findNext = find_next; 87 options.findNext = find_next;
87 tab_contents()->GetRenderViewHost()->Find(current_find_request_id_, 88 web_contents()->GetRenderViewHost()->Find(current_find_request_id_,
88 find_text_, options); 89 find_text_, options);
89 } 90 }
90 91
91 void FindTabHelper::StopFinding( 92 void FindTabHelper::StopFinding(
92 FindBarController::SelectionAction selection_action) { 93 FindBarController::SelectionAction selection_action) {
93 if (selection_action == FindBarController::kClearSelection) { 94 if (selection_action == FindBarController::kClearSelection) {
94 // kClearSelection means the find string has been cleared by the user, but 95 // kClearSelection means the find string has been cleared by the user, but
95 // the UI has not been dismissed. In that case we want to clear the 96 // the UI has not been dismissed. In that case we want to clear the
96 // previously remembered search (http://crbug.com/42639). 97 // previously remembered search (http://crbug.com/42639).
97 previous_find_text_ = string16(); 98 previous_find_text_ = string16();
(...skipping 14 matching lines...) Expand all
112 case FindBarController::kKeepSelection: 113 case FindBarController::kKeepSelection:
113 action = content::STOP_FIND_ACTION_KEEP_SELECTION; 114 action = content::STOP_FIND_ACTION_KEEP_SELECTION;
114 break; 115 break;
115 case FindBarController::kActivateSelection: 116 case FindBarController::kActivateSelection:
116 action = content::STOP_FIND_ACTION_ACTIVATE_SELECTION; 117 action = content::STOP_FIND_ACTION_ACTIVATE_SELECTION;
117 break; 118 break;
118 default: 119 default:
119 NOTREACHED(); 120 NOTREACHED();
120 action = content::STOP_FIND_ACTION_KEEP_SELECTION; 121 action = content::STOP_FIND_ACTION_KEEP_SELECTION;
121 } 122 }
122 tab_contents()->GetRenderViewHost()->StopFinding(action); 123 web_contents()->GetRenderViewHost()->StopFinding(action);
123 } 124 }
124 125
125 void FindTabHelper::HandleFindReply(int request_id, 126 void FindTabHelper::HandleFindReply(int request_id,
126 int number_of_matches, 127 int number_of_matches,
127 const gfx::Rect& selection_rect, 128 const gfx::Rect& selection_rect,
128 int active_match_ordinal, 129 int active_match_ordinal,
129 bool final_update) { 130 bool final_update) {
130 // Ignore responses for requests that have been aborted. 131 // Ignore responses for requests that have been aborted.
131 // Ignore responses for requests other than the one we have most recently 132 // Ignore responses for requests other than the one we have most recently
132 // issued. That way we won't act on stale results when the user has 133 // issued. That way we won't act on stale results when the user has
133 // already typed in another query. 134 // already typed in another query.
134 if (!find_op_aborted_ && request_id == current_find_request_id_) { 135 if (!find_op_aborted_ && request_id == current_find_request_id_) {
135 if (number_of_matches == -1) 136 if (number_of_matches == -1)
136 number_of_matches = last_search_result_.number_of_matches(); 137 number_of_matches = last_search_result_.number_of_matches();
137 if (active_match_ordinal == -1) 138 if (active_match_ordinal == -1)
138 active_match_ordinal = last_search_result_.active_match_ordinal(); 139 active_match_ordinal = last_search_result_.active_match_ordinal();
139 140
140 gfx::Rect selection = selection_rect; 141 gfx::Rect selection = selection_rect;
141 if (selection.IsEmpty()) 142 if (selection.IsEmpty())
142 selection = last_search_result_.selection_rect(); 143 selection = last_search_result_.selection_rect();
143 144
144 // Notify the UI, automation and any other observers that a find result was 145 // Notify the UI, automation and any other observers that a find result was
145 // found. 146 // found.
146 last_search_result_ = FindNotificationDetails( 147 last_search_result_ = FindNotificationDetails(
147 request_id, number_of_matches, selection, active_match_ordinal, 148 request_id, number_of_matches, selection, active_match_ordinal,
148 final_update); 149 final_update);
149 content::NotificationService::current()->Notify( 150 content::NotificationService::current()->Notify(
150 chrome::NOTIFICATION_FIND_RESULT_AVAILABLE, 151 chrome::NOTIFICATION_FIND_RESULT_AVAILABLE,
151 content::Source<TabContents>(tab_contents()), 152 content::Source<WebContents>(web_contents()),
152 content::Details<FindNotificationDetails>(&last_search_result_)); 153 content::Details<FindNotificationDetails>(&last_search_result_));
153 } 154 }
154 } 155 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/find_bar/find_bar_controller.cc ('k') | chrome/browser/ui/prefs/prefs_tab_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698