blob: b7d461952857dd748447cf3672cbf1e355b882a7 [file] [log] [blame]
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/client_hints/common/client_hints.h"
#include "third_party/blink/public/common/client_hints/enabled_client_hints.h"
namespace client_hints {
void GetAllowedClientHints(const base::Value& client_hints_rule,
blink::EnabledClientHints* client_hints) {
if (client_hints_rule.is_none()) {
return;
}
DCHECK(client_hints_rule.is_dict());
const base::Value* list_value =
client_hints_rule.GetDict().Find(kClientHintsSettingKey);
if (list_value == nullptr) {
return;
}
// We should guarantee client hints list value always be Type::List since we
// save the client hints as base::Value::List in the Prefs. For details,
// check components/client_hints/browser/client_hints.cc
DCHECK(list_value->is_list());
for (const auto& client_hint : list_value->GetList()) {
DCHECK(client_hint.is_int());
network::mojom::WebClientHintsType client_hint_mojo =
static_cast<network::mojom::WebClientHintsType>(client_hint.GetInt());
if (network::mojom::IsKnownEnumValue(client_hint_mojo)) {
client_hints->SetIsEnabled(client_hint_mojo, true);
}
}
}
} // namespace client_hints