// 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_VIEWS_COOKIE_PROMPT_VIEW_H_ #define CHROME_BROWSER_VIEWS_COOKIE_PROMPT_VIEW_H_ #include #include "base/task.h" #include "chrome/browser/browsing_data_local_storage_helper.h" #include "chrome/browser/cookie_prompt_modal_dialog_delegate.h" #include "chrome/browser/views/cookie_info_view.h" #include "chrome/browser/views/modal_dialog_delegate.h" #include "googleurl/src/gurl.h" #include "views/controls/button/button.h" #include "views/controls/link.h" #include "views/view.h" #include "views/window/dialog_delegate.h" #include "views/window/window.h" namespace views { class NativeButton; class RadioButton; } class CookieInfoView; class CookiePromptModalDialog; class LocalStorageInfoView; class Profile; class Timer; // Cookie alert dialog UI. class CookiePromptView : public views::View, public ModalDialogDelegate, public views::ButtonListener, public views::LinkController, public CookieInfoViewDelegate { public: // Creates a new CookiePromptView. We take ownership of |parent|. CookiePromptView( CookiePromptModalDialog* parent, gfx::NativeWindow root_window, Profile* profile); virtual ~CookiePromptView(); protected: // views::View overrides. virtual gfx::Size GetPreferredSize(); virtual void ViewHierarchyChanged(bool is_add, views::View* parent, views::View* child); // ModalDialogDelegate overrides. virtual gfx::NativeWindow GetDialogRootWindow(); // views::DialogDelegate overrides. virtual bool CanResize() const { return false; } virtual std::wstring GetWindowTitle() const; virtual void WindowClosing(); virtual views::View* GetContentsView(); virtual bool IsModal() const { return true; } virtual bool Accept(); // views::ButtonListener overrides. virtual void ButtonPressed(views::Button* sender, const views::Event& event); // views::LinkController overrides. virtual void LinkActivated(views::Link* source, int event_flags); // views::WindowDelegate overrides. virtual int GetDialogButtons() const { return MessageBoxFlags::DIALOGBUTTON_NONE; } // CookieInfoViewDelegate overrides: virtual void ModifyExpireDate(bool session_expire); private: // Initialize the dialog layout. void Init(); // Shows or hides cooke info view and changes parent. void ToggleDetailsViewExpand(); // Calculates view size offset depending on visibility of cookie details. int GetExtendedViewHeight(); // Initializes text resources needed to display this view. void InitializeViewResources(); views::RadioButton* remember_radio_; views::RadioButton* ask_radio_; views::NativeButton* allow_button_; views::NativeButton* block_button_; views::Link* show_cookie_link_; views::View* info_view_; // True if cookie should expire with this session. bool session_expire_; // True if cookie info view is currently shown and window expanded. bool expanded_view_; // True if the outcome of this dialog has been signaled to the delegate. bool signaled_; // Prompt window title. std::wstring title_; // A pointer to the AppModalDialog that created us. We own this. scoped_ptr parent_; gfx::NativeWindow root_window_; Profile* profile_; DISALLOW_COPY_AND_ASSIGN(CookiePromptView); }; #endif // CHROME_BROWSER_VIEWS_COOKIE_PROMPT_VIEW_H_