Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(467)

Side by Side Diff: ppapi/proxy/interface_list.h

Issue 112343005: Pepper: Finish support for dev channel APIs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Build fix Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef PPAPI_PROXY_INTERFACE_LIST_H_ 5 #ifndef PPAPI_PROXY_INTERFACE_LIST_H_
6 #define PPAPI_PROXY_INTERFACE_LIST_H_ 6 #define PPAPI_PROXY_INTERFACE_LIST_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 10
11 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "ppapi/proxy/interface_proxy.h" 12 #include "ppapi/proxy/interface_proxy.h"
13 #include "ppapi/proxy/ppapi_proxy_export.h" 13 #include "ppapi/proxy/ppapi_proxy_export.h"
14 #include "ppapi/shared_impl/ppapi_permissions.h" 14 #include "ppapi/shared_impl/ppapi_permissions.h"
15 15
16 namespace ppapi { 16 namespace ppapi {
17 namespace proxy { 17 namespace proxy {
18 18
19 class InterfaceList { 19 class PPAPI_PROXY_EXPORT InterfaceList {
20 public: 20 public:
21 InterfaceList(); 21 InterfaceList();
22 ~InterfaceList(); 22 ~InterfaceList();
23 23
24 static InterfaceList* GetInstance(); 24 static InterfaceList* GetInstance();
25 25
26 // Sets the permissions that the interface list will use to compute 26 // Sets the permissions that the interface list will use to compute
27 // whether an interface is available to the current process. By default, 27 // whether an interface is available to the current process. By default,
28 // this will be "no permissions", which will give only access to public 28 // this will be "no permissions", which will give only access to public
29 // stable interfaces via GetInterface. 29 // stable interfaces via GetInterface.
30 // 30 //
31 // IMPORTANT: This is not a security boundary. Malicious plugins can bypass 31 // IMPORTANT: This is not a security boundary. Malicious plugins can bypass
32 // this check since they run in the same address space as this code in the 32 // this check since they run in the same address space as this code in the
33 // plugin process. A real security check is required for all IPC messages. 33 // plugin process. A real security check is required for all IPC messages.
34 // This check just allows us to return NULL for interfaces you "shouldn't" be 34 // This check just allows us to return NULL for interfaces you "shouldn't" be
35 // using to keep honest plugins honest. 35 // using to keep honest plugins honest.
36 static PPAPI_PROXY_EXPORT void SetProcessGlobalPermissions( 36 static void SetProcessGlobalPermissions(const PpapiPermissions& permissions);
37 const PpapiPermissions& permissions);
38 static PPAPI_PROXY_EXPORT void SetSupportsDevChannel(
39 bool supports_dev_channel);
40 37
41 // Looks up the factory function for the given ID. Returns NULL if not 38 // Looks up the factory function for the given ID. Returns NULL if not
42 // supported. 39 // supported.
43 InterfaceProxy::Factory GetFactoryForID(ApiID id) const; 40 InterfaceProxy::Factory GetFactoryForID(ApiID id) const;
44 41
45 // Returns the interface pointer for the given browser or plugin interface, 42 // Returns the interface pointer for the given browser or plugin interface,
46 // or NULL if it's not supported. 43 // or NULL if it's not supported.
47 const void* GetInterfaceForPPB(const std::string& name) const; 44 const void* GetInterfaceForPPB(const std::string& name) const;
48 const void* GetInterfaceForPPP(const std::string& name) const; 45 const void* GetInterfaceForPPP(const std::string& name) const;
49 46
50 private: 47 private:
48 friend class InterfaceListTest;
49
51 struct InterfaceInfo { 50 struct InterfaceInfo {
52 InterfaceInfo() 51 InterfaceInfo()
53 : iface(NULL), 52 : iface(NULL),
54 required_permission(PERMISSION_NONE) { 53 required_permission(PERMISSION_NONE) {
55 } 54 }
56 InterfaceInfo(const void* in_interface, Permission in_perm) 55 InterfaceInfo(const void* in_interface, Permission in_perm)
57 : iface(in_interface), 56 : iface(in_interface),
58 required_permission(in_perm) { 57 required_permission(in_perm) {
59 } 58 }
60 59
(...skipping 23 matching lines...) Expand all
84 InterfaceProxy::Factory id_to_factory_[API_ID_COUNT]; 83 InterfaceProxy::Factory id_to_factory_[API_ID_COUNT];
85 84
86 DISALLOW_COPY_AND_ASSIGN(InterfaceList); 85 DISALLOW_COPY_AND_ASSIGN(InterfaceList);
87 }; 86 };
88 87
89 } // namespace proxy 88 } // namespace proxy
90 } // namespace ppapi 89 } // namespace ppapi
91 90
92 #endif // PPAPI_PROXY_INTERFACE_LIST_H_ 91 #endif // PPAPI_PROXY_INTERFACE_LIST_H_
93 92
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698