Commit 8c2e19a7 authored by Steven Bennetts's avatar Steven Bennetts Committed by Commit Bot

Add chromeos.network_config mojo support to ash_shell_with_content

Bug: 980951
Change-Id: I355cfbcbc2374ba444c362152298d4fe1d688d0e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1696097Reviewed-by: default avatarMitsuru Oshima <oshima@chromium.org>
Commit-Queue: Steven Bennetts <stevenjb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#676182}
parent b710e196
......@@ -1519,6 +1519,8 @@ static_library("ash_shell_lib_with_content") {
"//chromeos/dbus",
"//chromeos/dbus/biod",
"//chromeos/dbus/power",
"//chromeos/services/network_config/public/cpp:manifest",
"//chromeos/services/network_config/public/cpp:test_support",
"//chromeos/system",
"//components/discardable_memory/public/interfaces",
"//components/services/font:lib",
......
......@@ -24,6 +24,7 @@
#include "base/command_line.h"
#include "base/run_loop.h"
#include "chromeos/dbus/biod/biod_client.h"
#include "chromeos/services/network_config/public/cpp/cros_network_config_test_helper.h"
#include "components/exo/file_helper.h"
#include "content/public/browser/context_factory.h"
#include "content/public/browser/system_connector.h"
......@@ -60,6 +61,9 @@ void ShellBrowserMainParts::PreMainMessageLoopRun() {
browser_context_.reset(new content::ShellBrowserContext(false));
ash_test_helper_ = std::make_unique<AshTestHelper>();
network_config_helper_ =
std::make_unique<chromeos::network_config::CrosNetworkConfigTestHelper>(
content::GetSystemConnector());
AshTestHelper::InitParams init_params;
init_params.start_session = true;
......
......@@ -11,10 +11,16 @@
#include "content/public/browser/browser_main_parts.h"
#include "content/public/common/main_function_params.h"
namespace chromeos {
namespace network_config {
class CrosNetworkConfigTestHelper;
} // namespace network_config
} // namespace chromeos
namespace content {
class BrowserContext;
struct MainFunctionParams;
}
} // namespace content
namespace views {
class ViewsDelegate;
......@@ -51,6 +57,8 @@ class ShellBrowserMainParts : public content::BrowserMainParts {
example_session_controller_client_;
std::unique_ptr<ExampleAppListClient> example_app_list_client_;
std::unique_ptr<ash::AshTestHelper> ash_test_helper_;
std::unique_ptr<chromeos::network_config::CrosNetworkConfigTestHelper>
network_config_helper_;
content::MainFunctionParams parameters_;
DISALLOW_COPY_AND_ASSIGN(ShellBrowserMainParts);
......
......@@ -17,6 +17,9 @@
#include "base/no_destructor.h"
#include "base/stl_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chromeos/services/network_config/public/cpp/manifest.h"
#include "chromeos/services/network_config/public/mojom/constants.mojom.h" // nogncheck
#include "chromeos/services/network_config/public/mojom/cros_network_config.mojom.h" // nogncheck
#include "content/public/browser/browser_context.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/common/service_manager_connection.h"
......@@ -37,6 +40,9 @@ const service_manager::Manifest& GetAshShellBrowserOverlayManifest() {
static base::NoDestructor<service_manager::Manifest> manifest{
service_manager::ManifestBuilder()
.RequireCapability(device::mojom::kServiceName, "device:fingerprint")
.RequireCapability(
chromeos::network_config::mojom::kServiceName,
chromeos::network_config::mojom::kNetworkConfigCapability)
.Build()};
return *manifest;
}
......@@ -71,5 +77,12 @@ ShellContentBrowserClient::GetServiceManifestOverlay(base::StringPiece name) {
return base::nullopt;
}
std::vector<service_manager::Manifest>
ShellContentBrowserClient::GetExtraServiceManifests() {
return std::vector<service_manager::Manifest>({
chromeos::network_config::GetManifest(),
});
}
} // namespace shell
} // namespace ash
......@@ -29,6 +29,7 @@ class ShellContentBrowserClient : public content::ContentBrowserClient {
storage::OptionalQuotaSettingsCallback callback) override;
base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
base::StringPiece name) override;
std::vector<service_manager::Manifest> GetExtraServiceManifests() override;
private:
DISALLOW_COPY_AND_ASSIGN(ShellContentBrowserClient);
......
......@@ -14,16 +14,31 @@ namespace chromeos {
namespace network_config {
CrosNetworkConfigTestHelper::CrosNetworkConfigTestHelper() {
SetupCrosNetworkConfig();
// Create a local service manager connector to handle requests.
service_manager::mojom::ConnectorRequest request;
owned_connector_ = service_manager::Connector::Create(&request);
connector_ = owned_connector_.get();
SetupService();
}
CrosNetworkConfigTestHelper::CrosNetworkConfigTestHelper(
service_manager::Connector* connector)
: connector_(connector) {
SetupCrosNetworkConfig();
SetupService();
}
CrosNetworkConfigTestHelper::~CrosNetworkConfigTestHelper() = default;
void CrosNetworkConfigTestHelper::SetupCrosNetworkConfig() {
network_device_handler_ = NetworkDeviceHandler::InitializeForTesting(
network_state_helper_.network_state_handler());
cros_network_config_impl_ = std::make_unique<CrosNetworkConfig>(
network_state_helper_.network_state_handler(),
network_device_handler_.get());
SetupService();
}
CrosNetworkConfigTestHelper::~CrosNetworkConfigTestHelper() = default;
void CrosNetworkConfigTestHelper::SetupServiceInterface() {
DCHECK(connector_);
connector_->BindInterface(chromeos::network_config::mojom::kServiceName,
......@@ -37,9 +52,6 @@ void CrosNetworkConfigTestHelper::SetupObserver() {
}
void CrosNetworkConfigTestHelper::SetupService() {
// Create a local service manager connector to handle requests.
service_manager::mojom::ConnectorRequest request;
connector_ = service_manager::Connector::Create(&request);
connector_->OverrideBinderForTesting(
service_manager::ServiceFilter::ByName(
chromeos::network_config::mojom::kServiceName),
......
......@@ -28,7 +28,11 @@ class CrosNetworkConfigTestObserver;
class CrosNetworkConfigTestHelper {
public:
// Default constructor for unit tests.
CrosNetworkConfigTestHelper();
// Constructor used by ash_shell_with_content providing the Shell connector.
explicit CrosNetworkConfigTestHelper(service_manager::Connector* connector);
~CrosNetworkConfigTestHelper();
// Binds |service_interface_ptr_|. Must be called before using
......@@ -45,12 +49,13 @@ class CrosNetworkConfigTestHelper {
mojom::CrosNetworkConfig* service_interface_ptr() {
return service_interface_ptr_.get();
}
service_manager::Connector* connector() { return connector_.get(); }
service_manager::Connector* connector() { return connector_; }
CrosNetworkConfigTestObserver* observer() { return observer_.get(); }
void FlushForTesting();
private:
void SetupCrosNetworkConfig();
void SetupService();
void AddBinding(mojo::ScopedMessagePipeHandle handle);
......@@ -59,8 +64,11 @@ class CrosNetworkConfigTestHelper {
std::unique_ptr<NetworkDeviceHandler> network_device_handler_;
std::unique_ptr<CrosNetworkConfig> cros_network_config_impl_;
// Service connector for testing.
std::unique_ptr<service_manager::Connector> connector_;
// Unowned pointer to the service connector.
service_manager::Connector* connector_;
// Owned connector for unit tests. |connector_| is set to the raw pointer.
std::unique_ptr<service_manager::Connector> owned_connector_;
// Interface to |cros_network_config_| through service connector.
mojom::CrosNetworkConfigPtr service_interface_ptr_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment