| Index: third_party/WebKit/Source/modules/permissions/PermissionsCallback.cpp
|
| diff --git a/third_party/WebKit/Source/modules/permissions/PermissionsCallback.cpp b/third_party/WebKit/Source/modules/permissions/PermissionsCallback.cpp
|
| index 1ea7d2c1f76064209ff43d4722b6faaa29a4f226..186d772b3902ce8027cf8304981d71e0dce049e0 100644
|
| --- a/third_party/WebKit/Source/modules/permissions/PermissionsCallback.cpp
|
| +++ b/third_party/WebKit/Source/modules/permissions/PermissionsCallback.cpp
|
| @@ -10,9 +10,10 @@
|
|
|
| namespace blink {
|
|
|
| -PermissionsCallback::PermissionsCallback(ScriptPromiseResolver* resolver, PassOwnPtr<WebVector<WebPermissionType>> permission_types)
|
| +PermissionsCallback::PermissionsCallback(ScriptPromiseResolver* resolver, PassOwnPtr<Vector<WebPermissionType>> internalPermissions, PassOwnPtr<Vector<int>> callerIndexToInternalIndex)
|
| : m_resolver(resolver),
|
| - m_permissionTypes(permission_types)
|
| + m_internalPermissions(internalPermissions),
|
| + m_callerIndexToInternalIndex(callerIndexToInternalIndex)
|
| {
|
| ASSERT(m_resolver);
|
| }
|
| @@ -23,13 +24,16 @@ void PermissionsCallback::onSuccess(WebPassOwnPtr<WebVector<WebPermissionStatus>
|
| return;
|
|
|
| OwnPtr<WebVector<WebPermissionStatus>> statusPtr = permissionStatus.release();
|
| -
|
| - Vector<PermissionStatus*> status;
|
| - status.reserveCapacity(statusPtr->size());
|
| - for (size_t i = 0; i < statusPtr->size(); ++i)
|
| - status.append(PermissionStatus::createAndListen(m_resolver->executionContext(), (*statusPtr)[i], (*m_permissionTypes)[i]));
|
| -
|
| - m_resolver->resolve(status);
|
| + Vector<PermissionStatus*> result(m_callerIndexToInternalIndex->size());
|
| +
|
| + // Create the response vector by finding the status for each index by
|
| + // using the caller to internal index mapping and looking up the status
|
| + // using the internal index obtained.
|
| + for (size_t i = 0; i < m_callerIndexToInternalIndex->size(); ++i) {
|
| + int internalIndex = m_callerIndexToInternalIndex->operator[](i);
|
| + result[i] = PermissionStatus::createAndListen(m_resolver->executionContext(), statusPtr->operator[](internalIndex), m_internalPermissions->operator[](internalIndex));
|
| + }
|
| + m_resolver->resolve(result);
|
| }
|
|
|
| void PermissionsCallback::onError()
|
|
|