14a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file. 44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 54a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#ifndef CHROME_BROWSER_UI_VIEWS_COOKIE_INFO_VIEW_H_ 64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#define CHROME_BROWSER_UI_VIEWS_COOKIE_INFO_VIEW_H_ 74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once 84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include <string> 104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include <vector> 114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "base/string16.h" 134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "net/base/cookie_monster.h" 1472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/models/combobox_model.h" 154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/controls/combobox/combobox.h" 164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/view.h" 174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochnamespace views { 194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass GridLayout; 204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass Label; 214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass NativeButton; 224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass Textfield; 234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/////////////////////////////////////////////////////////////////////////////// 274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// CookieInfoViewDelegate 284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// 294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass CookieInfoViewDelegate { 304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public: 314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void ModifyExpireDate(bool session_expire) = 0; 324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch protected: 344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual ~CookieInfoViewDelegate() {} 354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/////////////////////////////////////////////////////////////////////////////// 384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// CookieInfoView 394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// 404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Responsible for displaying a tabular grid of Cookie information. 414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass CookieInfoView : public views::View, 424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public views::Combobox::Listener, 4372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen public ui::ComboboxModel { 444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public: 454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch explicit CookieInfoView(bool editable_expiration_date); 464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual ~CookieInfoView(); 474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Update the display from the specified CookieNode. 494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void SetCookie(const std::string& domain, 504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const net::CookieMonster::CanonicalCookie& cookie_node); 514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Update the display from the specified cookie string. 534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void SetCookieString(const GURL& url, const std::string& cookie_line); 544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Clears the cookie display to indicate that no or multiple cookies are 564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // selected. 574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void ClearCookieDisplay(); 584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Enables or disables the cookie property text fields. 604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void EnableCookieDisplay(bool enabled); 614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void set_delegate(CookieInfoViewDelegate* delegate) { delegate_ = delegate; } 634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch protected: 654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // views::View overrides: 664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void ViewHierarchyChanged(bool is_add, 674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::View* parent, 684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::View* child); 694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // views::Combobox::Listener override. 714a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void ItemChanged(views::Combobox* combo_box, 724a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch int prev_index, 734a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch int new_index); 744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 7572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // ui::ComboboxModel overrides for expires_value_combobox_. 764a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual int GetItemCount(); 774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual string16 GetItemAt(int index); 784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private: 804a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Layout helper routines. 814a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void AddLabelRow(int layout_id, views::GridLayout* layout, 824a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::View* label, views::View* value); 834a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void AddControlRow(int layout_id, views::GridLayout* layout, 844a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::View* label, views::View* control); 854a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 864a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Sets up the view layout. 874a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void Init(); 884a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 894a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Individual property labels 904a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Label* name_label_; 914a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Textfield* name_value_field_; 924a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Label* content_label_; 934a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Textfield* content_value_field_; 944a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Label* domain_label_; 954a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Textfield* domain_value_field_; 964a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Label* path_label_; 974a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Textfield* path_value_field_; 984a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Label* send_for_label_; 994a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Textfield* send_for_value_field_; 1004a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Label* created_label_; 1014a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Textfield* created_value_field_; 1024a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Label* expires_label_; 1034a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Textfield* expires_value_field_; 1044a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Combobox* expires_value_combobox_; 1054a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::View* expire_view_; 1064a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1074a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Option values for expires_value_combobox_. 1084a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch std::vector<std::wstring> expire_combo_values_; 1094a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // True if expiration date can be edited. In this case we will show 1114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // expires_value_combobox_ instead of expires_value_field_. The cookie's 1124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // expiration date is editable only this class is used in 1134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // CookiesPromptView (alert before cookie is set), in all other cases we 1144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // don't let user directly change cookie setting. 1154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch bool editable_expiration_date_; 1164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch CookieInfoViewDelegate* delegate_; 1184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch DISALLOW_COPY_AND_ASSIGN(CookieInfoView); 1204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 1214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif // CHROME_BROWSER_UI_VIEWS_COOKIE_INFO_VIEW_H_ 1234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 124