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() {
}
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(
&cloud_print_proxy_);
cloud_print_proxy_.BindNewPipeAndPassReceiver());
}
return *cloud_print_proxy_;
}
......
......@@ -17,6 +17,7 @@
#include "chrome/common/cloud_print.mojom.h"
#include "components/keyed_service/core/keyed_service.h"
#include "components/prefs/pref_change_registrar.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "printing/buildflags/buildflags.h"
#if !BUILDFLAG(ENABLE_PRINT_PREVIEW) || defined(OS_CHROMEOS)
......@@ -98,7 +99,7 @@ class CloudPrintProxyService : public KeyedService {
// For watching for connector policy changes.
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};
......
......@@ -8,6 +8,7 @@
#include <memory>
#include <string>
#include <utility>
#include "base/bind.h"
#include "base/command_line.h"
......@@ -29,7 +30,8 @@
#include "components/sync_preferences/testing_pref_service_syncable.h"
#include "content/public/browser/browser_thread.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/gtest/include/gtest/gtest.h"
......@@ -92,8 +94,9 @@ void MockServiceProcessControl::SetConnectSuccessMockExpectations() {
class MockCloudPrintProxy : public cloud_print::mojom::CloudPrint {
public:
void AddBinding(cloud_print::mojom::CloudPrintRequest request) {
bindings_.AddBinding(this, std::move(request));
void AddReceiver(
mojo::PendingReceiver<cloud_print::mojom::CloudPrint> receiver) {
receivers_.Add(this, std::move(receiver));
}
void ReturnDisabledInfo() {
......@@ -109,11 +112,11 @@ class MockCloudPrintProxy : public cloud_print::mojom::CloudPrint {
}
bool has_been_enabled() {
bindings_.FlushForTesting();
receivers_.FlushForTesting();
return enabled_;
}
bool has_been_disabled() {
bindings_.FlushForTesting();
receivers_.FlushForTesting();
return disabled_;
}
......@@ -134,7 +137,7 @@ class MockCloudPrintProxy : public cloud_print::mojom::CloudPrint {
enabled_ = true;
}
mojo::BindingSet<cloud_print::mojom::CloudPrint> bindings_;
mojo::ReceiverSet<cloud_print::mojom::CloudPrint> receivers_;
bool cloud_proxy_info_expectation_set_ = false;
cloud_print::CloudPrintProxyInfo cloud_proxy_info_;
......@@ -193,8 +196,9 @@ class TestCloudPrintProxyService : public CloudPrintProxyService {
private:
void HandleCloudPrintProxyRequest(mojo::ScopedMessagePipeHandle handle) {
mock_proxy_.AddBinding(
cloud_print::mojom::CloudPrintRequest(std::move(handle)));
mock_proxy_.AddReceiver(
mojo::PendingReceiver<cloud_print::mojom::CloudPrint>(
std::move(handle)));
}
MockServiceProcessControl process_control_;
......
......@@ -30,6 +30,7 @@
#include "content/public/common/content_paths.h"
#include "content/public/common/content_switches.h"
#include "content/public/test/test_utils.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "testing/gmock/include/gmock/gmock.h"
#if defined(OS_WIN)
......@@ -174,9 +175,9 @@ IN_PROC_BROWSER_TEST_F(RealServiceProcessControlBrowserTest,
// Make sure we are connected to the service process.
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(
&cloud_print_proxy);
cloud_print_proxy.BindNewPipeAndPassReceiver());
base::RunLoop run_loop;
cloud_print_proxy->GetCloudPrintProxyInfo(
base::BindOnce([](base::OnceClosure done, bool, const std::string&,
......@@ -193,9 +194,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, LaunchAndIPC) {
// Make sure we are connected to the service process.
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(
&cloud_print_proxy);
cloud_print_proxy.BindNewPipeAndPassReceiver());
base::RunLoop run_loop;
cloud_print_proxy->GetCloudPrintProxyInfo(
base::BindOnce([](base::OnceClosure done, bool, const std::string&,
......@@ -220,14 +221,15 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest,
// Make sure we are connected to the service process.
ASSERT_TRUE(ServiceProcessControl::GetInstance()->IsConnected());
// 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(
&cloud_print_proxy);
cloud_print_proxy.BindNewPipeAndPassReceiver());
cloud_print_proxy->EnableCloudPrintProxyWithRobot(
"", "", "", base::Value(base::Value::Type::DICTIONARY));
cloud_print_proxy.reset();
ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface(
&cloud_print_proxy);
cloud_print_proxy.BindNewPipeAndPassReceiver());
{
base::RunLoop run_loop;
cloud_print_proxy->GetCloudPrintProxyInfo(
......@@ -246,8 +248,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest,
run_loop.Run();
}
cloud_print_proxy.reset();
ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface(
&cloud_print_proxy);
cloud_print_proxy.BindNewPipeAndPassReceiver());
{
base::RunLoop run_loop;
cloud_print_proxy->GetCloudPrintProxyInfo(
......@@ -275,9 +278,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, MAYBE_LaunchTwice) {
// Make sure we are connected to the service process.
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(
&cloud_print_proxy);
cloud_print_proxy.BindNewPipeAndPassReceiver());
{
base::RunLoop run_loop;
cloud_print_proxy->GetCloudPrintProxyInfo(
......@@ -290,8 +293,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, MAYBE_LaunchTwice) {
// Launch the service process again.
LaunchServiceProcessControlAndWait();
ASSERT_TRUE(ServiceProcessControl::GetInstance()->IsConnected());
cloud_print_proxy.reset();
ServiceProcessControl::GetInstance()->remote_interfaces().GetInterface(
&cloud_print_proxy);
cloud_print_proxy.BindNewPipeAndPassReceiver());
{
base::RunLoop run_loop;
cloud_print_proxy->GetCloudPrintProxyInfo(
......@@ -455,9 +459,9 @@ IN_PROC_BROWSER_TEST_F(ServiceProcessControlBrowserTest, StopViaWmQuit) {
// Make sure we are connected to the service process.
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(
&cloud_print_proxy);
cloud_print_proxy.BindNewPipeAndPassReceiver());
base::RunLoop run_loop;
cloud_print_proxy->GetCloudPrintProxyInfo(
base::BindOnce([](base::OnceClosure done, bool, const std::string&,
......
......@@ -4,10 +4,12 @@
#include "chrome/service/cloud_print/cloud_print_message_handler.h"
#include <memory>
#include <utility>
#include <vector>
#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 {
......@@ -22,10 +24,10 @@ CloudPrintMessageHandler::~CloudPrintMessageHandler() = default;
// static
void CloudPrintMessageHandler::Create(
CloudPrintProxy::Provider* proxy_provider,
cloud_print::mojom::CloudPrintRequest request) {
mojo::MakeStrongBinding(
mojo::PendingReceiver<cloud_print::mojom::CloudPrint> receiver) {
mojo::MakeSelfOwnedReceiver(
std::make_unique<CloudPrintMessageHandler>(proxy_provider),
std::move(request));
std::move(receiver));
}
void CloudPrintMessageHandler::EnableCloudPrintProxyWithRobot(
......
......@@ -10,6 +10,7 @@
#include "base/macros.h"
#include "chrome/common/cloud_print.mojom.h"
#include "chrome/service/cloud_print/cloud_print_proxy.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
namespace cloud_print {
......@@ -19,8 +20,9 @@ class CloudPrintMessageHandler : public cloud_print::mojom::CloudPrint {
explicit CloudPrintMessageHandler(CloudPrintProxy::Provider* proxy_provider);
~CloudPrintMessageHandler() override;
static void Create(CloudPrintProxy::Provider* proxy_provider,
cloud_print::mojom::CloudPrintRequest request);
static void Create(
CloudPrintProxy::Provider* proxy_provider,
mojo::PendingReceiver<cloud_print::mojom::CloudPrint> receiver);
private:
// 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