blob: d307c3c0cc33c2e1515eaa346c5d0e1a675df6fb [file] [log] [blame]
// Copyright 2018 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.
package org.chromium.support_lib_glue;
import org.chromium.support_lib_boundary.WebMessageBoundaryInterface;
import org.chromium.support_lib_boundary.WebMessageCallbackBoundaryInterface;
import org.chromium.support_lib_boundary.WebMessagePortBoundaryInterface;
import org.chromium.support_lib_boundary.util.BoundaryInterfaceReflectionUtil;
import org.chromium.support_lib_boundary.util.Features;
/**
* Adapter working on top of WebMessageCallbackBoundaryInterface to provide methods using boundary
* interfaces instead of InvocationHandlers as parameters.
*/
class SupportLibWebMessageCallbackAdapter {
WebMessageCallbackBoundaryInterface mImpl;
SupportLibWebMessageCallbackAdapter(WebMessageCallbackBoundaryInterface impl) {
mImpl = impl;
}
public void onMessage(
WebMessagePortBoundaryInterface port, WebMessageBoundaryInterface message) {
// Ensure WebMessageCallbackCompat.onMessage() is supported by the support library before
// calling it.
String[] supportedFeatures = mImpl.getSupportedFeatures();
if (BoundaryInterfaceReflectionUtil.containsFeature(
supportedFeatures, Features.WEB_MESSAGE_CALLBACK_ON_MESSAGE)) {
mImpl.onMessage(BoundaryInterfaceReflectionUtil.createInvocationHandlerFor(port),
BoundaryInterfaceReflectionUtil.createInvocationHandlerFor(message));
}
}
}