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/gtk/collected_cookies_gtk.h" | 5 #include "chrome/browser/ui/gtk/collected_cookies_gtk.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "chrome/browser/content_settings/host_content_settings_map.h" | 9 #include "chrome/browser/content_settings/host_content_settings_map.h" |
10 #include "chrome/browser/content_settings/tab_specific_content_settings.h" | 10 #include "chrome/browser/content_settings/tab_specific_content_settings.h" |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 | 70 |
71 case CONTENT_SETTING_SESSION_ONLY: | 71 case CONTENT_SETTING_SESSION_ONLY: |
72 return l10n_util::GetStringFUTF8( | 72 return l10n_util::GetStringFUTF8( |
73 IDS_COLLECTED_COOKIES_SESSION_RULE_CREATED, domain_name); | 73 IDS_COLLECTED_COOKIES_SESSION_RULE_CREATED, domain_name); |
74 | 74 |
75 default: | 75 default: |
76 NOTREACHED(); | 76 NOTREACHED(); |
77 return std::string(); | 77 return std::string(); |
78 } | 78 } |
79 } | 79 } |
| 80 |
80 } // namespace | 81 } // namespace |
81 | 82 |
82 CollectedCookiesGtk::CollectedCookiesGtk(GtkWindow* parent, | 83 CollectedCookiesGtk::CollectedCookiesGtk(GtkWindow* parent, |
83 TabContents* tab_contents) | 84 TabContentsWrapper* wrapper) |
84 : tab_contents_(tab_contents), | 85 : wrapper_(wrapper), |
85 status_changed_(false) { | 86 status_changed_(false) { |
86 TabSpecificContentSettings* content_settings = | |
87 TabContentsWrapper::GetCurrentWrapperForContents(tab_contents)-> | |
88 content_settings(); | |
89 registrar_.Add(this, chrome::NOTIFICATION_COLLECTED_COOKIES_SHOWN, | 87 registrar_.Add(this, chrome::NOTIFICATION_COLLECTED_COOKIES_SHOWN, |
90 Source<TabSpecificContentSettings>(content_settings)); | 88 Source<TabSpecificContentSettings>( |
| 89 wrapper->content_settings())); |
91 | 90 |
92 Init(); | 91 Init(); |
93 } | 92 } |
94 | 93 |
95 void CollectedCookiesGtk::Init() { | 94 void CollectedCookiesGtk::Init() { |
96 dialog_ = gtk_vbox_new(FALSE, ui::kContentAreaSpacing); | 95 dialog_ = gtk_vbox_new(FALSE, ui::kContentAreaSpacing); |
97 gtk_box_set_spacing(GTK_BOX(dialog_), ui::kContentAreaSpacing); | 96 gtk_box_set_spacing(GTK_BOX(dialog_), ui::kContentAreaSpacing); |
98 | 97 |
99 GtkWidget* label = gtk_label_new( | 98 GtkWidget* label = gtk_label_new( |
100 l10n_util::GetStringUTF8(IDS_COLLECTED_COOKIES_DIALOG_TITLE).c_str()); | 99 l10n_util::GetStringUTF8(IDS_COLLECTED_COOKIES_DIALOG_TITLE).c_str()); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 gtk_button_set_label(GTK_BUTTON(close_button_), | 156 gtk_button_set_label(GTK_BUTTON(close_button_), |
158 l10n_util::GetStringUTF8(IDS_CLOSE).c_str()); | 157 l10n_util::GetStringUTF8(IDS_CLOSE).c_str()); |
159 g_signal_connect(close_button_, "clicked", G_CALLBACK(OnCloseThunk), this); | 158 g_signal_connect(close_button_, "clicked", G_CALLBACK(OnCloseThunk), this); |
160 gtk_box_pack_end(GTK_BOX(button_box), close_button_, FALSE, TRUE, 0); | 159 gtk_box_pack_end(GTK_BOX(button_box), close_button_, FALSE, TRUE, 0); |
161 | 160 |
162 // Show the dialog. | 161 // Show the dialog. |
163 allowed_cookies_tree_adapter_->Init(); | 162 allowed_cookies_tree_adapter_->Init(); |
164 blocked_cookies_tree_adapter_->Init(); | 163 blocked_cookies_tree_adapter_->Init(); |
165 EnableControls(); | 164 EnableControls(); |
166 ShowCookieInfo(gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook_))); | 165 ShowCookieInfo(gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook_))); |
167 window_ = new ConstrainedWindowGtk(tab_contents_, this); | 166 window_ = new ConstrainedWindowGtk(wrapper_->tab_contents(), this); |
168 } | 167 } |
169 | 168 |
170 GtkWidget* CollectedCookiesGtk::CreateAllowedPane() { | 169 GtkWidget* CollectedCookiesGtk::CreateAllowedPane() { |
171 GtkWidget* cookie_list_vbox = gtk_vbox_new(FALSE, ui::kControlSpacing); | 170 GtkWidget* cookie_list_vbox = gtk_vbox_new(FALSE, ui::kControlSpacing); |
172 | 171 |
173 GtkWidget* label = gtk_label_new( | 172 GtkWidget* label = gtk_label_new( |
174 l10n_util::GetStringUTF8(IDS_COLLECTED_COOKIES_ALLOWED_COOKIES_LABEL). | 173 l10n_util::GetStringUTF8(IDS_COLLECTED_COOKIES_ALLOWED_COOKIES_LABEL). |
175 c_str()); | 174 c_str()); |
176 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | 175 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
177 gtk_box_pack_start(GTK_BOX(cookie_list_vbox), label, FALSE, FALSE, | 176 gtk_box_pack_start(GTK_BOX(cookie_list_vbox), label, FALSE, FALSE, |
178 ui::kControlSpacing); | 177 ui::kControlSpacing); |
179 | 178 |
180 GtkWidget* scroll_window = gtk_scrolled_window_new(NULL, NULL); | 179 GtkWidget* scroll_window = gtk_scrolled_window_new(NULL, NULL); |
181 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_window), | 180 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_window), |
182 GTK_POLICY_AUTOMATIC, | 181 GTK_POLICY_AUTOMATIC, |
183 GTK_POLICY_AUTOMATIC); | 182 GTK_POLICY_AUTOMATIC); |
184 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll_window), | 183 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll_window), |
185 GTK_SHADOW_ETCHED_IN); | 184 GTK_SHADOW_ETCHED_IN); |
186 gtk_box_pack_start(GTK_BOX(cookie_list_vbox), scroll_window, TRUE, TRUE, 0); | 185 gtk_box_pack_start(GTK_BOX(cookie_list_vbox), scroll_window, TRUE, TRUE, 0); |
187 | 186 |
188 TabSpecificContentSettings* content_settings = | 187 TabSpecificContentSettings* content_settings = wrapper_->content_settings(); |
189 TabContentsWrapper::GetCurrentWrapperForContents(tab_contents_)-> | |
190 content_settings(); | |
191 | 188 |
192 allowed_cookies_tree_model_.reset( | 189 allowed_cookies_tree_model_.reset( |
193 content_settings->GetAllowedCookiesTreeModel()); | 190 content_settings->GetAllowedCookiesTreeModel()); |
194 allowed_cookies_tree_adapter_.reset( | 191 allowed_cookies_tree_adapter_.reset( |
195 new gtk_tree::TreeAdapter(this, allowed_cookies_tree_model_.get())); | 192 new gtk_tree::TreeAdapter(this, allowed_cookies_tree_model_.get())); |
196 allowed_tree_ = gtk_tree_view_new_with_model( | 193 allowed_tree_ = gtk_tree_view_new_with_model( |
197 GTK_TREE_MODEL(allowed_cookies_tree_adapter_->tree_store())); | 194 GTK_TREE_MODEL(allowed_cookies_tree_adapter_->tree_store())); |
198 gtk_widget_set_size_request(allowed_tree_, kTreeViewWidth, kTreeViewHeight); | 195 gtk_widget_set_size_request(allowed_tree_, kTreeViewWidth, kTreeViewHeight); |
199 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(allowed_tree_), FALSE); | 196 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(allowed_tree_), FALSE); |
200 gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(allowed_tree_), TRUE); | 197 gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(allowed_tree_), TRUE); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 | 231 |
235 // Wrap the vbox inside an hbox so that we can specify padding along the | 232 // Wrap the vbox inside an hbox so that we can specify padding along the |
236 // horizontal axis. | 233 // horizontal axis. |
237 GtkWidget* box = gtk_hbox_new(FALSE, 0); | 234 GtkWidget* box = gtk_hbox_new(FALSE, 0); |
238 gtk_box_pack_start(GTK_BOX(box), cookie_list_vbox, TRUE, TRUE, | 235 gtk_box_pack_start(GTK_BOX(box), cookie_list_vbox, TRUE, TRUE, |
239 ui::kControlSpacing); | 236 ui::kControlSpacing); |
240 return box; | 237 return box; |
241 } | 238 } |
242 | 239 |
243 GtkWidget* CollectedCookiesGtk::CreateBlockedPane() { | 240 GtkWidget* CollectedCookiesGtk::CreateBlockedPane() { |
244 TabContentsWrapper* wrapper = | |
245 TabContentsWrapper::GetCurrentWrapperForContents(tab_contents_); | |
246 HostContentSettingsMap* host_content_settings_map = | 241 HostContentSettingsMap* host_content_settings_map = |
247 wrapper->profile()->GetHostContentSettingsMap(); | 242 wrapper_->profile()->GetHostContentSettingsMap(); |
248 | 243 |
249 GtkWidget* cookie_list_vbox = gtk_vbox_new(FALSE, ui::kControlSpacing); | 244 GtkWidget* cookie_list_vbox = gtk_vbox_new(FALSE, ui::kControlSpacing); |
250 | 245 |
251 GtkWidget* label = gtk_label_new( | 246 GtkWidget* label = gtk_label_new( |
252 l10n_util::GetStringUTF8( | 247 l10n_util::GetStringUTF8( |
253 host_content_settings_map->BlockThirdPartyCookies() ? | 248 host_content_settings_map->BlockThirdPartyCookies() ? |
254 IDS_COLLECTED_COOKIES_BLOCKED_THIRD_PARTY_BLOCKING_ENABLED : | 249 IDS_COLLECTED_COOKIES_BLOCKED_THIRD_PARTY_BLOCKING_ENABLED : |
255 IDS_COLLECTED_COOKIES_BLOCKED_COOKIES_LABEL).c_str()); | 250 IDS_COLLECTED_COOKIES_BLOCKED_COOKIES_LABEL).c_str()); |
256 gtk_widget_set_size_request(label, kTreeViewWidth, -1); | 251 gtk_widget_set_size_request(label, kTreeViewWidth, -1); |
257 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | 252 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
258 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | 253 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
259 gtk_box_pack_start(GTK_BOX(cookie_list_vbox), label, TRUE, TRUE, | 254 gtk_box_pack_start(GTK_BOX(cookie_list_vbox), label, TRUE, TRUE, |
260 ui::kControlSpacing); | 255 ui::kControlSpacing); |
261 | 256 |
262 GtkWidget* scroll_window = gtk_scrolled_window_new(NULL, NULL); | 257 GtkWidget* scroll_window = gtk_scrolled_window_new(NULL, NULL); |
263 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_window), | 258 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_window), |
264 GTK_POLICY_AUTOMATIC, | 259 GTK_POLICY_AUTOMATIC, |
265 GTK_POLICY_AUTOMATIC); | 260 GTK_POLICY_AUTOMATIC); |
266 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll_window), | 261 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll_window), |
267 GTK_SHADOW_ETCHED_IN); | 262 GTK_SHADOW_ETCHED_IN); |
268 gtk_box_pack_start(GTK_BOX(cookie_list_vbox), scroll_window, TRUE, TRUE, 0); | 263 gtk_box_pack_start(GTK_BOX(cookie_list_vbox), scroll_window, TRUE, TRUE, 0); |
269 | 264 |
270 TabSpecificContentSettings* content_settings = wrapper->content_settings(); | 265 TabSpecificContentSettings* content_settings = wrapper_->content_settings(); |
271 | 266 |
272 blocked_cookies_tree_model_.reset( | 267 blocked_cookies_tree_model_.reset( |
273 content_settings->GetBlockedCookiesTreeModel()); | 268 content_settings->GetBlockedCookiesTreeModel()); |
274 blocked_cookies_tree_adapter_.reset( | 269 blocked_cookies_tree_adapter_.reset( |
275 new gtk_tree::TreeAdapter(this, blocked_cookies_tree_model_.get())); | 270 new gtk_tree::TreeAdapter(this, blocked_cookies_tree_model_.get())); |
276 blocked_tree_ = gtk_tree_view_new_with_model( | 271 blocked_tree_ = gtk_tree_view_new_with_model( |
277 GTK_TREE_MODEL(blocked_cookies_tree_adapter_->tree_store())); | 272 GTK_TREE_MODEL(blocked_cookies_tree_adapter_->tree_store())); |
278 gtk_widget_set_size_request(blocked_tree_, kTreeViewWidth, kTreeViewHeight); | 273 gtk_widget_set_size_request(blocked_tree_, kTreeViewWidth, kTreeViewHeight); |
279 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(blocked_tree_), FALSE); | 274 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(blocked_tree_), FALSE); |
280 gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(blocked_tree_), TRUE); | 275 gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(blocked_tree_), TRUE); |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 | 421 |
427 void CollectedCookiesGtk::Observe(int type, | 422 void CollectedCookiesGtk::Observe(int type, |
428 const NotificationSource& source, | 423 const NotificationSource& source, |
429 const NotificationDetails& details) { | 424 const NotificationDetails& details) { |
430 DCHECK(type == chrome::NOTIFICATION_COLLECTED_COOKIES_SHOWN); | 425 DCHECK(type == chrome::NOTIFICATION_COLLECTED_COOKIES_SHOWN); |
431 window_->CloseConstrainedWindow(); | 426 window_->CloseConstrainedWindow(); |
432 } | 427 } |
433 | 428 |
434 void CollectedCookiesGtk::OnClose(GtkWidget* close_button) { | 429 void CollectedCookiesGtk::OnClose(GtkWidget* close_button) { |
435 if (status_changed_) { | 430 if (status_changed_) { |
436 TabContentsWrapper::GetCurrentWrapperForContents(tab_contents_)-> | 431 wrapper_->infobar_tab_helper()->AddInfoBar( |
437 infobar_tab_helper()->AddInfoBar( | 432 new CollectedCookiesInfoBarDelegate(wrapper_->tab_contents())); |
438 new CollectedCookiesInfoBarDelegate(tab_contents_)); | |
439 } | 433 } |
440 window_->CloseConstrainedWindow(); | 434 window_->CloseConstrainedWindow(); |
441 } | 435 } |
442 | 436 |
443 void CollectedCookiesGtk::AddExceptions(GtkTreeSelection* selection, | 437 void CollectedCookiesGtk::AddExceptions(GtkTreeSelection* selection, |
444 gtk_tree::TreeAdapter* adapter, | 438 gtk_tree::TreeAdapter* adapter, |
445 ContentSetting setting) { | 439 ContentSetting setting) { |
446 GtkTreeModel* model; | 440 GtkTreeModel* model; |
447 GList* paths = | 441 GList* paths = |
448 gtk_tree_selection_get_selected_rows(selection, &model); | 442 gtk_tree_selection_get_selected_rows(selection, &model); |
449 string16 last_domain_name; | 443 string16 last_domain_name; |
450 bool multiple_domains_added = false; | 444 bool multiple_domains_added = false; |
451 for (GList* item = paths; item; item = item->next) { | 445 for (GList* item = paths; item; item = item->next) { |
452 GtkTreeIter iter; | 446 GtkTreeIter iter; |
453 gtk_tree_model_get_iter( | 447 gtk_tree_model_get_iter( |
454 model, &iter, reinterpret_cast<GtkTreePath*>(item->data)); | 448 model, &iter, reinterpret_cast<GtkTreePath*>(item->data)); |
455 CookieTreeNode* node = | 449 CookieTreeNode* node = |
456 static_cast<CookieTreeNode*>(adapter->GetNode(&iter)); | 450 static_cast<CookieTreeNode*>(adapter->GetNode(&iter)); |
457 if (node->GetDetailedInfo().node_type != | 451 if (node->GetDetailedInfo().node_type != |
458 CookieTreeNode::DetailedInfo::TYPE_ORIGIN) | 452 CookieTreeNode::DetailedInfo::TYPE_ORIGIN) |
459 continue; | 453 continue; |
460 CookieTreeOriginNode* origin_node = static_cast<CookieTreeOriginNode*>( | 454 CookieTreeOriginNode* origin_node = static_cast<CookieTreeOriginNode*>( |
461 node); | 455 node); |
462 if (origin_node->CanCreateContentException()) { | 456 if (origin_node->CanCreateContentException()) { |
463 if (!last_domain_name.empty()) | 457 if (!last_domain_name.empty()) |
464 multiple_domains_added = true; | 458 multiple_domains_added = true; |
465 last_domain_name = origin_node->GetTitle(); | 459 last_domain_name = origin_node->GetTitle(); |
466 Profile* profile = | 460 Profile* profile = wrapper_->profile(); |
467 Profile::FromBrowserContext(tab_contents_->browser_context()); | |
468 origin_node->CreateContentException( | 461 origin_node->CreateContentException( |
469 profile->GetHostContentSettingsMap(), setting); | 462 profile->GetHostContentSettingsMap(), setting); |
470 } | 463 } |
471 } | 464 } |
472 g_list_foreach(paths, reinterpret_cast<GFunc>(gtk_tree_path_free), NULL); | 465 g_list_foreach(paths, reinterpret_cast<GFunc>(gtk_tree_path_free), NULL); |
473 g_list_free(paths); | 466 g_list_free(paths); |
474 if (last_domain_name.empty()) { | 467 if (last_domain_name.empty()) { |
475 gtk_widget_hide(infobar_); | 468 gtk_widget_hide(infobar_); |
476 } else { | 469 } else { |
477 gtk_label_set_text( | 470 gtk_label_set_text( |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
512 tree_view, reinterpret_cast<gpointer>(OnTreeViewRowExpandedThunk), this); | 505 tree_view, reinterpret_cast<gpointer>(OnTreeViewRowExpandedThunk), this); |
513 gtk_tree_view_expand_row(GTK_TREE_VIEW(tree_view), path, TRUE); | 506 gtk_tree_view_expand_row(GTK_TREE_VIEW(tree_view), path, TRUE); |
514 g_signal_handlers_unblock_by_func( | 507 g_signal_handlers_unblock_by_func( |
515 tree_view, reinterpret_cast<gpointer>(OnTreeViewRowExpandedThunk), this); | 508 tree_view, reinterpret_cast<gpointer>(OnTreeViewRowExpandedThunk), this); |
516 } | 509 } |
517 | 510 |
518 void CollectedCookiesGtk::OnTreeViewSelectionChange(GtkWidget* selection) { | 511 void CollectedCookiesGtk::OnTreeViewSelectionChange(GtkWidget* selection) { |
519 EnableControls(); | 512 EnableControls(); |
520 ShowCookieInfo(gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook_))); | 513 ShowCookieInfo(gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook_))); |
521 } | 514 } |
OLD | NEW |