| Index: chrome/browser/ui/webui/net_internals_ui.cc
|
| ===================================================================
|
| --- chrome/browser/ui/webui/net_internals_ui.cc (revision 80507)
|
| +++ chrome/browser/ui/webui/net_internals_ui.cc (working copy)
|
| @@ -16,6 +16,7 @@
|
| #include "base/path_service.h"
|
| #include "base/string_number_conversions.h"
|
| #include "base/string_piece.h"
|
| +#include "base/string_split.h"
|
| #include "base/string_util.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "base/values.h"
|
| @@ -1065,6 +1066,8 @@
|
| result->SetBoolean("subdomains", state.include_subdomains);
|
| result->SetBoolean("preloaded", state.preloaded);
|
| result->SetString("domain", state.domain);
|
| + result->SetString("cert_pins",
|
| + JoinString(state.cert_pins, ','));
|
| }
|
| }
|
| }
|
| @@ -1074,7 +1077,7 @@
|
|
|
| void NetInternalsMessageHandler::IOThreadImpl::OnHSTSAdd(
|
| const ListValue* list) {
|
| - // |list| should be: [<domain to query>, <include subdomains>].
|
| + // |list| should be: [<domain to query>, <include subdomains>, <cert pins>].
|
| std::string domain;
|
| CHECK(list->GetString(0, &domain));
|
| if (!IsStringASCII(domain)) {
|
| @@ -1084,6 +1087,8 @@
|
| }
|
| bool include_subdomains;
|
| CHECK(list->GetBoolean(1, &include_subdomains));
|
| + std::string cert_pins_str;
|
| + CHECK(list->GetString(2, &cert_pins_str));
|
|
|
| net::TransportSecurityState* transport_security_state =
|
| context_getter_->GetURLRequestContext()->transport_security_state();
|
| @@ -1093,6 +1098,18 @@
|
| net::TransportSecurityState::DomainState state;
|
| state.expiry = state.created + base::TimeDelta::FromDays(1000);
|
| state.include_subdomains = include_subdomains;
|
| + state.cert_pins.clear();
|
| + if (!cert_pins_str.empty()) {
|
| + std::vector<std::string> cert_pins;
|
| + base::SplitString(cert_pins_str, ',', &cert_pins);
|
| + std::vector<std::string>::const_iterator i = cert_pins.begin();
|
| + for (; i != cert_pins.end(); ++i) {
|
| + std::string pin = *i;
|
| + RemoveChars(pin, " \t\r\n", &pin);
|
| + StringToLowerASCII(&pin);
|
| + state.cert_pins.push_back(pin);
|
| + }
|
| + }
|
|
|
| transport_security_state->EnableHost(domain, state);
|
| }
|
|
|