summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views
diff options
context:
space:
mode:
authorben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-27 20:15:35 +0000
committerben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-27 20:15:35 +0000
commit7745b82920b6a761f316c78a85e7af8742434f1c (patch)
treed942f01dd45823d55c223dcfb868012d8194c82a /chrome/browser/views
parent41910d1c4de903e0337ae41a9c835d918f8e264a (diff)
downloadchromium_src-7745b82920b6a761f316c78a85e7af8742434f1c.zip
chromium_src-7745b82920b6a761f316c78a85e7af8742434f1c.tar.gz
chromium_src-7745b82920b6a761f316c78a85e7af8742434f1c.tar.bz2
Re-land this from earlier... unit tests no longer crash.
Extract a cross platform LocationBar interface. Adds a TestLocationBar object that unit tests can use to mock the location bar (fixes NULL deref). Review URL: http://codereview.chromium.org/18851 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8745 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views')
-rw-r--r--chrome/browser/views/frame/browser_view.cc16
-rw-r--r--chrome/browser/views/frame/browser_view.h4
-rw-r--r--chrome/browser/views/location_bar_view.cc46
-rw-r--r--chrome/browser/views/location_bar_view.h33
4 files changed, 63 insertions, 36 deletions
diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc
index 6caf2cd..1e5ad23 100644
--- a/chrome/browser/views/frame/browser_view.cc
+++ b/chrome/browser/views/frame/browser_view.cc
@@ -172,8 +172,8 @@ void BrowserView::WindowMoved() {
status_bubble_->Reposition();
// Close the omnibox popup, if any.
- if (GetLocationBarView())
- GetLocationBarView()->location_entry()->ClosePopup();
+ if (toolbar_->GetLocationBarView())
+ toolbar_->GetLocationBarView()->location_entry()->ClosePopup();
}
gfx::Rect BrowserView::GetToolbarBounds() const {
@@ -485,14 +485,10 @@ bool BrowserView::IsMaximized() {
return frame_->GetWindow()->IsMaximized();
}
-LocationBarView* BrowserView::GetLocationBarView() const {
+LocationBar* BrowserView::GetLocationBar() const {
return toolbar_->GetLocationBarView();
}
-BrowserView* BrowserView::GetBrowserView() const {
- return NULL;
-}
-
void BrowserView::UpdateStopGoState(bool is_loading) {
toolbar_->GetGoButton()->ChangeMode(
is_loading ? GoButton::MODE_STOP : GoButton::MODE_GO);
@@ -648,6 +644,10 @@ BookmarkBarView* BrowserView::GetBookmarkBarView() {
return bookmark_bar_view_.get();
}
+LocationBarView* BrowserView::GetLocationBarView() const {
+ return toolbar_->GetLocationBarView();
+}
+
///////////////////////////////////////////////////////////////////////////////
// BrowserView, NotificationObserver implementation:
@@ -739,7 +739,7 @@ std::wstring BrowserView::GetWindowTitle() const {
}
views::View* BrowserView::GetInitiallyFocusedView() const {
- return GetLocationBarView();
+ return toolbar_->GetLocationBarView();
}
bool BrowserView::ShouldShowWindowTitle() const {
diff --git a/chrome/browser/views/frame/browser_view.h b/chrome/browser/views/frame/browser_view.h
index 33960f0..1a6ff36 100644
--- a/chrome/browser/views/frame/browser_view.h
+++ b/chrome/browser/views/frame/browser_view.h
@@ -169,8 +169,7 @@ class BrowserView : public BrowserWindow,
virtual void SetStarredState(bool is_starred);
virtual gfx::Rect GetNormalBounds() const;
virtual bool IsMaximized();
- virtual LocationBarView* GetLocationBarView() const;
- virtual BrowserView* GetBrowserView() const;
+ virtual LocationBar* GetLocationBar() const;
virtual void UpdateStopGoState(bool is_loading);
virtual void UpdateToolbar(TabContents* contents, bool should_restore_state);
virtual void FocusToolbar();
@@ -193,6 +192,7 @@ class BrowserView : public BrowserWindow,
// Overridden from BrowserWindowTesting:
virtual BookmarkBarView* GetBookmarkBarView();
+ virtual LocationBarView* GetLocationBarView() const;
// Overridden from NotificationObserver:
virtual void Observe(NotificationType type,
diff --git a/chrome/browser/views/location_bar_view.cc b/chrome/browser/views/location_bar_view.cc
index aa6fb1d..0ee51ea 100644
--- a/chrome/browser/views/location_bar_view.cc
+++ b/chrome/browser/views/location_bar_view.cc
@@ -876,13 +876,6 @@ void LocationBarView::ShowFirstRunBubbleInternal() {
bounds);
}
-void LocationBarView::ShowFirstRunBubble() {
- // We wait 30 milliseconds to open. It allows less flicker.
- Task* task = first_run_bubble_.NewRunnableMethod(
- &LocationBarView::ShowFirstRunBubbleInternal);
- MessageLoop::current()->PostDelayedTask(FROM_HERE, task, 30);
-}
-
// SecurityImageView------------------------------------------------------------
// static
@@ -1005,3 +998,42 @@ bool LocationBarView::OverrideAccelerator(
return location_entry_->OverrideAccelerator(accelerator);
}
+////////////////////////////////////////////////////////////////////////////////
+// LocationBarView, LocationBar implementation:
+
+void LocationBarView::ShowFirstRunBubble() {
+ // We wait 30 milliseconds to open. It allows less flicker.
+ Task* task = first_run_bubble_.NewRunnableMethod(
+ &LocationBarView::ShowFirstRunBubbleInternal);
+ MessageLoop::current()->PostDelayedTask(FROM_HERE, task, 30);
+}
+
+std::wstring LocationBarView::GetInputString() const {
+ return location_input_;
+}
+
+WindowOpenDisposition LocationBarView::GetWindowOpenDisposition() const {
+ return disposition_;
+}
+
+PageTransition::Type LocationBarView::GetPageTransition() const {
+ return transition_;
+}
+
+void LocationBarView::AcceptInput() {
+ location_entry_->model()->AcceptInput(CURRENT_TAB, false);
+}
+
+void LocationBarView::FocusLocation() {
+ location_entry_->SetFocus();
+ location_entry_->SelectAll(true);
+}
+
+void LocationBarView::FocusSearch() {
+ location_entry_->SetUserText(L"?");
+ location_entry_->SetFocus();
+}
+
+void LocationBarView::SaveStateToContents(TabContents* contents) {
+ location_entry_->SaveStateToTab(contents);
+}
diff --git a/chrome/browser/views/location_bar_view.h b/chrome/browser/views/location_bar_view.h
index eb3b4ef..ec01c63 100644
--- a/chrome/browser/views/location_bar_view.h
+++ b/chrome/browser/views/location_bar_view.h
@@ -9,6 +9,7 @@
#include "base/gfx/rect.h"
#include "chrome/browser/autocomplete/autocomplete_edit.h"
+#include "chrome/browser/location_bar.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/toolbar_model.h"
#include "chrome/browser/views/info_bubble.h"
@@ -30,10 +31,10 @@ class Profile;
// of the URL bar strip and contains its content.
//
/////////////////////////////////////////////////////////////////////////////
-class LocationBarView : public views::View,
+class LocationBarView : public LocationBar,
+ public views::View,
public AutocompleteEditController {
public:
-
class Delegate {
public:
// Should return the current tab contents.
@@ -107,25 +108,19 @@ class LocationBarView : public views::View,
return location_entry_.get();
}
- std::wstring location_input() {
- return location_input_;
- }
-
- WindowOpenDisposition disposition() {
- return disposition_;
- }
-
- PageTransition::Type transition() {
- return transition_;
- }
-
- // Shows a info bubble that tells the user what the omnibox is and allows
- // to change the search providers.
- void ShowFirstRunBubble();
-
- // Overridden from View.
+ // Overridden from views::View:
virtual bool OverrideAccelerator(const views::Accelerator& accelerator);
+ // Overridden from LocationBar:
+ virtual void ShowFirstRunBubble();
+ virtual std::wstring GetInputString() const;
+ virtual WindowOpenDisposition GetWindowOpenDisposition() const;
+ virtual PageTransition::Type GetPageTransition() const;
+ virtual void AcceptInput();
+ virtual void FocusLocation();
+ virtual void FocusSearch();
+ virtual void SaveStateToContents(TabContents* contents);
+
static const int kTextVertMargin;
static const COLORREF kBackgroundColorByLevel[];