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 3 // found in the LICENSE file. 4 5 #include "ppapi/c/pp_errors.h" 6 #include "ppapi/shared_impl/ppb_url_util_shared.h" 7 #include "ppapi/thunk/enter.h" 8 #include "ppapi/thunk/ppb_instance_api.h" 9 #include "ppapi/thunk/thunk.h" 10 11 namespace ppapi { 12 namespace thunk { 13 14 namespace { 15 16 PP_Var ResolveRelativeToDocument(PP_Instance instance, 17 PP_Var relative, 18 PP_URLComponents_Dev* components) { 19 EnterInstance enter(instance); 20 if (enter.failed()) 21 return PP_MakeUndefined(); 22 return enter.functions()->ResolveRelativeToDocument(instance, relative, 23 components); 24 } 25 26 PP_Bool DocumentCanRequest(PP_Instance instance, PP_Var url) { 27 EnterInstance enter(instance); 28 if (enter.failed()) 29 return PP_FALSE; 30 return enter.functions()->DocumentCanRequest(instance, url); 31 } 32 33 PP_Bool DocumentCanAccessDocument(PP_Instance active, PP_Instance target) { 34 EnterInstance enter(active); 35 if (enter.failed()) 36 return PP_FALSE; 37 return enter.functions()->DocumentCanAccessDocument(active, target); 38 } 39 40 PP_Var GetDocumentURL(PP_Instance instance, 41 PP_URLComponents_Dev* components) { 42 EnterInstance enter(instance); 43 if (enter.failed()) 44 return PP_MakeUndefined(); 45 return enter.functions()->GetDocumentURL(instance, components); 46 } 47 48 PP_Var GetPluginInstanceURL(PP_Instance instance, 49 PP_URLComponents_Dev* components) { 50 EnterInstance enter(instance); 51 if (enter.failed()) 52 return PP_MakeUndefined(); 53 return enter.functions()->GetPluginInstanceURL(instance, components); 54 } 55 56 PP_Var GetPluginReferrerURL(PP_Instance instance, 57 PP_URLComponents_Dev* components) { 58 EnterInstance enter(instance); 59 if (enter.failed()) 60 return PP_MakeUndefined(); 61 return enter.functions()->GetPluginReferrerURL(instance, components); 62 } 63 64 const PPB_URLUtil_Dev_0_6 g_ppb_url_util_0_6 = { 65 &PPB_URLUtil_Shared::Canonicalize, 66 &PPB_URLUtil_Shared::ResolveRelativeToURL, 67 &ResolveRelativeToDocument, 68 &PPB_URLUtil_Shared::IsSameSecurityOrigin, 69 &DocumentCanRequest, 70 &DocumentCanAccessDocument, 71 &GetDocumentURL, 72 &GetPluginInstanceURL 73 }; 74 75 const PPB_URLUtil_Dev_0_7 g_ppb_url_util_0_7 = { 76 &PPB_URLUtil_Shared::Canonicalize, 77 &PPB_URLUtil_Shared::ResolveRelativeToURL, 78 &ResolveRelativeToDocument, 79 &PPB_URLUtil_Shared::IsSameSecurityOrigin, 80 &DocumentCanRequest, 81 &DocumentCanAccessDocument, 82 &GetDocumentURL, 83 &GetPluginInstanceURL, 84 &GetPluginReferrerURL 85 }; 86 87 } // namespace 88 89 const PPB_URLUtil_Dev_0_6* GetPPB_URLUtil_Dev_0_6_Thunk() { 90 return &g_ppb_url_util_0_6; 91 } 92 93 const PPB_URLUtil_Dev_0_7* GetPPB_URLUtil_Dev_0_7_Thunk() { 94 return &g_ppb_url_util_0_7; 95 } 96 97 } // namespace thunk 98 } // namespace ppapi 99