172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 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_PAGE_INFO_BUBBLE_VIEW_H_ 64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#define CHROME_BROWSER_UI_VIEWS_PAGE_INFO_BUBBLE_VIEW_H_ 74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once 84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/page_info_model.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/views/bubble/bubble.h" 113f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "ui/base/animation/animation_delegate.h" 123f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "ui/base/animation/slide_animation.h" 134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/controls/link.h" 144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/view.h" 154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochnamespace views { 174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass Label; 184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass PageInfoBubbleView : public views::View, 214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public PageInfoModel::PageInfoModelObserver, 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public BubbleDelegate, 234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public views::LinkController, 243f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen public ui::AnimationDelegate { 254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public: 264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch PageInfoBubbleView(gfx::NativeWindow parent_window, 274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch Profile* profile, 284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const GURL& url, 294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const NavigationEntry::SSLStatus& ssl, 304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch bool show_history); 314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual ~PageInfoBubbleView(); 324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Show the certificate dialog. 344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void ShowCertDialog(); 354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void set_bubble(Bubble* bubble) { bubble_ = bubble; } 374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // View methods: 394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual gfx::Size GetPreferredSize(); 404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // PageInfoModel::PageInfoModelObserver methods: 424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void ModelChanged(); 434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // BubbleDelegate methods: 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void BubbleClosing(Bubble* bubble, bool closed_by_escape); 46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual bool CloseOnEscape(); 47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual bool FadeInOnShow(); 48dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual std::wstring accessible_name(); 494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // LinkController methods: 514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void LinkActivated(views::Link* source, int event_flags); 524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 533f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen // Overridden from ui::AnimationDelegate. 543f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual void AnimationEnded(const ui::Animation* animation); 553f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual void AnimationProgressed(const ui::Animation* animation); 564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private: 584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Layout the sections within the bubble. 594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void LayoutSections(); 604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Global pointer to the bubble that is hosting our view. 62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen static Bubble* bubble_; 63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The model providing the various section info. 654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch PageInfoModel model_; 664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // The parent window of the Bubble showing this view. 684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch gfx::NativeWindow parent_window_; 694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The id of the certificate for this page. 714a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch int cert_id_; 724a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 734a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The Help Center link at the bottom of the bubble. 744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Link* help_center_link_; 754a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 764a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Animation that helps us change size smoothly as more data comes in. 773f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ui::SlideAnimation resize_animation_; 784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The height of the info bubble at the start of the resize animation. 804a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch int animation_start_height_; 814a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 824a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch DISALLOW_COPY_AND_ASSIGN(PageInfoBubbleView); 834a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 844a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 854a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif // CHROME_BROWSER_UI_VIEWS_PAGE_INFO_BUBBLE_VIEW_H_ 86