cookie_info_view.h revision a93a17c8d99d686bd4a1511e5504e5e6cc9fcadf
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_VIEWS_COOKIE_INFO_VIEW_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_VIEWS_COOKIE_INFO_VIEW_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/string16.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/models/combobox_model.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/combobox/combobox_listener.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/view.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GridLayout;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Label;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Textfield;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CanonicalCookie;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)///////////////////////////////////////////////////////////////////////////////
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// CookieInfoViewDelegate
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CookieInfoViewDelegate {
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ModifyExpireDate(bool session_expire) = 0;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~CookieInfoViewDelegate() {}
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)///////////////////////////////////////////////////////////////////////////////
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// CookieInfoView
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  Responsible for displaying a tabular grid of Cookie information.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CookieInfoView : public views::View,
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       public views::ComboboxListener,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       public ui::ComboboxModel {
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit CookieInfoView(bool editable_expiration_date);
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~CookieInfoView();
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Update the display from the specified CookieNode.
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetCookie(const std::string& domain,
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 const net::CanonicalCookie& cookie_node);
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Update the display from the specified cookie string.
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetCookieString(const GURL& url, const std::string& cookie_line);
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clears the cookie display to indicate that no or multiple cookies are
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // selected.
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ClearCookieDisplay();
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Enables or disables the cookie property text fields.
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void EnableCookieDisplay(bool enabled);
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_delegate(CookieInfoViewDelegate* delegate) { delegate_ = delegate; }
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // views::View:
68a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  virtual void ViewHierarchyChanged(
69a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)      const ViewHierarchyChangedDetails& details) OVERRIDE;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // views::ComboboxListener:
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnSelectedIndexChanged(views::Combobox* combobox) OVERRIDE;
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ui::ComboboxModel:
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int GetItemCount() const OVERRIDE;
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual string16 GetItemAt(int index) OVERRIDE;
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Layout helper routines.
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void AddLabelRow(int layout_id, views::GridLayout* layout,
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   views::View* label, views::View* value);
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void AddControlRow(int layout_id, views::GridLayout* layout,
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     views::View* label, views::View* control);
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sets up the view layout.
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void Init();
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Individual property labels
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Label* name_label_;
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Textfield* name_value_field_;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Label* content_label_;
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Textfield* content_value_field_;
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Label* domain_label_;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Textfield* domain_value_field_;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Label* path_label_;
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Textfield* path_value_field_;
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Label* send_for_label_;
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Textfield* send_for_value_field_;
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Label* created_label_;
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Textfield* created_value_field_;
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Label* expires_label_;
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Textfield* expires_value_field_;
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Combobox* expires_value_combobox_;
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::View* expire_view_;
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Option values for expires_value_combobox_.
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::vector<string16> expire_combo_values_;
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // True if expiration date can be edited. In this case we will show
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // expires_value_combobox_ instead of expires_value_field_. The cookie's
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // expiration date is editable only this class is used in
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // CookiesPromptView (alert before cookie is set), in all other cases we
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // don't let user directly change cookie setting.
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool editable_expiration_date_;
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CookieInfoViewDelegate* delegate_;
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(CookieInfoView);
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_UI_VIEWS_COOKIE_INFO_VIEW_H_
122