diff options
Diffstat (limited to 'chrome/browser/ui/views/content_setting_bubble_contents.cc')
-rw-r--r-- | chrome/browser/ui/views/content_setting_bubble_contents.cc | 130 |
1 files changed, 44 insertions, 86 deletions
diff --git a/chrome/browser/ui/views/content_setting_bubble_contents.cc b/chrome/browser/ui/views/content_setting_bubble_contents.cc index 40a2acc..27104a2 100644 --- a/chrome/browser/ui/views/content_setting_bubble_contents.cc +++ b/chrome/browser/ui/views/content_setting_bubble_contents.cc @@ -11,10 +11,10 @@ #include "app/l10n_util.h" #include "base/utf_string_conversions.h" #include "chrome/browser/blocked_content_container.h" +#include "chrome/browser/content_settings/host_content_settings_map.h" #include "chrome/browser/content_setting_bubble_model.h" -#include "chrome/browser/host_content_settings_map.h" #include "chrome/browser/plugin_updater.h" -#include "chrome/browser/profile.h" +#include "chrome/browser/profiles/profile.h" #include "chrome/browser/tab_contents/tab_contents.h" #include "chrome/browser/views/browser_dialogs.h" #include "chrome/browser/views/info_bubble.h" @@ -115,11 +115,9 @@ ContentSettingBubbleContents::ContentSettingBubbleContents( profile_(profile), tab_contents_(tab_contents), info_bubble_(NULL), - close_button_(NULL), + custom_link_(NULL), manage_link_(NULL), - clear_link_(NULL), - info_link_(NULL), - load_plugins_link_(NULL) { + close_button_(NULL) { registrar_.Add(this, NotificationType::TAB_CONTENTS_DESTROYED, Source<TabContents>(tab_contents)); } @@ -164,29 +162,17 @@ void ContentSettingBubbleContents::ButtonPressed(views::Button* sender, void ContentSettingBubbleContents::LinkActivated(views::Link* source, int event_flags) { - if (source == manage_link_) { - info_bubble_->set_fade_away_on_close(true); - content_setting_bubble_model_->OnManageLinkClicked(); - // CAREFUL: Showing the settings window activates it, which deactivates the - // info bubble, which causes it to close, which deletes us. - return; - } - if (source == clear_link_) { - content_setting_bubble_model_->OnClearLinkClicked(); - info_bubble_->set_fade_away_on_close(true); - info_bubble_->Close(); // CAREFUL: This deletes us. - return; - } - if (source == info_link_) { - content_setting_bubble_model_->OnInfoLinkClicked(); + if (source == custom_link_) { + content_setting_bubble_model_->OnCustomLinkClicked(); info_bubble_->set_fade_away_on_close(true); info_bubble_->Close(); // CAREFUL: This deletes us. return; } - if (source == load_plugins_link_) { - content_setting_bubble_model_->OnLoadPluginsLinkClicked(); + if (source == manage_link_) { info_bubble_->set_fade_away_on_close(true); - info_bubble_->Close(); // CAREFUL: This deletes us. + content_setting_bubble_model_->OnManageLinkClicked(); + // CAREFUL: Showing the settings window activates it, which deactivates the + // info bubble, which causes it to close, which deletes us. return; } @@ -216,30 +202,30 @@ void ContentSettingBubbleContents::InitControlLayout() { const ContentSettingBubbleModel::BubbleContent& bubble_content = content_setting_bubble_model_->bubble_content(); + bool bubble_content_empty = true; if (!bubble_content.title.empty()) { views::Label* title_label = new views::Label(UTF8ToWide( bubble_content.title)); layout->StartRow(0, single_column_set_id); layout->AddView(title_label); - layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); + bubble_content_empty = false; } const std::set<std::string>& plugins = bubble_content.resource_identifiers; if (!plugins.empty()) { + if (!bubble_content_empty) + layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); for (std::set<std::string>::const_iterator it = plugins.begin(); it != plugins.end(); ++it) { - std::wstring name; - NPAPI::PluginList::PluginMap groups; - NPAPI::PluginList::Singleton()->GetPluginGroups(false, &groups); - if (groups.find(*it) != groups.end()) - name = UTF16ToWide(groups[*it]->GetGroupName()); - else + std::wstring name = UTF16ToWide( + NPAPI::PluginList::Singleton()->GetPluginGroupName(*it)); + if (name.empty()) name = UTF8ToWide(*it); layout->StartRow(0, single_column_set_id); layout->AddView(new views::Label(name)); + bubble_content_empty = false; } - layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); } if (content_setting_bubble_model_->content_type() == @@ -256,7 +242,7 @@ void ContentSettingBubbleContents::InitControlLayout() { for (std::vector<ContentSettingBubbleModel::PopupItem>::const_iterator i(bubble_content.popup_items.begin()); i != bubble_content.popup_items.end(); ++i) { - if (i != bubble_content.popup_items.begin()) + if (!bubble_content_empty) layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); layout->StartRow(0, popup_column_set_id); @@ -266,32 +252,26 @@ void ContentSettingBubbleContents::InitControlLayout() { popup_links_[link] = i - bubble_content.popup_items.begin(); layout->AddView(new Favicon((*i).bitmap, this, link)); layout->AddView(link); + bubble_content_empty = false; } - layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); - - views::Separator* separator = new views::Separator; - layout->StartRow(0, single_column_set_id); - layout->AddView(separator); - layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); } const ContentSettingBubbleModel::RadioGroup& radio_group = bubble_content.radio_group; - for (ContentSettingBubbleModel::RadioItems::const_iterator i = - radio_group.radio_items.begin(); - i != radio_group.radio_items.end(); ++i) { - views::RadioButton* radio = new views::RadioButton(UTF8ToWide(*i), 0); - radio->set_listener(this); - radio_group_.push_back(radio); - layout->StartRow(0, single_column_set_id); - layout->AddView(radio); - layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); - } - if (!radio_group_.empty()) { - views::Separator* separator = new views::Separator; - layout->StartRow(0, single_column_set_id); - layout->AddView(separator, 1, 1, GridLayout::FILL, GridLayout::FILL); - layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); + if (!radio_group.radio_items.empty()) { + for (ContentSettingBubbleModel::RadioItems::const_iterator i = + radio_group.radio_items.begin(); + i != radio_group.radio_items.end(); ++i) { + views::RadioButton* radio = new views::RadioButton(UTF8ToWide(*i), 0); + radio->set_listener(this); + radio_group_.push_back(radio); + if (!bubble_content_empty) + layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); + layout->StartRow(0, single_column_set_id); + layout->AddView(radio); + bubble_content_empty = false; + } + DCHECK(!radio_group_.empty()); // Now that the buttons have been added to the view hierarchy, it's safe // to call SetChecked() on them. radio_group_[radio_group.default_item]->SetChecked(true); @@ -319,43 +299,21 @@ void ContentSettingBubbleContents::InitControlLayout() { layout->StartRow(0, indented_single_column_set_id); layout->AddView(new views::Label(UTF8ToWide(*j), domain_font)); } - layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); - } - - if (!bubble_content.clear_link.empty()) { - clear_link_ = new views::Link(UTF8ToWide(bubble_content.clear_link)); - clear_link_->SetController(this); - layout->StartRow(0, single_column_set_id); - layout->AddView(clear_link_); - - layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); - layout->StartRow(0, single_column_set_id); - layout->AddView(new views::Separator, 1, 1, - GridLayout::FILL, GridLayout::FILL); - layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); + bubble_content_empty = false; } - if (!bubble_content.info_link.empty()) { - info_link_ = new views::Link(UTF8ToWide(bubble_content.info_link)); - info_link_->SetController(this); - layout->StartRow(0, single_column_set_id); - layout->AddView(info_link_); - - layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); + if (!bubble_content.custom_link.empty()) { + custom_link_ = new views::Link(UTF8ToWide(bubble_content.custom_link)); + custom_link_->SetEnabled(bubble_content.custom_link_enabled); + custom_link_->SetController(this); + if (!bubble_content_empty) + layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); layout->StartRow(0, single_column_set_id); - layout->AddView(new views::Separator, 1, 1, - GridLayout::FILL, GridLayout::FILL); - layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); + layout->AddView(custom_link_); + bubble_content_empty = false; } - if (!bubble_content.load_plugins_link_title.empty()) { - load_plugins_link_ = new views::Link( - UTF8ToWide(bubble_content.load_plugins_link_title)); - load_plugins_link_->SetEnabled(bubble_content.load_plugins_link_enabled); - load_plugins_link_->SetController(this); - layout->StartRow(0, single_column_set_id); - layout->AddView(load_plugins_link_); - + if (!bubble_content_empty) { layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); layout->StartRow(0, single_column_set_id); layout->AddView(new views::Separator, 1, 1, |