summaryrefslogtreecommitdiffstats
path: root/chrome/browser/autocomplete
diff options
context:
space:
mode:
authorben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-10 20:43:19 +0000
committerben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-10 20:43:19 +0000
commit1274bdad58253fe4137d29db4975291cf46bcb94 (patch)
tree50d1b0180e45ce0ee287df4ee3a473a6aa2000d2 /chrome/browser/autocomplete
parent8711df994152f2dc72dd7f45da8779d73fe1e558 (diff)
downloadchromium_src-1274bdad58253fe4137d29db4975291cf46bcb94.zip
chromium_src-1274bdad58253fe4137d29db4975291cf46bcb94.tar.gz
chromium_src-1274bdad58253fe4137d29db4975291cf46bcb94.tar.bz2
Allow a different omnibox popup to be enabled via the command line (--enable-omnibox2).
This will allow a views-based omnibox popup conforming to the new spec (stub provided) to be brought up without disturbing ToT UX. Also adds new images from Nicholas. Review URL: http://codereview.chromium.org/67035 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13538 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autocomplete')
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view_win.cc24
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view_win.h4
-rw-r--r--chrome/browser/autocomplete/autocomplete_popup_view.h19
-rwxr-xr-xchrome/browser/autocomplete/autocomplete_popup_view_win.cc14
-rwxr-xr-xchrome/browser/autocomplete/autocomplete_popup_view_win.h2
5 files changed, 50 insertions, 13 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_win.cc b/chrome/browser/autocomplete/autocomplete_edit_view_win.cc
index 0d63f0d..ee9d18a 100644
--- a/chrome/browser/autocomplete/autocomplete_edit_view_win.cc
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_win.cc
@@ -400,8 +400,9 @@ AutocompleteEditViewWin::AutocompleteEditViewWin(
CommandUpdater* command_updater,
bool popup_window_mode)
: model_(new AutocompleteEditModel(this, controller, profile)),
- popup_view_(new AutocompletePopupViewWin(font, this, model_.get(),
- profile)),
+ popup_view_(AutocompletePopupView::CreatePopupView(font, this,
+ model_.get(),
+ profile)),
controller_(controller),
parent_view_(parent_view),
toolbar_model_(toolbar_model),
@@ -419,7 +420,7 @@ AutocompleteEditViewWin::AutocompleteEditViewWin(
drop_highlight_position_(-1),
background_color_(0),
scheme_security_level_(ToolbarModel::NORMAL) {
- model_->set_popup_model(popup_view_->model());
+ model_->set_popup_model(popup_view_->GetModel());
saved_selection_for_focus_change_.cpMin = -1;
@@ -720,7 +721,7 @@ void AutocompleteEditViewWin::UpdatePopup() {
}
void AutocompleteEditViewWin::ClosePopup() {
- popup_view_->model()->StopAutocomplete();
+ popup_view_->GetModel()->StopAutocomplete();
}
IAccessible* AutocompleteEditViewWin::GetIAccessible() {
@@ -1687,12 +1688,15 @@ bool AutocompleteEditViewWin::OnKeyDownOnlyWritable(TCHAR key,
OnBeforePossibleChange();
Cut();
OnAfterPossibleChange();
- } else if (popup_view_->model()->IsOpen()) {
- // This is a bit overloaded, but we hijack Shift-Delete in this
- // case to delete the current item from the pop-up. We prefer cutting
- // to this when possible since that's the behavior more people expect
- // from Shift-Delete, and it's more commonly useful.
- popup_view_->model()->TryDeletingCurrentItem();
+ } else {
+ AutocompletePopupModel* popup_model = popup_view_->GetModel();
+ if (popup_model->IsOpen()) {
+ // This is a bit overloaded, but we hijack Shift-Delete in this
+ // case to delete the current item from the pop-up. We prefer
+ // cutting to this when possible since that's the behavior more
+ // people expect from Shift-Delete, and it's more commonly useful.
+ popup_model->TryDeletingCurrentItem();
+ }
}
}
return true;
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_win.h b/chrome/browser/autocomplete/autocomplete_edit_view_win.h
index 6165f78..85ea856 100644
--- a/chrome/browser/autocomplete/autocomplete_edit_view_win.h
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_win.h
@@ -32,7 +32,7 @@ class View;
class AutocompleteEditController;
class AutocompleteEditModel;
class AutocompleteEditView;
-class AutocompletePopupViewWin;
+class AutocompletePopupView;
// Provides the implementation of an edit control with a drop-down
// autocomplete box. The box itself is implemented in autocomplete_popup.cc
@@ -355,7 +355,7 @@ class AutocompleteEditViewWin
scoped_ptr<AutocompleteEditModel> model_;
- scoped_ptr<AutocompletePopupViewWin> popup_view_;
+ scoped_ptr<AutocompletePopupView> popup_view_;
AutocompleteEditController* controller_;
diff --git a/chrome/browser/autocomplete/autocomplete_popup_view.h b/chrome/browser/autocomplete/autocomplete_popup_view.h
index 7c3db76..9690ac0 100644
--- a/chrome/browser/autocomplete/autocomplete_popup_view.h
+++ b/chrome/browser/autocomplete/autocomplete_popup_view.h
@@ -15,6 +15,12 @@ class AutocompleteEditView;
class AutocompletePopupModel;
class ChromeFont;
+#if defined(OS_WIN)
+class AutocompleteEditViewWin;
+class AutocompleteEditModel;
+class Profile;
+#endif
+
class AutocompletePopupView {
public:
virtual ~AutocompletePopupView() { }
@@ -34,6 +40,19 @@ class AutocompletePopupView {
// Paint any pending updates.
virtual void PaintUpdatesNow() = 0;
+
+ // Returns the popup's model.
+ virtual AutocompletePopupModel* GetModel() = 0;
+
+#if defined(OS_WIN)
+ // Create a popup view implementation. It may make sense for this to become
+ // platform independent eventually.
+ static AutocompletePopupView* CreatePopupView(
+ const ChromeFont& font,
+ AutocompleteEditViewWin* edit_view,
+ AutocompleteEditModel* edit_model,
+ Profile* profile);
+#endif
};
#endif // CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_POPUP_VIEW_H_
diff --git a/chrome/browser/autocomplete/autocomplete_popup_view_win.cc b/chrome/browser/autocomplete/autocomplete_popup_view_win.cc
index 9549389..578edbb 100755
--- a/chrome/browser/autocomplete/autocomplete_popup_view_win.cc
+++ b/chrome/browser/autocomplete/autocomplete_popup_view_win.cc
@@ -11,6 +11,7 @@
#include <atlmisc.h>
#include <cmath>
+#include "base/command_line.h"
#include "base/string_util.h"
#include "base/win_util.h"
#include "chrome/browser/autocomplete/autocomplete.h"
@@ -21,7 +22,9 @@
#include "chrome/browser/profile.h"
#include "chrome/browser/search_engines/template_url.h"
#include "chrome/browser/search_engines/template_url_model.h"
+#include "chrome/browser/views/autocomplete/autocomplete_popup_win.h"
#include "chrome/browser/views/location_bar_view.h"
+#include "chrome/common/chrome_switches.h"
#include "chrome/common/gfx/chrome_canvas.h"
#include "chrome/common/gfx/chrome_font.h"
#include "chrome/common/l10n_util.h"
@@ -674,3 +677,14 @@ void AutocompletePopupViewWin::DrawStar(HDC dc, int x, int y) const {
canvas.getTopPlatformDevice().drawToHDC(
dc, mirroring_context_->GetLeft(x, x + star_->width()), y, NULL);
}
+
+// static
+AutocompletePopupView* AutocompletePopupView::CreatePopupView(
+ const ChromeFont& font,
+ AutocompleteEditViewWin* edit_view,
+ AutocompleteEditModel* edit_model,
+ Profile* profile) {
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableOmnibox2))
+ return new AutocompletePopupWin(font, edit_view, edit_model, profile);
+ return new AutocompletePopupViewWin(font, edit_view, edit_model, profile);
+}
diff --git a/chrome/browser/autocomplete/autocomplete_popup_view_win.h b/chrome/browser/autocomplete/autocomplete_popup_view_win.h
index 18c6449..afcc353 100755
--- a/chrome/browser/autocomplete/autocomplete_popup_view_win.h
+++ b/chrome/browser/autocomplete/autocomplete_popup_view_win.h
@@ -68,7 +68,7 @@ class AutocompletePopupViewWin
virtual void PaintUpdatesNow() { UpdateWindow(); }
- AutocompletePopupModel* model() { return model_.get(); }
+ virtual AutocompletePopupModel* GetModel() { return model_.get(); }
private:
class MirroringContext;