Index: chrome/browser/ui/views/omnibox/omnibox_view_views.cc |
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc |
index 9fa1eeb345334e9a026966e9bf8f05d7bd8d8e35..1730885babb75390c611eabb097774b8adbe7de1 100644 |
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc |
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc |
@@ -39,7 +39,7 @@ |
#include "ui/base/resource/resource_bundle.h" |
#include "ui/gfx/canvas.h" |
#include "ui/gfx/font.h" |
-#include "ui/gfx/render_text.h" |
+#include "ui/gfx/selection_model.h" |
#include "ui/views/border.h" |
#include "ui/views/controls/textfield/textfield.h" |
#include "ui/views/ime/input_method.h" |
@@ -53,33 +53,30 @@ |
#include "ui/compositor/layer.h" |
#endif |
-using content::WebContents; |
- |
namespace { |
// Stores omnibox state for each tab. |
-struct ViewState { |
- explicit ViewState(const gfx::SelectionModel& selection_model) |
- : selection_model(selection_model) { |
- } |
+struct OmniboxState : public base::SupportsUserData::Data { |
+ static const char kKey[]; |
+ |
+ OmniboxState(const OmniboxEditModel::State& model_state, |
+ const gfx::SelectionModel& selection_model); |
+ virtual ~OmniboxState(); |
- // SelectionModel of selected text. |
- gfx::SelectionModel selection_model; |
+ const OmniboxEditModel::State model_state; |
+ const gfx::SelectionModel selection_model; |
}; |
-const char kAutocompleteEditStateKey[] = "AutocompleteEditState"; |
+// static |
+const char OmniboxState::kKey[] = "OmniboxState"; |
-struct AutocompleteEditState : public base::SupportsUserData::Data { |
- AutocompleteEditState(const OmniboxEditModel::State& model_state, |
- const ViewState& view_state) |
- : model_state(model_state), |
- view_state(view_state) { |
- } |
- virtual ~AutocompleteEditState() {} |
+OmniboxState::OmniboxState(const OmniboxEditModel::State& model_state, |
+ const gfx::SelectionModel& selection_model) |
+ : model_state(model_state), |
+ selection_model(selection_model) { |
+} |
- const OmniboxEditModel::State model_state; |
- const ViewState view_state; |
-}; |
+OmniboxState::~OmniboxState() {} |
// The following const value is the same as in browser_defaults. |
const int kAutocompleteEditFontPixelSize = 15; |
@@ -362,7 +359,7 @@ void OmniboxViewViews::OnBlur() { |
//////////////////////////////////////////////////////////////////////////////// |
// OmniboxViewViews, OmniboxView implementation: |
-void OmniboxViewViews::SaveStateToTab(WebContents* tab) { |
+void OmniboxViewViews::SaveStateToTab(content::WebContents* tab) { |
DCHECK(tab); |
// We don't want to keep the IME status, so force quit the current |
@@ -374,15 +371,13 @@ void OmniboxViewViews::SaveStateToTab(WebContents* tab) { |
} |
// NOTE: GetStateForTabSwitch may affect GetSelection, so order is important. |
- OmniboxEditModel::State model_state = model()->GetStateForTabSwitch(); |
+ OmniboxEditModel::State state = model()->GetStateForTabSwitch(); |
gfx::SelectionModel selection; |
GetSelectionModel(&selection); |
- tab->SetUserData( |
- kAutocompleteEditStateKey, |
- new AutocompleteEditState(model_state, ViewState(selection))); |
+ tab->SetUserData(OmniboxState::kKey, new OmniboxState(state, selection)); |
} |
-void OmniboxViewViews::Update(const WebContents* contents) { |
+void OmniboxViewViews::Update(const content::WebContents* contents) { |
// NOTE: We're getting the URL text here from the ToolbarModel. |
bool visibly_changed_permanent_text = |
model()->UpdatePermanentText(toolbar_model()->GetText(true)); |
@@ -391,21 +386,16 @@ void OmniboxViewViews::Update(const WebContents* contents) { |
bool changed_security_level = (security_level != security_level_); |
security_level_ = security_level; |
- // TODO(oshima): Copied from gtk implementation which is |
- // slightly different from WIN impl. Find out the correct implementation |
- // for views-implementation. |
+ // TODO(msw|oshima): Copied from GTK, determine correct Win/CrOS behavior. |
if (contents) { |
RevertAll(); |
- const AutocompleteEditState* state = static_cast<AutocompleteEditState*>( |
- contents->GetUserData(&kAutocompleteEditStateKey)); |
+ const OmniboxState* state = static_cast<OmniboxState*>( |
+ contents->GetUserData(&OmniboxState::kKey)); |
if (state) { |
+ // Restore the saved state and selection. |
model()->RestoreState(state->model_state); |
- |
- // Move the marks for the cursor and the other end of the selection to |
- // the previously-saved offsets (but preserve PRIMARY). |
- SelectSelectionModel(state->view_state.selection_model); |
- // We do not carry over the current edit history to another tab. |
- // TODO(oshima): consider saving/restoring edit history. |
+ SelectSelectionModel(state->selection_model); |
+ // TODO(oshima): Consider saving/restoring edit history. |
ClearEditHistory(); |
} |
} else if (visibly_changed_permanent_text) { |