| 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 |