Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / signed_certificate_timestamps_views.h
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
15 namespace content {
16 class WebContents;
17 }
18
19 namespace views {
20 class Combobox;
21 class Widget;
22 }
23
24 class SignedCertificateTimestampInfoView;
25 class SCTListModel;
26
27 // The Views implementation of the signed certificate timestamps viewer.
28 class 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   ~SignedCertificateTimestampsViews() override;
37
38   // views::DialogDelegate:
39   base::string16 GetWindowTitle() const override;
40   int GetDialogButtons() const override;
41   ui::ModalType GetModalType() const override;
42
43   // views::View:
44   void ViewHierarchyChanged(
45       const ViewHierarchyChangedDetails& details) override;
46
47  private:
48   void Init();
49
50   void ShowSCTInfo(int sct_index);
51
52   // views::ComboboxListener:
53   void OnPerformAction(views::Combobox* combobox) override;
54
55   // content::NotificationObserver:
56   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_