Chromium Code Reviews| 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 4b2dbd2e88f0ae63b660051489ca93acfe3f9197..faada7c08b2c0f853316ff96681727f2110cf3d2 100644 |
| --- a/chrome/browser/ui/views/location_bar/location_bar_view.cc |
| +++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc |
| @@ -190,7 +190,8 @@ LocationBarView::LocationBarView(Browser* browser, |
| is_popup_mode_(is_popup_mode), |
| show_focus_rect_(false), |
| template_url_service_(NULL), |
| - animation_offset_(0) { |
| + animation_offset_(0), |
| + weak_ptr_factory_(this) { |
| if (!views::Textfield::IsViewsTextfieldEnabled()) |
| set_id(VIEW_ID_OMNIBOX); |
| @@ -223,6 +224,7 @@ LocationBarView::~LocationBarView() { |
| template_url_service_->RemoveObserver(this); |
| if (browser_) |
| browser_->search_model()->RemoveObserver(this); |
| + weak_ptr_factory_.InvalidateWeakPtrs(); |
|
sky
2013/09/04 16:20:12
Is there a reason you're explicitly invoking this?
dmazzoni
2013/09/04 17:16:18
It's sometimes safer, as they might not be invalid
|
| } |
| // static |
| @@ -1300,6 +1302,10 @@ void LocationBarView::PaintPageActionBackgrounds(gfx::Canvas* canvas) { |
| } |
| } |
| +void LocationBarView::AccessibilitySetValue(const string16& new_value) { |
|
sky
2013/09/04 16:20:12
Make position match header.
dmazzoni
2013/09/04 17:16:18
The order was all over the place. I moved all of t
|
| + location_entry_->SetUserText(new_value); |
|
sky
2013/09/04 16:20:12
Does this need to do nothing if is_popup_mode_, or
dmazzoni
2013/09/04 17:16:18
Good idea, I'll set the readonly flag if is_popup_
|
| +} |
| + |
| const char* LocationBarView::GetClassName() const { |
| return kViewClassName; |
| } |
| @@ -1332,6 +1338,9 @@ bool LocationBarView::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) { |
| } |
| void LocationBarView::GetAccessibleState(ui::AccessibleViewState* state) { |
| + if (!location_entry_) |
| + return; |
| + |
| state->role = ui::AccessibilityTypes::ROLE_LOCATION_BAR; |
| state->name = l10n_util::GetStringUTF16(IDS_ACCNAME_LOCATION); |
| state->value = location_entry_->GetText(); |
| @@ -1341,6 +1350,10 @@ void LocationBarView::GetAccessibleState(ui::AccessibleViewState* state) { |
| location_entry_->GetSelectionBounds(&entry_start, &entry_end); |
| state->selection_start = entry_start; |
| state->selection_end = entry_end; |
| + |
| + state->set_value_callback = |
| + base::Bind(&LocationBarView::AccessibilitySetValue, |
| + weak_ptr_factory_.GetWeakPtr()); |
| } |
| bool LocationBarView::HasFocus() const { |