diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-27 20:15:35 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-27 20:15:35 +0000 |
commit | 7745b82920b6a761f316c78a85e7af8742434f1c (patch) | |
tree | d942f01dd45823d55c223dcfb868012d8194c82a /chrome/browser/views | |
parent | 41910d1c4de903e0337ae41a9c835d918f8e264a (diff) | |
download | chromium_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.cc | 16 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_view.h | 4 | ||||
-rw-r--r-- | chrome/browser/views/location_bar_view.cc | 46 | ||||
-rw-r--r-- | chrome/browser/views/location_bar_view.h | 33 |
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[]; |