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_TIMESTAMP_INFO_VIEW_H_
6#define CHROME_BROWSER_UI_VIEWS_SIGNED_CERTIFICATE_TIMESTAMP_INFO_VIEW_H_
7
8#include <vector>
9
10#include "net/cert/sct_status_flags.h"
11#include "ui/views/view.h"
12
13namespace views {
14class GridLayout;
15class Label;
16}
17
18namespace net {
19namespace ct {
20struct SignedCertificateTimestamp;
21}
22}
23
24namespace chrome {
25namespace ct {
26
27// Utility function to translate an SCT status to resource ID.
28int StatusToResourceID(net::ct::SCTVerifyStatus status);
29int SCTOriginToResourceID(const net::ct::SignedCertificateTimestamp& sct);
30
31}  // namespace ct
32}  // namespace chrome
33
34// Responsible for displaying a tabular grid of SCT information.
35// Only displays information about one SCT at a time.
36class SignedCertificateTimestampInfoView : public views::View {
37 public:
38  SignedCertificateTimestampInfoView();
39  virtual ~SignedCertificateTimestampInfoView();
40
41  // Updates the display to show information for the given SCT.
42  void SetSignedCertificateTimestamp(
43      const net::ct::SignedCertificateTimestamp& sct,
44      net::ct::SCTVerifyStatus status);
45
46  // Clears the SCT display to indicate that no SCT is selected.
47  void ClearDisplay();
48
49 private:
50  // views::View implementation
51  virtual void ViewHierarchyChanged(const ViewHierarchyChangedDetails& details)
52      OVERRIDE;
53
54  // Layout helper routines.
55  void AddLabelRow(int layout_id,
56                   views::GridLayout* layout,
57                   int label_message_id,
58                   views::Label* data_label);
59
60  // Sets up the view layout.
61  void Init();
62
63  // Individual property labels
64  views::Label* status_value_field_;
65  views::Label* origin_value_field_;
66  views::Label* version_value_field_;
67  views::Label* log_description_value_field_;
68  views::Label* log_id_value_field_;
69  views::Label* timestamp_value_field_;
70  views::Label* hash_algorithm_value_field_;
71  views::Label* signature_algorithm_value_field_;
72  views::Label* signature_data_value_field_;
73
74  DISALLOW_COPY_AND_ASSIGN(SignedCertificateTimestampInfoView);
75};
76
77#endif  // CHROME_BROWSER_UI_VIEWS_SIGNED_CERTIFICATE_TIMESTAMP_INFO_VIEW_H_
78