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") { ...@@ -1519,6 +1519,8 @@ static_library("ash_shell_lib_with_content") {
"//chromeos/dbus", "//chromeos/dbus",
"//chromeos/dbus/biod", "//chromeos/dbus/biod",
"//chromeos/dbus/power", "//chromeos/dbus/power",
"//chromeos/services/network_config/public/cpp:manifest",
"//chromeos/services/network_config/public/cpp:test_support",
"//chromeos/system", "//chromeos/system",
"//components/discardable_memory/public/interfaces", "//components/discardable_memory/public/interfaces",
"//components/services/font:lib", "//components/services/font:lib",
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "base/command_line.h" #include "base/command_line.h"
#include "base/run_loop.h" #include "base/run_loop.h"
#include "chromeos/dbus/biod/biod_client.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 "components/exo/file_helper.h"
#include "content/public/browser/context_factory.h" #include "content/public/browser/context_factory.h"
#include "content/public/browser/system_connector.h" #include "content/public/browser/system_connector.h"
...@@ -60,6 +61,9 @@ void ShellBrowserMainParts::PreMainMessageLoopRun() { ...@@ -60,6 +61,9 @@ void ShellBrowserMainParts::PreMainMessageLoopRun() {
browser_context_.reset(new content::ShellBrowserContext(false)); browser_context_.reset(new content::ShellBrowserContext(false));
ash_test_helper_ = std::make_unique<AshTestHelper>(); ash_test_helper_ = std::make_unique<AshTestHelper>();
network_config_helper_ =
std::make_unique<chromeos::network_config::CrosNetworkConfigTestHelper>(
content::GetSystemConnector());
AshTestHelper::InitParams init_params; AshTestHelper::InitParams init_params;
init_params.start_session = true; init_params.start_session = true;
......
...@@ -11,10 +11,16 @@ ...@@ -11,10 +11,16 @@
#include "content/public/browser/browser_main_parts.h" #include "content/public/browser/browser_main_parts.h"
#include "content/public/common/main_function_params.h" #include "content/public/common/main_function_params.h"
namespace chromeos {
namespace network_config {
class CrosNetworkConfigTestHelper;
} // namespace network_config
} // namespace chromeos
namespace content { namespace content {
class BrowserContext; class BrowserContext;
struct MainFunctionParams; struct MainFunctionParams;
} } // namespace content
namespace views { namespace views {
class ViewsDelegate; class ViewsDelegate;
...@@ -51,6 +57,8 @@ class ShellBrowserMainParts : public content::BrowserMainParts { ...@@ -51,6 +57,8 @@ class ShellBrowserMainParts : public content::BrowserMainParts {
example_session_controller_client_; example_session_controller_client_;
std::unique_ptr<ExampleAppListClient> example_app_list_client_; std::unique_ptr<ExampleAppListClient> example_app_list_client_;
std::unique_ptr<ash::AshTestHelper> ash_test_helper_; std::unique_ptr<ash::AshTestHelper> ash_test_helper_;
std::unique_ptr<chromeos::network_config::CrosNetworkConfigTestHelper>
network_config_helper_;
content::MainFunctionParams parameters_; content::MainFunctionParams parameters_;
DISALLOW_COPY_AND_ASSIGN(ShellBrowserMainParts); DISALLOW_COPY_AND_ASSIGN(ShellBrowserMainParts);
......
...@@ -17,6 +17,9 @@ ...@@ -17,6 +17,9 @@
#include "base/no_destructor.h" #include "base/no_destructor.h"
#include "base/stl_util.h" #include "base/stl_util.h"
#include "base/strings/utf_string_conversions.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/browser_context.h"
#include "content/public/browser/storage_partition.h" #include "content/public/browser/storage_partition.h"
#include "content/public/common/service_manager_connection.h" #include "content/public/common/service_manager_connection.h"
...@@ -37,6 +40,9 @@ const service_manager::Manifest& GetAshShellBrowserOverlayManifest() { ...@@ -37,6 +40,9 @@ const service_manager::Manifest& GetAshShellBrowserOverlayManifest() {
static base::NoDestructor<service_manager::Manifest> manifest{ static base::NoDestructor<service_manager::Manifest> manifest{
service_manager::ManifestBuilder() service_manager::ManifestBuilder()
.RequireCapability(device::mojom::kServiceName, "device:fingerprint") .RequireCapability(device::mojom::kServiceName, "device:fingerprint")
.RequireCapability(
chromeos::network_config::mojom::kServiceName,
chromeos::network_config::mojom::kNetworkConfigCapability)
.Build()}; .Build()};
return *manifest; return *manifest;
} }
...@@ -71,5 +77,12 @@ ShellContentBrowserClient::GetServiceManifestOverlay(base::StringPiece name) { ...@@ -71,5 +77,12 @@ ShellContentBrowserClient::GetServiceManifestOverlay(base::StringPiece name) {
return base::nullopt; return base::nullopt;
} }
std::vector<service_manager::Manifest>
ShellContentBrowserClient::GetExtraServiceManifests() {
return std::vector<service_manager::Manifest>({
chromeos::network_config::GetManifest(),
});
}
} // namespace shell } // namespace shell
} // namespace ash } // namespace ash
...@@ -29,6 +29,7 @@ class ShellContentBrowserClient : public content::ContentBrowserClient { ...@@ -29,6 +29,7 @@ class ShellContentBrowserClient : public content::ContentBrowserClient {
storage::OptionalQuotaSettingsCallback callback) override; storage::OptionalQuotaSettingsCallback callback) override;
base::Optional<service_manager::Manifest> GetServiceManifestOverlay( base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
base::StringPiece name) override; base::StringPiece name) override;
std::vector<service_manager::Manifest> GetExtraServiceManifests() override;
private: private:
DISALLOW_COPY_AND_ASSIGN(ShellContentBrowserClient); DISALLOW_COPY_AND_ASSIGN(ShellContentBrowserClient);
......
...@@ -14,16 +14,31 @@ namespace chromeos { ...@@ -14,16 +14,31 @@ namespace chromeos {
namespace network_config { namespace network_config {
CrosNetworkConfigTestHelper::CrosNetworkConfigTestHelper() { 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_device_handler_ = NetworkDeviceHandler::InitializeForTesting(
network_state_helper_.network_state_handler()); network_state_helper_.network_state_handler());
cros_network_config_impl_ = std::make_unique<CrosNetworkConfig>( cros_network_config_impl_ = std::make_unique<CrosNetworkConfig>(
network_state_helper_.network_state_handler(), network_state_helper_.network_state_handler(),
network_device_handler_.get()); network_device_handler_.get());
SetupService();
} }
CrosNetworkConfigTestHelper::~CrosNetworkConfigTestHelper() = default;
void CrosNetworkConfigTestHelper::SetupServiceInterface() { void CrosNetworkConfigTestHelper::SetupServiceInterface() {
DCHECK(connector_); DCHECK(connector_);
connector_->BindInterface(chromeos::network_config::mojom::kServiceName, connector_->BindInterface(chromeos::network_config::mojom::kServiceName,
...@@ -37,9 +52,6 @@ void CrosNetworkConfigTestHelper::SetupObserver() { ...@@ -37,9 +52,6 @@ void CrosNetworkConfigTestHelper::SetupObserver() {
} }
void CrosNetworkConfigTestHelper::SetupService() { 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( connector_->OverrideBinderForTesting(
service_manager::ServiceFilter::ByName( service_manager::ServiceFilter::ByName(
chromeos::network_config::mojom::kServiceName), chromeos::network_config::mojom::kServiceName),
......
...@@ -28,7 +28,11 @@ class CrosNetworkConfigTestObserver; ...@@ -28,7 +28,11 @@ class CrosNetworkConfigTestObserver;
class CrosNetworkConfigTestHelper { class CrosNetworkConfigTestHelper {
public: public:
// Default constructor for unit tests.
CrosNetworkConfigTestHelper(); CrosNetworkConfigTestHelper();
// Constructor used by ash_shell_with_content providing the Shell connector.
explicit CrosNetworkConfigTestHelper(service_manager::Connector* connector);
~CrosNetworkConfigTestHelper(); ~CrosNetworkConfigTestHelper();
// Binds |service_interface_ptr_|. Must be called before using // Binds |service_interface_ptr_|. Must be called before using
...@@ -45,12 +49,13 @@ class CrosNetworkConfigTestHelper { ...@@ -45,12 +49,13 @@ class CrosNetworkConfigTestHelper {
mojom::CrosNetworkConfig* service_interface_ptr() { mojom::CrosNetworkConfig* service_interface_ptr() {
return service_interface_ptr_.get(); return service_interface_ptr_.get();
} }
service_manager::Connector* connector() { return connector_.get(); } service_manager::Connector* connector() { return connector_; }
CrosNetworkConfigTestObserver* observer() { return observer_.get(); } CrosNetworkConfigTestObserver* observer() { return observer_.get(); }
void FlushForTesting(); void FlushForTesting();
private: private:
void SetupCrosNetworkConfig();
void SetupService(); void SetupService();
void AddBinding(mojo::ScopedMessagePipeHandle handle); void AddBinding(mojo::ScopedMessagePipeHandle handle);
...@@ -59,8 +64,11 @@ class CrosNetworkConfigTestHelper { ...@@ -59,8 +64,11 @@ class CrosNetworkConfigTestHelper {
std::unique_ptr<NetworkDeviceHandler> network_device_handler_; std::unique_ptr<NetworkDeviceHandler> network_device_handler_;
std::unique_ptr<CrosNetworkConfig> cros_network_config_impl_; std::unique_ptr<CrosNetworkConfig> cros_network_config_impl_;
// Service connector for testing. // Unowned pointer to the service connector.
std::unique_ptr<service_manager::Connector> 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. // Interface to |cros_network_config_| through service connector.
mojom::CrosNetworkConfigPtr service_interface_ptr_; 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