| Index: net/log/net_log_source.cc
|
| diff --git a/net/log/net_log_source.cc b/net/log/net_log_source.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b8104b68c9a71a1e63c2fe09a5b93c5e5f2f61a5
|
| --- /dev/null
|
| +++ b/net/log/net_log_source.cc
|
| @@ -0,0 +1,78 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "net/log/net_log_source.h"
|
| +
|
| +#include <memory>
|
| +#include <utility>
|
| +
|
| +#include "base/bind.h"
|
| +#include "base/callback.h"
|
| +#include "base/logging.h"
|
| +#include "base/values.h"
|
| +#include "net/log/net_log_capture_mode.h"
|
| +
|
| +namespace net {
|
| +
|
| +namespace {
|
| +
|
| +std::unique_ptr<base::Value> SourceEventParametersCallback(
|
| + const NetLogSource source,
|
| + NetLogCaptureMode /* capture_mode */) {
|
| + if (!source.IsValid())
|
| + return std::unique_ptr<base::Value>();
|
| + std::unique_ptr<base::DictionaryValue> event_params(
|
| + new base::DictionaryValue());
|
| + source.AddToEventParameters(event_params.get());
|
| + return std::move(event_params);
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +// LoadTimingInfo requires this be 0.
|
| +const uint32_t NetLogSource::kInvalidId = 0;
|
| +
|
| +NetLogSource::NetLogSource() : type(NetLogSourceType::NONE), id(kInvalidId) {}
|
| +
|
| +NetLogSource::NetLogSource(NetLogSourceType type, uint32_t id)
|
| + : type(type), id(id) {}
|
| +
|
| +bool NetLogSource::IsValid() const {
|
| + return id != kInvalidId;
|
| +}
|
| +
|
| +void NetLogSource::AddToEventParameters(
|
| + base::DictionaryValue* event_params) const {
|
| + std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
|
| + dict->SetInteger("type", static_cast<int>(type));
|
| + dict->SetInteger("id", static_cast<int>(id));
|
| + event_params->Set("source_dependency", std::move(dict));
|
| +}
|
| +
|
| +NetLogParametersCallback NetLogSource::ToEventParametersCallback() const {
|
| + return base::Bind(&SourceEventParametersCallback, *this);
|
| +}
|
| +
|
| +// static
|
| +bool NetLogSource::FromEventParameters(base::Value* event_params,
|
| + NetLogSource* source) {
|
| + base::DictionaryValue* dict = NULL;
|
| + base::DictionaryValue* source_dict = NULL;
|
| + int source_id = -1;
|
| + int source_type = static_cast<int>(NetLogSourceType::COUNT);
|
| + if (!event_params || !event_params->GetAsDictionary(&dict) ||
|
| + !dict->GetDictionary("source_dependency", &source_dict) ||
|
| + !source_dict->GetInteger("id", &source_id) ||
|
| + !source_dict->GetInteger("type", &source_type)) {
|
| + *source = NetLogSource();
|
| + return false;
|
| + }
|
| +
|
| + DCHECK_GE(source_id, 0);
|
| + DCHECK_LT(source_type, static_cast<int>(NetLogSourceType::COUNT));
|
| + *source = NetLogSource(static_cast<NetLogSourceType>(source_type), source_id);
|
| + return true;
|
| +}
|
| +
|
| +} // namespace net
|
|
|