123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* 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 mozilla_dom_indexeddb_permissionrequestbase_h__
- #define mozilla_dom_indexeddb_permissionrequestbase_h__
- #include "mozilla/Attributes.h"
- #include "nsCOMPtr.h"
- #include "nsIInterfaceRequestor.h"
- #include "nsIObserver.h"
- #include "nsIPermissionManager.h"
- #include "nsISupportsImpl.h"
- #include "nsString.h"
- class nsIPrincipal;
- namespace mozilla {
- namespace dom {
- class Element;
- namespace indexedDB {
- class PermissionRequestBase
- : public nsIObserver
- , public nsIInterfaceRequestor
- {
- nsCOMPtr<Element> mOwnerElement;
- nsCOMPtr<nsIPrincipal> mPrincipal;
- public:
- enum PermissionValue {
- kPermissionAllowed = nsIPermissionManager::ALLOW_ACTION,
- kPermissionDenied = nsIPermissionManager::DENY_ACTION,
- kPermissionPrompt = nsIPermissionManager::PROMPT_ACTION
- };
- NS_DECL_ISUPPORTS
- // This function will not actually prompt. It will never return
- // kPermissionDefault but will instead translate the permission manager value
- // into the correct value for the given type.
- static nsresult
- GetCurrentPermission(nsIPrincipal* aPrincipal,
- PermissionValue* aCurrentValue);
- static PermissionValue
- PermissionValueForIntPermission(uint32_t aIntPermission);
- // This function will prompt if needed. It may only be called once.
- nsresult
- PromptIfNeeded(PermissionValue* aCurrentValue);
- protected:
- PermissionRequestBase(Element* aOwnerElement,
- nsIPrincipal* aPrincipal);
- // Reference counted.
- virtual
- ~PermissionRequestBase();
- virtual void
- OnPromptComplete(PermissionValue aPermissionValue) = 0;
- private:
- void
- SetExplicitPermission(nsIPrincipal* aPrincipal,
- uint32_t aIntPermission);
- NS_DECL_NSIOBSERVER
- NS_DECL_NSIINTERFACEREQUESTOR
- };
- } // namespace indexedDB
- } // namespace dom
- } // namespace mozilla
- #endif // mozilla_dom_indexeddb_permissionrequestbase_h__
|