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.
5 #ifndef CHROME_BROWSER_UI_VIEWS_SIGNED_CERTIFICATE_TIMESTAMPS_VIEWS_H_
6 #define CHROME_BROWSER_UI_VIEWS_SIGNED_CERTIFICATE_TIMESTAMPS_VIEWS_H_
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"
24 class SignedCertificateTimestampInfoView
;
27 // The Views implementation of the signed certificate timestamps viewer.
28 class SignedCertificateTimestampsViews
: public views::DialogDelegateView
,
29 public content::NotificationObserver
,
30 public views::ComboboxListener
{
32 // Use ShowSignedCertificateTimestampsViewer to show.
33 SignedCertificateTimestampsViews(
34 content::WebContents
* web_contents
,
35 const net::SignedCertificateTimestampAndStatusList
& sct_list
);
36 ~SignedCertificateTimestampsViews() override
;
38 // views::DialogDelegate:
39 base::string16
GetWindowTitle() const override
;
40 int GetDialogButtons() const override
;
41 ui::ModalType
GetModalType() const override
;
44 void ViewHierarchyChanged(
45 const ViewHierarchyChangedDetails
& details
) override
;
50 void ShowSCTInfo(int sct_index
);
52 // views::ComboboxListener:
53 void OnPerformAction(views::Combobox
* combobox
) override
;
55 // content::NotificationObserver:
56 void Observe(int type
,
57 const content::NotificationSource
& source
,
58 const content::NotificationDetails
& details
) override
;
60 SignedCertificateTimestampInfoView
* sct_info_view_
;
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_
;
72 DISALLOW_COPY_AND_ASSIGN(SignedCertificateTimestampsViews
);
75 #endif // CHROME_BROWSER_UI_VIEWS_SIGNED_CERTIFICATE_TIMESTAMPS_VIEWS_H_