|
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
3 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
5 |
|
6 #ifndef mozilla_dom_permission_message_utils_h__ |
|
7 #define mozilla_dom_permission_message_utils_h__ |
|
8 |
|
9 #include "ipc/IPCMessageUtils.h" |
|
10 #include "nsCOMPtr.h" |
|
11 #include "nsIPrincipal.h" |
|
12 |
|
13 namespace IPC { |
|
14 |
|
15 class Principal { |
|
16 friend struct ParamTraits<Principal>; |
|
17 |
|
18 public: |
|
19 Principal() : mPrincipal(nullptr) {} |
|
20 Principal(nsIPrincipal* aPrincipal) : mPrincipal(aPrincipal) {} |
|
21 operator nsIPrincipal*() const { return mPrincipal.get(); } |
|
22 |
|
23 private: |
|
24 // Unimplemented |
|
25 Principal& operator=(Principal&); |
|
26 nsCOMPtr<nsIPrincipal> mPrincipal; |
|
27 }; |
|
28 |
|
29 template <> |
|
30 struct ParamTraits<Principal> |
|
31 { |
|
32 typedef Principal paramType; |
|
33 static void Write(Message* aMsg, const paramType& aParam); |
|
34 static bool Read(const Message* aMsg, void** aIter, paramType* aResult); |
|
35 }; |
|
36 |
|
37 } // namespace IPC |
|
38 |
|
39 #endif // mozilla_dom_permission_message_utils_h__ |
|
40 |