diff -r 000000000000 -r 6474c204b198 dom/base/nsContentPermissionHelper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dom/base/nsContentPermissionHelper.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,84 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef nsContentPermissionHelper_h +#define nsContentPermissionHelper_h + +#include "nsIContentPermissionPrompt.h" +#include "nsTArray.h" +#include "nsIMutableArray.h" + +class nsContentPermissionRequestProxy; + +// Forward declare IPC::Principal here which is defined in +// PermissionMessageUtils.h. Include this file will transitively includes +// "windows.h" and it defines +// #define CreateEvent CreateEventW +// #define LoadImage LoadImageW +// That will mess up windows build. +namespace IPC { +class Principal; +} + +namespace mozilla { +namespace dom { + +class Element; +class PermissionRequest; +class ContentPermissionRequestParent; +class PContentPermissionRequestParent; + +class ContentPermissionType : public nsIContentPermissionType +{ +public: + NS_DECL_ISUPPORTS + NS_DECL_NSICONTENTPERMISSIONTYPE + + ContentPermissionType(const nsACString& aType, + const nsACString& aAccess, + const nsTArray& aOptions); + virtual ~ContentPermissionType(); + +protected: + nsCString mType; + nsCString mAccess; + nsTArray mOptions; +}; + +uint32_t ConvertPermissionRequestToArray(nsTArray& aSrcArray, + nsIMutableArray* aDesArray); + +nsresult CreatePermissionArray(const nsACString& aType, + const nsACString& aAccess, + const nsTArray& aOptions, + nsIArray** aTypesArray); + +PContentPermissionRequestParent* +CreateContentPermissionRequestParent(const nsTArray& aRequests, + Element* element, + const IPC::Principal& principal); + +} // namespace dom +} // namespace mozilla + +class nsContentPermissionRequestProxy : public nsIContentPermissionRequest +{ + public: + NS_DECL_ISUPPORTS + NS_DECL_NSICONTENTPERMISSIONREQUEST + + nsContentPermissionRequestProxy(); + virtual ~nsContentPermissionRequestProxy(); + + nsresult Init(const nsTArray& requests, + mozilla::dom::ContentPermissionRequestParent* parent); + void OnParentDestroyed(); + + private: + // Non-owning pointer to the ContentPermissionRequestParent object which owns this proxy. + mozilla::dom::ContentPermissionRequestParent* mParent; + nsTArray mPermissionRequests; +}; + +#endif // nsContentPermissionHelper_h