diff options
Diffstat (limited to 'chrome/browser/ui/views/cookie_info_view.h')
-rw-r--r-- | chrome/browser/ui/views/cookie_info_view.h | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/chrome/browser/ui/views/cookie_info_view.h b/chrome/browser/ui/views/cookie_info_view.h new file mode 100644 index 0000000..071201c --- /dev/null +++ b/chrome/browser/ui/views/cookie_info_view.h @@ -0,0 +1,123 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_VIEWS_COOKIE_INFO_VIEW_H_ +#define CHROME_BROWSER_UI_VIEWS_COOKIE_INFO_VIEW_H_ +#pragma once + +#include <string> +#include <vector> + +#include "app/combobox_model.h" +#include "base/string16.h" +#include "net/base/cookie_monster.h" +#include "views/controls/combobox/combobox.h" +#include "views/view.h" + +namespace views { +class GridLayout; +class Label; +class NativeButton; +class Textfield; +} + + +/////////////////////////////////////////////////////////////////////////////// +// CookieInfoViewDelegate +// +class CookieInfoViewDelegate { + public: + virtual void ModifyExpireDate(bool session_expire) = 0; + + protected: + virtual ~CookieInfoViewDelegate() {} +}; + +/////////////////////////////////////////////////////////////////////////////// +// CookieInfoView +// +// Responsible for displaying a tabular grid of Cookie information. +class CookieInfoView : public views::View, + public views::Combobox::Listener, + public ComboboxModel { + public: + explicit CookieInfoView(bool editable_expiration_date); + virtual ~CookieInfoView(); + + // Update the display from the specified CookieNode. + void SetCookie(const std::string& domain, + const net::CookieMonster::CanonicalCookie& cookie_node); + + // Update the display from the specified cookie string. + void SetCookieString(const GURL& url, const std::string& cookie_line); + + // Clears the cookie display to indicate that no or multiple cookies are + // selected. + void ClearCookieDisplay(); + + // Enables or disables the cookie property text fields. + void EnableCookieDisplay(bool enabled); + + void set_delegate(CookieInfoViewDelegate* delegate) { delegate_ = delegate; } + + protected: + // views::View overrides: + virtual void ViewHierarchyChanged(bool is_add, + views::View* parent, + views::View* child); + + // views::Combobox::Listener override. + virtual void ItemChanged(views::Combobox* combo_box, + int prev_index, + int new_index); + + // ComboboxModel overrides for expires_value_combobox_. + virtual int GetItemCount(); + virtual string16 GetItemAt(int index); + + private: + // Layout helper routines. + void AddLabelRow(int layout_id, views::GridLayout* layout, + views::View* label, views::View* value); + void AddControlRow(int layout_id, views::GridLayout* layout, + views::View* label, views::View* control); + + // Sets up the view layout. + void Init(); + + // Individual property labels + views::Label* name_label_; + views::Textfield* name_value_field_; + views::Label* content_label_; + views::Textfield* content_value_field_; + views::Label* domain_label_; + views::Textfield* domain_value_field_; + views::Label* path_label_; + views::Textfield* path_value_field_; + views::Label* send_for_label_; + views::Textfield* send_for_value_field_; + views::Label* created_label_; + views::Textfield* created_value_field_; + views::Label* expires_label_; + views::Textfield* expires_value_field_; + views::Combobox* expires_value_combobox_; + views::View* expire_view_; + + // Option values for expires_value_combobox_. + std::vector<std::wstring> expire_combo_values_; + + // True if expiration date can be edited. In this case we will show + // expires_value_combobox_ instead of expires_value_field_. The cookie's + // expiration date is editable only this class is used in + // CookiesPromptView (alert before cookie is set), in all other cases we + // don't let user directly change cookie setting. + bool editable_expiration_date_; + + CookieInfoViewDelegate* delegate_; + + DISALLOW_COPY_AND_ASSIGN(CookieInfoView); +}; + +#endif // CHROME_BROWSER_UI_VIEWS_COOKIE_INFO_VIEW_H_ + |