172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/views/cookie_info_view.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <algorithm> 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/i18n/time_formatting.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/message_loop.h" 113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/string16.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/string_util.h" 133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/utf_string_conversions.h" 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/cookies_tree_model.h" 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/generated_resources.h" 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/locale_settings.h" 1772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/l10n/l10n_util.h" 1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/canvas.h" 1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/color_utils.h" 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/border.h" 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/label.h" 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/button/native_button.h" 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/tree/tree_view.h" 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/textfield/textfield.h" 2572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "views/layout/grid_layout.h" 2672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "views/layout/layout_constants.h" 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstatic const int kCookieInfoViewBorderSize = 1; 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstatic const int kCookieInfoViewInsetSize = 3; 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch/////////////////////////////////////////////////////////////////////////////// 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// CookieInfoView, public: 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochCookieInfoView::CookieInfoView(bool editable_expiration_date) 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch : name_label_(NULL), 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch name_value_field_(NULL), 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_label_(NULL), 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_value_field_(NULL), 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch domain_label_(NULL), 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch domain_value_field_(NULL), 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch path_label_(NULL), 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch path_value_field_(NULL), 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch send_for_label_(NULL), 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch send_for_value_field_(NULL), 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch created_label_(NULL), 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch created_value_field_(NULL), 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_label_(NULL), 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_field_(NULL), 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_combobox_(NULL), 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expire_view_(NULL), 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch editable_expiration_date_(editable_expiration_date), 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch delegate_(NULL) { 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochCookieInfoView::~CookieInfoView() { 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CookieInfoView::SetCookie( 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string& domain, 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const net::CookieMonster::CanonicalCookie& cookie) { 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch name_value_field_->SetText(UTF8ToWide(cookie.Name())); 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_value_field_->SetText(UTF8ToWide(cookie.Value())); 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch domain_value_field_->SetText(UTF8ToWide(domain)); 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch path_value_field_->SetText(UTF8ToWide(cookie.Path())); 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch created_value_field_->SetText( 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch base::TimeFormatFriendlyDateAndTime(cookie.CreationDate())); 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::wstring expire_text = cookie.DoesExpire() ? 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch base::TimeFormatFriendlyDateAndTime(cookie.ExpiryDate()) : 703f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide( 713f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen l10n_util::GetStringUTF16(IDS_COOKIES_COOKIE_EXPIRES_SESSION)); 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (editable_expiration_date_) { 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expire_combo_values_.clear(); 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (cookie.DoesExpire()) 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expire_combo_values_.push_back(expire_text); 773f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen expire_combo_values_.push_back(UTF16ToWide( 783f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen l10n_util::GetStringUTF16(IDS_COOKIES_COOKIE_EXPIRES_SESSION))); 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_combobox_->ModelChanged(); 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_combobox_->SetSelectedItem(0); 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_combobox_->SetEnabled(true); 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_combobox_->set_listener(this); 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } else { 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_field_->SetText(expire_text); 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch send_for_value_field_->SetText(cookie.IsSecure() ? 883f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide( 893f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen l10n_util::GetStringUTF16(IDS_COOKIES_COOKIE_SENDFOR_SECURE)) : 903f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide( 913f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen l10n_util::GetStringUTF16(IDS_COOKIES_COOKIE_SENDFOR_ANY))); 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EnableCookieDisplay(true); 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Layout(); 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CookieInfoView::SetCookieString(const GURL& url, 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string& cookie_line) { 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch net::CookieMonster::ParsedCookie pc(cookie_line); 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch net::CookieMonster::CanonicalCookie cookie(url, pc); 100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetCookie(pc.HasDomain() ? pc.Domain() : url.host(), cookie); 101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CookieInfoView::ClearCookieDisplay() { 105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::wstring no_cookie_string = 1063f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIE_NONESELECTED)); 107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch name_value_field_->SetText(no_cookie_string); 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_value_field_->SetText(no_cookie_string); 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch domain_value_field_->SetText(no_cookie_string); 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch path_value_field_->SetText(no_cookie_string); 111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch send_for_value_field_->SetText(no_cookie_string); 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch created_value_field_->SetText(no_cookie_string); 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (expires_value_field_) 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_field_->SetText(no_cookie_string); 115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EnableCookieDisplay(false); 116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CookieInfoView::EnableCookieDisplay(bool enabled) { 119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch name_value_field_->SetEnabled(enabled); 120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_value_field_->SetEnabled(enabled); 121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch domain_value_field_->SetEnabled(enabled); 122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch path_value_field_->SetEnabled(enabled); 123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch send_for_value_field_->SetEnabled(enabled); 124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch created_value_field_->SetEnabled(enabled); 125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (expires_value_field_) 126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_field_->SetEnabled(enabled); 127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch/////////////////////////////////////////////////////////////////////////////// 130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// CookieInfoView, views::View overrides. 131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CookieInfoView::ViewHierarchyChanged(bool is_add, 133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::View* parent, 134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::View* child) { 135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (is_add && child == this) 136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Init(); 137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch/////////////////////////////////////////////////////////////////////////////// 140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// CookieInfoView, views::Combobox::Listener overrides. 141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CookieInfoView::ItemChanged(views::Combobox* combo_box, 143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int prev_index, 144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int new_index) { 145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DCHECK(combo_box == expires_value_combobox_); 146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (delegate_) 147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch delegate_->ModifyExpireDate(new_index != 0); 148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch/////////////////////////////////////////////////////////////////////////////// 151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// CookieInfoView, ComboboxModel overrides. 152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint CookieInfoView::GetItemCount() { 153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return static_cast<int>(expire_combo_values_.size()); 154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1563345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickstring16 CookieInfoView::GetItemAt(int index) { 1573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick return WideToUTF16Hack(expire_combo_values_[index]); 158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CookieInfoView::AddLabelRow(int layout_id, views::GridLayout* layout, 161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::View* label, views::View* value) { 162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch layout->StartRow(0, layout_id); 163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch layout->AddView(label); 164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch layout->AddView(value, 2, 1, views::GridLayout::FILL, 165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::GridLayout::CENTER); 16672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen layout->AddPaddingRow(0, views::kRelatedControlSmallVerticalSpacing); 167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CookieInfoView::AddControlRow(int layout_id, views::GridLayout* layout, 170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::View* label, views::View* control) { 171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch layout->StartRow(0, layout_id); 172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch layout->AddView(label); 173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch layout->AddView(control, 1, 1); 17472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen layout->AddPaddingRow(0, views::kRelatedControlSmallVerticalSpacing); 175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch/////////////////////////////////////////////////////////////////////////////// 178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// CookieInfoView, private: 179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CookieInfoView::Init() { 181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Ensure we don't run this more than once and leak memory. 182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DCHECK(!name_label_); 183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkColor border_color = color_utils::GetSysSkColor(COLOR_3DSHADOW); 185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::Border* border = views::Border::CreateSolidBorder( 186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch kCookieInfoViewBorderSize, border_color); 187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch set_border(border); 188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch name_label_ = new views::Label( 1903f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIE_NAME_LABEL))); 191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch name_value_field_ = new views::Textfield; 192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_label_ = new views::Label( 1933f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIE_CONTENT_LABEL))); 194c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_value_field_ = new views::Textfield; 195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch domain_label_ = new views::Label( 1963f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIE_DOMAIN_LABEL))); 197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch domain_value_field_ = new views::Textfield; 198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch path_label_ = new views::Label( 1993f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIE_PATH_LABEL))); 200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch path_value_field_ = new views::Textfield; 201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch send_for_label_ = new views::Label( 2023f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIE_SENDFOR_LABEL))); 203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch send_for_value_field_ = new views::Textfield; 204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch created_label_ = new views::Label( 2053f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIE_CREATED_LABEL))); 206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch created_value_field_ = new views::Textfield; 207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_label_ = new views::Label( 2083f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIE_EXPIRES_LABEL))); 209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (editable_expiration_date_) 210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_combobox_ = new views::Combobox(this); 211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch else 212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_field_ = new views::Textfield; 213c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch using views::GridLayout; 215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch using views::ColumnSet; 216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GridLayout* layout = new GridLayout(this); 218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch layout->SetInsets(kCookieInfoViewInsetSize, 219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch kCookieInfoViewInsetSize, 220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch kCookieInfoViewInsetSize, 221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch kCookieInfoViewInsetSize); 222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetLayoutManager(layout); 223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int three_column_layout_id = 0; 225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ColumnSet* column_set = layout->AddColumnSet(three_column_layout_id); 226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch column_set->AddColumn(GridLayout::TRAILING, GridLayout::CENTER, 0, 227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GridLayout::USE_PREF, 0, 0); 22872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen column_set->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing); 229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch column_set->AddColumn(GridLayout::TRAILING, GridLayout::CENTER, 0, 230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GridLayout::USE_PREF, 0, 0); 231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 1, 232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GridLayout::USE_PREF, 0, 0); 233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AddLabelRow(three_column_layout_id, layout, name_label_, name_value_field_); 235c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AddLabelRow(three_column_layout_id, layout, content_label_, 236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_value_field_); 237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AddLabelRow(three_column_layout_id, layout, domain_label_, 238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch domain_value_field_); 239c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AddLabelRow(three_column_layout_id, layout, path_label_, path_value_field_); 240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AddLabelRow(three_column_layout_id, layout, send_for_label_, 241c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch send_for_value_field_); 242c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AddLabelRow(three_column_layout_id, layout, created_label_, 243c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch created_value_field_); 244c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 245c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (editable_expiration_date_) { 246c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AddControlRow(three_column_layout_id, layout, expires_label_, 247c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_combobox_); 248c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } else { 249c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AddLabelRow(three_column_layout_id, layout, expires_label_, 250c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_field_); 251c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 252c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 253c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Color these borderless text areas the same as the containing dialog. 254c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkColor text_area_background = color_utils::GetSysSkColor(COLOR_3DFACE); 255c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Now that the Textfields are in the view hierarchy, we can initialize them. 256c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch name_value_field_->SetReadOnly(true); 257c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch name_value_field_->RemoveBorder(); 258c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch name_value_field_->SetBackgroundColor(text_area_background); 259c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_value_field_->SetReadOnly(true); 260c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_value_field_->RemoveBorder(); 261c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch content_value_field_->SetBackgroundColor(text_area_background); 262c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch domain_value_field_->SetReadOnly(true); 263c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch domain_value_field_->RemoveBorder(); 264c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch domain_value_field_->SetBackgroundColor(text_area_background); 265c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch path_value_field_->SetReadOnly(true); 266c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch path_value_field_->RemoveBorder(); 267c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch path_value_field_->SetBackgroundColor(text_area_background); 268c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch send_for_value_field_->SetReadOnly(true); 269c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch send_for_value_field_->RemoveBorder(); 270c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch send_for_value_field_->SetBackgroundColor(text_area_background); 271c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch created_value_field_->SetReadOnly(true); 272c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch created_value_field_->RemoveBorder(); 273c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch created_value_field_->SetBackgroundColor(text_area_background); 274c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (expires_value_field_) { 275c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_field_->SetReadOnly(true); 276c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_field_->RemoveBorder(); 277c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expires_value_field_->SetBackgroundColor(text_area_background); 278c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 279c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 280