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