blob: b80921d23e63704ac9d4f0dc7b6282cfe25dd8da [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/bind.h"
#include "base/callback.h"
#include "mojo/public/cpp/bindings/tests/module_to_downgrade.test-mojom.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace mojo {
namespace test {
namespace mojom_types_downgrader_unittest {
class DowngradedTestInterfaceImpl : public mojom::DowngradedTestInterface {
public:
DowngradedTestInterfaceImpl() = default;
~DowngradedTestInterfaceImpl() override = default;
void InterfaceRequest(mojom::FooRequest request) override {}
void InterfacePtr(mojom::FooPtr ptr) override {}
void AssociatedInterfacePtrInfo(
mojom::FooAssociatedPtrInfo associated_ptr_info) override {}
void AssociatedInterfaceRequest(
mojom::FooAssociatedRequest associated_request) override {}
void PendingReceiver(mojom::FooRequest receiver) override {}
void PendingRemote(mojom::FooPtr remote) override {}
void PendingAssociatedReceiver(
mojom::FooAssociatedRequest associated_remote) override {}
void PendingAssociatedRemote(
mojom::FooAssociatedPtrInfo associated_receiver) override {}
void MultipleParams2(mojom::FooPtr remote,
mojom::FooRequest receiver) override {}
void MultipleParams3(mojom::FooPtr remote,
mojom::FooRequest receiver,
mojom::FooAssociatedPtrInfo associated_remote) override {
}
void MultipleParams4(
mojom::FooPtr remote,
mojom::FooRequest receiver,
mojom::FooAssociatedPtrInfo associated_remote,
mojom::FooAssociatedRequest associated_receiver) override {}
void MethodWithResponseCallbackOneLine(
mojom::FooPtr data,
MethodWithResponseCallbackOneLineCallback callback) override {}
void MethodWithResponseCallbackTwoLines(
mojom::FooPtr data,
MethodWithResponseCallbackTwoLinesCallback callback) override {}
void OddSpaces(mojom::FooPtr remote, mojom::FooRequest receiver) override {}
void OddSpacesAndLineBreak(mojom::FooPtr remote,
mojom::FooRequest receiver) override {}
};
using DowngradedInterfaceTest = testing::Test;
TEST_F(DowngradedInterfaceTest, DowngradedInterfaceCompiles) {
// Simply check that this test compiles (it will fail to compile if the
// mojom_types_downgrader.py script failed to produce the right output).
DowngradedTestInterfaceImpl test;
// Methods already declared with the old types in the mojom interface.
base::OnceCallback<void(mojom::FooRequest)> foo_request_callback =
base::BindOnce(&mojom_types_downgrader_unittest::mojom::
DowngradedTestInterface::InterfaceRequest,
base::Unretained(&test));
base::OnceCallback<void(mojom::FooPtr)> foo_ptr_callback =
base::BindOnce(&mojom_types_downgrader_unittest::mojom::
DowngradedTestInterface::InterfacePtr,
base::Unretained(&test));
base::OnceCallback<void(mojom::FooAssociatedPtrInfo)>
foo_associated_ptr_info_callback = base::BindOnce(
&mojom_types_downgrader_unittest::mojom::DowngradedTestInterface::
AssociatedInterfacePtrInfo,
base::Unretained(&test));
base::OnceCallback<void(mojom::FooAssociatedRequest)>
foo_associated_request_callback = base::BindOnce(
&mojom_types_downgrader_unittest::mojom::DowngradedTestInterface::
AssociatedInterfaceRequest,
base::Unretained(&test));
// Methods declared with the new types in the mojom interface. Note that these
// assignments won't compile unless the module_to_downgrade.test-mojom has
// been properly downgraded via the mojom_types_downgrader.py script.
base::OnceCallback<void(mojom::FooRequest)> foo_pending_receiver_callback =
base::BindOnce(&mojom_types_downgrader_unittest::mojom::
DowngradedTestInterface::PendingReceiver,
base::Unretained(&test));
base::OnceCallback<void(mojom::FooPtr)> foo_pending_remote_callback =
base::BindOnce(&mojom_types_downgrader_unittest::mojom::
DowngradedTestInterface::PendingRemote,
base::Unretained(&test));
base::OnceCallback<void(mojom::FooAssociatedRequest)>
foo_pending_associated_receiver_callback =
base::BindOnce(&mojom_types_downgrader_unittest::mojom::
DowngradedTestInterface::PendingAssociatedReceiver,
base::Unretained(&test));
base::OnceCallback<void(mojom::FooAssociatedPtrInfo)>
foo_pending_associated_remote_callback =
base::BindOnce(&mojom_types_downgrader_unittest::mojom::
DowngradedTestInterface::PendingAssociatedRemote,
base::Unretained(&test));
}
} // namespace mojom_types_downgrader_unittest
} // namespace test
} // namespace mojo