1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
// 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 "chrome/browser/net/net_export_helper.h"
#include <memory>
#include <utility>
#include "base/values.h"
#include "build/build_config.h"
#include "chrome/browser/preloading/prefetch/no_state_prefetch/no_state_prefetch_manager_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "components/no_state_prefetch/browser/no_state_prefetch_manager.h"
#include "extensions/buildflags/buildflags.h"
#if BUILDFLAG(ENABLE_EXTENSIONS)
#include "chrome/browser/ui/webui/extensions/extension_basic_info.h"
#include "extensions/browser/extension_registrar.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/common/extension_set.h"
#endif
#if BUILDFLAG(IS_WIN)
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/net/service_providers_win.h"
#endif
namespace chrome_browser_net {
base::Value::Dict GetPrerenderInfo(Profile* profile) {
prerender::NoStatePrefetchManager* no_state_prefetch_manager =
prerender::NoStatePrefetchManagerFactory::GetForBrowserContext(profile);
if (no_state_prefetch_manager) {
return no_state_prefetch_manager->CopyAsDict();
} else {
base::Value::Dict dict;
dict.Set("enabled", false);
dict.Set("omnibox_enabled", false);
return dict;
}
}
base::Value::List GetExtensionInfo(Profile* profile) {
base::Value::List extension_list;
#if BUILDFLAG(ENABLE_EXTENSIONS)
auto* extension_registrar = extensions::ExtensionRegistrar::Get(profile);
if (extension_registrar) {
const extensions::ExtensionSet extensions =
extensions::ExtensionRegistry::Get(profile)
->GenerateInstalledExtensionsSet();
for (const auto& extension : extensions) {
base::Value::Dict extension_info;
bool enabled = extension_registrar->IsExtensionEnabled(extension->id());
extensions::GetExtensionBasicInfo(extension.get(), enabled,
&extension_info);
extension_list.Append(std::move(extension_info));
}
}
#endif
return extension_list;
}
#if BUILDFLAG(IS_WIN)
base::Value::Dict GetWindowsServiceProviders() {
base::Value::Dict service_providers;
WinsockLayeredServiceProviderList layered_providers;
GetWinsockLayeredServiceProviders(&layered_providers);
base::Value::List layered_provider_list;
for (const auto& provider : layered_providers) {
base::Value::Dict service_dict;
service_dict.Set("name", base::AsString16(provider.name));
service_dict.Set("version", provider.version);
service_dict.Set("chain_length", provider.chain_length);
service_dict.Set("socket_type", provider.socket_type);
service_dict.Set("socket_protocol", provider.socket_protocol);
service_dict.Set("path", base::WideToUTF8(provider.path));
layered_provider_list.Append(std::move(service_dict));
}
service_providers.Set("service_providers", std::move(layered_provider_list));
WinsockNamespaceProviderList namespace_providers;
GetWinsockNamespaceProviders(&namespace_providers);
base::Value::List namespace_list;
for (const auto& provider : namespace_providers) {
base::Value::Dict namespace_dict;
namespace_dict.Set("name", base::AsString16(provider.name));
namespace_dict.Set("active", provider.active);
namespace_dict.Set("version", provider.version);
namespace_dict.Set("type", provider.type);
namespace_list.Append(std::move(namespace_dict));
}
service_providers.Set("namespace_providers", std::move(namespace_list));
return service_providers;
}
#endif
} // namespace chrome_browser_net
|