| <body> |
| <script src="../resources/document-interface-broker-helpers.js"></script> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings_lite.js"></script> |
| <script src="file:///gen/mojo/public/mojom/base/unguessable_token.mojom-lite.js"></script> |
| <script src="file:///gen/url/mojom/url.mojom-lite.js"></script> |
| <script src="file:///gen/third_party/blink/public/mojom/frame/frame_host_test_interface.mojom-lite.js"></script> |
| <script src="file:///gen/third_party/blink/public/mojom/frame/document_interface_broker.mojom-lite.js"></script> |
| <script> |
| 'use strict'; |
| |
| promise_test(async t => { |
| // Create a test implementation of FrameHostTestInterface |
| const frameHostTestImpl = new blink.mojom.FrameHostTestInterfaceCallbackRouter; |
| frameHostTestImpl.getName.addListener(() => ({ name: 'TestFrameHostTestImpl' })); |
| |
| const broker = new blink.mojom.DocumentInterfaceBrokerRemote( |
| Mojo.getDocumentInterfaceBrokerHandle()); |
| |
| const testInterfaceBeforeOverride = new blink.mojom.FrameHostTestInterfaceRemote; |
| broker.getFrameHostTestInterface(testInterfaceBeforeOverride.$.bindNewPipeAndPassReceiver()); |
| |
| setDocumentInterfaceBrokerOverrides({ getFrameHostTestInterface: request => { |
| frameHostTestImpl.$.bindHandle(request.handle); |
| }}); |
| |
| const testInterfaceAfterOverride = new blink.mojom.FrameHostTestInterfaceRemote; |
| broker.getFrameHostTestInterface(testInterfaceAfterOverride.$.bindNewPipeAndPassReceiver()); |
| |
| // Verify that RenderFrameHostImpl's implementation gets called without an override |
| let reply = await testInterfaceBeforeOverride.getName(); |
| assert_equals(reply.name, 'RenderFrameHostImpl'); |
| |
| // Verify that the test implementation gets called after the override |
| reply = await testInterfaceAfterOverride.getName(); |
| assert_equals(reply.name, 'TestFrameHostTestImpl'); |
| }, |
| 'Appropriate DocumentInterfaceBroker implementations are called before and after overriding'); |
| |
| </script> |
| </body> |
| </html> |