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/content_setting_bubble_contents.h" | 5 #include "chrome/browser/ui/views/content_setting_bubble_contents.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 | 204 |
205 if (!bubble_content.learn_more_link.empty()) { | 205 if (!bubble_content.learn_more_link.empty()) { |
206 learn_more_link_ = | 206 learn_more_link_ = |
207 new views::Link(base::UTF8ToUTF16(bubble_content.learn_more_link)); | 207 new views::Link(base::UTF8ToUTF16(bubble_content.learn_more_link)); |
208 learn_more_link_->set_listener(this); | 208 learn_more_link_->set_listener(this); |
209 learn_more_link_->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 209 learn_more_link_->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
210 layout->AddView(learn_more_link_); | 210 layout->AddView(learn_more_link_); |
211 bubble_content_empty = false; | 211 bubble_content_empty = false; |
212 } | 212 } |
213 | 213 |
214 if (!bubble_content.plugin_names.empty()) { | 214 // Layout for the item list (blocked plugins and popups). |
215 const int kPluginsColumnSetId = 4; | 215 if (!bubble_content.list_items.empty()) { |
216 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); | 216 const int kItemListColumnSetId = 2; |
217 views::ColumnSet* plugins_column_set = | 217 views::ColumnSet* item_list_column_set = |
218 layout->AddColumnSet(kPluginsColumnSetId); | 218 layout->AddColumnSet(kItemListColumnSetId); |
219 plugins_column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1, | 219 item_list_column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 0, |
220 GridLayout::USE_PREF, 0, 0); | 220 GridLayout::USE_PREF, 0, 0); |
221 plugins_column_set->AddPaddingColumn( | 221 item_list_column_set->AddPaddingColumn( |
222 0, views::kRelatedControlHorizontalSpacing); | 222 0, views::kRelatedControlHorizontalSpacing); |
223 plugins_column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1, | 223 item_list_column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1, |
224 GridLayout::USE_PREF, 0, 0); | 224 GridLayout::USE_PREF, 0, 0); |
225 | 225 |
226 views::Label* plugin_names_label = | 226 int row = 0; |
227 new views::Label(bubble_content.plugin_names); | 227 for (const ContentSettingBubbleModel::ListItem& list_item : |
228 plugin_names_label->SetMultiLine(true); | 228 bubble_content.list_items) { |
229 plugin_names_label->SetHorizontalAlignment(gfx::ALIGN_LEFT); | |
230 layout->StartRow(0, kPluginsColumnSetId); | |
231 layout->AddView(plugin_names_label); | |
232 bubble_content_empty = false; | |
233 } | |
234 | |
235 if (content_setting_bubble_model_->content_type() == | |
236 CONTENT_SETTINGS_TYPE_POPUPS) { | |
237 const int kPopupColumnSetId = 2; | |
238 views::ColumnSet* popup_column_set = | |
239 layout->AddColumnSet(kPopupColumnSetId); | |
240 popup_column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 0, | |
241 GridLayout::USE_PREF, 0, 0); | |
242 popup_column_set->AddPaddingColumn( | |
243 0, views::kRelatedControlHorizontalSpacing); | |
244 popup_column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1, | |
245 GridLayout::USE_PREF, 0, 0); | |
246 | |
247 for (std::vector<ContentSettingBubbleModel::PopupItem>::const_iterator | |
248 i(bubble_content.popup_items.begin()); | |
249 i != bubble_content.popup_items.end(); ++i) { | |
250 if (!bubble_content_empty) | 229 if (!bubble_content_empty) |
251 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); | 230 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); |
252 layout->StartRow(0, kPopupColumnSetId); | 231 layout->StartRow(0, kItemListColumnSetId); |
253 | 232 if (list_item.has_link) { |
254 views::Link* link = new views::Link(base::UTF8ToUTF16(i->title)); | 233 views::Link* link = new views::Link(base::UTF8ToUTF16(list_item.title)); |
255 link->set_listener(this); | 234 link->set_listener(this); |
256 link->SetElideBehavior(gfx::ELIDE_MIDDLE); | 235 link->SetElideBehavior(gfx::ELIDE_MIDDLE); |
257 popup_links_[link] = i - bubble_content.popup_items.begin(); | 236 list_item_links_[link] = row; |
258 layout->AddView(new Favicon(i->image, this, link)); | 237 layout->AddView(new Favicon(list_item.image, this, link)); |
259 layout->AddView(link); | 238 layout->AddView(link); |
| 239 } else { |
| 240 views::Label* label = |
| 241 new views::Label(base::UTF8ToUTF16(list_item.title)); |
| 242 layout->AddView(new Favicon(list_item.image, this, NULL)); |
| 243 layout->AddView(label); |
| 244 } |
| 245 row++; |
260 bubble_content_empty = false; | 246 bubble_content_empty = false; |
261 } | 247 } |
262 } | 248 } |
263 | 249 |
264 const int indented_kSingleColumnSetId = 3; | 250 const int indented_kSingleColumnSetId = 3; |
265 // Insert a column set with greater indent. | 251 // Insert a column set with greater indent. |
266 views::ColumnSet* indented_single_column_set = | 252 views::ColumnSet* indented_single_column_set = |
267 layout->AddColumnSet(indented_kSingleColumnSetId); | 253 layout->AddColumnSet(indented_kSingleColumnSetId); |
268 indented_single_column_set->AddPaddingColumn(0, views::kCheckboxIndent); | 254 indented_single_column_set->AddPaddingColumn(0, views::kCheckboxIndent); |
269 indented_single_column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, | 255 indented_single_column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, |
(...skipping 18 matching lines...) Expand all Loading... |
288 } | 274 } |
289 DCHECK(!radio_group_.empty()); | 275 DCHECK(!radio_group_.empty()); |
290 // Now that the buttons have been added to the view hierarchy, it's safe | 276 // Now that the buttons have been added to the view hierarchy, it's safe |
291 // to call SetChecked() on them. | 277 // to call SetChecked() on them. |
292 radio_group_[radio_group.default_item]->SetChecked(true); | 278 radio_group_[radio_group.default_item]->SetChecked(true); |
293 } | 279 } |
294 | 280 |
295 // Layout code for the media device menus. | 281 // Layout code for the media device menus. |
296 if (content_setting_bubble_model_->content_type() == | 282 if (content_setting_bubble_model_->content_type() == |
297 CONTENT_SETTINGS_TYPE_MEDIASTREAM) { | 283 CONTENT_SETTINGS_TYPE_MEDIASTREAM) { |
298 const int kMediaMenuColumnSetId = 2; | 284 const int kMediaMenuColumnSetId = 4; |
299 views::ColumnSet* menu_column_set = | 285 views::ColumnSet* menu_column_set = |
300 layout->AddColumnSet(kMediaMenuColumnSetId); | 286 layout->AddColumnSet(kMediaMenuColumnSetId); |
301 menu_column_set->AddPaddingColumn(0, views::kCheckboxIndent); | 287 menu_column_set->AddPaddingColumn(0, views::kCheckboxIndent); |
302 menu_column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 0, | 288 menu_column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 0, |
303 GridLayout::USE_PREF, 0, 0); | 289 GridLayout::USE_PREF, 0, 0); |
304 menu_column_set->AddPaddingColumn( | 290 menu_column_set->AddPaddingColumn( |
305 0, views::kRelatedControlHorizontalSpacing); | 291 0, views::kRelatedControlHorizontalSpacing); |
306 menu_column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1, | 292 menu_column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1, |
307 GridLayout::USE_PREF, 0, 0); | 293 GridLayout::USE_PREF, 0, 0); |
308 | 294 |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
456 return; | 442 return; |
457 } | 443 } |
458 if (source == manage_link_) { | 444 if (source == manage_link_) { |
459 GetWidget()->Close(); | 445 GetWidget()->Close(); |
460 content_setting_bubble_model_->OnManageLinkClicked(); | 446 content_setting_bubble_model_->OnManageLinkClicked(); |
461 // CAREFUL: Showing the settings window activates it, which deactivates the | 447 // CAREFUL: Showing the settings window activates it, which deactivates the |
462 // info bubble, which causes it to close, which deletes us. | 448 // info bubble, which causes it to close, which deletes us. |
463 return; | 449 return; |
464 } | 450 } |
465 | 451 |
466 PopupLinks::const_iterator i(popup_links_.find(source)); | 452 ListItemLinks::const_iterator i(list_item_links_.find(source)); |
467 DCHECK(i != popup_links_.end()); | 453 DCHECK(i != list_item_links_.end()); |
468 content_setting_bubble_model_->OnPopupClicked(i->second); | 454 content_setting_bubble_model_->OnListItemClicked(i->second); |
469 } | 455 } |
470 | 456 |
471 void ContentSettingBubbleContents::OnMenuButtonClicked( | 457 void ContentSettingBubbleContents::OnMenuButtonClicked( |
472 views::View* source, | 458 views::View* source, |
473 const gfx::Point& point) { | 459 const gfx::Point& point) { |
474 MediaMenuPartsMap::iterator j(media_menus_.find( | 460 MediaMenuPartsMap::iterator j(media_menus_.find( |
475 static_cast<views::MenuButton*>(source))); | 461 static_cast<views::MenuButton*>(source))); |
476 DCHECK(j != media_menus_.end()); | 462 DCHECK(j != media_menus_.end()); |
477 menu_runner_.reset(new views::MenuRunner(j->second->menu_model.get(), | 463 menu_runner_.reset(new views::MenuRunner(j->second->menu_model.get(), |
478 views::MenuRunner::HAS_MNEMONICS)); | 464 views::MenuRunner::HAS_MNEMONICS)); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
513 // Make sure the width is at least kMinMediaMenuButtonWidth. The | 499 // Make sure the width is at least kMinMediaMenuButtonWidth. The |
514 // maximum width will be clamped by kMaxContentsWidth of the view. | 500 // maximum width will be clamped by kMaxContentsWidth of the view. |
515 menu_width = std::max(kMinMediaMenuButtonWidth, menu_width + margins); | 501 menu_width = std::max(kMinMediaMenuButtonWidth, menu_width + margins); |
516 | 502 |
517 for (MediaMenuPartsMap::const_iterator i = media_menus_.begin(); | 503 for (MediaMenuPartsMap::const_iterator i = media_menus_.begin(); |
518 i != media_menus_.end(); ++i) { | 504 i != media_menus_.end(); ++i) { |
519 i->first->SetMinSize(gfx::Size(menu_width, 0)); | 505 i->first->SetMinSize(gfx::Size(menu_width, 0)); |
520 i->first->SetMaxSize(gfx::Size(menu_width, 0)); | 506 i->first->SetMaxSize(gfx::Size(menu_width, 0)); |
521 } | 507 } |
522 } | 508 } |
OLD | NEW |