OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/first_run_search_engine_view.h" | 5 #include "chrome/browser/ui/views/first_run_search_engine_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <map> | 8 #include <map> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 } | 133 } |
134 } | 134 } |
135 | 135 |
136 void SearchEngineChoice::SetChoiceViewBounds(int x, int y, int width, | 136 void SearchEngineChoice::SetChoiceViewBounds(int x, int y, int width, |
137 int height) { | 137 int height) { |
138 choice_view_->SetBounds(x, y, width, height); | 138 choice_view_->SetBounds(x, y, width, height); |
139 } | 139 } |
140 | 140 |
141 FirstRunSearchEngineView::FirstRunSearchEngineView(Profile* profile, | 141 FirstRunSearchEngineView::FirstRunSearchEngineView(Profile* profile, |
142 bool randomize) | 142 bool randomize) |
143 : background_image_(NULL), | 143 : views::ClientView(NULL, NULL), |
| 144 background_image_(NULL), |
144 template_url_service_(TemplateURLServiceFactory::GetForProfile(profile)), | 145 template_url_service_(TemplateURLServiceFactory::GetForProfile(profile)), |
145 text_direction_is_rtl_(base::i18n::IsRTL()), | 146 text_direction_is_rtl_(base::i18n::IsRTL()), |
146 added_to_view_hierarchy_(false), | 147 added_to_view_hierarchy_(false), |
147 randomize_(randomize), | 148 randomize_(randomize), |
148 user_chosen_engine_(false), | 149 user_chosen_engine_(false), |
149 fallback_choice_(NULL), | 150 fallback_choice_(NULL), |
150 quit_on_closing_(true) { | 151 quit_on_closing_(true) { |
151 // Don't show ourselves until all the search engines have loaded from | 152 // Don't show ourselves until all the search engines have loaded from |
152 // the profile -- otherwise we have nothing to show. | 153 // the profile -- otherwise we have nothing to show. |
153 SetVisible(false); | 154 SetVisible(false); |
154 | 155 |
155 // Start loading the search engines for the given profile. The service is | 156 // Start loading the search engines for the given profile. The service is |
156 // already loaded in tests. | 157 // already loaded in tests. |
157 DCHECK(template_url_service_); | 158 DCHECK(template_url_service_); |
158 if (!template_url_service_->loaded()) { | 159 if (!template_url_service_->loaded()) { |
159 template_url_service_->AddObserver(this); | 160 template_url_service_->AddObserver(this); |
160 template_url_service_->Load(); | 161 template_url_service_->Load(); |
161 } | 162 } |
162 } | 163 } |
163 | 164 |
164 FirstRunSearchEngineView::~FirstRunSearchEngineView() { | 165 FirstRunSearchEngineView::~FirstRunSearchEngineView() { |
165 template_url_service_->RemoveObserver(this); | 166 template_url_service_->RemoveObserver(this); |
166 } | 167 } |
167 | 168 |
168 string16 FirstRunSearchEngineView::GetWindowTitle() const { | 169 string16 FirstRunSearchEngineView::GetWindowTitle() const { |
169 return l10n_util::GetStringUTF16(IDS_FIRSTRUN_DLG_TITLE); | 170 return l10n_util::GetStringUTF16(IDS_FIRSTRUN_DLG_TITLE); |
170 } | 171 } |
171 | 172 |
| 173 views::View* FirstRunSearchEngineView::GetContentsView() { |
| 174 return this; |
| 175 } |
| 176 |
| 177 views::ClientView* FirstRunSearchEngineView::CreateClientView( |
| 178 views::Widget* widget) { |
| 179 return this; |
| 180 } |
| 181 |
172 void FirstRunSearchEngineView::WindowClosing() { | 182 void FirstRunSearchEngineView::WindowClosing() { |
173 // If the window is closed by clicking the close button, we default to the | 183 // If the window is closed by clicking the close button, we default to the |
174 // engine in the first slot. | 184 // engine in the first slot. |
175 if (!user_chosen_engine_) | 185 if (!user_chosen_engine_) |
176 ChooseSearchEngine(fallback_choice_); | 186 ChooseSearchEngine(fallback_choice_); |
177 if (quit_on_closing_) | 187 if (quit_on_closing_) |
178 MessageLoop::current()->Quit(); | 188 MessageLoop::current()->Quit(); |
179 } | 189 } |
180 | 190 |
| 191 views::Widget* FirstRunSearchEngineView::GetWidget() { |
| 192 return View::GetWidget(); |
| 193 } |
| 194 |
| 195 const views::Widget* FirstRunSearchEngineView::GetWidget() const { |
| 196 return View::GetWidget(); |
| 197 } |
| 198 |
| 199 bool FirstRunSearchEngineView::CanClose() { |
| 200 // We need a valid search engine to set as default, so if the user tries to |
| 201 // close the window before the template URL service is loaded, we must prevent |
| 202 // this from happening. |
| 203 return fallback_choice_ != NULL; |
| 204 } |
| 205 |
181 void FirstRunSearchEngineView::ButtonPressed(views::Button* sender, | 206 void FirstRunSearchEngineView::ButtonPressed(views::Button* sender, |
182 const views::Event& event) { | 207 const views::Event& event) { |
183 ChooseSearchEngine(static_cast<SearchEngineChoice*>(sender)); | 208 ChooseSearchEngine(static_cast<SearchEngineChoice*>(sender)); |
184 GetWidget()->Close(); | 209 GetWidget()->Close(); |
185 // This will call through to WindowClosing() above and will quit the message | 210 // This will call through to WindowClosing() above and will quit the message |
186 // loop. | 211 // loop. |
187 } | 212 } |
188 | 213 |
189 void FirstRunSearchEngineView::OnPaint(gfx::Canvas* canvas) { | 214 void FirstRunSearchEngineView::OnPaint(gfx::Canvas* canvas) { |
190 // Fill in behind the background image with the standard gray toolbar color. | 215 // Fill in behind the background image with the standard gray toolbar color. |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 | 495 |
471 // This will tell screenreaders that they should read the full text | 496 // This will tell screenreaders that they should read the full text |
472 // of this dialog to the user now (rather than waiting for the user | 497 // of this dialog to the user now (rather than waiting for the user |
473 // to explore it). | 498 // to explore it). |
474 GetWidget()->NotifyAccessibilityEvent( | 499 GetWidget()->NotifyAccessibilityEvent( |
475 this, ui::AccessibilityTypes::EVENT_ALERT, true); | 500 this, ui::AccessibilityTypes::EVENT_ALERT, true); |
476 } | 501 } |
477 | 502 |
478 void FirstRunSearchEngineView::ChooseSearchEngine(SearchEngineChoice* choice) { | 503 void FirstRunSearchEngineView::ChooseSearchEngine(SearchEngineChoice* choice) { |
479 user_chosen_engine_ = true; | 504 user_chosen_engine_ = true; |
480 DCHECK(template_url_service_); | 505 DCHECK(choice && template_url_service_); |
481 template_url_service_->SetSearchEngineDialogSlot(choice->slot()); | 506 template_url_service_->SetSearchEngineDialogSlot(choice->slot()); |
482 const TemplateURL* default_search = choice->GetSearchEngine(); | 507 const TemplateURL* default_search = choice->GetSearchEngine(); |
483 if (default_search) | 508 if (default_search) |
484 template_url_service_->SetDefaultSearchProvider(default_search); | 509 template_url_service_->SetDefaultSearchProvider(default_search); |
485 } | 510 } |
OLD | NEW |