Bug 779378: B2G Voicemail: Hook up to permissions manager; r=gwagner

This commit is contained in:
Kyle Machulis 2012-08-23 16:31:02 -07:00
Родитель f4c2eb9bc2
Коммит 1004044a0d
3 изменённых файлов: 15 добавлений и 19 удалений

Просмотреть файл

@ -1138,20 +1138,20 @@ Navigator::GetMozVoicemail(nsIDOMMozVoicemail** aVoicemail)
if (!mVoicemail) {
nsCOMPtr<nsPIDOMWindow> window = do_QueryReferent(mWindow);
NS_ENSURE_TRUE(window && window->GetDocShell(), NS_OK);
NS_ENSURE_TRUE(window, NS_OK);
// Chrome is always allowed access, so do the permission check only
// for non-chrome pages.
if (!nsContentUtils::IsCallerChrome()) {
nsCOMPtr<nsIDocument> doc = do_QueryInterface(window->GetExtantDocument());
NS_ENSURE_TRUE(doc, NS_OK);
nsCOMPtr<nsIDocument> document = do_QueryInterface(window->GetExtantDocument());
NS_ENSURE_TRUE(document, NS_OK);
nsCOMPtr<nsIPrincipal> principal = document->NodePrincipal();
nsCOMPtr<nsIPermissionManager> permMgr =
do_GetService(NS_PERMISSIONMANAGER_CONTRACTID);
NS_ENSURE_TRUE(permMgr, NS_OK);
nsCOMPtr<nsIURI> uri;
doc->NodePrincipal()->GetURI(getter_AddRefs(uri));
PRUint32 permission = nsIPermissionManager::DENY_ACTION;
permMgr->TestPermissionFromPrincipal(principal, "voicemail", &permission);
if (!nsContentUtils::URIIsChromeOrInPref(uri, "dom.voicemail.whitelist")) {
return NS_OK;
}
if (permission != nsIPermissionManager::ALLOW_ACTION) {
return NS_OK;
}
nsresult rv = NS_NewVoicemail(window, getter_AddRefs(mVoicemail));

Просмотреть файл

@ -3,9 +3,7 @@
MARIONETTE_TIMEOUT = 10000;
const WHITELIST_PREF = "dom.voicemail.whitelist";
let uriPrePath = window.location.protocol + "//" + window.location.host;
SpecialPowers.setCharPref(WHITELIST_PREF, uriPrePath);
SpecialPowers.addPermission("voicemail", true, document);
let voicemail = window.navigator.mozVoicemail;
ok(voicemail instanceof MozVoicemail);
@ -14,5 +12,5 @@ ok(voicemail instanceof MozVoicemail);
is(voicemail.number, "+15552175049");
is(voicemail.displayName, "Voicemail");
SpecialPowers.clearUserPref(WHITELIST_PREF);
SpecialPowers.removePermission("voicemail", document);
finish();

Просмотреть файл

@ -1,9 +1,7 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
const WHITELIST_PREF = "dom.voicemail.whitelist";
let uriPrePath = window.location.protocol + "//" + window.location.host;
SpecialPowers.setCharPref(WHITELIST_PREF, uriPrePath);
SpecialPowers.addPermission("voicemail", true, document);
let voicemail = window.navigator.mozVoicemail;
ok(voicemail instanceof MozVoicemail);
@ -222,7 +220,7 @@ function testLevel3DiscardInactive() {
}
function cleanUp() {
SpecialPowers.clearUserPref(WHITELIST_PREF);
SpecialPowers.removePermission("voicemail", document);
finish();
}