From be896a761f3f022200a8e53003da99e132d9d848 Mon Sep 17 00:00:00 2001 From: "deanm@chromium.org" Date: Thu, 2 Oct 2008 12:49:59 +0000 Subject: - Add a note about a subtle requirement of the current code (bug 2994). - Don't statically construct the cookie icon, removing a static constructor. - Properly enable and disable the cookie text fields. Patch from Arthur Lussos. Review URL: http://codereview.chromium.org/6077 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2790 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/views/options/cookies_view.cc | 48 ++++++++++++---------------- 1 file changed, 20 insertions(+), 28 deletions(-) (limited to 'chrome/browser/views/options/cookies_view.cc') diff --git a/chrome/browser/views/options/cookies_view.cc b/chrome/browser/views/options/cookies_view.cc index 3c272b9..3ef2c47 100644 --- a/chrome/browser/views/options/cookies_view.cc +++ b/chrome/browser/views/options/cookies_view.cc @@ -73,22 +73,14 @@ class CookiesTableModel : public ChromeViews::TableModel { ChromeViews::TableModelObserver* observer_; - // Static resources for this object. - static SkBitmap cookie_icon_; - static void InitClass(); - DISALLOW_EVIL_CONSTRUCTORS(CookiesTableModel); }; -// static -SkBitmap CookiesTableModel::cookie_icon_; - /////////////////////////////////////////////////////////////////////////////// // CookiesTableModel, public: CookiesTableModel::CookiesTableModel(Profile* profile) : profile_(profile) { - InitClass(); LoadCookies(); } @@ -171,7 +163,9 @@ std::wstring CookiesTableModel::GetText(int row, int column_id) { } SkBitmap CookiesTableModel::GetIcon(int row) { - return cookie_icon_; + static SkBitmap* icon = ResourceBundle::GetSharedInstance().GetBitmapNamed( + IDR_COOKIE_ICON); + return *icon; } void CookiesTableModel::SetObserver(ChromeViews::TableModelObserver* observer) { @@ -242,17 +236,6 @@ void CookiesTableModel::UpdateSearchResults(const std::wstring& filter) { observer_->OnModelChanged(); } -// static -void CookiesTableModel::InitClass() { - static bool initialized = false; - if (!initialized) { - ResourceBundle& rb = ResourceBundle::GetSharedInstance(); - cookie_icon_ = *rb.GetBitmapNamed(IDR_COOKIE_ICON); - initialized = true; - } -} - - /////////////////////////////////////////////////////////////////////////////// // CookiesTableView // Overridden to handle Delete key presses @@ -295,7 +278,8 @@ void CookiesTableView::RemoveSelectedCookies() { return; } - // Remove the selected cookies. + // Remove the selected cookies. This iterates over the rows backwards, which + // is required when calling RemoveCookies, see bug 2994. int first_selected_row = -1; for (ChromeViews::TableView::iterator i = SelectionBegin(); i != SelectionEnd(); ++i) { @@ -331,6 +315,9 @@ class CookieInfoView : public ChromeViews::View { // selected. void ClearCookieDisplay(); + // Enables or disables the cookie proerty text fields. + void EnableCookieDisplay(bool enabled); + protected: // ChromeViews::View overrides: virtual void ViewHierarchyChanged(bool is_add, @@ -410,25 +397,30 @@ void CookieInfoView::SetCookie( sendfor_text = l10n_util::GetString(IDS_COOKIES_COOKIE_SENDFOR_ANY); } send_for_value_field_->SetText(sendfor_text); + EnableCookieDisplay(true); +} + +void CookieInfoView::EnableCookieDisplay(bool enabled) { + name_value_field_->SetEnabled(enabled); + content_value_field_->SetEnabled(enabled); + domain_value_field_->SetEnabled(enabled); + path_value_field_->SetEnabled(enabled); + send_for_value_field_->SetEnabled(enabled); + created_value_field_->SetEnabled(enabled); + expires_value_field_->SetEnabled(enabled); } void CookieInfoView::ClearCookieDisplay() { std::wstring no_cookie_string = l10n_util::GetString(IDS_COOKIES_COOKIE_NONESELECTED); name_value_field_->SetText(no_cookie_string); - name_value_field_->SetEnabled(false); content_value_field_->SetText(no_cookie_string); - content_value_field_->SetEnabled(false); domain_value_field_->SetText(no_cookie_string); - domain_value_field_->SetEnabled(false); path_value_field_->SetText(no_cookie_string); - path_value_field_->SetEnabled(false); send_for_value_field_->SetText(no_cookie_string); - send_for_value_field_->SetEnabled(false); created_value_field_->SetText(no_cookie_string); - created_value_field_->SetEnabled(false); expires_value_field_->SetText(no_cookie_string); - expires_value_field_->SetEnabled(false); + EnableCookieDisplay(false); } /////////////////////////////////////////////////////////////////////////////// -- cgit v1.1