OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/cocoa/location_bar_view_mac.h" | 5 #import "chrome/browser/cocoa/location_bar_view_mac.h" |
6 | 6 |
7 #include "app/l10n_util_mac.h" | 7 #include "app/l10n_util_mac.h" |
8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
9 #include "base/i18n/rtl.h" | 9 #include "base/i18n/rtl.h" |
10 #include "base/nsimage_cache_mac.h" | 10 #include "base/nsimage_cache_mac.h" |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 CommandUpdater* command_updater, | 97 CommandUpdater* command_updater, |
98 ToolbarModel* toolbar_model, | 98 ToolbarModel* toolbar_model, |
99 Profile* profile, | 99 Profile* profile, |
100 Browser* browser) | 100 Browser* browser) |
101 : edit_view_(new AutocompleteEditViewMac(this, bubble_positioner, | 101 : edit_view_(new AutocompleteEditViewMac(this, bubble_positioner, |
102 toolbar_model, profile, command_updater, field)), | 102 toolbar_model, profile, command_updater, field)), |
103 command_updater_(command_updater), | 103 command_updater_(command_updater), |
104 field_(field), | 104 field_(field), |
105 disposition_(CURRENT_TAB), | 105 disposition_(CURRENT_TAB), |
106 location_icon_view_(this), | 106 location_icon_view_(this), |
| 107 security_label_view_(), |
107 page_action_views_(this, profile, toolbar_model), | 108 page_action_views_(this, profile, toolbar_model), |
108 profile_(profile), | 109 profile_(profile), |
109 browser_(browser), | 110 browser_(browser), |
110 toolbar_model_(toolbar_model), | 111 toolbar_model_(toolbar_model), |
111 transition_(PageTransition::TYPED) { | 112 transition_(PageTransition::TYPED) { |
112 for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) { | 113 for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) { |
113 ContentSettingImageView* content_setting_view = | 114 ContentSettingImageView* content_setting_view = |
114 new ContentSettingImageView(static_cast<ContentSettingsType>(i), this, | 115 new ContentSettingImageView(static_cast<ContentSettingsType>(i), this, |
115 profile_); | 116 profile_); |
116 content_setting_views_.push_back(content_setting_view); | 117 content_setting_views_.push_back(content_setting_view); |
117 content_setting_view->SetVisible(false); | 118 content_setting_view->SetVisible(false); |
118 } | 119 } |
119 | 120 |
120 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; | 121 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; |
121 [cell setLocationIconView:&location_icon_view_]; | 122 [cell setLocationIconView:&location_icon_view_]; |
| 123 [cell setSecurityLabelView:&security_label_view_]; |
122 [cell setPageActionViewList:&page_action_views_]; | 124 [cell setPageActionViewList:&page_action_views_]; |
123 [cell setContentSettingViewsList:&content_setting_views_]; | 125 [cell setContentSettingViewsList:&content_setting_views_]; |
124 | 126 |
125 registrar_.Add(this, | 127 registrar_.Add(this, |
126 NotificationType::EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED, | 128 NotificationType::EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED, |
127 NotificationService::AllSources()); | 129 NotificationService::AllSources()); |
128 } | 130 } |
129 | 131 |
130 LocationBarViewMac::~LocationBarViewMac() { | 132 LocationBarViewMac::~LocationBarViewMac() { |
131 // Disconnect from cell in case it outlives us. | 133 // Disconnect from cell in case it outlives us. |
132 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; | 134 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; |
133 [cell setPageActionViewList:NULL]; | 135 [cell setPageActionViewList:NULL]; |
134 [cell setLocationIconView:NULL]; | 136 [cell setLocationIconView:NULL]; |
| 137 [cell setSecurityLabelView:NULL]; |
135 } | 138 } |
136 | 139 |
137 std::wstring LocationBarViewMac::GetInputString() const { | 140 std::wstring LocationBarViewMac::GetInputString() const { |
138 return location_input_; | 141 return location_input_; |
139 } | 142 } |
140 | 143 |
141 WindowOpenDisposition LocationBarViewMac::GetWindowOpenDisposition() const { | 144 WindowOpenDisposition LocationBarViewMac::GetWindowOpenDisposition() const { |
142 return disposition_; | 145 return disposition_; |
143 } | 146 } |
144 | 147 |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 } else { | 470 } else { |
468 location_icon_view_.SetImage( | 471 location_icon_view_.SetImage( |
469 ResourceBundle::GetSharedInstance().GetNSImageNamed(resource_id)); | 472 ResourceBundle::GetSharedInstance().GetNSImageNamed(resource_id)); |
470 location_icon_view_.SetVisible(true); | 473 location_icon_view_.SetVisible(true); |
471 SetSecurityLabel(); | 474 SetSecurityLabel(); |
472 } | 475 } |
473 [field_ resetFieldEditorFrameIfNeeded]; | 476 [field_ resetFieldEditorFrameIfNeeded]; |
474 } | 477 } |
475 | 478 |
476 void LocationBarViewMac::SetSecurityLabel() { | 479 void LocationBarViewMac::SetSecurityLabel() { |
477 // TODO(shess): Separate from location icon and move icon to left of address. | |
478 std::wstring security_info_text(toolbar_model_->GetSecurityInfoText()); | 480 std::wstring security_info_text(toolbar_model_->GetSecurityInfoText()); |
479 if (security_info_text.empty()) { | 481 if (security_info_text.empty()) { |
480 location_icon_view_.SetLabel(nil, nil, nil); | 482 security_label_view_.SetLabel(nil, nil, nil); |
| 483 security_label_view_.SetVisible(false); |
481 } else { | 484 } else { |
482 NSString* icon_label = base::SysWideToNSString(security_info_text); | 485 NSString* icon_label = base::SysWideToNSString(security_info_text); |
483 NSColor* color; | 486 NSColor* color; |
484 if (toolbar_model_->GetSecurityLevel() == ToolbarModel::EV_SECURE) { | 487 if (toolbar_model_->GetSecurityLevel() == ToolbarModel::EV_SECURE) { |
485 color = [NSColor colorWithCalibratedRed:kEVSecureTextColorRedComponent | 488 color = [NSColor colorWithCalibratedRed:kEVSecureTextColorRedComponent |
486 green:kEVSecureTextColorGreenComponent | 489 green:kEVSecureTextColorGreenComponent |
487 blue:kEVSecureTextColorBlueComponent | 490 blue:kEVSecureTextColorBlueComponent |
488 alpha:1.0]; | 491 alpha:1.0]; |
489 } else { | 492 } else { |
490 color = | 493 color = |
491 [NSColor colorWithCalibratedRed:kSecurityErrorTextColorRedComponent | 494 [NSColor colorWithCalibratedRed:kSecurityErrorTextColorRedComponent |
492 green:kSecurityErrorTextColorGreenComponent | 495 green:kSecurityErrorTextColorGreenComponent |
493 blue:kSecurityErrorTextColorBlueComponent | 496 blue:kSecurityErrorTextColorBlueComponent |
494 alpha:1.0]; | 497 alpha:1.0]; |
495 } | 498 } |
496 location_icon_view_.SetLabel(icon_label, [field_ font], color); | 499 security_label_view_.SetLabel(icon_label, [field_ font], color); |
| 500 security_label_view_.SetVisible(true); |
497 } | 501 } |
498 } | 502 } |
499 | 503 |
500 void LocationBarViewMac::Observe(NotificationType type, | 504 void LocationBarViewMac::Observe(NotificationType type, |
501 const NotificationSource& source, | 505 const NotificationSource& source, |
502 const NotificationDetails& details) { | 506 const NotificationDetails& details) { |
503 switch (type.value) { | 507 switch (type.value) { |
504 case NotificationType::EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED: { | 508 case NotificationType::EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED: { |
505 TabContents* contents = GetTabContents(); | 509 TabContents* contents = GetTabContents(); |
506 if (Details<TabContents>(contents) != details) | 510 if (Details<TabContents>(contents) != details) |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
559 NSAttributedString* attrStr = | 563 NSAttributedString* attrStr = |
560 [[NSAttributedString alloc] initWithString:text attributes:attributes]; | 564 [[NSAttributedString alloc] initWithString:text attributes:attributes]; |
561 label_.reset(attrStr); | 565 label_.reset(attrStr); |
562 } | 566 } |
563 } | 567 } |
564 | 568 |
565 void LocationBarViewMac::LocationBarImageView::SetVisible(bool visible) { | 569 void LocationBarViewMac::LocationBarImageView::SetVisible(bool visible) { |
566 visible_ = visible; | 570 visible_ = visible; |
567 } | 571 } |
568 | 572 |
| 573 NSSize LocationBarViewMac::LocationBarImageView::GetDefaultImageSize() const { |
| 574 return NSZeroSize; |
| 575 } |
| 576 |
| 577 NSSize LocationBarViewMac::LocationBarImageView::GetImageSize() const { |
| 578 NSImage* image = GetImage(); |
| 579 if (image) |
| 580 return [image size]; |
| 581 return GetDefaultImageSize(); |
| 582 } |
| 583 |
569 // LocationIconView ------------------------------------------------------------ | 584 // LocationIconView ------------------------------------------------------------ |
570 | 585 |
571 LocationBarViewMac::LocationIconView::LocationIconView( | 586 LocationBarViewMac::LocationIconView::LocationIconView( |
572 LocationBarViewMac* owner) | 587 LocationBarViewMac* owner) |
573 : owner_(owner) { | 588 : owner_(owner) { |
574 } | 589 } |
575 | 590 |
576 LocationBarViewMac::LocationIconView::~LocationIconView() {} | 591 LocationBarViewMac::LocationIconView::~LocationIconView() {} |
577 | 592 |
578 void LocationBarViewMac::LocationIconView::OnMousePressed(NSRect bounds) { | 593 void LocationBarViewMac::LocationIconView::OnMousePressed(NSRect bounds) { |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
615 ImageLoadingTracker::DONT_CACHE); | 630 ImageLoadingTracker::DONT_CACHE); |
616 } | 631 } |
617 | 632 |
618 registrar_.Add(this, NotificationType::EXTENSION_HOST_VIEW_SHOULD_CLOSE, | 633 registrar_.Add(this, NotificationType::EXTENSION_HOST_VIEW_SHOULD_CLOSE, |
619 Source<Profile>(profile_)); | 634 Source<Profile>(profile_)); |
620 } | 635 } |
621 | 636 |
622 LocationBarViewMac::PageActionImageView::~PageActionImageView() { | 637 LocationBarViewMac::PageActionImageView::~PageActionImageView() { |
623 } | 638 } |
624 | 639 |
625 NSSize LocationBarViewMac::PageActionImageView::GetPreferredImageSize() { | 640 NSSize LocationBarViewMac::PageActionImageView::GetDefaultImageSize() const { |
626 NSImage* image = GetImage(); | 641 return NSMakeSize(Extension::kPageActionIconMaxSize, |
627 if (image) { | 642 Extension::kPageActionIconMaxSize); |
628 return [image size]; | |
629 } else { | |
630 return NSMakeSize(Extension::kPageActionIconMaxSize, | |
631 Extension::kPageActionIconMaxSize); | |
632 } | |
633 } | 643 } |
634 | 644 |
635 // Overridden from LocationBarImageView. Either notify listeners or show a | 645 // Overridden from LocationBarImageView. Either notify listeners or show a |
636 // popup depending on the Page Action. | 646 // popup depending on the Page Action. |
637 void LocationBarViewMac::PageActionImageView::OnMousePressed(NSRect bounds) { | 647 void LocationBarViewMac::PageActionImageView::OnMousePressed(NSRect bounds) { |
638 if (current_tab_id_ < 0) { | 648 if (current_tab_id_ < 0) { |
639 NOTREACHED() << "No current tab."; | 649 NOTREACHED() << "No current tab."; |
640 // We don't want other code to try and handle this click. Returning true | 650 // We don't want other code to try and handle this click. Returning true |
641 // prevents this by indicating that we handled it. | 651 // prevents this by indicating that we handled it. |
642 return; | 652 return; |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
919 ++result; | 929 ++result; |
920 } | 930 } |
921 return result; | 931 return result; |
922 } | 932 } |
923 | 933 |
924 void LocationBarViewMac::PageActionViewList::OnMousePressed(NSRect iconFrame, | 934 void LocationBarViewMac::PageActionViewList::OnMousePressed(NSRect iconFrame, |
925 size_t index) { | 935 size_t index) { |
926 ViewAt(index)->OnMousePressed(iconFrame); | 936 ViewAt(index)->OnMousePressed(iconFrame); |
927 } | 937 } |
928 | 938 |
OLD | NEW |