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

Side by Side Diff: chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm

Issue 768413003: TEST ONLY - DO NOT SUBMIT - FOR TRYBOTS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 #import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h" 5 #import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
(...skipping 24 matching lines...) Expand all
35 #import "chrome/browser/ui/cocoa/first_run_bubble_controller.h" 35 #import "chrome/browser/ui/cocoa/first_run_bubble_controller.h"
36 #import "chrome/browser/ui/cocoa/location_bar/autocomplete_text_field.h" 36 #import "chrome/browser/ui/cocoa/location_bar/autocomplete_text_field.h"
37 #import "chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_cell.h" 37 #import "chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_cell.h"
38 #import "chrome/browser/ui/cocoa/location_bar/content_setting_decoration.h" 38 #import "chrome/browser/ui/cocoa/location_bar/content_setting_decoration.h"
39 #import "chrome/browser/ui/cocoa/location_bar/ev_bubble_decoration.h" 39 #import "chrome/browser/ui/cocoa/location_bar/ev_bubble_decoration.h"
40 #import "chrome/browser/ui/cocoa/location_bar/generated_credit_card_decoration.h " 40 #import "chrome/browser/ui/cocoa/location_bar/generated_credit_card_decoration.h "
41 #import "chrome/browser/ui/cocoa/location_bar/keyword_hint_decoration.h" 41 #import "chrome/browser/ui/cocoa/location_bar/keyword_hint_decoration.h"
42 #import "chrome/browser/ui/cocoa/location_bar/location_icon_decoration.h" 42 #import "chrome/browser/ui/cocoa/location_bar/location_icon_decoration.h"
43 #import "chrome/browser/ui/cocoa/location_bar/manage_passwords_decoration.h" 43 #import "chrome/browser/ui/cocoa/location_bar/manage_passwords_decoration.h"
44 #import "chrome/browser/ui/cocoa/location_bar/mic_search_decoration.h" 44 #import "chrome/browser/ui/cocoa/location_bar/mic_search_decoration.h"
45 #import "chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.h"
46 #import "chrome/browser/ui/cocoa/location_bar/page_action_decoration.h" 45 #import "chrome/browser/ui/cocoa/location_bar/page_action_decoration.h"
47 #import "chrome/browser/ui/cocoa/location_bar/search_button_decoration.h"
48 #import "chrome/browser/ui/cocoa/location_bar/selected_keyword_decoration.h" 46 #import "chrome/browser/ui/cocoa/location_bar/selected_keyword_decoration.h"
49 #import "chrome/browser/ui/cocoa/location_bar/star_decoration.h" 47 #import "chrome/browser/ui/cocoa/location_bar/star_decoration.h"
50 #import "chrome/browser/ui/cocoa/location_bar/translate_decoration.h" 48 #import "chrome/browser/ui/cocoa/location_bar/translate_decoration.h"
51 #import "chrome/browser/ui/cocoa/location_bar/zoom_decoration.h" 49 #import "chrome/browser/ui/cocoa/location_bar/zoom_decoration.h"
52 #import "chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.h" 50 #import "chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.h"
53 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" 51 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h"
54 #include "chrome/browser/ui/content_settings/content_setting_image_model.h" 52 #include "chrome/browser/ui/content_settings/content_setting_image_model.h"
55 #import "chrome/browser/ui/omnibox/omnibox_popup_model.h" 53 #import "chrome/browser/ui/omnibox/omnibox_popup_model.h"
56 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" 54 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h"
57 #include "chrome/browser/ui/tabs/tab_strip_model.h" 55 #include "chrome/browser/ui/tabs/tab_strip_model.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 selected_keyword_decoration_(new SelectedKeywordDecoration()), 104 selected_keyword_decoration_(new SelectedKeywordDecoration()),
107 ev_bubble_decoration_( 105 ev_bubble_decoration_(
108 new EVBubbleDecoration(location_icon_decoration_.get())), 106 new EVBubbleDecoration(location_icon_decoration_.get())),
109 star_decoration_(new StarDecoration(command_updater)), 107 star_decoration_(new StarDecoration(command_updater)),
110 translate_decoration_(new TranslateDecoration(command_updater)), 108 translate_decoration_(new TranslateDecoration(command_updater)),
111 zoom_decoration_(new ZoomDecoration(this)), 109 zoom_decoration_(new ZoomDecoration(this)),
112 keyword_hint_decoration_(new KeywordHintDecoration()), 110 keyword_hint_decoration_(new KeywordHintDecoration()),
113 mic_search_decoration_(new MicSearchDecoration(command_updater)), 111 mic_search_decoration_(new MicSearchDecoration(command_updater)),
114 generated_credit_card_decoration_( 112 generated_credit_card_decoration_(
115 new GeneratedCreditCardDecoration(this)), 113 new GeneratedCreditCardDecoration(this)),
116 search_button_decoration_(new SearchButtonDecoration(this)),
117 manage_passwords_decoration_( 114 manage_passwords_decoration_(
118 new ManagePasswordsDecoration(command_updater, this)), 115 new ManagePasswordsDecoration(command_updater, this)),
119 browser_(browser), 116 browser_(browser),
120 weak_ptr_factory_(this) { 117 weak_ptr_factory_(this) {
121 for (size_t i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) { 118 for (size_t i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) {
122 DCHECK_EQ(i, content_setting_decorations_.size()); 119 DCHECK_EQ(i, content_setting_decorations_.size());
123 ContentSettingsType type = static_cast<ContentSettingsType>(i); 120 ContentSettingsType type = static_cast<ContentSettingsType>(i);
124 content_setting_decorations_.push_back( 121 content_setting_decorations_.push_back(
125 new ContentSettingDecoration(type, this, profile)); 122 new ContentSettingDecoration(type, this, profile));
126 } 123 }
127 124
128 edit_bookmarks_enabled_.Init( 125 edit_bookmarks_enabled_.Init(
129 bookmarks::prefs::kEditBookmarksEnabled, profile->GetPrefs(), 126 bookmarks::prefs::kEditBookmarksEnabled, profile->GetPrefs(),
130 base::Bind(&LocationBarViewMac::OnEditBookmarksEnabledChanged, 127 base::Bind(&LocationBarViewMac::OnEditBookmarksEnabledChanged,
131 base::Unretained(this))); 128 base::Unretained(this)));
132 129
133 browser_->search_model()->AddObserver(this); 130 browser_->search_model()->AddObserver(this);
134 131
135 [[field_ cell] setIsPopupMode: 132 [[field_ cell] setIsPopupMode:
136 !browser->SupportsWindowFeature(Browser::FEATURE_TABSTRIP)]; 133 !browser->SupportsWindowFeature(Browser::FEATURE_TABSTRIP)];
137 134
138 if (chrome::ShouldDisplayOriginChip())
139 origin_chip_decoration_.reset(new OriginChipDecoration(
140 this, location_icon_decoration_.get()));
141
142 // Sets images for the decorations, and performs a layout. This call ensures 135 // Sets images for the decorations, and performs a layout. This call ensures
143 // that this class is in a consistent state after initialization. 136 // that this class is in a consistent state after initialization.
144 OnChanged(); 137 OnChanged();
145 } 138 }
146 139
147 LocationBarViewMac::~LocationBarViewMac() { 140 LocationBarViewMac::~LocationBarViewMac() {
148 // Disconnect from cell in case it outlives us. 141 // Disconnect from cell in case it outlives us.
149 [[field_ cell] clearDecorations]; 142 [[field_ cell] clearDecorations];
150 143
151 browser_->search_model()->RemoveObserver(this); 144 browser_->search_model()->RemoveObserver(this);
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 354
362 NSPoint LocationBarViewMac::GetTranslateBubblePoint() const { 355 NSPoint LocationBarViewMac::GetTranslateBubblePoint() const {
363 return [field_ bubblePointForDecoration:translate_decoration_.get()]; 356 return [field_ bubblePointForDecoration:translate_decoration_.get()];
364 } 357 }
365 358
366 NSPoint LocationBarViewMac::GetManagePasswordsBubblePoint() const { 359 NSPoint LocationBarViewMac::GetManagePasswordsBubblePoint() const {
367 return [field_ bubblePointForDecoration:manage_passwords_decoration_.get()]; 360 return [field_ bubblePointForDecoration:manage_passwords_decoration_.get()];
368 } 361 }
369 362
370 NSPoint LocationBarViewMac::GetPageInfoBubblePoint() const { 363 NSPoint LocationBarViewMac::GetPageInfoBubblePoint() const {
371 if (origin_chip_decoration_ && origin_chip_decoration_->IsVisible()) { 364 if (ev_bubble_decoration_->IsVisible()) {
372 return [field_ bubblePointForDecoration:origin_chip_decoration_.get()];
373 } else if (ev_bubble_decoration_->IsVisible()) {
374 return [field_ bubblePointForDecoration:ev_bubble_decoration_.get()]; 365 return [field_ bubblePointForDecoration:ev_bubble_decoration_.get()];
375 } else { 366 } else {
376 return [field_ bubblePointForDecoration:location_icon_decoration_.get()]; 367 return [field_ bubblePointForDecoration:location_icon_decoration_.get()];
377 } 368 }
378 } 369 }
379 370
380 NSPoint LocationBarViewMac::GetGeneratedCreditCardBubblePoint() const { 371 NSPoint LocationBarViewMac::GetGeneratedCreditCardBubblePoint() const {
381 return 372 return
382 [field_ bubblePointForDecoration:generated_credit_card_decoration_.get()]; 373 [field_ bubblePointForDecoration:generated_credit_card_decoration_.get()];
383 } 374 }
384 375
385 void LocationBarViewMac::OnDecorationsChanged() { 376 void LocationBarViewMac::OnDecorationsChanged() {
386 // TODO(shess): The field-editor frame and cursor rects should not 377 // TODO(shess): The field-editor frame and cursor rects should not
387 // change, here. 378 // change, here.
388 [field_ updateMouseTracking]; 379 [field_ updateMouseTracking];
389 [field_ resetFieldEditorFrameIfNeeded]; 380 [field_ resetFieldEditorFrameIfNeeded];
390 [field_ setNeedsDisplay:YES]; 381 [field_ setNeedsDisplay:YES];
391 } 382 }
392 383
393 // TODO(shess): This function should over time grow to closely match 384 // TODO(shess): This function should over time grow to closely match
394 // the views Layout() function. 385 // the views Layout() function.
395 void LocationBarViewMac::Layout() { 386 void LocationBarViewMac::Layout() {
396 AutocompleteTextFieldCell* cell = [field_ cell]; 387 AutocompleteTextFieldCell* cell = [field_ cell];
397 388
398 // Reset the left-hand decorations. 389 // Reset the left-hand decorations.
399 // TODO(shess): Shortly, this code will live somewhere else, like in 390 // TODO(shess): Shortly, this code will live somewhere else, like in
400 // the constructor. I am still wrestling with how best to deal with 391 // the constructor. I am still wrestling with how best to deal with
401 // right-hand decorations, which are not a static set. 392 // right-hand decorations, which are not a static set.
402 [cell clearDecorations]; 393 [cell clearDecorations];
403 if (origin_chip_decoration_.get())
404 [cell addLeftDecoration:origin_chip_decoration_.get()];
405 [cell addLeftDecoration:location_icon_decoration_.get()]; 394 [cell addLeftDecoration:location_icon_decoration_.get()];
406 [cell addLeftDecoration:selected_keyword_decoration_.get()]; 395 [cell addLeftDecoration:selected_keyword_decoration_.get()];
407 if (!origin_chip_decoration_.get()) 396 [cell addLeftDecoration:ev_bubble_decoration_.get()];
408 [cell addLeftDecoration:ev_bubble_decoration_.get()];
409 [cell addRightDecoration:search_button_decoration_.get()];
410 [cell addRightDecoration:star_decoration_.get()]; 397 [cell addRightDecoration:star_decoration_.get()];
411 [cell addRightDecoration:translate_decoration_.get()]; 398 [cell addRightDecoration:translate_decoration_.get()];
412 [cell addRightDecoration:zoom_decoration_.get()]; 399 [cell addRightDecoration:zoom_decoration_.get()];
413 [cell addRightDecoration:generated_credit_card_decoration_.get()]; 400 [cell addRightDecoration:generated_credit_card_decoration_.get()];
414 [cell addRightDecoration:manage_passwords_decoration_.get()]; 401 [cell addRightDecoration:manage_passwords_decoration_.get()];
415 402
416 // Note that display order is right to left. 403 // Note that display order is right to left.
417 for (size_t i = 0; i < page_action_decorations_.size(); ++i) { 404 for (size_t i = 0; i < page_action_decorations_.size(); ++i) {
418 [cell addRightDecoration:page_action_decorations_[i]]; 405 [cell addRightDecoration:page_action_decorations_[i]];
419 } 406 }
420 407
421 for (ScopedVector<ContentSettingDecoration>::iterator i = 408 for (ScopedVector<ContentSettingDecoration>::iterator i =
422 content_setting_decorations_.begin(); 409 content_setting_decorations_.begin();
423 i != content_setting_decorations_.end(); ++i) { 410 i != content_setting_decorations_.end(); ++i) {
424 [cell addRightDecoration:*i]; 411 [cell addRightDecoration:*i];
425 } 412 }
426 413
427 [cell addRightDecoration:keyword_hint_decoration_.get()]; 414 [cell addRightDecoration:keyword_hint_decoration_.get()];
428 [cell addRightDecoration:mic_search_decoration_.get()]; 415 [cell addRightDecoration:mic_search_decoration_.get()];
429 416
430 // By default only the location icon is visible. 417 // By default only the location icon is visible.
431 location_icon_decoration_->SetVisible(!origin_chip_decoration_.get() || 418 location_icon_decoration_->SetVisible(true);
432 !origin_chip_decoration_->IsVisible());
433 selected_keyword_decoration_->SetVisible(false); 419 selected_keyword_decoration_->SetVisible(false);
434 ev_bubble_decoration_->SetVisible(false); 420 ev_bubble_decoration_->SetVisible(false);
435 keyword_hint_decoration_->SetVisible(false); 421 keyword_hint_decoration_->SetVisible(false);
436 422
437 // Get the keyword to use for keyword-search and hinting. 423 // Get the keyword to use for keyword-search and hinting.
438 const base::string16 keyword = omnibox_view_->model()->keyword(); 424 const base::string16 keyword = omnibox_view_->model()->keyword();
439 base::string16 short_name; 425 base::string16 short_name;
440 bool is_extension_keyword = false; 426 bool is_extension_keyword = false;
441 if (!keyword.empty()) { 427 if (!keyword.empty()) {
442 short_name = TemplateURLServiceFactory::GetForProfile(profile())-> 428 short_name = TemplateURLServiceFactory::GetForProfile(profile())->
443 GetKeywordShortName(keyword, &is_extension_keyword); 429 GetKeywordShortName(keyword, &is_extension_keyword);
444 } 430 }
445 431
446 const bool is_keyword_hint = omnibox_view_->model()->is_keyword_hint(); 432 const bool is_keyword_hint = omnibox_view_->model()->is_keyword_hint();
447 if (!keyword.empty() && !is_keyword_hint) { 433 if (!keyword.empty() && !is_keyword_hint) {
448 // Switch from location icon to keyword mode. 434 // Switch from location icon to keyword mode.
449 location_icon_decoration_->SetVisible(false); 435 location_icon_decoration_->SetVisible(false);
450 selected_keyword_decoration_->SetVisible(true); 436 selected_keyword_decoration_->SetVisible(true);
451 selected_keyword_decoration_->SetKeyword(short_name, is_extension_keyword); 437 selected_keyword_decoration_->SetKeyword(short_name, is_extension_keyword);
452 selected_keyword_decoration_->SetImage(GetKeywordImage(keyword)); 438 selected_keyword_decoration_->SetImage(GetKeywordImage(keyword));
453 } else if ((GetToolbarModel()->GetSecurityLevel(false) == 439 } else if ((GetToolbarModel()->GetSecurityLevel(false) ==
454 ToolbarModel::EV_SECURE) && !origin_chip_decoration_.get()) { 440 ToolbarModel::EV_SECURE)) {
455 // Switch from location icon to show the EV bubble instead. 441 // Switch from location icon to show the EV bubble instead.
456 location_icon_decoration_->SetVisible(false); 442 location_icon_decoration_->SetVisible(false);
457 ev_bubble_decoration_->SetVisible(true); 443 ev_bubble_decoration_->SetVisible(true);
458 444
459 base::string16 label(GetToolbarModel()->GetEVCertName()); 445 base::string16 label(GetToolbarModel()->GetEVCertName());
460 ev_bubble_decoration_->SetFullLabel(base::SysUTF16ToNSString(label)); 446 ev_bubble_decoration_->SetFullLabel(base::SysUTF16ToNSString(label));
461 } else if (!keyword.empty() && is_keyword_hint) { 447 } else if (!keyword.empty() && is_keyword_hint) {
462 keyword_hint_decoration_->SetKeyword(short_name, 448 keyword_hint_decoration_->SetKeyword(short_name,
463 is_extension_keyword); 449 is_extension_keyword);
464 keyword_hint_decoration_->SetVisible(true); 450 keyword_hint_decoration_->SetVisible(true);
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 omnibox_view_->Update(); 531 omnibox_view_->Update();
546 OnChanged(); 532 OnChanged();
547 } 533 }
548 534
549 void LocationBarViewMac::OnChanged() { 535 void LocationBarViewMac::OnChanged() {
550 // Update the location-bar icon. 536 // Update the location-bar icon.
551 const int resource_id = omnibox_view_->GetIcon(); 537 const int resource_id = omnibox_view_->GetIcon();
552 NSImage* image = OmniboxViewMac::ImageForResource(resource_id); 538 NSImage* image = OmniboxViewMac::ImageForResource(resource_id);
553 location_icon_decoration_->SetImage(image); 539 location_icon_decoration_->SetImage(image);
554 ev_bubble_decoration_->SetImage(image); 540 ev_bubble_decoration_->SetImage(image);
555
556 if (origin_chip_decoration_.get())
557 origin_chip_decoration_->Update();
558
559 ToolbarModel* toolbar_model = GetToolbarModel();
560 const chrome::DisplaySearchButtonConditions conditions =
561 chrome::GetDisplaySearchButtonConditions();
562 const bool meets_conditions =
Justin Donnelly 2014/12/03 16:07:25 I'm really sad to see these features ripped out. B
groby-ooo-7-16 2015/01/10 00:54:06 Acknowledged.
563 (conditions == chrome::DISPLAY_SEARCH_BUTTON_ALWAYS) ||
564 ((conditions != chrome::DISPLAY_SEARCH_BUTTON_NEVER) &&
565 (toolbar_model->WouldPerformSearchTermReplacement(true) ||
566 ((conditions == chrome::DISPLAY_SEARCH_BUTTON_FOR_STR_OR_IIP) &&
567 toolbar_model->input_in_progress())));
568 search_button_decoration_->SetVisible(
569 ![[field_ cell] isPopupMode] && meets_conditions);
570 search_button_decoration_->SetIcon(
571 (resource_id == IDR_OMNIBOX_SEARCH) ?
572 IDR_OMNIBOX_SEARCH_BUTTON_LOUPE : IDR_OMNIBOX_SEARCH_BUTTON_ARROW);
573
574 Layout(); 541 Layout();
575 542
576 InstantService* instant_service = 543 InstantService* instant_service =
577 InstantServiceFactory::GetForProfile(profile()); 544 InstantServiceFactory::GetForProfile(profile());
578 if (instant_service) { 545 if (instant_service) {
579 gfx::Rect bounds(NSRectToCGRect([field_ frame])); 546 gfx::Rect bounds(NSRectToCGRect([field_ frame]));
580 instant_service->OnOmniboxStartMarginChanged(bounds.x()); 547 instant_service->OnOmniboxStartMarginChanged(bounds.x());
581 } 548 }
582 } 549 }
583 550
584 void LocationBarViewMac::OnSetFocus() { 551 void LocationBarViewMac::OnSetFocus() {
585 // Update the keyword and search hint states. 552 // Update the keyword and search hint states.
586 OnChanged(); 553 OnChanged();
587 } 554 }
588 555
589 void LocationBarViewMac::ShowURL() { 556 void LocationBarViewMac::ShowURL() {
590 omnibox_view_->ShowURL(); 557 omnibox_view_->ShowURL();
591 } 558 }
592 559
593 void LocationBarViewMac::HideURL() {
594 omnibox_view_->HideURL();
595 }
596
597 void LocationBarViewMac::EndOriginChipAnimations(bool cancel_fade) {
598 }
599
600 InstantController* LocationBarViewMac::GetInstant() { 560 InstantController* LocationBarViewMac::GetInstant() {
601 return browser_->instant_controller() ? 561 return browser_->instant_controller() ?
602 browser_->instant_controller()->instant() : NULL; 562 browser_->instant_controller()->instant() : NULL;
603 } 563 }
604 564
605 WebContents* LocationBarViewMac::GetWebContents() { 565 WebContents* LocationBarViewMac::GetWebContents() {
606 return browser_->tab_strip_model()->GetActiveWebContents(); 566 return browser_->tab_strip_model()->GetActiveWebContents();
607 } 567 }
608 568
609 ToolbarModel* LocationBarViewMac::GetToolbarModel() { 569 ToolbarModel* LocationBarViewMac::GetToolbarModel() {
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 } 717 }
758 718
759 bool LocationBarViewMac::UpdateMicSearchDecorationVisibility() { 719 bool LocationBarViewMac::UpdateMicSearchDecorationVisibility() {
760 bool is_visible = !GetToolbarModel()->input_in_progress() && 720 bool is_visible = !GetToolbarModel()->input_in_progress() &&
761 browser_->search_model()->voice_search_supported(); 721 browser_->search_model()->voice_search_supported();
762 if (mic_search_decoration_->IsVisible() == is_visible) 722 if (mic_search_decoration_->IsVisible() == is_visible)
763 return false; 723 return false;
764 mic_search_decoration_->SetVisible(is_visible); 724 mic_search_decoration_->SetVisible(is_visible);
765 return true; 725 return true;
766 } 726 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698