summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view.h4
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc6
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view_gtk.h1
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view_mac.h1
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view_mac.mm6
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view_win.cc6
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view_win.h1
-rw-r--r--chrome/browser/cocoa/autocomplete_text_field_unittest.mm8
-rw-r--r--chrome/browser/cocoa/location_bar_view_mac.h3
-rw-r--r--chrome/browser/cocoa/location_bar_view_mac.mm14
-rw-r--r--chrome/browser/gtk/location_bar_view_gtk.cc5
-rw-r--r--chrome/browser/gtk/location_bar_view_gtk.h3
-rw-r--r--chrome/browser/location_bar.h1
-rw-r--r--chrome/browser/views/location_bar_view.cc9
-rw-r--r--chrome/browser/views/location_bar_view.h3
-rw-r--r--chrome/test/test_location_bar.h3
16 files changed, 63 insertions, 11 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view.h b/chrome/browser/autocomplete/autocomplete_edit_view.h
index e29b19b..0d4c230 100644
--- a/chrome/browser/autocomplete/autocomplete_edit_view.h
+++ b/chrome/browser/autocomplete/autocomplete_edit_view.h
@@ -59,6 +59,10 @@ class AutocompleteEditView {
// browser, or just whatever the user has currently typed.
virtual std::wstring GetText() const = 0;
+ // |true| if the user is in the process of editing the field, or if
+ // the field is empty.
+ virtual bool IsEditingOrEmpty() const = 0;
+
// Returns the resource ID of the icon to show for the current text.
virtual int GetIcon() const = 0;
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc
index 35144963..207dd0d 100644
--- a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc
@@ -387,8 +387,12 @@ std::wstring AutocompleteEditViewGtk::GetText() const {
return out;
}
+bool AutocompleteEditViewGtk::IsEditingOrEmpty() const {
+ return (model_->user_input_in_progress() || model_->show_search_hint());
+}
+
int AutocompleteEditViewGtk::GetIcon() const {
- return (model_->user_input_in_progress() || model_->show_search_hint()) ?
+ return IsEditingOrEmpty() ?
AutocompleteMatch::TypeToIcon(model_->CurrentTextType()) :
toolbar_model_->GetIcon();
}
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h
index 978f3d7..69bc3be 100644
--- a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h
@@ -80,6 +80,7 @@ class AutocompleteEditViewGtk : public AutocompleteEditView,
virtual std::wstring GetText() const;
+ virtual bool IsEditingOrEmpty() const;
virtual int GetIcon() const;
virtual void SetUserText(const std::wstring& text) {
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.h b/chrome/browser/autocomplete/autocomplete_edit_view_mac.h
index 8539cae..a810465 100644
--- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.h
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.h
@@ -49,6 +49,7 @@ class AutocompleteEditViewMac : public AutocompleteEditView,
virtual std::wstring GetText() const;
+ virtual bool IsEditingOrEmpty() const;
virtual int GetIcon() const;
virtual void SetUserText(const std::wstring& text) {
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm
index fc5bbef..ee502cb 100644
--- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm
@@ -266,8 +266,12 @@ std::wstring AutocompleteEditViewMac::GetText() const {
return base::SysNSStringToWide([field_ stringValue]);
}
+bool AutocompleteEditViewMac::IsEditingOrEmpty() const {
+ return (model_->user_input_in_progress() || model_->show_search_hint());
+}
+
int AutocompleteEditViewMac::GetIcon() const {
- return (model_->user_input_in_progress() || model_->show_search_hint()) ?
+ return IsEditingOrEmpty() ?
AutocompleteMatch::TypeToIcon(model_->CurrentTextType()) :
toolbar_model_->GetIcon();
}
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_win.cc b/chrome/browser/autocomplete/autocomplete_edit_view_win.cc
index 87c41f9..46639ab 100644
--- a/chrome/browser/autocomplete/autocomplete_edit_view_win.cc
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_win.cc
@@ -599,8 +599,12 @@ std::wstring AutocompleteEditViewWin::GetText() const {
return str;
}
+bool AutocompleteEditViewWin::IsEditingOrEmpty() const {
+ return (model_->user_input_in_progress() || model_->show_search_hint());
+}
+
int AutocompleteEditViewWin::GetIcon() const {
- return (model_->user_input_in_progress() || model_->show_search_hint()) ?
+ return IsEditingOrEmpty() ?
AutocompleteMatch::TypeToIcon(model_->CurrentTextType()) :
toolbar_model_->GetIcon();
}
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_win.h b/chrome/browser/autocomplete/autocomplete_edit_view_win.h
index 718ba2a..82762ae 100644
--- a/chrome/browser/autocomplete/autocomplete_edit_view_win.h
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_win.h
@@ -91,6 +91,7 @@ class AutocompleteEditViewWin
virtual std::wstring GetText() const;
+ virtual bool IsEditingOrEmpty() const;
virtual int GetIcon() const;
virtual void SetUserText(const std::wstring& text) {
diff --git a/chrome/browser/cocoa/autocomplete_text_field_unittest.mm b/chrome/browser/cocoa/autocomplete_text_field_unittest.mm
index f82fca7..b6f044f 100644
--- a/chrome/browser/cocoa/autocomplete_text_field_unittest.mm
+++ b/chrome/browser/cocoa/autocomplete_text_field_unittest.mm
@@ -27,9 +27,11 @@ class MockLocationIconView : public LocationBarViewMac::LocationIconView {
MockLocationIconView(LocationBarViewMac* owner)
: LocationBarViewMac::LocationIconView(owner) {}
- // |LocationBarViewMac::LocationIconView::GetDragPasteboard()|
- // expects things to be more initialized than they will be, and
- // will crash if it is called.
+ // |LocationBarViewMac::LocationIconView| dragging support needs
+ // more setup than this test provides.
+ bool IsDraggable() {
+ return false;
+ }
virtual NSPasteboard* GetDragPasteboard() {
return [NSPasteboard pasteboardWithUniqueName];
}
diff --git a/chrome/browser/cocoa/location_bar_view_mac.h b/chrome/browser/cocoa/location_bar_view_mac.h
index 7eee821..ebff104 100644
--- a/chrome/browser/cocoa/location_bar_view_mac.h
+++ b/chrome/browser/cocoa/location_bar_view_mac.h
@@ -61,6 +61,9 @@ class LocationBarViewMac : public AutocompleteEditController,
virtual void InvalidatePageActions();
virtual void SaveStateToContents(TabContents* contents);
virtual void Revert();
+ virtual const AutocompleteEditView* location_entry() const {
+ return edit_view_.get();
+ }
virtual AutocompleteEditView* location_entry() {
return edit_view_.get();
}
diff --git a/chrome/browser/cocoa/location_bar_view_mac.mm b/chrome/browser/cocoa/location_bar_view_mac.mm
index c2c10dd..6a7afba 100644
--- a/chrome/browser/cocoa/location_bar_view_mac.mm
+++ b/chrome/browser/cocoa/location_bar_view_mac.mm
@@ -601,8 +601,11 @@ LocationBarViewMac::LocationIconView::LocationIconView(
LocationBarViewMac::LocationIconView::~LocationIconView() {}
void LocationBarViewMac::LocationIconView::OnMousePressed(NSRect bounds) {
- // TODO(shess): Only allow click if page-info makes sense.
- // http://codereview.chromium.org/1594012
+ // Do not show page info if the user has been editing the location
+ // bar, or the location bar is at the NTP.
+ if (owner_->location_entry()->IsEditingOrEmpty())
+ return;
+
TabContents* tab = owner_->GetTabContents();
NavigationEntry* nav_entry = tab->controller().GetActiveEntry();
if (!nav_entry) {
@@ -613,8 +616,11 @@ void LocationBarViewMac::LocationIconView::OnMousePressed(NSRect bounds) {
}
bool LocationBarViewMac::LocationIconView::IsDraggable() {
- // TODO(shess): Only allow drag if there's an URL to drag.
- // http://codereview.chromium.org/1594012
+ // Do not drag if the user has been editing the location bar, or the
+ // location bar is at the NTP.
+ if (owner_->location_entry()->IsEditingOrEmpty())
+ return false;
+
return true;
}
diff --git a/chrome/browser/gtk/location_bar_view_gtk.cc b/chrome/browser/gtk/location_bar_view_gtk.cc
index 5c6ed91..733dade 100644
--- a/chrome/browser/gtk/location_bar_view_gtk.cc
+++ b/chrome/browser/gtk/location_bar_view_gtk.cc
@@ -890,6 +890,11 @@ void LocationBarViewGtk::ShowFirstRunBubbleInternal(bool use_OEM_bubble) {
gboolean LocationBarViewGtk::OnIconReleased(GtkWidget* sender,
GdkEventButton* event) {
+ // Do not show page info if the user has been editing the location
+ // bar, or the location bar is at the NTP.
+ if (location_entry()->IsEditingOrEmpty())
+ return false;
+
// (0,0) event coordinates indicates that the release came at the end of
// a drag.
if (event->button != 1 || (event->x == 0 && event->y == 0))
diff --git a/chrome/browser/gtk/location_bar_view_gtk.h b/chrome/browser/gtk/location_bar_view_gtk.h
index adb47b0..aac1ad1 100644
--- a/chrome/browser/gtk/location_bar_view_gtk.h
+++ b/chrome/browser/gtk/location_bar_view_gtk.h
@@ -110,6 +110,9 @@ class LocationBarViewGtk : public AutocompleteEditController,
virtual void InvalidatePageActions();
virtual void SaveStateToContents(TabContents* contents);
virtual void Revert();
+ virtual const AutocompleteEditView* location_entry() const {
+ return location_entry_.get();
+ }
virtual AutocompleteEditView* location_entry() {
return location_entry_.get();
}
diff --git a/chrome/browser/location_bar.h b/chrome/browser/location_bar.h
index 29bfddc..a0afe93 100644
--- a/chrome/browser/location_bar.h
+++ b/chrome/browser/location_bar.h
@@ -68,6 +68,7 @@ class LocationBar {
virtual void Revert() = 0;
// Returns a pointer to the text entry view.
+ virtual const AutocompleteEditView* location_entry() const = 0;
virtual AutocompleteEditView* location_entry() = 0;
// Returns a pointer to the testing interface.
diff --git a/chrome/browser/views/location_bar_view.cc b/chrome/browser/views/location_bar_view.cc
index 35b8f8e..324731f 100644
--- a/chrome/browser/views/location_bar_view.cc
+++ b/chrome/browser/views/location_bar_view.cc
@@ -895,7 +895,8 @@ int LocationBarView::GetDragOperations(views::View* sender,
const gfx::Point& p) {
DCHECK(sender == &location_icon_view_);
TabContents* tab_contents = delegate_->GetTabContents();
- return (tab_contents && tab_contents->GetURL().is_valid()) ?
+ return (tab_contents && tab_contents->GetURL().is_valid() &&
+ !location_entry()->IsEditingOrEmpty()) ?
(DragDropTypes::DRAG_COPY | DragDropTypes::DRAG_LINK) :
DragDropTypes::DRAG_NONE;
}
@@ -928,6 +929,12 @@ void LocationBarView::LocationIconView::OnMouseReleased(
bool canceled) {
if (canceled || !HitTest(event.location()))
return;
+
+ // Do not show page info if the user has been editing the location
+ // bar, or the location bar is at the NTP.
+ if (parent_->location_entry()->IsEditingOrEmpty())
+ return;
+
TabContents* tab = parent_->GetTabContents();
NavigationEntry* nav_entry = tab->controller().GetActiveEntry();
if (!nav_entry) {
diff --git a/chrome/browser/views/location_bar_view.h b/chrome/browser/views/location_bar_view.h
index 306a490..dee0ee2 100644
--- a/chrome/browser/views/location_bar_view.h
+++ b/chrome/browser/views/location_bar_view.h
@@ -185,6 +185,9 @@ class LocationBarView : public LocationBar,
virtual void InvalidatePageActions();
virtual void SaveStateToContents(TabContents* contents);
virtual void Revert();
+ virtual const AutocompleteEditView* location_entry() const {
+ return location_entry_.get();
+ }
virtual AutocompleteEditView* location_entry() {
return location_entry_.get();
}
diff --git a/chrome/test/test_location_bar.h b/chrome/test/test_location_bar.h
index f257d1ee..131af32 100644
--- a/chrome/test/test_location_bar.h
+++ b/chrome/test/test_location_bar.h
@@ -42,6 +42,9 @@ class TestLocationBar : public LocationBar {
virtual void InvalidatePageActions() {}
virtual void SaveStateToContents(TabContents* contents) {}
virtual void Revert() {}
+ virtual const AutocompleteEditView* location_entry() const {
+ return NULL;
+ }
virtual AutocompleteEditView* location_entry() {
return NULL;
}