Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2068)

Unified Diff: chrome/browser/gtk/collected_cookies_gtk.cc

Issue 3108029: Display an infobar when content settings were created. (Closed)
Patch Set: updates Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/gtk/collected_cookies_gtk.h ('k') | chrome/browser/gtk/gtk_tree.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/gtk/collected_cookies_gtk.cc
diff --git a/chrome/browser/gtk/collected_cookies_gtk.cc b/chrome/browser/gtk/collected_cookies_gtk.cc
index 2992120c613e28b9b62e86af4c53c822136d5a78..8d4dbf712f90566dfdbc7b0ca9d9fa62fd9dbd29 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) {
« no previous file with comments | « chrome/browser/gtk/collected_cookies_gtk.h ('k') | chrome/browser/gtk/gtk_tree.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698