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

Unified Diff: chrome/browser/ui/views/location_bar/location_bar_view.cc

Issue 1436583002: Revert of Remove setVoiceSearchSupported part of EmbeddedSearch SearchBox API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/location_bar/location_bar_view.cc
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc
index 083b8fdf0ebdea27e6ed8715cf1d882a47a046a2..0bb09b5fa3357201b1aaf4375a9e357087aa5864 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_view.cc
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -35,6 +35,7 @@
#include "chrome/browser/ui/content_settings/content_setting_bubble_model.h"
#include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/browser/ui/view_ids.h"
#include "chrome/browser/ui/views/autofill/save_card_icon_view.h"
#include "chrome/browser/ui/views/browser_dialogs.h"
#include "chrome/browser/ui/views/layout_constants.h"
@@ -73,6 +74,7 @@
#include "grit/theme_resources.h"
#include "ui/accessibility/ax_view_state.h"
#include "ui/base/dragdrop/drag_drop_types.h"
+#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/material_design/material_design_controller.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/base/theme_provider.h"
@@ -91,6 +93,7 @@
#include "ui/views/background.h"
#include "ui/views/border.h"
#include "ui/views/button_drag_utils.h"
+#include "ui/views/controls/button/image_button.h"
#include "ui/views/controls/label.h"
#include "ui/views/widget/widget.h"
@@ -136,6 +139,7 @@
selected_keyword_view_(NULL),
suggested_text_view_(NULL),
keyword_hint_view_(NULL),
+ mic_search_view_(NULL),
zoom_view_(NULL),
open_pdf_in_reader_view_(NULL),
manage_passwords_icon_view_(NULL),
@@ -153,6 +157,9 @@
base::Bind(&LocationBarView::UpdateWithoutTabRestore,
base::Unretained(this)));
+ if (browser_)
+ browser_->search_model()->AddObserver(this);
+
ui_zoom::ZoomEventManager::GetForBrowserContext(profile)
->AddZoomEventManagerObserver(this);
@@ -166,6 +173,8 @@
LocationBarView::~LocationBarView() {
if (template_url_service_)
template_url_service_->RemoveObserver(this);
+ if (browser_)
+ browser_->search_model()->RemoveObserver(this);
ui_zoom::ZoomEventManager::GetForBrowserContext(profile())
->RemoveZoomEventManagerObserver(this);
@@ -270,6 +279,20 @@
background_color);
AddChildView(keyword_hint_view_);
+ mic_search_view_ = new views::ImageButton(this);
+ mic_search_view_->set_id(VIEW_ID_MIC_SEARCH_BUTTON);
+ mic_search_view_->SetAccessibilityFocusable(true);
+ mic_search_view_->SetTooltipText(
+ l10n_util::GetStringUTF16(IDS_TOOLTIP_MIC_SEARCH));
+ mic_search_view_->SetImage(
+ views::Button::STATE_NORMAL,
+ ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
+ IDR_OMNIBOX_MIC_SEARCH));
+ mic_search_view_->SetImageAlignment(views::ImageButton::ALIGN_CENTER,
+ views::ImageButton::ALIGN_MIDDLE);
+ mic_search_view_->SetVisible(false);
+ AddChildView(mic_search_view_);
+
const SkColor text_color = GetColor(SecurityStateModel::NONE, TEXT);
for (ContentSettingsType type :
ContentSettingBubbleModel::GetSupportedBubbleTypes()) {
@@ -555,11 +578,12 @@
// Compute width of omnibox-trailing content.
int trailing_width = horizontal_edge_thickness;
trailing_width += IncrementalMinimumWidth(star_view_) +
- IncrementalMinimumWidth(translate_icon_view_) +
- IncrementalMinimumWidth(open_pdf_in_reader_view_) +
- IncrementalMinimumWidth(save_credit_card_icon_view_) +
- IncrementalMinimumWidth(manage_passwords_icon_view_) +
- IncrementalMinimumWidth(zoom_view_);
+ IncrementalMinimumWidth(translate_icon_view_) +
+ IncrementalMinimumWidth(open_pdf_in_reader_view_) +
+ IncrementalMinimumWidth(save_credit_card_icon_view_) +
+ IncrementalMinimumWidth(manage_passwords_icon_view_) +
+ IncrementalMinimumWidth(zoom_view_) +
+ IncrementalMinimumWidth(mic_search_view_);
for (PageActionViews::const_iterator i(page_action_views_.begin());
i != page_action_views_.end(); ++i)
trailing_width += IncrementalMinimumWidth((*i));
@@ -682,6 +706,10 @@
*i);
}
}
+ if (mic_search_view_->visible()) {
+ trailing_decorations.AddDecoration(vertical_padding, location_height,
+ mic_search_view_);
+ }
// Because IMEs may eat the tab key, we don't show "press tab to search" while
// IME composition is in progress.
if (!keyword.empty() && omnibox_view_->model()->is_keyword_hint() &&
@@ -792,6 +820,9 @@
}
void LocationBarView::Update(const WebContents* contents) {
+ mic_search_view_->SetVisible(
+ !GetToolbarModel()->input_in_progress() && browser_ &&
+ browser_->search_model()->voice_search_supported());
RefreshContentSettingViews();
RefreshZoomView();
RefreshPageActionViews();
@@ -1304,6 +1335,15 @@
}
////////////////////////////////////////////////////////////////////////////////
+// LocationBarView, private views::ButtonListener implementation:
+
+void LocationBarView::ButtonPressed(views::Button* sender,
+ const ui::Event& event) {
+ DCHECK_EQ(mic_search_view_, sender);
+ command_updater()->ExecuteCommand(IDC_TOGGLE_SPEECH_INPUT);
+}
+
+////////////////////////////////////////////////////////////////////////////////
// LocationBarView, private views::DragController implementation:
void LocationBarView::WriteDragDataForView(views::View* sender,
@@ -1392,3 +1432,16 @@
if (omnibox_view_ && omnibox_view_->GetWidget()->IsActive())
ShowFirstRunBubble();
}
+
+////////////////////////////////////////////////////////////////////////////////
+// LocationBarView, private SearchModelObserver implementation:
+
+void LocationBarView::ModelChanged(const SearchModel::State& old_state,
+ const SearchModel::State& new_state) {
+ const bool visible = !GetToolbarModel()->input_in_progress() &&
+ new_state.voice_search_supported;
+ if (mic_search_view_->visible() != visible) {
+ mic_search_view_->SetVisible(visible);
+ Layout();
+ }
+}
« no previous file with comments | « chrome/browser/ui/views/location_bar/location_bar_view.h ('k') | chrome/browser/ui/views/omnibox/omnibox_result_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698