| Index: chrome/browser/views/collected_cookies_win.cc
|
| diff --git a/chrome/browser/views/collected_cookies_win.cc b/chrome/browser/views/collected_cookies_win.cc
|
| index b5e5c3ca1e0917a0b6612b6c531913812a31d1f8..1a7f4055e56d59e5430fef27f81110be09cb7407 100644
|
| --- a/chrome/browser/views/collected_cookies_win.cc
|
| +++ b/chrome/browser/views/collected_cookies_win.cc
|
| @@ -6,12 +6,13 @@
|
|
|
| #include "app/l10n_util.h"
|
| #include "chrome/browser/cookies_tree_model.h"
|
| +#include "chrome/browser/profile.h"
|
| #include "chrome/browser/tab_contents/tab_contents.h"
|
| #include "chrome/common/notification_service.h"
|
| #include "grit/generated_resources.h"
|
| #include "grit/locale_settings.h"
|
| #include "views/controls/label.h"
|
| -#include "views/controls/tree/tree_view.h"
|
| +#include "views/controls/button/native_button.h"
|
| #include "views/standard_layout.h"
|
| #include "views/window/window.h"
|
|
|
| @@ -32,7 +33,14 @@ void ShowCollectedCookiesDialog(gfx::NativeWindow parent_window,
|
|
|
| CollectedCookiesWin::CollectedCookiesWin(gfx::NativeWindow parent_window,
|
| TabContents* tab_contents)
|
| - : tab_contents_(tab_contents) {
|
| + : tab_contents_(tab_contents),
|
| + allowed_label_(NULL),
|
| + blocked_label_(NULL),
|
| + allowed_cookies_tree_(NULL),
|
| + blocked_cookies_tree_(NULL),
|
| + block_allowed_button_(NULL),
|
| + allow_blocked_button_(NULL),
|
| + for_session_blocked_button_(NULL) {
|
| TabSpecificContentSettings* content_settings =
|
| tab_contents->GetTabSpecificContentSettings();
|
| registrar_.Add(this, NotificationType::COLLECTED_COOKIES_SHOWN,
|
| @@ -59,6 +67,7 @@ void CollectedCookiesWin::Init() {
|
| content_settings->GetAllowedCookiesTreeModel());
|
| allowed_cookies_tree_ = new views::TreeView();
|
| allowed_cookies_tree_->SetModel(allowed_cookies_tree_model_.get());
|
| + allowed_cookies_tree_->SetController(this);
|
| allowed_cookies_tree_->SetRootShown(false);
|
| allowed_cookies_tree_->SetEditable(false);
|
| allowed_cookies_tree_->set_lines_at_root(true);
|
| @@ -71,6 +80,7 @@ void CollectedCookiesWin::Init() {
|
| content_settings->GetBlockedCookiesTreeModel());
|
| blocked_cookies_tree_ = new views::TreeView();
|
| blocked_cookies_tree_->SetModel(blocked_cookies_tree_model_.get());
|
| + blocked_cookies_tree_->SetController(this);
|
| blocked_cookies_tree_->SetRootShown(false);
|
| blocked_cookies_tree_->SetEditable(false);
|
| blocked_cookies_tree_->set_lines_at_root(true);
|
| @@ -86,6 +96,14 @@ void CollectedCookiesWin::Init() {
|
| column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1,
|
| GridLayout::USE_PREF, 0, 0);
|
|
|
| + const int three_columns_layout_id = 1;
|
| + column_set = layout->AddColumnSet(three_columns_layout_id);
|
| + column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 0,
|
| + GridLayout::USE_PREF, 0, 0);
|
| + column_set->AddPaddingColumn(0, kRelatedControlHorizontalSpacing);
|
| + column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 0,
|
| + GridLayout::USE_PREF, 0, 0);
|
| +
|
| layout->StartRow(0, single_column_layout_id);
|
| layout->AddView(allowed_label_);
|
|
|
| @@ -93,6 +111,13 @@ void CollectedCookiesWin::Init() {
|
| layout->StartRow(1, single_column_layout_id);
|
| layout->AddView(
|
| allowed_cookies_tree_, 1, 1, GridLayout::FILL, GridLayout::FILL);
|
| + layout->AddPaddingRow(0, kRelatedControlVerticalSpacing);
|
| +
|
| + layout->StartRow(0, single_column_layout_id);
|
| + block_allowed_button_ = new views::NativeButton(
|
| + this, l10n_util::GetString(IDS_COLLECTED_COOKIES_BLOCK_BUTTON));
|
| + layout->AddView(
|
| + block_allowed_button_, 1, 1, GridLayout::LEADING, GridLayout::CENTER);
|
| layout->AddPaddingRow(0, kUnrelatedControlVerticalSpacing);
|
|
|
| layout->StartRow(0, single_column_layout_id);
|
| @@ -102,10 +127,21 @@ void CollectedCookiesWin::Init() {
|
| layout->StartRow(1, single_column_layout_id);
|
| layout->AddView(
|
| blocked_cookies_tree_, 1, 1, GridLayout::FILL, GridLayout::FILL);
|
| + layout->AddPaddingRow(0, kRelatedControlVerticalSpacing);
|
| +
|
| + layout->StartRow(0, three_columns_layout_id);
|
| + allow_blocked_button_ = new views::NativeButton(
|
| + this, l10n_util::GetString(IDS_COLLECTED_COOKIES_ALLOW_BUTTON));
|
| + layout->AddView(allow_blocked_button_);
|
| + for_session_blocked_button_ = new views::NativeButton(
|
| + this, l10n_util::GetString(IDS_COLLECTED_COOKIES_SESSION_ONLY_BUTTON));
|
| + layout->AddView(for_session_blocked_button_);
|
| +
|
| + EnableControls();
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| -// views::DialogDelegate implementation.
|
| +// ConstrainedDialogDelegate implementation.
|
|
|
| std::wstring CollectedCookiesWin::GetWindowTitle() const {
|
| return l10n_util::GetString(IDS_COLLECTED_COOKIES_DIALOG_TITLE);
|
| @@ -128,14 +164,32 @@ bool CollectedCookiesWin::Cancel() {
|
| return true;
|
| }
|
|
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// views::WindowDelegate implementation.
|
| -
|
| views::View* CollectedCookiesWin::GetContentsView() {
|
| return this;
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| +// views::ButtonListener implementation.
|
| +
|
| +void CollectedCookiesWin::ButtonPressed(views::Button* sender,
|
| + const views::Event& event) {
|
| + if (sender == block_allowed_button_)
|
| + AddContentException(allowed_cookies_tree_, CONTENT_SETTING_BLOCK);
|
| + else if (sender == allow_blocked_button_)
|
| + AddContentException(blocked_cookies_tree_, CONTENT_SETTING_ALLOW);
|
| + else if (sender == for_session_blocked_button_)
|
| + AddContentException(blocked_cookies_tree_, CONTENT_SETTING_SESSION_ONLY);
|
| +}
|
| +
|
| +///////////////////////////////////////////////////////////////////////////////
|
| +// views::View implementation.
|
| +
|
| +void CollectedCookiesWin::OnTreeViewSelectionChanged(
|
| + views::TreeView* tree_view) {
|
| + EnableControls();
|
| +}
|
| +
|
| +///////////////////////////////////////////////////////////////////////////////
|
| // views::View implementation.
|
|
|
| gfx::Size CollectedCookiesWin::GetPreferredSize() {
|
| @@ -145,6 +199,44 @@ gfx::Size CollectedCookiesWin::GetPreferredSize() {
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| +// CollectedCookiesWin, private methods.
|
| +
|
| +void CollectedCookiesWin::EnableControls() {
|
| + bool enable_allowed_buttons = false;
|
| + TreeModelNode* node = allowed_cookies_tree_->GetSelectedNode();
|
| + if (node) {
|
| + CookieTreeNode* cookie_node = static_cast<CookieTreeNode*>(node);
|
| + if (cookie_node->GetDetailedInfo().node_type ==
|
| + CookieTreeNode::DetailedInfo::TYPE_ORIGIN) {
|
| + enable_allowed_buttons = static_cast<CookieTreeOriginNode*>(
|
| + cookie_node)->CanCreateContentException();
|
| + }
|
| + }
|
| + block_allowed_button_->SetEnabled(enable_allowed_buttons);
|
| +
|
| + bool enable_blocked_buttons = false;
|
| + node = blocked_cookies_tree_->GetSelectedNode();
|
| + if (node) {
|
| + CookieTreeNode* cookie_node = static_cast<CookieTreeNode*>(node);
|
| + if (cookie_node->GetDetailedInfo().node_type ==
|
| + CookieTreeNode::DetailedInfo::TYPE_ORIGIN) {
|
| + enable_blocked_buttons = static_cast<CookieTreeOriginNode*>(
|
| + cookie_node)->CanCreateContentException();
|
| + }
|
| + }
|
| + allow_blocked_button_->SetEnabled(enable_blocked_buttons);
|
| + for_session_blocked_button_->SetEnabled(enable_blocked_buttons);
|
| +}
|
| +
|
| +void CollectedCookiesWin::AddContentException(views::TreeView* tree_view,
|
| + ContentSetting setting) {
|
| + CookieTreeOriginNode* origin_node =
|
| + static_cast<CookieTreeOriginNode*>(tree_view->GetSelectedNode());
|
| + origin_node->CreateContentException(
|
| + tab_contents_->profile()->GetHostContentSettingsMap(), setting);
|
| +}
|
| +
|
| +///////////////////////////////////////////////////////////////////////////////
|
| // NotificationObserver implementation.
|
|
|
| void CollectedCookiesWin::Observe(NotificationType type,
|
|
|