Index: content/browser/permissions/permission_service_impl.cc |
diff --git a/content/browser/permissions/permission_service_impl.cc b/content/browser/permissions/permission_service_impl.cc |
index f5c226042480f3447c4f87676e43c5e068a614e4..9ad4bb24640c151703d0938d0bdcb043fef1d0cb 100644 |
--- a/content/browser/permissions/permission_service_impl.cc |
+++ b/content/browser/permissions/permission_service_impl.cc |
@@ -12,6 +12,7 @@ |
#include "content/public/browser/permission_manager.h" |
#include "content/public/browser/permission_type.h" |
+using blink::mojom::PermissionDescriptorPtr; |
using blink::mojom::PermissionName; |
using blink::mojom::PermissionStatus; |
@@ -19,18 +20,22 @@ namespace content { |
namespace { |
-PermissionType PermissionNameToPermissionType(PermissionName name) { |
- switch(name) { |
+PermissionType PermissionDescriptorToPermissionType( |
+ const PermissionDescriptorPtr& descriptor) { |
+ switch (descriptor->name) { |
case PermissionName::GEOLOCATION: |
return PermissionType::GEOLOCATION; |
case PermissionName::NOTIFICATIONS: |
return PermissionType::NOTIFICATIONS; |
case PermissionName::PUSH_NOTIFICATIONS: |
return PermissionType::PUSH_MESSAGING; |
- case PermissionName::MIDI: |
+ case PermissionName::MIDI: { |
+ if (descriptor->extension && descriptor->extension->is_midi() && |
+ descriptor->extension->get_midi()->sysex) { |
+ return PermissionType::MIDI_SYSEX; |
+ } |
return PermissionType::MIDI; |
- case PermissionName::MIDI_SYSEX: |
- return PermissionType::MIDI_SYSEX; |
+ } |
case PermissionName::PROTECTED_MEDIA_IDENTIFIER: |
return PermissionType::PROTECTED_MEDIA_IDENTIFIER; |
case PermissionName::DURABLE_STORAGE: |
@@ -106,7 +111,7 @@ void PermissionServiceImpl::OnConnectionError() { |
} |
void PermissionServiceImpl::RequestPermission( |
- PermissionName permission, |
+ PermissionDescriptorPtr permission, |
const url::Origin& origin, |
bool user_gesture, |
const PermissionStatusCallback& callback) { |
@@ -121,15 +126,15 @@ void PermissionServiceImpl::RequestPermission( |
DCHECK(browser_context); |
if (!context_->render_frame_host() || |
!browser_context->GetPermissionManager()) { |
- callback.Run(GetPermissionStatusFromName(permission, origin)); |
+ callback.Run(GetPermissionStatus(permission, origin)); |
return; |
} |
int pending_request_id = pending_requests_.Add(new PendingRequest( |
base::Bind(&PermissionRequestResponseCallbackWrapper, callback), 1)); |
int id = browser_context->GetPermissionManager()->RequestPermission( |
- PermissionNameToPermissionType(permission), context_->render_frame_host(), |
- GURL(origin.Serialize()), user_gesture, |
+ PermissionDescriptorToPermissionType(permission), |
+ context_->render_frame_host(), GURL(origin.Serialize()), user_gesture, |
base::Bind(&PermissionServiceImpl::OnRequestPermissionResponse, |
weak_factory_.GetWeakPtr(), pending_request_id)); |
@@ -150,7 +155,7 @@ void PermissionServiceImpl::OnRequestPermissionResponse( |
} |
void PermissionServiceImpl::RequestPermissions( |
- const std::vector<PermissionName>& permissions, |
+ std::vector<PermissionDescriptorPtr> permissions, |
const url::Origin& origin, |
bool user_gesture, |
const RequestPermissionsCallback& callback) { |
@@ -166,16 +171,15 @@ void PermissionServiceImpl::RequestPermissions( |
if (!context_->render_frame_host() || |
!browser_context->GetPermissionManager()) { |
std::vector<PermissionStatus> result(permissions.size()); |
- for (size_t i = 0; i < permissions.size(); ++i) { |
- result[i] = GetPermissionStatusFromName(permissions[i], origin); |
- } |
+ for (size_t i = 0; i < permissions.size(); ++i) |
+ result[i] = GetPermissionStatus(permissions[i], origin); |
callback.Run(result); |
return; |
} |
std::vector<PermissionType> types(permissions.size()); |
for (size_t i = 0; i < types.size(); ++i) |
- types[i] = PermissionNameToPermissionType(permissions[i]); |
+ types[i] = PermissionDescriptorToPermissionType(permissions[i]); |
int pending_request_id = pending_requests_.Add( |
new PendingRequest(callback, permissions.size())); |
@@ -233,17 +237,18 @@ void PermissionServiceImpl::CancelPendingOperations() { |
} |
void PermissionServiceImpl::HasPermission( |
- PermissionName permission, |
+ PermissionDescriptorPtr permission, |
const url::Origin& origin, |
const PermissionStatusCallback& callback) { |
- callback.Run(GetPermissionStatusFromName(permission, origin)); |
+ callback.Run(GetPermissionStatus(permission, origin)); |
} |
void PermissionServiceImpl::RevokePermission( |
- PermissionName permission, |
+ PermissionDescriptorPtr permission, |
const url::Origin& origin, |
const PermissionStatusCallback& callback) { |
- PermissionType permission_type = PermissionNameToPermissionType(permission); |
+ PermissionType permission_type = |
+ PermissionDescriptorToPermissionType(permission); |
PermissionStatus status = |
GetPermissionStatusFromType(permission_type, origin); |
@@ -260,12 +265,11 @@ void PermissionServiceImpl::RevokePermission( |
} |
void PermissionServiceImpl::GetNextPermissionChange( |
- PermissionName permission, |
+ PermissionDescriptorPtr permission, |
const url::Origin& origin, |
PermissionStatus last_known_status, |
const PermissionStatusCallback& callback) { |
- PermissionStatus current_status = |
- GetPermissionStatusFromName(permission, origin); |
+ PermissionStatus current_status = GetPermissionStatus(permission, origin); |
if (current_status != last_known_status) { |
callback.Run(current_status); |
return; |
@@ -278,7 +282,8 @@ void PermissionServiceImpl::GetNextPermissionChange( |
return; |
} |
- PermissionType permission_type = PermissionNameToPermissionType(permission); |
+ PermissionType permission_type = |
+ PermissionDescriptorToPermissionType(permission); |
// We need to pass the id of PendingSubscription in pending_subscriptions_ |
// to the callback but SubscribePermissionStatusChange() will also return an |
@@ -298,11 +303,11 @@ void PermissionServiceImpl::GetNextPermissionChange( |
weak_factory_.GetWeakPtr(), pending_subscription_id)); |
} |
-PermissionStatus PermissionServiceImpl::GetPermissionStatusFromName( |
- PermissionName permission, |
+PermissionStatus PermissionServiceImpl::GetPermissionStatus( |
+ const PermissionDescriptorPtr& permission, |
const url::Origin& origin) { |
- return GetPermissionStatusFromType(PermissionNameToPermissionType(permission), |
- origin); |
+ return GetPermissionStatusFromType( |
+ PermissionDescriptorToPermissionType(permission), origin); |
} |
PermissionStatus PermissionServiceImpl::GetPermissionStatusFromType( |