summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/collected_cookies_gtk.cc
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-20 21:35:32 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-20 21:35:32 +0000
commitdf0f6e8f05dcab26f0e53bda494cb0d22ae315d0 (patch)
tree117d1fc17719bff500b9f2c2552789dc23d83ebb /chrome/browser/gtk/collected_cookies_gtk.cc
parent706dbc20653f11019797dcb2bdfee2e9e83b0fba (diff)
downloadchromium_src-df0f6e8f05dcab26f0e53bda494cb0d22ae315d0.zip
chromium_src-df0f6e8f05dcab26f0e53bda494cb0d22ae315d0.tar.gz
chromium_src-df0f6e8f05dcab26f0e53bda494cb0d22ae315d0.tar.bz2
Display an infobar when content settings were created.
The xib changes add a gradient view with an icon and a text field that is displayed as infobar. The text field is set to truncate. The blocked cookies label is set to wrap. The various views are connected to the new outlets. win: http://imgur.com/OmTxr.png linux: http://imgur.com/OmTxr mac: http://imgur.com/VbwFp BUG=49826 TEST=unit_tests Review URL: http://codereview.chromium.org/3108029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56913 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk/collected_cookies_gtk.cc')
-rw-r--r--chrome/browser/gtk/collected_cookies_gtk.cc101
1 files changed, 95 insertions, 6 deletions
diff --git a/chrome/browser/gtk/collected_cookies_gtk.cc b/chrome/browser/gtk/collected_cookies_gtk.cc
index 2992120..8d4dbf7 100644
--- a/chrome/browser/gtk/collected_cookies_gtk.cc
+++ b/chrome/browser/gtk/collected_cookies_gtk.cc
@@ -13,8 +13,56 @@
#include "grit/generated_resources.h"
namespace {
-// Height of the cookie tree view.
+// Width and height of the cookie tree view.
+const int kTreeViewWidth = 450;
const int kTreeViewHeight = 150;
+
+// Padding within the banner box.
+const int kBannerPadding = 3;
+
+// Returns the text to display in the info bar when content settings were
+// created.
+const std::string GetInfobarLabel(ContentSetting setting,
+ bool multiple_domains_added,
+ const string16& domain_name) {
+ if (multiple_domains_added) {
+ switch (setting) {
+ case CONTENT_SETTING_BLOCK:
+ return l10n_util::GetStringUTF8(
+ IDS_COLLECTED_COOKIES_MULTIPLE_BLOCK_RULES_CREATED);
+
+ case CONTENT_SETTING_ALLOW:
+ return l10n_util::GetStringUTF8(
+ IDS_COLLECTED_COOKIES_MULTIPLE_ALLOW_RULES_CREATED);
+
+ case CONTENT_SETTING_SESSION_ONLY:
+ return l10n_util::GetStringUTF8(
+ IDS_COLLECTED_COOKIES_MULTIPLE_SESSION_RULES_CREATED);
+
+ default:
+ NOTREACHED();
+ return std::string();
+ }
+ }
+
+ switch (setting) {
+ case CONTENT_SETTING_BLOCK:
+ return l10n_util::GetStringFUTF8(
+ IDS_COLLECTED_COOKIES_BLOCK_RULE_CREATED, domain_name);
+
+ case CONTENT_SETTING_ALLOW:
+ return l10n_util::GetStringFUTF8(
+ IDS_COLLECTED_COOKIES_ALLOW_RULE_CREATED, domain_name);
+
+ case CONTENT_SETTING_SESSION_ONLY:
+ return l10n_util::GetStringFUTF8(
+ IDS_COLLECTED_COOKIES_SESSION_RULE_CREATED, domain_name);
+
+ default:
+ NOTREACHED();
+ return std::string();
+ }
+}
} // namespace
CollectedCookiesGtk::CollectedCookiesGtk(GtkWindow* parent,
@@ -29,6 +77,9 @@ CollectedCookiesGtk::CollectedCookiesGtk(GtkWindow* parent,
}
void CollectedCookiesGtk::Init() {
+ HostContentSettingsMap* host_content_settings_map =
+ tab_contents_->profile()->GetHostContentSettingsMap();
+
dialog_ = gtk_vbox_new(FALSE, gtk_util::kContentAreaSpacing);
gtk_box_set_spacing(GTK_BOX(dialog_), gtk_util::kContentAreaSpacing);
@@ -63,7 +114,7 @@ void CollectedCookiesGtk::Init() {
new gtk_tree::TreeAdapter(this, allowed_cookies_tree_model_.get()));
allowed_tree_ = gtk_tree_view_new_with_model(
GTK_TREE_MODEL(allowed_cookies_tree_adapter_->tree_store()));
- gtk_widget_set_size_request(allowed_tree_, -1, kTreeViewHeight);
+ gtk_widget_set_size_request(allowed_tree_, kTreeViewWidth, kTreeViewHeight);
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(allowed_tree_), FALSE);
gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(allowed_tree_), TRUE);
gtk_container_add(GTK_CONTAINER(scroll_window), allowed_tree_);
@@ -99,15 +150,22 @@ void CollectedCookiesGtk::Init() {
G_CALLBACK(OnBlockAllowedButtonClickedThunk), this);
gtk_container_add(GTK_CONTAINER(button_box), block_allowed_cookie_button_);
+ GtkWidget* separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(dialog_), separator, TRUE, TRUE, 0);
+
// Blocked Cookie list.
cookie_list_vbox = gtk_vbox_new(FALSE, gtk_util::kControlSpacing);
gtk_box_pack_start(GTK_BOX(dialog_), cookie_list_vbox, TRUE, TRUE, 0);
label = gtk_label_new(
- l10n_util::GetStringUTF8(IDS_COLLECTED_COOKIES_BLOCKED_COOKIES_LABEL).
- c_str());
+ l10n_util::GetStringUTF8(
+ host_content_settings_map->BlockThirdPartyCookies() ?
+ IDS_COLLECTED_COOKIES_BLOCKED_THIRD_PARTY_BLOCKING_ENABLED :
+ IDS_COLLECTED_COOKIES_BLOCKED_COOKIES_LABEL).c_str());
+ gtk_widget_set_size_request(label, kTreeViewWidth, -1);
+ gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
- gtk_box_pack_start(GTK_BOX(cookie_list_vbox), label, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(cookie_list_vbox), label, TRUE, TRUE, 0);
scroll_window = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_window),
@@ -123,7 +181,7 @@ void CollectedCookiesGtk::Init() {
new gtk_tree::TreeAdapter(this, blocked_cookies_tree_model_.get()));
blocked_tree_ = gtk_tree_view_new_with_model(
GTK_TREE_MODEL(blocked_cookies_tree_adapter_->tree_store()));
- gtk_widget_set_size_request(blocked_tree_, -1, kTreeViewHeight);
+ gtk_widget_set_size_request(blocked_tree_, kTreeViewWidth, kTreeViewHeight);
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(blocked_tree_), FALSE);
gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(blocked_tree_), TRUE);
gtk_container_add(GTK_CONTAINER(scroll_window), blocked_tree_);
@@ -166,6 +224,24 @@ void CollectedCookiesGtk::Init() {
gtk_container_add(GTK_CONTAINER(button_box),
for_session_blocked_cookie_button_);
+ // Infobar.
+ infobar_ = gtk_frame_new(NULL);
+ GtkWidget* infobar_contents = gtk_hbox_new(FALSE, kBannerPadding);
+ gtk_container_set_border_width(GTK_CONTAINER(infobar_contents),
+ kBannerPadding);
+ gtk_container_add(GTK_CONTAINER(infobar_), infobar_contents);
+ GtkWidget* info_image =
+ gtk_image_new_from_stock(GTK_STOCK_DIALOG_INFO,
+ GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_box_pack_start(GTK_BOX(infobar_contents), info_image, FALSE, FALSE, 0);
+ infobar_label_ = gtk_label_new(NULL);
+ gtk_box_pack_start(
+ GTK_BOX(infobar_contents), infobar_label_, FALSE, FALSE, 0);
+ gtk_widget_show_all(infobar_);
+ gtk_widget_set_no_show_all(infobar_, TRUE);
+ gtk_widget_hide(infobar_);
+ gtk_box_pack_start(GTK_BOX(dialog_), infobar_, TRUE, TRUE, 0);
+
// Close button.
button_box = gtk_hbutton_box_new();
gtk_button_box_set_layout(GTK_BUTTON_BOX(button_box), GTK_BUTTONBOX_END);
@@ -259,6 +335,8 @@ void CollectedCookiesGtk::AddExceptions(GtkTreeSelection* selection,
GtkTreeModel* model;
GList* paths =
gtk_tree_selection_get_selected_rows(selection, &model);
+ string16 last_domain_name;
+ bool multiple_domains_added = false;
for (GList* item = paths; item; item = item->next) {
GtkTreeIter iter;
gtk_tree_model_get_iter(
@@ -266,12 +344,23 @@ void CollectedCookiesGtk::AddExceptions(GtkTreeSelection* selection,
CookieTreeOriginNode* node = static_cast<CookieTreeOriginNode*>(
adapter->GetNode(&iter));
if (node->CanCreateContentException()) {
+ if (!last_domain_name.empty())
+ multiple_domains_added = true;
+ last_domain_name = node->GetTitleAsString16();
node->CreateContentException(
tab_contents_->profile()->GetHostContentSettingsMap(), setting);
}
}
g_list_foreach(paths, reinterpret_cast<GFunc>(gtk_tree_path_free), NULL);
g_list_free(paths);
+ if (last_domain_name.empty()) {
+ gtk_widget_hide(infobar_);
+ } else {
+ gtk_label_set_text(
+ GTK_LABEL(infobar_label_), GetInfobarLabel(
+ setting, multiple_domains_added, last_domain_name).c_str());
+ gtk_widget_show(infobar_);
+ }
}
void CollectedCookiesGtk::OnBlockAllowedButtonClicked(GtkWidget* button) {