Index: ppapi/proxy/interface_list.cc |
diff --git a/ppapi/proxy/interface_list.cc b/ppapi/proxy/interface_list.cc |
index 57cd79cd97c8c3d7078d7bd87d659aa2563728e6..a67565d90f6031c5e250ed0fa4364c577823074f 100644 |
--- a/ppapi/proxy/interface_list.cc |
+++ b/ppapi/proxy/interface_list.cc |
@@ -172,29 +172,41 @@ InterfaceList::InterfaceList() { |
#define PROXIED_IFACE(iface_str, iface_struct) \ |
AddPPB(iface_str, \ |
INTERFACE_THUNK_NAME(iface_struct)(), \ |
- current_required_permission); |
+ current_required_permission, \ |
+ requires_dev_channel); |
{ |
Permission current_required_permission = PERMISSION_NONE; |
+ bool requires_dev_channel = false; |
#include "ppapi/thunk/interfaces_ppb_private_no_permissions.h" |
#include "ppapi/thunk/interfaces_ppb_public_stable.h" |
} |
{ |
Permission current_required_permission = PERMISSION_DEV; |
+ bool requires_dev_channel = false; |
#include "ppapi/thunk/interfaces_ppb_public_dev.h" |
} |
{ |
Permission current_required_permission = PERMISSION_PRIVATE; |
+ bool requires_dev_channel = false; |
#include "ppapi/thunk/interfaces_ppb_private.h" |
} |
{ |
#if !defined(OS_NACL) |
Permission current_required_permission = PERMISSION_FLASH; |
+ bool requires_dev_channel = false; |
#include "ppapi/thunk/interfaces_ppb_private_flash.h" |
#endif // !defined(OS_NACL) |
} |
- |
- // TODO(teravest): Add dev channel interfaces here. |
+ { |
+ // TODO(teravest): These lines should be uncommented when a dev channel |
+ // interface is added. They're commented right now because they cause an |
+ // unused variable warning. |
+ // |
+ // Permission current_required_permission = PERMISSION_NONE; |
+ // bool requires_dev_channel = true; |
+ // #include "ppapi/thunk/interfaces_ppb_public_dev_channel.h" |
+ } |
#undef PROXIED_API |
#undef PROXIED_IFACE |
@@ -206,34 +218,38 @@ InterfaceList::InterfaceList() { |
AddProxy(API_ID_RESOURCE_CREATION, &ResourceCreationProxy::Create); |
AddProxy(API_ID_PPP_CLASS, &PPP_Class_Proxy::Create); |
AddPPB(PPB_CORE_INTERFACE_1_0, |
- PPB_Core_Proxy::GetPPB_Core_Interface(), PERMISSION_NONE); |
+ PPB_Core_Proxy::GetPPB_Core_Interface(), PERMISSION_NONE, false); |
AddPPB(PPB_MESSAGELOOP_INTERFACE_1_0, |
- PPB_MessageLoop_Proxy::GetInterface(), PERMISSION_NONE); |
+ PPB_MessageLoop_Proxy::GetInterface(), PERMISSION_NONE, false); |
AddPPB(PPB_OPENGLES2_INTERFACE_1_0, |
- PPB_OpenGLES2_Shared::GetInterface(), PERMISSION_NONE); |
+ PPB_OpenGLES2_Shared::GetInterface(), PERMISSION_NONE, false); |
AddPPB(PPB_OPENGLES2_INSTANCEDARRAYS_INTERFACE_1_0, |
- PPB_OpenGLES2_Shared::GetInstancedArraysInterface(), PERMISSION_NONE); |
+ PPB_OpenGLES2_Shared::GetInstancedArraysInterface(), |
+ PERMISSION_NONE, false); |
AddPPB(PPB_OPENGLES2_FRAMEBUFFERBLIT_INTERFACE_1_0, |
- PPB_OpenGLES2_Shared::GetFramebufferBlitInterface(), PERMISSION_NONE); |
+ PPB_OpenGLES2_Shared::GetFramebufferBlitInterface(), |
+ PERMISSION_NONE, false); |
AddPPB(PPB_OPENGLES2_FRAMEBUFFERMULTISAMPLE_INTERFACE_1_0, |
PPB_OpenGLES2_Shared::GetFramebufferMultisampleInterface(), |
- PERMISSION_NONE); |
+ PERMISSION_NONE, false); |
AddPPB(PPB_OPENGLES2_CHROMIUMENABLEFEATURE_INTERFACE_1_0, |
PPB_OpenGLES2_Shared::GetChromiumEnableFeatureInterface(), |
- PERMISSION_NONE); |
+ PERMISSION_NONE, false); |
AddPPB(PPB_OPENGLES2_CHROMIUMMAPSUB_INTERFACE_1_0, |
- PPB_OpenGLES2_Shared::GetChromiumMapSubInterface(), PERMISSION_NONE); |
+ PPB_OpenGLES2_Shared::GetChromiumMapSubInterface(), |
+ PERMISSION_NONE, false); |
AddPPB(PPB_OPENGLES2_CHROMIUMMAPSUB_DEV_INTERFACE_1_0, |
- PPB_OpenGLES2_Shared::GetChromiumMapSubInterface(), PERMISSION_NONE); |
+ PPB_OpenGLES2_Shared::GetChromiumMapSubInterface(), |
+ PERMISSION_NONE, false); |
AddPPB(PPB_OPENGLES2_QUERY_INTERFACE_1_0, |
- PPB_OpenGLES2_Shared::GetQueryInterface(), PERMISSION_NONE); |
+ PPB_OpenGLES2_Shared::GetQueryInterface(), PERMISSION_NONE, false); |
AddPPB(PPB_VAR_ARRAY_BUFFER_INTERFACE_1_0, |
PPB_Var_Shared::GetVarArrayBufferInterface1_0(), |
- PERMISSION_NONE); |
+ PERMISSION_NONE, false); |
AddPPB(PPB_VAR_INTERFACE_1_1, |
- PPB_Var_Shared::GetVarInterface1_1(), PERMISSION_NONE); |
+ PPB_Var_Shared::GetVarInterface1_1(), PERMISSION_NONE, false); |
AddPPB(PPB_VAR_INTERFACE_1_0, |
- PPB_Var_Shared::GetVarInterface1_0(), PERMISSION_NONE); |
+ PPB_Var_Shared::GetVarInterface1_0(), PERMISSION_NONE, false); |
#if !defined(OS_NACL) |
// PPB (browser) interfaces. |
@@ -242,11 +258,11 @@ InterfaceList::InterfaceList() { |
AddProxy(API_ID_PPB_INSTANCE_PRIVATE, &ProxyFactory<PPB_Instance_Proxy>); |
AddPPB(PPB_INSTANCE_PRIVATE_INTERFACE_0_1, |
thunk::GetPPB_Instance_Private_0_1_Thunk(), |
- PERMISSION_PRIVATE); |
+ PERMISSION_PRIVATE, false); |
AddProxy(API_ID_PPB_VAR_DEPRECATED, &ProxyFactory<PPB_Var_Deprecated_Proxy>); |
AddPPB(PPB_VAR_DEPRECATED_INTERFACE, |
- PPB_Var_Deprecated_Proxy::GetProxyInterface(), PERMISSION_DEV); |
+ PPB_Var_Deprecated_Proxy::GetProxyInterface(), PERMISSION_DEV, false); |
// TODO(tomfinegan): Figure out where to put these once we refactor things |
// to load the PPP interface struct from the PPB interface. |
@@ -257,7 +273,7 @@ InterfaceList::InterfaceList() { |
#endif |
AddProxy(API_ID_PPB_TESTING, &ProxyFactory<PPB_Testing_Proxy>); |
AddPPB(PPB_TESTING_PRIVATE_INTERFACE, |
- PPB_Testing_Proxy::GetProxyInterface(), PERMISSION_TESTING); |
+ PPB_Testing_Proxy::GetProxyInterface(), PERMISSION_TESTING, false); |
// PPP (plugin) interfaces. |
// TODO(brettw) move these to interface_list*.h |
@@ -323,7 +339,8 @@ const void* InterfaceList::GetInterfaceForPPB(const std::string& name) const { |
if (found == name_to_browser_info_.end()) |
return NULL; |
- // Dev channel checking goes here. |
+ if (found->second.requires_dev_channel && !g_supports_dev_channel.Get()) |
+ return NULL; |
if (g_process_global_permissions.Get().HasPermission( |
found->second.required_permission)) |
@@ -357,15 +374,17 @@ void InterfaceList::AddProxy(ApiID id, |
void InterfaceList::AddPPB(const char* name, |
const void* iface, |
- Permission perm) { |
+ Permission perm, |
+ bool requires_dev_channel) { |
DCHECK(name_to_browser_info_.find(name) == name_to_browser_info_.end()); |
- name_to_browser_info_[name] = InterfaceInfo(iface, perm); |
+ name_to_browser_info_[name] = |
+ InterfaceInfo(iface, perm, requires_dev_channel); |
} |
void InterfaceList::AddPPP(const char* name, |
const void* iface) { |
DCHECK(name_to_plugin_info_.find(name) == name_to_plugin_info_.end()); |
- name_to_plugin_info_[name] = InterfaceInfo(iface, PERMISSION_NONE); |
+ name_to_plugin_info_[name] = InterfaceInfo(iface, PERMISSION_NONE, false); |
} |
} // namespace proxy |