| OLD | NEW |
| 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 22 matching lines...) Expand all Loading... |
| 33 #import "chrome/browser/ui/cocoa/content_settings/content_setting_bubble_cocoa.h
" | 33 #import "chrome/browser/ui/cocoa/content_settings/content_setting_bubble_cocoa.h
" |
| 34 #import "chrome/browser/ui/cocoa/extensions/extension_popup_controller.h" | 34 #import "chrome/browser/ui/cocoa/extensions/extension_popup_controller.h" |
| 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/keyword_hint_decoration.h" | 40 #import "chrome/browser/ui/cocoa/location_bar/keyword_hint_decoration.h" |
| 41 #import "chrome/browser/ui/cocoa/location_bar/location_icon_decoration.h" | 41 #import "chrome/browser/ui/cocoa/location_bar/location_icon_decoration.h" |
| 42 #import "chrome/browser/ui/cocoa/location_bar/manage_passwords_decoration.h" | 42 #import "chrome/browser/ui/cocoa/location_bar/manage_passwords_decoration.h" |
| 43 #import "chrome/browser/ui/cocoa/location_bar/mic_search_decoration.h" |
| 43 #import "chrome/browser/ui/cocoa/location_bar/page_action_decoration.h" | 44 #import "chrome/browser/ui/cocoa/location_bar/page_action_decoration.h" |
| 44 #import "chrome/browser/ui/cocoa/location_bar/selected_keyword_decoration.h" | 45 #import "chrome/browser/ui/cocoa/location_bar/selected_keyword_decoration.h" |
| 45 #import "chrome/browser/ui/cocoa/location_bar/star_decoration.h" | 46 #import "chrome/browser/ui/cocoa/location_bar/star_decoration.h" |
| 46 #import "chrome/browser/ui/cocoa/location_bar/translate_decoration.h" | 47 #import "chrome/browser/ui/cocoa/location_bar/translate_decoration.h" |
| 47 #import "chrome/browser/ui/cocoa/location_bar/zoom_decoration.h" | 48 #import "chrome/browser/ui/cocoa/location_bar/zoom_decoration.h" |
| 48 #import "chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.h" | 49 #import "chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.h" |
| 49 #import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h" | 50 #import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h" |
| 50 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" | 51 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" |
| 51 #include "chrome/browser/ui/content_settings/content_setting_image_model.h" | 52 #include "chrome/browser/ui/content_settings/content_setting_image_model.h" |
| 52 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" | 53 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 omnibox_view_(new OmniboxViewMac(this, profile, command_updater, field)), | 95 omnibox_view_(new OmniboxViewMac(this, profile, command_updater, field)), |
| 95 field_(field), | 96 field_(field), |
| 96 location_icon_decoration_(new LocationIconDecoration(this)), | 97 location_icon_decoration_(new LocationIconDecoration(this)), |
| 97 selected_keyword_decoration_(new SelectedKeywordDecoration()), | 98 selected_keyword_decoration_(new SelectedKeywordDecoration()), |
| 98 ev_bubble_decoration_( | 99 ev_bubble_decoration_( |
| 99 new EVBubbleDecoration(location_icon_decoration_.get())), | 100 new EVBubbleDecoration(location_icon_decoration_.get())), |
| 100 star_decoration_(new StarDecoration(command_updater)), | 101 star_decoration_(new StarDecoration(command_updater)), |
| 101 translate_decoration_(new TranslateDecoration(command_updater)), | 102 translate_decoration_(new TranslateDecoration(command_updater)), |
| 102 zoom_decoration_(new ZoomDecoration(this)), | 103 zoom_decoration_(new ZoomDecoration(this)), |
| 103 keyword_hint_decoration_(new KeywordHintDecoration()), | 104 keyword_hint_decoration_(new KeywordHintDecoration()), |
| 105 mic_search_decoration_(new MicSearchDecoration(command_updater)), |
| 104 manage_passwords_decoration_( | 106 manage_passwords_decoration_( |
| 105 new ManagePasswordsDecoration(command_updater, this)), | 107 new ManagePasswordsDecoration(command_updater, this)), |
| 106 browser_(browser), | 108 browser_(browser), |
| 107 location_bar_visible_(true), | 109 location_bar_visible_(true), |
| 108 weak_ptr_factory_(this) { | 110 weak_ptr_factory_(this) { |
| 109 for (ContentSettingsType type : | 111 for (ContentSettingsType type : |
| 110 ContentSettingBubbleModel::GetSupportedBubbleTypes()) { | 112 ContentSettingBubbleModel::GetSupportedBubbleTypes()) { |
| 111 content_setting_decorations_.push_back( | 113 content_setting_decorations_.push_back( |
| 112 new ContentSettingDecoration(type, this, profile)); | 114 new ContentSettingDecoration(type, this, profile)); |
| 113 } | 115 } |
| 114 | 116 |
| 115 edit_bookmarks_enabled_.Init( | 117 edit_bookmarks_enabled_.Init( |
| 116 bookmarks::prefs::kEditBookmarksEnabled, profile->GetPrefs(), | 118 bookmarks::prefs::kEditBookmarksEnabled, profile->GetPrefs(), |
| 117 base::Bind(&LocationBarViewMac::OnEditBookmarksEnabledChanged, | 119 base::Bind(&LocationBarViewMac::OnEditBookmarksEnabledChanged, |
| 118 base::Unretained(this))); | 120 base::Unretained(this))); |
| 119 | 121 |
| 122 browser_->search_model()->AddObserver(this); |
| 123 |
| 120 ui_zoom::ZoomEventManager::GetForBrowserContext(profile) | 124 ui_zoom::ZoomEventManager::GetForBrowserContext(profile) |
| 121 ->AddZoomEventManagerObserver(this); | 125 ->AddZoomEventManagerObserver(this); |
| 122 | 126 |
| 123 [[field_ cell] setIsPopupMode: | 127 [[field_ cell] setIsPopupMode: |
| 124 !browser->SupportsWindowFeature(Browser::FEATURE_TABSTRIP)]; | 128 !browser->SupportsWindowFeature(Browser::FEATURE_TABSTRIP)]; |
| 125 | 129 |
| 126 // Sets images for the decorations, and performs a layout. This call ensures | 130 // Sets images for the decorations, and performs a layout. This call ensures |
| 127 // that this class is in a consistent state after initialization. | 131 // that this class is in a consistent state after initialization. |
| 128 OnChanged(); | 132 OnChanged(); |
| 129 } | 133 } |
| 130 | 134 |
| 131 LocationBarViewMac::~LocationBarViewMac() { | 135 LocationBarViewMac::~LocationBarViewMac() { |
| 132 // Disconnect from cell in case it outlives us. | 136 // Disconnect from cell in case it outlives us. |
| 133 [[field_ cell] clearDecorations]; | 137 [[field_ cell] clearDecorations]; |
| 134 | 138 |
| 139 browser_->search_model()->RemoveObserver(this); |
| 135 ui_zoom::ZoomEventManager::GetForBrowserContext(profile()) | 140 ui_zoom::ZoomEventManager::GetForBrowserContext(profile()) |
| 136 ->RemoveZoomEventManagerObserver(this); | 141 ->RemoveZoomEventManagerObserver(this); |
| 137 } | 142 } |
| 138 | 143 |
| 139 void LocationBarViewMac::ShowFirstRunBubble() { | 144 void LocationBarViewMac::ShowFirstRunBubble() { |
| 140 // We need the browser window to be shown before we can show the bubble, but | 145 // We need the browser window to be shown before we can show the bubble, but |
| 141 // we get called before that's happened. | 146 // we get called before that's happened. |
| 142 base::MessageLoop::current()->PostTask( | 147 base::MessageLoop::current()->PostTask( |
| 143 FROM_HERE, base::Bind(&LocationBarViewMac::ShowFirstRunBubbleInternal, | 148 FROM_HERE, base::Bind(&LocationBarViewMac::ShowFirstRunBubbleInternal, |
| 144 weak_ptr_factory_.GetWeakPtr())); | 149 weak_ptr_factory_.GetWeakPtr())); |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 [cell addRightDecoration:page_action_decorations_[i]]; | 403 [cell addRightDecoration:page_action_decorations_[i]]; |
| 399 } | 404 } |
| 400 | 405 |
| 401 for (ScopedVector<ContentSettingDecoration>::iterator i = | 406 for (ScopedVector<ContentSettingDecoration>::iterator i = |
| 402 content_setting_decorations_.begin(); | 407 content_setting_decorations_.begin(); |
| 403 i != content_setting_decorations_.end(); ++i) { | 408 i != content_setting_decorations_.end(); ++i) { |
| 404 [cell addRightDecoration:*i]; | 409 [cell addRightDecoration:*i]; |
| 405 } | 410 } |
| 406 | 411 |
| 407 [cell addRightDecoration:keyword_hint_decoration_.get()]; | 412 [cell addRightDecoration:keyword_hint_decoration_.get()]; |
| 413 [cell addRightDecoration:mic_search_decoration_.get()]; |
| 408 | 414 |
| 409 // By default only the location icon is visible. | 415 // By default only the location icon is visible. |
| 410 location_icon_decoration_->SetVisible(true); | 416 location_icon_decoration_->SetVisible(true); |
| 411 selected_keyword_decoration_->SetVisible(false); | 417 selected_keyword_decoration_->SetVisible(false); |
| 412 ev_bubble_decoration_->SetVisible(false); | 418 ev_bubble_decoration_->SetVisible(false); |
| 413 keyword_hint_decoration_->SetVisible(false); | 419 keyword_hint_decoration_->SetVisible(false); |
| 414 | 420 |
| 415 // Get the keyword to use for keyword-search and hinting. | 421 // Get the keyword to use for keyword-search and hinting. |
| 416 const base::string16 keyword = omnibox_view_->model()->keyword(); | 422 const base::string16 keyword = omnibox_view_->model()->keyword(); |
| 417 base::string16 short_name; | 423 base::string16 short_name; |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 510 omnibox_view_->ResetTabState(contents); | 516 omnibox_view_->ResetTabState(contents); |
| 511 } | 517 } |
| 512 | 518 |
| 513 void LocationBarViewMac::Update(const WebContents* contents) { | 519 void LocationBarViewMac::Update(const WebContents* contents) { |
| 514 UpdateManagePasswordsIconAndBubble(); | 520 UpdateManagePasswordsIconAndBubble(); |
| 515 UpdateBookmarkStarVisibility(); | 521 UpdateBookmarkStarVisibility(); |
| 516 UpdateTranslateDecoration(); | 522 UpdateTranslateDecoration(); |
| 517 UpdateZoomDecoration(/*default_zoom_changed=*/false); | 523 UpdateZoomDecoration(/*default_zoom_changed=*/false); |
| 518 RefreshPageActionDecorations(); | 524 RefreshPageActionDecorations(); |
| 519 RefreshContentSettingsDecorations(); | 525 RefreshContentSettingsDecorations(); |
| 526 UpdateMicSearchDecorationVisibility(); |
| 520 if (contents) | 527 if (contents) |
| 521 omnibox_view_->OnTabChanged(contents); | 528 omnibox_view_->OnTabChanged(contents); |
| 522 else | 529 else |
| 523 omnibox_view_->Update(); | 530 omnibox_view_->Update(); |
| 524 OnChanged(); | 531 OnChanged(); |
| 525 } | 532 } |
| 526 | 533 |
| 527 void LocationBarViewMac::UpdateWithoutTabRestore() { | 534 void LocationBarViewMac::UpdateWithoutTabRestore() { |
| 528 Update(nullptr); | 535 Update(nullptr); |
| 529 } | 536 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 570 profile())->GetTemplateURLForKeyword(keyword); | 577 profile())->GetTemplateURLForKeyword(keyword); |
| 571 if (template_url && | 578 if (template_url && |
| 572 (template_url->GetType() == TemplateURL::OMNIBOX_API_EXTENSION)) { | 579 (template_url->GetType() == TemplateURL::OMNIBOX_API_EXTENSION)) { |
| 573 return extensions::OmniboxAPI::Get(profile())-> | 580 return extensions::OmniboxAPI::Get(profile())-> |
| 574 GetOmniboxIcon(template_url->GetExtensionId()).AsNSImage(); | 581 GetOmniboxIcon(template_url->GetExtensionId()).AsNSImage(); |
| 575 } | 582 } |
| 576 | 583 |
| 577 return OmniboxViewMac::ImageForResource(IDR_OMNIBOX_SEARCH); | 584 return OmniboxViewMac::ImageForResource(IDR_OMNIBOX_SEARCH); |
| 578 } | 585 } |
| 579 | 586 |
| 587 void LocationBarViewMac::ModelChanged(const SearchModel::State& old_state, |
| 588 const SearchModel::State& new_state) { |
| 589 if (UpdateMicSearchDecorationVisibility()) |
| 590 Layout(); |
| 591 } |
| 592 |
| 580 void LocationBarViewMac::PostNotification(NSString* notification) { | 593 void LocationBarViewMac::PostNotification(NSString* notification) { |
| 581 [[NSNotificationCenter defaultCenter] postNotificationName:notification | 594 [[NSNotificationCenter defaultCenter] postNotificationName:notification |
| 582 object:[NSValue valueWithPointer:this]]; | 595 object:[NSValue valueWithPointer:this]]; |
| 583 } | 596 } |
| 584 | 597 |
| 585 PageActionDecoration* LocationBarViewMac::GetPageActionDecoration( | 598 PageActionDecoration* LocationBarViewMac::GetPageActionDecoration( |
| 586 ExtensionAction* page_action) { | 599 ExtensionAction* page_action) { |
| 587 DCHECK(page_action); | 600 DCHECK(page_action); |
| 588 for (size_t i = 0; i < page_action_decorations_.size(); ++i) { | 601 for (size_t i = 0; i < page_action_decorations_.size(); ++i) { |
| 589 if (page_action_decorations_[i]->GetPageAction() == page_action) | 602 if (page_action_decorations_[i]->GetPageAction() == page_action) |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 707 | 720 |
| 708 return zoom_decoration_->UpdateIfNecessary( | 721 return zoom_decoration_->UpdateIfNecessary( |
| 709 ui_zoom::ZoomController::FromWebContents(web_contents), | 722 ui_zoom::ZoomController::FromWebContents(web_contents), |
| 710 default_zoom_changed); | 723 default_zoom_changed); |
| 711 } | 724 } |
| 712 | 725 |
| 713 void LocationBarViewMac::OnDefaultZoomLevelChanged() { | 726 void LocationBarViewMac::OnDefaultZoomLevelChanged() { |
| 714 if (UpdateZoomDecoration(/*default_zoom_changed=*/true)) | 727 if (UpdateZoomDecoration(/*default_zoom_changed=*/true)) |
| 715 OnDecorationsChanged(); | 728 OnDecorationsChanged(); |
| 716 } | 729 } |
| 730 |
| 731 bool LocationBarViewMac::UpdateMicSearchDecorationVisibility() { |
| 732 bool is_visible = !GetToolbarModel()->input_in_progress() && |
| 733 browser_->search_model()->voice_search_supported(); |
| 734 if (mic_search_decoration_->IsVisible() == is_visible) |
| 735 return false; |
| 736 mic_search_decoration_->SetVisible(is_visible); |
| 737 return true; |
| 738 } |
| OLD | NEW |