Bug 711618 - Platform changes for click-to-play permissions. r=josh a=blassey

This commit is contained in:
Jared Wein 2012-04-18 11:40:55 -07:00
parent e70018c304
commit 940c68e59a

View File

@ -56,6 +56,7 @@
#include "nsEventStates.h"
#include "nsIObjectFrame.h"
#include "nsIPluginDocument.h"
#include "nsIPermissionManager.h"
#include "nsPluginHost.h"
#include "nsIPresShell.h"
#include "nsIPrivateDOMEvent.h"
@ -514,7 +515,31 @@ nsresult nsObjectLoadingContent::IsPluginEnabledForType(const nsCString& aMIMETy
}
if (!mShouldPlay) {
return NS_ERROR_PLUGIN_CLICKTOPLAY;
nsCOMPtr<nsIContent> thisContent = do_QueryInterface(static_cast<nsIObjectLoadingContent*>(this));
MOZ_ASSERT(thisContent);
nsIDocument* ownerDoc = thisContent->OwnerDoc();
nsCOMPtr<nsIDOMWindow> topWindow;
rv = ownerDoc->GetWindow()->GetTop(getter_AddRefs(topWindow));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIDOMDocument> topDocument;
rv = topWindow->GetDocument(getter_AddRefs(topDocument));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIDocument> topDoc = do_QueryInterface(topDocument);
nsIURI* topUri = topDoc->GetDocumentURI();
nsCOMPtr<nsIPermissionManager> permissionManager = do_GetService(NS_PERMISSIONMANAGER_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
PRUint32 permission;
rv = permissionManager->TestPermission(topUri,
"plugins",
&permission);
NS_ENSURE_SUCCESS(rv, rv);
if (permission == nsIPermissionManager::ALLOW_ACTION) {
mShouldPlay = true;
} else {
return NS_ERROR_PLUGIN_CLICKTOPLAY;
}
}
return NS_OK;
@ -715,6 +740,7 @@ nsObjectLoadingContent::InstantiatePluginInstance(const char* aMimeType, nsIURI*
}
}
mActivated = true;
return NS_OK;
}
@ -2253,7 +2279,6 @@ nsObjectLoadingContent::PlayPlugin()
return NS_OK;
mShouldPlay = true;
mActivated = true;
return LoadObject(mURI, true, mContentType, true);
}