| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.h" | 5 #include "chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.h" | 
| 6 | 6 | 
| 7 #include "chrome/browser/search/search.h" | 7 #include "chrome/browser/search/search.h" | 
| 8 #include "chrome/browser/themes/theme_properties.h" | 8 #include "chrome/browser/themes/theme_properties.h" | 
| 9 #include "chrome/browser/ui/omnibox/omnibox_popup_non_view.h" | 9 #include "chrome/browser/ui/omnibox/omnibox_popup_non_view.h" | 
| 10 #include "chrome/browser/ui/omnibox/omnibox_view.h" | 10 #include "chrome/browser/ui/omnibox/omnibox_view.h" | 
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 46   virtual ~AutocompletePopupWidget() {} | 46   virtual ~AutocompletePopupWidget() {} | 
| 47 | 47 | 
| 48  private: | 48  private: | 
| 49   DISALLOW_COPY_AND_ASSIGN(AutocompletePopupWidget); | 49   DISALLOW_COPY_AND_ASSIGN(AutocompletePopupWidget); | 
| 50 }; | 50 }; | 
| 51 | 51 | 
| 52 //////////////////////////////////////////////////////////////////////////////// | 52 //////////////////////////////////////////////////////////////////////////////// | 
| 53 // OmniboxPopupContentsView, public: | 53 // OmniboxPopupContentsView, public: | 
| 54 | 54 | 
| 55 OmniboxPopupView* OmniboxPopupContentsView::Create( | 55 OmniboxPopupView* OmniboxPopupContentsView::Create( | 
| 56     const gfx::Font& font, | 56     const gfx::FontList& font_list, | 
| 57     OmniboxView* omnibox_view, | 57     OmniboxView* omnibox_view, | 
| 58     OmniboxEditModel* edit_model, | 58     OmniboxEditModel* edit_model, | 
| 59     LocationBarView* location_bar_view) { | 59     LocationBarView* location_bar_view) { | 
| 60 #if defined(HTML_INSTANT_EXTENDED_POPUP) | 60 #if defined(HTML_INSTANT_EXTENDED_POPUP) | 
| 61   if (chrome::IsInstantExtendedAPIEnabled()) | 61   if (chrome::IsInstantExtendedAPIEnabled()) | 
| 62     return new OmniboxPopupNonView(edit_model); | 62     return new OmniboxPopupNonView(edit_model); | 
| 63 #endif | 63 #endif | 
| 64 | 64 | 
| 65   OmniboxPopupContentsView* view = NULL; | 65   OmniboxPopupContentsView* view = NULL; | 
| 66   if (ui::GetDisplayLayout() == ui::LAYOUT_TOUCH) { | 66   if (ui::GetDisplayLayout() == ui::LAYOUT_TOUCH) { | 
| 67     view = new TouchOmniboxPopupContentsView( | 67     view = new TouchOmniboxPopupContentsView( | 
| 68         font, omnibox_view, edit_model, location_bar_view); | 68         font_list, omnibox_view, edit_model, location_bar_view); | 
| 69   } else { | 69   } else { | 
| 70     view = new OmniboxPopupContentsView( | 70     view = new OmniboxPopupContentsView( | 
| 71         font, omnibox_view, edit_model, location_bar_view); | 71         font_list, omnibox_view, edit_model, location_bar_view); | 
| 72   } | 72   } | 
| 73 | 73 | 
| 74   view->Init(); | 74   view->Init(); | 
| 75   return view; | 75   return view; | 
| 76 } | 76 } | 
| 77 | 77 | 
| 78 OmniboxPopupContentsView::OmniboxPopupContentsView( | 78 OmniboxPopupContentsView::OmniboxPopupContentsView( | 
| 79     const gfx::Font& font, | 79     const gfx::FontList& font_list, | 
| 80     OmniboxView* omnibox_view, | 80     OmniboxView* omnibox_view, | 
| 81     OmniboxEditModel* edit_model, | 81     OmniboxEditModel* edit_model, | 
| 82     LocationBarView* location_bar_view) | 82     LocationBarView* location_bar_view) | 
| 83     : model_(new OmniboxPopupModel(this, edit_model)), | 83     : model_(new OmniboxPopupModel(this, edit_model)), | 
| 84       omnibox_view_(omnibox_view), | 84       omnibox_view_(omnibox_view), | 
| 85       location_bar_view_(location_bar_view), | 85       location_bar_view_(location_bar_view), | 
| 86       font_(font), | 86       font_list_(font_list), | 
| 87       ignore_mouse_drag_(false), | 87       ignore_mouse_drag_(false), | 
| 88       size_animation_(this), | 88       size_animation_(this), | 
| 89       left_margin_(0), | 89       left_margin_(0), | 
| 90       right_margin_(0), | 90       right_margin_(0), | 
| 91       outside_vertical_padding_(0) { | 91       outside_vertical_padding_(0) { | 
| 92   // The contents is owned by the LocationBarView. | 92   // The contents is owned by the LocationBarView. | 
| 93   set_owned_by_client(); | 93   set_owned_by_client(); | 
| 94 | 94 | 
| 95   ui::ThemeProvider* theme = location_bar_view_->GetThemeProvider(); | 95   ui::ThemeProvider* theme = location_bar_view_->GetThemeProvider(); | 
| 96   bottom_shadow_ = theme->GetImageSkiaNamed(IDR_BUBBLE_B); | 96   bottom_shadow_ = theme->GetImageSkiaNamed(IDR_BUBBLE_B); | 
| 97 } | 97 } | 
| 98 | 98 | 
| 99 void OmniboxPopupContentsView::Init() { | 99 void OmniboxPopupContentsView::Init() { | 
| 100   // This can't be done in the constructor as at that point we aren't | 100   // This can't be done in the constructor as at that point we aren't | 
| 101   // necessarily our final class yet, and we may have subclasses | 101   // necessarily our final class yet, and we may have subclasses | 
| 102   // overriding CreateResultView. | 102   // overriding CreateResultView. | 
| 103   for (size_t i = 0; i < AutocompleteResult::kMaxMatches; ++i) { | 103   for (size_t i = 0; i < AutocompleteResult::kMaxMatches; ++i) { | 
| 104     OmniboxResultView* result_view = CreateResultView(this, i, font_); | 104     OmniboxResultView* result_view = CreateResultView(this, i, font_list_); | 
| 105     result_view->SetVisible(false); | 105     result_view->SetVisible(false); | 
| 106     AddChildViewAt(result_view, static_cast<int>(i)); | 106     AddChildViewAt(result_view, static_cast<int>(i)); | 
| 107   } | 107   } | 
| 108 } | 108 } | 
| 109 | 109 | 
| 110 OmniboxPopupContentsView::~OmniboxPopupContentsView() { | 110 OmniboxPopupContentsView::~OmniboxPopupContentsView() { | 
| 111   // We don't need to do anything with |popup_| here.  The OS either has already | 111   // We don't need to do anything with |popup_| here.  The OS either has already | 
| 112   // closed the window, in which case it's been deleted, or it will soon, in | 112   // closed the window, in which case it's been deleted, or it will soon, in | 
| 113   // which case there's nothing we need to do. | 113   // which case there's nothing we need to do. | 
| 114 } | 114 } | 
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 410 | 410 | 
| 411   return popup_height + | 411   return popup_height + | 
| 412          views::NonClientFrameView::kClientEdgeThickness +  // Top border. | 412          views::NonClientFrameView::kClientEdgeThickness +  // Top border. | 
| 413          outside_vertical_padding_ * 2 +                    // Padding. | 413          outside_vertical_padding_ * 2 +                    // Padding. | 
| 414          bottom_shadow_->height() - kBorderInterior;        // Bottom border. | 414          bottom_shadow_->height() - kBorderInterior;        // Bottom border. | 
| 415 } | 415 } | 
| 416 | 416 | 
| 417 OmniboxResultView* OmniboxPopupContentsView::CreateResultView( | 417 OmniboxResultView* OmniboxPopupContentsView::CreateResultView( | 
| 418     OmniboxResultViewModel* model, | 418     OmniboxResultViewModel* model, | 
| 419     int model_index, | 419     int model_index, | 
| 420     const gfx::Font& font) { | 420     const gfx::FontList& font_list) { | 
| 421   return new OmniboxResultView(model, model_index, location_bar_view_, font); | 421   return new OmniboxResultView(model, model_index, location_bar_view_, | 
|  | 422                                font_list); | 
| 422 } | 423 } | 
| 423 | 424 | 
| 424 //////////////////////////////////////////////////////////////////////////////// | 425 //////////////////////////////////////////////////////////////////////////////// | 
| 425 // OmniboxPopupContentsView, views::View overrides, protected: | 426 // OmniboxPopupContentsView, views::View overrides, protected: | 
| 426 | 427 | 
| 427 void OmniboxPopupContentsView::OnPaint(gfx::Canvas* canvas) { | 428 void OmniboxPopupContentsView::OnPaint(gfx::Canvas* canvas) { | 
| 428   gfx::Rect contents_bounds = GetContentsBounds(); | 429   gfx::Rect contents_bounds = GetContentsBounds(); | 
| 429   contents_bounds.set_height( | 430   contents_bounds.set_height( | 
| 430       contents_bounds.height() - bottom_shadow_->height() + kBorderInterior); | 431       contents_bounds.height() - bottom_shadow_->height() + kBorderInterior); | 
| 431 | 432 | 
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 512   // OpenMatch() may close the popup, which will clear the result set and, by | 513   // OpenMatch() may close the popup, which will clear the result set and, by | 
| 513   // extension, |match| and its contents.  So copy the relevant match out to | 514   // extension, |match| and its contents.  So copy the relevant match out to | 
| 514   // make sure it stays alive until the call completes. | 515   // make sure it stays alive until the call completes. | 
| 515   AutocompleteMatch match = model_->result().match_at(index); | 516   AutocompleteMatch match = model_->result().match_at(index); | 
| 516   omnibox_view_->OpenMatch(match, disposition, GURL(), index); | 517   omnibox_view_->OpenMatch(match, disposition, GURL(), index); | 
| 517 } | 518 } | 
| 518 | 519 | 
| 519 OmniboxResultView* OmniboxPopupContentsView::result_view_at(size_t i) { | 520 OmniboxResultView* OmniboxPopupContentsView::result_view_at(size_t i) { | 
| 520   return static_cast<OmniboxResultView*>(child_at(static_cast<int>(i))); | 521   return static_cast<OmniboxResultView*>(child_at(static_cast<int>(i))); | 
| 521 } | 522 } | 
| OLD | NEW | 
|---|