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

Side by Side Diff: chrome/browser/ui/views/find_bar_view.cc

Issue 2441863002: Remove some more !IsModeMaterial code. (Closed)
Patch Set: pull more shades Created 4 years, 2 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/views/find_bar_view.h" 5 #include "chrome/browser/ui/views/find_bar_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/i18n/number_formatting.h" 9 #include "base/i18n/number_formatting.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 104
105 DISALLOW_COPY_AND_ASSIGN(FocusForwarderView); 105 DISALLOW_COPY_AND_ASSIGN(FocusForwarderView);
106 }; 106 };
107 107
108 } // namespace 108 } // namespace
109 109
110 //////////////////////////////////////////////////////////////////////////////// 110 ////////////////////////////////////////////////////////////////////////////////
111 // FindBarView, public: 111 // FindBarView, public:
112 112
113 FindBarView::FindBarView(FindBarHost* host) 113 FindBarView::FindBarView(FindBarHost* host)
114 : DropdownBarView(host), 114 : find_bar_host_(host),
115 find_text_(new views::Textfield), 115 find_text_(new views::Textfield),
116 match_count_text_(new MatchCountLabel()), 116 match_count_text_(new MatchCountLabel()),
117 focus_forwarder_view_(new FocusForwarderView(find_text_)), 117 focus_forwarder_view_(new FocusForwarderView(find_text_)),
118 separator_(new views::Separator(views::Separator::VERTICAL)), 118 separator_(new views::Separator(views::Separator::VERTICAL)),
119 find_previous_button_(new views::VectorIconButton(this)), 119 find_previous_button_(new views::VectorIconButton(this)),
120 find_next_button_(new views::VectorIconButton(this)), 120 find_next_button_(new views::VectorIconButton(this)),
121 close_button_(new views::VectorIconButton(this)) { 121 close_button_(new views::VectorIconButton(this)) {
122 find_text_->set_id(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD); 122 find_text_->set_id(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD);
123 find_text_->set_default_width_in_chars(kDefaultCharWidth); 123 find_text_->set_default_width_in_chars(kDefaultCharWidth);
124 find_text_->set_controller(this); 124 find_text_->set_controller(this);
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 //////////////////////////////////////////////////////////////////////////////// 278 ////////////////////////////////////////////////////////////////////////////////
279 // FindBarView, views::VectorIconButtonDelegate implementation: 279 // FindBarView, views::VectorIconButtonDelegate implementation:
280 280
281 void FindBarView::ButtonPressed( 281 void FindBarView::ButtonPressed(
282 views::Button* sender, const ui::Event& event) { 282 views::Button* sender, const ui::Event& event) {
283 switch (sender->id()) { 283 switch (sender->id()) {
284 case VIEW_ID_FIND_IN_PAGE_PREVIOUS_BUTTON: 284 case VIEW_ID_FIND_IN_PAGE_PREVIOUS_BUTTON:
285 case VIEW_ID_FIND_IN_PAGE_NEXT_BUTTON: 285 case VIEW_ID_FIND_IN_PAGE_NEXT_BUTTON:
286 if (!find_text_->text().empty()) { 286 if (!find_text_->text().empty()) {
287 FindTabHelper* find_tab_helper = FindTabHelper::FromWebContents( 287 FindTabHelper* find_tab_helper = FindTabHelper::FromWebContents(
288 find_bar_host()->GetFindBarController()->web_contents()); 288 find_bar_host_->GetFindBarController()->web_contents());
289 find_tab_helper->StartFinding( 289 find_tab_helper->StartFinding(
290 find_text_->text(), 290 find_text_->text(),
291 sender->id() == VIEW_ID_FIND_IN_PAGE_NEXT_BUTTON, 291 sender->id() == VIEW_ID_FIND_IN_PAGE_NEXT_BUTTON,
292 false); // Not case sensitive. 292 false); // Not case sensitive.
293 } 293 }
294 break; 294 break;
295 case VIEW_ID_FIND_IN_PAGE_CLOSE_BUTTON: 295 case VIEW_ID_FIND_IN_PAGE_CLOSE_BUTTON:
296 find_bar_host()->GetFindBarController()->EndFindSession( 296 find_bar_host_->GetFindBarController()->EndFindSession(
297 FindBarController::kKeepSelectionOnPage, 297 FindBarController::kKeepSelectionOnPage,
298 FindBarController::kKeepResultsInFindBox); 298 FindBarController::kKeepResultsInFindBox);
299 break; 299 break;
300 default: 300 default:
301 NOTREACHED() << "Unknown button"; 301 NOTREACHED() << "Unknown button";
302 break; 302 break;
303 } 303 }
304 } 304 }
305 305
306 SkColor FindBarView::GetVectorIconBaseColor() const { 306 SkColor FindBarView::GetVectorIconBaseColor() const {
307 return GetNativeTheme()->GetSystemColor( 307 return GetNativeTheme()->GetSystemColor(
308 ui::NativeTheme::kColorId_TextfieldDefaultColor); 308 ui::NativeTheme::kColorId_TextfieldDefaultColor);
309 } 309 }
310 310
311 //////////////////////////////////////////////////////////////////////////////// 311 ////////////////////////////////////////////////////////////////////////////////
312 // FindBarView, views::TextfieldController implementation: 312 // FindBarView, views::TextfieldController implementation:
313 313
314 bool FindBarView::HandleKeyEvent(views::Textfield* sender, 314 bool FindBarView::HandleKeyEvent(views::Textfield* sender,
315 const ui::KeyEvent& key_event) { 315 const ui::KeyEvent& key_event) {
316 // If the dialog is not visible, there is no reason to process keyboard input. 316 // If the dialog is not visible, there is no reason to process keyboard input.
317 if (!host()->IsVisible()) 317 if (!find_bar_host_->IsVisible())
318 return false; 318 return false;
319 319
320 if (find_bar_host()->MaybeForwardKeyEventToWebpage(key_event)) 320 if (find_bar_host_->MaybeForwardKeyEventToWebpage(key_event))
321 return true; // Handled, we are done! 321 return true; // Handled, we are done!
322 322
323 if (key_event.key_code() == ui::VKEY_RETURN && 323 if (key_event.key_code() == ui::VKEY_RETURN &&
324 key_event.type() == ui::ET_KEY_PRESSED) { 324 key_event.type() == ui::ET_KEY_PRESSED) {
325 // Pressing Return/Enter starts the search (unless text box is empty). 325 // Pressing Return/Enter starts the search (unless text box is empty).
326 base::string16 find_string = find_text_->text(); 326 base::string16 find_string = find_text_->text();
327 if (!find_string.empty()) { 327 if (!find_string.empty()) {
328 FindBarController* controller = find_bar_host()->GetFindBarController(); 328 FindBarController* controller = find_bar_host_->GetFindBarController();
329 FindTabHelper* find_tab_helper = 329 FindTabHelper* find_tab_helper =
330 FindTabHelper::FromWebContents(controller->web_contents()); 330 FindTabHelper::FromWebContents(controller->web_contents());
331 // Search forwards for enter, backwards for shift-enter. 331 // Search forwards for enter, backwards for shift-enter.
332 find_tab_helper->StartFinding(find_string, 332 find_tab_helper->StartFinding(find_string,
333 !key_event.IsShiftDown(), 333 !key_event.IsShiftDown(),
334 false); // Not case sensitive. 334 false); // Not case sensitive.
335 } 335 }
336 return true; 336 return true;
337 } 337 }
338 338
(...skipping 13 matching lines...) Expand all
352 // See http://crbug.com/79002 352 // See http://crbug.com/79002
353 last_searched_text_.clear(); 353 last_searched_text_.clear();
354 } 354 }
355 355
356 views::View* FindBarView::TargetForRect(View* root, const gfx::Rect& rect) { 356 views::View* FindBarView::TargetForRect(View* root, const gfx::Rect& rect) {
357 DCHECK_EQ(match_count_text_, root); 357 DCHECK_EQ(match_count_text_, root);
358 return find_text_; 358 return find_text_;
359 } 359 }
360 360
361 void FindBarView::Find(const base::string16& search_text) { 361 void FindBarView::Find(const base::string16& search_text) {
362 FindBarController* controller = find_bar_host()->GetFindBarController(); 362 FindBarController* controller = find_bar_host_->GetFindBarController();
363 DCHECK(controller); 363 DCHECK(controller);
364 content::WebContents* web_contents = controller->web_contents(); 364 content::WebContents* web_contents = controller->web_contents();
365 // We must guard against a NULL web_contents, which can happen if the text 365 // We must guard against a NULL web_contents, which can happen if the text
366 // in the Find box is changed right after the tab is destroyed. Otherwise, it 366 // in the Find box is changed right after the tab is destroyed. Otherwise, it
367 // can lead to crashes, as exposed by automation testing in issue 8048. 367 // can lead to crashes, as exposed by automation testing in issue 8048.
368 if (!web_contents) 368 if (!web_contents)
369 return; 369 return;
370 FindTabHelper* find_tab_helper = FindTabHelper::FromWebContents(web_contents); 370 FindTabHelper* find_tab_helper = FindTabHelper::FromWebContents(web_contents);
371 371
372 last_searched_text_ = search_text; 372 last_searched_text_ = search_text;
373 373
374 // When the user changes something in the text box we check the contents and 374 // When the user changes something in the text box we check the contents and
375 // if the textbox contains something we set it as the new search string and 375 // if the textbox contains something we set it as the new search string and
376 // initiate search (even though old searches might be in progress). 376 // initiate search (even though old searches might be in progress).
377 if (!search_text.empty()) { 377 if (!search_text.empty()) {
378 // The last two params here are forward (true) and case sensitive (false). 378 // The last two params here are forward (true) and case sensitive (false).
379 find_tab_helper->StartFinding(search_text, true, false); 379 find_tab_helper->StartFinding(search_text, true, false);
380 } else { 380 } else {
381 find_tab_helper->StopFinding(FindBarController::kClearSelectionOnPage); 381 find_tab_helper->StopFinding(FindBarController::kClearSelectionOnPage);
382 UpdateForResult(find_tab_helper->find_result(), base::string16()); 382 UpdateForResult(find_tab_helper->find_result(), base::string16());
383 find_bar_host()->MoveWindowIfNecessary(gfx::Rect()); 383 find_bar_host_->MoveWindowIfNecessary(gfx::Rect());
384 384
385 // Clearing the text box should clear the prepopulate state so that when 385 // Clearing the text box should clear the prepopulate state so that when
386 // we close and reopen the Find box it doesn't show the search we just 386 // we close and reopen the Find box it doesn't show the search we just
387 // deleted. We can't do this on ChromeOS yet because we get ContentsChanged 387 // deleted. We can't do this on ChromeOS yet because we get ContentsChanged
388 // sent for a lot more things than just the user nulling out the search 388 // sent for a lot more things than just the user nulling out the search
389 // terms. See http://crbug.com/45372. 389 // terms. See http://crbug.com/45372.
390 Profile* profile = 390 Profile* profile =
391 Profile::FromBrowserContext(web_contents->GetBrowserContext()); 391 Profile::FromBrowserContext(web_contents->GetBrowserContext());
392 FindBarState* find_bar_state = FindBarStateFactory::GetForProfile(profile); 392 FindBarState* find_bar_state = FindBarStateFactory::GetForProfile(profile);
393 find_bar_state->set_last_prepopulate_text(base::string16()); 393 find_bar_state->set_last_prepopulate_text(base::string16());
394 } 394 }
395 } 395 }
396 396
397 void FindBarView::UpdateMatchCountAppearance(bool no_match) { 397 void FindBarView::UpdateMatchCountAppearance(bool no_match) {
398 bool enable_buttons = !find_text_->text().empty() && !no_match; 398 bool enable_buttons = !find_text_->text().empty() && !no_match;
399 find_previous_button_->SetEnabled(enable_buttons); 399 find_previous_button_->SetEnabled(enable_buttons);
400 find_next_button_->SetEnabled(enable_buttons); 400 find_next_button_->SetEnabled(enable_buttons);
401 } 401 }
402 402
403 FindBarHost* FindBarView::find_bar_host() const {
404 return static_cast<FindBarHost*>(host());
405 }
406
407 const char* FindBarView::GetClassName() const { 403 const char* FindBarView::GetClassName() const {
408 return "FindBarView"; 404 return "FindBarView";
409 } 405 }
410 406
411 void FindBarView::OnNativeThemeChanged(const ui::NativeTheme* theme) { 407 void FindBarView::OnNativeThemeChanged(const ui::NativeTheme* theme) {
412 SkColor bg_color = theme->GetSystemColor( 408 SkColor bg_color = theme->GetSystemColor(
413 ui::NativeTheme::kColorId_TextfieldDefaultBackground); 409 ui::NativeTheme::kColorId_TextfieldDefaultBackground);
414 auto border = base::MakeUnique<views::BubbleBorder>( 410 auto border = base::MakeUnique<views::BubbleBorder>(
415 views::BubbleBorder::NONE, views::BubbleBorder::SMALL_SHADOW, 411 views::BubbleBorder::NONE, views::BubbleBorder::SMALL_SHADOW,
416 bg_color); 412 bg_color);
417 set_background(new views::BubbleBackground(border.get())); 413 set_background(new views::BubbleBackground(border.get()));
418 SetBorder(std::move(border)); 414 SetBorder(std::move(border));
419 415
420 match_count_text_->SetBackgroundColor(bg_color); 416 match_count_text_->SetBackgroundColor(bg_color);
421 SkColor text_color = 417 SkColor text_color =
422 theme->GetSystemColor(ui::NativeTheme::kColorId_TextfieldDefaultColor); 418 theme->GetSystemColor(ui::NativeTheme::kColorId_TextfieldDefaultColor);
423 match_count_text_->SetEnabledColor(SkColorSetA(text_color, 0x69)); 419 match_count_text_->SetEnabledColor(SkColorSetA(text_color, 0x69));
424 separator_->SetColor(SkColorSetA(text_color, 0x26)); 420 separator_->SetColor(SkColorSetA(text_color, 0x26));
425 } 421 }
426 422
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698