1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_UI_VIEWS_COOKIE_INFO_VIEW_H_
6#define CHROME_BROWSER_UI_VIEWS_COOKIE_INFO_VIEW_H_
7
8#include <string>
9#include <vector>
10
11#include "base/basictypes.h"
12#include "base/compiler_specific.h"
13#include "base/strings/string16.h"
14#include "ui/views/view.h"
15
16namespace views {
17class GridLayout;
18class Label;
19class Textfield;
20}
21
22namespace net {
23class CanonicalCookie;
24}
25
26///////////////////////////////////////////////////////////////////////////////
27// CookieInfoView
28//
29//  Responsible for displaying a tabular grid of Cookie information.
30class CookieInfoView : public views::View {
31 public:
32  CookieInfoView();
33  virtual ~CookieInfoView();
34
35  // Update the display from the specified CookieNode.
36  void SetCookie(const std::string& domain,
37                 const net::CanonicalCookie& cookie_node);
38
39  // Update the display from the specified cookie string.
40  void SetCookieString(const GURL& url, const std::string& cookie_line);
41
42  // Clears the cookie display to indicate that no or multiple cookies are
43  // selected.
44  void ClearCookieDisplay();
45
46  // Enables or disables the cookie property text fields.
47  void EnableCookieDisplay(bool enabled);
48
49 protected:
50  // views::View:
51  virtual void ViewHierarchyChanged(
52      const ViewHierarchyChangedDetails& details) OVERRIDE;
53
54 private:
55  // Layout helper routines.
56  void AddLabelRow(int layout_id,
57                   views::GridLayout* layout,
58                   views::Label* label,
59                   views::Textfield* textfield);
60
61  // Sets up the view layout.
62  void Init();
63
64  // Individual property labels
65  views::Label* name_label_;
66  views::Textfield* name_value_field_;
67  views::Label* content_label_;
68  views::Textfield* content_value_field_;
69  views::Label* domain_label_;
70  views::Textfield* domain_value_field_;
71  views::Label* path_label_;
72  views::Textfield* path_value_field_;
73  views::Label* send_for_label_;
74  views::Textfield* send_for_value_field_;
75  views::Label* created_label_;
76  views::Textfield* created_value_field_;
77  views::Label* expires_label_;
78  views::Textfield* expires_value_field_;
79
80  DISALLOW_COPY_AND_ASSIGN(CookieInfoView);
81};
82
83#endif  // CHROME_BROWSER_UI_VIEWS_COOKIE_INFO_VIEW_H_
84