Commit 7205a856 authored by Donna Wu's avatar Donna Wu Committed by Commit Bot

Make clients bindings associated for WebUsbService.

Bug: 699790
Change-Id: I7fd6e119db118da8a00810e1015a4464d1a00cc4
Reviewed-on: https://chromium-review.googlesource.com/1224971Reviewed-by: default avatarReilly Grant <reillyg@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Donna Wu <donna.wu@intel.com>
Cr-Commit-Position: refs/heads/master@{#592682}
parent 483db096
......@@ -127,8 +127,12 @@ void WebUsbServiceImpl::GetPermission(
}
void WebUsbServiceImpl::SetClient(
device::mojom::UsbDeviceManagerClientPtr client) {
clients_.AddPtr(std::move(client));
device::mojom::UsbDeviceManagerClientAssociatedPtrInfo client) {
DCHECK(client);
device::mojom::UsbDeviceManagerClientAssociatedPtr client_ptr;
client_ptr.Bind(std::move(client));
clients_.AddPtr(std::move(client_ptr));
}
void WebUsbServiceImpl::OnDeviceAdded(scoped_refptr<device::UsbDevice> device) {
......
......@@ -61,7 +61,8 @@ class WebUsbServiceImpl : public blink::mojom::WebUsbService,
void GetPermission(
std::vector<device::mojom::UsbDeviceFilterPtr> device_filters,
GetPermissionCallback callback) override;
void SetClient(device::mojom::UsbDeviceManagerClientPtr client) override;
void SetClient(
device::mojom::UsbDeviceManagerClientAssociatedPtrInfo client) override;
void OnGetDevices(
GetDevicesCallback callback,
......@@ -85,7 +86,8 @@ class WebUsbServiceImpl : public blink::mojom::WebUsbService,
// Used to bind with Blink.
mojo::BindingSet<blink::mojom::WebUsbService> bindings_;
mojo::InterfacePtrSet<device::mojom::UsbDeviceManagerClient> clients_;
mojo::AssociatedInterfacePtrSet<device::mojom::UsbDeviceManagerClient>
clients_;
// Binding used to connect with USB devices for opened/closed events.
mojo::BindingSet<device::mojom::UsbDeviceClient> device_client_bindings_;
......
......@@ -23,7 +23,7 @@
#include "device/usb/mock_usb_service.h"
#include "device/usb/mojo/type_converters.h"
#include "device/usb/public/mojom/device.mojom.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/associated_binding.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
......@@ -34,7 +34,7 @@ using blink::mojom::WebUsbServicePtr;
using device::mojom::UsbDeviceInfo;
using device::mojom::UsbDeviceInfoPtr;
using device::mojom::UsbDeviceManagerClient;
using device::mojom::UsbDeviceManagerClientPtr;
using device::mojom::UsbDeviceManagerClientAssociatedPtrInfo;
using device::MockUsbDevice;
using device::UsbDevice;
......@@ -87,8 +87,8 @@ class MockDeviceManagerClient : public UsbDeviceManagerClient {
MockDeviceManagerClient() : binding_(this) {}
~MockDeviceManagerClient() override = default;
UsbDeviceManagerClientPtr CreateInterfacePtrAndBind() {
UsbDeviceManagerClientPtr client;
UsbDeviceManagerClientAssociatedPtrInfo CreateInterfacePtrAndBind() {
UsbDeviceManagerClientAssociatedPtrInfo client;
binding_.Bind(mojo::MakeRequest(&client));
return client;
}
......@@ -104,7 +104,7 @@ class MockDeviceManagerClient : public UsbDeviceManagerClient {
}
private:
mojo::Binding<UsbDeviceManagerClient> binding_;
mojo::AssociatedBinding<UsbDeviceManagerClient> binding_;
};
void ExpectDevicesAndThen(const std::set<std::string>& expected_guids,
......
......@@ -46,25 +46,6 @@
this[field] = fields[field];
}
};
WebUsbService_GetDevices_Params.generate = function(generator_) {
var generated = new WebUsbService_GetDevices_Params;
return generated;
};
WebUsbService_GetDevices_Params.prototype.mutate = function(mutator_) {
return this;
};
WebUsbService_GetDevices_Params.prototype.getHandleDeps = function() {
var handles = [];
return handles;
};
WebUsbService_GetDevices_Params.prototype.setHandles = function() {
this.setHandlesInternal_(arguments, 0);
};
WebUsbService_GetDevices_Params.prototype.setHandlesInternal_ = function(handles, idx) {
return idx;
};
WebUsbService_GetDevices_Params.validate = function(messageValidator, offset) {
var err;
......@@ -112,33 +93,6 @@
this[field] = fields[field];
}
};
WebUsbService_GetDevices_ResponseParams.generate = function(generator_) {
var generated = new WebUsbService_GetDevices_ResponseParams;
generated.results = generator_.generateArray(function() {
return generator_.generateStruct(device.mojom.UsbDeviceInfo, false);
});
return generated;
};
WebUsbService_GetDevices_ResponseParams.prototype.mutate = function(mutator_) {
if (mutator_.chooseMutateField()) {
this.results = mutator_.mutateArray(this.results, function(val) {
return mutator_.mutateStruct(val, device.mojom.UsbDeviceInfo, false);
});
}
return this;
};
WebUsbService_GetDevices_ResponseParams.prototype.getHandleDeps = function() {
var handles = [];
return handles;
};
WebUsbService_GetDevices_ResponseParams.prototype.setHandles = function() {
this.setHandlesInternal_(arguments, 0);
};
WebUsbService_GetDevices_ResponseParams.prototype.setHandlesInternal_ = function(handles, idx) {
return idx;
};
WebUsbService_GetDevices_ResponseParams.validate = function(messageValidator, offset) {
var err;
......@@ -195,37 +149,6 @@
this[field] = fields[field];
}
};
WebUsbService_GetDevice_Params.generate = function(generator_) {
var generated = new WebUsbService_GetDevice_Params;
generated.guid = generator_.generateString(false);
generated.deviceRequestd = generator_.generateInterfaceRequest("device.mojom.UsbDevice", false);
return generated;
};
WebUsbService_GetDevice_Params.prototype.mutate = function(mutator_) {
if (mutator_.chooseMutateField()) {
this.guid = mutator_.mutateString(this.guid, false);
}
if (mutator_.chooseMutateField()) {
this.deviceRequestd = mutator_.mutateInterfaceRequest(this.deviceRequestd, "device.mojom.UsbDevice", false);
}
return this;
};
WebUsbService_GetDevice_Params.prototype.getHandleDeps = function() {
var handles = [];
if (this.deviceRequestd !== null) {
Array.prototype.push.apply(handles, ["device.mojom.UsbDeviceRequest"]);
}
return handles;
};
WebUsbService_GetDevice_Params.prototype.setHandles = function() {
this.setHandlesInternal_(arguments, 0);
};
WebUsbService_GetDevice_Params.prototype.setHandlesInternal_ = function(handles, idx) {
this.deviceRequestd = handles[idx++];;
return idx;
};
WebUsbService_GetDevice_Params.validate = function(messageValidator, offset) {
var err;
......@@ -297,33 +220,6 @@
this[field] = fields[field];
}
};
WebUsbService_GetPermission_Params.generate = function(generator_) {
var generated = new WebUsbService_GetPermission_Params;
generated.deviceFilters = generator_.generateArray(function() {
return generator_.generateStruct(device.mojom.UsbDeviceFilter, false);
});
return generated;
};
WebUsbService_GetPermission_Params.prototype.mutate = function(mutator_) {
if (mutator_.chooseMutateField()) {
this.deviceFilters = mutator_.mutateArray(this.deviceFilters, function(val) {
return mutator_.mutateStruct(val, device.mojom.UsbDeviceFilter, false);
});
}
return this;
};
WebUsbService_GetPermission_Params.prototype.getHandleDeps = function() {
var handles = [];
return handles;
};
WebUsbService_GetPermission_Params.prototype.setHandles = function() {
this.setHandlesInternal_(arguments, 0);
};
WebUsbService_GetPermission_Params.prototype.setHandlesInternal_ = function(handles, idx) {
return idx;
};
WebUsbService_GetPermission_Params.validate = function(messageValidator, offset) {
var err;
......@@ -379,29 +275,6 @@
this[field] = fields[field];
}
};
WebUsbService_GetPermission_ResponseParams.generate = function(generator_) {
var generated = new WebUsbService_GetPermission_ResponseParams;
generated.result = generator_.generateStruct(device.mojom.UsbDeviceInfo, true);
return generated;
};
WebUsbService_GetPermission_ResponseParams.prototype.mutate = function(mutator_) {
if (mutator_.chooseMutateField()) {
this.result = mutator_.mutateStruct(this.result, device.mojom.UsbDeviceInfo, true);
}
return this;
};
WebUsbService_GetPermission_ResponseParams.prototype.getHandleDeps = function() {
var handles = [];
return handles;
};
WebUsbService_GetPermission_ResponseParams.prototype.setHandles = function() {
this.setHandlesInternal_(arguments, 0);
};
WebUsbService_GetPermission_ResponseParams.prototype.setHandlesInternal_ = function(handles, idx) {
return idx;
};
WebUsbService_GetPermission_ResponseParams.validate = function(messageValidator, offset) {
var err;
......@@ -449,7 +322,7 @@
WebUsbService_SetClient_Params.prototype.initDefaults_ = function() {
this.client = new device_manager$.UsbDeviceManagerClientPtr();
this.client = new associatedBindings.AssociatedInterfacePtrInfo();
};
WebUsbService_SetClient_Params.prototype.initFields_ = function(fields) {
for(var field in fields) {
......@@ -457,33 +330,6 @@
this[field] = fields[field];
}
};
WebUsbService_SetClient_Params.generate = function(generator_) {
var generated = new WebUsbService_SetClient_Params;
generated.client = generator_.generateInterface("device.mojom.UsbDeviceManagerClient", false);
return generated;
};
WebUsbService_SetClient_Params.prototype.mutate = function(mutator_) {
if (mutator_.chooseMutateField()) {
this.client = mutator_.mutateInterface(this.client, "device.mojom.UsbDeviceManagerClient", false);
}
return this;
};
WebUsbService_SetClient_Params.prototype.getHandleDeps = function() {
var handles = [];
if (this.client !== null) {
Array.prototype.push.apply(handles, ["device.mojom.UsbDeviceManagerClientPtr"]);
}
return handles;
};
WebUsbService_SetClient_Params.prototype.setHandles = function() {
this.setHandlesInternal_(arguments, 0);
};
WebUsbService_SetClient_Params.prototype.setHandlesInternal_ = function(handles, idx) {
this.client = handles[idx++];;
return idx;
};
WebUsbService_SetClient_Params.validate = function(messageValidator, offset) {
var err;
......@@ -500,7 +346,7 @@
// validate WebUsbService_SetClient_Params.client
err = messageValidator.validateInterface(offset + codec.kStructHeaderSize + 0, false);
err = messageValidator.validateAssociatedInterface(offset + codec.kStructHeaderSize + 0, false);
if (err !== validator.validationError.NONE)
return err;
......@@ -514,7 +360,7 @@
var val = new WebUsbService_SetClient_Params();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
val.client = decoder.decodeStruct(new codec.Interface(device_manager$.UsbDeviceManagerClientPtr));
val.client = decoder.decodeStruct(codec.AssociatedInterfacePtrInfo);
return val;
};
......@@ -522,7 +368,7 @@
var packed;
encoder.writeUint32(WebUsbService_SetClient_Params.encodedSize);
encoder.writeUint32(0);
encoder.encodeStruct(new codec.Interface(device_manager$.UsbDeviceManagerClientPtr), val.client);
encoder.encodeStruct(codec.AssociatedInterfacePtrInfo, val.client);
};
var kWebUsbService_GetDevices_Name = 0;
var kWebUsbService_GetDevice_Name = 1;
......@@ -620,10 +466,10 @@
WebUsbServiceProxy.prototype.setClient = function(client) {
var params_ = new WebUsbService_SetClient_Params();
params_.client = client;
var builder = new codec.MessageV0Builder(
var builder = new codec.MessageV2Builder(
kWebUsbService_SetClient_Name,
codec.align(WebUsbService_SetClient_Params.encodedSize));
builder.encodeStruct(WebUsbService_SetClient_Params, params_);
builder.setPayload(WebUsbService_SetClient_Params, params_);
var message = builder.finish();
this.receiver_.accept(message);
};
......@@ -753,25 +599,10 @@
stubClass: WebUsbServiceStub,
validateRequest: validateWebUsbServiceRequest,
validateResponse: validateWebUsbServiceResponse,
mojomId: 'third_party/blink/public/mojom/usb/web_usb_service.mojom',
fuzzMethods: {
getDevices: {
params: WebUsbService_GetDevices_Params,
},
getDevice: {
params: WebUsbService_GetDevice_Params,
},
getPermission: {
params: WebUsbService_GetPermission_Params,
},
setClient: {
params: WebUsbService_SetClient_Params,
},
},
};
WebUsbServiceStub.prototype.validator = validateWebUsbServiceRequest;
WebUsbServiceProxy.prototype.validator = validateWebUsbServiceResponse;
exports.WebUsbService = WebUsbService;
exports.WebUsbServicePtr = WebUsbServicePtr;
exports.WebUsbServiceAssociatedPtr = WebUsbServiceAssociatedPtr;
})();
\ No newline at end of file
})();
......@@ -397,8 +397,8 @@ class FakeWebUsbService {
});
}
setClient(client) {
this.client_ = client;
setClient(clientInfo) {
this.client_ = new device.mojom.UsbDeviceManagerClientAssociatedPtr(clientInfo);
}
}
......
......@@ -28,5 +28,5 @@ interface WebUsbService {
=> (device.mojom.UsbDeviceInfo? result);
// Sets the client for this WebUsbService.
SetClient(device.mojom.UsbDeviceManagerClient client);
SetClient(associated device.mojom.UsbDeviceManagerClient client);
};
......@@ -292,7 +292,7 @@ void USB::EnsureServiceConnection() {
DCHECK(!client_binding_.is_bound());
device::mojom::blink::UsbDeviceManagerClientPtr client;
device::mojom::blink::UsbDeviceManagerClientAssociatedPtrInfo client;
client_binding_.Bind(mojo::MakeRequest(&client));
service_->SetClient(std::move(client));
}
......
......@@ -6,7 +6,7 @@
#define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBUSB_USB_H_
#include "device/usb/public/mojom/device_manager.mojom-blink.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/associated_binding.h"
#include "third_party/blink/public/mojom/usb/web_usb_service.mojom-blink.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
#include "third_party/blink/renderer/core/dom/context_lifecycle_observer.h"
......@@ -84,7 +84,8 @@ class USB final : public EventTargetWithInlineData,
mojom::blink::WebUsbServicePtr service_;
HeapHashSet<Member<ScriptPromiseResolver>> get_devices_requests_;
HeapHashSet<Member<ScriptPromiseResolver>> get_permission_requests_;
mojo::Binding<device::mojom::blink::UsbDeviceManagerClient> client_binding_;
mojo::AssociatedBinding<device::mojom::blink::UsbDeviceManagerClient>
client_binding_;
HeapHashMap<String, WeakMember<USBDevice>> device_cache_;
};
......
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