Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(439)

Side by Side Diff: content/browser/devtools/protocol/security_handler.cc

Issue 2567343003: Revert of [DevTools] Migrate security handler to new generator. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/devtools/protocol/security_handler.h" 5 #include "content/browser/devtools/protocol/security_handler.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "content/browser/frame_host/render_frame_host_impl.h" 9 #include "content/browser/devtools/protocol/devtools_protocol_dispatcher.h"
10 #include "content/public/browser/navigation_controller.h" 10 #include "content/public/browser/navigation_controller.h"
11 #include "content/public/browser/navigation_entry.h" 11 #include "content/public/browser/navigation_entry.h"
12 #include "content/public/browser/security_style_explanations.h" 12 #include "content/public/browser/security_style_explanations.h"
13 #include "content/public/browser/ssl_status.h" 13 #include "content/public/browser/ssl_status.h"
14 #include "content/public/browser/web_contents.h" 14 #include "content/public/browser/web_contents.h"
15 #include "content/public/browser/web_contents_delegate.h" 15 #include "content/public/browser/web_contents_delegate.h"
16 16
17 namespace content { 17 namespace content {
18 namespace protocol { 18 namespace devtools {
19 namespace security {
19 20
20 using Explanations = protocol::Array<Security::SecurityStateExplanation>; 21 typedef DevToolsProtocolClient::Response Response;
21 22
22 namespace { 23 namespace {
23 24
24 std::string SecurityStyleToProtocolSecurityState( 25 std::string SecurityStyleToProtocolSecurityState(
25 blink::WebSecurityStyle security_style) { 26 blink::WebSecurityStyle security_style) {
26 switch (security_style) { 27 switch (security_style) {
27 case blink::WebSecurityStyleUnknown: 28 case blink::WebSecurityStyleUnknown:
28 return Security::SecurityStateEnum::Unknown; 29 return kSecurityStateUnknown;
29 case blink::WebSecurityStyleUnauthenticated: 30 case blink::WebSecurityStyleUnauthenticated:
30 return Security::SecurityStateEnum::Neutral; 31 return kSecurityStateNeutral;
31 case blink::WebSecurityStyleAuthenticationBroken: 32 case blink::WebSecurityStyleAuthenticationBroken:
32 return Security::SecurityStateEnum::Insecure; 33 return kSecurityStateInsecure;
33 case blink::WebSecurityStyleWarning: 34 case blink::WebSecurityStyleWarning:
34 return Security::SecurityStateEnum::Warning; 35 return kSecurityStateWarning;
35 case blink::WebSecurityStyleAuthenticated: 36 case blink::WebSecurityStyleAuthenticated:
36 return Security::SecurityStateEnum::Secure; 37 return kSecurityStateSecure;
37 default: 38 default:
38 NOTREACHED(); 39 NOTREACHED();
39 return Security::SecurityStateEnum::Unknown; 40 return kSecurityStateUnknown;
40 } 41 }
41 } 42 }
42 43
43 void AddExplanations( 44 void AddExplanations(
44 const std::string& security_style, 45 const std::string& security_style,
45 const std::vector<SecurityStyleExplanation>& explanations_to_add, 46 const std::vector<SecurityStyleExplanation>& explanations_to_add,
46 Explanations* explanations) { 47 std::vector<scoped_refptr<SecurityStateExplanation>>* explanations) {
47 for (const auto& it : explanations_to_add) { 48 for (const auto& it : explanations_to_add) {
48 explanations->addItem(Security::SecurityStateExplanation::Create() 49 scoped_refptr<SecurityStateExplanation> explanation =
49 .SetSecurityState(security_style) 50 SecurityStateExplanation::Create()
50 .SetSummary(it.summary) 51 ->set_security_state(security_style)
51 .SetDescription(it.description) 52 ->set_summary(it.summary)
52 .SetHasCertificate(it.has_certificate) 53 ->set_description(it.description)
53 .Build()); 54 ->set_has_certificate(it.has_certificate);
55 explanations->push_back(explanation);
54 } 56 }
55 } 57 }
56 58
57 } // namespace 59 } // namespace
58 60
59 SecurityHandler::SecurityHandler() 61 SecurityHandler::SecurityHandler()
60 : enabled_(false), 62 : enabled_(false),
61 host_(nullptr) { 63 host_(nullptr) {
62 } 64 }
63 65
64 SecurityHandler::~SecurityHandler() { 66 SecurityHandler::~SecurityHandler() {
65 } 67 }
66 68
67 void SecurityHandler::Wire(UberDispatcher* dispatcher) { 69 void SecurityHandler::SetClient(std::unique_ptr<Client> client) {
68 frontend_.reset(new Security::Frontend(dispatcher->channel())); 70 client_.swap(client);
69 Security::Dispatcher::wire(dispatcher, this);
70 } 71 }
71 72
72 void SecurityHandler::AttachToRenderFrameHost() { 73 void SecurityHandler::AttachToRenderFrameHost() {
73 DCHECK(host_); 74 DCHECK(host_);
74 WebContents* web_contents = WebContents::FromRenderFrameHost(host_); 75 WebContents* web_contents = WebContents::FromRenderFrameHost(host_);
75 WebContentsObserver::Observe(web_contents); 76 WebContentsObserver::Observe(web_contents);
76 77
77 // Send an initial DidChangeVisibleSecurityState event. 78 // Send an initial DidChangeVisibleSecurityState event.
78 DCHECK(enabled_); 79 DCHECK(enabled_);
79 DidChangeVisibleSecurityState(); 80 DidChangeVisibleSecurityState();
80 } 81 }
81 82
82 void SecurityHandler::SetRenderFrameHost(RenderFrameHostImpl* host) { 83 void SecurityHandler::SetRenderFrameHost(RenderFrameHost* host) {
83 host_ = host; 84 host_ = host;
84 if (enabled_ && host_) 85 if (enabled_ && host_)
85 AttachToRenderFrameHost(); 86 AttachToRenderFrameHost();
86 } 87 }
87 88
88 void SecurityHandler::DidChangeVisibleSecurityState() { 89 void SecurityHandler::DidChangeVisibleSecurityState() {
89 DCHECK(enabled_); 90 DCHECK(enabled_);
90 91
91 SecurityStyleExplanations security_style_explanations; 92 SecurityStyleExplanations security_style_explanations;
92 blink::WebSecurityStyle security_style = 93 blink::WebSecurityStyle security_style =
93 web_contents()->GetDelegate()->GetSecurityStyle( 94 web_contents()->GetDelegate()->GetSecurityStyle(
94 web_contents(), &security_style_explanations); 95 web_contents(), &security_style_explanations);
95 96
96 const std::string security_state = 97 const std::string security_state =
97 SecurityStyleToProtocolSecurityState(security_style); 98 SecurityStyleToProtocolSecurityState(security_style);
98 99
99 std::unique_ptr<Explanations> explanations = Explanations::create(); 100 std::vector<scoped_refptr<SecurityStateExplanation>> explanations;
100 AddExplanations(Security::SecurityStateEnum::Insecure, 101 AddExplanations(kSecurityStateInsecure,
101 security_style_explanations.broken_explanations, 102 security_style_explanations.broken_explanations,
102 explanations.get()); 103 &explanations);
103 AddExplanations(Security::SecurityStateEnum::Neutral, 104 AddExplanations(kSecurityStateNeutral,
104 security_style_explanations.unauthenticated_explanations, 105 security_style_explanations.unauthenticated_explanations,
105 explanations.get()); 106 &explanations);
106 AddExplanations(Security::SecurityStateEnum::Secure, 107 AddExplanations(kSecurityStateSecure,
107 security_style_explanations.secure_explanations, 108 security_style_explanations.secure_explanations,
108 explanations.get()); 109 &explanations);
109 AddExplanations(Security::SecurityStateEnum::Info, 110 AddExplanations(kSecurityStateInfo,
110 security_style_explanations.info_explanations, 111 security_style_explanations.info_explanations, &explanations);
111 explanations.get());
112 112
113 std::unique_ptr<Security::InsecureContentStatus> insecure_content_status = 113 scoped_refptr<InsecureContentStatus> insecure_content_status =
114 Security::InsecureContentStatus::Create() 114 InsecureContentStatus::Create()
115 .SetRanMixedContent(security_style_explanations.ran_mixed_content) 115 ->set_ran_mixed_content(security_style_explanations.ran_mixed_content)
116 .SetDisplayedMixedContent( 116 ->set_displayed_mixed_content(
117 security_style_explanations.displayed_mixed_content) 117 security_style_explanations.displayed_mixed_content)
118 .SetRanContentWithCertErrors( 118 ->set_ran_content_with_cert_errors(
119 security_style_explanations.ran_content_with_cert_errors) 119 security_style_explanations.ran_content_with_cert_errors)
120 .SetDisplayedContentWithCertErrors( 120 ->set_displayed_content_with_cert_errors(
121 security_style_explanations.displayed_content_with_cert_errors) 121 security_style_explanations.displayed_content_with_cert_errors)
122 .SetRanInsecureContentStyle(SecurityStyleToProtocolSecurityState( 122 ->set_ran_insecure_content_style(SecurityStyleToProtocolSecurityState(
123 security_style_explanations.ran_insecure_content_style)) 123 security_style_explanations.ran_insecure_content_style))
124 .SetDisplayedInsecureContentStyle( 124 ->set_displayed_insecure_content_style(
125 SecurityStyleToProtocolSecurityState( 125 SecurityStyleToProtocolSecurityState(
126 security_style_explanations 126 security_style_explanations
127 .displayed_insecure_content_style)) 127 .displayed_insecure_content_style));
128 .Build();
129 128
130 frontend_->SecurityStateChanged( 129 client_->SecurityStateChanged(
131 security_state, 130 SecurityStateChangedParams::Create()
132 std::move(explanations), 131 ->set_security_state(security_state)
133 std::move(insecure_content_status), 132 ->set_scheme_is_cryptographic(
134 security_style_explanations.scheme_is_cryptographic); 133 security_style_explanations.scheme_is_cryptographic)
134 ->set_insecure_content_status(insecure_content_status)
135 ->set_explanations(explanations));
135 } 136 }
136 137
137 Response SecurityHandler::Enable() { 138 Response SecurityHandler::Enable() {
138 enabled_ = true; 139 enabled_ = true;
139 if (host_) 140 if (host_)
140 AttachToRenderFrameHost(); 141 AttachToRenderFrameHost();
141 142
142 return Response::OK(); 143 return Response::OK();
143 } 144 }
144 145
145 Response SecurityHandler::Disable() { 146 Response SecurityHandler::Disable() {
146 enabled_ = false; 147 enabled_ = false;
147 WebContentsObserver::Observe(nullptr); 148 WebContentsObserver::Observe(nullptr);
148 return Response::OK(); 149 return Response::OK();
149 } 150 }
150 151
151 Response SecurityHandler::ShowCertificateViewer() { 152 Response SecurityHandler::ShowCertificateViewer() {
152 if (!host_) 153 if (!host_)
153 return Response::InternalError(); 154 return Response::InternalError("Could not connect to view");
154 WebContents* web_contents = WebContents::FromRenderFrameHost(host_); 155 WebContents* web_contents = WebContents::FromRenderFrameHost(host_);
155 scoped_refptr<net::X509Certificate> certificate = 156 scoped_refptr<net::X509Certificate> certificate =
156 web_contents->GetController().GetVisibleEntry()->GetSSL().certificate; 157 web_contents->GetController().GetVisibleEntry()->GetSSL().certificate;
157 if (!certificate) 158 if (!certificate)
158 return Response::Error("Could not find certificate"); 159 return Response::InternalError("Could not find certificate");
159 web_contents->GetDelegate()->ShowCertificateViewerInDevTools( 160 web_contents->GetDelegate()->ShowCertificateViewerInDevTools(
160 web_contents, certificate); 161 web_contents, certificate);
161 return Response::OK(); 162 return Response::OK();
162 } 163 }
163 164
164 } // namespace protocol 165 } // namespace security
166 } // namespace devtools
165 } // namespace content 167 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/devtools/protocol/security_handler.h ('k') | content/browser/devtools/protocol_config.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698