1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_VIEWS_SIGNED_CERTIFICATE_TIMESTAMPS_VIEWS_H_ 6#define CHROME_BROWSER_UI_VIEWS_SIGNED_CERTIFICATE_TIMESTAMPS_VIEWS_H_ 7 8#include "base/memory/scoped_ptr.h" 9#include "content/public/browser/notification_observer.h" 10#include "net/cert/signed_certificate_timestamp.h" 11#include "net/ssl/signed_certificate_timestamp_and_status.h" 12#include "ui/views/controls/combobox/combobox_listener.h" 13#include "ui/views/window/dialog_delegate.h" 14 15namespace content { 16class WebContents; 17} 18 19namespace views { 20class Combobox; 21class Widget; 22} 23 24class SignedCertificateTimestampInfoView; 25class SCTListModel; 26 27// The Views implementation of the signed certificate timestamps viewer. 28class SignedCertificateTimestampsViews : public views::DialogDelegateView, 29 public content::NotificationObserver, 30 public views::ComboboxListener { 31 public: 32 // Use ShowSignedCertificateTimestampsViewer to show. 33 SignedCertificateTimestampsViews( 34 content::WebContents* web_contents, 35 const net::SignedCertificateTimestampAndStatusList& sct_list); 36 virtual ~SignedCertificateTimestampsViews(); 37 38 // views::DialogDelegate: 39 virtual base::string16 GetWindowTitle() const OVERRIDE; 40 virtual int GetDialogButtons() const OVERRIDE; 41 virtual ui::ModalType GetModalType() const OVERRIDE; 42 43 // views::View: 44 virtual void ViewHierarchyChanged(const ViewHierarchyChangedDetails& details) 45 OVERRIDE; 46 47 private: 48 void Init(); 49 50 void ShowSCTInfo(int sct_index); 51 52 // views::ComboboxListener: 53 virtual void OnPerformAction(views::Combobox* combobox) OVERRIDE; 54 55 // content::NotificationObserver: 56 virtual void Observe(int type, 57 const content::NotificationSource& source, 58 const content::NotificationDetails& details) OVERRIDE; 59 60 SignedCertificateTimestampInfoView* sct_info_view_; 61 62 scoped_ptr<SCTListModel> sct_list_model_; 63 // The Combobox used to select the SCT to display. This class owns the pointer 64 // as it has to be deleted explicitly before the views c'tor is called: 65 // The Combobox d'tor refers to the model it holds, which will be destructed 66 // as part of tearing down this class. So it will not be available when the 67 // Views d'tor destroys the Combobox, leading to a crash. 68 // Must be deleted before the model. 69 scoped_ptr<views::Combobox> sct_selector_box_; 70 net::SignedCertificateTimestampAndStatusList sct_list_; 71 72 DISALLOW_COPY_AND_ASSIGN(SignedCertificateTimestampsViews); 73}; 74 75#endif // CHROME_BROWSER_UI_VIEWS_SIGNED_CERTIFICATE_TIMESTAMPS_VIEWS_H_ 76