зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1111135 - Part 2: Check for 3gpp permission. r=roc
This commit is contained in:
Родитель
0d14c130d0
Коммит
4f1a16baf2
|
@ -545,6 +545,33 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Check3gppPermission()
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIDocument> doc = mRecorder->GetOwner()->GetExtantDoc();
|
||||||
|
if (!doc) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t appStatus = nsIPrincipal::APP_STATUS_NOT_INSTALLED;
|
||||||
|
doc->NodePrincipal()->GetAppStatus(&appStatus);
|
||||||
|
|
||||||
|
// Certified applications can always assign AUDIO_3GPP
|
||||||
|
if (appStatus == nsIPrincipal::APP_STATUS_CERTIFIED) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsCOMPtr<nsIPermissionManager> pm =
|
||||||
|
do_GetService(NS_PERMISSIONMANAGER_CONTRACTID);
|
||||||
|
|
||||||
|
if (!pm) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t perm = nsIPermissionManager::DENY_ACTION;
|
||||||
|
pm->TestExactPermissionFromPrincipal(doc->NodePrincipal(), "audio-capture:3gpp", &perm);
|
||||||
|
return perm == nsIPermissionManager::ALLOW_ACTION;
|
||||||
|
}
|
||||||
|
|
||||||
void InitEncoder(uint8_t aTrackTypes)
|
void InitEncoder(uint8_t aTrackTypes)
|
||||||
{
|
{
|
||||||
LOG(PR_LOG_DEBUG, ("Session.InitEncoder %p", this));
|
LOG(PR_LOG_DEBUG, ("Session.InitEncoder %p", this));
|
||||||
|
@ -553,14 +580,8 @@ private:
|
||||||
// Allocate encoder and bind with union stream.
|
// Allocate encoder and bind with union stream.
|
||||||
// At this stage, the API doesn't allow UA to choose the output mimeType format.
|
// At this stage, the API doesn't allow UA to choose the output mimeType format.
|
||||||
|
|
||||||
nsCOMPtr<nsIDocument> doc = mRecorder->GetOwner()->GetExtantDoc();
|
// Make sure the application has permission to assign AUDIO_3GPP
|
||||||
uint16_t appStatus = nsIPrincipal::APP_STATUS_NOT_INSTALLED;
|
if (mRecorder->mMimeType.EqualsLiteral(AUDIO_3GPP) && Check3gppPermission()) {
|
||||||
if (doc) {
|
|
||||||
doc->NodePrincipal()->GetAppStatus(&appStatus);
|
|
||||||
}
|
|
||||||
// Only allow certificated application can assign AUDIO_3GPP
|
|
||||||
if (appStatus == nsIPrincipal::APP_STATUS_CERTIFIED &&
|
|
||||||
mRecorder->mMimeType.EqualsLiteral(AUDIO_3GPP)) {
|
|
||||||
mEncoder = MediaEncoder::CreateEncoder(NS_LITERAL_STRING(AUDIO_3GPP), aTrackTypes);
|
mEncoder = MediaEncoder::CreateEncoder(NS_LITERAL_STRING(AUDIO_3GPP), aTrackTypes);
|
||||||
} else {
|
} else {
|
||||||
mEncoder = MediaEncoder::CreateEncoder(NS_LITERAL_STRING(""), aTrackTypes);
|
mEncoder = MediaEncoder::CreateEncoder(NS_LITERAL_STRING(""), aTrackTypes);
|
||||||
|
|
|
@ -148,6 +148,8 @@ private:
|
||||||
// Register MediaRecorder into Document to listen the activity changes.
|
// Register MediaRecorder into Document to listen the activity changes.
|
||||||
void RegisterActivityObserver();
|
void RegisterActivityObserver();
|
||||||
void UnRegisterActivityObserver();
|
void UnRegisterActivityObserver();
|
||||||
|
|
||||||
|
bool Check3gppPermission();
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче