Commit e9ad91a2 authored by Henrique Ferreiro's avatar Henrique Ferreiro Committed by Commit Bot

Migrate cloud_print.mojom to the new Mojo types

Convert the implementation and all users of the
cloud_print::mojom::CloudPrint interface.

Bug: 955171
Change-Id: I7644ec5d0902cbf00c7b04a6c15a45eeff5e57e3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1816546Reviewed-by: default avatarRebekah Potter <rbpotter@chromium.org>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Commit-Queue: Henrique Ferreiro <hferreiro@igalia.com>
Cr-Commit-Position: refs/heads/master@{#700897}
parent c152a91f
...@@ -231,9 +231,10 @@ ServiceProcessControl* CloudPrintProxyService::GetServiceProcessControl() { ...@@ -231,9 +231,10 @@ ServiceProcessControl* CloudPrintProxyService::GetServiceProcessControl() {
} }
cloud_print::mojom::CloudPrint& CloudPrintProxyService::GetCloudPrintProxy() { cloud_print::mojom::CloudPrint& CloudPrintProxyService::GetCloudPrintProxy() {
if (!cloud_print_proxy_ || cloud_print_proxy_.encountered_error()) { if (!cloud_print_proxy_ || !cloud_print_proxy_.is_connected()) {
cloud_print_proxy_.reset();
GetServiceProcessControl()->remote_interfaces().GetInterface( GetServiceProcessControl()->remote_interfaces().GetInterface(
&cloud_print_proxy_); cloud_print_proxy_.BindNewPipeAndPassReceiver());
} }
return *cloud_print_proxy_; return *cloud_print_proxy_;
} }
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "chrome/common/cloud_print.mojom.h" #include "chrome/common/cloud_print.mojom.h"
#include "components/keyed_service/core/keyed_service.h" #include "components/keyed_service/core/keyed_service.h"
#include "components/prefs/pref_change_registrar.h" #include "components/prefs/pref_change_registrar.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "printing/buildflags/buildflags.h" #include "printing/buildflags/buildflags.h"
#if !BUILDFLAG(ENABLE_PRINT_PREVIEW) || defined(OS_CHROMEOS) #if !BUILDFLAG(ENABLE_PRINT_PREVIEW) || defined(OS_CHROMEOS)
...@@ -98,7 +99,7 @@ class CloudPrintProxyService : public KeyedService { ...@@ -98,7 +99,7 @@ class CloudPrintProxyService : public KeyedService {
// For watching for connector policy changes. // For watching for connector policy changes.
PrefChangeRegistrar pref_change_registrar_; PrefChangeRegistrar pref_change_registrar_;
cloud_print::mojom::CloudPrintPtr cloud_print_proxy_; mojo::Remote<cloud_print::mojom::CloudPrint> cloud_print_proxy_;
base::WeakPtrFactory<CloudPrintProxyService> weak_factory_{this}; base::WeakPtrFactory<CloudPrintProxyService> weak_factory_{this};
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <memory> #include <memory>
#include <string> #include <string>
#include <utility>
#include "base/bind.h" #include "base/bind.h"
#include "base/command_line.h" #include "base/command_line.h"
...@@ -29,7 +30,8 @@ ...@@ -29,7 +30,8 @@
#include "components/sync_preferences/testing_pref_service_syncable.h" #include "components/sync_preferences/testing_pref_service_syncable.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/test/browser_task_environment.h" #include "content/public/test/browser_task_environment.h"
#include "mojo/public/cpp/bindings/binding_set.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/receiver_set.h"
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
...@@ -92,8 +94,9 @@ void MockServiceProcessControl::SetConnectSuccessMockExpectations() { ...@@ -92,8 +94,9 @@ void MockServiceProcessControl::SetConnectSuccessMockExpectations() {
class MockCloudPrintProxy : public cloud_print::mojom::CloudPrint { class MockCloudPrintProxy : public cloud_print::mojom::CloudPrint {
public: public:
void AddBinding(cloud_print::mojom::CloudPrintRequest request) { void AddReceiver(
bindings_.AddBinding(this, std::move(request)); mojo::PendingReceiver<cloud_print::mojom::CloudPrint> receiver) {
receivers_.Add(this, std::move(receiver));
} }
void ReturnDisabledInfo() { void ReturnDisabledInfo() {
...@@ -109,11 +112,11 @@ class MockCloudPrintProxy : public cloud_print::mojom::CloudPrint { ...@@ -109,11 +112,11 @@ class MockCloudPrintProxy : public cloud_print::mojom::CloudPrint {
} }
bool has_been_enabled() { bool has_been_enabled() {
bindings_.FlushForTesting(); receivers_.FlushForTesting();
return enabled_; return enabled_;
} }
bool has_been_disabled() { bool has_been_disabled() {
bindings_.FlushForTesting(); receivers_.FlushForTesting();
return disabled_; return disabled_;
} }
...@@ -134,7 +137,7 @@ class MockCloudPrintProxy : public cloud_print::mojom::CloudPrint { ...@@ -134,7 +137,7 @@ class MockCloudPrintProxy : public cloud_print::mojom::CloudPrint {
enabled_ = true; enabled_ = true;
} }
mojo::BindingSet<cloud_print::mojom::CloudPrint> bindings_; mojo::ReceiverSet<cloud_print::mojom::CloudPrint> receivers_;
bool cloud_proxy_info_expectation_set_ = false; bool cloud_proxy_info_expectation_set_ = false;
cloud_print::CloudPrintProxyInfo cloud_proxy_info_; cloud_print::CloudPrintProxyInfo cloud_proxy_info_;
...@@ -193,8 +196,9 @@ class TestCloudPrintProxyService : public CloudPrintProxyService { ...@@ -193,8 +196,9 @@ class TestCloudPrintProxyService : public CloudPrintProxyService {
private: private:
void HandleCloudPrintProxyRequest(mojo::ScopedMessagePipeHandle handle) { void HandleCloudPrintProxyRequest(mojo::ScopedMessagePipeHandle handle) {
mock_proxy_.AddBinding( mock_proxy_.AddReceiver(
cloud_print::mojom::CloudPrintRequest(std::move(handle))); mojo::PendingReceiver<cloud_print::mojom::CloudPrint>(
std::move(handle)));
} }
MockServiceProcessControl process_control_; MockServiceProcessControl process_control_;
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include "content/public/common/content_paths.h" #include "content/public/common/content_paths.h"
#include "content/public/common/content_switches.h" #include "content/public/common/content_switches.h"
#include "content/public/test/test_utils.h" #include "content/public/test/test_utils.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
#if defined(OS_WIN) #if defined(OS_WIN)
...@@ -174,9 +175,9 @@ IN_PROC_BROWSER_TEST_F(RealServiceProcessControlBrowserTest, ...@@ -174,9 +175,9 @@ IN_PROC_BROWSER_TEST_F(RealServiceProcessControlBrowserTest,
// Make sure we are connected to the service process. // Make sure we are connected to the service process.
ASSERT_TRUE(ServiceProcessControl::GetInstance()->IsConnected()); ASSERT_TRUE(ServiceProcessControl::GetInstance()->IsConnected());
cloud_print::mojom::CloudPrintPtr cloud_print_proxy; mojo::Remote<cloud_print::mojom::CloudPrint> cloud_print_proxy;
ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface( ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface(
&cloud_print_proxy); cloud_print_proxy.BindNewPipeAndPassReceiver());
base::RunLoop run_loop; base::RunLoop run_loop;
cloud_print_proxy->GetCloudPrintProxyInfo( cloud_print_proxy->GetCloudPrintProxyInfo(
base::BindOnce([](base::OnceClosure done, bool, const std::string&, base::BindOnce([](base::OnceClosure done, bool, const std::string&,
...@@ -193,9 +194,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, LaunchAndIPC) { ...@@ -193,9 +194,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, LaunchAndIPC) {
// Make sure we are connected to the service process. // Make sure we are connected to the service process.
ASSERT_TRUE(ServiceProcessControl::GetInstance()->IsConnected()); ASSERT_TRUE(ServiceProcessControl::GetInstance()->IsConnected());
cloud_print::mojom::CloudPrintPtr cloud_print_proxy; mojo::Remote<cloud_print::mojom::CloudPrint> cloud_print_proxy;
ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface( ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface(
&cloud_print_proxy); cloud_print_proxy.BindNewPipeAndPassReceiver());
base::RunLoop run_loop; base::RunLoop run_loop;
cloud_print_proxy->GetCloudPrintProxyInfo( cloud_print_proxy->GetCloudPrintProxyInfo(
base::BindOnce([](base::OnceClosure done, bool, const std::string&, base::BindOnce([](base::OnceClosure done, bool, const std::string&,
...@@ -220,14 +221,15 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, ...@@ -220,14 +221,15 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest,
// Make sure we are connected to the service process. // Make sure we are connected to the service process.
ASSERT_TRUE(ServiceProcessControl::GetInstance()->IsConnected()); ASSERT_TRUE(ServiceProcessControl::GetInstance()->IsConnected());
// Send an IPC that will keep the service process alive after we disconnect. // Send an IPC that will keep the service process alive after we disconnect.
cloud_print::mojom::CloudPrintPtr cloud_print_proxy; mojo::Remote<cloud_print::mojom::CloudPrint> cloud_print_proxy;
ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface( ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface(
&cloud_print_proxy); cloud_print_proxy.BindNewPipeAndPassReceiver());
cloud_print_proxy->EnableCloudPrintProxyWithRobot( cloud_print_proxy->EnableCloudPrintProxyWithRobot(
"", "", "", base::Value(base::Value::Type::DICTIONARY)); "", "", "", base::Value(base::Value::Type::DICTIONARY));
cloud_print_proxy.reset();
ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface( ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface(
&cloud_print_proxy); cloud_print_proxy.BindNewPipeAndPassReceiver());
{ {
base::RunLoop run_loop; base::RunLoop run_loop;
cloud_print_proxy->GetCloudPrintProxyInfo( cloud_print_proxy->GetCloudPrintProxyInfo(
...@@ -246,8 +248,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, ...@@ -246,8 +248,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest,
run_loop.Run(); run_loop.Run();
} }
cloud_print_proxy.reset();
ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface( ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface(
&cloud_print_proxy); cloud_print_proxy.BindNewPipeAndPassReceiver());
{ {
base::RunLoop run_loop; base::RunLoop run_loop;
cloud_print_proxy->GetCloudPrintProxyInfo( cloud_print_proxy->GetCloudPrintProxyInfo(
...@@ -275,9 +278,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, MAYBE_LaunchTwice) { ...@@ -275,9 +278,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, MAYBE_LaunchTwice) {
// Make sure we are connected to the service process. // Make sure we are connected to the service process.
ASSERT_TRUE(ServiceProcessControl::GetInstance()->IsConnected()); ASSERT_TRUE(ServiceProcessControl::GetInstance()->IsConnected());
cloud_print::mojom::CloudPrintPtr cloud_print_proxy; mojo::Remote<cloud_print::mojom::CloudPrint> cloud_print_proxy;
ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface( ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface(
&cloud_print_proxy); cloud_print_proxy.BindNewPipeAndPassReceiver());
{ {
base::RunLoop run_loop; base::RunLoop run_loop;
cloud_print_proxy->GetCloudPrintProxyInfo( cloud_print_proxy->GetCloudPrintProxyInfo(
...@@ -290,8 +293,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, MAYBE_LaunchTwice) { ...@@ -290,8 +293,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, MAYBE_LaunchTwice) {
// Launch the service process again. // Launch the service process again.
LaunchServiceProcessControlAndWait(); LaunchServiceProcessControlAndWait();
ASSERT_TRUE(ServiceProcessControl::GetInstance()->IsConnected()); ASSERT_TRUE(ServiceProcessControl::GetInstance()->IsConnected());
cloud_print_proxy.reset();
ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface( ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface(
&cloud_print_proxy); cloud_print_proxy.BindNewPipeAndPassReceiver());
{ {
base::RunLoop run_loop; base::RunLoop run_loop;
cloud_print_proxy->GetCloudPrintProxyInfo( cloud_print_proxy->GetCloudPrintProxyInfo(
...@@ -455,9 +459,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, StopViaWmQuit) { ...@@ -455,9 +459,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, StopViaWmQuit) {
// Make sure we are connected to the service process. // Make sure we are connected to the service process.
ASSERT_TRUE(ServiceProcessControl::GetInstance()->IsConnected()); ASSERT_TRUE(ServiceProcessControl::GetInstance()->IsConnected());
cloud_print::mojom::CloudPrintPtr cloud_print_proxy; mojo::Remote<cloud_print::mojom::CloudPrint> cloud_print_proxy;
ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface( ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface(
&cloud_print_proxy); cloud_print_proxy.BindNewPipeAndPassReceiver());
base::RunLoop run_loop; base::RunLoop run_loop;
cloud_print_proxy->GetCloudPrintProxyInfo( cloud_print_proxy->GetCloudPrintProxyInfo(
base::BindOnce([](base::OnceClosure done, bool, const std::string&, base::BindOnce([](base::OnceClosure done, bool, const std::string&,
......
...@@ -4,10 +4,12 @@ ...@@ -4,10 +4,12 @@
#include "chrome/service/cloud_print/cloud_print_message_handler.h" #include "chrome/service/cloud_print/cloud_print_message_handler.h"
#include <memory>
#include <utility>
#include <vector> #include <vector>
#include "chrome/common/cloud_print/cloud_print_proxy_info.h" #include "chrome/common/cloud_print/cloud_print_proxy_info.h"
#include "mojo/public/cpp/bindings/strong_binding.h" #include "mojo/public/cpp/bindings/self_owned_receiver.h"
namespace cloud_print { namespace cloud_print {
...@@ -22,10 +24,10 @@ CloudPrintMessageHandler::~CloudPrintMessageHandler() = default; ...@@ -22,10 +24,10 @@ CloudPrintMessageHandler::~CloudPrintMessageHandler() = default;
// static // static
void CloudPrintMessageHandler::Create( void CloudPrintMessageHandler::Create(
CloudPrintProxy::Provider* proxy_provider, CloudPrintProxy::Provider* proxy_provider,
cloud_print::mojom::CloudPrintRequest request) { mojo::PendingReceiver<cloud_print::mojom::CloudPrint> receiver) {
mojo::MakeStrongBinding( mojo::MakeSelfOwnedReceiver(
std::make_unique<CloudPrintMessageHandler>(proxy_provider), std::make_unique<CloudPrintMessageHandler>(proxy_provider),
std::move(request)); std::move(receiver));
} }
void CloudPrintMessageHandler::EnableCloudPrintProxyWithRobot( void CloudPrintMessageHandler::EnableCloudPrintProxyWithRobot(
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "chrome/common/cloud_print.mojom.h" #include "chrome/common/cloud_print.mojom.h"
#include "chrome/service/cloud_print/cloud_print_proxy.h" #include "chrome/service/cloud_print/cloud_print_proxy.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
namespace cloud_print { namespace cloud_print {
...@@ -19,8 +20,9 @@ class CloudPrintMessageHandler : public cloud_print::mojom::CloudPrint { ...@@ -19,8 +20,9 @@ class CloudPrintMessageHandler : public cloud_print::mojom::CloudPrint {
explicit CloudPrintMessageHandler(CloudPrintProxy::Provider* proxy_provider); explicit CloudPrintMessageHandler(CloudPrintProxy::Provider* proxy_provider);
~CloudPrintMessageHandler() override; ~CloudPrintMessageHandler() override;
static void Create(CloudPrintProxy::Provider* proxy_provider, static void Create(
cloud_print::mojom::CloudPrintRequest request); CloudPrintProxy::Provider* proxy_provider,
mojo::PendingReceiver<cloud_print::mojom::CloudPrint> receiver);
private: private:
// cloud_print::mojom::CloudPrintProxy. // cloud_print::mojom::CloudPrintProxy.
......
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