All except `GetAsDictionary()`. Please use new shiny methods instead.
https://chromium.googlesource.com/chromium/src/+/master/base/values.h
atom/browser/net/atom_network_delegate.cc
auto* webContents = content::WebContents::FromRenderFrameHost(
      content::RenderFrameHost::FromID(process_id, frame_id));
  return atom::api::WebContents::GetIDFromWrappedClass(webContents);
}
namespace {
using ResponseHeadersContainer =
    std::pair<scoped_refptr<net::HttpResponseHeaders>*, const std::string&>;
void RunSimpleListener(const AtomNetworkDelegate::SimpleListener& listener,
                       std::unique_ptr<base::DictionaryValue> details,
                       int render_process_id,
                       int render_frame_id) {
  int32_t id = GetWebContentsID(render_process_id, render_frame_id);
  
  if (id)
    details->SetInteger("webContentsId", id);
  return listener.Run(*(details.get()));
}
void RunResponseListener(
    const AtomNetworkDelegate::ResponseListener& listener,
    std::unique_ptr<base::DictionaryValue> details,
    int render_process_id,
    int render_frame_id,
    const AtomNetworkDelegate::ResponseCallback& callback) {
  int32_t id = GetWebContentsID(render_process_id, render_frame_id);
  
  if (id)
    details->SetInteger("webContentsId", id);
  return listener.Run(*(details.get()), callback);
}
bool MatchesFilterCondition(net::URLRequest* request,